<snapdata remixID="10422906"><project name="chacha cipher" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAADL0lEQVR4Xu3WPUpzYRSF0TdYS6ZjLdaBFE7DCTgCwRlZOg8hiFWmYPD76QRRD2zZhevWh3PIug/cbN7+PstDoCSwEWBJ3tn/AgIUQlVAgFV+xwWogaqAAKv8jgtQA1UBAVb5HRegBqoCAqzyOy5ADVQFBFjld1yAGqgKCLDK77gANVAVEGCV33EBaqAqIMAqv+MC1EBVQIBVfscFqIGqgACr/I4LUANVAQFW+R0XoAaqAgKs8jsuQA1UBQRY5XdcgBqoCgiwyu+4ADVQFRBgld9xAWqgKiDAKr/jAtRAVUCAVX7HBaiBqoAAq/yOC1ADVQEBVvkdF6AGqgICrPI7LkANVAUEWOV3XIAaqAoIsMrvuAA1UBUQYJXfcQFqoCogwCq/4wLUQFVAgFV+xwWogaqAAKv8jgtQA1UBAVb5HRegBqoCAqzyOy5ADVQFBFjld1yAnzRwOp3W2dmZSn5QQICf4N7c3Kzn5+f1+vq6Li4u1u3t7Q++it+5WoBfvPerq6t1fn7+bupwOKz7+/t1eXn5O6sJ/moBfgNzv99/OLXZbNbxeFyPj4/f2GLkIwEBftHFbrd79z/w5eVlPTw8rO12q6iAgAA/Qby+vl5PT0/r7u5u/fsUe/ICAsyb2jgQEOAAy2heQIB5UxsHAgIcYBnNCwgwb2rjQECAAyyjeQEB5k1tHAgIcIBlNC8gwLypjQMBAQ6wjOYFBJg3tXEgIMABltG8gADzpjYOBAQ4wDKaFxBg3tTGgYAAB1hG8wICzJvaOBAQ4ADLaF5AgHlTGwcCAhxgGc0LCDBvauNAQIADLKN5AQHmTW0cCAhwgGU0LyDAvKmNAwEBDrCM5gUEmDe1cSAgwAGW0byAAPOmNg4EBDjAMpoXEGDe1MaBgAAHWEbzAgLMm9o4EBDgAMtoXkCAeVMbBwICHGAZzQsIMG9q40BAgAMso3kBAeZNbRwICHCAZTQvIMC8qY0DAQEOsIzmBQSYN7VxICDAAZbRvIAA86Y2DgQEOMAymhcQYN7UxoGAAAdYRvMCAsyb2jgQEOAAy2heQIB5UxsHAgIcYBnNCwgwb2rjQECAAyyjeYE/5IkCt8wWXpkAAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="chacha cipher"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="USE BIGNUMS %&apos;bool&apos;" type="command" category="operators"><comment x="0" y="0" w="303.3333333333333" collapsed="false">call with True to turn on the entire Scheme numeric tower, including infinite-precision integers, exact rationals, and complex numbers; call with False to restore native JavaScript arithmetic.</comment><header></header><code></code><translations>pt:altera utilização de aritmética do Scheme para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/biginteger.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/schemeNumber.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/bignums.js</l></list></block><block s="doApplyExtension"><l>big_switch(bool)</l><list><block var="bool"/></list></block></script></block-definition><block-definition s="%&apos;n&apos; !" type="reporter" category="operators"><comment x="0" y="0" w="190.66666666666666" collapsed="false">The factorial function, to make very large numbers, to demo bignums.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="n"/><l>0</l></block><l>1</l><block s="reportProduct"><block var="n"/><custom-block s="%n !"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><comment x="0" y="0" w="234.66666666666666" collapsed="false">The identity function: reports its input.&#xD;It&apos;s useful to get things like 3/4 or 5-2i into&#xD;numeric input slots.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="Scheme number %&apos;function&apos; of %&apos;number&apos;" type="reporter" category="operators"><comment x="0" y="0" w="300" collapsed="true">Provides Scheme arithmetic functions not in JavaScript</comment><header></header><code></code><translations>pt:_ de _&#xD;</translations><inputs><input type="%s" readonly="true"><options>number?&#xD;complex?&#xD;real?&#xD;rational?&#xD;integer?&#xD;exact?&#xD;inexact?&#xD;exact&#xD;inexact&#xD;finite?&#xD;infinite?&#xD;nan?&#xD;numerator&#xD;denominator&#xD;real-part&#xD;imag-part&#xD;magnitude&#xD;angle</options></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>big_scheme(fn, num)</l><list><block var="function"/><block var="number"/></list></block></block></script></block-definition><block-definition s="%&apos;string&apos; as ascii words" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>bytes</l><l>i</l></list></block><block s="doSetVar"><l>bytes</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doAddToList"><block s="reportSum"><block s="reportSum"><block s="reportProduct"><block s="reportUnicode"><block s="reportLetter"><block var="i"/><block var="string"/></block></block><block s="reportPower"><l>2</l><l>24</l></block></block><block s="reportProduct"><block s="reportUnicode"><block s="reportLetter"><block s="reportSum"><block var="i"/><l>1</l></block><block var="string"/></block></block><block s="reportPower"><l>2</l><l>16</l></block></block></block><block s="reportSum"><block s="reportProduct"><block s="reportUnicode"><block s="reportLetter"><block s="reportSum"><block var="i"/><l>2</l></block><block var="string"/></block></block><block s="reportPower"><l>2</l><l>8</l></block></block><block s="reportUnicode"><block s="reportLetter"><block s="reportSum"><block var="i"/><l>3</l></block><block var="string"/></block></block></block></block><block var="bytes"/></block><block s="doChangeVar"><l>i</l><l>4</l></block></script></block><block s="doReport"><block var="bytes"/></block></script></block-definition><block-definition s="%&apos;words&apos; as string" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>letters</l></list></block><block s="doSetVar"><l>letters</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>word</l><block var="words"/><script><block s="doAddToList"><block s="reportUnicodeAsLetter"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="word"/><block s="reportPower"><l>2</l><l>24</l></block></block></block></block><block var="letters"/></block><block s="doAddToList"><block s="reportUnicodeAsLetter"><block s="reportModulus"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="word"/><block s="reportPower"><l>2</l><l>16</l></block></block></block><l>256</l></block></block><block var="letters"/></block><block s="doAddToList"><block s="reportUnicodeAsLetter"><block s="reportModulus"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="word"/><block s="reportPower"><l>2</l><l>8</l></block></block></block><l>256</l></block></block><block var="letters"/></block><block s="doAddToList"><block s="reportUnicodeAsLetter"><block s="reportModulus"><block var="word"/><l>256</l></block></block><block var="letters"/></block></script></block><block s="doUntil"><block s="reportNotEquals"><block s="reportUnicode"><block s="reportListItem"><l><option>last</option></l><block var="letters"/></block></block><l>0</l></block><script><block s="doDeleteFromList"><l><option>last</option></l><block var="letters"/></block></script></block><block s="doReport"><block s="reportJoinWords"><block var="letters"/></block></block></script></block-definition><block-definition s="%&apos;a&apos; ⊻ %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_xor(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;numbers&apos; as hex" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>number</l><block var="numbers"/><script><block s="doDeclareVariables"><list><l>element</l></list></block><block s="doSetVar"><l>element</l><block s="reportNewList"><list></list></block></block><block s="doRepeat"><l>8</l><script><block s="doSetVar"><l>element</l><block s="reportCONS"><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block var="number"/><l>16</l></block><l>1</l></block><block s="reportNewList"><list><l>0</l><l>1</l><l>2</l><l>3</l><l>4</l><l>5</l><l>6</l><l>7</l><l>8</l><l>9</l><l>a</l><l>b</l><l>c</l><l>d</l><l>e</l><l>f</l></list></block></block><block var="element"/></block></block><block s="doSetVar"><l>number</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="number"/><l>16</l></block></block></block></script></block><block s="doAddToList"><block s="reportJoinWords"><block var="element"/></block><block var="result"/></block></script></block><block s="doReport"><block s="reportJoinWords"><block var="result"/></block></block></script></block-definition><block-definition s="quarter round %&apos;list&apos; %&apos;a&apos; %&apos;b&apos; %&apos;c&apos; %&apos;d&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReplaceInList"><block var="a"/><block var="list"/><block s="reportModulus"><block s="reportSum"><block s="reportListItem"><block var="a"/><block var="list"/></block><block s="reportListItem"><block var="b"/><block var="list"/></block></block><l>4294967296</l></block></block><block s="doReplaceInList"><block var="d"/><block var="list"/><custom-block s="%n ⊻ %n"><block s="reportListItem"><block var="d"/><block var="list"/></block><block s="reportListItem"><block var="a"/><block var="list"/></block></custom-block></block><block s="doReplaceInList"><block var="d"/><block var="list"/><custom-block s="%n &lt;&lt;&lt; %n"><block s="reportListItem"><block var="d"/><block var="list"/></block><l>16</l></custom-block></block><block s="doReplaceInList"><block var="c"/><block var="list"/><block s="reportModulus"><block s="reportSum"><block s="reportListItem"><block var="c"/><block var="list"/></block><block s="reportListItem"><block var="d"/><block var="list"/></block></block><l>4294967296</l></block></block><block s="doReplaceInList"><block var="b"/><block var="list"/><custom-block s="%n ⊻ %n"><block s="reportListItem"><block var="b"/><block var="list"/></block><block s="reportListItem"><block var="c"/><block var="list"/></block></custom-block></block><block s="doReplaceInList"><block var="b"/><block var="list"/><custom-block s="%n &lt;&lt;&lt; %n"><block s="reportListItem"><block var="b"/><block var="list"/></block><l>12</l></custom-block></block><block s="doReplaceInList"><block var="a"/><block var="list"/><block s="reportModulus"><block s="reportSum"><block s="reportListItem"><block var="a"/><block var="list"/></block><block s="reportListItem"><block var="b"/><block var="list"/></block></block><l>4294967296</l></block></block><block s="doReplaceInList"><block var="d"/><block var="list"/><custom-block s="%n ⊻ %n"><block s="reportListItem"><block var="d"/><block var="list"/></block><block s="reportListItem"><block var="a"/><block var="list"/></block></custom-block></block><block s="doReplaceInList"><block var="d"/><block var="list"/><custom-block s="%n &lt;&lt;&lt; %n"><block s="reportListItem"><block var="d"/><block var="list"/></block><l>8</l></custom-block></block><block s="doReplaceInList"><block var="c"/><block var="list"/><block s="reportModulus"><block s="reportSum"><block s="reportListItem"><block var="c"/><block var="list"/></block><block s="reportListItem"><block var="d"/><block var="list"/></block></block><l>4294967296</l></block></block><block s="doReplaceInList"><block var="b"/><block var="list"/><custom-block s="%n ⊻ %n"><block s="reportListItem"><block var="b"/><block var="list"/></block><block s="reportListItem"><block var="c"/><block var="list"/></block></custom-block></block><block s="doReplaceInList"><block var="b"/><block var="list"/><custom-block s="%n &lt;&lt;&lt; %n"><block s="reportListItem"><block var="b"/><block var="list"/></block><l>7</l></custom-block></block></script></block-definition><block-definition s="%&apos;x&apos; &lt;&lt;&lt; %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="%n ∨ %n"><custom-block s="%n ∧ %n"><custom-block s="%n &lt;&lt; %n"><block var="x"/><block var="y"/></custom-block><l>4294967295</l></custom-block><custom-block s="%n &gt;&gt;&gt; %n"><block var="x"/><block s="reportDifference"><l>32</l><block var="y"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="double round %&apos;list&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>1</l><l>5</l><l>9</l><l>13</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>2</l><l>6</l><l>10</l><l>14</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>3</l><l>7</l><l>11</l><l>15</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>4</l><l>8</l><l>12</l><l>16</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>1</l><l>6</l><l>11</l><l>16</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>2</l><l>7</l><l>12</l><l>13</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>3</l><l>8</l><l>9</l><l>14</l></custom-block><custom-block s="quarter round %l %n %n %n %n"><block var="list"/><l>4</l><l>5</l><l>10</l><l>15</l></custom-block></script></block-definition><block-definition s="make block %&apos;template&apos; %&apos;number&apos; %&apos;nonce&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>block</l></list></block><block s="doSetVar"><l>block</l><block s="reportConcatenatedLists"><list><block var="template"/></list></block></block><block s="doReplaceInList"><l>13</l><block var="block"/><block var="number"/></block><block s="doReplaceInList"><l>14</l><block var="block"/><block s="reportListItem"><l>1</l><block var="nonce"/></block></block><block s="doReplaceInList"><l>15</l><block var="block"/><block s="reportListItem"><l>2</l><block var="nonce"/></block></block><block s="doReplaceInList"><l>16</l><block var="block"/><block s="reportListItem"><l>3</l><block var="nonce"/></block></block><block s="doRepeat"><l>10</l><script><custom-block s="double round %l"><block var="block"/></custom-block></script></block><block s="doReport"><block var="block"/></block></script></block-definition><block-definition s="hex %&apos;hex&apos; as numbers" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>i</l><l>result</l></list></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="hex"/></block></block><script><block s="doAddToList"><custom-block s="number of %s"><block s="reportJoinWords"><block s="reportLetter"><block s="reportSum"><block var="i"/><block s="reportNumbers"><l>0</l><l>7</l></block></block><block var="hex"/></block></block></custom-block><block var="result"/></block><block s="doChangeVar"><l>i</l><l>8</l></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="encrypt %&apos;message&apos; with %&apos;template&apos; %&apos;nonce&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>number</l><l>blocks</l></list></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doSetVar"><l>blocks</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportSum"><block s="reportProduct"><block s="reportDifference"><block var="number"/><l>1</l></block><l>32</l></block><l>1</l></block><block s="reportListAttribute"><l><option>length</option></l><block var="message"/></block></block><script><block s="doAddToList"><custom-block s="make block %l %n %l"><block var="template"/><block var="number"/><block var="nonce"/></custom-block><block var="blocks"/></block><block s="doChangeVar"><l>number</l><l>1</l></block></script></block><block s="doReport"><custom-block s="%l xor %l"><block var="message"/><block s="reportConcatenatedLists"><block var="blocks"/></block></custom-block></block></script></block-definition><block-definition s="%&apos;x&apos; xor %&apos;y&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doFor"><l>i</l><l>1</l><custom-block s="min %n %n"><block s="reportListAttribute"><l><option>length</option></l><block var="x"/></block><block s="reportListAttribute"><l><option>length</option></l><block var="y"/></block></custom-block><script><block s="doAddToList"><custom-block s="%n ⊻ %n"><block s="reportListItem"><block var="i"/><block var="x"/></block><block s="reportListItem"><block var="i"/><block var="y"/></block></custom-block><block var="result"/></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="min %&apos;x&apos; %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="x"/><block var="y"/></block><block var="x"/><block var="y"/></block></block></script></block-definition><block-definition s="number of %&apos;hex&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><l>0</l></block><block s="doForEach"><l>letter</l><block s="reportTextSplit"><block var="hex"/><l><option>letter</option></l></block><script><block s="doSetVar"><l>result</l><block s="reportSum"><block s="reportProduct"><block var="result"/><l>16</l></block><block s="reportDifference"><block s="reportListIndex"><block var="letter"/><block s="reportNewList"><list><l>0</l><l>1</l><l>2</l><l>3</l><l>4</l><l>5</l><l>6</l><l>7</l><l>8</l><l>9</l><l>a</l><l>b</l><l>c</l><l>d</l><l>e</l><l>f</l></list></block></block><l>1</l></block></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="max %&apos;x&apos; %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportGreaterThan"><block var="x"/><block var="y"/></block><block var="x"/><block var="y"/></block></block></script></block-definition><block-definition s="¬ %&apos;a&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_not(a)</l><list><block var="a"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; ∧ %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_and(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; ∨ %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_or(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; &lt;&lt; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_left_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; &gt;&gt; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_right_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;a&apos; &gt;&gt;&gt; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_unsigned_right_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></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="885"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="886"></list></costumes><sounds><list struct="atomic" id="887"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="2" y="-11" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="892"><costumes><list struct="atomic" id="893"></list></costumes><sounds><list struct="atomic" id="894"></list></sounds><blocks></blocks><variables></variables><scripts><script x="610" y="56.33333333333334"><block s="receiveKey"><l><option>e</option></l><list></list></block><block s="doAsk"><l>message</l></block><block s="doSetVar"><l>nonce</l><block s="reportNewList"><list><block s="reportRandom"><l>0</l><block s="reportDifference"><block s="reportPower"><l>2</l><l>32</l></block><l>1</l></block></block><block s="reportRandom"><l>0</l><block s="reportDifference"><block s="reportPower"><l>2</l><l>32</l></block><l>1</l></block></block><block s="reportRandom"><l>0</l><block s="reportDifference"><block s="reportPower"><l>2</l><l>32</l></block><l>1</l></block></block></list></block></block><block s="doSetVar"><l>message</l><custom-block s="%s as ascii words"><block s="getLastAnswer"></block></custom-block></block><block s="doSetVar"><l>encrypted</l><custom-block s="encrypt %l with %l %l"><block var="message"/><block var="template"/><block var="nonce"/></custom-block></block><block s="doSetVar"><l>output</l><custom-block s="%l as hex"><block s="reportConcatenatedLists"><list><block var="encrypted"/><block var="nonce"/></list></block></custom-block></block><block s="bubble"><block s="reportNewList"><list><block var="output"/></list></block></block></script><script x="125" y="345"><block s="receiveKey"><l><option>d</option></l><list></list></block><block s="doAsk"><l>encrypted message</l></block><block s="doSetVar"><l>encrypted</l><custom-block s="hex %s as numbers"><block s="getLastAnswer"></block></custom-block></block><block s="doSetVar"><l>nonce</l><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="encrypted"/></block><block s="reportNewList"><list><l>2</l><l>1</l><l>0</l></list></block></block><block var="encrypted"/></block></block><block s="doDeleteFromList"><l><option>last</option></l><block var="encrypted"/></block><block s="doDeleteFromList"><l><option>last</option></l><block var="encrypted"/></block><block s="doDeleteFromList"><l><option>last</option></l><block var="encrypted"/></block><block s="doSetVar"><l>message</l><custom-block s="encrypt %l with %l %l"><block var="encrypted"/><block var="template"/><block var="nonce"/></custom-block></block><block s="doSetVar"><l>output</l><custom-block s="%l as string"><block var="message"/></custom-block></block><block s="bubble"><block s="reportNewList"><list><block var="output"/></list></block></block></script><script x="108" y="44.33333333333334"><block s="receiveKey"><l><option>k</option></l><list></list></block><custom-block s="USE BIGNUMS %b"><l><bool>true</bool></l></custom-block><block s="doAsk"><l>key</l></block><block s="doSetVar"><l>key</l><custom-block s="%s as ascii words"><block s="getLastAnswer"></block></custom-block></block><block s="doUntil"><block s="reportGreaterThanOrEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="key"/></block><l>8</l></block><script><block s="doAddToList"><l>0</l><block var="key"/></block></script></block><block s="doSetVar"><l>template</l><block s="reportConcatenatedLists"><list><custom-block s="%s as ascii words"><l>expand 32-byte k</l></custom-block><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>8</l></block><block var="key"/></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>0</l></list></block></list></block></block></script></scripts></sprite><watcher var="key" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="message" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/><watcher var="encrypted" style="normal" x="10" y="124.00000399999999" color="243,118,29" hidden="true"/><watcher var="output" style="normal" x="10" y="145.00000599999998" color="243,118,29" hidden="true"/><watcher var="nonce" style="normal" x="10" y="166.00000799999998" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="key"><list struct="atomic" id="1083">1702388077,1886151968,1801812224,0,0,0,0,0</list></variable><variable name="template"><list struct="atomic" id="1084">1702391905,1852055603,841835129,1952784491,1702388077,1886151968,1801812224,0,0,0,0,0,0,0,0,0</list></variable><variable name="message"><list struct="atomic" id="1085">1416128883,544040307,1935763301</list></variable><variable name="encrypted"><list struct="atomic" id="1086">1607108398,835683741,1614813568</list></variable><variable name="output"><l>This message</l></variable><variable name="nonce"><list struct="atomic" id="1087">1106436803,3877065483,1253132864</list></variable></variables></scene></scenes></project><media name="chacha cipher" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>