<snapdata remixID="12339746"><project name="U5L6TicTacToe" app="Snap! 8.2, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="U5L6TicTacToe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="errorObsolete"></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>30</l><comment w="78" collapsed="true">3.3.3 TIF B</comment></block><block s="setScale"><l>95</l><comment w="190" collapsed="true">Oops costumes are a bit too big.</comment></block><block s="doSetVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>j</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportVariadicSum"><list><l>-100</l><block s="reportVariadicProduct"><list><l>50</l><block var="j"/></list></block></list></block><block s="reportDifference"><l>100</l><block s="reportVariadicProduct"><list><l>50</l><block var="i"/></list></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l><comment w="53.333333333333336" collapsed="true">3.3.1.4</comment></block></script></custom-block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="status of all winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="tied?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block><l></l></list></block></block></script></block-definition><block-definition s="draw win line" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>8</l><script><block s="doDeclareVariables"><list><l>line</l></list></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></list></block></list></block><script><block s="doSetVar"><l>line</l><block s="reportListItem"><block var="i"/><block var="win lines"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/><comment w="137.33333333333334" collapsed="false">This is why each line in WIN LINES is a list of points, each of which is a list of x,y coordinates:  It allows us to use the endpoints, as points, in the GO TO block.</comment></block></block><block s="down"></block><block s="doGotoObject"><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="up"></block></script></block></script></block></script><scripts><comment x="174" y="6.666666666666667" w="244" collapsed="false">I&apos;m kind of bummed that I didn&apos;t find a beautiful one-line solution using FIND FIRST, but it just gives the value it finds, not the position in the list, which is what we need to find the line endpoints in WIN LINES. So it&apos;s a plain old fashioned FOR loop.</comment></scripts></block-definition><block-definition s="move in this square" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l><comment w="53.333333333333336" collapsed="true">3.3.1.5</comment></block><block s="doIf"><custom-block s="won? %s"><l>X</l><comment w="53.333333333333336" collapsed="true">3.3.2.9</comment></custom-block><script><block s="bubble"><l>X won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list><comment w="134.66666666666666" collapsed="true">3.3.3.TIF B.  See below.</comment></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block><comment w="53.333333333333336" collapsed="true">3.3.3.5</comment></block></script></block><block s="doBroadcast"><custom-block s="best empty square"></custom-block><list></list></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l><comment w="53.333333333333336" collapsed="true">3.3.1.5</comment></block><block s="doIf"><custom-block s="won? %s"><l>O</l><comment w="53.333333333333336" collapsed="true">3.3.2.9</comment></custom-block><script><block s="bubble"><l>O won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list><comment w="130.66666666666666" collapsed="true">3.3.3.TIF B.  See below.</comment></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block><comment w="53.333333333333336" collapsed="true">3.3.3.5</comment></block></script></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><custom-block s="tied?"><comment w="135.33333333333334" collapsed="false">3.3.3.1 and 3.3.3.5&#xD;See 3.3.3.3 above for why we have to test PLAYING.</comment></custom-block></list></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block></script></block><block s="doDeclareVariables"><list><l>available squares</l></list><comment w="252.66666666666666" collapsed="true">3.3.3 TIF A, here on down.  See comment below.</comment></block><block s="doSetVar"><l>available squares</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block var="playing"/><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="available squares"/></block><l>1</l></list></block></list></block><script><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="available squares"/></block><block var="board"/><l>X</l></block><block s="doIf"><block s="reportNot"><custom-block s="won? %s"><l>X</l></custom-block></block><script><block s="bubble"><l>It&apos;s a tie.</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block-definition><block-definition s="status of all winning triplets" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triplets"></custom-block></block></block></script></block-definition><block-definition s="possible winning triplets" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>9</l></list></block></list></block></block></script></block-definition><block-definition s="won? %&apos;winning&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all winning triplets"></custom-block><block s="reportNewList"><list><block var="winning"/><block var="winning"/><block var="winning"/></list></block></block></block></script></block-definition><block-definition s="message" type="reporter" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="how many %&apos;x&apos; in %&apos;list&apos; ?" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="x"/></list></block></autolambda><list></list></block><block var="list"/></block></block></block></script></block-definition><block-definition s="winning triple for player %&apos;who&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l ?"><block var="who"/><l/></custom-block><l>2</l></list></block><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l ?"><custom-block s="opponent %s"><block var="who"/></custom-block><l/></custom-block><l>0</l></list></block></list></block></autolambda><list></list></block><custom-block s="status of all winning triplets"></custom-block></block></block></script></block-definition><block-definition s="winning square for player %&apos;player&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>ready to win</l></list></block><block s="doSetVar"><l>ready to win</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l ?"><block var="player"/><l/></custom-block><l>2</l></list></block><block s="reportVariadicEquals"><list><custom-block s="how many %s in %l ?"><custom-block s="opponent %s"><block var="player"/></custom-block><l/></custom-block><l>0</l></list></block></list></block></autolambda><list></list></block><custom-block s="status of all winning triples"></custom-block></block></block><block s="doIfElse"><custom-block s="empty? %l"><block var="ready to win"/></custom-block><script><block s="doReport"><l>0</l></block></script><script><block s="doReport"><custom-block s="find first item such that %predRing from %l"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="ready to win"/></custom-block></block></script></block></script></block-definition><block-definition s="find first item such that from" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="next move for computer" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><custom-block s="can %s win now?"><l>O</l></custom-block><script><block s="doReport"><custom-block s="winning square for %s"><l>O</l></custom-block></block></script></block><block s="doIf"><custom-block s="can %s win now?"><l>X</l></custom-block><script><block s="doReport"><custom-block s="winning square for %s"><l>X</l></custom-block></block></script></block><block s="doReport"><custom-block s="best empty square"></custom-block></block></script></block-definition><block-definition s="number of %&apos;value&apos; in %&apos;triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="keep items such that %predRing from %l"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="value"/></list></block></autolambda><list></list></block><block var="triple"/></custom-block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block-definition><block-definition s="opponent %&apos;player&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="player"/><l>x</l></list></block><script><block s="doReport"><l>O</l></block></script><script><block s="doReport"><l>X</l></block></script></block></script></block-definition><block-definition s="status of wining triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><list><custom-block s="TicTacToe Wins"></custom-block></list></custom-block></block></script></block-definition><block-definition s="status of triple %&apos;Triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="Board"/></block></autolambda><list></list></block><list><block var="Triple"/></list></custom-block></block></script></block-definition><block-definition s="best empty square" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="keep items such that %predRing from %l"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block var="Board"/><l></l></block></autolambda><list></list></block><block s="reportNewList"><list><l>5</l><l>1</l><l>3</l><l>7</l><l>9</l><l>2</l><l>4</l><l>6</l><l>8</l></list></block></custom-block></block></block></script></block-definition><block-definition s="can %&apos;player&apos; win now?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><custom-block s="winning square for %s"><block var="player"/></custom-block><l>0</l></list></block></block></script></block-definition><block-definition s="winning square for %&apos;player&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>ready-to-win-triple</l></list></block><block s="doSetVar"><l>ready-to-win-triple</l><custom-block s="find first item such that %predRing from %l"><block s="reifyPredicate"><autolambda><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><custom-block s="number of %s in %l"><block var="player"/><l/></custom-block><l>2</l></list></block><block s="reportVariadicEquals"><list><custom-block s="number of %s in %l"><custom-block s="opponent %s"><block var="player"/></custom-block><l/></custom-block><l>0</l></list></block></list></block></autolambda><list></list></block><custom-block s="status of wining triples"></custom-block></custom-block></block><block s="doIfElse"><custom-block s="empty? %l"><block var="ready-to-win-triple"/></custom-block><script><block s="doReport"><l>0</l></block></script><script><block s="doReport"><custom-block s="find first item such that %predRing from %l"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="ready-to-win-triple"/></custom-block></block></script></block></script></block-definition><block-definition s="find first item such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>items</l></list></block><block s="doSetVar"><l>items</l><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block var="data"/></custom-block></block><block s="doIf"><custom-block s="empty? %l"><block var="items"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportListItem"><l>1</l><block var="items"/></block></block></script></block-definition><block-definition s="TicTacToe Wins" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="data lists"/></block></block><block s="evaluate"><block var="mapmany"/><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="data lists"/></block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></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="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="1240"><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="1241"></list></costumes><sounds><list struct="atomic" id="1242"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="50" y="-50" heading="90" scale="0.95" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="1247"><costumes><list id="1248"><item><ref mediaID="Square_cst_Empty"></ref></item><item><ref mediaID="Square_cst_X"></ref></item><item><ref mediaID="Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="1249"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable><variable name="square number"><l>9</l></variable></variables><scripts><script x="20" y="10"><block s="receiveGo"></block><block s="clear"></block><custom-block s="makeBoard"><comment w="190.66666666666663" collapsed="true">3.3.1.4, and 3.3.3.TIF B, inside</comment></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l><comment w="53.333333333333336" collapsed="true">3.3.1.2</comment></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="130.66666666666666" collapsed="true">3.3.3.5, more below.</comment></block></block></script><script x="20" y="175.6666666666668"><block s="doSetVar"><l>win lines</l><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>50</l></list></block><block s="reportNewList"><list><l>100</l><l>50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>0</l></list></block><block s="reportNewList"><list><l>100</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-50</l></list></block><block s="reportNewList"><list><l>100</l><l>-50</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-50</l><l>100</l></list></block><block s="reportNewList"><list><l>-50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>100</l></list></block><block s="reportNewList"><list><l>0</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>50</l><l>100</l></list></block><block s="reportNewList"><list><l>50</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>100</l></list></block><block s="reportNewList"><list><l>100</l><l>-100</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-100</l><l>-100</l></list></block><block s="reportNewList"><list><l>100</l><l>100</l></list></block></list></block></list></block></block></script><script x="20" y="380.6666666666659"><block s="receiveMessage"><l><option>any message</option></l><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="getLastMessage"></block><block var="position number"/></list></block><script><custom-block s="move in this square"></custom-block></script></block></script><script x="20" y="485.3333333333328"><custom-block s="how many %s in %l ?"><l>X</l><block s="reportNewList"><list><l>X</l><l>5</l><l>X</l></list></block></custom-block></script><script x="20" y="555.333333333332"><block s="receiveInteraction"><l>clicked</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block><script><custom-block s="move in this square"></custom-block></script></block></script><script x="19.3916015625" y="518.166666666665"><custom-block s="winning triple for player %s"><l>x</l></custom-block></script><script x="280" y="391.9999999999984"><custom-block s="winning square for player %s"><l>o</l></custom-block></script><script x="298" y="419.9999999999984"><custom-block s="can %s win now?"><l>x</l></custom-block></script><script x="282" y="454.8333333333318"><custom-block s="next move for computer"></custom-block></script></scripts></sprite><sprite name="Sprite" idx="2" x="0" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,32,0,1" pen="tip" id="1450"><costumes><list struct="atomic" id="1451"></list></costumes><sounds><list struct="atomic" id="1452"></list></sounds><blocks></blocks><variables></variables><scripts><script x="27" y="23.666666666666668"><block s="receiveGo"></block><block s="hide"></block><block s="setSize"><l>5</l></block><block s="setColor"><color>255,32,0,1</color></block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="10" y="298.500002" color="243,118,29" hidden="true"/><watcher var="playing" style="normal" x="10" y="325.499996" color="243,118,29" hidden="true"/><watcher var="win lines" style="normal" x="10" y="177.999998" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="17" y="14" color="243,118,29" extX="80" extY="70"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="1467">X,X,X,X,O,6,O,8,O</list></variable><variable name="playing"><bool>true</bool></variable><variable name="win lines"><list id="1468"><item><list id="1469"><item><list struct="atomic" id="1470">-100,50</list></item><item><list struct="atomic" id="1471">100,50</list></item></list></item><item><list id="1472"><item><list struct="atomic" id="1473">-100,0</list></item><item><list struct="atomic" id="1474">100,0</list></item></list></item><item><list id="1475"><item><list struct="atomic" id="1476">-100,-50</list></item><item><list struct="atomic" id="1477">100,-50</list></item></list></item><item><list id="1478"><item><list struct="atomic" id="1479">-50,100</list></item><item><list struct="atomic" id="1480">-50,-100</list></item></list></item><item><list id="1481"><item><list struct="atomic" id="1482">0,100</list></item><item><list struct="atomic" id="1483">0,-100</list></item></list></item><item><list id="1484"><item><list struct="atomic" id="1485">50,100</list></item><item><list struct="atomic" id="1486">50,-100</list></item></list></item><item><list id="1487"><item><list struct="atomic" id="1488">-100,100</list></item><item><list struct="atomic" id="1489">100,-100</list></item></list></item><item><list id="1490"><item><list struct="atomic" id="1491">-100,-100</list></item><item><list struct="atomic" id="1492">100,100</list></item></list></item></list></variable><variable name="counter"><l>12</l></variable><variable name="Board"><list struct="atomic" id="1493">X,X,O,4,O,6,7,8,9</list></variable></variables></scene></scenes></project><media name="U5L6TicTacToe" app="Snap! 8.2, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAShJREFUaEPtmyEOg0AQRT836A1ag24TBIakFWv2Fr0BFgc4LKdZs6ICgyCpx9AbcIRmG0LS0lbPbj4nmDf/v4xZIgAVgCOAE8L87tECeQZwCZMRt0/ISWuNNE0PPgP3fT8ZYxyC43iH1FpPbdsijmOvIcdxnPI8hzFmC1lVFcqy9DnEdfa6ruF4NkkS0rN8mSSd9KiyrCvryrrK2gCdpJOyGvl3GtaVdWVdZW2ATtJJWY3kCaGTdJJOytoAnaSTshrJO0kn6SSdlLUBOkknZTWSd5JO0kk6KWsDdJJOymok7ySdpJMhOKmUmpumQZIkO494NqMOwzAXRQFrrePYPM+elVLIssxryK7rZmutg/8K6XOAv2Z/JXldHqTvQyQE8HCQof4qsWb2BLkbqAIXp3YbAAAAAElFTkSuQmCC" mediaID="Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAA8NJREFUaEPd271P20AYBvCHVkIMlmDokA2GbgwJeyFBXegE/AWEjSEDqEu2wMYIAwsMwMYGY5cKBsaqAkG2DrBlqCqQGBBSpepxOcs57LN9H3ack1hiB/t373vvmTszguFsEwAeBG0EwCaAKoDakHjfAagAeAHwB8BPgawDaAwJUmZcyMgXz/PQarVGx8bGSmV+fn7G0dERer1eItI/oVar4fz8HBMTTO1ytOXlZZydnQU3Oz09/bvb7X4A8CaSwUllgq6urvpRFO3w8BD39/fY3GS5kZBLS0t9vVEGqAzsdDo+bmtrKxrJg5OTk+AXRRtkqAxcWVkJIqpEsicY+kGHqoAMUCKSJ0VBmeuMbNEtCZgaGQVltWXVLRKaBpgJ6ZemiwuwID0+PvoBLBIqZ1d4DMrZlSpdw1+6urpCo9EoFJoFmDmSAlskVAbW63U/w1QtcySLhMrAarXqA5OexrSRxOYZUV2gdrrmPUZNgFaQriNqCrSGdAXlcJifn8fDw/8/7NOOQeMpRFXFbI5RW0CrkbRZdWXg+Pi4X+Smpqa0niKNqmvcFU0iGgXkNGHy+OgEGTdG+VDPx0JV54THICNoCnSSrqrphccIbTabb5wuIigu4iyS4gJ3d3d+9K6vrwOYDOU5MzMzQRW1FcHckLwQpwA+1EdBeYwpykiy2QY6T9dwTkZB9/b2cHBw4BSYKzIuouGOOD09VRYmrfkj7fKH7i+P+h4jOjs7i9vb277DcQXJxrWdFx75Jomcm5vDzc3NcCLlIiN3gKto5hpJThOiihLIwrO/v6+cXkqVrlHL93woUE0vNoC5Vdc4oEC4hjpP17Rroy6hTpFpgaqIck+G2xUmzRkyK1AF5dhl5dVtTpC6wDB0fX0dx8fHgcsEah0p9gPF3amW75MiQ5gNqFVk1uX7JCSP24BaQ7oAik4whVpB2lgbTYqqCdQYmQfQNKJGyDyBJlBtZBFAXagWksuEXJcRTXf5Pmkcqo5nGaOZkTaX702QWaaXTEgZyPd8+FnSJqgpxjSiqZEuF39NO0FOXa7z8llXdH4q5CAD44pR+O2xRGQZgAK6s7ODjY2NIDEEdHd3N/7dusXFxb5NUBer26apKn8/6u2xhYUFbG9v89T+V0Hb7TZOTk7AfQq2MgAFWIZWKhXxgm8/0vO8v09PT+/LBoyDvn5+KV7P/gzgUzgN1tbWwN4oW2M9Cb/BzL0ngfwKwCsbKOX9/iCSu6PcCv4CYBTAJYBfKX/BIJ/28fXmvhMp/lWCH/Ln2yDfuc69/QO8JTdw9aXwqAAAAABJRU5ErkJggg==" mediaID="Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAABF9JREFUaEPtmos1LEEQhnsiQARsBIgAEbARIAJEsLsRIAI2AkRgNwJEgAgQwdzzzbm1p7bNo7rnsWupc5z7MNPdf/1Vf1dXT+KcGzrn9tzq2jT5D3Kwuhjd6FeCHKVp+uNZTZJk5JwTHPNMpmm6MlGbJARpZt2BfHt7c+/v79msm5ubbmtrq1WHtg5yOp26+/t7N5lM3PPzcymYnZ0dt7+/746OjtzeXnMi3wpImBqNRhm4z8/PKJbW19czsIPBoDbTjYIE0PX1tRsO2W6LTYeoDt2iNxjv7OzMATzGGgN5e3vrLi4uvjEHIBiRMCxbpIQ1f0rOyvMAvLy8dCcnJ8E4GwEJuKurq7nJySkYAFyMkcO8T05rOz8/z8CGWC2QhOfp6WmWe2IwB2DYa8IYG2CaWca+ubkxh280SAAeHBzMKebx8XEGMDZ3ipzCXAAdj8ezR1Dix8dH01zRIGGQPBRDBasEpy6zjI9qi5GfMFplUSD9yZgoRhCqFpf3exyLg0OcGwySHOn3+7NJkHZfdGIWH/IOoctWJXZ3d1eqAcEge72eY2/DDg8P50QnZKF1n0V8Hh4esmEoC19fXwuHDAIJY2wX2NraWga2aZGxgkeMAPf19ZW9wrYCw3lmBsmgsChlWtmg1oXWfU47HWfDZp7TzSD1gOyFErJ1F1r3fdiUPbTI8WaQu7u7sz2xSzWtcoJWW6osKiXfTCAJ0Y2Njdm7Hx8fC8tFH4BlbSaQFm9VebzN31P9vLy8ZFPkRZkJJBu9lFTLIDi+w7ReUFrqSoxnTSA5SchpgHox9mTRFpvkIXU0lpeXfyDF84iO7I/LJDqyPi0+7JOsUZuJSfWQW9ZWZdka/0AK5Vqin56eHP9eJqPVSbGCbW9vf2t9mphcIXUdzl346NzTIKvObotgWJ9xo7cQ3QnI22wXAUzPqYuVvDaMCtdiJnXMVx1QFwFYb3F5mmHKSRbO/iMH1GUSH01A0RHQDFKHxDKFrGVdZpC6PoRZTuFtX7lVhT4Hd7oVYkV1tRkkA2mV5e8MukijKJdDctGB2XwKESC+5xa5nfj917LICmISsDoHECPY7LoCQmxgUQ4NVRoRDJKBCVU5iZOXqG1XrUm/a0gZR8iWzR8MEjbxJEBlSwm5fKmTw6QL3Xu5lqf3C8CqSIoCyUJ9tW07dP0QZQ3WLkU0SCbxkx+gcvVdhzH/Xe49/O54SFu0Fsi80OX/CB8aXnV7QUQL1xL6qxFriAZ3BqpYIVe4gBExkucBiRqzh1kLB8aiaUaU+I1iRIYTh3UsWUdtJmUgVI/WID8iSNo5sCtX7CxSFgoouXIAQN63PrBHuPITo+KNgdRg/avvqkgo+30TV/SNg9TVkXyyIveIVrDce8onMaGhmTdHayD1ZISy/uxMh6gOXfnsLCYkyxzYCUgrg209Z+oMtDV5V+P+Nia/fZ49SdM07puxrigyzJMkCbeyguN3foNu8NOPeyRrSf748Kxy+z+VzUmjGHSyOAAAAABJRU5ErkJggg==" mediaID="Square_cst_O"/></media></snapdata>