ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- PK[]E(__pycache__/textpad.cpython-38.opt-1.pycnu[U e5d@sVdZddlZddlZddZGdddZedkrRdd ZeeZe d e edS) z:Simple textbox editing widget with Emacs-like keybindings.NcCs||d|tj||d|||dtj||d|||dtj||d||d|tj||d|||tj|||tj|||tj|||tj dS)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) ZvlinecursesZ ACS_VLINEZhlineZ ACS_HLINEaddchZ ACS_ULCORNERZ ACS_URCORNERZ ACS_LRCORNERZ ACS_LLCORNER)winulyulxZlryZlrxr&/usr/lib64/python3.8/curses/textpad.py rectanglesr c@sLeZdZdZdddZddZddZd d Zd d Zd dZ dddZ dS)TextboxadEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h FcCs.||_||_|d|_d|_|ddSNr)r insert_mode_update_max_yx stripspaceslastcmdZkeypad)selfrr rrr __init__+s zTextbox.__init__cCs&|j\}}|d|_|d|_dSr )rZgetmaxyxmaxymaxx)rrrrrr r3s zTextbox._update_max_yxcCsX||j}tj|j||tjjkr@t|j|d}qTn |dkrJqT|d}q|S)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)rrrasciirinchZSPmin)ryZlastrrr _end_of_line8s zTextbox._end_of_linecCs||j\}}d}||jks.||jkr|jr>|j}z|j|Wntj k rdYnX|jrtj |szq|}|j\}}|dkr||f}q|dk r|jj |dS)N) rrgetyxrrr rrrerrorrisprintmove)rchrxZbackyxZoldchrrr _insert_printable_charFs$  zTextbox._insert_printable_charcCsV||j\}}||_tj|rJ||jks<||jkrF| |n|tjj krh|j |dn|tjj tj tjjtjfkr|dkr|j ||dnB|dkrn8|jr|j |d||dn|j |d|j|tjjtjfkrR|jnL|tjjkr"|jn0|tjjkrb|jrN|j |||n|j ||jn|tjjtjfkr||jkr|j ||dn ||jkrn|j |ddn|tjjkrdS|tjjkr |jdkrdS||jkrR|j |ddnF|tjjkrZ|dkr@||dkr@|jn|j |||jn|tjjkrt|jn|tjjtjfkr||jkrR|j |d||||dkrR|j |d||dnz|tjj kr|j!n`|tjj"tj#fkrR|dkrR|j |d||||dkrR|j |d||ddS)z!Process a single editing command.rr)$rrrrrrrrrr ZSOHrZSTXZKEY_LEFTZBSZ KEY_BACKSPACErrZdelchZEOTZENQZACKZ KEY_RIGHTZBELNLZVTZdeletelnZclrtoeolZFFrefreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr do_command_sr            zTextbox.do_commandc Csd}|t|jdD]}|j|d||}|dkrF|jrFqt|jdD]4}|jrj||krjq|tt j |j ||}qT|jdkr|d}q|S)z.Collect and return the contents of the window.rr ) rrangerrrrrrchrrrr)rresultrstoprrrr gathers    zTextbox.gatherNcCs<|j}|r||}|sq||s(q4|jq|S)z2Edit in the widget window and collect the results.)rZgetchr#r"r*)rZvalidaterrrr edits   z Textbox.edit)F)N) __name__ __module__ __qualname____doc__rrrr r#r*r+rrrr r s Ar __main__cCsfd\}}d\}}||d|dt||||}t||d|d|||||t|S)N) )zUse Ctrl-G to end editing.r)ZaddstrrZnewwinr r"r r+)ZstdscrZncolsZnlinesrrrrrr test_editboxs r6zContents of text box:) r/rZ curses.asciir r r,r6wrapperstrprintreprrrrr s , PK[]# qww __pycache__/ascii.cpython-38.pycnu[U e5d !@s~dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCg!Z%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*dNdOZ+dPdQZ,dRdSZ-dTdUZ.dVdWZ/dXdYZ0dZd[Z1d\d]Z2d^d_Z3d`daZ4dbdcZ5dddeZ6dfdgZ7dhdiZ8djdkZ9dlS)mz3Constants and membership tests for ASCII characters  NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcCs t|tdkrt|S|SdS)N)typeordcrI$/usr/lib64/python3.8/curses/ascii.py_ctoi0srKcCst|pt|SN)isalphaisdigitrGrIrIrJisalnum6rOcCst|pt|SrL)isupperislowerrGrIrIrJrM7rPrMcCsdt|kodkSS)Nrr"rKrGrIrIrJisascii8rPrTcCs t|dkS)N)r r!rSrGrIrIrJisblank9rPrUcCs(dt|kodknp&t|dkS)Nrr r"rSrGrIrIrJiscntrl:rPrVcCsdt|kodkSS)N09rSrGrIrIrJrN;rPrNcCsdt|kodkSS)N!~rSrGrIrIrJisgraph<rPr[cCsdt|kodkSS)NazrSrGrIrIrJrR=rPrRcCsdt|kodkSS)Nr!rZrSrGrIrIrJisprint>rPr^cCst|ot| SrL)r[rOrGrIrIrJispunct?rPr_cCs t|dkS)N)r r r r rr!rSrGrIrIrJisspace@rPr`cCsdt|kodkSS)NAZrSrGrIrIrJrQArPrQcCs@t|p>dt|kodknp>dt|ko:dkSS)NraFr\f)rNrKrGrIrIrJisxdigitBsrecCsdt|kodkSS)Nrr!rSrGrIrIrJisctrlDrPrfcCs t|dkS)Nr"rSrGrIrIrJismetaErPrgcCs0t|tdkr tt|d@St|d@SdS)NrDr"rEchrrKrGrIrIrJasciiGsrjcCs0t|tdkr tt|d@St|d@SdS)NrDr rhrGrIrIrJctrlMsrkcCs0t|tdkr tt|dBSt|dBSdS)NrDrhrGrIrIrJaltSsrmcCs\t|}|dkrd}n2t|d@r0t|d@}ndt|d@dBd}|d@rXd|S|S)Nr"z^?^r!rl!)rKr^ri)rHbitsZreprIrIrJunctrlYs rqN):__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZ controlnamesrKrOrMrTrUrVrNr[rRr^r_r`rQrerfrgrjrkrmrqrIrIrIrJsPK[]V&__pycache__/panel.cpython-38.opt-2.pycnu[U e5dW@s ddlTdS))*N)Z _curses_panelrr$/usr/lib64/python3.8/curses/panel.pyPK[]*"__pycache__/has_key.cpython-38.pycnu[U e5d*@sddlZejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;dej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZddZedkrzVgZeeD]t|trt|}t|}|dkr(dSt|r6dSdSdS)NFT) isinstancestrord_capability_namesget_cursesZtigetstr)ZchZcapability_namer&/usr/lib64/python3.8/curses/has_key.pyhas_keys   r __main__z)Mismatch for key %s, system=%i, Python=%i)rZKEY_A1ZKEY_A3ZKEY_B2Z KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z KEY_CANCELZ KEY_CATABZ KEY_CLEARZ KEY_CLOSEZ KEY_COMMANDZKEY_COPYZ KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZ KEY_MESSAGEZKEY_MOVEZKEY_NEXTZ KEY_NPAGEZKEY_OPENZ KEY_OPTIONSZ KEY_PPAGEZ KEY_PREVIOUSZ KEY_PRINTZKEY_REDOZ KEY_REFERENCEZ KEY_REFRESHZ KEY_REPLACEZ KEY_RESTARTZ KEY_RESUMEZ KEY_RIGHTZKEY_SAVEZKEY_SBEGZ KEY_SCANCELZ KEY_SCOMMANDZ KEY_SCOPYZ KEY_SCREATEZKEY_SDCZKEY_SDLZ KEY_SELECTZKEY_SENDZKEY_SEOLZ KEY_SEXITZKEY_SFZ KEY_SFINDZ KEY_SHELPZ KEY_SHOMEZKEY_SICZ KEY_SLEFTZ KEY_SMESSAGEZ KEY_SMOVEZ KEY_SNEXTZ KEY_SOPTIONSZ KEY_SPREVIOUSZ KEY_SPRINTZKEY_SRZ KEY_SREDOZ KEY_SREPLACEZ KEY_SRIGHTZ KEY_SRSUMEZ KEY_SSAVEZ KEY_SSUSPENDZKEY_STABZ KEY_SUNDOZ KEY_SUSPENDZKEY_UNDOZKEY_UPrr __name__ZendwinLiprintZinitscrkeyskeysystempythonappendZkeynamerrrr sx    PK[]fTT)__pycache__/__init__.cpython-38.opt-2.pycnu[U e5d@sdddlTddlZddlZddZddZzeWn ek rPddlmZYnXd d Z d e _ dS) )*NcCspddl}ddl}ttjddtjd| }|j D],\}}|dddks^|dkr>t |||q>|S)NrZTERMunknown)ZtermfdZACS_)ZLINESZCOLS) _cursescursesZ setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)rrstdscrkeyvaluer'/usr/lib64/python3.8/curses/__init__.pyrsrcCs@ddl}ddl}|}t|dr*|j|_t|dr<|j|_|S)NrCOLORS COLOR_PAIRS)rr start_colorhasattrrr)rrZretvalrrrr*s  r)has_keyc Os|r|^}}n s  2PK[]1^^#__pycache__/__init__.cpython-38.pycnu[U e5d@shdZddlTddlZddlZddZddZzeWn e k rTdd lmZYnXd d Z d e _ dS) zcurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... )*NcCspddl}ddl}ttjddtjd| }|j D],\}}|dddks^|dkr>t |||q>|S)NrZTERMunknown)ZtermfdZACS_)ZLINESZCOLS) _cursescursesZ setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)rrstdscrkeyvaluer'/usr/lib64/python3.8/curses/__init__.pyrsrcCs@ddl}ddl}|}t|dr*|j|_t|dr<|j|_|S)NrCOLORS COLOR_PAIRS)rr start_colorhasattrrr)rrZretvalrrrr*s  r)has_keyc Os|r|^}}ns   2PK[]?ݺ(__pycache__/textpad.cpython-38.opt-2.pycnu[U e5d@sRddlZddlZddZGdddZedkrNddZeeZed e edS) NcCs||d|tj||d|||dtj||d|||dtj||d||d|tj||d|||tj|||tj|||tj|||tj dSN) ZvlinecursesZ ACS_VLINEZhlineZ ACS_HLINEaddchZ ACS_ULCORNERZ ACS_URCORNERZ ACS_LRCORNERZ ACS_LLCORNER)winulyulxZlryZlrxr &/usr/lib64/python3.8/curses/textpad.py rectanglesr c@sHeZdZdddZddZddZdd Zd d Zd d ZdddZ dS)TextboxFcCs.||_||_|d|_d|_|ddSr)r insert_mode_update_max_yx stripspaceslastcmdZkeypad)selfrr r r r __init__+s zTextbox.__init__cCs&|j\}}|d|_|d|_dSr)rZgetmaxyxmaxymaxx)rrrr r r r3s zTextbox._update_max_yxcCsX||j}tj|j||tjjkr@t|j|d}qTn |dkrJqT|d}q|S)Nrr)rrrasciirinchZSPmin)ryZlastr r r _end_of_line8s zTextbox._end_of_linecCs||j\}}d}||jks.||jkr|jr>|j}z|j|Wntj k rdYnX|jrtj |szq|}|j\}}|dkr||f}q|dk r|jj |dSN) rrgetyxrrr rrrerrorrisprintmove)rchrxZbackyxZoldchr r r _insert_printable_charFs$  zTextbox._insert_printable_charcCsV||j\}}||_tj|rJ||jks<||jkrF| |n|tjj krh|j |dn|tjj tj tjjtjfkr|dkr|j ||dnB|dkrn8|jr|j |d||dn|j |d|j|tjjtjfkrR|jnL|tjjkr"|jn0|tjjkrb|jrN|j |||n|j ||jn|tjjtjfkr||jkr|j ||dn ||jkrn|j |ddn|tjjkrdS|tjjkr |jdkrdS||jkrR|j |ddnF|tjjkrZ|dkr@||dkr@|jn|j |||jn|tjjkrt|jn|tjjtjfkr||jkrR|j |d||||dkrR|j |d||dnz|tjj kr|j!n`|tjj"tj#fkrR|dkrR|j |d||||dkrR|j |d||ddS)Nrr)$rrrrrrrrrr!ZSOHrZSTXZKEY_LEFTZBSZ KEY_BACKSPACErrZdelchZEOTZENQZACKZ KEY_RIGHTZBELNLZVTZdeletelnZclrtoeolZFFrefreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrr r r r do_command_sr            zTextbox.do_commandc Csd}|t|jdD]}|j|d||}|dkrF|jrFqt|jdD]4}|jrj||krjq|tt j |j ||}qT|jdkr|d}q|S)Nrr ) rrangerrrrrrchrrrr)rresultrstopr r r r gathers    zTextbox.gatherNcCs<|j}|r||}|sq||s(q4|jq|Sr)rZgetchr$r#r+)rZvalidaterr r r edits   z Textbox.edit)F)N) __name__ __module__ __qualname__rrrr!r$r+r,r r r r r s Ar __main__cCsfd\}}d\}}||d|dt||||}t||d|d|||||t|S)N) )zUse Ctrl-G to end editing.r)ZaddstrrZnewwinr r#r r,)ZstdscrZncolsZnlinesrrrr r r test_editboxs r6zContents of text box:) rZ curses.asciir r r-r6wrapperstrprintreprr r r r s , PK[] &__pycache__/panel.cpython-38.opt-1.pycnu[U e5dW@sdZddlTdS)z3curses.panel Module for using panels with curses. )*N)__doc__Z _curses_panelrr$/usr/lib64/python3.8/curses/panel.pysPK[]# qww&__pycache__/ascii.cpython-38.opt-1.pycnu[U e5d !@s~dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCg!Z%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*dNdOZ+dPdQZ,dRdSZ-dTdUZ.dVdWZ/dXdYZ0dZd[Z1d\d]Z2d^d_Z3d`daZ4dbdcZ5dddeZ6dfdgZ7dhdiZ8djdkZ9dlS)mz3Constants and membership tests for ASCII characters  NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcCs t|tdkrt|S|SdS)N)typeordcrI$/usr/lib64/python3.8/curses/ascii.py_ctoi0srKcCst|pt|SN)isalphaisdigitrGrIrIrJisalnum6rOcCst|pt|SrL)isupperislowerrGrIrIrJrM7rPrMcCsdt|kodkSS)Nrr"rKrGrIrIrJisascii8rPrTcCs t|dkS)N)r r!rSrGrIrIrJisblank9rPrUcCs(dt|kodknp&t|dkS)Nrr r"rSrGrIrIrJiscntrl:rPrVcCsdt|kodkSS)N09rSrGrIrIrJrN;rPrNcCsdt|kodkSS)N!~rSrGrIrIrJisgraph<rPr[cCsdt|kodkSS)NazrSrGrIrIrJrR=rPrRcCsdt|kodkSS)Nr!rZrSrGrIrIrJisprint>rPr^cCst|ot| SrL)r[rOrGrIrIrJispunct?rPr_cCs t|dkS)N)r r r r rr!rSrGrIrIrJisspace@rPr`cCsdt|kodkSS)NAZrSrGrIrIrJrQArPrQcCs@t|p>dt|kodknp>dt|ko:dkSS)NraFr\f)rNrKrGrIrIrJisxdigitBsrecCsdt|kodkSS)Nrr!rSrGrIrIrJisctrlDrPrfcCs t|dkS)Nr"rSrGrIrIrJismetaErPrgcCs0t|tdkr tt|d@St|d@SdS)NrDr"rEchrrKrGrIrIrJasciiGsrjcCs0t|tdkr tt|d@St|d@SdS)NrDr rhrGrIrIrJctrlMsrkcCs0t|tdkr tt|dBSt|dBSdS)NrDrhrGrIrIrJaltSsrmcCs\t|}|dkrd}n2t|d@r0t|d@}ndt|d@dBd}|d@rXd|S|S)Nr"z^?^r!rl!)rKr^ri)rHbitsZreprIrIrJunctrlYs rqN):__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZ controlnamesrKrOrMrTrUrVrNr[rRr^r_r`rQrerfrgrjrkrmrqrIrIrIrJsPK[]p133&__pycache__/ascii.cpython-38.opt-2.pycnu[U e5d !@szdZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBg!Z$dCdDZ%dEdFZ&dGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5dedfZ6dgdhZ7didjZ8dkS)l  NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcCs t|tdkrt|S|SdS)N)typeordcrI$/usr/lib64/python3.8/curses/ascii.py_ctoi0srKcCst|pt|SN)isalphaisdigitrGrIrIrJisalnum6rOcCst|pt|SrL)isupperislowerrGrIrIrJrM7rPrMcCsdt|kodkSS)Nrr"rKrGrIrIrJisascii8rPrTcCs t|dkS)N)r r!rSrGrIrIrJisblank9rPrUcCs(dt|kodknp&t|dkS)Nrr r"rSrGrIrIrJiscntrl:rPrVcCsdt|kodkSS)N09rSrGrIrIrJrN;rPrNcCsdt|kodkSS)N!~rSrGrIrIrJisgraph<rPr[cCsdt|kodkSS)NazrSrGrIrIrJrR=rPrRcCsdt|kodkSS)Nr!rZrSrGrIrIrJisprint>rPr^cCst|ot| SrL)r[rOrGrIrIrJispunct?rPr_cCs t|dkS)N)r r r r rr!rSrGrIrIrJisspace@rPr`cCsdt|kodkSS)NAZrSrGrIrIrJrQArPrQcCs@t|p>dt|kodknp>dt|ko:dkSS)NraFr\f)rNrKrGrIrIrJisxdigitBsrecCsdt|kodkSS)Nrr!rSrGrIrIrJisctrlDrPrfcCs t|dkS)Nr"rSrGrIrIrJismetaErPrgcCs0t|tdkr tt|d@St|d@SdS)NrDr"rEchrrKrGrIrIrJasciiGsrjcCs0t|tdkr tt|d@St|d@SdS)NrDr rhrGrIrIrJctrlMsrkcCs0t|tdkr tt|dBSt|dBSdS)NrDrhrGrIrIrJaltSsrmcCs\t|}|dkrd}n2t|d@r0t|d@}ndt|d@dBd}|d@rXd|S|S)Nr"z^?^r!rl!)rKr^ri)rHbitsZreprIrIrJunctrlYs rqN)9r#r$r%r&r'r(r)r*r+ZTABr,r-NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZ controlnamesrKrOrMrTrUrVrNr[rRr^r_r`rQrerfrgrjrkrmrqrIrIrIrJsPK[] __pycache__/panel.cpython-38.pycnu[U e5dW@sdZddlTdS)z3curses.panel Module for using panels with curses. )*N)__doc__Z _curses_panelrr$/usr/lib64/python3.8/curses/panel.pysPK[]E"__pycache__/textpad.cpython-38.pycnu[U e5d@sVdZddlZddlZddZGdddZedkrRdd ZeeZe d e edS) z:Simple textbox editing widget with Emacs-like keybindings.NcCs||d|tj||d|||dtj||d|||dtj||d||d|tj||d|||tj|||tj|||tj|||tj dS)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) ZvlinecursesZ ACS_VLINEZhlineZ ACS_HLINEaddchZ ACS_ULCORNERZ ACS_URCORNERZ ACS_LRCORNERZ ACS_LLCORNER)winulyulxZlryZlrxr&/usr/lib64/python3.8/curses/textpad.py rectanglesr c@sLeZdZdZdddZddZddZd d Zd d Zd dZ dddZ dS)TextboxadEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h FcCs.||_||_|d|_d|_|ddSNr)r insert_mode_update_max_yx stripspaceslastcmdZkeypad)selfrr rrr __init__+s zTextbox.__init__cCs&|j\}}|d|_|d|_dSr )rZgetmaxyxmaxymaxx)rrrrrr r3s zTextbox._update_max_yxcCsX||j}tj|j||tjjkr@t|j|d}qTn |dkrJqT|d}q|S)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)rrrasciirinchZSPmin)ryZlastrrr _end_of_line8s zTextbox._end_of_linecCs||j\}}d}||jks.||jkr|jr>|j}z|j|Wntj k rdYnX|jrtj |szq|}|j\}}|dkr||f}q|dk r|jj |dS)N) rrgetyxrrr rrrerrorrisprintmove)rchrxZbackyxZoldchrrr _insert_printable_charFs$  zTextbox._insert_printable_charcCsV||j\}}||_tj|rJ||jks<||jkrF| |n|tjj krh|j |dn|tjj tj tjjtjfkr|dkr|j ||dnB|dkrn8|jr|j |d||dn|j |d|j|tjjtjfkrR|jnL|tjjkr"|jn0|tjjkrb|jrN|j |||n|j ||jn|tjjtjfkr||jkr|j ||dn ||jkrn|j |ddn|tjjkrdS|tjjkr |jdkrdS||jkrR|j |ddnF|tjjkrZ|dkr@||dkr@|jn|j |||jn|tjjkrt|jn|tjjtjfkr||jkrR|j |d||||dkrR|j |d||dnz|tjj kr|j!n`|tjj"tj#fkrR|dkrR|j |d||||dkrR|j |d||ddS)z!Process a single editing command.rr)$rrrrrrrrrr ZSOHrZSTXZKEY_LEFTZBSZ KEY_BACKSPACErrZdelchZEOTZENQZACKZ KEY_RIGHTZBELNLZVTZdeletelnZclrtoeolZFFrefreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr do_command_sr            zTextbox.do_commandc Csd}|t|jdD]}|j|d||}|dkrF|jrFqt|jdD]4}|jrj||krjq|tt j |j ||}qT|jdkr|d}q|S)z.Collect and return the contents of the window.rr ) rrangerrrrrrchrrrr)rresultrstoprrrr gathers    zTextbox.gatherNcCs<|j}|r||}|sq||s(q4|jq|S)z2Edit in the widget window and collect the results.)rZgetchr#r"r*)rZvalidaterrrr edits   z Textbox.edit)F)N) __name__ __module__ __qualname____doc__rrrr r#r*r+rrrr r s Ar __main__cCsfd\}}d\}}||d|dt||||}t||d|d|||||t|S)N) )zUse Ctrl-G to end editing.r)ZaddstrrZnewwinr r"r r+)ZstdscrZncolsZnlinesrrrrrr test_editboxs r6zContents of text box:) r/rZ curses.asciir r r,r6wrapperstrprintreprrrrr s , PK[]*(__pycache__/has_key.cpython-38.opt-2.pycnu[U e5d*@sddlZejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;dej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZddZedkrzVgZeeD]t|trt|}t|}|dkr(dSt|r6dSdSdS)NFT) isinstancestrord_capability_namesget_cursesZtigetstr)ZchZcapability_namer&/usr/lib64/python3.8/curses/has_key.pyhas_keys   r __main__z)Mismatch for key %s, system=%i, Python=%i)rZKEY_A1ZKEY_A3ZKEY_B2Z KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z KEY_CANCELZ KEY_CATABZ KEY_CLEARZ KEY_CLOSEZ KEY_COMMANDZKEY_COPYZ KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZ KEY_MESSAGEZKEY_MOVEZKEY_NEXTZ KEY_NPAGEZKEY_OPENZ KEY_OPTIONSZ KEY_PPAGEZ KEY_PREVIOUSZ KEY_PRINTZKEY_REDOZ KEY_REFERENCEZ KEY_REFRESHZ KEY_REPLACEZ KEY_RESTARTZ KEY_RESUMEZ KEY_RIGHTZKEY_SAVEZKEY_SBEGZ KEY_SCANCELZ KEY_SCOMMANDZ KEY_SCOPYZ KEY_SCREATEZKEY_SDCZKEY_SDLZ KEY_SELECTZKEY_SENDZKEY_SEOLZ KEY_SEXITZKEY_SFZ KEY_SFINDZ KEY_SHELPZ KEY_SHOMEZKEY_SICZ KEY_SLEFTZ KEY_SMESSAGEZ KEY_SMOVEZ KEY_SNEXTZ KEY_SOPTIONSZ KEY_SPREVIOUSZ KEY_SPRINTZKEY_SRZ KEY_SREDOZ KEY_SREPLACEZ KEY_SRIGHTZ KEY_SRSUMEZ KEY_SSAVEZ KEY_SSUSPENDZKEY_STABZ KEY_SUNDOZ KEY_SUSPENDZKEY_UNDOZKEY_UPrr __name__ZendwinLiprintZinitscrkeyskeysystempythonappendZkeynamerrrr sx    PK[]1^^)__pycache__/__init__.cpython-38.opt-1.pycnu[U e5d@shdZddlTddlZddlZddZddZzeWn e k rTdd lmZYnXd d Z d e _ dS) zcurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... )*NcCspddl}ddl}ttjddtjd| }|j D],\}}|dddks^|dkr>t |||q>|S)NrZTERMunknown)ZtermfdZACS_)ZLINESZCOLS) _cursescursesZ setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)rrstdscrkeyvaluer'/usr/lib64/python3.8/curses/__init__.pyrsrcCs@ddl}ddl}|}t|dr*|j|_t|dr<|j|_|S)NrCOLORS COLOR_PAIRS)rr start_colorhasattrrr)rrZretvalrrrr*s  r)has_keyc Os|r|^}}ns   2PK[]*(__pycache__/has_key.cpython-38.opt-1.pycnu[U e5d*@sddlZejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;dej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZddZedkrzVgZeeD]t|trt|}t|}|dkr(dSt|r6dSdSdS)NFT) isinstancestrord_capability_namesget_cursesZtigetstr)ZchZcapability_namer&/usr/lib64/python3.8/curses/has_key.pyhas_keys   r __main__z)Mismatch for key %s, system=%i, Python=%i)rZKEY_A1ZKEY_A3ZKEY_B2Z KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z KEY_CANCELZ KEY_CATABZ KEY_CLEARZ KEY_CLOSEZ KEY_COMMANDZKEY_COPYZ KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZ KEY_MESSAGEZKEY_MOVEZKEY_NEXTZ KEY_NPAGEZKEY_OPENZ KEY_OPTIONSZ KEY_PPAGEZ KEY_PREVIOUSZ KEY_PRINTZKEY_REDOZ KEY_REFERENCEZ KEY_REFRESHZ KEY_REPLACEZ KEY_RESTARTZ KEY_RESUMEZ KEY_RIGHTZKEY_SAVEZKEY_SBEGZ KEY_SCANCELZ KEY_SCOMMANDZ KEY_SCOPYZ KEY_SCREATEZKEY_SDCZKEY_SDLZ KEY_SELECTZKEY_SENDZKEY_SEOLZ KEY_SEXITZKEY_SFZ KEY_SFINDZ KEY_SHELPZ KEY_SHOMEZKEY_SICZ KEY_SLEFTZ KEY_SMESSAGEZ KEY_SMOVEZ KEY_SNEXTZ KEY_SOPTIONSZ KEY_SPREVIOUSZ KEY_SPRINTZKEY_SRZ KEY_SREDOZ KEY_SREPLACEZ KEY_SRIGHTZ KEY_SRSUMEZ KEY_SSAVEZ KEY_SSUSPENDZKEY_STABZ KEY_SUNDOZ KEY_SUSPENDZKEY_UNDOZKEY_UPrr __name__ZendwinLiprintZinitscrkeyskeysystempythonappendZkeynamerrrr sx    PK[]oJJ textpad.pynu["""Simple textbox editing widget with Emacs-like keybindings.""" import curses import curses.ascii def rectangle(win, uly, ulx, lry, lrx): """Draw a rectangle with corners at the provided upper-left and lower-right coordinates. """ win.vline(uly+1, ulx, curses.ACS_VLINE, lry - uly - 1) win.hline(uly, ulx+1, curses.ACS_HLINE, lrx - ulx - 1) win.hline(lry, ulx+1, curses.ACS_HLINE, lrx - ulx - 1) win.vline(uly+1, lrx, curses.ACS_VLINE, lry - uly - 1) win.addch(uly, ulx, curses.ACS_ULCORNER) win.addch(uly, lrx, curses.ACS_URCORNER) win.addch(lry, lrx, curses.ACS_LRCORNER) win.addch(lry, ulx, curses.ACS_LLCORNER) class Textbox: """Editing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h """ def __init__(self, win, insert_mode=False): self.win = win self.insert_mode = insert_mode self._update_max_yx() self.stripspaces = 1 self.lastcmd = None win.keypad(1) def _update_max_yx(self): maxy, maxx = self.win.getmaxyx() self.maxy = maxy - 1 self.maxx = maxx - 1 def _end_of_line(self, y): """Go to the location of the first blank on the given line, returning the index of the last non-blank character.""" self._update_max_yx() last = self.maxx while True: if curses.ascii.ascii(self.win.inch(y, last)) != curses.ascii.SP: last = min(self.maxx, last+1) break elif last == 0: break last = last - 1 return last def _insert_printable_char(self, ch): self._update_max_yx() (y, x) = self.win.getyx() backyx = None while y < self.maxy or x < self.maxx: if self.insert_mode: oldch = self.win.inch() # The try-catch ignores the error we trigger from some curses # versions by trying to write into the lowest-rightmost spot # in the window. try: self.win.addch(ch) except curses.error: pass if not self.insert_mode or not curses.ascii.isprint(oldch): break ch = oldch (y, x) = self.win.getyx() # Remember where to put the cursor back since we are in insert_mode if backyx is None: backyx = y, x if backyx is not None: self.win.move(*backyx) def do_command(self, ch): "Process a single editing command." self._update_max_yx() (y, x) = self.win.getyx() self.lastcmd = ch if curses.ascii.isprint(ch): if y < self.maxy or x < self.maxx: self._insert_printable_char(ch) elif ch == curses.ascii.SOH: # ^a self.win.move(y, 0) elif ch in (curses.ascii.STX,curses.KEY_LEFT, curses.ascii.BS, curses.KEY_BACKSPACE, curses.ascii.DEL): if x > 0: self.win.move(y, x-1) elif y == 0: pass elif self.stripspaces: self.win.move(y-1, self._end_of_line(y-1)) else: self.win.move(y-1, self.maxx) if ch in (curses.ascii.BS, curses.KEY_BACKSPACE, curses.ascii.DEL): self.win.delch() elif ch == curses.ascii.EOT: # ^d self.win.delch() elif ch == curses.ascii.ENQ: # ^e if self.stripspaces: self.win.move(y, self._end_of_line(y)) else: self.win.move(y, self.maxx) elif ch in (curses.ascii.ACK, curses.KEY_RIGHT): # ^f if x < self.maxx: self.win.move(y, x+1) elif y == self.maxy: pass else: self.win.move(y+1, 0) elif ch == curses.ascii.BEL: # ^g return 0 elif ch == curses.ascii.NL: # ^j if self.maxy == 0: return 0 elif y < self.maxy: self.win.move(y+1, 0) elif ch == curses.ascii.VT: # ^k if x == 0 and self._end_of_line(y) == 0: self.win.deleteln() else: # first undo the effect of self._end_of_line self.win.move(y, x) self.win.clrtoeol() elif ch == curses.ascii.FF: # ^l self.win.refresh() elif ch in (curses.ascii.SO, curses.KEY_DOWN): # ^n if y < self.maxy: self.win.move(y+1, x) if x > self._end_of_line(y+1): self.win.move(y+1, self._end_of_line(y+1)) elif ch == curses.ascii.SI: # ^o self.win.insertln() elif ch in (curses.ascii.DLE, curses.KEY_UP): # ^p if y > 0: self.win.move(y-1, x) if x > self._end_of_line(y-1): self.win.move(y-1, self._end_of_line(y-1)) return 1 def gather(self): "Collect and return the contents of the window." result = "" self._update_max_yx() for y in range(self.maxy+1): self.win.move(y, 0) stop = self._end_of_line(y) if stop == 0 and self.stripspaces: continue for x in range(self.maxx+1): if self.stripspaces and x > stop: break result = result + chr(curses.ascii.ascii(self.win.inch(y, x))) if self.maxy > 0: result = result + "\n" return result def edit(self, validate=None): "Edit in the widget window and collect the results." while 1: ch = self.win.getch() if validate: ch = validate(ch) if not ch: continue if not self.do_command(ch): break self.win.refresh() return self.gather() if __name__ == '__main__': def test_editbox(stdscr): ncols, nlines = 9, 4 uly, ulx = 15, 20 stdscr.addstr(uly-2, ulx, "Use Ctrl-G to end editing.") win = curses.newwin(nlines, ncols, uly, ulx) rectangle(stdscr, uly-1, ulx-1, uly + nlines, ulx + ncols) stdscr.refresh() return Textbox(win).edit() str = curses.wrapper(test_editbox) print('Contents of text box:', repr(str)) PK[]xfWWpanel.pynu["""curses.panel Module for using panels with curses. """ from _curses_panel import * PK[] has_key.pynu[ # # Emulation of has_key() function for platforms that don't use ncurses # import _curses # Table mapping curses keys to the terminfo capability name _capability_names = { _curses.KEY_A1: 'ka1', _curses.KEY_A3: 'ka3', _curses.KEY_B2: 'kb2', _curses.KEY_BACKSPACE: 'kbs', _curses.KEY_BEG: 'kbeg', _curses.KEY_BTAB: 'kcbt', _curses.KEY_C1: 'kc1', _curses.KEY_C3: 'kc3', _curses.KEY_CANCEL: 'kcan', _curses.KEY_CATAB: 'ktbc', _curses.KEY_CLEAR: 'kclr', _curses.KEY_CLOSE: 'kclo', _curses.KEY_COMMAND: 'kcmd', _curses.KEY_COPY: 'kcpy', _curses.KEY_CREATE: 'kcrt', _curses.KEY_CTAB: 'kctab', _curses.KEY_DC: 'kdch1', _curses.KEY_DL: 'kdl1', _curses.KEY_DOWN: 'kcud1', _curses.KEY_EIC: 'krmir', _curses.KEY_END: 'kend', _curses.KEY_ENTER: 'kent', _curses.KEY_EOL: 'kel', _curses.KEY_EOS: 'ked', _curses.KEY_EXIT: 'kext', _curses.KEY_F0: 'kf0', _curses.KEY_F1: 'kf1', _curses.KEY_F10: 'kf10', _curses.KEY_F11: 'kf11', _curses.KEY_F12: 'kf12', _curses.KEY_F13: 'kf13', _curses.KEY_F14: 'kf14', _curses.KEY_F15: 'kf15', _curses.KEY_F16: 'kf16', _curses.KEY_F17: 'kf17', _curses.KEY_F18: 'kf18', _curses.KEY_F19: 'kf19', _curses.KEY_F2: 'kf2', _curses.KEY_F20: 'kf20', _curses.KEY_F21: 'kf21', _curses.KEY_F22: 'kf22', _curses.KEY_F23: 'kf23', _curses.KEY_F24: 'kf24', _curses.KEY_F25: 'kf25', _curses.KEY_F26: 'kf26', _curses.KEY_F27: 'kf27', _curses.KEY_F28: 'kf28', _curses.KEY_F29: 'kf29', _curses.KEY_F3: 'kf3', _curses.KEY_F30: 'kf30', _curses.KEY_F31: 'kf31', _curses.KEY_F32: 'kf32', _curses.KEY_F33: 'kf33', _curses.KEY_F34: 'kf34', _curses.KEY_F35: 'kf35', _curses.KEY_F36: 'kf36', _curses.KEY_F37: 'kf37', _curses.KEY_F38: 'kf38', _curses.KEY_F39: 'kf39', _curses.KEY_F4: 'kf4', _curses.KEY_F40: 'kf40', _curses.KEY_F41: 'kf41', _curses.KEY_F42: 'kf42', _curses.KEY_F43: 'kf43', _curses.KEY_F44: 'kf44', _curses.KEY_F45: 'kf45', _curses.KEY_F46: 'kf46', _curses.KEY_F47: 'kf47', _curses.KEY_F48: 'kf48', _curses.KEY_F49: 'kf49', _curses.KEY_F5: 'kf5', _curses.KEY_F50: 'kf50', _curses.KEY_F51: 'kf51', _curses.KEY_F52: 'kf52', _curses.KEY_F53: 'kf53', _curses.KEY_F54: 'kf54', _curses.KEY_F55: 'kf55', _curses.KEY_F56: 'kf56', _curses.KEY_F57: 'kf57', _curses.KEY_F58: 'kf58', _curses.KEY_F59: 'kf59', _curses.KEY_F6: 'kf6', _curses.KEY_F60: 'kf60', _curses.KEY_F61: 'kf61', _curses.KEY_F62: 'kf62', _curses.KEY_F63: 'kf63', _curses.KEY_F7: 'kf7', _curses.KEY_F8: 'kf8', _curses.KEY_F9: 'kf9', _curses.KEY_FIND: 'kfnd', _curses.KEY_HELP: 'khlp', _curses.KEY_HOME: 'khome', _curses.KEY_IC: 'kich1', _curses.KEY_IL: 'kil1', _curses.KEY_LEFT: 'kcub1', _curses.KEY_LL: 'kll', _curses.KEY_MARK: 'kmrk', _curses.KEY_MESSAGE: 'kmsg', _curses.KEY_MOVE: 'kmov', _curses.KEY_NEXT: 'knxt', _curses.KEY_NPAGE: 'knp', _curses.KEY_OPEN: 'kopn', _curses.KEY_OPTIONS: 'kopt', _curses.KEY_PPAGE: 'kpp', _curses.KEY_PREVIOUS: 'kprv', _curses.KEY_PRINT: 'kprt', _curses.KEY_REDO: 'krdo', _curses.KEY_REFERENCE: 'kref', _curses.KEY_REFRESH: 'krfr', _curses.KEY_REPLACE: 'krpl', _curses.KEY_RESTART: 'krst', _curses.KEY_RESUME: 'kres', _curses.KEY_RIGHT: 'kcuf1', _curses.KEY_SAVE: 'ksav', _curses.KEY_SBEG: 'kBEG', _curses.KEY_SCANCEL: 'kCAN', _curses.KEY_SCOMMAND: 'kCMD', _curses.KEY_SCOPY: 'kCPY', _curses.KEY_SCREATE: 'kCRT', _curses.KEY_SDC: 'kDC', _curses.KEY_SDL: 'kDL', _curses.KEY_SELECT: 'kslt', _curses.KEY_SEND: 'kEND', _curses.KEY_SEOL: 'kEOL', _curses.KEY_SEXIT: 'kEXT', _curses.KEY_SF: 'kind', _curses.KEY_SFIND: 'kFND', _curses.KEY_SHELP: 'kHLP', _curses.KEY_SHOME: 'kHOM', _curses.KEY_SIC: 'kIC', _curses.KEY_SLEFT: 'kLFT', _curses.KEY_SMESSAGE: 'kMSG', _curses.KEY_SMOVE: 'kMOV', _curses.KEY_SNEXT: 'kNXT', _curses.KEY_SOPTIONS: 'kOPT', _curses.KEY_SPREVIOUS: 'kPRV', _curses.KEY_SPRINT: 'kPRT', _curses.KEY_SR: 'kri', _curses.KEY_SREDO: 'kRDO', _curses.KEY_SREPLACE: 'kRPL', _curses.KEY_SRIGHT: 'kRIT', _curses.KEY_SRSUME: 'kRES', _curses.KEY_SSAVE: 'kSAV', _curses.KEY_SSUSPEND: 'kSPD', _curses.KEY_STAB: 'khts', _curses.KEY_SUNDO: 'kUND', _curses.KEY_SUSPEND: 'kspd', _curses.KEY_UNDO: 'kund', _curses.KEY_UP: 'kcuu1' } def has_key(ch): if isinstance(ch, str): ch = ord(ch) # Figure out the correct capability name for the keycode. capability_name = _capability_names.get(ch) if capability_name is None: return False #Check the current terminal description for that capability; #if present, return true, else return false. if _curses.tigetstr( capability_name ): return True else: return False if __name__ == '__main__': # Compare the output of this implementation and the ncurses has_key, # on platforms where has_key is already available try: L = [] _curses.initscr() for key in _capability_names.keys(): system = _curses.has_key(key) python = has_key(key) if system != python: L.append( 'Mismatch for key %s, system=%i, Python=%i' % (_curses.keyname( key ), system, python) ) finally: _curses.endwin() for i in L: print(i) PK[]LU ascii.pynu["""Constants and membership tests for ASCII characters""" NUL = 0x00 # ^@ SOH = 0x01 # ^A STX = 0x02 # ^B ETX = 0x03 # ^C EOT = 0x04 # ^D ENQ = 0x05 # ^E ACK = 0x06 # ^F BEL = 0x07 # ^G BS = 0x08 # ^H TAB = 0x09 # ^I HT = 0x09 # ^I LF = 0x0a # ^J NL = 0x0a # ^J VT = 0x0b # ^K FF = 0x0c # ^L CR = 0x0d # ^M SO = 0x0e # ^N SI = 0x0f # ^O DLE = 0x10 # ^P DC1 = 0x11 # ^Q DC2 = 0x12 # ^R DC3 = 0x13 # ^S DC4 = 0x14 # ^T NAK = 0x15 # ^U SYN = 0x16 # ^V ETB = 0x17 # ^W CAN = 0x18 # ^X EM = 0x19 # ^Y SUB = 0x1a # ^Z ESC = 0x1b # ^[ FS = 0x1c # ^\ GS = 0x1d # ^] RS = 0x1e # ^^ US = 0x1f # ^_ SP = 0x20 # space DEL = 0x7f # delete controlnames = [ "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US", "SP" ] def _ctoi(c): if isinstance(c, str): return ord(c) else: return c def isalnum(c): return isalpha(c) or isdigit(c) def isalpha(c): return isupper(c) or islower(c) def isascii(c): return 0 <= _ctoi(c) <= 127 # ? def isblank(c): return _ctoi(c) in (9, 32) def iscntrl(c): return 0 <= _ctoi(c) <= 31 or _ctoi(c) == 127 def isdigit(c): return 48 <= _ctoi(c) <= 57 def isgraph(c): return 33 <= _ctoi(c) <= 126 def islower(c): return 97 <= _ctoi(c) <= 122 def isprint(c): return 32 <= _ctoi(c) <= 126 def ispunct(c): return isgraph(c) and not isalnum(c) def isspace(c): return _ctoi(c) in (9, 10, 11, 12, 13, 32) def isupper(c): return 65 <= _ctoi(c) <= 90 def isxdigit(c): return isdigit(c) or \ (65 <= _ctoi(c) <= 70) or (97 <= _ctoi(c) <= 102) def isctrl(c): return 0 <= _ctoi(c) < 32 def ismeta(c): return _ctoi(c) > 127 def ascii(c): if isinstance(c, str): return chr(_ctoi(c) & 0x7f) else: return _ctoi(c) & 0x7f def ctrl(c): if isinstance(c, str): return chr(_ctoi(c) & 0x1f) else: return _ctoi(c) & 0x1f def alt(c): if isinstance(c, str): return chr(_ctoi(c) | 0x80) else: return _ctoi(c) | 0x80 def unctrl(c): bits = _ctoi(c) if bits == 0x7f: rep = "^?" elif isprint(bits & 0x7f): rep = chr(bits & 0x7f) else: rep = "^" + chr(((bits & 0x7f) | 0x20) + 0x20) if bits & 0x80: return "!" + rep return rep PK[]_L() ) __init__.pynu["""curses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... """ from _curses import * import os as _os import sys as _sys # Some constants, most notably the ACS_* ones, are only added to the C # _curses module's dictionary after initscr() is called. (Some # versions of SGI's curses don't define values for those constants # until initscr() has been called.) This wrapper function calls the # underlying C initscr(), and then copies the constants from the # _curses module to the curses package's dictionary. Don't do 'from # curses import *' if you'll be needing the ACS_* constants. def initscr(): import _curses, curses # we call setupterm() here because it raises an error # instead of calling exit() in error cases. setupterm(term=_os.environ.get("TERM", "unknown"), fd=_sys.__stdout__.fileno()) stdscr = _curses.initscr() for key, value in _curses.__dict__.items(): if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'): setattr(curses, key, value) return stdscr # This is a similar wrapper for start_color(), which adds the COLORS and # COLOR_PAIRS variables which are only available after start_color() is # called. def start_color(): import _curses, curses retval = _curses.start_color() if hasattr(_curses, 'COLORS'): curses.COLORS = _curses.COLORS if hasattr(_curses, 'COLOR_PAIRS'): curses.COLOR_PAIRS = _curses.COLOR_PAIRS return retval # Import Python has_key() implementation if _curses doesn't contain has_key() try: has_key except NameError: from .has_key import has_key # Wrapper for the entire curses-based application. Runs a function which # should be the rest of your curses-based application. If the application # raises an exception, wrapper() will restore the terminal to a sane state so # you can read the resulting traceback. def wrapper(func, /, *args, **kwds): """Wrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). """ try: # Initialize curses stdscr = initscr() # Turn off echoing of keys, and enter cbreak mode, # where no buffering is performed on keyboard input noecho() cbreak() # In keypad mode, escape sequences for special keys # (like the cursor keys) will be interpreted and # a special value like curses.KEY_LEFT will be returned stdscr.keypad(1) # Start color, too. Harmless if the terminal doesn't have # color; user can test with has_color() later on. The try/catch # works around a minor bit of over-conscientiousness in the curses # module -- the error return from C start_color() is ignorable. try: start_color() except: pass return func(stdscr, *args, **kwds) finally: # Set everything back to normal if 'stdscr' in locals(): stdscr.keypad(0) echo() nocbreak() endwin() PK'[]=f+ *__pycache__/__init__.cpython-312.opt-1.pycnu[ ֦i) bdZddlddlZddlZdZdZ edZ y#e $r ddlmZYdZ ywxYw) zcurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... )*Nc<ddl}ddl}ttjj ddt jj|j}|jjD]\}}|dddk(s|dvst|||!|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues (/usr/lib64/python3.12/curses/__init__.pyrrs3;;??695'')+ __ F&&,,. U q8v (9!9 FC '/ Mcddl}ddl}|j}t|dr|j|_t|dr|j |_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sE  "Fw! w &$00 Mr)has_keyc t}tt|jd t ||g|i|dt vr0|jdt ttSS#YLxYw#dt vr0jdt ttwwxYw)aWrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). r%rr) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MF*T*T* vx  MM!  F J H    vx  MM!  F J H s!/B B B BB >C ) __doc__r osrsysrrr"r& NameErrorr2rrr8sE  "! &! &!s  ..PK'[]'__pycache__/panel.cpython-312.opt-1.pycnu[ ֦iWdZddly)z3curses.panel Module for using panels with curses. )*N)__doc__ _curses_panel%/usr/lib64/python3.12/curses/panel.pyr s rPK'[]z(z()__pycache__/has_key.cpython-312.opt-2.pycnu[ ֦iddlZiejdejdejdejdej dej dejdejd ejd ejd ejd ejd ejdejdejdej dej"diej$dej&dej(dej*dej,dej.dej0dej2dej4dej6dej8dej:dej<dej>d ej@d!ejBd"ejDd#iejFd$ejHd%ejJd&ejLd'ejNd(ejPd)ejRd*ejTd+ejVd,ejXd-ejZd.ej\d/ej^d0ej`d1ejbd2ejdd3ejfd4iejhd5ejjd6ejld7ejnd8ejpd9ejrd:ejtd;ejvd<ejxd=ejzd>ej|d?ej~d@ejdAejdBejdCejdDejdEiejdFejdGejdHejdIejdJejdKejdLejdMejdNejdOejdPejdQejdRejdSejdTejdUejdViejdWejdXejdYejdZejd[ejd\ejd]ejd^ejd_ejd`ejdaejdbejdcejddejdeejdfejdgiejdhejdiejdjejdkejdlejdmejdnejdoejdpejdqejdrejdsejdtejduejdvejdwejdxiejdyejdzejd{ejd|ejd}ejd~ejdejdejdejdejdejdejdej dej dejdejdejdejdejdejdejdejdejdej dej"dej$dej&dej(dej*di ZdZedk(r gZej4ej7D]LZej.eZeeZeek7s$ej?dej@eeefzN ejBeD] Zee yy#ejBeD] Zee wxYw)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|tr t|}tj |}|yt j |ryy)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names '/usr/lib64/python3.12/curses/has_key.pyhas_keyrsF"c W(++B/O*__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NNEV NNEV NNEV 5 V  OOV V  f V NNEV NNEV V vV vV vV V fV V  g!V" NNG#V$ NNF%V& g'V( OOW)V* OOV+V, v-V. OOU/V0 OOU1V2 f3V4 NNE5V6 NNE7V8 OOV9V: OOV;V< OOV=V> OOV?V@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL NNEMVN OOVOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb NNEcVd OOVeVf OOVgVh OOViVj OOVkVl OOVmVn OOVoVp OOVqVr OOVsVt OOVuVv OOVwVx NNEyVz OOV{V| OOV}V~ OOVV@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL OOVMVN NNEOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb OOVcVd NNEeVf OOVgVh OOViVj OOVkVl OOVmVn NNEoVp NNEqVr NNEsVt fuVv fwVx gyVz NNG{V| NNF}V~ gV@ NNEAVB fCVD EVF fGVH fIVJ uKVL fMVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVp OOUqVr OOUsVt uVv fwVx fyVz v{V| NNF}V~ vV@ vAVB vCVD OOUEVF vGVH &IVJ vKVL vMVN &OVP 6QVR  NNE v &   v & f v  f NNGkVp  z  $))+C$W__S)FS\FE,W__c3VVDEG , AE!H AE!Hs:Aa+a#a5PK'[]z(z()__pycache__/has_key.cpython-312.opt-1.pycnu[ ֦iddlZiejdejdejdejdej dej dejdejd ejd ejd ejd ejd ejdejdejdej dej"diej$dej&dej(dej*dej,dej.dej0dej2dej4dej6dej8dej:dej<dej>d ej@d!ejBd"ejDd#iejFd$ejHd%ejJd&ejLd'ejNd(ejPd)ejRd*ejTd+ejVd,ejXd-ejZd.ej\d/ej^d0ej`d1ejbd2ejdd3ejfd4iejhd5ejjd6ejld7ejnd8ejpd9ejrd:ejtd;ejvd<ejxd=ejzd>ej|d?ej~d@ejdAejdBejdCejdDejdEiejdFejdGejdHejdIejdJejdKejdLejdMejdNejdOejdPejdQejdRejdSejdTejdUejdViejdWejdXejdYejdZejd[ejd\ejd]ejd^ejd_ejd`ejdaejdbejdcejddejdeejdfejdgiejdhejdiejdjejdkejdlejdmejdnejdoejdpejdqejdrejdsejdtejduejdvejdwejdxiejdyejdzejd{ejd|ejd}ejd~ejdejdejdejdejdejdejdej dej dejdejdejdejdejdejdejdejdejdej dej"dej$dej&dej(dej*di ZdZedk(r gZej4ej7D]LZej.eZeeZeek7s$ej?dej@eeefzN ejBeD] Zee yy#ejBeD] Zee wxYw)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|tr t|}tj |}|yt j |ryy)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names '/usr/lib64/python3.12/curses/has_key.pyhas_keyrsF"c W(++B/O*__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NNEV NNEV NNEV 5 V  OOV V  f V NNEV NNEV V vV vV vV V fV V  g!V" NNG#V$ NNF%V& g'V( OOW)V* OOV+V, v-V. OOU/V0 OOU1V2 f3V4 NNE5V6 NNE7V8 OOV9V: OOV;V< OOV=V> OOV?V@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL NNEMVN OOVOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb NNEcVd OOVeVf OOVgVh OOViVj OOVkVl OOVmVn OOVoVp OOVqVr OOVsVt OOVuVv OOVwVx NNEyVz OOV{V| OOV}V~ OOVV@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL OOVMVN NNEOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb OOVcVd NNEeVf OOVgVh OOViVj OOVkVl OOVmVn NNEoVp NNEqVr NNEsVt fuVv fwVx gyVz NNG{V| NNF}V~ gV@ NNEAVB fCVD EVF fGVH fIVJ uKVL fMVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVp OOUqVr OOUsVt uVv fwVx fyVz v{V| NNF}V~ vV@ vAVB vCVD OOUEVF vGVH &IVJ vKVL vMVN &OVP 6QVR  NNE v &   v & f v  f NNGkVp  z  $))+C$W__S)FS\FE,W__c3VVDEG , AE!H AE!Hs:Aa+a#a5PK'[]q``'__pycache__/ascii.cpython-312.opt-2.pycnu[ ֦i  dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#gd"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8y7)8  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPc<t|tr t|S|SN) isinstancestrordcs %/usr/lib64/python3.12/curses/ascii.py_ctoirM0s!S1v c2t|xs t|SrF)isalphaisdigitrJs rLisalnumrR6wqz/WQZ/rNc2t|xs t|SrF)isupperislowerrJs rLrPrP7rSrNc4dt|cxkxrdkScS)Nrr#rMrJs rLisasciirY8sqE!H+++++rNct|dvS)N)r r"rXrJs rLisblankr[9suQx7**rNcTdt|cxkxrdkncxst|dk(S)Nrr!r#rXrJs rLiscntrlr]:s"qE!H**=eAh#o=rNc4dt|cxkxrdkScS)N09rXrJs rLrQrQ;rU1X+++++rNc4dt|cxkxrdkScS)N!~rXrJs rLisgraphre<rU1X,,,,,rNc4dt|cxkxrdkScS)NazrXrJs rLrVrV=rfrNc4dt|cxkxrdkScS)Nr"rdrXrJs rLisprintrk>rfrNc4t|xr t| SrF)rerRrJs rLispunctrm?swqz4'!*n4rNct|dvS)N)r r r rrr"rXrJs rLisspacero@suQx#:::rNc4dt|cxkxrdkScS)NAZrXrJs rLrUrUArarNct|xs4dt|cxkxrdkncxsdt|cxkxrdkScS)NrqFrhf)rQrMrJs rLisxdigitrvBsA 658r6!U1X44646rNc4dt|cxkxrdkScS)Nrr"rXrJs rLisctrlrxDsa58(b((((rNct|dkDSNr#rXrJs rLismetar{EseAhn$rNclt|trtt|dzSt|dzSrzrGrHchrrMrJs rLasciirG-!S58d?##Qx$rNclt|trtt|dzSt|dzS)Nr!r}rJs rLctrlrMrrNclt|trtt|dzSt|dzS)Nr}rJs rLaltrSrrNct|}|dk(rd}n4t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rMrkr~)rKbitsreps rLunctrlrYsd 8D t|  $+C$+-566 d{Sy JrNN)9r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrMrRrPrYr[r]rQrerVrkrmrorUrvrxr{rrrrrNrLrs 9                                      0/+*=+,,,4:+6($   rNPK'[]*__pycache__/__init__.cpython-312.opt-2.pycnu[ ֦i) ` ddlddlZddlZdZdZ edZ y#e$r ddlmZYdZ ywxYw))*Nc<ddl}ddl}ttjj ddt jj|j}|jjD]\}}|dddk(s|dvst|||!|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues (/usr/lib64/python3.12/curses/__init__.pyrrs3;;??695'')+ __ F&&,,. U q8v (9!9 FC '/ Mcddl}ddl}|j}t|dr|j|_t|dr|j |_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sE  "Fw! w &$00 Mr)has_keyc t}tt|jd t ||g|i|dt vr0|jdt ttSS#YLxYw#dt vr0jdt ttwwxYw)Nr%rr) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MF*T*T* vx  MM!  F J H    vx  MM!  F J H s!/B B B B B >C ) r osrsysrrr"r& NameErrorr2rrr7sE  "! &! &!s  --PK'[]>3'__pycache__/ascii.cpython-312.opt-1.pycnu[ ֦i dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$gd#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9y8)9z3Constants and membership tests for ASCII characters  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPc<t|tr t|S|SN) isinstancestrordcs %/usr/lib64/python3.12/curses/ascii.py_ctoirM0s!S1v c2t|xs t|SrF)isalphaisdigitrJs rLisalnumrR6wqz/WQZ/rNc2t|xs t|SrF)isupperislowerrJs rLrPrP7rSrNc4dt|cxkxrdkScS)Nrr#rMrJs rLisasciirY8sqE!H+++++rNct|dvS)N)r r"rXrJs rLisblankr[9suQx7**rNcTdt|cxkxrdkncxst|dk(S)Nrr!r#rXrJs rLiscntrlr]:s"qE!H**=eAh#o=rNc4dt|cxkxrdkScS)N09rXrJs rLrQrQ;rU1X+++++rNc4dt|cxkxrdkScS)N!~rXrJs rLisgraphre<rU1X,,,,,rNc4dt|cxkxrdkScS)NazrXrJs rLrVrV=rfrNc4dt|cxkxrdkScS)Nr"rdrXrJs rLisprintrk>rfrNc4t|xr t| SrF)rerRrJs rLispunctrm?swqz4'!*n4rNct|dvS)N)r r r rrr"rXrJs rLisspacero@suQx#:::rNc4dt|cxkxrdkScS)NAZrXrJs rLrUrUArarNct|xs4dt|cxkxrdkncxsdt|cxkxrdkScS)NrqFrhf)rQrMrJs rLisxdigitrvBsA 658r6!U1X44646rNc4dt|cxkxrdkScS)Nrr"rXrJs rLisctrlrxDsa58(b((((rNct|dkDSNr#rXrJs rLismetar{EseAhn$rNclt|trtt|dzSt|dzSrzrGrHchrrMrJs rLasciirG-!S58d?##Qx$rNclt|trtt|dzSt|dzS)Nr!r}rJs rLctrlrMrrNclt|trtt|dzSt|dzS)Nr}rJs rLaltrSrrNct|}|dk(rd}n4t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rMrkr~)rKbitsreps rLunctrlrYsd 8D t|  $+C$+-566 d{Sy JrNN):__doc__r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrMrRrPrYr[r]rQrerVrkrmrorUrvrxr{rrrrrNrLrs 9                                      0/+*=+,,,4:+6($   rNPK'[]!__pycache__/panel.cpython-312.pycnu[ ֦iWdZddly)z3curses.panel Module for using panels with curses. )*N)__doc__ _curses_panel%/usr/lib64/python3.12/curses/panel.pyr s rPK'[]W=//#__pycache__/textpad.cpython-312.pycnu[ ֦iJdZddlZddlZdZGddZedk(r%dZejeZe de eyy) z:Simple textbox editing widget with Emacs-like keybindings.Ncd|j|dz|tj||z dz |j||dztj||z dz |j||dztj||z dz |j|dz|tj||z dz |j ||tj |j ||tj|j ||tj|j ||tjy)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs '/usr/lib64/python3.12/curses/textpad.py rectanglersIIc!eS&**C#IM:IIc3q5&**C#IM:IIc3q5&**C#IM:IIc!eS&**C#IM:IIc3++,IIc3++,IIc3++,IIc3++,c>eZdZdZd dZdZdZdZdZdZ d d Z y) TextboxadEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h c~||_||_|jd|_d|_|j dyNr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+s7&   1 rcf|jj\}}|dz |_|dz |_yr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s.XX&&( d1H 1H rc8|j|j} tjj|jj ||tjj k7rt|j|dz} |S|dk(r |S|dz }~)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s yy||!!$((--4"89V\\__L499d1f-  !8D rcn|j|jj\}}d}||jks||jkr|j r|jj } |jj||j rtjjsnE|}|jj\}}|||f}||jkr||jkr||jj|yy#tj$rYwxYwN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs !A$))mq499}  r"##6<<+?+?+FBXX^^%FQ~A!$))mq499}$   DHHMM6 " <<  s5DD43D4c |j|jj\}}||_tj j |r0||jks||jkr|j|y|tj jk(r|jj|dy|tj jtjtj jtjtj j fvr|dkDr |jj||dz nm|dk(rng|j"r2|jj|dz |j%|dz n)|jj|dz |j|tj jtjtj j fvr|jj'y|tj j(k(r|jj'y|tj j*k(r_|j"r,|jj||j%|y|jj||jy|tj j,tj.fvr`||jkr |jj||dzy||jk(r y|jj|dzdy|tj j0k(ry|tj j2k(r?|jdk(ry||jkr|jj|dzdy|tj j4k(rk|dk(r/|j%|dk(r|jj7y|jj|||jj9y|tj j:k(r|jj=y|tj j>tj@fvrw||jkrg|jj|dz|||j%|dzkDr1|jj|dz|j%|dzy|tj jBk(r|jjEy|tj jFtjHfvrl|dkDrg|jj|dz |||j%|dz kDr1|jj|dz |j%|dz y)z!Process a single editing command.rr)%rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACEDELrr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s !A <<   #499}DII ++B/vu6<<## # HHMM!Q rqFLL$$V__LLOO((LL$$&&1u a1%a!! ac4#4#4QqS#9: ac499-flloov';';V\\=M=MNN VU6<<## # HHNN RQ6<<## # a!2!21!56LI a+HGFLL$$f&6&67 7499} a1%BAdii>; ac1%:96<<## # 6<6<rc d}|jt|jdzD]}|jj |d|j |}|dk(r |j rBt|jdzD]Z}|j r||kDrnG|ttjj|jj||z}\|jdkDs|dz}|S)z.Collect and return the contents of the window.rr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers tyy{#A HHMM!Q $$Q'DqyT--499Q;'##D#fll&8&8q!9L&M"NN(yy1}$$ rNc |jj}|r||}|s(|j|s |j S|jjd)z2Edit in the widget window and collect the results.)rgetchrRrKrZ)r validater4s reditz Textbox.editsY!Bb\??2&{{} HH   r)Fr/) __name__ __module__ __qualname____doc__r!rr-r8rRrZr^rrrrs,. #2BH" rr__main__cd\}}d\}}|j|dz |dtj||||}t||dz |dz ||z||z|j t |j S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrKrr^)stdscrncolsnlinesrrrs r test_editboxrpsz vS c!eS">?mmFE34&#a%Qf cEkBs|  ""rzContents of text box:) rbr curses.asciirrr_rpwrapperstrprintreprrcrrrvsU@  -ll\ z# &.. &C !49-rPK'[]>3!__pycache__/ascii.cpython-312.pycnu[ ֦i dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$gd#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9y8)9z3Constants and membership tests for ASCII characters  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPc<t|tr t|S|SN) isinstancestrordcs %/usr/lib64/python3.12/curses/ascii.py_ctoirM0s!S1v c2t|xs t|SrF)isalphaisdigitrJs rLisalnumrR6wqz/WQZ/rNc2t|xs t|SrF)isupperislowerrJs rLrPrP7rSrNc4dt|cxkxrdkScS)Nrr#rMrJs rLisasciirY8sqE!H+++++rNct|dvS)N)r r"rXrJs rLisblankr[9suQx7**rNcTdt|cxkxrdkncxst|dk(S)Nrr!r#rXrJs rLiscntrlr]:s"qE!H**=eAh#o=rNc4dt|cxkxrdkScS)N09rXrJs rLrQrQ;rU1X+++++rNc4dt|cxkxrdkScS)N!~rXrJs rLisgraphre<rU1X,,,,,rNc4dt|cxkxrdkScS)NazrXrJs rLrVrV=rfrNc4dt|cxkxrdkScS)Nr"rdrXrJs rLisprintrk>rfrNc4t|xr t| SrF)rerRrJs rLispunctrm?swqz4'!*n4rNct|dvS)N)r r r rrr"rXrJs rLisspacero@suQx#:::rNc4dt|cxkxrdkScS)NAZrXrJs rLrUrUArarNct|xs4dt|cxkxrdkncxsdt|cxkxrdkScS)NrqFrhf)rQrMrJs rLisxdigitrvBsA 658r6!U1X44646rNc4dt|cxkxrdkScS)Nrr"rXrJs rLisctrlrxDsa58(b((((rNct|dkDSNr#rXrJs rLismetar{EseAhn$rNclt|trtt|dzSt|dzSrzrGrHchrrMrJs rLasciirG-!S58d?##Qx$rNclt|trtt|dzSt|dzS)Nr!r}rJs rLctrlrMrrNclt|trtt|dzSt|dzS)Nr}rJs rLaltrSrrNct|}|dk(rd}n4t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rMrkr~)rKbitsreps rLunctrlrYsd 8D t|  $+C$+-566 d{Sy JrNN):__doc__r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrMrRrPrYr[r]rQrerVrkrmrorUrvrxr{rrrrrNrLrs 9                                      0/+*=+,,,4:+6($   rNPK'[]إ-'__pycache__/panel.cpython-312.opt-2.pycnu[ ֦iW ddly))*N) _curses_panel%/usr/lib64/python3.12/curses/panel.pyrs rPK'[]W=//)__pycache__/textpad.cpython-312.opt-1.pycnu[ ֦iJdZddlZddlZdZGddZedk(r%dZejeZe de eyy) z:Simple textbox editing widget with Emacs-like keybindings.Ncd|j|dz|tj||z dz |j||dztj||z dz |j||dztj||z dz |j|dz|tj||z dz |j ||tj |j ||tj|j ||tj|j ||tjy)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs '/usr/lib64/python3.12/curses/textpad.py rectanglersIIc!eS&**C#IM:IIc3q5&**C#IM:IIc3q5&**C#IM:IIc!eS&**C#IM:IIc3++,IIc3++,IIc3++,IIc3++,c>eZdZdZd dZdZdZdZdZdZ d d Z y) TextboxadEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h c~||_||_|jd|_d|_|j dyNr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+s7&   1 rcf|jj\}}|dz |_|dz |_yr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s.XX&&( d1H 1H rc8|j|j} tjj|jj ||tjj k7rt|j|dz} |S|dk(r |S|dz }~)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s yy||!!$((--4"89V\\__L499d1f-  !8D rcn|j|jj\}}d}||jks||jkr|j r|jj } |jj||j rtjjsnE|}|jj\}}|||f}||jkr||jkr||jj|yy#tj$rYwxYwN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs !A$))mq499}  r"##6<<+?+?+FBXX^^%FQ~A!$))mq499}$   DHHMM6 " <<  s5DD43D4c |j|jj\}}||_tj j |r0||jks||jkr|j|y|tj jk(r|jj|dy|tj jtjtj jtjtj j fvr|dkDr |jj||dz nm|dk(rng|j"r2|jj|dz |j%|dz n)|jj|dz |j|tj jtjtj j fvr|jj'y|tj j(k(r|jj'y|tj j*k(r_|j"r,|jj||j%|y|jj||jy|tj j,tj.fvr`||jkr |jj||dzy||jk(r y|jj|dzdy|tj j0k(ry|tj j2k(r?|jdk(ry||jkr|jj|dzdy|tj j4k(rk|dk(r/|j%|dk(r|jj7y|jj|||jj9y|tj j:k(r|jj=y|tj j>tj@fvrw||jkrg|jj|dz|||j%|dzkDr1|jj|dz|j%|dzy|tj jBk(r|jjEy|tj jFtjHfvrl|dkDrg|jj|dz |||j%|dz kDr1|jj|dz |j%|dz y)z!Process a single editing command.rr)%rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACEDELrr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s !A <<   #499}DII ++B/vu6<<## # HHMM!Q rqFLL$$V__LLOO((LL$$&&1u a1%a!! ac4#4#4QqS#9: ac499-flloov';';V\\=M=MNN VU6<<## # HHNN RQ6<<## # a!2!21!56LI a+HGFLL$$f&6&67 7499} a1%BAdii>; ac1%:96<<## # 6<6<rc d}|jt|jdzD]}|jj |d|j |}|dk(r |j rBt|jdzD]Z}|j r||kDrnG|ttjj|jj||z}\|jdkDs|dz}|S)z.Collect and return the contents of the window.rr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers tyy{#A HHMM!Q $$Q'DqyT--499Q;'##D#fll&8&8q!9L&M"NN(yy1}$$ rNc |jj}|r||}|s(|j|s |j S|jjd)z2Edit in the widget window and collect the results.)rgetchrRrKrZ)r validater4s reditz Textbox.editsY!Bb\??2&{{} HH   r)Fr/) __name__ __module__ __qualname____doc__r!rr-r8rRrZr^rrrrs,. #2BH" rr__main__cd\}}d\}}|j|dz |dtj||||}t||dz |dz ||z||z|j t |j S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrKrr^)stdscrncolsnlinesrrrs r test_editboxrpsz vS c!eS">?mmFE34&#a%Qf cEkBs|  ""rzContents of text box:) rbr curses.asciirrr_rpwrapperstrprintreprrcrrrvsU@  -ll\ z# &.. &C !49-rPK'[]=f+ $__pycache__/__init__.cpython-312.pycnu[ ֦i) bdZddlddlZddlZdZdZ edZ y#e $r ddlmZYdZ ywxYw) zcurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... )*Nc<ddl}ddl}ttjj ddt jj|j}|jjD]\}}|dddk(s|dvst|||!|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues (/usr/lib64/python3.12/curses/__init__.pyrrs3;;??695'')+ __ F&&,,. U q8v (9!9 FC '/ Mcddl}ddl}|j}t|dr|j|_t|dr|j |_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sE  "Fw! w &$00 Mr)has_keyc t}tt|jd t ||g|i|dt vr0|jdt ttSS#YLxYw#dt vr0jdt ttwwxYw)aWrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). r%rr) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MF*T*T* vx  MM!  F J H    vx  MM!  F J H s!/B B B BB >C ) __doc__r osrsysrrr"r& NameErrorr2rrr8sE  "! &! &!s  ..PK'[]z(z(#__pycache__/has_key.cpython-312.pycnu[ ֦iddlZiejdejdejdejdej dej dejdejd ejd ejd ejd ejd ejdejdejdej dej"diej$dej&dej(dej*dej,dej.dej0dej2dej4dej6dej8dej:dej<dej>d ej@d!ejBd"ejDd#iejFd$ejHd%ejJd&ejLd'ejNd(ejPd)ejRd*ejTd+ejVd,ejXd-ejZd.ej\d/ej^d0ej`d1ejbd2ejdd3ejfd4iejhd5ejjd6ejld7ejnd8ejpd9ejrd:ejtd;ejvd<ejxd=ejzd>ej|d?ej~d@ejdAejdBejdCejdDejdEiejdFejdGejdHejdIejdJejdKejdLejdMejdNejdOejdPejdQejdRejdSejdTejdUejdViejdWejdXejdYejdZejd[ejd\ejd]ejd^ejd_ejd`ejdaejdbejdcejddejdeejdfejdgiejdhejdiejdjejdkejdlejdmejdnejdoejdpejdqejdrejdsejdtejduejdvejdwejdxiejdyejdzejd{ejd|ejd}ejd~ejdejdejdejdejdejdejdej dej dejdejdejdejdejdejdejdejdejdej dej"dej$dej&dej(dej*di ZdZedk(r gZej4ej7D]LZej.eZeeZeek7s$ej?dej@eeefzN ejBeD] Zee yy#ejBeD] Zee wxYw)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|tr t|}tj |}|yt j |ryy)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names '/usr/lib64/python3.12/curses/has_key.pyhas_keyrsF"c W(++B/O*__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NNEV NNEV NNEV 5 V  OOV V  f V NNEV NNEV V vV vV vV V fV V  g!V" NNG#V$ NNF%V& g'V( OOW)V* OOV+V, v-V. OOU/V0 OOU1V2 f3V4 NNE5V6 NNE7V8 OOV9V: OOV;V< OOV=V> OOV?V@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL NNEMVN OOVOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb NNEcVd OOVeVf OOVgVh OOViVj OOVkVl OOVmVn OOVoVp OOVqVr OOVsVt OOVuVv OOVwVx NNEyVz OOV{V| OOV}V~ OOVV@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL OOVMVN NNEOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb OOVcVd NNEeVf OOVgVh OOViVj OOVkVl OOVmVn NNEoVp NNEqVr NNEsVt fuVv fwVx gyVz NNG{V| NNF}V~ gV@ NNEAVB fCVD EVF fGVH fIVJ uKVL fMVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVp OOUqVr OOUsVt uVv fwVx fyVz v{V| NNF}V~ vV@ vAVB vCVD OOUEVF vGVH &IVJ vKVL vMVN &OVP 6QVR  NNE v &   v & f v  f NNGkVp  z  $))+C$W__S)FS\FE,W__c3VVDEG , AE!H AE!Hs:Aa+a#a5PK'[]>)))__pycache__/textpad.cpython-312.opt-2.pycnu[ ֦iJ ddlZddlZdZGddZedk(r%dZej eZede eyy)Ncf |j|dz|tj||z dz |j||dztj||z dz |j||dztj||z dz |j|dz|tj||z dz |j ||tj |j ||tj|j ||tj|j ||tjyN) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs '/usr/lib64/python3.12/curses/textpad.py rectanglersIIc!eS&**C#IM:IIc3q5&**C#IM:IIc3q5&**C#IM:IIc!eS&**C#IM:IIc3++,IIc3++,IIc3++,IIc3++,c<eZdZ d dZdZdZdZdZdZd dZ y) Textboxc~||_||_|jd|_d|_|j dyr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+s7&   1 rcf|jj\}}|dz |_|dz |_yr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s.XX&&( d1H 1H rc: |j|j} tjj|jj ||tjj k7rt|j|dz} |S|dk(r |S|dz }~)Nrr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s @ yy||!!$((--4"89V\\__L499d1f-  !8D rcn|j|jj\}}d}||jks||jkr|j r|jj } |jj||j rtjjsnE|}|jj\}}|||f}||jkr||jkr||jj|yy#tj$rYwxYwN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs !A$))mq499}  r"##6<<+?+?+FBXX^^%FQ~A!$))mq499}$   DHHMM6 " <<  s5DD43D4c |j|jj\}}||_tj j |r0||jks||jkr|j|y|tj jk(r|jj|dy|tj jtjtj jtjtj j fvr|dkDr |jj||dz nm|dk(rng|j"r2|jj|dz |j%|dz n)|jj|dz |j|tj jtjtj j fvr|jj'y|tj j(k(r|jj'y|tj j*k(r_|j"r,|jj||j%|y|jj||jy|tj j,tj.fvr`||jkr |jj||dzy||jk(r y|jj|dzdy|tj j0k(ry|tj j2k(r?|jdk(ry||jkr|jj|dzdy|tj j4k(rk|dk(r/|j%|dk(r|jj7y|jj|||jj9y|tj j:k(r|jj=y|tj j>tj@fvrw||jkrg|jj|dz|||j%|dzkDr1|jj|dz|j%|dzy|tj jBk(r|jjEy|tj jFtjHfvrl|dkDrg|jj|dz |||j%|dz kDr1|jj|dz |j%|dz y)Nrr)%rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACEDELrr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s+ !A <<   #499}DII ++B/vu6<<## # HHMM!Q rqFLL$$V__LLOO((LL$$&&1u a1%a!! ac4#4#4QqS#9: ac499-flloov';';V\\=M=MNN VU6<<## # HHNN RQ6<<## # a!2!21!56LI a+HGFLL$$f&6&67 7499} a1%BAdii>; ac1%:96<<## # 6<6<rc  d}|jt|jdzD]}|jj |d|j |}|dk(r |j rBt|jdzD]Z}|j r||kDrnG|ttjj|jj||z}\|jdkDs|dz}|S)Nrr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers8 tyy{#A HHMM!Q $$Q'DqyT--499Q;'##D#fll&8&8q!9L&M"NN(yy1}$$ rNc |jj}|r||}|s(|j|s |j S|jjdr/)rgetchrRrKrZ)r validater4s reditz Textbox.edits\<!Bb\??2&{{} HH   r)Fr/) __name__ __module__ __qualname__r!rr-r8rRrZr^rrrrs,. #2BH" rr__main__cd\}}d\}}|j|dz |dtj||||}t||dz |dz ||z||z|j t |j S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrKrr^)stdscrncolsnlinesrrrs r test_editboxrosz vS c!eS">?mmFE34&#a%Qf cEkBs|  ""rzContents of text box:) r curses.asciirrr_rowrapperstrprintreprrbrrrusU@  -ll\ z# &.. &C !49-rPKl] __init__.pycnu[ |fc@sdZdZddlTddlmZddlZddlZdZ dZ ye Wn!e k r{ddl m Z nXdS( scurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... s$Id$i(t*(twrapperNcCsddl}ddl}tdtjjdddtjj|j }xO|j j D]>\}}|dd!dks|d kr_t |||q_q_W|S( NittermtTERMtunknowntfdiitACS_tLINEStCOLS(RR( t_cursestcursest setuptermt_ostenvirontgett_syst __stdout__tfilenotinitscrt__dict__titemstsetattr(R R tstdscrtkeytvalue((s'/usr/lib64/python2.7/curses/__init__.pyRs cCsdddl}ddl}|j}t|drB|j|_nt|dr`|j|_n|S(NitCOLORSt COLOR_PAIRS(R R t start_colorthasattrRR(R R tretval((s'/usr/lib64/python2.7/curses/__init__.pyR-s (thas_key( t__doc__t __revision__R tcurses.wrapperRtosR tsysRRRRt NameError(((s'/usr/lib64/python2.7/curses/__init__.pyt s     PKl] __init__.pyonu[ |fc@sdZdZddlTddlmZddlZddlZdZ dZ ye Wn!e k r{ddl m Z nXdS( scurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... s$Id$i(t*(twrapperNcCsddl}ddl}tdtjjdddtjj|j }xO|j j D]>\}}|dd!dks|d kr_t |||q_q_W|S( NittermtTERMtunknowntfdiitACS_tLINEStCOLS(RR( t_cursestcursest setuptermt_ostenvirontgett_syst __stdout__tfilenotinitscrt__dict__titemstsetattr(R R tstdscrtkeytvalue((s'/usr/lib64/python2.7/curses/__init__.pyRs cCsdddl}ddl}|j}t|drB|j|_nt|dr`|j|_n|S(NitCOLORSt COLOR_PAIRS(R R t start_colorthasattrRR(R R tretval((s'/usr/lib64/python2.7/curses/__init__.pyR-s (thas_key( t__doc__t __revision__R tcurses.wrapperRtosR tsysRRRRt NameError(((s'/usr/lib64/python2.7/curses/__init__.pyt s     PKl] m wrapper.pyonu[ |fc@sdZddlZdZdS(scurses.wrapper Contains one function, wrapper(), which runs another function which should be the rest of your curses-based application. If the application raises an exception, wrapper() will restore the terminal to a sane state so you can read the resulting traceback. iNcOszYtj}tjtj|jdytjWnnX||||SWddtkr|jdtjtjtj nXdS(sWrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). iNtstdscri( tcursestinitscrtnoechotcbreaktkeypadt start_colortlocalstechotnocbreaktendwin(tfunctargstkwdsR((s&/usr/lib64/python2.7/curses/wrapper.pytwrapper s       (t__doc__RR(((s&/usr/lib64/python2.7/curses/wrapper.pyts PKl]*44 has_key.pycnu[ |fc@sddlZidej6dej6dej6dej6dej6dej6dej6d ej6d ej 6d ej 6d ej 6d ej 6dej 6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6d ej6d!ej 6d"ej!6d#ej"6d$ej#6d%ej$6d&ej%6d'ej&6d(ej'6d)ej(6d*ej)6d+ej*6d,ej+6d-ej,6d.ej-6d/ej.6d0ej/6d1ej06d2ej16d3ej26d4ej36d5ej46d6ej56d7ej66d8ej76d9ej86d:ej96d;ej:6d<ej;6d=ej<6d>ej=6d?ej>6d@ej?6dAej@6dBejA6dCejB6dDejC6dEejD6dFejE6dGejF6dHejG6dIejH6dJejI6dKejJ6dLejK6dMejL6dNejM6dOejN6dPejO6dQejP6dRejQ6dSejR6dTejS6dUejT6dVejU6dWejV6dXejW6dYejX6dZejY6d[ejZ6d\ej[6d]ej\6d^ej]6d_ej^6d`ej_6daej`6dbeja6dcejb6ddejc6deejd6dfeje6dgejf6dhejg6diejh6djeji6dkejj6dlejk6dmejl6dnejm6doejn6dpejo6dqejp6drejq6dsejr6dtejs6duejt6dveju6dwejv6dxejw6dyejx6dzejy6d{ejz6d|ej{6d}ej|6d~ej}6dej~6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6ZdZedkrzxgZejxaejD]SZejeZeeZeekrejdejeeefqqWWdejxeD] ZeGHqWXndS(iNtka1tka3tkb2tkbstkbegtkcbttkc1tkc3tkcantktbctkclrtkclotkcmdtkcpytkcrttkctabtkdch1tkdl1tkcud1tkrmirtkendtkenttkeltkedtkexttkf0tkf1tkf10tkf11tkf12tkf13tkf14tkf15tkf16tkf17tkf18tkf19tkf2tkf20tkf21tkf22tkf23tkf24tkf25tkf26tkf27tkf28tkf29tkf3tkf30tkf31tkf32tkf33tkf34tkf35tkf36tkf37tkf38tkf39tkf4tkf40tkf41tkf42tkf43tkf44tkf45tkf46tkf47tkf48tkf49tkf5tkf50tkf51tkf52tkf53tkf54tkf55tkf56tkf57tkf58tkf59tkf6tkf60tkf61tkf62tkf63tkf7tkf8tkf9tkfndtkhlptkhometkich1tkil1tkcub1tklltkmrktkmsgtkmovtknxttknptkopntkopttkpptkprvtkprttkrdotkreftkrfrtkrpltkrsttkrestkcuf1tksavtkBEGtkCANtkCMDtkCPYtkCRTtkDCtkDLtkslttkENDtkEOLtkEXTtkindtkFNDtkHLPtkHOMtkICtkLFTtkMSGtkMOVtkNXTtkOPTtkPRVtkPRTtkritkRDOtkRPLtkRITtkREStkSAVtkSPDtkhtstkUNDtkspdtkundtkcuu1cCsXt|trt|}ntj|}|dkr=tStj|rPt StSdS(N( t isinstancetstrtordt_capability_namestgettNonetFalset_cursesttigetstrtTrue(tchtcapability_name((s&/usr/lib64/python2.7/curses/has_key.pythas_keys t__main__s)Mismatch for key %s, system=%i, Python=%i(RtKEY_A1tKEY_A3tKEY_B2t KEY_BACKSPACEtKEY_BEGtKEY_BTABtKEY_C1tKEY_C3t KEY_CANCELt KEY_CATABt KEY_CLEARt KEY_CLOSEt KEY_COMMANDtKEY_COPYt KEY_CREATEtKEY_CTABtKEY_DCtKEY_DLtKEY_DOWNtKEY_EICtKEY_ENDt KEY_ENTERtKEY_EOLtKEY_EOStKEY_EXITtKEY_F0tKEY_F1tKEY_F10tKEY_F11tKEY_F12tKEY_F13tKEY_F14tKEY_F15tKEY_F16tKEY_F17tKEY_F18tKEY_F19tKEY_F2tKEY_F20tKEY_F21tKEY_F22tKEY_F23tKEY_F24tKEY_F25tKEY_F26tKEY_F27tKEY_F28tKEY_F29tKEY_F3tKEY_F30tKEY_F31tKEY_F32tKEY_F33tKEY_F34tKEY_F35tKEY_F36tKEY_F37tKEY_F38tKEY_F39tKEY_F4tKEY_F40tKEY_F41tKEY_F42tKEY_F43tKEY_F44tKEY_F45tKEY_F46tKEY_F47tKEY_F48tKEY_F49tKEY_F5tKEY_F50tKEY_F51tKEY_F52tKEY_F53tKEY_F54tKEY_F55tKEY_F56tKEY_F57tKEY_F58tKEY_F59tKEY_F6tKEY_F60tKEY_F61tKEY_F62tKEY_F63tKEY_F7tKEY_F8tKEY_F9tKEY_FINDtKEY_HELPtKEY_HOMEtKEY_ICtKEY_ILtKEY_LEFTtKEY_LLtKEY_MARKt KEY_MESSAGEtKEY_MOVEtKEY_NEXTt KEY_NPAGEtKEY_OPENt KEY_OPTIONSt KEY_PPAGEt KEY_PREVIOUSt KEY_PRINTtKEY_REDOt KEY_REFERENCEt KEY_REFRESHt KEY_REPLACEt KEY_RESTARTt KEY_RESUMEt KEY_RIGHTtKEY_SAVEtKEY_SBEGt KEY_SCANCELt KEY_SCOMMANDt KEY_SCOPYt KEY_SCREATEtKEY_SDCtKEY_SDLt KEY_SELECTtKEY_SENDtKEY_SEOLt KEY_SEXITtKEY_SFt KEY_SFINDt KEY_SHELPt KEY_SHOMEtKEY_SICt KEY_SLEFTt KEY_SMESSAGEt KEY_SMOVEt KEY_SNEXTt KEY_SOPTIONSt KEY_SPREVIOUSt KEY_SPRINTtKEY_SRt KEY_SREDOt KEY_SREPLACEt KEY_SRIGHTt KEY_SRSUMEt KEY_SSAVEt KEY_SSUSPENDtKEY_STABt KEY_SUNDOt KEY_SUSPENDtKEY_UNDOtKEY_UPRRt__name__tLtinitscrtkeystkeytsystemtpythontappendtkeynametendwinti(((s&/usr/lib64/python2.7/curses/has_key.pytsH                                                                                                                                                            %  PKl]*44 has_key.pyonu[ |fc@sddlZidej6dej6dej6dej6dej6dej6dej6d ej6d ej 6d ej 6d ej 6d ej 6dej 6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6d ej6d!ej 6d"ej!6d#ej"6d$ej#6d%ej$6d&ej%6d'ej&6d(ej'6d)ej(6d*ej)6d+ej*6d,ej+6d-ej,6d.ej-6d/ej.6d0ej/6d1ej06d2ej16d3ej26d4ej36d5ej46d6ej56d7ej66d8ej76d9ej86d:ej96d;ej:6d<ej;6d=ej<6d>ej=6d?ej>6d@ej?6dAej@6dBejA6dCejB6dDejC6dEejD6dFejE6dGejF6dHejG6dIejH6dJejI6dKejJ6dLejK6dMejL6dNejM6dOejN6dPejO6dQejP6dRejQ6dSejR6dTejS6dUejT6dVejU6dWejV6dXejW6dYejX6dZejY6d[ejZ6d\ej[6d]ej\6d^ej]6d_ej^6d`ej_6daej`6dbeja6dcejb6ddejc6deejd6dfeje6dgejf6dhejg6diejh6djeji6dkejj6dlejk6dmejl6dnejm6doejn6dpejo6dqejp6drejq6dsejr6dtejs6duejt6dveju6dwejv6dxejw6dyejx6dzejy6d{ejz6d|ej{6d}ej|6d~ej}6dej~6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6ZdZedkrzxgZejxaejD]SZejeZeeZeekrejdejeeefqqWWdejxeD] ZeGHqWXndS(iNtka1tka3tkb2tkbstkbegtkcbttkc1tkc3tkcantktbctkclrtkclotkcmdtkcpytkcrttkctabtkdch1tkdl1tkcud1tkrmirtkendtkenttkeltkedtkexttkf0tkf1tkf10tkf11tkf12tkf13tkf14tkf15tkf16tkf17tkf18tkf19tkf2tkf20tkf21tkf22tkf23tkf24tkf25tkf26tkf27tkf28tkf29tkf3tkf30tkf31tkf32tkf33tkf34tkf35tkf36tkf37tkf38tkf39tkf4tkf40tkf41tkf42tkf43tkf44tkf45tkf46tkf47tkf48tkf49tkf5tkf50tkf51tkf52tkf53tkf54tkf55tkf56tkf57tkf58tkf59tkf6tkf60tkf61tkf62tkf63tkf7tkf8tkf9tkfndtkhlptkhometkich1tkil1tkcub1tklltkmrktkmsgtkmovtknxttknptkopntkopttkpptkprvtkprttkrdotkreftkrfrtkrpltkrsttkrestkcuf1tksavtkBEGtkCANtkCMDtkCPYtkCRTtkDCtkDLtkslttkENDtkEOLtkEXTtkindtkFNDtkHLPtkHOMtkICtkLFTtkMSGtkMOVtkNXTtkOPTtkPRVtkPRTtkritkRDOtkRPLtkRITtkREStkSAVtkSPDtkhtstkUNDtkspdtkundtkcuu1cCsXt|trt|}ntj|}|dkr=tStj|rPt StSdS(N( t isinstancetstrtordt_capability_namestgettNonetFalset_cursesttigetstrtTrue(tchtcapability_name((s&/usr/lib64/python2.7/curses/has_key.pythas_keys t__main__s)Mismatch for key %s, system=%i, Python=%i(RtKEY_A1tKEY_A3tKEY_B2t KEY_BACKSPACEtKEY_BEGtKEY_BTABtKEY_C1tKEY_C3t KEY_CANCELt KEY_CATABt KEY_CLEARt KEY_CLOSEt KEY_COMMANDtKEY_COPYt KEY_CREATEtKEY_CTABtKEY_DCtKEY_DLtKEY_DOWNtKEY_EICtKEY_ENDt KEY_ENTERtKEY_EOLtKEY_EOStKEY_EXITtKEY_F0tKEY_F1tKEY_F10tKEY_F11tKEY_F12tKEY_F13tKEY_F14tKEY_F15tKEY_F16tKEY_F17tKEY_F18tKEY_F19tKEY_F2tKEY_F20tKEY_F21tKEY_F22tKEY_F23tKEY_F24tKEY_F25tKEY_F26tKEY_F27tKEY_F28tKEY_F29tKEY_F3tKEY_F30tKEY_F31tKEY_F32tKEY_F33tKEY_F34tKEY_F35tKEY_F36tKEY_F37tKEY_F38tKEY_F39tKEY_F4tKEY_F40tKEY_F41tKEY_F42tKEY_F43tKEY_F44tKEY_F45tKEY_F46tKEY_F47tKEY_F48tKEY_F49tKEY_F5tKEY_F50tKEY_F51tKEY_F52tKEY_F53tKEY_F54tKEY_F55tKEY_F56tKEY_F57tKEY_F58tKEY_F59tKEY_F6tKEY_F60tKEY_F61tKEY_F62tKEY_F63tKEY_F7tKEY_F8tKEY_F9tKEY_FINDtKEY_HELPtKEY_HOMEtKEY_ICtKEY_ILtKEY_LEFTtKEY_LLtKEY_MARKt KEY_MESSAGEtKEY_MOVEtKEY_NEXTt KEY_NPAGEtKEY_OPENt KEY_OPTIONSt KEY_PPAGEt KEY_PREVIOUSt KEY_PRINTtKEY_REDOt KEY_REFERENCEt KEY_REFRESHt KEY_REPLACEt KEY_RESTARTt KEY_RESUMEt KEY_RIGHTtKEY_SAVEtKEY_SBEGt KEY_SCANCELt KEY_SCOMMANDt KEY_SCOPYt KEY_SCREATEtKEY_SDCtKEY_SDLt KEY_SELECTtKEY_SENDtKEY_SEOLt KEY_SEXITtKEY_SFt KEY_SFINDt KEY_SHELPt KEY_SHOMEtKEY_SICt KEY_SLEFTt KEY_SMESSAGEt KEY_SMOVEt KEY_SNEXTt KEY_SOPTIONSt KEY_SPREVIOUSt KEY_SPRINTtKEY_SRt KEY_SREDOt KEY_SREPLACEt KEY_SRIGHTt KEY_SRSUMEt KEY_SSAVEt KEY_SSUSPENDtKEY_STABt KEY_SUNDOt KEY_SUSPENDtKEY_UNDOtKEY_UPRRt__name__tLtinitscrtkeystkeytsystemtpythontappendtkeynametendwinti(((s&/usr/lib64/python2.7/curses/has_key.pytsH                                                                                                                                                            %  PKl]v  wrapper.pynu["""curses.wrapper Contains one function, wrapper(), which runs another function which should be the rest of your curses-based application. If the application raises an exception, wrapper() will restore the terminal to a sane state so you can read the resulting traceback. """ import curses def wrapper(func, *args, **kwds): """Wrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). """ try: # Initialize curses stdscr = curses.initscr() # Turn off echoing of keys, and enter cbreak mode, # where no buffering is performed on keyboard input curses.noecho() curses.cbreak() # In keypad mode, escape sequences for special keys # (like the cursor keys) will be interpreted and # a special value like curses.KEY_LEFT will be returned stdscr.keypad(1) # Start color, too. Harmless if the terminal doesn't have # color; user can test with has_color() later on. The try/catch # works around a minor bit of over-conscientiousness in the curses # module -- the error return from C start_color() is ignorable. try: curses.start_color() except: pass return func(stdscr, *args, **kwds) finally: # Set everything back to normal if 'stdscr' in locals(): stdscr.keypad(0) curses.echo() curses.nocbreak() curses.endwin() PKl])x panel.pycnu[ |fc@sdZdZddlTdS(s3curses.panel Module for using panels with curses. s$Id$i(t*N(t__doc__t __revision__t _curses_panel(((s$/usr/lib64/python2.7/curses/panel.pytsPKl] ascii.pyonu[ |fc!@sdZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDZ&dEZ'dFZ(dGZ)dHZ*dIZ+dJZ,dKZ-dLZ.dMZ/dNZ0dOZ1dPZ2dQZ3dRZ4dSZ5dTZ6dUZ7dVZ8dWZ9dXS(Ys3Constants and membership tests for ASCII charactersiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii itNULtSOHtSTXtETXtEOTtENQtACKtBELtBStHTtLFtVTtFFtCRtSOtSItDLEtDC1tDC2tDC3tDC4tNAKtSYNtETBtCANtEMtSUBtESCtFStGStRStUStSPcCs*t|tdkr"t|S|SdS(Nt(ttypetord(tc((s$/usr/lib64/python2.7/curses/ascii.pyt_ctoi0s cCst|pt|S(N(tisalphatisdigit(R$((s$/usr/lib64/python2.7/curses/ascii.pytisalnum6R!cCst|pt|S(N(tisuppertislower(R$((s$/usr/lib64/python2.7/curses/ascii.pyR&7R!cCsdt|kodkSS(Nii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisascii8R!cCst|dkS(Ni i (i i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisblank9R!cCs2dt|kodknp1t|dkS(Niii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytiscntrl:R!cCsdt|kodkSS(Ni0i9(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR';R!cCsdt|kodkSS(Ni!i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisgraph<R!cCsdt|kodkSS(Niaiz(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR*=R!cCsdt|kodkSS(Ni i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisprint>R!cCst|ot| S(N(R.R((R$((s$/usr/lib64/python2.7/curses/ascii.pytispunct?R!cCst|dkS(Ni i i i i i (i i i i i i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisspace@R!cCsdt|kodkSS(NiAiZ(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR)AR!cCsLt|pKdt|ko)dknpKdt|koIdkSS(NiAiFiaif(R'R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisxdigitBs cCsdt|kodkSS(Nii (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisctrlDR!cCst|dkS(Ni(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytismetaER!cCs>t|tdkr,tt|d@St|d@SdS(NR!i(R"tchrR%(R$((s$/usr/lib64/python2.7/curses/ascii.pytasciiGscCs>t|tdkr,tt|d@St|d@SdS(NR!i(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytctrlMscCs>t|tdkr,tt|dBSt|dBSdS(NR!i(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytaltSscCsvt|}|dkr!d}n?t|d@rDt|d@}ndt|d@dBd}|d@rrd|S|S(Nis^?t^i it!(R%R/R5(R$tbitstrep((s$/usr/lib64/python2.7/curses/ascii.pytunctrlYs    N(:t__doc__RRRRRRRRRtTABR R tNLR R R RRRRRRRRRRRRRRRRRRR tDELt controlnamesR%R(R&R+R,R-R'R.R*R/R0R1R)R2R3R4R6R7R8R=(((s$/usr/lib64/python2.7/curses/ascii.pytsz                    PKl] m wrapper.pycnu[ |fc@sdZddlZdZdS(scurses.wrapper Contains one function, wrapper(), which runs another function which should be the rest of your curses-based application. If the application raises an exception, wrapper() will restore the terminal to a sane state so you can read the resulting traceback. iNcOszYtj}tjtj|jdytjWnnX||||SWddtkr|jdtjtjtj nXdS(sWrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). iNtstdscri( tcursestinitscrtnoechotcbreaktkeypadt start_colortlocalstechotnocbreaktendwin(tfunctargstkwdsR((s&/usr/lib64/python2.7/curses/wrapper.pytwrapper s       (t__doc__RR(((s&/usr/lib64/python2.7/curses/wrapper.pyts PKl]|A9 textpad.pyonu[ |fc@stdZddlZddlZdZdd dYZedkrpdZejeZdGe eGHndS( s:Simple textbox editing widget with Emacs-like keybindings.iNcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS(s^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. iN( tvlinetcursest ACS_VLINEthlinet ACS_HLINEtaddcht ACS_ULCORNERt ACS_URCORNERt ACS_LRCORNERt ACS_LLCORNER(twintulytulxtlrytlrx((s&/usr/lib64/python2.7/curses/textpad.pyt rectangles%%%%tTextboxcBsSeZdZedZdZdZdZdZdZ ddZ RS( sdEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h cCs?||_||_|jd|_d|_|jddS(Ni(R t insert_modet_update_max_yxt stripspacestNonetlastcmdtkeypad(tselfR R((s&/usr/lib64/python2.7/curses/textpad.pyt__init__+s      cCs3|jj\}}|d|_|d|_dS(Ni(R tgetmaxyxtmaxytmaxx(RRR((s&/usr/lib64/python2.7/curses/textpad.pyR3s cCs|j|j}xktrtjj|jj||tjjkrct|j|d}Pn|dkrsPn|d}qW|S(suGo to the location of the first blank on the given line, returning the index of the last non-blank character.ii( RRtTrueRtasciiR tinchtSPtmin(Rtytlast((s&/usr/lib64/python2.7/curses/textpad.pyt _end_of_line8s   - cCs |j|jj\}}d}x||jksF||jkr|jra|jj}ny|jj|Wnt j k rnX|j st j j | rPn|}|jj\}}|dkr(||f}q(q(W|dk r|jj |ndS(N(RR tgetyxRRRRRRRterrorRtisprinttmove(RtchR!txtbackyxtoldch((s&/usr/lib64/python2.7/curses/textpad.pyt_insert_printable_charFs$ !   cCso|j|jj\}}||_tjj|rk||jksX||jkrk|j |qkn|tjj kr|jj |dn|tjj tj tjjtjfkrj|dkr|jj ||dnY|dkrnJ|jr"|jj |d|j|dn|jj |d|j|tjjtjfkrk|jjqkn|tjjkr|jjn|tjjkr|jr|jj ||j|qk|jj ||jn|tjjtjfkrO||jkr#|jj ||dqk||jkr5qk|jj |ddn|tjjkredS|tjjkr|jdkrdS||jkrk|jj |ddqkn|tjjkr|dkr|j|dkr|jjqk|jj |||jjnO|tjjkr>|jjn-|tjjtjfkr||jkrk|jj |d|||j|dkr|jj |d|j|dqqkn|tjj kr|jj!n|tjj"tj#fkrk|dkrk|jj |d|||j|dkrh|jj |d|j|dqhqkndS(s!Process a single editing command.ii($RR R$RRRR&RRR,tSOHR'tSTXtKEY_LEFTtBSt KEY_BACKSPACERR#tdelchtEOTtENQtACKt KEY_RIGHTtBELtNLtVTtdeletelntclrtoeoltFFtrefreshtSOtKEY_DOWNtSItinsertlntDLEtKEY_UP(RR(R!R)((s&/usr/lib64/python2.7/curses/textpad.pyt do_command_sr  *   ' !- -cCsd}|jxt|jdD]}|jj|d|j|}|dkrg|jrgq$nx_t|jdD]J}|jr||krPn|tt j j |jj ||}q{W|jdkr$|d}q$q$W|S(s.Collect and return the contents of the window.tiis ( RtrangeRR R'R#RRtchrRRR(RtresultR!tstopR)((s&/usr/lib64/python2.7/curses/textpad.pytgathers /cCsaxT|jj}|r'||}n|s3qn|j|sFPn|jjqW|jS(s2Edit in the widget window and collect the results.(R tgetchRDR=RJ(RtvalidateR(((s&/usr/lib64/python2.7/curses/textpad.pyteditsN( t__name__t __module__t__doc__tFalseRRR#R,RDRJRRM(((s&/usr/lib64/python2.7/curses/textpad.pyRs     A t__main__cCsd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS( Ni iiiisUse Ctrl-G to end editing.i(i i(ii(taddstrRtnewwinRR=RRM(tstdscrtncolstnlinesR R R ((s&/usr/lib64/python2.7/curses/textpad.pyt test_editboxs  & sContents of text box:(( RPRt curses.asciiRRRNRXtwrappertstrtrepr(((s&/usr/lib64/python2.7/curses/textpad.pyts     PKl] ascii.pycnu[ |fc!@sdZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDZ&dEZ'dFZ(dGZ)dHZ*dIZ+dJZ,dKZ-dLZ.dMZ/dNZ0dOZ1dPZ2dQZ3dRZ4dSZ5dTZ6dUZ7dVZ8dWZ9dXS(Ys3Constants and membership tests for ASCII charactersiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii itNULtSOHtSTXtETXtEOTtENQtACKtBELtBStHTtLFtVTtFFtCRtSOtSItDLEtDC1tDC2tDC3tDC4tNAKtSYNtETBtCANtEMtSUBtESCtFStGStRStUStSPcCs*t|tdkr"t|S|SdS(Nt(ttypetord(tc((s$/usr/lib64/python2.7/curses/ascii.pyt_ctoi0s cCst|pt|S(N(tisalphatisdigit(R$((s$/usr/lib64/python2.7/curses/ascii.pytisalnum6R!cCst|pt|S(N(tisuppertislower(R$((s$/usr/lib64/python2.7/curses/ascii.pyR&7R!cCsdt|kodkSS(Nii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisascii8R!cCst|dkS(Ni i (i i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisblank9R!cCs2dt|kodknp1t|dkS(Niii(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytiscntrl:R!cCsdt|kodkSS(Ni0i9(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR';R!cCsdt|kodkSS(Ni!i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisgraph<R!cCsdt|kodkSS(Niaiz(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR*=R!cCsdt|kodkSS(Ni i~(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisprint>R!cCst|ot| S(N(R.R((R$((s$/usr/lib64/python2.7/curses/ascii.pytispunct?R!cCst|dkS(Ni i i i i i (i i i i i i (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisspace@R!cCsdt|kodkSS(NiAiZ(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pyR)AR!cCsLt|pKdt|ko)dknpKdt|koIdkSS(NiAiFiaif(R'R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisxdigitBs cCsdt|kodkSS(Nii (R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytisctrlDR!cCst|dkS(Ni(R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytismetaER!cCs>t|tdkr,tt|d@St|d@SdS(NR!i(R"tchrR%(R$((s$/usr/lib64/python2.7/curses/ascii.pytasciiGscCs>t|tdkr,tt|d@St|d@SdS(NR!i(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytctrlMscCs>t|tdkr,tt|dBSt|dBSdS(NR!i(R"R5R%(R$((s$/usr/lib64/python2.7/curses/ascii.pytaltSscCsvt|}|dkr!d}n?t|d@rDt|d@}ndt|d@dBd}|d@rrd|S|S(Nis^?t^i it!(R%R/R5(R$tbitstrep((s$/usr/lib64/python2.7/curses/ascii.pytunctrlYs    N(:t__doc__RRRRRRRRRtTABR R tNLR R R RRRRRRRRRRRRRRRRRRR tDELt controlnamesR%R(R&R+R,R-R'R.R*R/R0R1R)R2R3R4R6R7R8R=(((s$/usr/lib64/python2.7/curses/ascii.pytsz                    PKl])x panel.pyonu[ |fc@sdZdZddlTdS(s3curses.panel Module for using panels with curses. s$Id$i(t*N(t__doc__t __revision__t _curses_panel(((s$/usr/lib64/python2.7/curses/panel.pytsPKl]|A9 textpad.pycnu[ |fc@stdZddlZddlZdZdd dYZedkrpdZejeZdGe eGHndS( s:Simple textbox editing widget with Emacs-like keybindings.iNcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS(s^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. iN( tvlinetcursest ACS_VLINEthlinet ACS_HLINEtaddcht ACS_ULCORNERt ACS_URCORNERt ACS_LRCORNERt ACS_LLCORNER(twintulytulxtlrytlrx((s&/usr/lib64/python2.7/curses/textpad.pyt rectangles%%%%tTextboxcBsSeZdZedZdZdZdZdZdZ ddZ RS( sdEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h cCs?||_||_|jd|_d|_|jddS(Ni(R t insert_modet_update_max_yxt stripspacestNonetlastcmdtkeypad(tselfR R((s&/usr/lib64/python2.7/curses/textpad.pyt__init__+s      cCs3|jj\}}|d|_|d|_dS(Ni(R tgetmaxyxtmaxytmaxx(RRR((s&/usr/lib64/python2.7/curses/textpad.pyR3s cCs|j|j}xktrtjj|jj||tjjkrct|j|d}Pn|dkrsPn|d}qW|S(suGo to the location of the first blank on the given line, returning the index of the last non-blank character.ii( RRtTrueRtasciiR tinchtSPtmin(Rtytlast((s&/usr/lib64/python2.7/curses/textpad.pyt _end_of_line8s   - cCs |j|jj\}}d}x||jksF||jkr|jra|jj}ny|jj|Wnt j k rnX|j st j j | rPn|}|jj\}}|dkr(||f}q(q(W|dk r|jj |ndS(N(RR tgetyxRRRRRRRterrorRtisprinttmove(RtchR!txtbackyxtoldch((s&/usr/lib64/python2.7/curses/textpad.pyt_insert_printable_charFs$ !   cCso|j|jj\}}||_tjj|rk||jksX||jkrk|j |qkn|tjj kr|jj |dn|tjj tj tjjtjfkrj|dkr|jj ||dnY|dkrnJ|jr"|jj |d|j|dn|jj |d|j|tjjtjfkrk|jjqkn|tjjkr|jjn|tjjkr|jr|jj ||j|qk|jj ||jn|tjjtjfkrO||jkr#|jj ||dqk||jkr5qk|jj |ddn|tjjkredS|tjjkr|jdkrdS||jkrk|jj |ddqkn|tjjkr|dkr|j|dkr|jjqk|jj |||jjnO|tjjkr>|jjn-|tjjtjfkr||jkrk|jj |d|||j|dkr|jj |d|j|dqqkn|tjj kr|jj!n|tjj"tj#fkrk|dkrk|jj |d|||j|dkrh|jj |d|j|dqhqkndS(s!Process a single editing command.ii($RR R$RRRR&RRR,tSOHR'tSTXtKEY_LEFTtBSt KEY_BACKSPACERR#tdelchtEOTtENQtACKt KEY_RIGHTtBELtNLtVTtdeletelntclrtoeoltFFtrefreshtSOtKEY_DOWNtSItinsertlntDLEtKEY_UP(RR(R!R)((s&/usr/lib64/python2.7/curses/textpad.pyt do_command_sr  *   ' !- -cCsd}|jxt|jdD]}|jj|d|j|}|dkrg|jrgq$nx_t|jdD]J}|jr||krPn|tt j j |jj ||}q{W|jdkr$|d}q$q$W|S(s.Collect and return the contents of the window.tiis ( RtrangeRR R'R#RRtchrRRR(RtresultR!tstopR)((s&/usr/lib64/python2.7/curses/textpad.pytgathers /cCsaxT|jj}|r'||}n|s3qn|j|sFPn|jjqW|jS(s2Edit in the widget window and collect the results.(R tgetchRDR=RJ(RtvalidateR(((s&/usr/lib64/python2.7/curses/textpad.pyteditsN( t__name__t __module__t__doc__tFalseRRR#R,RDRJRRM(((s&/usr/lib64/python2.7/curses/textpad.pyRs     A t__main__cCsd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS( Ni iiiisUse Ctrl-G to end editing.i(i i(ii(taddstrRtnewwinRR=RRM(tstdscrtncolstnlinesR R R ((s&/usr/lib64/python2.7/curses/textpad.pyt test_editboxs  & sContents of text box:(( RPRt curses.asciiRRRNRXtwrappertstrtrepr(((s&/usr/lib64/python2.7/curses/textpad.pyts     PK/{]UT)__pycache__/__init__.cpython-36.opt-2.pycnu[3 \& @s^ddlTddlZddlZddZddZyeWn ek rPddlmZYnXd d Z dS) )*NcCstddl}ddl}ttjjddtjjd|j }x:|j j D],\}}|dddks`|d kr@t |||q@W|S) NrZTERMunknown)ZtermfdZACS_LINESCOLS)rr) _cursescursesZ setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)rr stdscrkeyvaluer'/usr/lib64/python3.6/curses/__init__.pyrsrcCs@ddl}ddl}|j}t|dr*|j|_t|dr<|j|_|S)NrCOLORS COLOR_PAIRS)rr start_colorhasattrrr)rr Zretvalrrrr*s  r)has_keycOsrzDt}tt|jdy tWn YnX||f||Sdtkrl|jdtttXdS)Nrrr) rZnoechoZcbreakZkeypadrlocalsZechoZnocbreakZendwin)funcargskwdsrrrrwrapper?s    r#) rosr sysr rrr NameErrorr#rrrr s  PK/{]w __pycache__/panel.cpython-36.pycnu[3 \W@sdZddlTdS)z3curses.panel Module for using panels with curses. )*N)__doc__Z _curses_panelrr$/usr/lib64/python3.6/curses/panel.pysPK/{]T~R(__pycache__/has_key.cpython-36.opt-1.pycnu[3 \*@sddlZejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;dej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZddZedkrzZgZejxHejD]t|trt|}tj|}|dkr(dStj|r6dSdSdS)NFT) isinstancestrord_capability_namesget_cursesZtigetstr)ZchZcapability_namer&/usr/lib64/python3.6/curses/has_key.pyhas_keys   r __main__z)Mismatch for key %s, system=%i, Python=%i)rZKEY_A1ZKEY_A3ZKEY_B2Z KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z KEY_CANCELZ KEY_CATABZ KEY_CLEARZ KEY_CLOSEZ KEY_COMMANDZKEY_COPYZ KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZ KEY_MESSAGEZKEY_MOVEZKEY_NEXTZ KEY_NPAGEZKEY_OPENZ KEY_OPTIONSZ KEY_PPAGEZ KEY_PREVIOUSZ KEY_PRINTZKEY_REDOZ KEY_REFERENCEZ KEY_REFRESHZ KEY_REPLACEZ KEY_RESTARTZ KEY_RESUMEZ KEY_RIGHTZKEY_SAVEZKEY_SBEGZ KEY_SCANCELZ KEY_SCOMMANDZ KEY_SCOPYZ KEY_SCREATEZKEY_SDCZKEY_SDLZ KEY_SELECTZKEY_SENDZKEY_SEOLZ KEY_SEXITZKEY_SFZ KEY_SFINDZ KEY_SHELPZ KEY_SHOMEZKEY_SICZ KEY_SLEFTZ KEY_SMESSAGEZ KEY_SMOVEZ KEY_SNEXTZ KEY_SOPTIONSZ KEY_SPREVIOUSZ KEY_SPRINTZKEY_SRZ KEY_SREDOZ KEY_SREPLACEZ KEY_SRIGHTZ KEY_SRSUMEZ KEY_SSAVEZ KEY_SSUSPENDZKEY_STABZ KEY_SUNDOZ KEY_SUSPENDZKEY_UNDOZKEY_UPrr __name__LZinitscrkeyskeysystempythonappendZkeynameZendwiniprintrrrr sF     PK/{]dQ'&__pycache__/panel.cpython-36.opt-2.pycnu[3 \W@s ddlTdS))*N)Z _curses_panelrr$/usr/lib64/python3.6/curses/panel.pysPK/{]MA&__pycache__/ascii.cpython-36.opt-2.pycnu[3 \ !@szdZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBg!Z$dCdDZ%dEdFZ&dGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5dedfZ6dgdhZ7didjZ8dkS)l  NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcCs t|tdkrt|S|SdS)N)typeord)crH$/usr/lib64/python3.6/curses/ascii.py_ctoi0srJcCst|pt|S)N)isalphaisdigit)rGrHrHrIisalnum6srMcCst|pt|S)N)isupperislower)rGrHrHrIrK7srKcCsdt|kodkSS)Nrr")rJ)rGrHrHrIisascii8srPcCs t|dkS)Nr r!)r r!)rJ)rGrHrHrIisblank9srQcCs(dt|kodknp&t|dkS)Nrr r")rJ)rGrHrHrIiscntrl:srRcCsdt|kodkSS)N09)rJ)rGrHrHrIrL;srLcCsdt|kodkSS)N!~)rJ)rGrHrHrIisgraph<srWcCsdt|kodkSS)Naz)rJ)rGrHrHrIrO=srOcCsdt|kodkSS)Nr!rV)rJ)rGrHrHrIisprint>srZcCst|ot| S)N)rWrM)rGrHrHrIispunct?sr[cCs t|dkS)Nr r r r rr!)r r r r rr!)rJ)rGrHrHrIisspace@sr\cCsdt|kodkSS)NAZ)rJ)rGrHrHrIrNAsrNcCs@t|p>dt|kodknp>dt|ko:dkSS)Nr]FrXf)rLrJ)rGrHrHrIisxdigitBsracCsdt|kodkSS)Nrr!)rJ)rGrHrHrIisctrlDsrbcCs t|dkS)Nr")rJ)rGrHrHrIismetaEsrccCs0t|tdkr tt|d@St|d@SdS)NrDr")rEchrrJ)rGrHrHrIasciiGsrecCs0t|tdkr tt|d@St|d@SdS)NrDr )rErdrJ)rGrHrHrIctrlMsrfcCs0t|tdkr tt|dBSt|dBSdS)NrD)rErdrJ)rGrHrHrIaltSsrhcCs\t|}|dkrd}n2t|d@r0t|d@}ndt|d@dBd}|d@rXd|S|S)Nr"z^?^r!rg!)rJrZrd)rGbitsZreprHrHrIunctrlYs rlN)9r#r$r%r&r'r(r)r*r+ZTABr,r-NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZ controlnamesrJrMrKrPrQrRrLrWrOrZr[r\rNrarbrcrerfrhrlrHrHrHrIsxPK/{]T~R(__pycache__/has_key.cpython-36.opt-2.pycnu[3 \*@sddlZejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;dej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZddZedkrzZgZejxHejD]t|trt|}tj|}|dkr(dStj|r6dSdSdS)NFT) isinstancestrord_capability_namesget_cursesZtigetstr)ZchZcapability_namer&/usr/lib64/python3.6/curses/has_key.pyhas_keys   r __main__z)Mismatch for key %s, system=%i, Python=%i)rZKEY_A1ZKEY_A3ZKEY_B2Z KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z KEY_CANCELZ KEY_CATABZ KEY_CLEARZ KEY_CLOSEZ KEY_COMMANDZKEY_COPYZ KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZ KEY_MESSAGEZKEY_MOVEZKEY_NEXTZ KEY_NPAGEZKEY_OPENZ KEY_OPTIONSZ KEY_PPAGEZ KEY_PREVIOUSZ KEY_PRINTZKEY_REDOZ KEY_REFERENCEZ KEY_REFRESHZ KEY_REPLACEZ KEY_RESTARTZ KEY_RESUMEZ KEY_RIGHTZKEY_SAVEZKEY_SBEGZ KEY_SCANCELZ KEY_SCOMMANDZ KEY_SCOPYZ KEY_SCREATEZKEY_SDCZKEY_SDLZ KEY_SELECTZKEY_SENDZKEY_SEOLZ KEY_SEXITZKEY_SFZ KEY_SFINDZ KEY_SHELPZ KEY_SHOMEZKEY_SICZ KEY_SLEFTZ KEY_SMESSAGEZ KEY_SMOVEZ KEY_SNEXTZ KEY_SOPTIONSZ KEY_SPREVIOUSZ KEY_SPRINTZKEY_SRZ KEY_SREDOZ KEY_SREPLACEZ KEY_SRIGHTZ KEY_SRSUMEZ KEY_SSAVEZ KEY_SSUSPENDZKEY_STABZ KEY_SUNDOZ KEY_SUSPENDZKEY_UNDOZKEY_UPrr __name__LZinitscrkeyskeysystempythonappendZkeynameZendwiniprintrrrr sF     PK/{] ;t(__pycache__/textpad.cpython-36.opt-2.pycnu[3 \@sRddlZddlZddZGdddZedkrNddZejeZed e edS) NcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS)N) ZvlinecursesZ ACS_VLINEZhlineZ ACS_HLINEaddchZ ACS_ULCORNERZ ACS_URCORNERZ ACS_LRCORNERZ ACS_LLCORNER)winulyulxZlryZlrxr&/usr/lib64/python3.6/curses/textpad.py rectanglesr c@sHeZdZdddZddZddZdd Zd d Zd d ZdddZ dS)TextboxFcCs.||_||_|jd|_d|_|jddS)Nr)r insert_mode_update_max_yx stripspaceslastcmdZkeypad)selfrr rrr __init__+s zTextbox.__init__cCs&|jj\}}|d|_|d|_dS)Nr)rZgetmaxyxmaxymaxx)rrrrrr r 3s zTextbox._update_max_yxcCs\|j|j}xHtjj|jj||tjjkrBt|j|d}Pn |dkrLP|d}qW|S)Nrr)r rrasciirinchZSPmin)ryZlastrrr _end_of_line8s zTextbox._end_of_linec Cs|j|jj\}}d}x||jks0||jkr|jr@|jj}y|jj|Wntj k rfYnX|j s~tj j | rP|}|jj\}}|dkr||f}qW|dk r|jj |dS)N) r rgetyxrrr rrrerrorrisprintmove)rchrxZbackyxZoldchrrr _insert_printable_charFs$  zTextbox._insert_printable_charcCsV|j|jj\}}||_tjj|rJ||jks<||jkrF|j |n|tjj krh|jj |dn|tjj tj tjjtjfkr|dkr|jj ||dnB|dkrn8|jr|jj |d|j|dn|jj |d|j|tjjtjfkrR|jjnL|tjjkr"|jjn0|tjjkrb|jrN|jj ||j|n|jj ||jn|tjjtjfkr||jkr|jj ||dn ||jkrn|jj |ddn|tjjkrdS|tjjkr |jdkrdS||jkrR|jj |ddnF|tjjkrZ|dkr@|j|dkr@|jjn|jj |||jjn|tjjkrt|jjn|tjjtjfkr||jkrR|jj |d|||j|dkrR|jj |d|j|dnz|tjj kr|jj!n`|tjj"tj#fkrR|dkrR|jj |d|||j|dkrR|jj |d|j|ddS)Nrr)$r rrrrrrrrrZSOHrZSTXZKEY_LEFTZBSZ KEY_BACKSPACErrZdelchZEOTZENQZACKZ KEY_RIGHTZBELNLZVTZdeletelnZclrtoeolZFFrefreshSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr do_command_sr            zTextbox.do_commandcCsd}|jxt|jdD]}|jj|d|j|}|dkrH|jrHqxDt|jdD]2}|jrl||krlP|tt j j |jj ||}qXW|jdkr|d}qW|S)Nrr ) r rangerrrrrrchrrrr)rresultrstoprrrr gathers "  zTextbox.gatherNcCs@x6|jj}|r||}|sq|j|s*P|jjqW|jS)N)rZgetchr#r!r*)rZvalidaterrrr edits  z Textbox.edit)F)N) __name__ __module__ __qualname__rr rrr#r*r+rrrr r s Ar __main__cCsfd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS) N zUse Ctrl-G to end editing.r)r0r1)r2r3)ZaddstrrZnewwinr r!r r+)ZstdscrZncolsZnlinesrrrrrr test_editboxs r5zContents of text box:) rZ curses.asciir r r,r5wrapperstrprintreprrrrr s , PK/{]6=#__pycache__/__init__.cpython-36.pycnu[3 \& @sbdZddlTddlZddlZddZddZyeWn e k rTdd lmZYnXd d Z dS) zcurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... )*NcCstddl}ddl}ttjjddtjjd|j }x:|j j D],\}}|dddks`|d kr@t |||q@W|S) NrZTERMunknown)ZtermfdZACS_LINESCOLS)rr) _cursescursesZ setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)rr stdscrkeyvaluer'/usr/lib64/python3.6/curses/__init__.pyrsrcCs@ddl}ddl}|j}t|dr*|j|_t|dr<|j|_|S)NrCOLORS COLOR_PAIRS)rr start_colorhasattrrr)rr Zretvalrrrr*s  r)has_keycOsrzDt}tt|jdy tWn YnX||f||Sdtkrl|jdtttXdS)aWrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). rNrr) rZnoechoZcbreakZkeypadrlocalsZechoZnocbreakZendwin)funcargskwdsrrrrwrapper?s    r#) __doc__rosr sysr rrr NameErrorr#rrrr s  PK/{]6=)__pycache__/__init__.cpython-36.opt-1.pycnu[3 \& @sbdZddlTddlZddlZddZddZyeWn e k rTdd lmZYnXd d Z dS) zcurses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... )*NcCstddl}ddl}ttjjddtjjd|j }x:|j j D],\}}|dddks`|d kr@t |||q@W|S) NrZTERMunknown)ZtermfdZACS_LINESCOLS)rr) _cursescursesZ setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)rr stdscrkeyvaluer'/usr/lib64/python3.6/curses/__init__.pyrsrcCs@ddl}ddl}|j}t|dr*|j|_t|dr<|j|_|S)NrCOLORS COLOR_PAIRS)rr start_colorhasattrrr)rr Zretvalrrrr*s  r)has_keycOsrzDt}tt|jdy tWn YnX||f||Sdtkrl|jdtttXdS)aWrapper function that initializes curses and calls another function, restoring normal keyboard/screen behavior on error. The callable object 'func' is then passed the main window 'stdscr' as its first argument, followed by any other arguments passed to wrapper(). rNrr) rZnoechoZcbreakZkeypadrlocalsZechoZnocbreakZendwin)funcargskwdsrrrrwrapper?s    r#) __doc__rosr sysr rrr NameErrorr#rrrr s  PK/{]T~R"__pycache__/has_key.cpython-36.pycnu[3 \*@sddlZejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejd ej d!ej!d"ej"d#ej#d$ej$d%ej%d&ej&d'ej'd(ej(d)ej)d*ej*d+ej+d,ej,d-ej-d.ej.d/ej/d0ej0d1ej1d2ej2d3ej3d4ej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;dej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdVejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdiZddZedkrzZgZejxHejD]t|trt|}tj|}|dkr(dStj|r6dSdSdS)NFT) isinstancestrord_capability_namesget_cursesZtigetstr)ZchZcapability_namer&/usr/lib64/python3.6/curses/has_key.pyhas_keys   r __main__z)Mismatch for key %s, system=%i, Python=%i)rZKEY_A1ZKEY_A3ZKEY_B2Z KEY_BACKSPACEZKEY_BEGZKEY_BTABZKEY_C1ZKEY_C3Z KEY_CANCELZ KEY_CATABZ KEY_CLEARZ KEY_CLOSEZ KEY_COMMANDZKEY_COPYZ KEY_CREATEZKEY_CTABZKEY_DCZKEY_DLZKEY_DOWNZKEY_EICZKEY_ENDZ KEY_ENTERZKEY_EOLZKEY_EOSZKEY_EXITZKEY_F0ZKEY_F1ZKEY_F10ZKEY_F11ZKEY_F12ZKEY_F13ZKEY_F14ZKEY_F15ZKEY_F16ZKEY_F17ZKEY_F18ZKEY_F19ZKEY_F2ZKEY_F20ZKEY_F21ZKEY_F22ZKEY_F23ZKEY_F24ZKEY_F25ZKEY_F26ZKEY_F27ZKEY_F28ZKEY_F29ZKEY_F3ZKEY_F30ZKEY_F31ZKEY_F32ZKEY_F33ZKEY_F34ZKEY_F35ZKEY_F36ZKEY_F37ZKEY_F38ZKEY_F39ZKEY_F4ZKEY_F40ZKEY_F41ZKEY_F42ZKEY_F43ZKEY_F44ZKEY_F45ZKEY_F46ZKEY_F47ZKEY_F48ZKEY_F49ZKEY_F5ZKEY_F50ZKEY_F51ZKEY_F52ZKEY_F53ZKEY_F54ZKEY_F55ZKEY_F56ZKEY_F57ZKEY_F58ZKEY_F59ZKEY_F6ZKEY_F60ZKEY_F61ZKEY_F62ZKEY_F63ZKEY_F7ZKEY_F8ZKEY_F9ZKEY_FINDZKEY_HELPZKEY_HOMEZKEY_ICZKEY_ILZKEY_LEFTZKEY_LLZKEY_MARKZ KEY_MESSAGEZKEY_MOVEZKEY_NEXTZ KEY_NPAGEZKEY_OPENZ KEY_OPTIONSZ KEY_PPAGEZ KEY_PREVIOUSZ KEY_PRINTZKEY_REDOZ KEY_REFERENCEZ KEY_REFRESHZ KEY_REPLACEZ KEY_RESTARTZ KEY_RESUMEZ KEY_RIGHTZKEY_SAVEZKEY_SBEGZ KEY_SCANCELZ KEY_SCOMMANDZ KEY_SCOPYZ KEY_SCREATEZKEY_SDCZKEY_SDLZ KEY_SELECTZKEY_SENDZKEY_SEOLZ KEY_SEXITZKEY_SFZ KEY_SFINDZ KEY_SHELPZ KEY_SHOMEZKEY_SICZ KEY_SLEFTZ KEY_SMESSAGEZ KEY_SMOVEZ KEY_SNEXTZ KEY_SOPTIONSZ KEY_SPREVIOUSZ KEY_SPRINTZKEY_SRZ KEY_SREDOZ KEY_SREPLACEZ KEY_SRIGHTZ KEY_SRSUMEZ KEY_SSAVEZ KEY_SSUSPENDZKEY_STABZ KEY_SUNDOZ KEY_SUSPENDZKEY_UNDOZKEY_UPrr __name__LZinitscrkeyskeysystempythonappendZkeynameZendwiniprintrrrr sF     PK/{]EO(__pycache__/textpad.cpython-36.opt-1.pycnu[3 \@sVdZddlZddlZddZGdddZedkrRdd ZejeZe d e edS) z:Simple textbox editing widget with Emacs-like keybindings.NcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) ZvlinecursesZ ACS_VLINEZhlineZ ACS_HLINEaddchZ ACS_ULCORNERZ ACS_URCORNERZ ACS_LRCORNERZ ACS_LLCORNER)winulyulxZlryZlrxr&/usr/lib64/python3.6/curses/textpad.py rectanglesr c@sLeZdZdZdddZddZddZd d Zd d Zd dZ dddZ dS)TextboxadEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h FcCs.||_||_|jd|_d|_|jddS)Nr)r insert_mode_update_max_yx stripspaceslastcmdZkeypad)selfrr rrr __init__+s zTextbox.__init__cCs&|jj\}}|d|_|d|_dS)Nr)rZgetmaxyxmaxymaxx)rrrrrr r 3s zTextbox._update_max_yxcCs\|j|j}xHtjj|jj||tjjkrBt|j|d}Pn |dkrLP|d}qW|S)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)r rrasciirinchZSPmin)ryZlastrrr _end_of_line8s zTextbox._end_of_linec Cs|j|jj\}}d}x||jks0||jkr|jr@|jj}y|jj|Wntj k rfYnX|j s~tj j | rP|}|jj\}}|dkr||f}qW|dk r|jj |dS)N) r rgetyxrrr rrrerrorrisprintmove)rchrxZbackyxZoldchrrr _insert_printable_charFs$  zTextbox._insert_printable_charcCsV|j|jj\}}||_tjj|rJ||jks<||jkrF|j |n|tjj krh|jj |dn|tjj tj tjjtjfkr|dkr|jj ||dnB|dkrn8|jr|jj |d|j|dn|jj |d|j|tjjtjfkrR|jjnL|tjjkr"|jjn0|tjjkrb|jrN|jj ||j|n|jj ||jn|tjjtjfkr||jkr|jj ||dn ||jkrn|jj |ddn|tjjkrdS|tjjkr |jdkrdS||jkrR|jj |ddnF|tjjkrZ|dkr@|j|dkr@|jjn|jj |||jjn|tjjkrt|jjn|tjjtjfkr||jkrR|jj |d|||j|dkrR|jj |d|j|dnz|tjj kr|jj!n`|tjj"tj#fkrR|dkrR|jj |d|||j|dkrR|jj |d|j|ddS)z!Process a single editing command.rr)$r rrrrrrrrrZSOHrZSTXZKEY_LEFTZBSZ KEY_BACKSPACErrZdelchZEOTZENQZACKZ KEY_RIGHTZBELNLZVTZdeletelnZclrtoeolZFFrefreshSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr do_command_sr            zTextbox.do_commandcCsd}|jxt|jdD]}|jj|d|j|}|dkrH|jrHqxDt|jdD]2}|jrl||krlP|tt j j |jj ||}qXW|jdkr|d}qW|S)z.Collect and return the contents of the window.rr ) r rangerrrrrrchrrrr)rresultrstoprrrr gathers "  zTextbox.gatherNcCs@x6|jj}|r||}|sq|j|s*P|jjqW|jS)z2Edit in the widget window and collect the results.)rZgetchr#r!r*)rZvalidaterrrr edits  z Textbox.edit)F)N) __name__ __module__ __qualname____doc__rr rrr#r*r+rrrr r s Ar __main__cCsfd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS) N zUse Ctrl-G to end editing.r)r1r2)r3r4)ZaddstrrZnewwinr r!r r+)ZstdscrZncolsZnlinesrrrrrr test_editboxs r6zContents of text box:) r/rZ curses.asciir r r,r6wrapperstrprintreprrrrr s , PK/{]w&__pycache__/panel.cpython-36.opt-1.pycnu[3 \W@sdZddlTdS)z3curses.panel Module for using panels with curses. )*N)__doc__Z _curses_panelrr$/usr/lib64/python3.6/curses/panel.pysPK/{]SS&__pycache__/ascii.cpython-36.opt-1.pycnu[3 \ !@s~dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCg!Z%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*dNdOZ+dPdQZ,dRdSZ-dTdUZ.dVdWZ/dXdYZ0dZd[Z1d\d]Z2d^d_Z3d`daZ4dbdcZ5dddeZ6dfdgZ7dhdiZ8djdkZ9dlS)mz3Constants and membership tests for ASCII characters  NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcCs t|tdkrt|S|SdS)N)typeord)crH$/usr/lib64/python3.6/curses/ascii.py_ctoi0srJcCst|pt|S)N)isalphaisdigit)rGrHrHrIisalnum6srMcCst|pt|S)N)isupperislower)rGrHrHrIrK7srKcCsdt|kodkSS)Nrr")rJ)rGrHrHrIisascii8srPcCs t|dkS)Nr r!)r r!)rJ)rGrHrHrIisblank9srQcCs(dt|kodknp&t|dkS)Nrr r")rJ)rGrHrHrIiscntrl:srRcCsdt|kodkSS)N09)rJ)rGrHrHrIrL;srLcCsdt|kodkSS)N!~)rJ)rGrHrHrIisgraph<srWcCsdt|kodkSS)Naz)rJ)rGrHrHrIrO=srOcCsdt|kodkSS)Nr!rV)rJ)rGrHrHrIisprint>srZcCst|ot| S)N)rWrM)rGrHrHrIispunct?sr[cCs t|dkS)Nr r r r rr!)r r r r rr!)rJ)rGrHrHrIisspace@sr\cCsdt|kodkSS)NAZ)rJ)rGrHrHrIrNAsrNcCs@t|p>dt|kodknp>dt|ko:dkSS)Nr]FrXf)rLrJ)rGrHrHrIisxdigitBsracCsdt|kodkSS)Nrr!)rJ)rGrHrHrIisctrlDsrbcCs t|dkS)Nr")rJ)rGrHrHrIismetaEsrccCs0t|tdkr tt|d@St|d@SdS)NrDr")rEchrrJ)rGrHrHrIasciiGsrecCs0t|tdkr tt|d@St|d@SdS)NrDr )rErdrJ)rGrHrHrIctrlMsrfcCs0t|tdkr tt|dBSt|dBSdS)NrD)rErdrJ)rGrHrHrIaltSsrhcCs\t|}|dkrd}n2t|d@r0t|d@}ndt|d@dBd}|d@rXd|S|S)Nr"z^?^r!rg!)rJrZrd)rGbitsZreprHrHrIunctrlYs rlN):__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZ controlnamesrJrMrKrPrQrRrLrWrOrZr[r\rNrarbrcrerfrhrlrHrHrHrIszPK/{]SS __pycache__/ascii.cpython-36.pycnu[3 \ !@s~dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCg!Z%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*dNdOZ+dPdQZ,dRdSZ-dTdUZ.dVdWZ/dXdYZ0dZd[Z1d\d]Z2d^d_Z3d`daZ4dbdcZ5dddeZ6dfdgZ7dhdiZ8djdkZ9dlS)mz3Constants and membership tests for ASCII characters  NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcCs t|tdkrt|S|SdS)N)typeord)crH$/usr/lib64/python3.6/curses/ascii.py_ctoi0srJcCst|pt|S)N)isalphaisdigit)rGrHrHrIisalnum6srMcCst|pt|S)N)isupperislower)rGrHrHrIrK7srKcCsdt|kodkSS)Nrr")rJ)rGrHrHrIisascii8srPcCs t|dkS)Nr r!)r r!)rJ)rGrHrHrIisblank9srQcCs(dt|kodknp&t|dkS)Nrr r")rJ)rGrHrHrIiscntrl:srRcCsdt|kodkSS)N09)rJ)rGrHrHrIrL;srLcCsdt|kodkSS)N!~)rJ)rGrHrHrIisgraph<srWcCsdt|kodkSS)Naz)rJ)rGrHrHrIrO=srOcCsdt|kodkSS)Nr!rV)rJ)rGrHrHrIisprint>srZcCst|ot| S)N)rWrM)rGrHrHrIispunct?sr[cCs t|dkS)Nr r r r rr!)r r r r rr!)rJ)rGrHrHrIisspace@sr\cCsdt|kodkSS)NAZ)rJ)rGrHrHrIrNAsrNcCs@t|p>dt|kodknp>dt|ko:dkSS)Nr]FrXf)rLrJ)rGrHrHrIisxdigitBsracCsdt|kodkSS)Nrr!)rJ)rGrHrHrIisctrlDsrbcCs t|dkS)Nr")rJ)rGrHrHrIismetaEsrccCs0t|tdkr tt|d@St|d@SdS)NrDr")rEchrrJ)rGrHrHrIasciiGsrecCs0t|tdkr tt|d@St|d@SdS)NrDr )rErdrJ)rGrHrHrIctrlMsrfcCs0t|tdkr tt|dBSt|dBSdS)NrD)rErdrJ)rGrHrHrIaltSsrhcCs\t|}|dkrd}n2t|d@r0t|d@}ndt|d@dBd}|d@rXd|S|S)Nr"z^?^r!rg!)rJrZrd)rGbitsZreprHrHrIunctrlYs rlN):__doc__r#r$r%r&r'r(r)r*r+ZTABr,r-NLr.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCZDELZ controlnamesrJrMrKrPrQrRrLrWrOrZr[r\rNrarbrcrerfrhrlrHrHrHrIszPK/{]EO"__pycache__/textpad.cpython-36.pycnu[3 \@sVdZddlZddlZddZGdddZedkrRdd ZejeZe d e edS) z:Simple textbox editing widget with Emacs-like keybindings.NcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) ZvlinecursesZ ACS_VLINEZhlineZ ACS_HLINEaddchZ ACS_ULCORNERZ ACS_URCORNERZ ACS_LRCORNERZ ACS_LLCORNER)winulyulxZlryZlrxr&/usr/lib64/python3.6/curses/textpad.py rectanglesr c@sLeZdZdZdddZddZddZd d Zd d Zd dZ dddZ dS)TextboxadEditing widget using the interior of a window object. Supports the following Emacs-like key bindings: Ctrl-A Go to left edge of window. Ctrl-B Cursor left, wrapping to previous line if appropriate. Ctrl-D Delete character under cursor. Ctrl-E Go to right edge (stripspaces off) or end of line (stripspaces on). Ctrl-F Cursor right, wrapping to next line when appropriate. Ctrl-G Terminate, returning the window contents. Ctrl-H Delete character backward. Ctrl-J Terminate if the window is 1 line, otherwise insert newline. Ctrl-K If line is blank, delete it, otherwise clear to end of line. Ctrl-L Refresh screen. Ctrl-N Cursor down; move down one line. Ctrl-O Insert a blank line at cursor location. Ctrl-P Cursor up; move up one line. Move operations do nothing if the cursor is at an edge where the movement is not possible. The following synonyms are supported where possible: KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N KEY_BACKSPACE = Ctrl-h FcCs.||_||_|jd|_d|_|jddS)Nr)r insert_mode_update_max_yx stripspaceslastcmdZkeypad)selfrr rrr __init__+s zTextbox.__init__cCs&|jj\}}|d|_|d|_dS)Nr)rZgetmaxyxmaxymaxx)rrrrrr r 3s zTextbox._update_max_yxcCs\|j|j}xHtjj|jj||tjjkrBt|j|d}Pn |dkrLP|d}qW|S)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)r rrasciirinchZSPmin)ryZlastrrr _end_of_line8s zTextbox._end_of_linec Cs|j|jj\}}d}x||jks0||jkr|jr@|jj}y|jj|Wntj k rfYnX|j s~tj j | rP|}|jj\}}|dkr||f}qW|dk r|jj |dS)N) r rgetyxrrr rrrerrorrisprintmove)rchrxZbackyxZoldchrrr _insert_printable_charFs$  zTextbox._insert_printable_charcCsV|j|jj\}}||_tjj|rJ||jks<||jkrF|j |n|tjj krh|jj |dn|tjj tj tjjtjfkr|dkr|jj ||dnB|dkrn8|jr|jj |d|j|dn|jj |d|j|tjjtjfkrR|jjnL|tjjkr"|jjn0|tjjkrb|jrN|jj ||j|n|jj ||jn|tjjtjfkr||jkr|jj ||dn ||jkrn|jj |ddn|tjjkrdS|tjjkr |jdkrdS||jkrR|jj |ddnF|tjjkrZ|dkr@|j|dkr@|jjn|jj |||jjn|tjjkrt|jjn|tjjtjfkr||jkrR|jj |d|||j|dkrR|jj |d|j|dnz|tjj kr|jj!n`|tjj"tj#fkrR|dkrR|jj |d|||j|dkrR|jj |d|j|ddS)z!Process a single editing command.rr)$r rrrrrrrrrZSOHrZSTXZKEY_LEFTZBSZ KEY_BACKSPACErrZdelchZEOTZENQZACKZ KEY_RIGHTZBELNLZVTZdeletelnZclrtoeolZFFrefreshSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrrrrr do_command_sr            zTextbox.do_commandcCsd}|jxt|jdD]}|jj|d|j|}|dkrH|jrHqxDt|jdD]2}|jrl||krlP|tt j j |jj ||}qXW|jdkr|d}qW|S)z.Collect and return the contents of the window.rr ) r rangerrrrrrchrrrr)rresultrstoprrrr gathers "  zTextbox.gatherNcCs@x6|jj}|r||}|sq|j|s*P|jjqW|jS)z2Edit in the widget window and collect the results.)rZgetchr#r!r*)rZvalidaterrrr edits  z Textbox.edit)F)N) __name__ __module__ __qualname____doc__rr rrr#r*r+rrrr r s Ar __main__cCsfd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS) N zUse Ctrl-G to end editing.r)r1r2)r3r4)ZaddstrrZnewwinr r!r r+)ZstdscrZncolsZnlinesrrrrrr test_editboxs r6zContents of text box:) r/rZ curses.asciir r r,r6wrapperstrprintreprrrrr s , PK] c c rain.pynuȯ#! /usr/bin/python2.7 # # $Id$ # # somebody should probably check the randrange()s... import curses from random import randrange def next_j(j): if j == 0: j = 4 else: j -= 1 if curses.has_colors(): z = randrange(0, 3) color = curses.color_pair(z) if z: color = color | curses.A_BOLD stdscr.attrset(color) return j def main(win): # we know that the first argument from curses.wrapper() is stdscr. # Initialize it globally for convenience. global stdscr stdscr = win if curses.has_colors(): bg = curses.COLOR_BLACK curses.init_pair(1, curses.COLOR_BLUE, bg) curses.init_pair(2, curses.COLOR_CYAN, bg) curses.nl() curses.noecho() # XXX curs_set() always returns ERR # curses.curs_set(0) stdscr.timeout(0) c = curses.COLS - 4 r = curses.LINES - 4 xpos = [0] * c ypos = [0] * r for j in range(4, -1, -1): xpos[j] = randrange(0, c) + 2 ypos[j] = randrange(0, r) + 2 j = 0 while True: x = randrange(0, c) + 2 y = randrange(0, r) + 2 stdscr.addch(y, x, ord('.')) stdscr.addch(ypos[j], xpos[j], ord('o')) j = next_j(j) stdscr.addch(ypos[j], xpos[j], ord('O')) j = next_j(j) stdscr.addch( ypos[j] - 1, xpos[j], ord('-')) stdscr.addstr(ypos[j], xpos[j] - 1, "|.|") stdscr.addch( ypos[j] + 1, xpos[j], ord('-')) j = next_j(j) stdscr.addch( ypos[j] - 2, xpos[j], ord('-')) stdscr.addstr(ypos[j] - 1, xpos[j] - 1, "/ \\") stdscr.addstr(ypos[j], xpos[j] - 2, "| O |") stdscr.addstr(ypos[j] + 1, xpos[j] - 1, "\\ /") stdscr.addch( ypos[j] + 2, xpos[j], ord('-')) j = next_j(j) stdscr.addch( ypos[j] - 2, xpos[j], ord(' ')) stdscr.addstr(ypos[j] - 1, xpos[j] - 1, " ") stdscr.addstr(ypos[j], xpos[j] - 2, " ") stdscr.addstr(ypos[j] + 1, xpos[j] - 1, " ") stdscr.addch( ypos[j] + 2, xpos[j], ord(' ')) xpos[j] = x ypos[j] = y ch = stdscr.getch() if ch == ord('q') or ch == ord('Q'): return elif ch == ord('s'): stdscr.nodelay(0) elif ch == ord(' '): stdscr.nodelay(1) curses.napms(50) curses.wrapper(main) PK]@@ tclock.pycnu[ Afc@sfddlTddlZddlZdZdZdZdZdZdZej edS( i(t*Ng@cCs|dkrdSdS(Niii((t_x((s*/usr/lib64/python2.7/Demo/curses/tclock.pytsign s cCs:ttt|t|tt|t|fS(N(tinttroundtASPECTtsintcos(tangletradius((s*/usr/lib64/python2.7/Demo/curses/tclock.pytA2XYscCstj|||dS(N(tstdscrtaddch(txtytcol((s*/usr/lib64/python2.7/Demo/curses/tclock.pytplotscCsttjr%tjtj|n||}||}t|d}t|d} t|} t|} |} |} || kr| |d}xtrt| | || |krdS|dkr| | 7} ||8}n| | 7} || 7}qWnr|| d}xatrot| | || |kr5dS|dkrX| | 7} || 8}n| | 7} ||7}qWdS(Nii( tcursest has_colorsR tattrsett color_pairtabsRtTrueR(tpairtfrom_xtfrom_ytx2ty2tchtdxtdytaxtaytsxtsyR Rtd((s*/usr/lib64/python2.7/Demo/curses/tclock.pytdlines>                  cCs$|ad}tj}tjdtjdtjrtjdtj|tjdtj|tjdtj |ntj dd}tj d}t |dt |td}d|d}|d}d|d}xetdd D]T} | dd td } t| |\} } tj|| || d | dqWtjddd t|dd}xtrtjdtj} tj| }|d|dd}|d kr|d 8}n|ddtd}t||\}}|dtd }t||\}}|ddtd} t| |\} } td||||||tdtjtjtd||||||tdtjtjtjrtjtjdnt|| || tdtjr&tjtjdntjtj ddtj| tj |dddkr|d|kr|d}tj!ntj"}|tdkrdSt|| || tdtd||||||tdtd||||||tdqvWdS(Niiiiiiiii g@g(@s%ds5ASCII Clock by Howard Jones , 1994iigN@t#t.tOtqt (#R Rt COLOR_BLACKtnodelayttimeoutRt init_pairt COLOR_REDt COLOR_MAGENTAt COLOR_GREENtCOLStLINEStminRRtrangetpiR taddstrtmaxRtnapmsttimet localtimeR$tordRt A_REVERSEtattroffRRtctimetrefreshtbeeptgetch(twintlastbeeptmy_bgtcxtcyRtmradiusthradiustsradiustitsangletsdxtsdyttimttthourstmangletmdxtmdythanglethdxthdy((s*/usr/lib64/python2.7/Demo/curses/tclock.pytmainCsn     ! '      ''  # $   '( tmathRR9RRR RR$RWtwrapper(((s*/usr/lib64/python2.7/Demo/curses/tclock.pyts     + PPK]2Olife.pycnu[ Afc@sddlZddlZddlZddlZdd dYZdZdZdZdZe dkrej endS( iNt LifeBoardcBsPeZdZeddZdZdZdZedZ dZ RS(sEncapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display t*cCs i|_||_|jj\}}|d|dd|_|_||_|jjd|jdd}|jjdd||jj|jdd|xUtd|jD]A}|jjd|dd|jjd||jddqW|jj dS(sCreate a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') iit+t-it|N( tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR R Rt border_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s    %cCsc|dks6|j|ks6|dks6|j|krLtd||fnd|j||ftboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloopsd                      "  " cCst|dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmainst__main__(( R+tstringt tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyts$ n   ?  PK]ϐrain.pycnu[ Afc@s?ddlZddlmZdZdZejedS(iN(t randrangecCss|dkrd}n |d8}tjrotdd}tj|}|r_|tjB}ntj|n|S(Niiii(tcursest has_colorsRt color_pairtA_BOLDtstdscrtattrset(tjtztcolor((s(/usr/lib64/python2.7/Demo/curses/rain.pytnext_j s    c Cs|atjrJtj}tjdtj|tjdtj|ntjtjtj dtj d}tj d}dg|}dg|}xHt dddD]4}t d|d||s   EPK]̥TTREADMEnu[This is a collection of demos and tests for the curses module. ncurses demos ============= These demos are converted from the C versions in the ncurses distribution, and were contributed by Thomas Gellekum I didn't strive for a `pythonic' style, but bluntly copied the originals. I won't attempt to `beautify' the program anytime soon, but I wouldn't mind someone else making an effort in that direction, of course. ncurses.py -- currently only a panels demo rain.py -- raindrops keep falling on my desktop tclock.py -- ASCII clock, by Howard Jones xmas.py -- I'm dreaming of an ASCII christmas Please submit bugfixes and new contributions to the Python bug tracker. Other demos =========== life.py -- Simple game of Life repeat.py -- Repeatedly execute a shell command (like watch(1)) PK]r;5life.pynuȯ#! /usr/bin/python2.7 # life.py -- A curses-based version of Conway's Game of Life. # Contributed by AMK # # An empty board will be displayed, and the following commands are available: # E : Erase the board # R : Fill the board randomly # S : Step for a single generation # C : Update continuously until a key is struck # Q : Quit # Cursor keys : Move the cursor around the board # Space or Enter : Toggle the contents of the cursor's position # # TODO : # Support the mouse # Use colour if available # Make board updates faster # import random, string, traceback import curses class LifeBoard: """Encapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display """ def __init__(self, scr, char=ord('*')): """Create a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') """ self.state = {} self.scr = scr Y, X = self.scr.getmaxyx() self.X, self.Y = X-2, Y-2-1 self.char = char self.scr.clear() # Draw a border around the board border_line = '+'+(self.X*'-')+'+' self.scr.addstr(0, 0, border_line) self.scr.addstr(self.Y+1,0, border_line) for y in range(0, self.Y): self.scr.addstr(1+y, 0, '|') self.scr.addstr(1+y, self.X+1, '|') self.scr.refresh() def set(self, y, x): """Set a cell to the live state""" if x<0 or self.X<=x or y<0 or self.Y<=y: raise ValueError, "Coordinates out of range %i,%i"% (y,x) self.state[x,y] = 1 def toggle(self, y, x): """Toggle a cell's state between live and dead""" if x<0 or self.X<=x or y<0 or self.Y<=y: raise ValueError, "Coordinates out of range %i,%i"% (y,x) if self.state.has_key( (x,y) ): del self.state[x,y] self.scr.addch(y+1, x+1, ' ') else: self.state[x,y] = 1 self.scr.addch(y+1, x+1, self.char) self.scr.refresh() def erase(self): """Clear the entire board and update the board display""" self.state = {} self.display(update_board=False) def display(self, update_board=True): """Display the whole board, optionally computing one generation""" M,N = self.X, self.Y if not update_board: for i in range(0, M): for j in range(0, N): if self.state.has_key( (i,j) ): self.scr.addch(j+1, i+1, self.char) else: self.scr.addch(j+1, i+1, ' ') self.scr.refresh() return d = {} self.boring = 1 for i in range(0, M): L = range( max(0, i-1), min(M, i+2) ) for j in range(0, N): s = 0 live = self.state.has_key( (i,j) ) for k in range( max(0, j-1), min(N, j+2) ): for l in L: if self.state.has_key( (l,k) ): s += 1 s -= live if s == 3: # Birth d[i,j] = 1 self.scr.addch(j+1, i+1, self.char) if not live: self.boring = 0 elif s == 2 and live: d[i,j] = 1 # Survival elif live: # Death self.scr.addch(j+1, i+1, ' ') self.boring = 0 self.state = d self.scr.refresh() def makeRandom(self): "Fill the board with a random pattern" self.state = {} for i in range(0, self.X): for j in range(0, self.Y): if random.random() > 0.5: self.set(j,i) def erase_menu(stdscr, menu_y): "Clear the space where the menu resides" stdscr.move(menu_y, 0) stdscr.clrtoeol() stdscr.move(menu_y+1, 0) stdscr.clrtoeol() def display_menu(stdscr, menu_y): "Display the menu of possible keystroke commands" erase_menu(stdscr, menu_y) stdscr.addstr(menu_y, 4, 'Use the cursor keys to move, and space or Enter to toggle a cell.') stdscr.addstr(menu_y+1, 4, 'E)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uit') def keyloop(stdscr): # Clear the screen and display the menu of keys stdscr.clear() stdscr_y, stdscr_x = stdscr.getmaxyx() menu_y = (stdscr_y-3)-1 display_menu(stdscr, menu_y) # Allocate a subwindow for the Life board and create the board object subwin = stdscr.subwin(stdscr_y-3, stdscr_x, 0, 0) board = LifeBoard(subwin, char=ord('*')) board.display(update_board=False) # xpos, ypos are the cursor's position xpos, ypos = board.X//2, board.Y//2 # Main loop: while (1): stdscr.move(1+ypos, 1+xpos) # Move the cursor c = stdscr.getch() # Get a keystroke if 00: ypos -= 1 elif c == curses.KEY_DOWN and ypos0: xpos -= 1 elif c == curses.KEY_RIGHT and xpos This simple program repeatedly (at 1-second intervals) executes the shell command given on the command line and displays the output (or as much of it as fits on the screen). It uses curses to paint each new output on top of the old output, so that if nothing changes, the screen doesn't change. This is handy to watch for changes in e.g. a directory or process listing. To end, hit Control-C. iNcCsVtjds"tGHtjdndjtjd}tj|d}|j}|j}|rtj dI|IJtj|nt j }zxt rB|j y|j|Wnt jk rnX|jtjdtj|d}|j}|j}|rtj dI|IJtj|qqWWdt jXdS(Niit trs Exit code:(tsystargvt__doc__texittjointostpopentreadtclosetstderrtcursestinitscrtTrueterasetaddstrterrortrefreshttimetsleeptendwin(tcmdtpttexttststw((s*/usr/lib64/python2.7/Demo/curses/repeat.pytmains6          (RRRRR R(((s*/usr/lib64/python2.7/Demo/curses/repeat.pyt s      PK]@@ tclock.pyonu[ Afc@sfddlTddlZddlZdZdZdZdZdZdZej edS( i(t*Ng@cCs|dkrdSdS(Niii((t_x((s*/usr/lib64/python2.7/Demo/curses/tclock.pytsign s cCs:ttt|t|tt|t|fS(N(tinttroundtASPECTtsintcos(tangletradius((s*/usr/lib64/python2.7/Demo/curses/tclock.pytA2XYscCstj|||dS(N(tstdscrtaddch(txtytcol((s*/usr/lib64/python2.7/Demo/curses/tclock.pytplotscCsttjr%tjtj|n||}||}t|d}t|d} t|} t|} |} |} || kr| |d}xtrt| | || |krdS|dkr| | 7} ||8}n| | 7} || 7}qWnr|| d}xatrot| | || |kr5dS|dkrX| | 7} || 8}n| | 7} ||7}qWdS(Nii( tcursest has_colorsR tattrsett color_pairtabsRtTrueR(tpairtfrom_xtfrom_ytx2ty2tchtdxtdytaxtaytsxtsyR Rtd((s*/usr/lib64/python2.7/Demo/curses/tclock.pytdlines>                  cCs$|ad}tj}tjdtjdtjrtjdtj|tjdtj|tjdtj |ntj dd}tj d}t |dt |td}d|d}|d}d|d}xetdd D]T} | dd td } t| |\} } tj|| || d | dqWtjddd t|dd}xtrtjdtj} tj| }|d|dd}|d kr|d 8}n|ddtd}t||\}}|dtd }t||\}}|ddtd} t| |\} } td||||||tdtjtjtd||||||tdtjtjtjrtjtjdnt|| || tdtjr&tjtjdntjtj ddtj| tj |dddkr|d|kr|d}tj!ntj"}|tdkrdSt|| || tdtd||||||tdtd||||||tdqvWdS(Niiiiiiiii g@g(@s%ds5ASCII Clock by Howard Jones , 1994iigN@t#t.tOtqt (#R Rt COLOR_BLACKtnodelayttimeoutRt init_pairt COLOR_REDt COLOR_MAGENTAt COLOR_GREENtCOLStLINEStminRRtrangetpiR taddstrtmaxRtnapmsttimet localtimeR$tordRt A_REVERSEtattroffRRtctimetrefreshtbeeptgetch(twintlastbeeptmy_bgtcxtcyRtmradiusthradiustsradiustitsangletsdxtsdyttimttthourstmangletmdxtmdythanglethdxthdy((s*/usr/lib64/python2.7/Demo/curses/tclock.pytmainCsn     ! '      ''  # $   '( tmathRR9RRR RR$RWtwrapper(((s*/usr/lib64/python2.7/Demo/curses/tclock.pyts     + PPK]cQ ncurses.pycnu[ Afc@sxddlZddlmZddZdZdZdZdZdZd Z d Z ej e dS( iN(tpanelcCs|dkrt}n|jS(N(tNonetstdscrtgetch(twin((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwGetchar s cCs tdS(N(R(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytGetcharscCs'tdkrtn tjtdS(Ni(tnap_msecRtcursestnapms(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt wait_a_whiles  cCs2tjtjddtjtj|dS(Nii(RtmoveRtLINEStclrtoeoltaddstr(ttext((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytsaywhats c Cstj||||}tj|}tjr|tjkrNtj}n tj}|}tj||||j t dtj |n|j t dtj |S(Nt ( RtnewwinRt new_panelt has_colorst COLOR_BLUEt COLOR_WHITEt COLOR_BLACKt init_pairtbkgdsettordt color_pairtA_BOLD( tcolortrowstcolsttlyttlxRtpantfgtbg((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytmkpanel s   "cCstjtjdS(N(Rt update_panelsRtdoupdate(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytpflush0s cCs|j}|jd}|jdd|jd||j|j|j\}}xVtd|dD]A}x8td|dD]#}|j|||j|qWqwWdS(Nis-pan%c-i( twindowtuserptrR RR tboxtgetmaxyxtrangetaddch(R"Rtnumtmaxytmaxxtytx((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt fill_panel4s   c Cs6|adaddddddgatjxTtdtjdD]<}x3tdtjD]}tjd ||d q^WqEWxtddD]}t tj tjd d tjd ddd}|j d t tj tjd dtjdtjdtjd }|j dt tj tjdtjd tjd tjd}|j dt tjtjd d tjd tjd d tjd}|j dt tjtjd d tjd tjd tjd d }|j dt|t|t|t|t||j|jttdttd|jdd|j|j|j|j|jtttd|jtttd|jtttd|jtjddtjd tttd|jtttd|jtjddtjdtttd|jtttd|jtttd |jtttd!|jtttd"|jtttd#|jtttd!|jtttd$|jttxDtdd%D]3}|j} |j} td&| jtjd d| jt||jtjd%|tjd | jtjd%d| jt|tttd'| jtjd%d| jt||jtjdd|d d%| jtjd d| jt|ttqWtd&|jtjd%|dtjd tttd(|jtttd#|jtttd"|jtttd)~tttd*|jtttd+~tttd,~tttd-~tttdkr(Pnd.aqWdS(/NittesttTESTs(**)s*()*s<-->tLASTis%di iitp1iitp2i tp3itp4tp5spress any key to continues(h3 s1 s2 s4 s5;press any key to continuess1; press any key to continuess2; press any key to continuesm2; press any key to continuess3; press any key to continuesm3; press any key to continueisb3; press any key to continuess4; press any key to continuess5; press any key to continuest3; press any key to continuest1; press any key to continuest2; press any key to continuest4; press any key to continueism4; press any key to continuesm5; press any key to continuest5; press any key to continuesd2; press any key to continuesh3; press any key to continuesd1; press any key to continuesd4; press any key to continuesd5; press any key to continueid(RRtmodtrefreshR-RR tCOLSRR%t COLOR_REDt set_userptrt COLOR_GREENt COLOR_YELLOWRt COLOR_MAGENTAR4thideR(RR R tshowtbottomttopR)( RR2R3R8R9R:R;R<titmptw4tw5((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt demo_panelsCsN !                                      "   "                   " #  &             ( RRRRRR RR%R(R4RLtwrapper(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyts         PK]lҗ repeat.pynuȯ#! /usr/bin/python2.7 """repeat This simple program repeatedly (at 1-second intervals) executes the shell command given on the command line and displays the output (or as much of it as fits on the screen). It uses curses to paint each new output on top of the old output, so that if nothing changes, the screen doesn't change. This is handy to watch for changes in e.g. a directory or process listing. To end, hit Control-C. """ # Author: Guido van Rossum # Disclaimer: there's a Linux program named 'watch' that does the same # thing. Honestly, I didn't know of its existence when I wrote this! # To do: add features until it has the same functionality as watch(1); # then compare code size and development time. import os import sys import time import curses def main(): if not sys.argv[1:]: print __doc__ sys.exit(0) cmd = " ".join(sys.argv[1:]) p = os.popen(cmd, "r") text = p.read() sts = p.close() if sts: print >>sys.stderr, "Exit code:", sts sys.exit(sts) w = curses.initscr() try: while True: w.erase() try: w.addstr(text) except curses.error: pass w.refresh() time.sleep(1) p = os.popen(cmd, "r") text = p.read() sts = p.close() if sts: print >>sys.stderr, "Exit code:", sts sys.exit(sts) finally: curses.endwin() main() PK]cQ ncurses.pyonu[ Afc@sxddlZddlmZddZdZdZdZdZdZd Z d Z ej e dS( iN(tpanelcCs|dkrt}n|jS(N(tNonetstdscrtgetch(twin((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwGetchar s cCs tdS(N(R(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytGetcharscCs'tdkrtn tjtdS(Ni(tnap_msecRtcursestnapms(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt wait_a_whiles  cCs2tjtjddtjtj|dS(Nii(RtmoveRtLINEStclrtoeoltaddstr(ttext((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytsaywhats c Cstj||||}tj|}tjr|tjkrNtj}n tj}|}tj||||j t dtj |n|j t dtj |S(Nt ( RtnewwinRt new_panelt has_colorst COLOR_BLUEt COLOR_WHITEt COLOR_BLACKt init_pairtbkgdsettordt color_pairtA_BOLD( tcolortrowstcolsttlyttlxRtpantfgtbg((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytmkpanel s   "cCstjtjdS(N(Rt update_panelsRtdoupdate(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytpflush0s cCs|j}|jd}|jdd|jd||j|j|j\}}xVtd|dD]A}x8td|dD]#}|j|||j|qWqwWdS(Nis-pan%c-i( twindowtuserptrR RR tboxtgetmaxyxtrangetaddch(R"Rtnumtmaxytmaxxtytx((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt fill_panel4s   c Cs6|adaddddddgatjxTtdtjdD]<}x3tdtjD]}tjd ||d q^WqEWxtddD]}t tj tjd d tjd ddd}|j d t tj tjd dtjdtjdtjd }|j dt tj tjdtjd tjd tjd}|j dt tjtjd d tjd tjd d tjd}|j dt tjtjd d tjd tjd tjd d }|j dt|t|t|t|t||j|jttdttd|jdd|j|j|j|j|jtttd|jtttd|jtttd|jtjddtjd tttd|jtttd|jtjddtjdtttd|jtttd|jtttd |jtttd!|jtttd"|jtttd#|jtttd!|jtttd$|jttxDtdd%D]3}|j} |j} td&| jtjd d| jt||jtjd%|tjd | jtjd%d| jt|tttd'| jtjd%d| jt||jtjdd|d d%| jtjd d| jt|ttqWtd&|jtjd%|dtjd tttd(|jtttd#|jtttd"|jtttd)~tttd*|jtttd+~tttd,~tttd-~tttdkr(Pnd.aqWdS(/NittesttTESTs(**)s*()*s<-->tLASTis%di iitp1iitp2i tp3itp4tp5spress any key to continues(h3 s1 s2 s4 s5;press any key to continuess1; press any key to continuess2; press any key to continuesm2; press any key to continuess3; press any key to continuesm3; press any key to continueisb3; press any key to continuess4; press any key to continuess5; press any key to continuest3; press any key to continuest1; press any key to continuest2; press any key to continuest4; press any key to continueism4; press any key to continuesm5; press any key to continuest5; press any key to continuesd2; press any key to continuesh3; press any key to continuesd1; press any key to continuesd4; press any key to continuesd5; press any key to continueid(RRtmodtrefreshR-RR tCOLSRR%t COLOR_REDt set_userptrt COLOR_GREENt COLOR_YELLOWRt COLOR_MAGENTAR4thideR(RR R tshowtbottomttopR)( RR2R3R8R9R:R;R<titmptw4tw5((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt demo_panelsCsN !                                      "   "                   " #  &             ( RRRRRR RR%R(R4RLtwrapper(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyts         PK]٪  tclock.pynuȯ#! /usr/bin/python2.7 # # $Id$ # # From tclock.c, Copyright Howard Jones , September 1994. from math import * import curses, time ASPECT = 2.2 def sign(_x): if _x < 0: return -1 return 1 def A2XY(angle, radius): return (int(round(ASPECT * radius * sin(angle))), int(round(radius * cos(angle)))) def plot(x, y, col): stdscr.addch(y, x, col) # draw a diagonal line using Bresenham's algorithm def dline(pair, from_x, from_y, x2, y2, ch): if curses.has_colors(): stdscr.attrset(curses.color_pair(pair)) dx = x2 - from_x dy = y2 - from_y ax = abs(dx * 2) ay = abs(dy * 2) sx = sign(dx) sy = sign(dy) x = from_x y = from_y if ax > ay: d = ay - ax // 2 while True: plot(x, y, ch) if x == x2: return if d >= 0: y += sy d -= ax x += sx d += ay else: d = ax - ay // 2 while True: plot(x, y, ch) if y == y2: return if d >= 0: x += sx d -= ay y += sy d += ax def main(win): global stdscr stdscr = win lastbeep = -1 my_bg = curses.COLOR_BLACK stdscr.nodelay(1) stdscr.timeout(0) # curses.curs_set(0) if curses.has_colors(): curses.init_pair(1, curses.COLOR_RED, my_bg) curses.init_pair(2, curses.COLOR_MAGENTA, my_bg) curses.init_pair(3, curses.COLOR_GREEN, my_bg) cx = (curses.COLS - 1) // 2 cy = curses.LINES // 2 ch = min( cy-1, int(cx // ASPECT) - 1) mradius = (3 * ch) // 4 hradius = ch // 2 sradius = 5 * ch // 6 for i in range(0, 12): sangle = (i + 1) * 2.0 * pi / 12.0 sdx, sdy = A2XY(sangle, sradius) stdscr.addstr(cy - sdy, cx + sdx, "%d" % (i + 1)) stdscr.addstr(0, 0, "ASCII Clock by Howard Jones , 1994") sradius = max(sradius-4, 8) while True: curses.napms(1000) tim = time.time() t = time.localtime(tim) hours = t[3] + t[4] / 60.0 if hours > 12.0: hours -= 12.0 mangle = t[4] * 2 * pi / 60.0 mdx, mdy = A2XY(mangle, mradius) hangle = hours * 2 * pi / 12.0 hdx, hdy = A2XY(hangle, hradius) sangle = t[5] * 2 * pi / 60.0 sdx, sdy = A2XY(sangle, sradius) dline(3, cx, cy, cx + mdx, cy - mdy, ord('#')) stdscr.attrset(curses.A_REVERSE) dline(2, cx, cy, cx + hdx, cy - hdy, ord('.')) stdscr.attroff(curses.A_REVERSE) if curses.has_colors(): stdscr.attrset(curses.color_pair(1)) plot(cx + sdx, cy - sdy, ord('O')) if curses.has_colors(): stdscr.attrset(curses.color_pair(0)) stdscr.addstr(curses.LINES - 2, 0, time.ctime(tim)) stdscr.refresh() if (t[5] % 5) == 0 and t[5] != lastbeep: lastbeep = t[5] curses.beep() ch = stdscr.getch() if ch == ord('q'): return 0 plot(cx + sdx, cy - sdy, ord(' ')) dline(0, cx, cy, cx + hdx, cy - hdy, ord(' ')) dline(0, cx, cy, cx + mdx, cy - mdy, ord(' ')) curses.wrapper(main) PK] fcfcxmas.pynu[# asciixmas # December 1989 Larry Bartz Indianapolis, IN # # $Id$ # # I'm dreaming of an ascii character-based monochrome Christmas, # Just like the ones I used to know! # Via a full duplex communications channel, # At 9600 bits per second, # Even though it's kinda slow. # # I'm dreaming of an ascii character-based monochrome Christmas, # With ev'ry C program I write! # May your screen be merry and bright! # And may all your Christmases be amber or green, # (for reduced eyestrain and improved visibility)! # # # Notes on the Python version: # I used a couple of `try...except curses.error' to get around some functions # returning ERR. The errors come from using wrapping functions to fill # windows to the last character cell. The C version doesn't have this problem, # it simply ignores any return values. # import curses import sys FROMWHO = "Thomas Gellekum " def set_color(win, color): if curses.has_colors(): n = color + 1 curses.init_pair(n, color, my_bg) win.attroff(curses.A_COLOR) win.attron(curses.color_pair(n)) def unset_color(win): if curses.has_colors(): win.attrset(curses.color_pair(0)) def look_out(msecs): curses.napms(msecs) if stdscr.getch() != -1: curses.beep() sys.exit(0) def boxit(): for y in range(0, 20): stdscr.addch(y, 7, ord('|')) for x in range(8, 80): stdscr.addch(19, x, ord('_')) for x in range(0, 80): stdscr.addch(22, x, ord('_')) return def seas(): stdscr.addch(4, 1, ord('S')) stdscr.addch(6, 1, ord('E')) stdscr.addch(8, 1, ord('A')) stdscr.addch(10, 1, ord('S')) stdscr.addch(12, 1, ord('O')) stdscr.addch(14, 1, ord('N')) stdscr.addch(16, 1, ord("'")) stdscr.addch(18, 1, ord('S')) return def greet(): stdscr.addch(3, 5, ord('G')) stdscr.addch(5, 5, ord('R')) stdscr.addch(7, 5, ord('E')) stdscr.addch(9, 5, ord('E')) stdscr.addch(11, 5, ord('T')) stdscr.addch(13, 5, ord('I')) stdscr.addch(15, 5, ord('N')) stdscr.addch(17, 5, ord('G')) stdscr.addch(19, 5, ord('S')) return def fromwho(): stdscr.addstr(21, 13, FROMWHO) return def tree(): set_color(treescrn, curses.COLOR_GREEN) treescrn.addch(1, 11, ord('/')) treescrn.addch(2, 11, ord('/')) treescrn.addch(3, 10, ord('/')) treescrn.addch(4, 9, ord('/')) treescrn.addch(5, 9, ord('/')) treescrn.addch(6, 8, ord('/')) treescrn.addch(7, 7, ord('/')) treescrn.addch(8, 6, ord('/')) treescrn.addch(9, 6, ord('/')) treescrn.addch(10, 5, ord('/')) treescrn.addch(11, 3, ord('/')) treescrn.addch(12, 2, ord('/')) treescrn.addch(1, 13, ord('\\')) treescrn.addch(2, 13, ord('\\')) treescrn.addch(3, 14, ord('\\')) treescrn.addch(4, 15, ord('\\')) treescrn.addch(5, 15, ord('\\')) treescrn.addch(6, 16, ord('\\')) treescrn.addch(7, 17, ord('\\')) treescrn.addch(8, 18, ord('\\')) treescrn.addch(9, 18, ord('\\')) treescrn.addch(10, 19, ord('\\')) treescrn.addch(11, 21, ord('\\')) treescrn.addch(12, 22, ord('\\')) treescrn.addch(4, 10, ord('_')) treescrn.addch(4, 14, ord('_')) treescrn.addch(8, 7, ord('_')) treescrn.addch(8, 17, ord('_')) treescrn.addstr(13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\") treescrn.addstr(14, 11, "| |") treescrn.addstr(15, 11, "|_|") unset_color(treescrn) treescrn.refresh() w_del_msg.refresh() return def balls(): treescrn.overlay(treescrn2) set_color(treescrn2, curses.COLOR_BLUE) treescrn2.addch(3, 9, ord('@')) treescrn2.addch(3, 15, ord('@')) treescrn2.addch(4, 8, ord('@')) treescrn2.addch(4, 16, ord('@')) treescrn2.addch(5, 7, ord('@')) treescrn2.addch(5, 17, ord('@')) treescrn2.addch(7, 6, ord('@')) treescrn2.addch(7, 18, ord('@')) treescrn2.addch(8, 5, ord('@')) treescrn2.addch(8, 19, ord('@')) treescrn2.addch(10, 4, ord('@')) treescrn2.addch(10, 20, ord('@')) treescrn2.addch(11, 2, ord('@')) treescrn2.addch(11, 22, ord('@')) treescrn2.addch(12, 1, ord('@')) treescrn2.addch(12, 23, ord('@')) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def star(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_YELLOW) treescrn2.addch(0, 12, ord('*')) treescrn2.standend() unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng1(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(3, 13, ord('\'')) treescrn2.addch(3, 12, ord(':')) treescrn2.addch(3, 11, ord('.')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng2(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(5, 14, ord('\'')) treescrn2.addch(5, 13, ord(':')) treescrn2.addch(5, 12, ord('.')) treescrn2.addch(5, 11, ord(',')) treescrn2.addch(6, 10, ord('\'')) treescrn2.addch(6, 9, ord(':')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng3(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(7, 16, ord('\'')) treescrn2.addch(7, 15, ord(':')) treescrn2.addch(7, 14, ord('.')) treescrn2.addch(7, 13, ord(',')) treescrn2.addch(8, 12, ord('\'')) treescrn2.addch(8, 11, ord(':')) treescrn2.addch(8, 10, ord('.')) treescrn2.addch(8, 9, ord(',')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng4(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(9, 17, ord('\'')) treescrn2.addch(9, 16, ord(':')) treescrn2.addch(9, 15, ord('.')) treescrn2.addch(9, 14, ord(',')) treescrn2.addch(10, 13, ord('\'')) treescrn2.addch(10, 12, ord(':')) treescrn2.addch(10, 11, ord('.')) treescrn2.addch(10, 10, ord(',')) treescrn2.addch(11, 9, ord('\'')) treescrn2.addch(11, 8, ord(':')) treescrn2.addch(11, 7, ord('.')) treescrn2.addch(11, 6, ord(',')) treescrn2.addch(12, 5, ord('\'')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng5(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(11, 19, ord('\'')) treescrn2.addch(11, 18, ord(':')) treescrn2.addch(11, 17, ord('.')) treescrn2.addch(11, 16, ord(',')) treescrn2.addch(12, 15, ord('\'')) treescrn2.addch(12, 14, ord(':')) treescrn2.addch(12, 13, ord('.')) treescrn2.addch(12, 12, ord(',')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) # save a fully lit tree treescrn2.overlay(treescrn) treescrn2.refresh() w_del_msg.refresh() return def blinkit(): treescrn8.touchwin() for cycle in range(5): if cycle == 0: treescrn3.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 1: treescrn4.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 2: treescrn5.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 3: treescrn6.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 4: treescrn7.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break treescrn8.touchwin() # ALL ON treescrn.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() return def deer_step(win, y, x): win.mvwin(y, x) win.refresh() w_del_msg.refresh() look_out(5) def reindeer(): y_pos = 0 for x_pos in range(70, 62, -1): if x_pos < 66: y_pos = 1 for looper in range(0, 4): dotdeer0.addch(y_pos, x_pos, ord('.')) dotdeer0.refresh() w_del_msg.refresh() dotdeer0.erase() dotdeer0.refresh() w_del_msg.refresh() look_out(50) y_pos = 2 for x_pos in range(x_pos - 1, 50, -1): for looper in range(0, 4): if x_pos < 56: y_pos = 3 try: stardeer0.addch(y_pos, x_pos, ord('*')) except curses.error: pass stardeer0.refresh() w_del_msg.refresh() stardeer0.erase() stardeer0.refresh() w_del_msg.refresh() else: dotdeer0.addch(y_pos, x_pos, ord('*')) dotdeer0.refresh() w_del_msg.refresh() dotdeer0.erase() dotdeer0.refresh() w_del_msg.refresh() x_pos = 58 for y_pos in range(2, 5): lildeer0.touchwin() lildeer0.refresh() w_del_msg.refresh() for looper in range(0, 4): deer_step(lildeer3, y_pos, x_pos) deer_step(lildeer2, y_pos, x_pos) deer_step(lildeer1, y_pos, x_pos) deer_step(lildeer2, y_pos, x_pos) deer_step(lildeer3, y_pos, x_pos) lildeer0.touchwin() lildeer0.refresh() w_del_msg.refresh() x_pos -= 2 x_pos = 35 for y_pos in range(5, 10): middeer0.touchwin() middeer0.refresh() w_del_msg.refresh() for looper in range(2): deer_step(middeer3, y_pos, x_pos) deer_step(middeer2, y_pos, x_pos) deer_step(middeer1, y_pos, x_pos) deer_step(middeer2, y_pos, x_pos) deer_step(middeer3, y_pos, x_pos) middeer0.touchwin() middeer0.refresh() w_del_msg.refresh() x_pos -= 3 look_out(300) y_pos = 1 for x_pos in range(8, 16): deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer1, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer0, y_pos, x_pos) x_pos -= 1 for looper in range(0, 6): deer_step(lookdeer4, y_pos, x_pos) deer_step(lookdeer3, y_pos, x_pos) deer_step(lookdeer2, y_pos, x_pos) deer_step(lookdeer1, y_pos, x_pos) deer_step(lookdeer2, y_pos, x_pos) deer_step(lookdeer3, y_pos, x_pos) deer_step(lookdeer4, y_pos, x_pos) deer_step(lookdeer0, y_pos, x_pos) for y_pos in range(y_pos, 10): for looper in range(0, 2): deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer1, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer0, y_pos, x_pos) y_pos -= 1 deer_step(lookdeer3, y_pos, x_pos) return def main(win): global stdscr stdscr = win global my_bg, y_pos, x_pos global treescrn, treescrn2, treescrn3, treescrn4 global treescrn5, treescrn6, treescrn7, treescrn8 global dotdeer0, stardeer0 global lildeer0, lildeer1, lildeer2, lildeer3 global middeer0, middeer1, middeer2, middeer3 global bigdeer0, bigdeer1, bigdeer2, bigdeer3, bigdeer4 global lookdeer0, lookdeer1, lookdeer2, lookdeer3, lookdeer4 global w_holiday, w_del_msg my_bg = curses.COLOR_BLACK # curses.curs_set(0) treescrn = curses.newwin(16, 27, 3, 53) treescrn2 = curses.newwin(16, 27, 3, 53) treescrn3 = curses.newwin(16, 27, 3, 53) treescrn4 = curses.newwin(16, 27, 3, 53) treescrn5 = curses.newwin(16, 27, 3, 53) treescrn6 = curses.newwin(16, 27, 3, 53) treescrn7 = curses.newwin(16, 27, 3, 53) treescrn8 = curses.newwin(16, 27, 3, 53) dotdeer0 = curses.newwin(3, 71, 0, 8) stardeer0 = curses.newwin(4, 56, 0, 8) lildeer0 = curses.newwin(7, 53, 0, 8) lildeer1 = curses.newwin(2, 4, 0, 0) lildeer2 = curses.newwin(2, 4, 0, 0) lildeer3 = curses.newwin(2, 4, 0, 0) middeer0 = curses.newwin(15, 42, 0, 8) middeer1 = curses.newwin(3, 7, 0, 0) middeer2 = curses.newwin(3, 7, 0, 0) middeer3 = curses.newwin(3, 7, 0, 0) bigdeer0 = curses.newwin(10, 23, 0, 0) bigdeer1 = curses.newwin(10, 23, 0, 0) bigdeer2 = curses.newwin(10, 23, 0, 0) bigdeer3 = curses.newwin(10, 23, 0, 0) bigdeer4 = curses.newwin(10, 23, 0, 0) lookdeer0 = curses.newwin(10, 25, 0, 0) lookdeer1 = curses.newwin(10, 25, 0, 0) lookdeer2 = curses.newwin(10, 25, 0, 0) lookdeer3 = curses.newwin(10, 25, 0, 0) lookdeer4 = curses.newwin(10, 25, 0, 0) w_holiday = curses.newwin(1, 27, 3, 27) w_del_msg = curses.newwin(1, 20, 23, 60) try: w_del_msg.addstr(0, 0, "Hit any key to quit") except curses.error: pass try: w_holiday.addstr(0, 0, "H A P P Y H O L I D A Y S") except curses.error: pass # set up the windows for our various reindeer lildeer1.addch(0, 0, ord('V')) lildeer1.addch(1, 0, ord('@')) lildeer1.addch(1, 1, ord('<')) lildeer1.addch(1, 2, ord('>')) try: lildeer1.addch(1, 3, ord('~')) except curses.error: pass lildeer2.addch(0, 0, ord('V')) lildeer2.addch(1, 0, ord('@')) lildeer2.addch(1, 1, ord('|')) lildeer2.addch(1, 2, ord('|')) try: lildeer2.addch(1, 3, ord('~')) except curses.error: pass lildeer3.addch(0, 0, ord('V')) lildeer3.addch(1, 0, ord('@')) lildeer3.addch(1, 1, ord('>')) lildeer3.addch(1, 2, ord('<')) try: lildeer2.addch(1, 3, ord('~')) # XXX except curses.error: pass middeer1.addch(0, 2, ord('y')) middeer1.addch(0, 3, ord('y')) middeer1.addch(1, 2, ord('0')) middeer1.addch(1, 3, ord('(')) middeer1.addch(1, 4, ord('=')) middeer1.addch(1, 5, ord(')')) middeer1.addch(1, 6, ord('~')) middeer1.addch(2, 3, ord('\\')) middeer1.addch(2, 5, ord('/')) middeer2.addch(0, 2, ord('y')) middeer2.addch(0, 3, ord('y')) middeer2.addch(1, 2, ord('0')) middeer2.addch(1, 3, ord('(')) middeer2.addch(1, 4, ord('=')) middeer2.addch(1, 5, ord(')')) middeer2.addch(1, 6, ord('~')) middeer2.addch(2, 3, ord('|')) middeer2.addch(2, 5, ord('|')) middeer3.addch(0, 2, ord('y')) middeer3.addch(0, 3, ord('y')) middeer3.addch(1, 2, ord('0')) middeer3.addch(1, 3, ord('(')) middeer3.addch(1, 4, ord('=')) middeer3.addch(1, 5, ord(')')) middeer3.addch(1, 6, ord('~')) middeer3.addch(2, 3, ord('/')) middeer3.addch(2, 5, ord('\\')) bigdeer1.addch(0, 17, ord('\\')) bigdeer1.addch(0, 18, ord('/')) bigdeer1.addch(0, 19, ord('\\')) bigdeer1.addch(0, 20, ord('/')) bigdeer1.addch(1, 18, ord('\\')) bigdeer1.addch(1, 20, ord('/')) bigdeer1.addch(2, 19, ord('|')) bigdeer1.addch(2, 20, ord('_')) bigdeer1.addch(3, 18, ord('/')) bigdeer1.addch(3, 19, ord('^')) bigdeer1.addch(3, 20, ord('0')) bigdeer1.addch(3, 21, ord('\\')) bigdeer1.addch(4, 17, ord('/')) bigdeer1.addch(4, 18, ord('/')) bigdeer1.addch(4, 19, ord('\\')) bigdeer1.addch(4, 22, ord('\\')) bigdeer1.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer1.addstr(6, 7, "( \\_____( /") # )) bigdeer1.addstr(7, 8, "( ) /") bigdeer1.addstr(8, 9, "\\\\ /") bigdeer1.addstr(9, 11, "\\>/>") bigdeer2.addch(0, 17, ord('\\')) bigdeer2.addch(0, 18, ord('/')) bigdeer2.addch(0, 19, ord('\\')) bigdeer2.addch(0, 20, ord('/')) bigdeer2.addch(1, 18, ord('\\')) bigdeer2.addch(1, 20, ord('/')) bigdeer2.addch(2, 19, ord('|')) bigdeer2.addch(2, 20, ord('_')) bigdeer2.addch(3, 18, ord('/')) bigdeer2.addch(3, 19, ord('^')) bigdeer2.addch(3, 20, ord('0')) bigdeer2.addch(3, 21, ord('\\')) bigdeer2.addch(4, 17, ord('/')) bigdeer2.addch(4, 18, ord('/')) bigdeer2.addch(4, 19, ord('\\')) bigdeer2.addch(4, 22, ord('\\')) bigdeer2.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer2.addstr(6, 7, "(( )____( /") # )) bigdeer2.addstr(7, 7, "( / |") bigdeer2.addstr(8, 8, "\\/ |") bigdeer2.addstr(9, 9, "|> |>") bigdeer3.addch(0, 17, ord('\\')) bigdeer3.addch(0, 18, ord('/')) bigdeer3.addch(0, 19, ord('\\')) bigdeer3.addch(0, 20, ord('/')) bigdeer3.addch(1, 18, ord('\\')) bigdeer3.addch(1, 20, ord('/')) bigdeer3.addch(2, 19, ord('|')) bigdeer3.addch(2, 20, ord('_')) bigdeer3.addch(3, 18, ord('/')) bigdeer3.addch(3, 19, ord('^')) bigdeer3.addch(3, 20, ord('0')) bigdeer3.addch(3, 21, ord('\\')) bigdeer3.addch(4, 17, ord('/')) bigdeer3.addch(4, 18, ord('/')) bigdeer3.addch(4, 19, ord('\\')) bigdeer3.addch(4, 22, ord('\\')) bigdeer3.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer3.addstr(6, 6, "( ()_____( /") # )) bigdeer3.addstr(7, 6, "/ / /") bigdeer3.addstr(8, 5, "|/ \\") bigdeer3.addstr(9, 5, "/> \\>") bigdeer4.addch(0, 17, ord('\\')) bigdeer4.addch(0, 18, ord('/')) bigdeer4.addch(0, 19, ord('\\')) bigdeer4.addch(0, 20, ord('/')) bigdeer4.addch(1, 18, ord('\\')) bigdeer4.addch(1, 20, ord('/')) bigdeer4.addch(2, 19, ord('|')) bigdeer4.addch(2, 20, ord('_')) bigdeer4.addch(3, 18, ord('/')) bigdeer4.addch(3, 19, ord('^')) bigdeer4.addch(3, 20, ord('0')) bigdeer4.addch(3, 21, ord('\\')) bigdeer4.addch(4, 17, ord('/')) bigdeer4.addch(4, 18, ord('/')) bigdeer4.addch(4, 19, ord('\\')) bigdeer4.addch(4, 22, ord('\\')) bigdeer4.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer4.addstr(6, 6, "( )______( /") # ) bigdeer4.addstr(7, 5, "(/ \\") # ) bigdeer4.addstr(8, 0, "v___= ----^") lookdeer1.addstr(0, 16, "\\/ \\/") lookdeer1.addstr(1, 17, "\\Y/ \\Y/") lookdeer1.addstr(2, 19, "\\=/") lookdeer1.addstr(3, 17, "^\\o o/^") lookdeer1.addstr(4, 17, "//( )") lookdeer1.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer1.addstr(6, 7, "( \\_____( /") # )) lookdeer1.addstr(7, 8, "( ) /") lookdeer1.addstr(8, 9, "\\\\ /") lookdeer1.addstr(9, 11, "\\>/>") lookdeer2.addstr(0, 16, "\\/ \\/") lookdeer2.addstr(1, 17, "\\Y/ \\Y/") lookdeer2.addstr(2, 19, "\\=/") lookdeer2.addstr(3, 17, "^\\o o/^") lookdeer2.addstr(4, 17, "//( )") lookdeer2.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer2.addstr(6, 7, "(( )____( /") # )) lookdeer2.addstr(7, 7, "( / |") lookdeer2.addstr(8, 8, "\\/ |") lookdeer2.addstr(9, 9, "|> |>") lookdeer3.addstr(0, 16, "\\/ \\/") lookdeer3.addstr(1, 17, "\\Y/ \\Y/") lookdeer3.addstr(2, 19, "\\=/") lookdeer3.addstr(3, 17, "^\\o o/^") lookdeer3.addstr(4, 17, "//( )") lookdeer3.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer3.addstr(6, 6, "( ()_____( /") # )) lookdeer3.addstr(7, 6, "/ / /") lookdeer3.addstr(8, 5, "|/ \\") lookdeer3.addstr(9, 5, "/> \\>") lookdeer4.addstr(0, 16, "\\/ \\/") lookdeer4.addstr(1, 17, "\\Y/ \\Y/") lookdeer4.addstr(2, 19, "\\=/") lookdeer4.addstr(3, 17, "^\\o o/^") lookdeer4.addstr(4, 17, "//( )") lookdeer4.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer4.addstr(6, 6, "( )______( /") # ) lookdeer4.addstr(7, 5, "(/ \\") # ) lookdeer4.addstr(8, 0, "v___= ----^") ############################################### curses.cbreak() stdscr.nodelay(1) while 1: stdscr.clear() treescrn.erase() w_del_msg.touchwin() treescrn.touchwin() treescrn2.erase() treescrn2.touchwin() treescrn8.erase() treescrn8.touchwin() stdscr.refresh() look_out(150) boxit() stdscr.refresh() look_out(150) seas() stdscr.refresh() greet() stdscr.refresh() look_out(150) fromwho() stdscr.refresh() look_out(150) tree() look_out(150) balls() look_out(150) star() look_out(150) strng1() strng2() strng3() strng4() strng5() # set up the windows for our blinking trees # # treescrn3 treescrn.overlay(treescrn3) # balls treescrn3.addch(4, 18, ord(' ')) treescrn3.addch(7, 6, ord(' ')) treescrn3.addch(8, 19, ord(' ')) treescrn3.addch(11, 22, ord(' ')) # star treescrn3.addch(0, 12, ord('*')) # strng1 treescrn3.addch(3, 11, ord(' ')) # strng2 treescrn3.addch(5, 13, ord(' ')) treescrn3.addch(6, 10, ord(' ')) # strng3 treescrn3.addch(7, 16, ord(' ')) treescrn3.addch(7, 14, ord(' ')) # strng4 treescrn3.addch(10, 13, ord(' ')) treescrn3.addch(10, 10, ord(' ')) treescrn3.addch(11, 8, ord(' ')) # strng5 treescrn3.addch(11, 18, ord(' ')) treescrn3.addch(12, 13, ord(' ')) # treescrn4 treescrn.overlay(treescrn4) # balls treescrn4.addch(3, 9, ord(' ')) treescrn4.addch(4, 16, ord(' ')) treescrn4.addch(7, 6, ord(' ')) treescrn4.addch(8, 19, ord(' ')) treescrn4.addch(11, 2, ord(' ')) treescrn4.addch(12, 23, ord(' ')) # star treescrn4.standout() treescrn4.addch(0, 12, ord('*')) treescrn4.standend() # strng1 treescrn4.addch(3, 13, ord(' ')) # strng2 # strng3 treescrn4.addch(7, 15, ord(' ')) treescrn4.addch(8, 11, ord(' ')) # strng4 treescrn4.addch(9, 16, ord(' ')) treescrn4.addch(10, 12, ord(' ')) treescrn4.addch(11, 8, ord(' ')) # strng5 treescrn4.addch(11, 18, ord(' ')) treescrn4.addch(12, 14, ord(' ')) # treescrn5 treescrn.overlay(treescrn5) # balls treescrn5.addch(3, 15, ord(' ')) treescrn5.addch(10, 20, ord(' ')) treescrn5.addch(12, 1, ord(' ')) # star treescrn5.addch(0, 12, ord(' ')) # strng1 treescrn5.addch(3, 11, ord(' ')) # strng2 treescrn5.addch(5, 12, ord(' ')) # strng3 treescrn5.addch(7, 14, ord(' ')) treescrn5.addch(8, 10, ord(' ')) # strng4 treescrn5.addch(9, 15, ord(' ')) treescrn5.addch(10, 11, ord(' ')) treescrn5.addch(11, 7, ord(' ')) # strng5 treescrn5.addch(11, 17, ord(' ')) treescrn5.addch(12, 13, ord(' ')) # treescrn6 treescrn.overlay(treescrn6) # balls treescrn6.addch(6, 7, ord(' ')) treescrn6.addch(7, 18, ord(' ')) treescrn6.addch(10, 4, ord(' ')) treescrn6.addch(11, 23, ord(' ')) # star treescrn6.standout() treescrn6.addch(0, 12, ord('*')) treescrn6.standend() # strng1 # strng2 treescrn6.addch(5, 11, ord(' ')) # strng3 treescrn6.addch(7, 13, ord(' ')) treescrn6.addch(8, 9, ord(' ')) # strng4 treescrn6.addch(9, 14, ord(' ')) treescrn6.addch(10, 10, ord(' ')) treescrn6.addch(11, 6, ord(' ')) # strng5 treescrn6.addch(11, 16, ord(' ')) treescrn6.addch(12, 12, ord(' ')) # treescrn7 treescrn.overlay(treescrn7) # balls treescrn7.addch(3, 15, ord(' ')) treescrn7.addch(6, 7, ord(' ')) treescrn7.addch(7, 18, ord(' ')) treescrn7.addch(10, 4, ord(' ')) treescrn7.addch(11, 22, ord(' ')) # star treescrn7.addch(0, 12, ord('*')) # strng1 treescrn7.addch(3, 12, ord(' ')) # strng2 treescrn7.addch(5, 13, ord(' ')) treescrn7.addch(6, 9, ord(' ')) # strng3 treescrn7.addch(7, 15, ord(' ')) treescrn7.addch(8, 11, ord(' ')) # strng4 treescrn7.addch(9, 16, ord(' ')) treescrn7.addch(10, 12, ord(' ')) treescrn7.addch(11, 8, ord(' ')) # strng5 treescrn7.addch(11, 18, ord(' ')) treescrn7.addch(12, 14, ord(' ')) look_out(150) reindeer() w_holiday.touchwin() w_holiday.refresh() w_del_msg.refresh() look_out(500) for i in range(0, 20): blinkit() curses.wrapper(main) PK]2Olife.pyonu[ Afc@sddlZddlZddlZddlZdd dYZdZdZdZdZe dkrej endS( iNt LifeBoardcBsPeZdZeddZdZdZdZedZ dZ RS(sEncapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display t*cCs i|_||_|jj\}}|d|dd|_|_||_|jjd|jdd}|jjdd||jj|jdd|xUtd|jD]A}|jjd|dd|jjd||jddqW|jj dS(sCreate a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') iit+t-it|N( tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR R Rt border_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s    %cCsc|dks6|j|ks6|dks6|j|krLtd||fnd|j||ftboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloopsd                      "  " cCst|dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmainst__main__(( R+tstringt tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyts$ n   ?  PK]ϐrain.pyonu[ Afc@s?ddlZddlmZdZdZejedS(iN(t randrangecCss|dkrd}n |d8}tjrotdd}tj|}|r_|tjB}ntj|n|S(Niiii(tcursest has_colorsRt color_pairtA_BOLDtstdscrtattrset(tjtztcolor((s(/usr/lib64/python2.7/Demo/curses/rain.pytnext_j s    c Cs|atjrJtj}tjdtj|tjdtj|ntjtjtj dtj d}tj d}dg|}dg|}xHt dddD]4}t d|d||s   EPK] XA? ncurses.pynuȯ#! /usr/bin/python2.7 # # $Id$ # # (n)curses exerciser in Python, an interactive test for the curses # module. Currently, only the panel demos are ported. import curses from curses import panel def wGetchar(win = None): if win is None: win = stdscr return win.getch() def Getchar(): wGetchar() # # Panels tester # def wait_a_while(): if nap_msec == 1: Getchar() else: curses.napms(nap_msec) def saywhat(text): stdscr.move(curses.LINES - 1, 0) stdscr.clrtoeol() stdscr.addstr(text) def mkpanel(color, rows, cols, tly, tlx): win = curses.newwin(rows, cols, tly, tlx) pan = panel.new_panel(win) if curses.has_colors(): if color == curses.COLOR_BLUE: fg = curses.COLOR_WHITE else: fg = curses.COLOR_BLACK bg = color curses.init_pair(color, fg, bg) win.bkgdset(ord(' '), curses.color_pair(color)) else: win.bkgdset(ord(' '), curses.A_BOLD) return pan def pflush(): panel.update_panels() curses.doupdate() def fill_panel(pan): win = pan.window() num = pan.userptr()[1] win.move(1, 1) win.addstr("-pan%c-" % num) win.clrtoeol() win.box() maxy, maxx = win.getmaxyx() for y in range(2, maxy - 1): for x in range(1, maxx - 1): win.move(y, x) win.addch(num) def demo_panels(win): global stdscr, nap_msec, mod stdscr = win nap_msec = 1 mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"] stdscr.refresh() for y in range(0, curses.LINES - 1): for x in range(0, curses.COLS): stdscr.addstr("%d" % ((y + x) % 10)) for y in range(0, 1): p1 = mkpanel(curses.COLOR_RED, curses.LINES // 2 - 2, curses.COLS // 8 + 1, 0, 0) p1.set_userptr("p1") p2 = mkpanel(curses.COLOR_GREEN, curses.LINES // 2 + 1, curses.COLS // 7, curses.LINES // 4, curses.COLS // 10) p2.set_userptr("p2") p3 = mkpanel(curses.COLOR_YELLOW, curses.LINES // 4, curses.COLS // 10, curses.LINES // 2, curses.COLS // 9) p3.set_userptr("p3") p4 = mkpanel(curses.COLOR_BLUE, curses.LINES // 2 - 2, curses.COLS // 8, curses.LINES // 2 - 2, curses.COLS // 3) p4.set_userptr("p4") p5 = mkpanel(curses.COLOR_MAGENTA, curses.LINES // 2 - 2, curses.COLS // 8, curses.LINES // 2, curses.COLS // 2 - 2) p5.set_userptr("p5") fill_panel(p1) fill_panel(p2) fill_panel(p3) fill_panel(p4) fill_panel(p5) p4.hide() p5.hide() pflush() saywhat("press any key to continue") wait_a_while() saywhat("h3 s1 s2 s4 s5;press any key to continue") p1.move(0, 0) p3.hide() p1.show() p2.show() p4.show() p5.show() pflush() wait_a_while() saywhat("s1; press any key to continue") p1.show() pflush() wait_a_while() saywhat("s2; press any key to continue") p2.show() pflush() wait_a_while() saywhat("m2; press any key to continue") p2.move(curses.LINES // 3 + 1, curses.COLS // 8) pflush() wait_a_while() saywhat("s3; press any key to continue") p3.show() pflush() wait_a_while() saywhat("m3; press any key to continue") p3.move(curses.LINES // 4 + 1, curses.COLS // 15) pflush() wait_a_while() saywhat("b3; press any key to continue") p3.bottom() pflush() wait_a_while() saywhat("s4; press any key to continue") p4.show() pflush() wait_a_while() saywhat("s5; press any key to continue") p5.show() pflush() wait_a_while() saywhat("t3; press any key to continue") p3.top() pflush() wait_a_while() saywhat("t1; press any key to continue") p1.show() pflush() wait_a_while() saywhat("t2; press any key to continue") p2.show() pflush() wait_a_while() saywhat("t3; press any key to continue") p3.show() pflush() wait_a_while() saywhat("t4; press any key to continue") p4.show() pflush() wait_a_while() for itmp in range(0, 6): w4 = p4.window() w5 = p5.window() saywhat("m4; press any key to continue") w4.move(curses.LINES // 8, 1) w4.addstr(mod[itmp]) p4.move(curses.LINES // 6, itmp * curses.COLS // 8) w5.move(curses.LINES // 6, 1) w5.addstr(mod[itmp]) pflush() wait_a_while() saywhat("m5; press any key to continue") w4.move(curses.LINES // 6, 1) w4.addstr(mod[itmp]) p5.move(curses.LINES // 3 - 1, itmp * 10 + 6) w5.move(curses.LINES // 8, 1) w5.addstr(mod[itmp]) pflush() wait_a_while() saywhat("m4; press any key to continue") p4.move(curses.LINES // 6, (itmp + 1) * curses.COLS // 8) pflush() wait_a_while() saywhat("t5; press any key to continue") p5.top() pflush() wait_a_while() saywhat("t2; press any key to continue") p2.top() pflush() wait_a_while() saywhat("t1; press any key to continue") p1.top() pflush() wait_a_while() saywhat("d2; press any key to continue") del p2 pflush() wait_a_while() saywhat("h3; press any key to continue") p3.hide() pflush() wait_a_while() saywhat("d1; press any key to continue") del p1 pflush() wait_a_while() saywhat("d4; press any key to continue") del p4 pflush() wait_a_while() saywhat("d5; press any key to continue") del p5 pflush() wait_a_while() if nap_msec == 1: break nap_msec = 100 # # one fine day there'll be the menu at this place # curses.wrapper(demo_panels) PK]`gjMMxmas.pyonu[ ^c@sddlZddlZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdZejedS(iNs Thomas Gellekum cCsVtjrR|d}tj||t|jtj|jtj|ndS(Ni(tcursest has_colorst init_pairtmy_bgtattrofftA_COLORtattront color_pair(twintcolortn((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt set_colors   cCs)tjr%|jtjdndS(Ni(RRtattrsetR(R((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt unset_color&s cCs=tj|tjdkr9tjtjdndS(Nii(Rtnapmststdscrtgetchtbeeptsystexit(tmsecs((s(/usr/lib64/python2.7/Demo/curses/xmas.pytlook_out*s  cCsx0tddD]}tj|dtdqWx0tddD]}tjd|tdqCWx0tddD]}tjd |tdqvWdS( Niiit|iiPit_i(trangeRtaddchtord(tytx((s(/usr/lib64/python2.7/Demo/curses/xmas.pytboxit0scCstjddtdtjddtdtjddtdtjddtdtjd dtd tjd dtd tjd dtdtjddtddS(NiitSitEitAi i tOitNit'i(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytseas<scCstjddtdtjddtdtjddtdtjddtdtjddtd tjd dtd tjd dtd tjddtdtjddtddS(NiitGtRiRi i tTi tIiR"iiR(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytgreetHscCstjddtdS(Nii (RtaddstrtFROMWHO(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytfromwhoUscCs'tttjtjddtdtjddtdtjddtdtjddtdtjd dtdtjd d tdtjd d tdtjd d tdtjdd tdtjdd tdtjddtdtjd dtdtjddtdtjddtdtjddtdtjddtdtjd dtdtjd dtdtjd dtdtjd dtdtjddtdtjddtdtjddtdtjd dtdtjddtdtjddtdtjd d tdtjd dtdtjdddtjdddtjdddtttjt jdS(Nii t/iii ii iiiii i s\iiiiiiiiRis//////////// \\\\\\\\\\\\s| |s|_|( R ttreescrnRt COLOR_GREENRRR*R trefresht w_del_msg(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyttreeYsH   cCstjttttjtjddtdtjddtdtjddtdtjddtdtjdd tdtjdd tdtjd d tdtjd d tdtjddtdtjdd tdtjddtdtjddtdtjddtdtjddtdtjddtdtjddtdtttj t j dS(Nii t@iiiiiiiiiii ii iii ii( R.toverlayt treescrn2R Rt COLOR_BLUERRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytballss,    cCsltjtjtjBtttjtjddtdtj t ttj t j dS(Nii t*( R5R RtA_BOLDtA_BLINKR t COLOR_YELLOWRRtstandendR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstars    cCstjtjtjBtttjtjddtdtjddtdtjddtdtj tjtjBt ttj t j dS(Nii s'i t:i t.( R5R RR9R:R t COLOR_WHITERRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng1s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtj tjtjBt ttj t j dS( Niis'i R>i R?i t,ii i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng2s   cCs(tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd dtd tj tjtjBt ttj t j dS(Niis'iR>iR?i RBii i i i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng3s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tjd dtdtjd dtdtjd dtdtjd dtd tjd dtdtj tjtjBt ttj t j dS(Ni is'iR>iR?iRBi i i i iiii( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng4s(   cCs5tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tj tjtjBt ttj t tj tj dS(Ni is'iR>iR?iRBi iii (R5R RR9R:R R@RRRR R4R.R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng5s     cCsEtjxtdD]}|dkrNtjttjtjPn|dkrtjttjtjPn|dkrtjttjtjPnb|dkrt jttjtjPn1|dkrt jttjtjPntjqWt jttjtjdS(Niiiiii( t treescrn8ttouchwinRt treescrn3R4R0R1t treescrn4t treescrn5t treescrn6t treescrn7R.(tcycle((s(/usr/lib64/python2.7/Demo/curses/xmas.pytblinkits@                        cCs2|j|||jtjtddS(Ni(tmvwinR0R1R(RRR((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt deer_step7s  cCskd}xtdddD]}|dkr4d}nxltddD][}tj||tdtjtjtjtjtjtd qDWqWd }xt|dd dD]}xtddD]}|d kr[d }ytj||td Wnt j k r%nXtjtjtjtjtjqtj||td tjtjtjtjtjqWqWd}xtd dD]}t j t jtjxtddD]~}t t||t t||t t||t t||t t||t j t jtj|d 8}qWqWd}xtddD]}tj tjtjxtd D]~}t t||t t||t t||t t||t t||tj tjtj|d 8}qWqWtdd}xtddD]}t t||t t||t t||t t||t t||t t||t t||t t||qkW|d8}xtddD]v}t t||t t||t t||t t||t t||t t||t t||qWt t||xt|dD]}xtdd D]v}t t||t t||t t||t t||t t||t t||t t||qWt t||qW|d8}t t||dS(NiiFi>iiBiiR?i2ii8iR8i:ii#i i,iii(Rtdotdeer0RRR0R1teraseRt stardeer0Rterrortlildeer0RHRQtlildeer3tlildeer2tlildeer1tmiddeer0tmiddeer3tmiddeer2tmiddeer1tbigdeer4tbigdeer3tbigdeer2tbigdeer1tbigdeer0t lookdeer4t lookdeer3t lookdeer2t lookdeer1t lookdeer0(ty_postx_postlooper((s(/usr/lib64/python2.7/Demo/curses/xmas.pytreindeer=s                               cCs=|atjatjddddatjddddatjddddatjddddatjdddda tjdddda tjdddda tjdddda tjdddda tjdd ddatjd dddatjd dddatjd dddatjd dddatjd d ddatjdd ddatjdd ddatjdd ddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjdddda tjdddda!tjdddda"yt"j#dddWntj$k r nXyt!j#dddWntj$k r:nXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rjnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d#tj%d d t&d$tj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&dtj%d d t&dtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d$tj%d d t&d#tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d;tj#d d d<tj#ddd=tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:t j#ddd>t j#dd%d?t j#d d'd@t j#dd%dAt j#dd%dBt j#d d dCt j#d"d"d;t j#d d d<t j#ddd=tj'tj(dxtj)tj*t"j+tj+tj*tj+t j*t j+tj,t-dDt.tj,t-dDt/tj,t0tj,t-dDt1tj,t-dDt2t-dDt3t-dDt4t-dDt5t6t7t8t9tj:ttj%dd&t&dEtj%d d"t&dEtj%dd't&dEtj%d1d+t&dEtj%ddFt&dGtj%dd1t&dEtj%d dHt&dEtj%d"dt&dEtj%d dt&dEtj%d dIt&dEtj%ddHt&dEtj%ddt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdHt&dEtj:ttj%dd/t&dEtj%ddt&dEtj%d d"t&dEtj%dd't&dEtj%d1d t&dEtj%dFdt&dEtj;tj%ddFt&dGtj<tj%ddHt&dEtj%d d t&dEtj%dd1t&dEtj%d/dt&dEtj%ddFt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdIt&dEtj:t t j%dd t&dEt j%ddt&dEt j%dFdt&dEt j%ddFt&dEt j%dd1t&dEt j%d dFt&dEt j%d dIt&dEt j%ddt&dEt j%d/d t&dEt j%dd1t&dEt j%d1d t&dEt j%d1d%t&dEt j%dFdHt&dEtj:t t j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1dt&dEt j;t j%ddFt&dGt j<t j%d d1t&dEt j%d dHt&dEt j%dd/t&dEt j%d/dIt&dEt j%ddt&dEt j%d1d"t&dEt j%d1dt&dEt j%dFdFt&dEtj:t t j%dd t&dEt j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1d+t&dEt j%ddFt&dGt j%ddFt&dEt j%d dHt&dEt j%d"d/t&dEt j%d d t&dEt j%dd1t&dEt j%d/dt&dEt j%ddFt&dEt j%d1dt&dEt j%d1d&t&dEt j%dFdIt&dEt-dDt=t!j+t!j,t"j,t-dJxt>ddD] }t?q$WqNWdS(KNiiii5iGiiii8iiii*i iiiii<sHit any key to quitsH A P P Y H O L I D A Y StVR3tt~RRt0t(t=it)is\R-iiiRt^iis^~~~~~~~~// ~~Us ( \_____( /s( ) /i s\\ /i s\>/>s (( )____( /s( / |s\/ |s|> |>s ( ()_____( /s / / /s |/ \s/> \>s ( )______( /s (/ \sv___= ----^s \/ \/s\Y/ \Y/s\=/s^\o o/^s//( )s^~~~~~~~~// \O/it i R8i ii(@RRt COLOR_BLACKRtnewwinR.R5RIRJRKRLRMRGRRRTRVRYRXRWRZR]R\R[RbRaR`R_R^RgRfReRdRct w_holidayR1R*RURRtcbreaktnodelaytclearRSRHR0RRR$R)R,R2R7R=RARCRDRERFR4tstandoutR<RkRRO(Rti((s(/usr/lib64/python2.7/Demo/curses/xmas.pytmains                                     (RRR+R R RRR$R)R,R2R7R=RARCRDRERFRORQRkR~twrapper(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyts.       ,       '  z PK]`gjMMxmas.pycnu[ ^c@sddlZddlZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdZejedS(iNs Thomas Gellekum cCsVtjrR|d}tj||t|jtj|jtj|ndS(Ni(tcursest has_colorst init_pairtmy_bgtattrofftA_COLORtattront color_pair(twintcolortn((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt set_colors   cCs)tjr%|jtjdndS(Ni(RRtattrsetR(R((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt unset_color&s cCs=tj|tjdkr9tjtjdndS(Nii(Rtnapmststdscrtgetchtbeeptsystexit(tmsecs((s(/usr/lib64/python2.7/Demo/curses/xmas.pytlook_out*s  cCsx0tddD]}tj|dtdqWx0tddD]}tjd|tdqCWx0tddD]}tjd |tdqvWdS( Niiit|iiPit_i(trangeRtaddchtord(tytx((s(/usr/lib64/python2.7/Demo/curses/xmas.pytboxit0scCstjddtdtjddtdtjddtdtjddtdtjd dtd tjd dtd tjd dtdtjddtddS(NiitSitEitAi i tOitNit'i(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytseas<scCstjddtdtjddtdtjddtdtjddtdtjddtd tjd dtd tjd dtd tjddtdtjddtddS(NiitGtRiRi i tTi tIiR"iiR(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytgreetHscCstjddtdS(Nii (RtaddstrtFROMWHO(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytfromwhoUscCs'tttjtjddtdtjddtdtjddtdtjddtdtjd dtdtjd d tdtjd d tdtjd d tdtjdd tdtjdd tdtjddtdtjd dtdtjddtdtjddtdtjddtdtjddtdtjd dtdtjd dtdtjd dtdtjd dtdtjddtdtjddtdtjddtdtjd dtdtjddtdtjddtdtjd d tdtjd dtdtjdddtjdddtjdddtttjt jdS(Nii t/iii ii iiiii i s\iiiiiiiiRis//////////// \\\\\\\\\\\\s| |s|_|( R ttreescrnRt COLOR_GREENRRR*R trefresht w_del_msg(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyttreeYsH   cCstjttttjtjddtdtjddtdtjddtdtjddtdtjdd tdtjdd tdtjd d tdtjd d tdtjddtdtjdd tdtjddtdtjddtdtjddtdtjddtdtjddtdtjddtdtttj t j dS(Nii t@iiiiiiiiiii ii iii ii( R.toverlayt treescrn2R Rt COLOR_BLUERRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytballss,    cCsltjtjtjBtttjtjddtdtj t ttj t j dS(Nii t*( R5R RtA_BOLDtA_BLINKR t COLOR_YELLOWRRtstandendR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstars    cCstjtjtjBtttjtjddtdtjddtdtjddtdtj tjtjBt ttj t j dS(Nii s'i t:i t.( R5R RR9R:R t COLOR_WHITERRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng1s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtj tjtjBt ttj t j dS( Niis'i R>i R?i t,ii i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng2s   cCs(tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd dtd tj tjtjBt ttj t j dS(Niis'iR>iR?i RBii i i i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng3s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tjd dtdtjd dtdtjd dtdtjd dtd tjd dtdtj tjtjBt ttj t j dS(Ni is'iR>iR?iRBi i i i iiii( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng4s(   cCs5tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tj tjtjBt ttj t tj tj dS(Ni is'iR>iR?iRBi iii (R5R RR9R:R R@RRRR R4R.R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng5s     cCsEtjxtdD]}|dkrNtjttjtjPn|dkrtjttjtjPn|dkrtjttjtjPnb|dkrt jttjtjPn1|dkrt jttjtjPntjqWt jttjtjdS(Niiiiii( t treescrn8ttouchwinRt treescrn3R4R0R1t treescrn4t treescrn5t treescrn6t treescrn7R.(tcycle((s(/usr/lib64/python2.7/Demo/curses/xmas.pytblinkits@                        cCs2|j|||jtjtddS(Ni(tmvwinR0R1R(RRR((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt deer_step7s  cCskd}xtdddD]}|dkr4d}nxltddD][}tj||tdtjtjtjtjtjtd qDWqWd }xt|dd dD]}xtddD]}|d kr[d }ytj||td Wnt j k r%nXtjtjtjtjtjqtj||td tjtjtjtjtjqWqWd}xtd dD]}t j t jtjxtddD]~}t t||t t||t t||t t||t t||t j t jtj|d 8}qWqWd}xtddD]}tj tjtjxtd D]~}t t||t t||t t||t t||t t||tj tjtj|d 8}qWqWtdd}xtddD]}t t||t t||t t||t t||t t||t t||t t||t t||qkW|d8}xtddD]v}t t||t t||t t||t t||t t||t t||t t||qWt t||xt|dD]}xtdd D]v}t t||t t||t t||t t||t t||t t||t t||qWt t||qW|d8}t t||dS(NiiFi>iiBiiR?i2ii8iR8i:ii#i i,iii(Rtdotdeer0RRR0R1teraseRt stardeer0Rterrortlildeer0RHRQtlildeer3tlildeer2tlildeer1tmiddeer0tmiddeer3tmiddeer2tmiddeer1tbigdeer4tbigdeer3tbigdeer2tbigdeer1tbigdeer0t lookdeer4t lookdeer3t lookdeer2t lookdeer1t lookdeer0(ty_postx_postlooper((s(/usr/lib64/python2.7/Demo/curses/xmas.pytreindeer=s                               cCs=|atjatjddddatjddddatjddddatjddddatjdddda tjdddda tjdddda tjdddda tjdddda tjdd ddatjd dddatjd dddatjd dddatjd dddatjd d ddatjdd ddatjdd ddatjdd ddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjdddda tjdddda!tjdddda"yt"j#dddWntj$k r nXyt!j#dddWntj$k r:nXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rjnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d#tj%d d t&d$tj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&dtj%d d t&dtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d$tj%d d t&d#tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d;tj#d d d<tj#ddd=tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:t j#ddd>t j#dd%d?t j#d d'd@t j#dd%dAt j#dd%dBt j#d d dCt j#d"d"d;t j#d d d<t j#ddd=tj'tj(dxtj)tj*t"j+tj+tj*tj+t j*t j+tj,t-dDt.tj,t-dDt/tj,t0tj,t-dDt1tj,t-dDt2t-dDt3t-dDt4t-dDt5t6t7t8t9tj:ttj%dd&t&dEtj%d d"t&dEtj%dd't&dEtj%d1d+t&dEtj%ddFt&dGtj%dd1t&dEtj%d dHt&dEtj%d"dt&dEtj%d dt&dEtj%d dIt&dEtj%ddHt&dEtj%ddt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdHt&dEtj:ttj%dd/t&dEtj%ddt&dEtj%d d"t&dEtj%dd't&dEtj%d1d t&dEtj%dFdt&dEtj;tj%ddFt&dGtj<tj%ddHt&dEtj%d d t&dEtj%dd1t&dEtj%d/dt&dEtj%ddFt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdIt&dEtj:t t j%dd t&dEt j%ddt&dEt j%dFdt&dEt j%ddFt&dEt j%dd1t&dEt j%d dFt&dEt j%d dIt&dEt j%ddt&dEt j%d/d t&dEt j%dd1t&dEt j%d1d t&dEt j%d1d%t&dEt j%dFdHt&dEtj:t t j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1dt&dEt j;t j%ddFt&dGt j<t j%d d1t&dEt j%d dHt&dEt j%dd/t&dEt j%d/dIt&dEt j%ddt&dEt j%d1d"t&dEt j%d1dt&dEt j%dFdFt&dEtj:t t j%dd t&dEt j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1d+t&dEt j%ddFt&dGt j%ddFt&dEt j%d dHt&dEt j%d"d/t&dEt j%d d t&dEt j%dd1t&dEt j%d/dt&dEt j%ddFt&dEt j%d1dt&dEt j%d1d&t&dEt j%dFdIt&dEt-dDt=t!j+t!j,t"j,t-dJxt>ddD] }t?q$WqNWdS(KNiiii5iGiiii8iiii*i iiiii<sHit any key to quitsH A P P Y H O L I D A Y StVR3tt~RRt0t(t=it)is\R-iiiRt^iis^~~~~~~~~// ~~Us ( \_____( /s( ) /i s\\ /i s\>/>s (( )____( /s( / |s\/ |s|> |>s ( ()_____( /s / / /s |/ \s/> \>s ( )______( /s (/ \sv___= ----^s \/ \/s\Y/ \Y/s\=/s^\o o/^s//( )s^~~~~~~~~// \O/it i R8i ii(@RRt COLOR_BLACKRtnewwinR.R5RIRJRKRLRMRGRRRTRVRYRXRWRZR]R\R[RbRaR`R_R^RgRfReRdRct w_holidayR1R*RURRtcbreaktnodelaytclearRSRHR0RRR$R)R,R2R7R=RARCRDRERFR4tstandoutR<RkRRO(Rti((s(/usr/lib64/python2.7/Demo/curses/xmas.pytmains                                     (RRR+R R RRR$R)R,R2R7R=RARCRDRERFRORQRkR~twrapper(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyts.       ,       '  z PK]% repeat.pycnu[ Afc@sJdZddlZddlZddlZddlZdZedS(srepeat This simple program repeatedly (at 1-second intervals) executes the shell command given on the command line and displays the output (or as much of it as fits on the screen). It uses curses to paint each new output on top of the old output, so that if nothing changes, the screen doesn't change. This is handy to watch for changes in e.g. a directory or process listing. To end, hit Control-C. iNcCsVtjds"tGHtjdndjtjd}tj|d}|j}|j}|rtj dI|IJtj|nt j }zxt rB|j y|j|Wnt jk rnX|jtjdtj|d}|j}|j}|rtj dI|IJtj|qqWWdt jXdS(Niit trs Exit code:(tsystargvt__doc__texittjointostpopentreadtclosetstderrtcursestinitscrtTrueterasetaddstrterrortrefreshttimetsleeptendwin(tcmdtpttexttststw((s*/usr/lib64/python2.7/Demo/curses/repeat.pytmains6          (RRRRR R(((s*/usr/lib64/python2.7/Demo/curses/repeat.pyt s      PK[]E(__pycache__/textpad.cpython-38.opt-1.pycnu[PK[]# qww m__pycache__/ascii.cpython-38.pycnu[PK[]V&4'__pycache__/panel.cpython-38.opt-2.pycnu[PK[]*"'(__pycache__/has_key.cpython-38.pycnu[PK[]fTT)F:__pycache__/__init__.cpython-38.opt-2.pycnu[PK[]1^^#@__pycache__/__init__.cpython-38.pycnu[PK[]?ݺ(I__pycache__/textpad.cpython-38.opt-2.pycnu[PK[] &Z__pycache__/panel.cpython-38.opt-1.pycnu[PK[]# qww&.\__pycache__/ascii.cpython-38.opt-1.pycnu[PK[]p133&k__pycache__/ascii.cpython-38.opt-2.pycnu[PK[] {__pycache__/panel.cpython-38.pycnu[PK[]E"|__pycache__/textpad.cpython-38.pycnu[PK[]*(__pycache__/has_key.cpython-38.opt-2.pycnu[PK[]1^^)A__pycache__/__init__.cpython-38.opt-1.pycnu[PK[]*(__pycache__/has_key.cpython-38.opt-1.pycnu[PK[]oJJ textpad.pynu[PK[]xfWWpanel.pynu[PK[] 0has_key.pynu[PK[]LU lascii.pynu[PK[]_L() ) __init__.pynu[PK'[]=f+ * __pycache__/__init__.cpython-312.opt-1.pycnu[PK'[]'?__pycache__/panel.cpython-312.opt-1.pycnu[PK'[]z(z()__pycache__/has_key.cpython-312.opt-2.pycnu[PK'[]z(z()[C__pycache__/has_key.cpython-312.opt-1.pycnu[PK'[]q``'.l__pycache__/ascii.cpython-312.opt-2.pycnu[PK'[]*__pycache__/__init__.cpython-312.opt-2.pycnu[PK'[]>3'/__pycache__/ascii.cpython-312.opt-1.pycnu[PK'[]!&__pycache__/panel.cpython-312.pycnu[PK'[]W=//#i__pycache__/textpad.cpython-312.pycnu[PK'[]>3!w__pycache__/ascii.cpython-312.pycnu[PK'[]إ-'h__pycache__/panel.cpython-312.opt-2.pycnu[PK'[]W=//)q__pycache__/textpad.cpython-312.opt-1.pycnu[PK'[]=f+ $__pycache__/__init__.cpython-312.pycnu[PK'[]z(z(#__pycache__/has_key.cpython-312.pycnu[PK'[]>)))G__pycache__/textpad.cpython-312.opt-2.pycnu[PKl] q__init__.pycnu[PKl] w__init__.pyonu[PKl] m L~wrapper.pyonu[PKl]*44 Ihas_key.pycnu[PKl]*44 has_key.pyonu[PKl]v  'wrapper.pynu[PKl])x panel.pycnu[PKl] @ascii.pyonu[PKl] m wrapper.pycnu[PKl]|A9 textpad.pyonu[PKl] ascii.pycnu[PKl])x panel.pyonu[PKl]|A9 Etextpad.pycnu[PK/{]UT)o!__pycache__/__init__.cpython-36.opt-2.pycnu[PK/{]w &__pycache__/panel.cpython-36.pycnu[PK/{]T~R('__pycache__/has_key.cpython-36.opt-1.pycnu[PK/{]dQ'&8__pycache__/panel.cpython-36.opt-2.pycnu[PK/{]MA&9__pycache__/ascii.cpython-36.opt-2.pycnu[PK/{]T~R(I__pycache__/has_key.cpython-36.opt-2.pycnu[PK/{] ;t(Z__pycache__/textpad.cpython-36.opt-2.pycnu[PK/{]6=#ck__pycache__/__init__.cpython-36.pycnu[PK/{]6=)r__pycache__/__init__.cpython-36.opt-1.pycnu[PK/{]T~R"z__pycache__/has_key.cpython-36.pycnu[PK/{]EO(__pycache__/textpad.cpython-36.opt-1.pycnu[PK/{]w&X__pycache__/panel.cpython-36.opt-1.pycnu[PK/{]SS&__pycache__/ascii.cpython-36.opt-1.pycnu[PK/{]SS 0__pycache__/ascii.cpython-36.pycnu[PK/{]EO"__pycache__/textpad.cpython-36.pycnu[PK] c c ;rain.pynuȯPK]@@ tclock.pycnu[PK]2OOlife.pycnu[PK]ϐ rain.pycnu[PK]̥TT9READMEnu[PK]r;5life.pynuȯPK]% 6repeat.pyonu[PK]@@ <tclock.pyonu[PK]cQ Kncurses.pycnu[PK]lҗ  brepeat.pynuȯPK]cQ Dhncurses.pyonu[PK]٪  Ttclock.pynuȯPK] fcfcxmas.pynu[PK]2O-life.pyonu[PK]ϐ rain.pyonu[PK] XA? ncurses.pynuȯPK]`gjMMI.xmas.pyonu[PK]`gjMM|xmas.pycnu[PK]% repeat.pycnu[PKRR~