<snapdata remixID="13502906"><project name="better list library" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAxJJREFUeF7t10FKmwEUhdE/7kXcgBtxqqtwWzp0P7oOnaRQaOmkvaVwcyE9mebxHjn/pyGn8/l8PrwIjAROAhzJO/tdQIBCmAoIcMrvuAA1MBUQ4JTfcQFqYCogwCm/4wLUwFRAgFN+xwWogamAAKf8jgtQA1MBAU75HRegBqYCApzyOy5ADUwFBDjld1yAGpgKCHDK77gANTAVEOCU33EBamAqIMApv+MC1MBUQIBTfscFqIGpgACn/I4LUANTAQFO+R0XoAamAgKc8jsuQA1MBQQ45XdcgBqYCghwyu+4ADUwFRDglN9xAWpgKiDAKb/jAtTAVECAU37HBaiBqYAAp/yOC1ADUwEBTvkdF6AGpgICnPI7LkANTAUEOOV3XIAamAoIcMrvuAA1MBUQ4JTfcQFqYCogwCm/4wLUwFRAgL/hv7+/P56fn4+np6fpA7r24wL8wxN+eHj4+e7Hx8fx+vp63N7eXnsTF/18Agzcv0b4Y/Tm5ub4+vo63t7eLvqwrvGYAP8xwM/Pz+8Bnk6na+ziYp9JgH/5Ffz+/n68vLwcd3d3F3s4/8MhAYYfIY+Pj/7LFf8SBFjEtToLCDAbmSgKCLCIa3UWEGA2MlEUEGAR1+osIMBsZKIoIMAirtVZQIDZyERRQIBFXKuzgACzkYmigACLuFZnAQFmIxNFAQEWca3OAgLMRiaKAgIs4lqdBQSYjUwUBQRYxLU6CwgwG5koCgiwiGt1FhBgNjJRFBBgEdfqLCDAbGSiKCDAIq7VWUCA2chEUUCARVyrs4AAs5GJooAAi7hWZwEBZiMTRQEBFnGtzgICzEYmigICLOJanQUEmI1MFAUEWMS1OgsIMBuZKAoIsIhrdRYQYDYyURQQYBHX6iwgwGxkoiggwCKu1VlAgNnIRFFAgEVcq7OAALORiaKAAIu4VmcBAWYjE0UBARZxrc4CAsxGJooCAiziWp0FBJiNTBQFBFjEtToLCDAbmSgKCLCIa3UWEGA2MlEUEGAR1+osIMBsZKIoIMAirtVZQIDZyERRQIBFXKuzwDfW/fyokLE7XwAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="better list library"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;data1&apos; in front of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportCONS"><block var="data1"/><block var="list"/></block></block></script><script><block s="doReport"><block s="reportCONS"><block var="data1"/><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="item %&apos;data1&apos; of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n">1<options>1&#xD;last&#xD;random</options></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doIf"><block s="reportIsA"><block var="data1"/><l><option>number</option></l></block><script><block s="doReport"><block s="reportListItem"><block var="data1"/><block var="list"/></block></block></script><list><block s="reportVariadicEquals"><list><block var="data1"/><l>last</l></list></block><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>random</l></list></block><script><block s="doReport"><block s="reportListItem"><l><option>random</option></l><block var="list"/></block></block></script></list></block></script><script><block s="doIf"><block s="reportIsA"><block var="data1"/><l><option>number</option></l></block><script><block s="doReport"><block s="reportListItem"><block var="data1"/><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><list><block s="reportVariadicEquals"><list><block var="data1"/><l>last</l></list></block><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>random</l></list></block><script><block s="doReport"><block s="reportListItem"><l><option>random</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></list></block></script></block></script></block-definition><block-definition s="all but first of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportCDR"><block var="list"/></block></block></script><script><block s="doReport"><block s="reportCDR"><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="%&apos;data1&apos; of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s">length<options>length&#xD;rank&#xD;dimensions&#xD;flatten&#xD;columns&#xD;uniques&#xD;distribution&#xD;sorted&#xD;shuffled&#xD;reverse&#xD;&#126;&#xD;text&#xD;lines&#xD;csv&#xD;json</options></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="data1"/><l>length</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></block></script><list><block s="reportVariadicEquals"><list><block var="data1"/><l>rank</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>dimensions</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>dimensions</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>flatten</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>flatten</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>columns</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>uniques</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>uniques</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>distributions</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>distribution</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>sorted</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>sorted</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>shuffled</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>shuffled</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>reverse</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>reverse</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>text</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>text</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>lines</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>lines</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>csv</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>csv</option></l><block var="list"/></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>json</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>json</option></l><block var="list"/></block></block></script></list></block></script><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="data1"/><l>length</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><list><block s="reportVariadicEquals"><list><block var="data1"/><l>rank</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>dimensions</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>dimensions</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>flatten</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>flatten</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>columns</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>uniques</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>uniques</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>distributions</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>distribution</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>sorted</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>sorted</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>shuffled</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>shuffled</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>reverse</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>reverse</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>text</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>text</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>lines</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>lines</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>csv</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>csv</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>json</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>json</option></l><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></list></block></script></block></script></block-definition><block-definition s="index of %&apos;data1&apos; in %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s">thing</input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListIndex"><block var="data1"/><block var="list"/></block></block></script><script><block s="doReport"><block s="reportListIndex"><block var="data1"/><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="%&apos;list&apos; contains %&apos;data1&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s">thing</input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListContainsItem"><block var="list"/><block var="data1"/></block></block></script><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="variable %s"><block var="list"/></custom-block><block var="data1"/></block></block></script></block></script></block-definition><block-definition s="is %&apos;list&apos; empty?" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListIsEmpty"><block var="list"/></block></block></script><script><block s="doReport"><block s="reportListIsEmpty"><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="stream with numbers from %&apos;start&apos; to %&apos;end&apos;" type="reporter" category="other" helper="true"><header></header><code></code><translations>pt:um canal com os números a partir de _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">Infinity<options>Infinity</options></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="end"/><l>Infinity</l></list></block><script><block s="doReport"><l></l></block></script><list></list></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="list %&apos;requested&apos; items with %&apos;delayed continuation&apos; of stream %&apos;stream&apos;" type="reporter" category="other" helper="true"><comment x="0" y="0" w="467.05111607142857" collapsed="false">Report a specified number of items from a stream as a list. The “delayed continuation”, starting immediately after the last of the reported items, is made available as an upvar (see inside for demo of continuation; be careful not to use the same identifier for input and upvar continuations).&#xD;&#xD;Replaces SHOW STREAM from version 1 of this library.&#xD;&#xD;The inputs are an integer and a stream. With a positive integer, LIST ... STREAM reports a regular finite list of length less than (for short finite streams) or equal to the integer. It&apos;s useful because an infinite stream can&apos;t be displayed in a finite amount of time.&#xD;&#xD;Alternatively, ”all” (or “Infinity”) may be used as first input, for the showing to continue until the end of the stream will have been reached. Better not try this with infinite streams: the process may never terminate!&#xD;&#xD;Another cause of not terminating:&#xD;1. the input stream is part of a chain of streams AND&#xD;2. the number of elements of the input stream is less than the number of items specified to be reported AND&#xD;3. the first stream of the input chain is infinite.&#xD;For example: LIST ( 10 ) ITEMS OF STREAM ( KEEP ITEMS SUCH THAT ( _ &lt; 5 ) FROM STREAM ( STREAM WITH NUMBERS FROM ( 1 ) ) ).&#xD;Explanation: after the first 4 items, LIST ( 10 ) ITEMS OF STREAM will keep on asking for more input, and STREAM WITH NUMBERS FROM ( 1 ) will keep generating new items forever, each of which will be discarded by KEEP ITEMS SUCH THAT ( _ &lt; 5 ) FROM STREAM, which is the middle part of the chain.&#xD;&#xD;General info on streams: see the help text of TAIL OF STREAM.</comment><header></header><code></code><translations></translations><inputs><input type="%n">10<options>all=Infinity</options></input><input type="%upvar"></input><input type="%l"></input></inputs></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="delay %&apos;expression&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%anyUE"></input></inputs><script><block s="doReport"><block var="expression"/></block></script></block-definition><block-definition s="$gears HELPER stream with numbers from %&apos;start&apos; to %&apos;end&apos;" type="reporter" category="other" helper="true"><header></header><code></code><translations>pt:um canal com os números a partir de _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">Infinity<options>Infinity</options></input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doReport"><l></l></block></script><list></list></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="map %&apos;function&apos; over stream %&apos;stream&apos;" type="reporter" category="other" helper="true"><comment x="0" y="0" w="181.33333333333334" collapsed="false">As of v2 of the Streams library, this block is obsolete (kept as a hidden block for upward compatibility from v1).</comment><header></header><code></code><translations>pt:a aplicação de _ aos itens dos canais _&#xD;</translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="add %&apos;data1&apos; to %&apos;list&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s">thing</input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doAddToList"><block var="data1"/><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block s="reportNewList"><list><block var="data1"/></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script></block-definition><block-definition s="delete %&apos;data1&apos; of %&apos;list&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n">1<options>1&#xD;last&#xD;&#126;&#xD;all</options></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="data1"/><l><option>number</option></l></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doDeleteFromList"><block var="data1"/><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block var="data1"/><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script><list><block s="reportVariadicEquals"><list><block var="data1"/><l>last</l></list></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doDeleteFromList"><l><option>last</option></l><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block s="reportNewList"><list><l>last</l></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script><block s="reportVariadicEquals"><list><block var="data1"/><l>all</l></list></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doDeleteFromList"><l>all</l><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block s="reportNewList"><list><l>all</l></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script></list></block></script></block-definition><block-definition s="insert %&apos;data1&apos; at %&apos;data2&apos; of %&apos;list&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s">thing</input><input type="%n">1<options>1&#xD;last&#xD;random</options></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="data2"/><l><option>number</option></l></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doInsertInList"><l>thing</l><l><option>last</option></l><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block var="data1"/><block var="data2"/><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script><list><block s="reportVariadicEquals"><list><block var="data2"/><l>last</l></list></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doInsertInList"><l>thing</l><l><option>last</option></l><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block var="data1"/><l>[last]</l><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script><block s="reportVariadicEquals"><list><block var="data2"/><l>random</l></list></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doInsertInList"><l>thing</l><l><option>last</option></l><block var=" "/></block></script><list></list></block><l><option>blocks</option></l></block></block><block var="data1"/><l>[random]</l><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script></list></block></script></block-definition><block-definition s="replace item %&apos;data1&apos; of %&apos;list&apos; with %&apos;data2&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n">1<options>1&#xD;last&#xD;random</options></input><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s">thing</input></inputs><script><block s="doIf"><block s="reportIsA"><block var="data1"/><l><option>number</option></l></block><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doReplaceInList"><l><option>last</option></l><block var=" "/><l>thing</l></block></script><list></list></block><l><option>blocks</option></l></block></block><block var="data1"/><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block><block var="data2"/></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script><list><l><bool>true</bool></l><script><block s="doRun"><block s="reportAttributeOf"><block s="reportJoinWords"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyScript"><script><block s="doReplaceInList"><l><option>last</option></l><block var=" "/><l>thing</l></block></script><list></list></block><l><option>blocks</option></l></block></block><block s="reportJoinWords"><list><l>[</l><block var="data1"/><l>]</l></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="list"/></list></block><block var="data2"/></list></block></block><block s="reportEnvironment"><l><option>caller</option></l></block></block><list></list></block></script></list></block></script></block-definition><block-definition s="variable %&apos;var&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="var"/></list></block><block s="reportEnvironment"><l><option>script</option></l></block></block><list></list></block></block></script></block-definition><block-definition s="map %&apos;data1&apos; over %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block var="data1"/><block var="list"/></block></block></script><script><block s="doReport"><block s="reportMap"><block var="data1"/><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="helper %&apos;thing&apos;" type="reporter" category="variables" helper="true"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="thing"/><l><option>list</option></l></block><block var="thing"/><block s="reportAskFor"><block s="reportEnvironment"><l><option>caller</option></l></block><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block><block var="thing"/></list></block><list></list></block></block></block></script></block-definition><block-definition s="keep items %&apos;data1&apos; from %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportKeep"><block var="data1"/><block var="list"/></block></block></script><script><block s="doReport"><block s="reportKeep"><block var="data1"/><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="find first item %&apos;data1&apos; from %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportFindFirst"><block var="data1"/><block var="list"/></block></block></script><script><block s="doReport"><block s="reportFindFirst"><block var="data1"/><custom-block s="variable %s"><block var="list"/></custom-block></block></block></script></block></script></block-definition><block-definition s="combine %&apos;list&apos; using %&apos;data1&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%repRing"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportCombine"><block var="list"/><block var="data1"/></block></block></script><script><block s="doReport"><block s="reportCombine"><custom-block s="variable %s"><block var="list"/></custom-block><block var="data1"/></block></block></script></block></script></block-definition><block-definition s="for each %&apos;item&apos; in %&apos;list&apos; %&apos;data1&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s"><options>§_getVarNamesDict</options></input><input type="%ca"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><script><block s="doForEach"><l>initem</l><block var="list"/><script><block s="doSetVar"><l>item</l><block var="initem"/></block><block s="doRun"><block var="data1"/><list></list></block></script></block></script><script><block s="doForEach"><l>initem</l><custom-block s="variable %s"><block var="list"/></custom-block><script><block s="doSetVar"><l>item</l><block var="initem"/></block><block s="doRun"><block var="data1"/><list></list></block></script></block></script></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="1322"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="1323"></list></costumes><sounds><list struct="atomic" id="1324"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="1329"><costumes><list struct="atomic" id="1330"></list></costumes><sounds><list struct="atomic" id="1331"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><custom-block s="%s in front of %s"><l></l><l></l></custom-block></script><script x="20" y="53"><custom-block s="item %n of %s"><l>1</l><l></l></custom-block></script><script x="20" y="85.99999999999997"><custom-block s="all but first of %s"><l></l></custom-block></script><script x="20" y="118.99999999999994"><custom-block s="%s of %s"><l>length</l><l></l></custom-block></script><script x="20" y="151.99999999999994"><custom-block s="index of %s in %s"><l>thing</l><l></l></custom-block></script><script x="20" y="185"><custom-block s="%s contains %s"><l></l><l>thing</l></custom-block></script><script x="20" y="218"><custom-block s="is %s empty?"><l></l></custom-block></script><script x="20" y="251"><custom-block s="map %repRing over %s"><block s="reifyReporter"><script></script><list></list></block><l></l></custom-block></script><script x="20" y="286"><custom-block s="keep items %predRing from %s"><block s="reifyPredicate"><script></script><list></list></block><l></l></custom-block></script><script x="20" y="321"><custom-block s="find first item %predRing from %s"><block s="reifyPredicate"><script></script><list></list></block><l></l></custom-block></script><script x="20" y="356"><custom-block s="combine %s using %repRing"><l></l><block s="reifyReporter"><script></script><list></list></block></custom-block></script><script x="20" y="391"><custom-block s="for each %upvar in %s %ca"><l>item</l><l></l><script></script></custom-block></script><script x="20" y="453.83333333333326"><custom-block s="add %s to %s"><l>thing</l><l></l></custom-block></script><script x="20" y="492.8333333333335"><custom-block s="delete %n of %s"><l>last</l><l>test1</l></custom-block></script><script x="20" y="531.8333333333335"><block s="doDeleteFromList"><l>1</l><l/></block></script><script x="20" y="570.8333333333337"><block s="doInsertInList"><l>thing</l><l>1</l><l/></block></script><script x="20" y="609.8333333333337"><custom-block s="insert %s at %n of %s"><l>thing</l><l>1</l><l></l></custom-block></script><script x="20" y="648.8333333333337"><custom-block s="replace item %n of %s with %s"><l>1</l><l></l><l>thing</l></custom-block></script><script x="20" y="687.8333333333337"><block s="doReplaceInList"><l>1</l><l/><l>thing</l></block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="better list library" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>