home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1993 #2
/
Image.iso
/
comm
/
mbbs25a4.zip
/
MACROPAK.MAC
< prev
next >
Wrap
Text File
|
1993-05-30
|
16KB
|
516 lines
MACROPAK.MAC 2.5 ALPHA
by Jeff Oberlee (C)opyright 1992,93
{:alr} {MACL MACROBBS.MAC,WF3} {:alu} {MACL MACROBBS.MAC,bbs}
{:esc_menu}
{IFCA ,ESM} {SEND ^J^M%an7%%an9%Time comes to a grinding halt! %an0}
{:ESM} {SETE-P0 ESM2} {SETV ch}
{PARM ,,,,0}
{INPU ch, PRESS: [ENTER] to CHAT, [U]seredit, [D]OS, [H]angup}
{COMP ch,h} {IFCO ESM4}
{COMP ch,d} {IFCO ESM5}
{COMP on,} {IFCO ESM}
{COMP ch,u} {IFCO ESM8}
{COMP ch,} {IFCO ,ESM}
{:ESM1} {COMP cf,} {IFCO CT8,ESM}
{:ESM2} {SETE-P0 esc_menu}
{IFCA ,ESM6} {SEND %an3%Then suddenly...} {PAUS 1}
{:ESM6} {RETURN}
{:ESM5} {SHEL} {GOTO ESM}
{:ESM8} {COMP login_name,} {IFCO ESM}
{SETV lname,%login_name} {INPU lname,EDIT: Handle (3-30 characters)}
{COMP lname,1} {IFCO-GE ESM8}
{LENG %lname} {COMP _len,3} {IFCO-L ESM8}
{LENG %lname} {COMP _len,30} {IFCO-G ESM8}
{:ESM10} {SETV ch,%al} {INPU ch,EDIT: Access Level (0-999)}
{COMP ch,999} {IFCO-G ESM10}
{:ESM9} {SETV temp,%pcpd} {INPU temp,EDIT: Time limit per Day/Call (D/C)}
{COMP temp,c} {IFCO ESM11}
{COMP temp,d} {IFCO ,ESM9}
{:ESM11}
{SETV al,%ch}
{SETV pcpd,%temp}
{SETV row,%_row} {SETV col,%_col} {DISP 2,2,0F,%an9 * Saving * }
{COMP lname,%login_name} {IFCO ESM7}
{SETV login_name,%lname}
{SETE time_out}
{CALL update_clist}
{:ESM7} {CALL write_user}
{DISP 2,2,07, }
{DISP %row,%col,,}
{SETV row} {SETV col} {SETV lname}
{GOTO ESM}
{:ESM4} {SETV s,2} {GOTO time_out}
{:chat}
{SETV temp,0} {SETV ccount,0}
{WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Chat request} {WCLO}
{SEND ^J^M^J%an4%Paging %sysop ...^J^M}
{SPOC n} {SEND %an3%Press %an0[ESC]%an3 then %an0[ENTER]%an3 to chat with%an7 %login_name %an3...^J^M} {SPOC y}
{:CT7} {INCR ccount} {SETV-S ch,an%ccount}
{SEND %ch█}
{SEND ^G} {SEND ^G} {SEND ^G} {PAUS 2}
{COMP ccount,5} {IFCO-G ,CT7}
{:CT6} {SETV chat,CHAT}
{SEND ^M%an0%Sorry, %sysop isn't around right now.^J^M}
{SEND %an0%However, the chat flag has been set.^J^M^J}
{GOTO CT9}
{:CT8} {SETV tl,%_ela}
{SETG 240,time_out}
{WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Started chat} {WCLO}
{COMP cb,y} {IFCO ,CT14}
{CAPT y,%datadir%CHAT.LOG}
{:CT14} {SEND ^J^M^J%an3%You've just entered . . . %an7%The Twilight Zone. %an3%Reality vanishes.^J^M}
{SEND %an2(Type "%an0%bye!%an2" on a blank line to exit when desired.)^J^M}
{SETV cf,1} {SETV co1,%an0} {SETV co2,%an3}
{SETE-P0 esc_menu}
{PUSH}
{:CT2} {COMP cf,1} {IFCO CT3}
{SEND %co2} {SETV cf,1} {GOTO CT4}
{:CT3} {SEND %co1} {SETV cf,2}
{:CT4} {SETV cline}
{:CT5} {SEND ^J}
{:CT13} {SEND ^M%cline}
{GETS-AH cline,78,CT2}
{COMP cline,/c} ......... {IFCO switch_c}
{COMP cline,bye!} ....... {IFCO CT1}
{COMP cline,bye!!} ...... {IFCO time_out}
{COMP cline,/scroll} .... {IFCO view_scroll}
{COMP cline,NO CARRIER} . {IFCO time_out}
{LENG %cline}
{COMP %_len,78} {IFCO-L CT4}
{SETV ccount,79}
{:CT11} {DECR ccount}
{COMP ccount,60} {IFCO-LE CT4}
{SUBS ch,%ccount,1,%cline}
{COMP ch, } {IFCO ,CT11}
{COMP ccount,78} {IFCO CT4}
{INCR ccount}
{SUBS cline,%ccount,100,%cline}
{:CT12} {COMP ccount,%_len} {IFCO-G CT5}
{SEND ^H ^H}
{INCR ccount}
{GOTO CT12}
{:CT1} {CAPT n}
{SETV ch,%_ela} {DECR ch,%tl} {INCR tlc,%ch} {SETV tl}
{SEND ^J^M^J%an3%You've just left . . . %an7%The Twilight Zone. %an3%Reality restored.^J^M^J}
{WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Ended chat} {WCLO}
{SETV cf} {SETV co1} {SETV co2} {SETV chat} {SETV cline}
{POPS}
{:CT9} {SETV ccount}
{SETE-P0 esc_menu}
{CALL press_any_key}
{RETURN}
{:switch_c}
{:SW1} {SEND ^M%an0(0 %an1%1 %an2%2 %an3%3 %an4%4 %an5%5 %an6%6 %an7%7%an0) ^H}
{GETS-H ch,1,SW1}
{COMP ch,0} {IFCO-L SW1}
{COMP ch,7} {IFCO-G SW1}
{SEND ^M ^M}
{COMP cf,1} {IFCO ,SW3}
{SETV-S co2,an%ch} {SEND %co2} {GOTO SW4}
{:SW3} {SETV-S co1,an%ch} {SEND %co1}
{:SW4} {SETV cline}
{GOTO CT13}
{:view_scroll}
{SCROLL}
{GOTO CT4}
{:update_clist}
{ROPE %datadir%CALLERS.LST,UC1}
{WOPE %datadir%TEMP.000}
{:UC2} {READ ch} {READ cline} {READ dline}
{COMP ch,%userno} {IFCO UC3}
{WRIT %ch} {WRIT %cline} {WRIT %dline} {GOTO UC2}
{:UC3} {COMP s,1} {IFCO UC5}
{:UC4} {WRIT %ch}
{WRIT %login_name}
{WRIT %password}
{:UC5} {READ dline} {WRIT %dline} {GOTO UC5}
{:UC1} {WCLO}
{EXEC-N COPY %datadir%TEMP.000 %datadir%CALLERS.LST}
{EXEC-N DEL %datadir%TEMP.000}
{RETURN}
{:write_user}
{WOPE %userdir%%userno.USR}
{WRIT %login_name}
{WRIT %password}
{WRIT %al}
{WRIT %protocol}
{WRIT %expert}
{WRIT %a}
{WRIT %fa}
{WRIT %_dwt %_dat}
{WRIT %rname}
{WRIT %from}
{WRIT %pcpd}
{WRIT %clr2}
{WRIT %arcer}
{WRIT %arc}
{WCLO}
{RETURN}
{:time_out}
{MACL MACROBBS.MAC,time_out}
{:cls}
{CLEA}
{COMP on,} {IFCO CLS3}
{COMP mnu,A} {IFCO CLS1}
{SEND ^[[2J}
{GOTO CLS2}
{:CLS1} {SEND ^L}
{:CLS2} {DISP 1,1,4F,│ }
{DISP 1,3,4E,%login_name #%userno}
{DISP 1,40,47,AL=%al}
{DISP 1,49,47,%mspeed}
{DISP 1,57,47,%_ela mins}
{DISP 1,70,4F,%an9%%chat}
{DISP 2,1,4F,│ }
{DISP 2,3,47,%rname - %from}
{DISP 3,1,4F,└──────────────────────────────────────────────────────────────────────────────}
{DISP 4,1,07,}
{:CLS3} {RETURN}
{:press_any_key}
{COMP mnu,a} {IFCO PAK1}
{SEND %an3%%an9^[[24;1h^[[24;1f[Press Any Key]%an0}
{GOTO PAK2}
{:PAK1} {SEND ^J^M^J[Press Any Key]}
{:PAK2} {SETG 300,time_out}
{GETS-H temp,1,PAK}
{:PAK} {SEND ^M ^M}
{SETV temp}
{RETURN}
{:ascii_ul}
{COMP mnu,A} {IFCO AU1}
{SEND ^[[2J} {GOTO AU2}
{:AU1} {SEND ^L}
{:AU2}
{IFEX %dump_file,,AU3}
{PARM ,,,,%uicd}
{ASCI-S0 %dump_file,}
{PARM ,,,,%nicd}
{:AU3} {RETURN}
{:expert_tog}
{COMP expert,ON}
{IFCO ET1}
{SETV expert,ON}
{GOTO ET2}
{:ET1} {SETV expert,OFF}
{:ET2} {RETURN}
{:cd}
{IFCA cd1}
{COMP on,1} {IFCO time_out}
*-{:cd1} {COMP on,1} {IFCO ,cd2}
{COMP _ela,%tlc} {IFCO-GE time_out}
{:cd2} {RETURN}
{:screen_full}
{SEND %an4%More? %an7(Y,n) %an0: }
{SETG 120,SF3}
{:SF1} {GETS-H ch,1,SF2}
{COMP ch,y} {IFCO SF4}
{COMP ch,n} {IFCO SF4}
{SEND ^H} {GOTO SF1}
{:SF2} {SETV ch,y} {GOTO SF4}
{:SF3} {SETV ch,n}
{:SF4} {SEND ^M ^M}
{SETG 300,time_out}
{RETURN}
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
{:start}
{PUSH}
{SETE time_out}
{CALL cd}
{SETV mac,PAK}
{:MP1}
{SETV n} {SETV ta} {SETV em} {SETV ul}
{SETV files} {SETV desc} {SETV filepath}
{SETV tran} {SETV transdir} {SETV proto} {SETV tl}
{SETE-P0 esc_menu}
{COMP expert,ON} {IFCO MP4}
{:MP8} {CALL cls}
{SEND ^J^M^J^J%an4%}
{SEND ^J^M ┌───────────────────────────────────────────────────┐}
{SEND ^J^M │ %an0░░░░░░░░░░░░░░░░░%an7 Message Packer %an0░░░░░░░░░░░░░░░░%an4 │}
{SEND ^J^M └───────────────────────────────────────────────────┘^J^M}
{SEND ^J^M %an4[%an0%A%an4] Archiver %an4[%an0%M%an4] Message Base}
{SEND ^J^M %an4[%an0%T%an4] Tag Areas %an2[%an0%F%an2] File Base}
{SEND ^J^M %an4[%an0%D%an4] Download Packet %an0[%an0%Q%an0] MAIN MENU}
{SEND ^J^M^J %an4[%an0%C%an4] Chat [%an0%X%an4] Xpert Toggle
{:MP4} {SEND ^J^M^J%an4%Message Packer %an0%%_tim^J^M}
{SETV ch,%tlc} {DECR ch,%_ela}
{SEND %an0%Mins Left: %ch^J^M}
{:MP5} {CALL cd}
{:MP7} {SEND ^M} {COMP expert,ON} {IFCO ,MP9}
{SEND %an4(%an0%?%an4=menu) }
{:MP9} {SEND %an7%MP Command: ^H}
{SETG 300,time_out}
{GETS-H ch,1,MP5}
{:MP14}
{SETV dline,uph} {INST dline,%ch} {IFCO ,MP3} {COMP al,0} {IFCO MP6}
{:MP3}
{COMP ch,*} {IFCO time_out}
{COMP ch,?} {IFCO MP8}
{COMP ch,a} {IFCO archiver}
{COMP ch,d} {IFCO download}
{COMP ch,t} {IFCO tag_area}
{COMP ch,c} {IFCO chat}
{COMP ch,x} {IFCO expert_tog}
{COMP ch,f} {IFCO file_base}
{COMP ch,m} {IFCO msg_base}
{COMP ch,q} {IFCO ,MP5}
{:main} {MACL MACROBBS.MAC,main_menu}
{:msg_base}
{IFEX MACROMSG.MAC,,MP7}
{IFEX %msgsdir%A%a.BAS,MB2}
{IFEX %msgsdir%A*.BAS,,MP5}
{SETV a,0}
{:MB1} {INCR a}
{COMP a,%mhigh} {IFCO-G MP5}
{IFEX %msgsdir%A%a.BAS,,MB1}
{:MB2}
{ROPE %msgsdir%A%a.BAS,MB1} {READ ch} {READ ch} {RCLO}
{COMP ch,%al} {IFCO-G MB1}
{SETV files} {SETV dfiles} {SETV desc}
{MACL MACROMSG.MAC,start}
{:file_base}
{IFEX MACROFIL.MAC,,MP7}
{IFEX %filedir%F%fa.BAS,FX2}
{IFEX %filedir%F*.BAS,,MP5}
{SETV fa,0}
{:FX1} {INCR fa}
{COMP fa,%fhigh} {IFCO-G MP5}
{IFEX %filedir%F%fa.BAS,,FX1}
{:FX2}
{ROPE %filedir%F%fa.BAS,FX1} {READ ch} {READ ch} {RCLO}
{COMP ch,%al} {IFCO-G FX1}
{MACL MACROFIL.MAC,start}
{:archiver}
{SEND ^J^M^J%an7%Select a message packer format:^J^M}
{IFEX %_hom%MBBSARCH.LST,AR1}
{SETV arcer,ZIP} {SETV arc,pkzip}
{SEND ^J^M%an1%No packer list found. %an0 Defaulting to%an7 ZIP%an0 format.}
{GOTO DLR}
{:AR1} {ROPE %_hom%MBBSARCH.LST,AR3}
{:AR2} {READ ch}
{COMP ch,1} {IFCO-GE ,AR2} {READ temp} {READ dline}
{SEND ^J^M%an3%%ch. %an0%%temp}
{GOTO AR2}
{:AR3} {SEND ^J^M^J%an7%Your choice?%an0 }
{:AR5} {GETS ch,2,AR7}
{ROPE %_hom%MBBSARCH.LST,AR4}
{:AR6} {READ temp}
{COMP temp,%ch} {IFCO ,AR6}
{READ arcer} {READ arc} {RCLO}
{CALL write_user}
{:AR7} {RETURN}
{:AR4} {SEND ^J^M%an1%Invalid selection.} {GOTO AR3}
{:tag_area}
{IFEX %maindir\READER\TAGS\%userno.OLR,,TA2}
{ROPE %maindir\READER\TAGS\%userno.OLR,TA2}
{SETV count,0}
{:TA1}
{INCR count} {READ idx%count} {GOTO TA1}
{:TA2}
{SEND ^J^M^J%an7%Tag/Untag which area? %an0(area #, L=List, ENTER=Quit): }
{GETS ch,2,TA6}
{COMP ch,l} {IFCO TA5}
{COMP ch,1} {IFCO-GE TA9}
{:TA3}
{SEND ^J^M%an1%That area doesn't exist!}
{GOTO TA2}
{:TA9}
{IFEX %msgsdir%A%ch.BAS,,TA3}
{ROPE %msgsdir%A%ch.BAS,TA3} {READ bname} {READ bal} {RCLO}
{COMP al,%bal} {IFCO-GE ,TA3}
{COMP idx%ch,} {IFCO TA4}
{SEND ^J^M^J%an7%%bname %an0- %an1%Untagged.}
{SETV idx%ch,}
{GOTO TA2}
{:TA4}
{SEND ^J^M^J%an7%%bname %an0- %an2%Tagged.}
{SETV-S idx%ch,a%ch}
{GOTO TA2}
{:TA5}
{CALL cls}
{SETV count,0} {SETV mcount,0}
{SEND ^J^M%an7 Message Area(s):^J^M}
{:AC1}
{SETV temp}
{INCR count}
{COMP count,%mhigh} {IFCO-G TA2}
{IFEX %msgsdir%A%count.BAS,,AC1}
{ROPE %msgsdir%A%count.BAS,AC9} {READ bname} {READ bal}
{READ temp} {READ temp} {READ temp} {READ temp} {RCLO}
{:AC9}
{COMP al,%bal} {IFCO-L AC1}
{SETV ch, }
{COMP idx%count,} {IFCO AC2}
{SETV ch,-}
{:AC2} {COMP temp,y} {IFCO AC10}
{SEND ^J^M%an3%%ch %an7%%count> %an4%%bname} {GOTO AC8}
{:AC10}
{SEND ^J^M%an3%%ch %an7%%count> %an5%%bname}
{:AC8}
{INCR mcount} {COMP mcount,20} {IFCO ,AC1}
{CALL screen_full}
{COMP ch,y} {IFCO AC1,TA2}
{:TA6}
{CALL write_idx}
{RETURN}
{:download}
{IFEX %maindir\READER\TAGS\%userno.OLR,,DLE}
{ROPE %maindir\READER\TAGS\%userno.OLR,DL2}
{SETV count,0} {SETV temp,0}
{:DL1}
{INCR count} {READ idx%count}
{COMP idx%count,} {IFCO DL1}
{SETV-S idx%count,a%count} {INCR temp} {GOTO DL1}
{:DL2}
{COMP temp,0} {IFCO DLE}
{SETV count,0} {SETV total,0}
{SEND ^J^M^J^J%an0 Area Unread
{SEND ^J^M%an0 Name Msgs
{SEND ^J^M%an4----------------------------------------
{:DL3}
{INCR count} {COMP count,%mhigh} {IFCO-G DL4}
{COMP idx%count,} {IFCO DL3}
{IFEX %msgsdir%A%count.BAS,,DL3}
{ROPE %msgsdir%A%count.BAS,DL3}
{READ bname} {READ temp} {READ temp} {READ temp} {READ ch} {RCLO}
{:DL305}
{SETV-S temp,idx%count} {DECR temp} {DECR ch,%temp}
{SETV dline, } {SETV temp}
{LENG %bname} {SUBS %temp,%_len,30,%dline}
{SEND ^J^M%an7 %bname%%temp %ch} {INCR total,%ch}
{GOTO DL3}
{:DL4}
{SEND ^J^M%an4----------------------------------------
{SEND ^J^M%an0 Total: %an3%%total}
{SEND ^J^M^J}
{COMP total,0} {SETV total} {IFCO DLE3}
{:DL5}
{SEND ^M%an0%Pack these messages? (%an7%Y,%an0%n):%an7 ^H}
{GETS-H ch,1,DL6}
{COMP ch,n} {IFCO DLR2}
{COMP ch,y} {IFCO ,DL5}
{:DL6}
{EXEC-N DEL %maindir\READER\PACKET.*}
{SEND ^J^M%an7%Scanning tagged message areas...^J^M}
{SETV mcount,0} {SETV count,0} {SETV temp,0}
{:DL7}
{INCR mcount} {COMP mcount,%mhigh} {IFCO-G DL9}
{COMP idx%mcount,} {IFCO DL7}
{ROPE %msgsdir%A%mcount.BAS,DL7}
{READ bname} {READ temp} {READ temp} {READ temp} {READ ch} {RCLO}
{SEND ^M%an1%%bname
{COMP idx%mcount,%ch} {IFCO-LE ,DL7}
{SETV-S temp,idx%mcount}
{:DL8}
{EXEC-N ECHO >> %maindir\READER\PACKET.ASC}
{EXEC-N ECHO Msg# %temp in area: %bname >> %maindir\READER\PACKET.ASC}
{EXEC-N TYPE %msgsdir%A%mcount\%temp.MSG >> %maindir\READER\PACKET.ASC}
{INCR temp} {COMP temp,%ch} {IFCO-G DL7,DL8}
{:DL9}
{SEND ^M%an5%Packing in %an7%%arcer%%an5 format...}
{EXEC-N %arc %maindir\READER\PACKET %maindir\READER\PACKET.ASC}
{EXEC-N DEL %maindir\READER\PACKET.ASC}
{SEND %an0%Done.^J^M}
{SETV files,PACKET.%arcer}
{SETV transdir,%maindir\READER}
{SETV filepath,%transdir\%files}
{SETV proto,S%protocol}
{IFEX MBXPRO-%protocol.MAC,,DL14}
{ROPE MBXPRO-%protocol.MAC,DL14} {READ dline} {READ pname} {READ path} {RCLO}
{IFEX %path,,DLE2}
{MACL MBXPRO-%protocol.MAC,start}
{:pdoor}
{COMP %_err,0}
{EXEC-N DEL %maindir\READER\PACKET.*}
{IFCO DL11}
{WOPE-A %datadir%LOG-1.LOG} {WRIT ▒░▒░▒ ERRONEOUS PACKET DOWNLOAD at %_tim of %filepath ▒░▒░▒} {WCLO}
{SEND %an1%Erroneous download.^J^M}
{COMP expert,ON} {IFCO DL10}
{CALL press_any_key}
{:DL10}
{SETV files} {SETV filepath} {SETV transdir} {SETV proto}
{POPS-C}
{GOTO start}
{:DL11}
{WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : successful packet download of %filepath} {WCLO}
{SEND %an7%Successful download.}
{SEND ^J^M^J%an5%Updating message pointers...}
{SETV ch,0}
{:DL12}
{INCR ch} {COMP ch,%mhigh} {IFCO-G DL13}
{COMP idx%ch,} {IFCO DL12}
{IFEX %msgsdir%A%ch.BAS,,DL12}
{ROPE %msgsdir%A%ch.BAS,DL12}
{READ temp} {READ temp} {READ temp} {READ temp} {READ temp} {RCLO}
{INCR temp} {SETV idx%ch,%temp} {SETV a%ch,%temp}
{GOTO DL12}
{:DL13}
{CALL write_idx}
{GOTO DL10}
{:DL14}
{COMP proto,sy} {IFCO s_y}
{COMP proto,sg} {IFCO s_y}
{:s_x}
{SEND ^J^M%an0%Start your%an7 XMODEM%an0 download now.}
{SXMO-K %filepath}
{GOTO pdoor}
{:s_y}
{SEND ^J^M%an0%Start your%an7 YMODEM%an0 download now.}
{SYMO-K %filepath}
{GOTO pdoor}
{:DLE} {SEND ^J^M^J%an1%You have no TAGGED message areas. %an0 Select "T" to Tag areas.^J^M^J}
{GOTO DLR}
{:DLE3} {SEND ^J^M%an1%No new messages found.^J^M^J}
{GOTO DLR}
{:DLE2} {SEND ^J^M%an1"%path" not found.^J^M^J}
{:DLR} {SETV ch,0}
{:CLR} {INCR ch} {COMP ch,%mhigh} {IFCO-G CLR1} {SETV idx%ch} {GOTO CLR}
{:CLR1} {CALL press_any_key}
{:DLR2} {RETURN
{:write_idx}
{WOPE %maindir\READER\TAGS\%userno.OLR}
{SETV ch,0}
{:WI1} {INCR ch} {COMP ch,%mhigh} {IFCO-G WI2}
{SETV-S temp,idx%ch} {WRIT %temp} {SETV idx%ch} {GOTO WI1}
{:WI2} {WCLO}
{WOPE %msgsdir%INDEX\%userno.IDX}
{SETV ch,0}
{:WI3} {INCR ch} {COMP ch,%mhigh} {IFCO-G WI4}
{SETV-S temp,a%ch} {WRIT %temp} {GOTO WI3}
{:WI4} {WCLO} {SETV temp}
{RETURN}