<snapdata remixID="9292541"><project name='U3L2-TicTacToe' app='Snap! 5.4, http://snap.berkeley.edu' version='1'>
  <notes>
</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' penlog='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 x='-77.99999999999989' pen='tip' id='8' y='64' name='Square' idx='1' volume='100' rotation='1' scale='1' heading='90' costume='1' color='80,80,80,1' pan='0' draggable='false'>
        <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='893.2666666666667' y='94'>
            <block s='doWearNextCostume'/>
          </script>
          <script x='30' y='415.66666666666674'>
            <block s='receiveGo'/>
            <block s='gotoXY'>
              <l>-78</l>
              <l>64</l>
            </block>
            <block s='doWait'>
              <l>.1</l>
              <comment collapsed='true' w='181.33333333333334'>Wait for old clones to be deleted.</comment>
            </block>
            <custom-block s='makeBoard'/>
            <block s='doSetVar'>
              <l>X&apos;s turn?</l>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
                <comment collapsed='true' w='90'>X plays first.</comment>
              </block>
            </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>
          </script>
          <script x='532.2666666666667' y='93'>
            <block s='show'/>
          </script>
          <script x='24.26666666666668' y='257.20000000000005'>
            <block s='receiveGo'/>
            <block s='removeClone'/>
          </script>
          <script x='147.26666666666668' y='10'>
            <block s='receiveInteraction'>
              <l>
                <option>clicked</option>
              </l>
            </block>
            <block s='doIf'>
              <block s='reportNot'>
                <block s='reportEquals'>
                  <block s='getCostumeIdx'/>
                  <l>1</l>
                </block>
              </block>
              <script>
                <block s='doSayFor'>
                  <l>You can&apos;t change it</l>
                  <l>2</l>
                </block>
                <block s='doStopThis'>
                  <l>
                    <option>this script</option>
                  </l>
                </block>
              </script>
            </block>
            <block s='doIfElse'>
              <block var='X&apos;s turn?'/>
              <script>
                <block s='doSwitchToCostume'>
                  <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='doReplaceInList'>
                  <block var='position number'/>
                  <block var='board'/>
                  <l>X</l>
                </block>
              </script>
              <script>
                <block s='doSwitchToCostume'>
                  <l>O</l>
                </block>
                <block s='doSetVar'>
                  <l>X&apos;s turn?</l>
                  <block s='reportBoolean'>
                    <l>
                      <bool>false</bool>
                    </l>
                  </block>
                </block>
                <block s='doReplaceInList'>
                  <block var='position number'/>
                  <block var='board'/>
                  <l>O</l>
                </block>
              </script>
            </block>
          </script>
          <comment x='598.2666666666667' w='156' collapsed='false' y='21'>This demonstration script will not be part of your actual project.</comment>
          <comment x='622.2666666666667' w='118' collapsed='false' y='153.20000000000005'>This affects only clones, not the original sprite.</comment>
          <script x='352.90826922916665' y='366.80000299999995'>
            <custom-block s='status of triple %l'>
              <block s='reportNewList'>
                <list>
                  <l>1</l>
                  <l>4</l>
                  <l>7</l>
                </list>
              </block>
            </custom-block>
          </script>
          <script x='800.2666666666667' y='31'>
            <custom-block s='map %repRing over %mult%l'>
              <block s='reifyReporter'>
                <autolambda>
                  <custom-block s='status of triple %l'>
                    <l/>
                  </custom-block>
                </autolambda>
                <list/>
              </block>
              <list>
                <custom-block s='possible winning triples'/>
              </list>
            </custom-block>
          </script>
          <script x='940.2666686666666' y='642.8333353333334'>
            <block s='doIf'>
              <l/>
              <script/>
            </block>
          </script>
          <script x='773.2666686666666' y='770.8333353333333'>
            <block s='doIf'>
              <l/>
              <script/>
            </block>
          </script>
          <script x='506.49128004166676' y='782.6666726666667'>
            <block var='player'/>
          </script>
          <script x='382.26666866666665' y='612.000002'>
            <block s='doReport'>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script x='512.2666696666666' y='732.8333363333335'>
            <block s='doReport'>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script x='384.26667066666664' y='809.6666706666667'>
            <block s='doReport'>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script x='527.2666706666666' y='855.500004'>
            <block s='doReport'>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script x='10.266668666666675' y='650.0000020000001'>
            <block s='bubble'>
              <l>no</l>
            </block>
          </script>
          <script x='26.266669666666672' y='693.8333363333335'>
            <block s='bubble'>
              <l>no</l>
            </block>
          </script>
          <script x='22.26667066666667' y='769.6666706666667'>
            <block s='bubble'>
              <l>X</l>
            </block>
          </script>
          <script x='29.26667066666667' y='814.500004'>
            <block s='bubble'>
              <l>O</l>
            </block>
          </script>
          <script x='102.26666666666668' y='603'>
            <custom-block s='for each %upvar of %l %cs'>
              <l>item</l>
              <custom-block s='status of all triples'/>
              <script>
                <block s='doIfElse'>
                  <block s='reportListContainsItem'>
                    <block var='item'/>
                    <l>Empty</l>
                  </block>
                  <script>
                    <block s='doSayFor'>
                      <l>no</l>
                      <l>2</l>
                    </block>
                  </script>
                  <script>
                    <block s='doIfElse'>
                      <block s='reportAnd'>
                        <block s='reportListContainsItem'>
                          <block var='item'/>
                          <l>X</l>
                        </block>
                        <block s='reportListContainsItem'>
                          <block var='item'/>
                          <l>O</l>
                        </block>
                      </block>
                      <script>
                        <block s='doSayFor'>
                          <l>no</l>
                          <l>2</l>
                        </block>
                      </script>
                      <script>
                        <block s='doIfElse'>
                          <block s='reportListContainsItem'>
                            <block var='item'/>
                            <l>X</l>
                          </block>
                          <script>
                            <block s='doSayFor'>
                              <l>X</l>
                              <l>2</l>
                            </block>
                          </script>
                          <script>
                            <block s='doSayFor'>
                              <l>O</l>
                              <l>2</l>
                            </block>
                          </script>
                        </block>
                      </script>
                    </block>
                  </script>
                </block>
              </script>
            </custom-block>
          </script>
          <script x='1068.2666686666666' y='672.8000020000001'>
            <block s='doSayFor'>
              <l>no</l>
              <l>2</l>
            </block>
          </script>
          <script x='874.2666686666666' y='186.83333533333337'>
            <block s='doStopThis'>
              <l>
                <option>all</option>
              </l>
            </block>
          </script>
          <script x='1003.2666686666666' y='247.83333533333322'>
            <block s='doStopThis'>
              <l>
                <option>all</option>
              </l>
            </block>
          </script>
          <script x='746.2666686666666' y='229.8333353333334'>
            <block s='doSayFor'>
              <l>X won</l>
              <l>2</l>
            </block>
          </script>
          <script x='1021.2666686666666' y='454.80000200000006'>
            <block s='doChangeVar'>
              <l/>
              <l>1</l>
            </block>
          </script>
          <script x='488.26666666666665' y='235.00000000000003'>
            <block s='reportListContainsItem'>
              <l/>
              <l>thing</l>
            </block>
          </script>
          <script x='367.26666866666665' y='438.80000200000006'>
            <block s='doSetVar'>
              <l>position number</l>
              <l>0</l>
            </block>
          </script>
          <script x='858.2666686666666' y='732.8000020000001'>
            <block s='doSetVar'>
              <l>position number</l>
              <block s='reportSum'>
                <block var='position number'/>
                <l>1</l>
              </block>
            </block>
          </script>
          <script x='906.2666666666667' y='294'>
            <custom-block s='keep items such that %predRing from %l'>
              <block s='reifyPredicate'>
                <autolambda>
                  <block s='reportListContainsItem'>
                    <block s='reifyReporter'>
                      <autolambda>
                        <block s='reportListItem'>
                          <l/>
                          <l/>
                        </block>
                      </autolambda>
                      <list/>
                    </block>
                    <l>Empty</l>
                  </block>
                </autolambda>
                <list/>
              </block>
              <custom-block s='status of all triples'/>
            </custom-block>
          </script>
          <script x='712.9082702291666' y='112.8333373333333'>
            <block s='reifyReporter'>
              <script/>
              <list/>
            </block>
          </script>
          <script x='441.26666666666665' y='150'>
            <custom-block s='status of all triples'/>
          </script>
          <script x='1089.2666676666665' y='539.8333343333335'>
            <block s='doIfElse'>
              <l/>
              <script/>
              <script/>
            </block>
          </script>
          <script x='1000.9082702291666' y='93.8333373333333'>
            <block s='reportListItem'>
              <l>4</l>
              <l/>
            </block>
          </script>
          <script x='1061.7901051666665' y='393.80000099999995'>
            <block s='reportSum'>
              <l/>
              <l/>
            </block>
          </script>
          <script x='1058.2666666666667' y='497'>
            <block s='show'/>
          </script>
          <script x='927.2666686666666' y='590.8333353333333'>
            <block s='doSayFor'>
              <l>Hello!</l>
              <l>2</l>
            </block>
          </script>
          <script x='802.3545592916666' y='427.83333533333337'>
            <block s='reportEquals'>
              <l/>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script x='824.2666676666668' y='497.83333433333337'>
            <block s='doWaitUntil'>
              <l/>
            </block>
          </script>
          <script x='937.3545592916666' y='532.8333373333334'>
            <custom-block s='not done yet'/>
          </script>
          <comment x='667' w='156.66666666666666' collapsed='false' y='265.66666666666674'>Connect this to the script below it in For You To Do 4.</comment>
          <script x='501.26666666666665' y='288'>
            <block s='receiveGo'/>
            <block s='doWait'>
              <l>1</l>
            </block>
            <block s='doForever'>
              <script>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='not done yet'/>
                    <block s='reportBoolean'>
                      <l>
                        <bool>false</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='doIf'>
                      <block s='reportAnd'>
                        <block s='reportEquals'>
                          <custom-block s='won? %s'>
                            <l>X</l>
                          </custom-block>
                          <block s='reportBoolean'>
                            <l>
                              <bool>false</bool>
                            </l>
                          </block>
                        </block>
                        <block s='reportEquals'>
                          <custom-block s='won? %s'>
                            <l>O</l>
                          </custom-block>
                          <block s='reportBoolean'>
                            <l>
                              <bool>false</bool>
                            </l>
                          </block>
                        </block>
                      </block>
                      <script>
                        <block s='bubble'>
                          <l>Tie</l>
                        </block>
                        <block s='doStopThis'>
                          <l>
                            <option>this script</option>
                          </l>
                        </block>
                      </script>
                    </block>
                  </script>
                </block>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='won? %s'>
                      <l>X</l>
                    </custom-block>
                    <block s='reportBoolean'>
                      <l>
                        <bool>false</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='bubble'>
                      <l>X won</l>
                    </block>
                    <block s='doStopThis'>
                      <l>
                        <option>this script</option>
                      </l>
                    </block>
                  </script>
                </block>
                <block s='doIf'>
                  <block s='reportEquals'>
                    <custom-block s='won? %s'>
                      <l>O</l>
                    </custom-block>
                    <block s='reportBoolean'>
                      <l>
                        <bool>false</bool>
                      </l>
                    </block>
                  </block>
                  <script>
                    <block s='bubble'>
                      <l>O won</l>
                    </block>
                    <block s='doStopThis'>
                      <l>
                        <option>this script</option>
                      </l>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
        </scripts>
      </sprite>
      <watcher x='3.8125000000001137' color='243,118,29' style='normal' hidden='true' y='3.812500000000007' var='X&apos;s turn?'/>
      <watcher hidden='true' x='7.624999999999886' s='xPosition' style='normal' color='74,108,212' y='7.625' scope='Square'/>
      <watcher hidden='true' x='7.624999999999886' s='yPosition' style='normal' color='74,108,212' y='23.63750152499999' scope='Square'/>
      <watcher var='board' x='7.624999999999886' color='243,118,29' style='normal' y='39.65000304999998' extX='79.99999999999966' extY='70'/>
      <watcher x='12.200000000000045' color='243,118,29' style='normal' y='9.912504574999986' var='position number' scope='Square'/>
    </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'>false</input>
        <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'>false</input>
        <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='motion' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='show'/>
        <block s='doSetVar'>
          <l>position number</l>
          <l>0</l>
        </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>columm</l>
              <l>1</l>
              <l>3</l>
              <script>
                <block s='doChangeVar'>
                  <l>position number</l>
                  <l>1</l>
                </block>
                <block s='createClone'>
                  <l>
                    <option>myself</option>
                  </l>
                </block>
                <block s='gotoXY'>
                  <block s='reportSum'>
                    <block s='xPosition'/>
                    <l>50</l>
                  </block>
                  <block s='yPosition'/>
                </block>
              </script>
            </custom-block>
            <block s='gotoXY'>
              <block s='reportDifference'>
                <block s='xPosition'/>
                <l>150</l>
              </block>
              <block s='reportDifference'>
                <block s='yPosition'/>
                <l>50</l>
              </block>
            </block>
          </script>
        </custom-block>
        <block s='gotoXY'>
          <l>125</l>
          <l>-125</l>
        </block>
      </script>
      <scripts>
        <script x='257' y='297.99999999999994'>
          <block s='hide'/>
        </script>
      </scripts>
    </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 triples' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>triples table</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>triples table</l>
          <block s='reportNewList'>
            <list/>
          </block>
        </block>
        <custom-block s='for each %upvar of %l %cs'>
          <l>item</l>
          <custom-block s='possible winning triples'/>
          <script>
            <block s='doAddToList'>
              <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='item'/>
                </list>
              </custom-block>
              <block var='triples table'/>
            </block>
          </script>
        </custom-block>
        <block s='doReport'>
          <block var='triples table'/>
        </block>
      </script>
      <scripts>
        <script x='222.99511818749988' y='196.0000030000001'>
          <block s='reportListItem'>
            <l/>
            <l/>
          </block>
        </script>
        <script x='565.1904326875001' y='168.00000599999998'>
          <block var='item'/>
        </script>
        <script x='368.2236338124999' y='198.0000030000001'>
          <block s='reportNewList'>
            <list>
              <l>1</l>
              <l>2</l>
              <l>3</l>
            </list>
          </block>
        </script>
        <script x='422.9999990000001' y='41'>
          <custom-block s='for each %upvar of %l %cs'>
            <l>item</l>
            <custom-block s='possible winning triples'/>
            <script/>
          </custom-block>
        </script>
        <script x='432.99511818750034' y='267.0000030000001'>
          <block s='reportListItem'>
            <l>1</l>
            <l/>
          </block>
        </script>
        <script x='99.9951181875' y='221.0000030000001'>
          <block s='reportListItem'>
            <l/>
            <l/>
          </block>
        </script>
      </scripts>
    </block-definition>
    <block-definition s='won? %&apos;player&apos;' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <custom-block s='for each %upvar of %l %cs'>
          <l>item</l>
          <custom-block s='status of all triples'/>
          <script>
            <block s='doIfElse'>
              <block s='reportListContainsItem'>
                <block var='item'/>
                <l>Empty</l>
              </block>
              <script/>
              <script>
                <block s='doIfElse'>
                  <block s='reportAnd'>
                    <block s='reportListContainsItem'>
                      <block var='item'/>
                      <l>X</l>
                    </block>
                    <block s='reportListContainsItem'>
                      <block var='item'/>
                      <l>O</l>
                    </block>
                  </block>
                  <script/>
                  <script>
                    <block s='doIf'>
                      <block s='reportListContainsItem'>
                        <block var='item'/>
                        <block var='player'/>
                      </block>
                      <script>
                        <block s='doReport'>
                          <block s='reportBoolean'>
                            <l>
                              <bool>false</bool>
                            </l>
                          </block>
                        </block>
                      </script>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
        </custom-block>
        <block s='doReport'>
          <block s='reportBoolean'>
            <l>
              <bool>false</bool>
            </l>
          </block>
        </block>
      </script>
      <scripts>
        <script x='272.0000009999999' y='284.8333363333333'>
          <block s='reportListItem'>
            <l/>
            <l/>
          </block>
        </script>
        <script x='351' y='36.999998000000005'>
          <block s='doDeclareVariables'>
            <list>
              <l>winning</l>
            </list>
          </block>
          <block s='doSetVar'>
            <l>winning</l>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
          <block s='doAddToList'>
            <custom-block s='keep items such that %predRing from %l'>
              <block s='reifyPredicate'>
                <script/>
                <list/>
              </block>
              <l/>
            </custom-block>
            <block var='winning'/>
          </block>
        </script>
        <script x='382.9951201875001' y='166.00000100000005'>
          <block var='winning'/>
        </script>
        <script x='277.6416035625' y='127'>
          <block s='reportEquals'>
            <l/>
            <block s='reportNewList'>
              <list>
                <block var='player'/>
                <block var='player'/>
                <block var='player'/>
              </list>
            </block>
          </block>
        </script>
        <script x='290.6416035625' y='48.000001999999995'>
          <block var='item'/>
        </script>
        <script x='388.6416025624999' y='230.99999900000006'>
          <block s='reportListContainsItem'>
            <custom-block s='status of all triples'/>
            <block s='reportNewList'>
              <list>
                <block var='player'/>
                <block var='player'/>
                <block var='player'/>
              </list>
            </block>
          </block>
        </script>
        <script x='415' y='281.99999799999995'>
          <custom-block s='for each %upvar of %l %cs'>
            <l>item</l>
            <custom-block s='status of all triples'/>
            <script>
              <block s='doIfElse'>
                <block s='reportListContainsItem'>
                  <block var='item'/>
                  <l>Empty</l>
                </block>
                <script>
                  <block s='doReport'>
                    <block s='reportBoolean'>
                      <l>
                        <bool>false</bool>
                      </l>
                    </block>
                  </block>
                </script>
                <script>
                  <block s='doIf'>
                    <block s='reportAnd'>
                      <block s='reportListContainsItem'>
                        <block var='item'/>
                        <l>X</l>
                      </block>
                      <block s='reportListContainsItem'>
                        <block var='item'/>
                        <l>O</l>
                      </block>
                    </block>
                    <script>
                      <block s='doReport'>
                        <block s='reportBoolean'>
                          <l>
                            <bool>false</bool>
                          </l>
                        </block>
                      </block>
                    </script>
                  </block>
                  <block s='doIf'>
                    <block s='reportListContainsItem'>
                      <block var='item'/>
                      <block var='player'/>
                    </block>
                    <script>
                      <block s='doReport'>
                        <block s='reportBoolean'>
                          <l>
                            <bool>false</bool>
                          </l>
                        </block>
                      </block>
                    </script>
                  </block>
                </script>
              </block>
            </script>
          </custom-block>
        </script>
        <script x='378.0000030000001' y='198.8333343333333'>
          <block s='doSayFor'>
            <l>no</l>
            <l>2</l>
          </block>
        </script>
        <script x='448.000004' y='164.66666866666668'>
          <block s='doSayFor'>
            <l>X</l>
            <l>2</l>
          </block>
        </script>
        <script x='169.000004' y='424.90000200000003'>
          <block s='doSayFor'>
            <l>O</l>
            <l>2</l>
          </block>
        </script>
        <script x='364.224613375' y='263.6666706666667'>
          <block var='player'/>
        </script>
        <script x='225.000002' y='93'>
          <block s='doReport'>
            <block s='reportBoolean'>
              <l>
                <bool>false</bool>
              </l>
            </block>
          </block>
        </script>
        <script x='268.0000030000001' y='224.8333343333333'>
          <block s='doReport'>
            <block s='reportBoolean'>
              <l>
                <bool>false</bool>
              </l>
            </block>
          </block>
        </script>
        <script x='179.000003' y='288.66666766666657'>
          <block s='doIfElse'>
            <l/>
            <script/>
            <script/>
          </block>
        </script>
        <script x='348.000002' y='10'>
          <block s='doReport'>
            <block s='reportBoolean'>
              <l>
                <bool>false</bool>
              </l>
            </block>
          </block>
        </script>
        <script x='322.0000030000001' y='198.8333343333333'>
          <block s='doReport'>
            <block s='reportBoolean'>
              <l>
                <bool>false</bool>
              </l>
            </block>
          </block>
        </script>
      </scripts>
    </block-definition>
    <block-definition s='not done yet' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>item contains empty</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>item contains empty</l>
          <block s='reportNewList'>
            <list/>
          </block>
        </block>
        <custom-block s='for each %upvar of %l %cs'>
          <l>item</l>
          <custom-block s='status of all triples'/>
          <script>
            <block s='doIf'>
              <block s='reportListContainsItem'>
                <block var='item'/>
                <l>Empty</l>
              </block>
              <script>
                <block s='doAddToList'>
                  <block var='item'/>
                  <block var='item contains empty'/>
                </block>
              </script>
            </block>
          </script>
        </custom-block>
        <block s='doIfElse'>
          <block s='reportEquals'>
            <custom-block s='empty? %l'>
              <block var='item contains empty'/>
            </custom-block>
            <block s='reportBoolean'>
              <l>
                <bool>false</bool>
              </l>
            </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>false</bool>
                </l>
              </block>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables>
    <variable name='X&apos;s turn?'>
      <bool>false</bool>
    </variable>
    <variable name='board'>
      <list id='1314' struct='atomic'>X,O,X,X,O,O,O,X,X</list>
    </variable>
  </variables>
</project><media name="U3L2-TicTacToe" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>