BloxExpV01ObjSStch$cccccccc c c c c cc thumbnail#xcc author history  2010-5-1 23:48:04 save streams 2010-5-1 23:56:46 save streams 2010-5-2 00:07:47 save streams 2010-5-3 11:10:35 save streams 2010-5-15 08:09:03 save streams 2010-5-15 08:45:54 save streams 2010-5-15 08:50:32 save streams 2010-5-17 22:39:41 save streams language en scratch-version 2.99.011 (18-May-10) platform Mac OS os-version 1058 Q                                   #             1ccccccccccccccc c!c"c#c$ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc9!!9%')Is+X+ZR3s55k99s;r=R??i?rR?ObjSStch}cccccccc c ?c dc?c@cAc|cBccCcDcEcFcGcHcIcJdcKcLd<cMcNdcOcPones integersprimes cQcRcScTcUcVcWcX cYcZc[c\cUcVc]c^ c_c`cacbcUcVcccd cecfcgcUchcicj ckclcmcncUcocpcq crcsctcucUcocvcw cxcyczcUcoc{c| c}c~cccUcocc cccccUccc cccccUcocc cccccUccc cccccUcocc cccccUccc cccccUcocc cccccUccc cccccUccc cccccUccc cccccUccc cccccUccc cccccUccc ccccccc cccccUchcc cccccUchcc cccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVccc cccccUcoc c  c c c ccUccc ccccUcocc ccccVccc cccccUccc  c!c"c#cVc$c%c& c'c(c)cVc$c*c+ c,c-c.c/cUcVc0c1 c2c3c4c5cUcVc6c7 c8c9c:c;cUcVcc?c@cAcUcVcBcC cDcEcFcGcUcVcHcIcJcKd2 background1"hcL !!Sprite1cMcN+cOcPcQcRcScTcUcVcWcXcYcZc[c\c]c^c_c`cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcycJczc{c| ?? normal  cons-stream %head %tail c} something any nonec~cUccccUcccccc stream-car %strm c somethingccUcccccc stream-cdr %strm cc somethingccccUccc cccc compose %f %g c controlccUcccccccccc %all but first word of %sentence c something operatorsccUcccccc first word of %sentence c somethingccUcccccc id %x cccUccUcccc !if %test then %yes else %no c somethingccccccccUcccccccc all but first of %list ccccc listccUcccccc join words %words cc somethingccccUcccc +combine with %function items of %list cccccccccUcccccccc list->sentence %list c somethingccUcccccc append %lists cccccccUcccccc %all but first letter of %string cccccccccUcccc !%# map %function over %lists ccc c c c cUc ccccccccccccc /%# keep items such that %pred from %list cccccccccc c!c"cUc#c$c%c&c'c(c)c* crossmap %function %listsc+ somethingc,cc-cc.cUc/c0c1c2c3c4 adjoin %item to %list c5c6c7c8c9cUc:cUc;ccc?c@cA reverse %listcBcCcDcEcFcUcGccHcIcJcK remove duplicates from %list cLcMcNcOcPcUcQccRcScTcU empty? %list cV booleancWcUcXccYcZc[c\ /%# cascade %num times %function of %start c]c^c_c`cacbcUccccdcUceccfccgchcicjckclcmcncocp 1%# cascade until %test %function of %start cqcrcsctcucvcUcwccxcUcycczc!c{c|c}c~cccccc ignore %value ccUccUcccc %# repeat %num %action ccccccccccUcccccccc (for %i = %start to %end %action cccccccccUccccc ccccccc 5for %i = %start step %step to %end %action ccccccccUcccccccccc ccccccc repeat while %test %action cccUcc!cccccccc repeat %action until %test ccccUcc!cccccccc repeat %action while %test ccccUcc!cccccccc +%# for each item of %lists %action ccccUccccUcccccccccccccc sentence->list %sentccccccccccUcccccc crossproduct %listsc somethingccUcccccc pigl %word cccUcccccc make all combinations of items of %lists combining with %combiner building up from %sofar and do %action for each combination c c cc cc cccUccUcccccccccc 4adjoin to %list this item %new on the right cccccccUc cc!cUc"c#c$c%c&c' %glide %dist steps in %time secs c( motionc)cUc*cc+cc,c-c.c/d go to %pos c0c1cUc2cc3c4c5c6 stream-map %fn %strms c7c8 somethingc9cUc:cc;ccc?c@cA add-streams %s1 %s2 cBcCcD somethingcEcUcFccGccHcIcJcKcLcM show-stream %strm %num cNcOcP somethingcQcUcRccSccT cUcVcWcX stream-filter %pred %s cYcZ somethingc[c!c\cc]cUc^c_c`cacbcc sieve %s cd somethingceccfcUcgchcicj popmckcl+ Tacmcncocp cQcqcrcscUcVctcu cYcvcwcxcUcVcycz c_c{c|c}cUcVc~c cecccUchcc ckccccUcocc crccccUcocc cxcccUcocc c}ccccUcocc cccccUccc cccccUcocc cccccUccc cccccUcocc cccccUccc cccccUcocc cccccUccc cccccUccc cccccUccc cccccUccc cccccUccc cccccUccc ccccccc cccccUchcc cccccUchcc cccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVchcc ccccVccc cccccUcocc c ccccUccc  cc c cUcoc c  ccccVccc cccccUccc c!cccVc$cc c'cccVc$cc c,cc c!cUcVc"c# c2c$c%c&cUcVc'c( c8c)c*c+cUcVc,c- c>c.c/c0cUcVc1c2 cDc3c4c5cUcVc6c7gobo1"`` c8 00c9c:c;c< tail reporterhead tail headc9c:c;c= strm strm c9c:c>c?c@c9c:c;cAnum number strmnum strm  c9c:cBcCcDcUcEcF fg f g c9c:cGcHcIcJ sentence text sentencec9c:cGcKcLcM sentence sentencec9cNcOcPcxx x c9c:cGcQcRcStestnoyes test no yes c9c:cTcUcVc9cNcWcXcYcZc9cNcWc[cYc\c9c:c]c^c_c9cNcOcXc list list c9c:cTc`c9c:cGcacbccwords anyList words c9c:cTcdcec9cNcWcfcYcgc9cNcWchcYcic9c:c]cjckc9cNcOcfcfunction listfunction list c9c:cGclcmcn list list c9c:cTcocpcqc9cNcWcrcYcsc9cNcWctcYcuc9c:cvcwcxc9cNcOcrc lists listListlists c9c:cTcyczc9cNcWc{cYc|c9cNcWc}cYc~c9c:c]ccc9cNcOc{cstring string c9c:cTcc9cNcWccYcc9cNcWccYcc9c:cGcccc9cNcOcc lists# templatefunctionfunction lists # c9c:cTcc9cNcWccYcc9cNcWccYcc9c:cvccc9cNcOcclist#pred predicate list # pred c9c:c;clistsfunction function lists c9c:cTcc9cNcWccYcc9c:cccccc9cNcOccitem list itemlist c9c:cTcc9cNcWccYcc9c:cccccc9cNcOcc list list c9c:cTcc9cNcWccYcc9c:cccccc9cNcOcc list list c9c:ccc list list c9c:cTcc9cNcWccYcc9cNcWccYcc9c:cvccc9cNcOccstartnum #functionnum function # startc9c:cTcc9cNcWccYcc9cNcWccYcc9c:c]ccc9cNcOccstartfunction #teststartfunction # test value valuec9cNcWccYcc9c:cvccnum#action loop num # action c9c:cTcc9c:cGccc c9c:cccccccendi actionstartendi action startc9c:cTcc9cNcWccYcc9c:cGcccc9c:c]ccstep actionendstartistepend action starti c9c:c]cc testaction test action c9c:ccc9c:c]cc testaction test action c9c:ccc9c:cccc testaction test action c9cNcWccYcc9c:cvccdolists action#dolists action # c9c:cTcccc9cNcWccYcc9c:c>ccc9cNcWccYcc9cNcWccYcc9c:c]ccc9c:cccc9cNcOcc sent sentc9c:cGccc listslists c9c:ccccc word wordc9c:cGccccombinerlistsactionsofar sofarlists combiner action c9c:cTcc9cNcWccYcc9c:cccccc9c:cccc9cNcOcc listnew list newc9c:cccc timedist timedistc9c:ccc pos pos c9c:c>ccc9c:c;c fnstrms fn strms c9c:c>ccc9c:c>ccc9c:c;c s1s2 s1 s2 c9c:c>c c c9c:c>c c c9c:c;c numstrmnum strm c9c:c>ccc9c:cGcccpreds pred s c9c:c;cs s   rS#<$ sU_`iGA&GaJo}p#a D*j%9 :`DvpyhEgJlzކkqȎ!0]}yq7M穸OiO \<_PoiNV$ qYgxh 6Wkf)_FΫ29Q(VI4+N,݌.c?c@ somethingcAcUcBccCcDcEcFcG somethingcHcUcIccJcKcLcMcNcOcUcPcUcQcRcScTcU somethingcVccWccXccYcUcZc[c\c]c^c_c`cacbcccdcecfcgcUchccicjckclcmcn somethingcoccpcUcqcrcsctcucvcwcxcyczcc{cUc|cc}c~ccccc somethingccUcccccccccccccccUcccccccccccccUcccccccccccccccccUcccccccccccccccUcccc!ccccccccccc somethingccUccccccccccccccccUccUccccccccccccccUccccccccccccUcccccccccUcccccccccccccccccUccccUcccccccccccc c c c c c!ccccUccccUccccccccccccUccUccc c!c"c#c$cc%cc&cc'cUc(c)c*c+c,c-c.c/c0c1c2c3cc4cc5cUc6cc7cc8 c9c:c;cc?c@cAcBcCcDccEcUcFccGccHccIccJcK cLcMcNcOcPcQcRcScTcUcUc!cVccWcXcYcZc[c\c]c^c_cUc`c!caccbcccdcecfcgchcicjcUckc!clccmcncocpcqcrcsctcuccvcUcwcUcxccycczc{c|c}c~cccccccccccccccUccccccc somethingccUcccccccccUcccccccccUccccccUcccccccccccccccccccUccccUcccccccccUccccccccdcccUcccccccc somethingccUccccccccccccc somethingccUccccccccccccc somethingccUccccccc cccc somethingcc!ccccUccccccc somethingccccUcccc k$]ZJBeZJB9ZJB9ZJBQZJBZJB"9 ZJBMZJB9 ZJB9 ZJBA9 ZJB 9ZJB9 ZJB= ZJB9 ZJBZJB9ZJB9 ZJB9 ZJB ZJB9ZJB5ZJB! ZJB9ZJB1 ZJB)ZJB9ZJB1ZJB% ZJB9ZJBQ ZJB"9ZJBI ZJB9ZJB9ZJBA ZJB9 ZJB9ZJB=ZJB9ZJB9ZJB5 ZJB9 ZJBZJB9ZJB- ZJB9 ZJB ZJB9ZJB% ZJB9 ZJBZJB9ZJB!ZJB9 ZJB ZJB9 ZJB ZJB9ZJBZJB9ZJB"ZJB! ZJB9ZJB=ZJBZJB"9 ZJB5ZJB ZJB"9ZJB- ZJB 9 ZJB ZJB)ZJB"9ZJB) ZJB9ZJBZJB! ZJB&9ZJB%ZJB9 ZJB9ZJB9ZJB ZJB*9 ZJB%ZJB9 ZJB ZJB9ZJB ZJB&9ZJB ZJB9ZJB ZJB9ZJB ZJB.9 ZJB ZJB9 ZJBZJB9ZJB ZJB.9ZJB ZJB9 ZJB ZJB9ZJBZJB29ZJB ZJB9ZJB ZJB9ZJBZJB:9 ZJB ZJB9 ZJB ZJB9ZJB ZJB>9ZJB9 ZJB ZJB"9ZJB ZJB>9ZJB9ZJB"9 ZJB ZJB*9ZJBn9ZJBZJB ZJB9 ZJB ZJB9ZJBZJB9ZJB ZJB9ZJB9 ZJB9 ZJB9ZJB9 ZJBZJB9ZJBZJB9 ZJB ZJB9 ZJBZJB9 ZJBZJB9 ZJB ZJB9 ZJB ZJB9 ZJB ZJB9ZJBZJB9ZJBZJB9 ZJB ZJB9 ZJBZJB9ZJBZJB9 ZJB9ZJB9 ZJB ZJB9 ZJBZJB9ZJB ZJB9ZJBZJB9 ZJB ZJB9 ZJB ZJB9 ZJB ZJB9 ZJB ZJB9ZJB ZJBb9F99 ZJBZJB9ZJB.9>99ZJBZJB9ZJB9ZJB*9ZJB69 ZJB9ZJBZJB 9ZJB9ZJB&9 ZJB29 ZJB9ZJBZJB9 ZJB&9 ZJB29"ZJB9ZJB9}ZJB*9 ZJB&9 ZJB29"ZJB9 ZJBy ZJB*9ZJB*9 ZJB29 ZJB9 ZJB9ZJBmZJB.9 ZJB29 ZJB69 ZJB9ZJB9 ZJBi ZJB29ZJB29 ZJBZJB :9ZJBZJB99 ZJB9 ZJBa ZJB29 ZJBB9F99ZJB9 ZJB9Y ZJB29 ZJB9 ZJB9 ZJBU9 ZJB*9ZJB9 ZJB9ZJBU ZJB*9ZJB9ZJB9ZJBQ ZJB.9 ZJB9 ZJB9 ZJBMZJB.9 ZJB9ZJB"9 ZJBMZJB*9 ZJB9ZJB"9ZJBI ZJB&9ZJB9ZJB9 ZJBI ZJB"9ZJB9ZJB9ZJBB9ZJB9ZJBMZJB"9 ZJB ZJB9ZJB69 ZJB ZJB9ZJBM ZJB9ZJB ZJB9ZJB*9ZJB ZJB9ZJBQ ZJB9 ZJB ZJB9ZJBZJBY ZJB9ZJB ZJB9ZJB ZJB9ZJBZJB9ZJBZJB)ZJB9 ZJB9ZJB ZJB9ZJBZJB9ZJBZJB"9 ZJB9ZJB 9ZJB&9 ZJB9ZJB ZJB"9ZJB9JZJB ZJB9ZJB96ZJBZJB9ZJB9ZJB9ZJB ZJB9ZJB ZJB9 ZJBZJB9 ZJBZJB9ZJB ZJB9ZJB ZJB9 ZJB ZJB9ZJB ZJB9 ZJB ZJB9 ZJBZJB9ZJBZJB9 ZJBZJB 9 ZJB ZJB 9ZJBZJB9 ZJBZJB9 ZJB ZJBZJB9 ZJB!ZJB9=ZJB byob Stage doAnswerc9c:ccc9c:cc doIfc9c:ccccc9c:cc functionc9c:c c c c doIfElsec9c:cc cccc9c:ccccc readBlockVariablexc9cNcOcc}cc doDeclareVariablesc9cNcOcXcc9cNcOc[c changeBlockVariableresult setVar:to:c9c:cci2 doUntilc9c:cccccc9cNcOccc9c:ccc c!c"c#c9cNcOcfcc9cNcOchcresultc9c:cc$i2c9c:cc%c&c'c(c9c:cc)c*c+c,c9cNcOcrcc9cNcOctcc9cNcOc-cresultc9c:cc.i0 doRepeatc9c:c/c0c1c2c3c9cNcOc{cc9cNcOc}cresulti2c9c:cc4c5c6c7c9cNcOccresultc9c:cc8#0c9c:cc9c:c;c<c9cNcOccresultc9c:cc=#0c9c:c/c>c?c@c9c:ccAcBcCcDc9cNcOccresultc9c:ccE doCustomBlockc9cNcOcFc cGcHcIcJcKcLcM c9cNcNcOcPcVcQcRc9cNcOccresultc9c:ccSc9cNcOcTc cUcHcVcWcXcYcZ c9cNcNc[c\cVc]c^c9cNcOccresultc9c:cc_c9cNcOc`cƯ cacHcbcccdcecf c9cNcNcgchcVcicj =c9c:c/ck0c9cNcOccresultc9cNcOclc#0c9cNcOcmccncoc9cNcOccresultc9cNcOcpc#0c9c:c cqcrcsctcu#0c9cNcOcvccwcxc9cNcOcycc9c:cczc{c|c}c9cNcOc~cc9cNcOccc9cNcOcycc9cNcOcc c9cNcNcccVccc9cNcOccic9cNcOccc9c:cccccc9c:ccccc9c:ccc doRunc9cNcOccc9cNcOcccc9cNcOcc repeat while %test %action c9cNcOccc9cNcOcc#0c9c:c/cccc9cNcOccc9cNcOccc9cNcOccresultc9c:ccc9c:cccci1wordc9c:ccccc append:toList:c9cNcOccc9cNcOccc9c:ccccccc !if %test then %yes else %no c9c:cccc9cNccc9cNccc9c:cccccc9cNcOccresultc9c:cc +%# for each item of %lists %action c9cNcOcc ccHccccc c9cNcNcccVccc9cNcOccc9cNcOcc glideSecs:toX:y:elapsed:from:c9cNcOcc!c9c:cccc9c:ccc gotoX:y:c9c:ccc9c:ccc9c:ccccc9c:ccQccc9c:ccccc9c:ccccc9c:ccQccc9c:ccccc9c:ccccc9c:cccc9c:ccccc9c:c cccccc9c:ccQccc9cccc9cEcccYcc9cEcccYcc9cEcccYcc9cEccc9cccc9cEc;c tailhead tail headc9cEc;c strm strm c9cEc>ccc9cEc;c numstrmnum strm  c9cEcBcccUcc fg f g c9cEcGccc sentence sentencec9cEcGccc sentence sentencec9cNcOcPcxx x c9cEcGcccnotestyes no yes test c9cEcTccc9cNcWcXcYcc9cNcWc[cYcc9cEc]ccc9cNcOcXc list list c9cEcTcc9cEcGc c c words words c9cEcTc c c9cNcWcfcYcc9cNcWchcYcc9cEc]ccc9cNcOcfcfunction listfunction list c9cEcGccc list list c9cEcTcccc9cNcWcrcYcc9cNcWctcYcc9cEcvccc9cNcOcrclists lists c9cEcTccc9cNcWc{cYcc9cNcWc}cYcc9cEc]c c!c9cNcOc{cstring string c9cEcTc"c9cNcWccYc#c9cNcWccYc$c9cEcGc%c&c'c9cNcOccfunctionlists# function lists # c9cEcTc(c9cNcWccYc)c9cNcWccYc*c9cEcvc+c,c9cNcOcc #predlist # pred list c9cEc;c- listsfunctionfunction lists c9cEcTc.c9cNcWccYc/c9cEccc0c1c2c9cNcOcc itemlistitem list c9cEcTc3c9cNcWccYc4c9cEccc5c6c7c9cNcOcc list list c9cEcTc8c9cNcWccYc9c9cEccc:c;c<c9cNcOcc list list c9cEcc=c> list list c9cEcTc?c9cNcWccYc@c9cNcWccYcAc9cEcvcBcCc9cNcOccfunctionnum #startnum start # function c9cEcTcDc9cNcWccYcEc9cNcWccYcFc9cEc]cGcHc9cNcOcctestfunction #startstarttest # function value valuec9cNcWccYcIc9cEcvcJcKnum#action num # action c9cEcTcLc9cEcGcMcNcO c9cEcccPcQcRcScTendi actionstartendi action startc9cEcTcUc9cNcWccYcVc9cEcGcWcXcYc9cEc]cZc[step endactionstartistependaction starti c9cEc]c\c] testaction test action c9cEcc^c9cEc]c_c` testaction test action c9cEccac9cEcccbcc testaction test action c9cNcWccYcdc9cEcvcecflistsdo #actionlists doaction # c9cEcTcgchcic9cNcWccYcjc9cEc>ckclc9cNcWccYcmc9cNcWccYcnc9cEc]cocpc9cEccqcrc9cNcOcc sent sentc9cEcGcsctcu listslists c9cEcccvcwcx word wordc9cEcGcyczc{ listscombinersofaractionaction lists combiner sofar c9cEcTc|c9cNcWccYc}c9cEccc~ccc9cEcccc9cNcOcc listnew list newc9cEcccc timedist timedistc9cEccc pos pos c9cEc>ccc9cEc;c fnstrms fn strms c9cEc>ccc9cEc>ccc9cEc;c s1s2 s1 s2 c9cEc>ccc9cEc>ccc9cEc;c numstrm numstrm c9cEc>ccc9cEcGcccpreds pred s c9cEc;cs s newList: ccHccccc getLine:ofList:c9cNcOccYc9c:c/c2c9c:cccc9cNcOcc_ doCallBlockWithArgsc9cNcOcce with inputsc9c:c cc cc9c:cc0c9c:c;cc9c:cGcccc9c:cc0c9c:c;cc9c:cGccctestc9c:c;cc9c:c;c ccHccccc >c9cNcOc[cc9c:c/cc9c:cccc9cNcWc[csmallerc9c:c/c0c9c:c;cc9cNcWccYcc9c:cGcccc9cNcOccc9cNcOchcc9c:c/cc9cNcWcfcYcc9cNcWchcc9c:c/c0c9c:c;cc9c:c;cj ccHccccc lineCountOfList:c9cNcOccc9cNcWctcc9cNcWc-cYcc9c:cvccc9cNcOc}cc9c:ccc9cNcWc{cYcc9cNcWc}c ccHcccccc9c:c/c1c9c:cvccc9c:cvcc ccHcccccc9cNcOccc9cNcWccc9c:c>cc !%# map %function over %lists c9cNcOcc c9c:ccccUccc ccHccccc ccHccccc#!_s0lK%)Fc c  loopLambdac  c cHc c c c c #!_s0lK%)Fc c c  c cHc c c c c #!_s0lK%)Fc c c c9cNcOc cstartnumc9cNcWc cc9cNcWccYc startc9cNcOc c with inputsc9cNcOccc9cNcWc cc9cNcWccYc numc9cNcWc cc9c:cc stepc9cNcOccc9cNcOccc9cNcWcycYc c9cNcWcycYc iiistartendc c teststart <c9cNcOc !c0c9cNcWccYc "c9cNcWccYc # doReportc9cNcOccc9c:cc $c9cNcWc %cc & notc9c:cc 'c9c:cc (actiontestc9c:cc )actiontestc9c:cc *c9cNcWc +cc9c:c ,c -c .c / c 0cHc 1c 2c 3c 4c 5c9cNcOc 6cc9c:c;c 7c9cNcOccc9c:cc 8c9c:cGc 9c :c ;c9cNcWccc9c:c/c <1c9c:c;c =c9c:cTc >c9cNcWc ?cYc @c9c:c;c A list:contains:c9c:cc Bc9c:c Cc D autoBlockc Ec F empty? %list c9cNcOc Gcc9c:c Hc Ic Jc Kc9c:ccc Lc Mc N c OcHc Pc Qc Rc Sc T#!_s0lK%)Fc Uc Vc Wnewtime +c9c:c Xc9c:c Yc Zc [c9c:c \c9c:c Yc ]c ^c9cNcOc _c'c9cNcOc _c'c9c:cc `c9c:c;c ac9c:c bc cc dc ec9cNcc fc9cNcOc gc2c9c:c;c hc9cNcOc ic2c9c:c;c jc9c:cc kc lc9cNcc mc9c:c/c n0c9c:c;c oc9cNcOc pc80c9c:c;c q concatenate:with:c9c:ccYc rc9c:cc sc tc9cNcOc uc>c9c:c;c vc9cNcOc wc> with inputsc9c:ccYc xc9c:c;c yc9c:c;c zc9c:ccYc {c9c:cc | EventHatMorph Scratch-StartClicked changeVariablec9cEccQc }c ~c9cEccQc c c9cEccDc think:c9cEcc8c  scratchCommentcThis project demonstrates streams, a/k/a lazy lists, a/k/a normal order evaluation, a/k/a infinite lists! After you click the green flag (and it runs for a rather long time, sorry) the variable PRIMES contains a list of /all/ the prime numbers! SHOW-STREAM is a utility function that displays the first few elements of an infinite stream, since you can't display the whole thing. :) The basic constructor for lists is CONS-STREAM; it's the stream version of ADJOIN in the tools project, i.e., it takes two inputs, one new item and an existing stream, and it returns a new stream with the new item at the front. But it's crucially important that its second input is always grey-bordered; that input is *really* a zero-input reporter (a "promise") that, when "cashed in," reports the desired stream tail. STREAM-CAR is like ITEM 1 OF for streams. STREAM-CDR is like ALL BUT FIRST ITEM OF for streams. (The funny names come from the Lisp list primitives; I was too excited about this project to bother making up more Scratch-like names! Anyway, ALL BUT FIRST ITEM OF STREAM < > just seems like too much of a mouthful.) ONES is the infinite list of 1 as every item, because its first element is 1, and when you cash in the promise for the rest of the list, you just get ONES again. INTEGERS is the (positive) integers because its first item is 1, and for the rest, item N+1 is the sum of item N of INTEGERS (i.e., N) and item N of ONES (i.e., 1). PRIMES is the infinite list of prime numbers because it's made by applying the Sieve of Eratosthenes to the integers starting from 2. (Look it up if you don't know the algorithm.) c9cEcc c9cEcc c9cEcc c c c9cEcc c9cEc c c c c9cEcc c c c c9cEcc c c c c9cNcOcc}c c c9cNcOcXcc9cNcOc[cc9cEcc 2c9cEcc c c c c9cNcOccc9cEcc c c c c c9cNcOcfcc9cNcOchcc9cEcc 2c9cEcc c c c c9cEcc c c c c9cNcOcrcc9cNcOctcc9cNcOc-cc9cEcc 0c9cEc/c c c c c9cNcOc{cc9cNcOc}c2c9cEcc c c c c9cNcOccc9cEcc 0c9cEcc c c c c9cNcOccc9cEcc 0c9cEc/c c c c9cEccAc c c c9cNcOccc9cEcc c9cNcOcFc c cHc c c c c  c9cNcNc c cVc c c9cNcOccc9cEcc c9cNcOcTc c cHc c c c c  c9cNcNc c cVc c c9cNcOccc9cEcc c9cNcOc`cƯ c cHc c c c c  c9cNcNc c cVc c c9cEc/c 0c9cNcOccc9cNcOclc0c9cNcOcmcc c c9cNcOccc9cNcOcpc0c9cEc c crc c c 0c9cNcOcvcc c c9cNcOcycc9cEcc c c c c9cNcOc~cc9cNcOccc9cNcOcycc9cNcOcc c9cNcNc c cVc c c9cNcOccc9cNcOccc9cEcc c c c c9cEcc c c c9cEcc c c9cNcOccc9cNcOccc c9cNcOccc9cNcOccc9cNcOcc0c9cEc/c c c c9cNcOccc9cNcOccc9cNcOccc9cEcc c9cEcc c c 1c9cEcc c c c c9cNcOccc9cNcOccc9cEcc c c c c c c9cEcc c c9cNcc c9cNcc c9cEccc c c c9cNcOccc9cEcc c9cNcOcc c cHc c c c c  c9cNcNc c cVc c c9cNcOccc9cNcOccc9cNcOcc!c9cEcc c c9cEcc c c9cEcc c9cEcc !c9cEccc "c #c9cEccQc $c %c9cEccc &c 'c9cEccc (c )c9cEccQc *c +c9cEcc ,c -c .c9cEcc /c 0c 1c9cEcc 2c 3c9cEccc 4c 5c9cEc c 6cc 7c 8c 9c9cEccQc :c ;!_s0lK%)Fc c ?strmc9cNcOcc_c9c:cc @c9cNcOc Ac_strmfc9cNcOc Bce stringLength:c9cNcOc Cckc9c:cc Dc Ec Fc Gc9cNcOc Hcrc9c:cc Ic Jc Kc Lc9c:cc Mc9c:cc N!_s0lK%)Fc9cNcOc Occ9c:cc Pc Qc9cNcOcXc changeVar:by:c9cNcOc Rcc9c:c bc Sc Tc Uc9c:cc Vc Wc Xc Ylistc9cNcOccc9c:c c Zc c [c \c9cNcOc ]cc9c:cc ^c _c `!_s0lK%)Flists0c9c:c/c ac bc cc9cNcOc dcc9c:cc ec f!_s0lK%)Fc9cNcOc gcc9c:c/c hc ic jc9c:c/c kc lc m!_s0lK%)Flist#c9c:c c nc c oc p# functionWithArgsc qc9c:c bc rc sc tc9cNcOc qc!_s0lK%)Fc uc v!_s0lK%)Fc wc x'a VariableBlockMorph(UTF8['list'] 2054)c yc zc {c9c:cc |c }!_s0lK%)F'a VariableBlockMorph(UTF8['list'] 3491)c yc zc ~c9c:c c c !_s0lK%)F'a VariableBlockMorph(UTF8['list'] 2863)c yc zc c9c:c>c c list#c9c:c c c c test#c9c:c c c c #c9cNcOc c-11c9cNcWc cYc c9c:cc step c9c:cBc c cUc c  c9c:cBc c cUc c c9cNcOc cic9cNcOc !cc9cNcOc cc9cNcOc cc9cNcOccc9cNcOc c# doRunBlockWithArgListc9cNcOc c with input listc9c:ccAc c c !_s0lK%)Fsentc9cNcOccc9cNcOc cc9c:cc c c c c c9cNcOc c c9c:ccAc c c c9cNcOc ?c smallc9c:c bc c sc c9c:cc ^c c  c cHc c c c c letter:of:c9cNcOc cc9c:cc c c9c:cc c lists doRunBlockWithArgsc9cNcOc c with inputsc9cNcOc cc9cNcOc c c cHc c c c c  c9c:c c c cVc c c !_s0lK%)F'a VariableBlockMorph(UTF8['list'] 3636)c yc zc c9c:cc c xpos *c9cNcOc c!c9c:c c c yposc9cNcOc c!c9c:c c c posc9cNcOc c,c9c:cc doCallBlockWithArgListc9cNcOc c, with input listc9c:ccc c c c s1c9cNcOc ic2s2c9cNcOc gc2c9c:ccYc c9c:ccYc c c9cNcOcc8num...c9cNcOc c8 c9c:cc8c c sc9cNcOc uc>predc9cNcOc uc>c9c:ccQc c c9c:cc>c c c9cNcOc cDc 1c9cNcc 1c9cNcc c9cEcc_c c9c:c c c cHc c c c c c9cNcOccYc9cEc/c 2c9cEcc c c9cNcOcc_c9cNcOccec9cEc c c c c9cEcc 0c9cEc;c c9cEcGc c c c9cEcc 0c9cEc;c c9cEcGc c c c9cEc;c c9cEc;c  c cHc c c c c c9cNcOc[cc9cEc/c c9cEcc c c9cNcWc[cc9cEc/c 0c9cEc;c c9cNcWccYc c9cEcGc c c c9cNcOccc9cNcOchcc9cEc/c c9cNcWcfcYc c9cNcWchcc9cEc/c 0c9cEc;c c9cEc;c  c cHc c c c c c9cNcOccc9cNcWctcc9cNcWc-cYc c9cEcvc c c9cNcOc}cc9cEcc c9cNcWc{cYc c9cNcWc}c c cHc c c c c c9cEc/c !1c9cEcvc "c #c9cEcvc $c % c &cHc 'c (c )c *c +c9cNcOccc9cNcWccc9cEc>c ,c -c9cNcOcc c9cEcc .c /cUcc 0c 1 c 2cHc 3c 4c 5c 6c 7 c 8cHc 9c :c ;c <c =!_s0lK%)Fc >c ?c @ c AcHc Bc Cc Dc Ec F!_s0lK%)Fc Gc Hc I c JcHc Kc Lc Mc Nc O!_s0lK%)Fc Pc Qc Rc9cNcOc cc9cNcWc cc9cNcWccYc Sc9cNcOc cc9cNcOccc9cNcWc cc9cNcWccYc Tc9cNcWc cc9cEcc Uc9cNcOccc9cNcOccc9cNcWcycYc Vc9cNcWcycYc Wc Xc Yc9cNcOc !c0c9cNcWccYc Zc9cNcWccYc [c9cNcOccc9cEcc \c9cNcWc %cc ]c9cEcc ^c9cEcc _c9cEcc `c9cEcc ac9cNcWc +cc9cEc ,c bc .c c c dcHc ec fc gc hc ic9cNcOc 6cc9cEc;c jc9cNcOccc9cEcc kc9cEcGc lc mc nc9cNcWccc9cEc/c o1c9cEc;c pc9cEcTc qc9cNcWc ?cYc rc9cEc;c sc9cEcc tc9cEc Cc uc vc wc9cNcOc Gcc9cEc Hc xc Jc yc9cEccc zc {c | c }cHc ~c c c c !_s0lK%)Fc c c c9cEc Xc9cEc Yc c c9cEc \c9cEc Yc c c9cNcOc _c'c9cNcOc _c'c9cEcc c9cEc;c c9cEc bc c dc c9cNcc c9cNcOc gc2c9cEc;c c9cNcOc ic2c9cEc;c c9cEcc c c9cNcc c9cEc/c 0c9cEc;c c9cNcOc pc80c9cEc;c c9cEccYc c9cEcc c c9cNcOc uc>c9cEc;c c9cNcOc wc>c9cEccYc c9cEc;c c9cEc;c c9cEccYc c9cEcc 'a VariableBlockMorph(UTF8['head'] 2282)'a VariableBlockMorph(UTF8['tail'] 1534)c yc zc c yc zc c9c:cc strmgsentencec9c:c Cc  c9c:c;c c9c:c;c sentencec9c:c Cc  c9c:c;c c9c:c;c c9cNcOc c}c9cNcOc c}listc9cNcOc[cc9cNcOc Ocwords c9c:cBc c cUc c  with input listc9c:cc c c9c:cc c9c:c;c c9c:cGc c c c9cNcOc cc9cNcOcfcc9c:cc c list +combine with %function items of %list  c9c:cBc c cUc c c9cNcOc ]cc9c:cc c c9cNcWc-cc9c:cc c stringc9cNcOc{cc9c:c Cc c listsc9c:cc c9cNcWc cc9c:cc c c9c:cc c9cNcWc cc9c:cc c c9cNcOc cc9c:cc c c9c:cc c #1c9cNcOc c with input listc9cNcOc qc)a MultiArgReporterBlockMorph('call' 2743)c yc c 'a VariableBlockMorph(UTF8['item'] 3337)c yc zc block c c9cNcOccc insert:at:ofList:c9cNcOccc c9c:cc c c9cNcOc c with inputsc9cNcOccc9cNcOc cc9cNcOccactionic9cNcOc~cc9cNcOc cc9c:cc c c9c:cc c actiontestactionlistsactionc9cNcOc cc9cNcc  c cHc c c c c sentc9c:c Cc c  c9c:cc c c9cNcWccYc c9cNcWccYc listsc9cNcOc c c9cNcc  c cHc c c c c c9cNcc c9c:cc c c9cNcc c9c:ccAc c c !_s0lK%)Fc c c c c wordc9cNcOc cay pigl %word c9c:cc c actionsofar#!_s0lK%)Fc c  procedureWithArgsc c9cNcOc cc c c9cNcOccdist computeFunction:of: cosc9c:c Zc  sinc9c:c Zc strms c cHc c c c c fnc9cNcOc c,c9cNcc  c cHc c c c c c9c:c bc c dc c9cNcOc gc2c9cNcOc ic2c9c:cc2c c strmc9c:cc_c c9c:c c c9c:ccYc c9c:cc c9cNcOc wc>c9c:cc_c sc9c:ccDc !c "c #c9c:c c readVariable!_s0lK%)Fc $c %c &c 'c9cNcOcc_c9cEcc (c9cNcOc Ac_c9cNcOc Bcec9cNcOc Cckc9cEcc )c *c +c ,c9cNcOc Hcrc9cEcc -c .c /c 0c9cEcc 1c9cEcc 2!_s0lK%)Fc9cNcOc Occ9cEcc 3c 4c9cNcOcXcc9cNcOc Rcc9cEc bc 5c Tc 6c9cEcc 7c 8c 9c :c9cNcOccc9cEc c ;c c c ?!_s0lK%)F0c9cEc/c @c Ac Bc9cNcOc dcc9cEcc Cc D!_s0lK%)Fc9cNcOc gcc9cEc/c Ec Fc Gc9cEc/c Hc Ic J!_s0lK%)Fc9cEc c Kc c Lc Mc qc9cEc bc Nc sc Oc9cNcOc qc!_s0lK%)Fc Pc Q!_s0lK%)Fc Rc S'a VariableBlockMorph(UTF8['list'] 2729)c yc zc Tc9cEcc Uc V!_s0lK%)F'a VariableBlockMorph(UTF8['list'] 1264)c yc zc Wc9cEc c Xc Y!_s0lK%)F&a VariableBlockMorph(UTF8['list'] 426)c yc zc Zc9cEc>c [c \c9cEc c ]c c ^c9cEc c _c c `c9cNcOc c-11c9cNcWc cYc ac9cEcc b c9cEcBc cc dcUc c e c9cEcBc fc gcUc c hc9cNcOc cc9cNcOc !cc9cNcOc cc9cNcOc cc9cNcOccc9cNcOc cc9cNcOc cc9cEccAc ic jc k!_s0lK%)Fc9cNcOccc9cNcOc cc9cEcc lc mc nc oc pc9cNcOc c c9cEccAc qc rc sc9cNcOc ?c c9cEc bc tc sc uc9cEcc ^c vc w c xcHc yc zc {c |c }c9cNcOc cc9cEcc ~c c9cEcc c c9cNcOc cc9cNcOc cc9cNcOc c c cHc c c c c  c9cEc c c cVc c c !_s0lK%)F&a VariableBlockMorph(UTF8['list'] 868)c yc zc c9cEcc c c9cNcOc c!c9cEc c c c9cNcOc c!c9cEc c c c9cNcOc c,c9cEcc c9cNcOc c,c9cEccc c c c c9cNcOc ic2c9cNcOc gc2c9cEccYc c9cEccYc c c9cNcOcc8...c9cNcOc c8 c9cEcc8c c c9cNcOc uc>c9cNcOc uc>c9cEccQc c c9cEcc>c c c9cNcOc cDc c c c9cNcOc Ac_c9cNcOc Cckc9c:ccc c9c:cckc c9cNcOc Hcrc9c:cc c yesnoc9c:ccc all but first of %list c9cNcOc cc9cNcOc cc9cNcOccc9c:cc c c c functionc9cNcOchcc9cNcOccc9c:cc c c9cNcOctcc9cNcOccc9c:cc c c9cNcOcrcc9cNcOc}cc9cNcOc dcc9cNcOc gc#c9c:c c c c c9cNcOccc9cNcOc gcc9c:c bc c c c9cNcOccpredc9cNcOc cc9cNcOccc9c:cc c c9cNcOccfunction Stagec c c9cNcOc cc9cNcOc cc9cNcOc cc9c:cc c c9c:cc c functionfunctionactionc9cNcOc cc9cNcOc cc9cNcOc cc9cNcOc c####c !_s0lK%)Fc c c9cNcOccc9cNcOc cc9cNcOccc9cNcOccc9c:cc c #c !_s0lK%)Fc c c c9cNcOc c c c9cNcOc c  c9c:cc c cUc c c  c cHc c c c c aeiouc9c:cc c c9c:c Cc  a ReporterBlockMorph('item' 584)c yc c newc9c:c ,c c c c9cNcOc c -c9c:c c9c:c !_s0lK%)F#c !_s0lK%)Fc c c9cNcc c9c:ccc c c c9c:cc_c c9c:cc_c c9cNcOc c8c9cNcOc c8c9cNcOc uc>c c9cNcOc uc>c9c:cc>c c c9c:c cc9cEcc2c c &a VariableBlockMorph(UTF8['head'] 133)'a VariableBlockMorph(UTF8['tail'] 3433)c yc zc c yc zc c9cEcc c9cEc Cc  c9cEc;c c9cEc;c c9cEc Cc  c9cEc;c c9cEc;c c9cNcOc c}c9cNcOc c}c9cNcOc[cc9cNcOc Oc c9cEcBc c cUc c c9cEcc c c9cEcc c9cEc;c c9cEcGc c c c9cNcOc cc9cNcOcfcc9cEcc c  c9cEcBc c cUc c c9cNcOc ]cc9cEcc c c9cNcWc-cc9cEcc c c9cNcOc{cc9cEc Cc c c9cEcc c9cNcWc cc9cEcc c c9cEcc c9cNcWc cc9cEcc c c9cNcOc cc9cEcc c c9cEcc c c9cNcOc cc9cNcOc qc)a MultiArgReporterBlockMorph('call' 4032)c ycEc 'a VariableBlockMorph(UTF8['item'] 3629)c yc zc c c9cNcOccc c9cNcOccc c9cEcc c c9cNcOc cc9cNcOccc9cNcOc cc9cNcOccc9cNcOc~cc9cNcOc cc9cEcc c c9cEcc c !c9cNcOc cc9cNcc " c #cHc $c %c &c 'c (c9cEc Cc )c * c9cEcc +c ,c9cNcWccYc -c9cNcWccYc .c9cNcOc c c9cNcc / c 0cHc 1c 2c 3c 4c 5c9cNcc 6c9cEcc c 7c9cNcc 8c9cEccAc 9c :c ;!_s0lK%)Fc c ?c @c9cNcOc cayc9cEcc Ac B!_s0lK%)Fc Cc Dc c9cNcOc cc Ec Fc9cNcOccc9cEc Zc Gc9cEc Zc H c IcHc Jc Kc Lc Mc Nc9cNcOc c,c9cNcc O c PcHc Qc Rc Sc Tc Uc9cEc bc Vc dc Wc9cNcOc gc2c9cNcOc ic2c9cEcc2c Xc Yc9cEcc_c Zc9cEc c [c9cEccYc \c9cEcc ]c9cNcOc wc>c9cEcc_c ^c9cEccDc _c9cNcOc `cQc9cNcOc acQc9cNcOc Cckc9c:ccc bc9c:c Cc cc9c:ccrc d c ecHc fc gc hc ic jwordsc9cNcOccc9c:c;c kc9c:c;c l join words %words  c mcHc nc oc pc qc rc9cNcOc-cc9c:cc sc tc9cNcOc ucc9c:cc vc wc9cNcOc uc with input listc9c:ccc xc yc z#c9cNcOc cc9cNcOccc9c:c bc {c sc |c9cNcOc }clistlistlistc9cNcOccc9cNcOcciendc9c:cc ~c 'a VariableBlockMorph(UTF8['lists'] 305)c yc zc c9cNcOccc9c:c Cc c c9c:cc !a ReporterBlockMorph('item' 1715)c yc c c9c:cc c c9c:cc c #c c9c:ccAc c c c9cNcOc c !_s0lK%)Fc c %all but first letter of %string c9cNcOc cc9cNcOc cc  c9cNc c c cVc c with input listc9c:cc c list headingc9c:ccY'a VariableBlockMorph(UTF8['strms'] 458)c yc zc c c9cNcOc c,c9cNcc  c cHc c c c c c9cNcOc gc2c9cNcOc ic2numc9c:cc>c c c9c:c c c9c:cc_c c9c:c cc9c:c cc c c9cNcOc Ac_c9cNcOc Cckc9cEccc c9cEcckc c9cNcOc Hcrc9cEcc c c9cEccc c9cNcOc cc9cNcOc cc9cNcOccc9cEcc c c c c9cNcOchcc9cNcOccc9cEcc c c9cNcOctcc9cNcOccc9cEcc c c9cNcOcrcc9cNcOc}cc9cNcOc dcc9cNcOc gcc9cEc c c c c9cNcOccc9cNcOc gcc9cEc bc c c c9cNcOccc9cNcOc cc9cNcOccc9cEcc c c9cNcOccc c c9cNcOc cc9cNcOc cc9cNcOc cc9cEcc c c9cEcc c c9cNcOc cc9cNcOc cc9cNcOc cc9cNcOc cc !_s0lK%)Fc c c9cNcOccc9cNcOc cc9cNcOccc9cNcOccc9cEcc c c !_s0lK%)Fc c c c9cNcOc c c c9cNcOc c  c9cEcc c cUc c c  c cHc c c c c aeiouc9cEcc c c9cEc Cc !a ReporterBlockMorph('item' 3487)c ycEc c9cEc ,c c c c9cNcOc cc9cEc c9cEc !_s0lK%)Fc !_s0lK%)Fc c c9cNcc c9cEccc c c c9cEcc_c c9cEcc_c c9cNcOc c8c9cNcOc c8c9cNcOc uc>c c9cNcOc uc>c9cEcc>c c headtailc9cNcOc Cckc9cNcOc Hcrc9c:ccc !_s0lK%)Fc9c:cc c9c:cc c !_s0lK%)Fc c c9cNcOctcc9cNcOccfunctionc9cNcOc cc9c:cc c9cNcOc cc9cNcc  c cHc c c c c c9cNcc c9cNcOc citemc9cNcOc c c c9cNcOccc9cNcOc c c cHc c c c c c  c cHc cccc append %lists  ccHccccc newitemc9cNcOc c  c9c:cBc c cUc c ccHccccc!a ReporterBlockMorph('item' 2305)c yc cc9c:cc autoLambdacc9cNcOc Gccc9c:cc,cc#c!_s0lK%)Fccc9cNcOc wc>c9c:cc_c autoPredicatecc9cNcOc cDc9cNcOc `cQc9cNcOc acQc9cNcOc Cckc9cEccc c9cEc Cc!c9cEccrc" c#cHc$c%c&c'c(c9cNcOccc9cEc;c)c9cEc;c* c+cHc,c-c.c/c0c9cNcOc-cc9cEcc1c2c9cNcOc ucc9cEcc3c4c9cNcOc ucc9cEccc5c6c7c9cNcOc cc9cNcOccc9cEc bc8c sc9c9cNcOc }cc9cNcOccc9cNcOccc9cEcc:c (a VariableBlockMorph(UTF8['lists'] 1642)c yc zc;c9cNcOccc9cEc Cc!a ReporterBlockMorph('item' 1489)c ycEc?c9cEcc c@c9cEcc cAc c9cEccAcBcCcDc9cNcOc c !_s0lK%)FcEcFc9cNcOc cc9cNcOc ccG c9cNc cHcIcVcJcKc9cEcc cLc9cEccY'a VariableBlockMorph(UTF8['strms'] 754)c yc zcMcNc9cNcOc c,c9cNccO cPcHcQcRcScTcUc9cNcOc gc2c9cNcOc ic2c9cEcc>cVcWc9cEc cXc9cEcc_cYc9cNcOc Hcrc9cNcOc cc9c:ccZc9c:cc[c\#c9cNcOc gcic]!_s0lK%)Fc^c_c`lists#c9cNcOc c!_s0lK%)Fcac9c:ccb!_s0lK%)F!_s0lK%)Fcccd#c9c:ccecf!_s0lK%)Fcgchcic9cNcOc Gcc9c:cccjckclcmc9cNcOc c,c9cNcOc c, cncHcocpcqcrcsc9c:cc_(a VariableBlockMorph(UTF8['strms'] 3731)c yc zctc9cNcOc uc>c9c:ccucvc9cNcOc Cckc9cNcOc Hcrc9cEcccw!_s0lK%)Fc9cEccxc9cEccycz!_s0lK%)Fc{c|c9cNcOctcc9cNcOccc9cNcOc cc9cEcc}c9cNcOc cc9cNcc~ ccHcccccc9cNccc9cNcOc cc9cNcOc ccc9cNcOccc9cNcOc c ccHcccccc ccHccccc ccHcccccc9cNcOc c  c9cEcBcccUc c ccHccccc!a ReporterBlockMorph('item' 2302)c ycEcc9cEcccc9cNcOc Gccc9cEcc,ccc!_s0lK%)Fccc9cNcOc wc>c9cEcc_ccc9cNcOc cDc9cNcOc c c9cNcOccc9c:ccc (a VariableBlockMorph(UTF8['lists'] 1835)c yc zcc9c:cc cc9cNcOc c nilnil adjoin %item to %list c9cNcOc c (a VariableBlockMorph(UTF8['small'] 3383)c yc zcc9c:cc ccHcccccc9cNcOccc9c:c cc Jccc9cNcOc c!_s0lK%)Fcc9c:ccc0c9cNcOc Hcrc9cNcOc cc9cEccc9cEcccc9cNcOc gcc!_s0lK%)Fcccc9cNcOc c!_s0lK%)Fcc9cEcc!_s0lK%)F!_s0lK%)Fccc9cEccec!_s0lK%)Fcccc9cNcOc Gcc9cEccccccc9cNcOc c,c9cNcOc c, ccHcccccc9cEcc_(a VariableBlockMorph(UTF8['strms'] 3874)c yc zcc9cNcOc uc>c9cEcccc9cNcOcccޯ ccHccccccc9cNcOc c !_s0lK%)Fcombinerc9cNcOccc9cNcOc cc9cNcOc cc9cNcOc c, \\ c9c:ccYcc9cNcOc c c9cNcOccc9cEccc (a VariableBlockMorph(UTF8['lists'] 2354)c yc zcc9cEcc cc9cNcOc c nilnilc9cNcOc c (a VariableBlockMorph(UTF8['small'] 1679)c yc zcc9cEcc ccHcccccc9cNcOccc9cEc cc Jccc9cNcOc c!_s0lK%)Fcc9cEccc0#c9cNcOc gc!_s0lK%)Fc9cNcOc ?c c9cNcOc cDc9cNcOccc ccHccccccc9cNcOc c !_s0lK%)Fc9cNcOccc9cNcOc cc9cNcOc cc9cNcOc c, c9cEccYcc9cNcOc gc!_s0lK%)Fc9cNcOc ?c c9cNcOc cD