<snapdata remixID="9068439"><project name='U3L2-TikTacToe' app='Snap! 5.1, http://snap.berkeley.edu' version='1'>
  <notes/>
  <thumbnail>data:image/png;base64,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</thumbnail>
  <stage inheritance='false' id='1' volume='100' height='360' tempo='60' lines='round' width='480' sublistIDs='false' name='Stage' threadsafe='false' codify='false' color='255,255,255,1' scheduled='false' pan='0' ternary='true' costume='0'>
    <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 id='2' struct='atomic'/>
    </costumes>
    <sounds>
      <list id='3' struct='atomic'/>
    </sounds>
    <variables/>
    <blocks/>
    <scripts/>
    <sprites>
      <sprite draggable='true' x='5.684341886080801e-13' pen='tip' id='8' y='-150' name='Square' idx='1' volume='100' rotation='1' scale='1' color='80,80,80,1' hidden='true' pan='0' heading='90' costume='1'>
        <costumes>
          <list id='9'>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAx0lEQVRoQ+2awQ2CUBAFlybwSqzEWiTfoozWwhViONiRiYkFvMsEf4b75LEzHBmqs2eoqktVLT3cNU3n/XvQdW7L83H/65vW7VW31t4edNSMFjpqmd97WchCsAE/OVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGA30X6uWPxnE8bR/Jtp2GcsP1ZgAAAABJRU5ErkJggg==' center-y='26' name='Empty' id='10'/>
            </item>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACBUlEQVRoQ+3aO0/CUBQH8MMGIRFnooaRL0BgdCIGqQnxASgQjMjqc3A04maM38KwOTqqm8YEFx+rr0QdcSMupiQ1olTOvfec3hZha9LH/d1/e8M/rQ8AIoaR2QoG/X7w+K/V+rj2AcB4LBY/LpUXPQ16e32Bq0bjoQ3KZvNH9frhsJcDOr+4hN1abQBybYj/M6HHp2cYGx1xVSp2Y0IltFSpQjgchtrOtitQN7d3YKTTsLd/ANOZqY4xoUDN5jtUlqsQjUa1oyzMQqHYdSwokDkFbkD1wpjjRIN0ozAYYZAuFBYjBXIaJYKRBjmFEsUogbhRMhhlEBdKFkMCokapYMhAVChVDClIFUWBIQfJoqgwLCBRFCWGDYRFUWNYQb1QHBh2kB2KC+MI6Ccql8u2y5ldn+loaxIbQvVB4vxfh5h9qlAswdnpCaysrrEVRcdA5m02mUpBIBCAmdk5b4O+PzObG+usdZ49oW4LAGedZwX9tZpxodhAmKWZA8UCwmCs5Y8aRQ4SwXCgSEEyGGoUGUgFQ4kiAVFgqFDKIEoMBUoJxIFRRUmDODEqKCmQExhZlDDISYwMSgikAyOKQoN0YkRQKJAbMFgUCpRMTkA8kWBrmaLV3vpDm8vPy700duNrfRMVCg39mgtUQqIzqHP/AUjn7GOu3d8J9dsHgBEAKGNi9cA+958uiHxCYDA7+gAAAABJRU5ErkJggg==' center-y='26' name='X' id='11'/>
            </item>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEYElEQVRoQ+2aS0wTURSG/66Vx0oXCCIK1MfCFoxuFERDjOArahR8xKgFJS4kRuOGUsrGIBUXxgfFxKhA8REfYGKIiujCB9BqIoiSaAQV3fHQNeaMuUlLZzp3Zu4URCZpuui9Z853/jPn3numFkyxywIgG0DbVOBKTk7pkoD2H3C0Xa6r/aeZXr7qQJHD8XYaaLLKOK0QrzKtj57A7w+g7+MHtD15jM+fP4VN3bZ9BxISErDUZkfO6iwkJc7hNa84TqhC/QNf4fXWof76NWRkLpM+drsN1vQ0WWfp5r0fPuJNwI/79+5K43cWFGLrlo26wYQABYMUHSpBYcEOXdG+fec+fI0NGB4aQvHhEl1ghoGuXK2H2+UEgRwudiAuLlZ3dNlEStfqqiokJiWhvNypKTi6gYaHR1DuqkBPdzfclZVYsXyZYZBgA2T/wiUvai+ex8VaL3LX5nDZ1wVENzvoKEJsbCzOeKqFqKLkLaXh8WOlOO2p4UpBzUAMxmq1otLt4oqa0UHdPe+xIT+fC0oz0IGDRYiJicHZGo9RPzXNJ6glixfhxcvXEdNbE9C585fQ/rQNdd5aU9NMLf0CgYDi/bmBWITedfdg8aKFmqIrcvDR0mOSOaUM4QaiVLPZM3CkpFikf5pt0TNss9nQ0OiTTT0uIBpUWLATkaTW7JmBCZT6AX8X5I46XEAk84LUtAlXh8WAqdTc0hKW/qpAtK2Zm5SIoaHhCSkESkKeqvLg96/RsKVDFYi2NrR5jHaZVstIKlKlR0vR2vowZKgqEKXbylVZXKu0mhOif09JmY/xaacKJDdJtGN67ckFWxXIYrFgbGxM7z1NnUfVjq7gpSQiEP3o8Xhw84bPVMf0GqdjRpPPF1K+VYG8Xq9svdfrhMh55Px4/6aBREbYqC3NCinVeqOOiJpPh7/nz9pD1sj/q8pRJHNz15nSMxChEp0A1uflhyz6qgqVOV2YvyAV+/buEuGDUBu06D9tbw/pCqkCsV7ZZFuLWKtL816Oturx8XH40j+gqT8mVAoZY5Q5M2bG4OSJvydYdqkqRAOVJpvttJL9SEHmAqIzUXZW1qQ6sf78MSjbRuMCYirRd7R6cUrqsAOn0iPADcRUUmpORCv9qFSnpqWHPTuaniE2mLVlJ6pZQsfurs6OiH1BboUYFBWI3t7eqDcbWTDlGiOaq9z4dIo2FC8M+alZofFKuVzlpnZS6VR6proqrHeg9MzqBiKDlNP0/sbpcgvfGlERqqhwY6C/HzVna7iDZgiISewsK5PetjkcDsMvvmjRvFbfKKmi562gYSCCCnZidc6asB0wT0knRRoamyTFyYbe4AgBYg4T2J17zXjQ0iyV142bNkst5MwMuzRkoTVd6r7SwXF09Be+fR9EX1+fNJY+u3bvQV5eniGVhQIFK0ER7+j0Sw7TfxVGRkZw62aTNGTevBRJBXpxxoBFvaM1DYgnzcwYMw1kRlRF2pzaCk2VfzTOmjX71R8xTomk2qlpUgAAAABJRU5ErkJggg==' center-y='26' name='O' id='12'/>
            </item>
          </list>
        </costumes>
        <sounds>
          <list id='13' struct='atomic'/>
        </sounds>
        <blocks/>
        <variables>
          <variable name='position number'>
            <l>9</l>
          </variable>
        </variables>
        <scripts>
          <script x='10.266666666666708' y='10'>
            <block s='receiveGo'/>
            <block s='gotoXY'>
              <l>0</l>
              <l>0</l>
            </block>
            <block s='removeClone'/>
          </script>
          <script x='290.0000010000001' y='53.63333433333332'>
            <block s='doSetVar'>
              <l>position number</l>
              <l>O</l>
            </block>
          </script>
          <script x='157' y='51.46666666666667'>
            <block s='receiveGo'/>
            <block s='doWait'>
              <l>.1</l>
            </block>
            <custom-block s='makeBoard'/>
            <block s='doSetVar'>
              <l>X&apos;s turn?</l>
              <block s='reportBoolean'>
                <l>
                  <bool>true</bool>
                </l>
              </block>
            </block>
          </script>
          <script x='17' y='118.79999999999995'>
            <block s='receiveInteraction'>
              <l>
                <option>clicked</option>
              </l>
            </block>
            <custom-block s='play game'/>
          </script>
          <script x='72.00000100000011' y='205.80000099999995'>
            <block s='doSetVar'>
              <l>position number</l>
              <l>X</l>
            </block>
          </script>
        </scripts>
      </sprite>
      <watcher x='2.4524103009262035' color='243,118,29' style='normal' y='2.4524103009259335' var='X&apos;s turn?'/>
      <watcher x='106.0441666666668' color='243,118,29' style='normal' y='2.6677791116666754' var='position number' scope='Square'/>
      <watcher var='board' x='282.105' color='243,118,29' style='normal' y='0.6669444444444537' extX='80' extY='70'/>
    </sprites>
  </stage>
  <hidden/>
  <headers/>
  <code/>
  <blocks>
    <block-definition s='label %&apos;text&apos; of size %&apos;size&apos;' category='pen' type='command'>
      <comment x='0' w='90' collapsed='false' y='0'>LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'>Hello!</input>
        <input type='%n'>12</input>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportJSFunction'>
            <list>
              <l>text</l>
              <l>size</l>
            </list>
            <l>var stage = this.parentThatIsA(StageMorph),    context = stage.penTrails().getContext(&apos;2d&apos;),    rotation = radians(this.direction() - 90),    trans = new Point(      this.center().x - stage.left(),      this.center().y - stage.top()    ),    isWarped = this.Warped,    len,    pos;if (isWarped) {endWarp(); }context.save();context.font = size + &apos;px monospace&apos;;context.textAlign = &apos;left&apos;;context.textBaseline = &apos;alphabetic&apos;;context.fillStyle = this.color.toString();len = context.measureText(text).width;trans = trans.multiplyBy(1 / stage.scale);context.translate(trans.x, trans.y);context.rotate(rotation);context.fillText(text, 0, 0);context.translate(-trans.x, -trans.y);context.restore();pos = new Point(  len * Math.sin(radians(this.direction())),  len * Math.cos(radians(this.direction())));pos = pos.add(new Point(this.xPosition(), this.yPosition()));this.gotoXY(pos.x, pos.y, false);this.changed();if (isWarped) {this.startWarp(); }stage.changed();</l>
          </block>
          <list>
            <block var='text'/>
            <block var='size'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='map %&apos;function&apos; over %&apos;lists&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%repRing'/>
        <input type='%mult%l'/>
      </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/>
                        </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/>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doReport'>
                    <block s='reportCONS'>
                      <block s='evaluate'>
                        <block var='function'/>
                        <custom-block s='map %repRing over %mult%l'>
                          <block s='reifyReporter'>
                            <autolambda>
                              <block s='reportListItem'>
                                <l>1</l>
                                <l/>
                              </block>
                            </autolambda>
                            <list/>
                          </block>
                          <list>
                            <block var='data lists'/>
                          </list>
                        </custom-block>
                      </block>
                      <block s='evaluate'>
                        <block var='mapmany'/>
                        <list>
                          <custom-block s='map %repRing over %mult%l'>
                            <block s='reifyReporter'>
                              <autolambda>
                                <block s='reportCDR'>
                                  <l/>
                                </block>
                              </autolambda>
                              <list/>
                            </block>
                            <list>
                              <block var='data lists'/>
                            </list>
                          </custom-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>
    <block-definition s='empty? %&apos;data&apos;' category='lists' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportEquals'>
            <block var='data'/>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='keep items such that %&apos;pred&apos; from %&apos;data&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%predRing'/>
        <input type='%l'/>
      </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/>
                  </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='combine with %&apos;function&apos; items of %&apos;data&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%repRing'/>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doIf'>
              <custom-block s='empty? %l'>
                <block s='reportCDR'>
                  <block var='data'/>
                </block>
              </custom-block>
              <script>
                <block s='doReport'>
                  <block s='reportListItem'>
                    <l>1</l>
                    <block var='data'/>
                  </block>
                </block>
              </script>
            </block>
            <block s='doReport'>
              <block s='evaluate'>
                <block var='function'/>
                <list>
                  <block s='reportListItem'>
                    <l>1</l>
                    <block var='data'/>
                  </block>
                  <custom-block s='combine with %repRing items of %l'>
                    <block var='function'/>
                    <block s='reportCDR'>
                      <block var='data'/>
                    </block>
                  </custom-block>
                </list>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%b'/>
        <input type='%anyUE'/>
        <input type='%anyUE'/>
      </inputs>
      <script>
        <block s='doIfElse'>
          <block var='test'/>
          <script>
            <block s='doReport'>
              <block s='evaluate'>
                <block var='true'/>
                <list/>
              </block>
            </block>
          </script>
          <script>
            <block s='doReport'>
              <block s='evaluate'>
                <block var='false'/>
                <list/>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%n'>1</input>
        <input type='%n'>10</input>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>step</l>
            <l>tester</l>
          </list>
        </block>
        <block s='doIfElse'>
          <block s='reportGreaterThan'>
            <block var='start'/>
            <block var='end'/>
          </block>
          <script>
            <block s='doSetVar'>
              <l>step</l>
              <l>-1</l>
            </block>
            <block s='doSetVar'>
              <l>tester</l>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportLessThan'>
                    <block var='i'/>
                    <block var='end'/>
                  </block>
                </autolambda>
                <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='reportGreaterThan'>
                    <block var='i'/>
                    <block var='end'/>
                  </block>
                </autolambda>
                <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/>
          </block>
          <script>
            <block s='doRun'>
              <block var='action'/>
              <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;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%mult%txt'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doIf'>
              <custom-block s='empty? %l'>
                <block s='reportCDR'>
                  <block var='words'/>
                </block>
              </custom-block>
              <script>
                <block s='doReport'>
                  <block s='reportListItem'>
                    <l>1</l>
                    <block var='words'/>
                  </block>
                </block>
              </script>
            </block>
            <block s='doIf'>
              <block s='reportEquals'>
                <l/>
                <block s='reportListItem'>
                  <l>1</l>
                  <block var='words'/>
                </block>
              </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='reportEquals'>
                <l/>
                <block s='reportListItem'>
                  <l>2</l>
                  <block var='words'/>
                </block>
              </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/>
                  <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/>
            </list>
          </block>
        </script>
      </scripts>
    </block-definition>
    <block-definition s='list $arrowRight sentence %&apos;data&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doReport'>
              <custom-block s='join words %mult%txt'>
                <block var='data'/>
              </custom-block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='sentence $arrowRight list %&apos;text&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doReport'>
              <block s='reportTextSplit'>
                <block var='text'/>
                <l>
                  <option>whitespace</option>
                </l>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='catch %&apos;tag&apos; %&apos;action&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doCallCC'>
          <block s='reifyScript'>
            <script>
              <block s='doSetVar'>
                <l>tag</l>
                <block var='cont'/>
              </block>
              <block s='doRun'>
                <block var='action'/>
                <list/>
              </block>
            </script>
            <list>
              <l>cont</l>
            </list>
          </block>
        </block>
        <custom-block s='ignore %s'>
          <l>3</l>
        </custom-block>
      </script>
    </block-definition>
    <block-definition s='throw %&apos;cont&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>catchtag</input>
      </inputs>
      <script>
        <block s='doRun'>
          <block var='cont'/>
          <list/>
        </block>
      </script>
    </block-definition>
    <block-definition s='catch %&apos;tag&apos; %&apos;value&apos;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%anyUE'/>
      </inputs>
      <script>
        <block s='doCallCC'>
          <block s='reifyScript'>
            <script>
              <block s='doSetVar'>
                <l>tag</l>
                <block var='cont'/>
              </block>
              <block s='doReport'>
                <block s='evaluate'>
                  <block var='value'/>
                  <list/>
                </block>
              </block>
            </script>
            <list>
              <l>cont</l>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='throw %&apos;tag&apos; %&apos;value&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>catchtag</input>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block var='tag'/>
          <list>
            <block var='value'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;' category='lists' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%l'/>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doUntil'>
          <custom-block s='empty? %l'>
            <block var='data'/>
          </custom-block>
          <script>
            <block s='doSetVar'>
              <l>item</l>
              <block s='reportListItem'>
                <l>1</l>
                <block var='data'/>
              </block>
            </block>
            <block s='doRun'>
              <block var='action'/>
              <list>
                <block s='reportListItem'>
                  <l>1</l>
                  <block var='data'/>
                </block>
              </list>
            </block>
            <block s='doSetVar'>
              <l>data</l>
              <block s='reportCDR'>
                <block var='data'/>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%boolUE'/>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>breakpoint</l>
          </list>
        </block>
        <block s='doIf'>
          <block s='evaluate'>
            <block var='test'/>
            <list/>
          </block>
          <script>
            <block s='doSetVar'>
              <l>breakpoint</l>
              <block var='test'/>
            </block>
            <block s='doShowVar'>
              <l>breakpoint</l>
            </block>
            <block s='doRun'>
              <block var='action'/>
              <list/>
            </block>
            <block s='doPauseAll'/>
            <block s='doHideVar'>
              <l/>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='word $arrowRight list %&apos;word&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doReport'>
              <block s='reportTextSplit'>
                <block var='word'/>
                <l>
                  <option>letter</option>
                </l>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition category='control' s='ignore %&apos;x&apos;' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
    </block-definition>
    <block-definition s='tell %&apos;sprite&apos; to %&apos;action&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>Sprite</input>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportAttributeOf'>
            <block var='action'/>
            <block var='sprite'/>
          </block>
          <list/>
        </block>
      </script>
    </block-definition>
    <block-definition s='ask %&apos;sprite&apos; for %&apos;expression&apos;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>Sprite</input>
        <input type='%repRing'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportAttributeOf'>
              <block var='expression'/>
              <block var='sprite'/>
            </block>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='list $arrowRight word %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doWarp'>
          <script>
            <block s='doReport'>
              <block s='reportJoinWords'>
                <block var='list'/>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='makeBoard' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='show'/>
        <block s='doSwitchToCostume'>
          <l>Empty</l>
        </block>
        <block s='doSetVar'>
          <l>position number</l>
          <l>0</l>
        </block>
        <block s='doSetVar'>
          <l>board</l>
          <block s='reportNewList'>
            <list>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
              <l>empty</l>
            </list>
          </block>
        </block>
        <custom-block s='for %upvar = %n to %n %cs'>
          <l>row</l>
          <l>1</l>
          <l>3</l>
          <script>
            <custom-block s='for %upvar = %n to %n %cs'>
              <l>column</l>
              <l>1</l>
              <l>3</l>
              <script>
                <block s='doSetVar'>
                  <l>position number</l>
                  <block s='reportSum'>
                    <block var='position number'/>
                    <l>1</l>
                  </block>
                </block>
                <block s='createClone'>
                  <l>
                    <option>myself</option>
                  </l>
                </block>
                <block s='changeXPosition'>
                  <l>50</l>
                </block>
              </script>
            </custom-block>
            <block s='changeXPosition'>
              <l>-150</l>
            </block>
            <block s='changeYPosition'>
              <l>-50</l>
            </block>
          </script>
        </custom-block>
        <block s='hide'/>
      </script>
    </block-definition>
    <block-definition s='possible winning triples' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <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 triple %&apos;triple&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <custom-block s='map %repRing over %mult%l'>
            <block s='reifyReporter'>
              <autolambda>
                <block s='reportListItem'>
                  <l/>
                  <block var='board'/>
                </block>
              </autolambda>
              <list/>
            </block>
            <list>
              <block var='triple'/>
            </list>
          </custom-block>
        </block>
      </script>
    </block-definition>
    <block-definition s='status of all winning triples' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <block s='reportMap'>
            <block s='reifyReporter'>
              <autolambda>
                <custom-block s='status of triple %l'>
                  <l/>
                </custom-block>
              </autolambda>
              <list/>
            </block>
            <custom-block s='possible winning triples'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='won? %&apos;input&apos;' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportListContainsItem'>
            <custom-block s='status of all winning triples'/>
            <block s='reportNewList'>
              <list>
                <block var='input'/>
                <block var='input'/>
                <block var='input'/>
              </list>
            </block>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='tie?' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doIfElse'>
          <block s='reportListContainsItem'>
            <block var='board'/>
            <l>empty</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script>
            <block s='doIfElse'>
              <block s='reportListContainsItem'>
                <custom-block s='status of all winning triples'/>
                <block s='reportNewList'>
                  <list>
                    <l>X</l>
                    <l>X</l>
                    <l>X</l>
                  </list>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportBoolean'>
                    <l>
                      <bool>false</bool>
                    </l>
                  </block>
                </block>
              </script>
              <script>
                <block s='doIfElse'>
                  <block s='reportListContainsItem'>
                    <custom-block s='status of all winning triples'/>
                    <block s='reportNewList'>
                      <list>
                        <l>O</l>
                        <l>O</l>
                        <l>O</l>
                      </list>
                    </block>
                  </block>
                  <script>
                    <block s='doReport'>
                      <block s='reportBoolean'>
                        <l>
                          <bool>false</bool>
                        </l>
                      </block>
                    </block>
                  </script>
                  <script>
                    <block s='doReport'>
                      <block s='reportBoolean'>
                        <l>
                          <bool>true</bool>
                        </l>
                      </block>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='play game' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doIfElse'>
          <block s='reportEquals'>
            <block s='reportListItem'>
              <block var='position number'/>
              <block var='board'/>
            </block>
            <l>empty</l>
          </block>
          <script>
            <block s='doIfElse'>
              <block s='reportEquals'>
                <block var='X&apos;s turn?'/>
                <block s='reportBoolean'>
                  <l>
                    <bool>true</bool>
                  </l>
                </block>
              </block>
              <script>
                <block s='doSwitchToCostume'>
                  <l>X</l>
                </block>
                <block s='doReplaceInList'>
                  <block var='position number'/>
                  <block var='board'/>
                  <l>X</l>
                </block>
                <block s='doSetVar'>
                  <l>X&apos;s turn?</l>
                  <block s='reportBoolean'>
                    <l>
                      <bool>false</bool>
                    </l>
                  </block>
                </block>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='won? %s'>
                      <l>x</l>
                    </custom-block>
                    <block s='reportBoolean'>
                      <l>
                        <bool>true</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='goToLayer'>
                      <l>
                        <option>front</option>
                      </l>
                    </block>
                    <block s='doSayFor'>
                      <l>X Wins!</l>
                      <l>2</l>
                    </block>
                    <block s='doStopThis'>
                      <l>
                        <option>all</option>
                      </l>
                    </block>
                  </script>
                </block>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='tie?'/>
                    <block s='reportBoolean'>
                      <l>
                        <bool>true</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='goToLayer'>
                      <l>
                        <option>front</option>
                      </l>
                    </block>
                    <block s='doSayFor'>
                      <l>Tie!</l>
                      <l>2</l>
                    </block>
                    <block s='doStopThis'>
                      <l>
                        <option>all</option>
                      </l>
                    </block>
                  </script>
                </block>
              </script>
              <script>
                <block s='doSwitchToCostume'>
                  <l>O</l>
                </block>
                <block s='doReplaceInList'>
                  <block var='position number'/>
                  <block var='board'/>
                  <l>O</l>
                </block>
                <block s='doSetVar'>
                  <l>X&apos;s turn?</l>
                  <block s='reportBoolean'>
                    <l>
                      <bool>true</bool>
                    </l>
                  </block>
                </block>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='won? %s'>
                      <l>O</l>
                    </custom-block>
                    <block s='reportBoolean'>
                      <l>
                        <bool>true</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='goToLayer'>
                      <l>
                        <option>front</option>
                      </l>
                    </block>
                    <block s='doSayFor'>
                      <l>O Wins!</l>
                      <l>2</l>
                    </block>
                    <block s='doStopThis'>
                      <l>
                        <option>all</option>
                      </l>
                    </block>
                  </script>
                </block>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='tie?'/>
                    <block s='reportBoolean'>
                      <l>
                        <bool>true</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='goToLayer'>
                      <l>
                        <option>front</option>
                      </l>
                    </block>
                    <block s='doSayFor'>
                      <l>Tie!</l>
                      <l>2</l>
                    </block>
                    <block s='doStopThis'>
                      <l>
                        <option>all</option>
                      </l>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
          <script>
            <block s='goToLayer'>
              <l>
                <option>front</option>
              </l>
            </block>
            <block s='doSayFor'>
              <l>Spot Taken!</l>
              <l>2</l>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables>
    <variable name='X&apos;s turn?'>
      <bool>false</bool>
    </variable>
    <variable name='board'>
      <list id='960' struct='atomic'>X,X,O,X,O,X,O,empty,empty</list>
    </variable>
  </variables>
</project><media name="U3L3-TikTacToe" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>