<snapdata remixID="10340039"><project name="Finch Intermediate I Lessons" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="1" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><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"><item><costume name="XY Grid" center-x="240" center-y="180" image="data:image/png;base64,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" id="3"/></item></list></costumes><sounds><list struct="atomic" id="4"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="15.686274509804207" y="50" heading="195" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="9"><costumes><list id="10"><item><costume name="Untitled" center-x="240" center-y="180" image="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" id="11"/></item></list></costumes><sounds><list struct="atomic" id="12"></list></sounds><blocks></blocks><variables></variables><scripts><script x="12" y="310.66666666666663"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><block s="doSetVar"><l>left light</l><custom-block s="Finch Left Light Sensor"></custom-block></block></script></block></script><script x="83" y="39"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><custom-block s="Move Finch Left: %n Right: %n"><custom-block s="Finch Right Light Sensor"></custom-block><custom-block s="Finch Left Light Sensor"></custom-block></custom-block></script></block></script><script x="62" y="175.00000000000003"><block s="reportProduct"><l>10</l><block s="reportSum"><l>2</l><l>4</l></block></block></script><script x="327" y="152"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><block s="doSetVar"><l>temperature</l><block s="reportSum"><block s="reportProduct"><block s="reportQuotient"><l>9</l><l>5</l></block><l>25.8</l></block><l>32</l></block></block></script></block></script><script x="405" y="268.9999999999999"><custom-block s="Finch Temperature Celcius"></custom-block></script><script x="341" y="339"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><block s="doSetVar"><l>accelX</l><custom-block s="Finch X Acceleration"></custom-block></block><block s="doSetVar"><l>accelY</l><custom-block s="Finch Y Acceleration"></custom-block></block><block s="doSetVar"><l>accelZ</l><custom-block s="Finch Z Acceleration"></custom-block></block></script></block></script></scripts></sprite><watcher scope="Stage" s="getLastAnswer" style="normal" x="0.15625" y="1.7968751562500103" color="4,148,220" hidden="true"/><watcher scope="Sprite" s="getScale" style="normal" x="0.15625" y="2.1250001874999924" color="143,86,227" hidden="true"/><watcher var="left light" style="normal" x="10" y="10" color="243,118,29"/><watcher var="temperature" style="normal" x="10" y="31.000001999999995" color="243,118,29"/><watcher var="accelX" style="normal" x="10" y="52.00000399999999" color="243,118,29"/><watcher var="accelY" style="normal" x="10" y="73.00000599999998" color="243,118,29"/><watcher var="accelZ" style="normal" x="10" y="94.00000799999998" color="243,118,29"/><sprite name="Sprite(2)" idx="2" x="64" y="45" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="214.2,12.852000000000011,0,1" pen="tip" id="83"><costumes><list struct="atomic" id="84"></list></costumes><sounds><list struct="atomic" id="85"></list></sounds><blocks></blocks><variables></variables><scripts><script x="60" y="47"><block s="receiveKey"><l><option>space</option></l></block><block s="gotoXY"><l>-240</l><l>-180</l></block><block s="doWait"><l>1</l></block><block s="gotoXY"><l>-240</l><l>180</l></block><block s="doWait"><l>1</l></block><block s="gotoXY"><l>240</l><l>180</l></block><block s="doWait"><l>1</l></block><block s="gotoXY"><l>240</l><l>-180</l></block><block s="doWait"><l>1</l></block></script><script x="341" y="75.99999999999997"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><block s="doSetVar"><l>accelY</l><custom-block s="Finch Y Acceleration"></custom-block></block><block s="doSetVar"><l>xPaddlePosition</l><block s="reportProduct"><l>1</l><block var="accelY"/></block></block><block s="gotoXY"><block var="xPaddlePosition"/><l>-180</l></block></script></block></script></scripts></sprite><watcher var="xPaddlePosition" style="normal" x="10" y="115.00000999999997" color="243,118,29"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Say This %&apos;speech&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%txt">I am known by many names, but you may call me...Tim.</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>phrase</l></list><l>finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;var report = { message: "SPEAK", val: phrase};&#xD;chrome.runtime.sendMessage(finchAppID, report, function() {});</l></block><list><block var="speech"/></list></block></script></block-definition><block-definition s="Move Finch Left: %&apos;Left&apos; Right: %&apos;Right&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>left</l><l>right</l></list><l>finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.moveSpeed === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.moveSpeed = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setMoveSpeed: function (speeds) {&#xD;            function callback() {&#xD;                // This array comparison is by reference instead of value.&#xD;                // This could mean false negatives if it&apos;s set to the same value, but these are uncommon and&#xD;                // the consequences are just a couple more messages sent. I do not think it is worth the&#xD;                // execution time and code complexity to do a proper value comparison.&#xD;                if (window.birdbrain.moveSpeed.speeds === speeds) {&#xD;                    delete window.birdbrain.moveSpeed.speeds;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.moveSpeed.setMoveSpeed(window.birdbrain.moveSpeed.speeds);&#xD;                }&#xD;            }&#xD;            var report = {&#xD;                message: "M".charCodeAt(0),&#xD;                leftDirection: speeds[0] &lt; 0 ? 1 : 0,&#xD;                leftSpeed: Math.abs(speeds[0]),&#xD;                rightDirection: speeds[1] &lt; 0 ? 1 : 0,&#xD;                rightSpeed: Math.abs(speeds[1]),&#xD;            };&#xD;            console.log(report);&#xD;            chrome.runtime.sendMessage(finchAppID, report, callback);&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;// constrain n to the range [-255..255]&#xD;function constrain(n) {&#xD;    return Math.max(Math.min(n, 255), -255);&#xD;}&#xD;&#xD;var speeds = [constrain(Math.round(left * 2.55)), constrain(Math.round(right * 2.55))];&#xD;&#xD;if (window.birdbrain.moveSpeed.speeds === undefined) {&#xD;  window.birdbrain.moveSpeed.setMoveSpeed(speeds);&#xD;}&#xD;&#xD;window.birdbrain.moveSpeed.speeds = speeds;</l></block><list><block var="Left"/><block var="Right"/></list></block></script></block-definition><block-definition s="Stop Finch" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="Move Finch Left: %n Right: %n"><l>0</l><l>0</l></custom-block></script></block-definition><block-definition s="Finch LED R: %&apos;red&apos; G: %&apos;green&apos; B: %&apos;blue&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">50</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>red</l><l>green</l><l>blue</l></list><l>finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.LED === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.LED = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setLED: function (values) {&#xD;            function callback() {&#xD;                // This array comparison is by reference instead of value.&#xD;                // This could mean false negatives if it&apos;s set to the same value, but these are uncommon and&#xD;                // the consequences are just a couple more messages sent. I do not think it is worth the&#xD;                // execution time and code complexity to do a proper value comparison.&#xD;                if (window.birdbrain.LED.values === values) {&#xD;                    delete window.birdbrain.LED.values;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.LED.setLED(window.birdbrain.LED.values);&#xD;                }&#xD;            }&#xD;            var report = {  message: "O".charCodeAt(0),&#xD;                            red: values[0],&#xD;                            green: values[1],&#xD;                            blue: values[2]&#xD;                         };&#xD;            console.log(report);&#xD;            chrome.runtime.sendMessage(finchAppID, report, callback);&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;// constrain n to the range [0..255]&#xD;function constrain(n) {&#xD;    return Math.max(Math.min(n, 255), 0);&#xD;}&#xD;&#xD;var values = [constrain(Math.round(red * 2.55)), constrain(Math.round(green * 2.55)), constrain(Math.round(blue * 2.55))];&#xD;&#xD;if (window.birdbrain.LED.values === undefined) {&#xD;  window.birdbrain.LED.setLED(values);&#xD;}&#xD;&#xD;window.birdbrain.LED.values = values;</l></block><list><block var="red"/><block var="green"/><block var="blue"/></list></block></script></block-definition><block-definition s="Finch Buzzer %&apos;frequency&apos; Hz %&apos;duration&apos; ms" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">500</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freq</l><l>time</l></list><l>finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.buzzer === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.buzzer = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setBuzzer: function (value) {&#xD;            function callback() {&#xD;                // This object comparison is by reference instead of value.&#xD;                // This could mean false negatives if it&apos;s set to the same value, but these are uncommon and&#xD;                // the consequences are just a couple more messages sent. I do not think it is worth the&#xD;                // execution time and code complexity to do a proper value comparison.&#xD;                if (window.birdbrain.buzzer.value === value) {&#xD;                    delete window.birdbrain.buzzer.value;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.buzzer.setBuzzer(window.birdbrain.buzzer.value);&#xD;                }&#xD;            }&#xD;            var report = {&#xD;                message: "B".charCodeAt(0),&#xD;                timeHigh: value.time &gt;&gt; 8,  // Since the report must be in bytes&#xD;                timeLow: value.time &amp; 0xFF, // and these values are bigger than a byte&#xD;                freqHigh: value.freq &gt;&gt; 8,  // they are split into two bytes&#xD;                freqLow: value.freq &amp; 0xFF&#xD;            };&#xD;            chrome.runtime.sendMessage(finchAppID, report, callback);&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;// constrain n to the range [0..65535]&#xD;function constrain(n) {&#xD;    return Math.max(Math.min(n, 0xFFFF), 0);&#xD;}&#xD;&#xD;var value = {&#xD;    freq: constrain(Math.round(freq)),&#xD;    time: constrain(Math.round(time))&#xD;};&#xD;&#xD;if (window.birdbrain.buzzer.value === undefined) {&#xD;    window.birdbrain.buzzer.setBuzzer(value);&#xD;}&#xD;&#xD;window.birdbrain.buzzer.value = value;</l></block><list><block var="frequency"/><block var="duration"/></list></block></script></block-definition><block-definition s="Finch Buzz+Wait %&apos;frequency&apos; Hz %&apos;duration&apos; ms" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">500</input></inputs><script><custom-block s="Finch Buzzer %n Hz %n ms"><block var="frequency"/><block var="duration"/></custom-block><block s="doWait"><block s="reportQuotient"><block var="duration"/><l>1000</l></block></block></script></block-definition><block-definition s="Finch Left Light Sensor" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.lights[0];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;    myself.finchDummy1 = sensorvalue;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy1;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Right Light Sensor" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.lights[1];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;    myself.finchDummy2 = sensorvalue;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy2;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Light Sensors" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><custom-block s="Finch Left Light Sensor"></custom-block><custom-block s="Finch Right Light Sensor"></custom-block></list></block></block></script></block-definition><block-definition s="Finch X Acceleration" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.acceleration[0];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;    myself.finchDummy3 = sensorvalue;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy3;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Y Acceleration" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.acceleration[1];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;    myself.finchDummy4 = sensorvalue;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy4;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Z Acceleration" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.acceleration[2];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;    myself.finchDummy5 = sensorvalue;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy5;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Orientation" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var acceleration = Array(3);&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;        acceleration = response.acceleration;&#xD;        callback(acceleration);&#xD;    };&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;    var orientation;&#xD;&#xD;        if(acceleration[0] &gt; -0.5 &amp;&amp; acceleration[0] &lt; 0.5 &amp;&amp; acceleration[1] &lt; 0.5 &amp;&amp; acceleration[1] &gt; -0.5 &amp;&amp; acceleration[2] &gt; 0.65 &amp;&amp; acceleration[2] &lt; 1.5)&#xD;&#xD;            orientation =  "level";&#xD;&#xD;        else if(acceleration[0] &gt; -0.5 &amp;&amp; acceleration[0] &lt; 0.5 &amp;&amp; acceleration[1] &lt; 0.5 &amp;&amp; acceleration[1] &gt; -0.5 &amp;&amp; acceleration[2] &gt; -1.5 &amp;&amp; acceleration[2] &lt; -0.65)&#xD;&#xD;            orientation = "upside down";&#xD;&#xD;        else if(acceleration[0] &lt; 1.5 &amp;&amp; acceleration[0] &gt; 0.8 &amp;&amp; acceleration[1] &gt;-0.3 &amp;&amp; acceleration[1] &lt; 0.3 &amp;&amp; acceleration[2] &gt; -0.3 &amp;&amp; acceleration[2] &lt; 0.3)&#xD;&#xD;            orientation = "beak down";&#xD;&#xD;        else if(acceleration[0] &lt; -0.8 &amp;&amp; acceleration[0] &gt; -1.5 &amp;&amp; acceleration[1] &gt;-0.3 &amp;&amp; acceleration[1] &lt; 0.3 &amp;&amp; acceleration[2] &gt; -0.3 &amp;&amp; acceleration[2] &lt; 0.3)&#xD;&#xD;            orientation = "beak up";&#xD;&#xD;        else if(acceleration[0] &gt; -0.5 &amp;&amp; acceleration[0] &lt; 0.5 &amp;&amp; acceleration[1] &gt; 0.7 &amp;&amp; acceleration[1] &lt; 1.5 &amp;&amp; acceleration[2] &gt; -0.5 &amp;&amp; acceleration[2] &lt; 0.5)&#xD;&#xD;            orientation = "left wing down";&#xD;&#xD;        else if(acceleration[0] &gt; -0.5 &amp;&amp; acceleration[0] &lt; 0.5 &amp;&amp; acceleration[1] &gt; -1.5 &amp;&amp; acceleration[1] &lt; -0.7 &amp;&amp; acceleration[2] &gt; -0.5 &amp;&amp; acceleration[2] &lt; 0.5)&#xD;&#xD;            orientation = "right wing down";&#xD;&#xD;        else&#xD;&#xD;            orientation = "in between";&#xD;    console.log("sensor value has been set: ", orientation);&#xD;&#xD;    myself.finchDummy6 = orientation;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy6;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Accelerations" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><custom-block s="Finch X Acceleration"></custom-block><custom-block s="Finch Y Acceleration"></custom-block><custom-block s="Finch Z Acceleration"></custom-block></list></block></block></script></block-definition><block-definition s="Finch Left Obstacle" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.obstacles[0];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    var pred = (sensorvalue !== 0);&#xD;    console.log("sensor value has been set: ", pred);&#xD;&#xD;    myself.finchDummy7 = pred;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy7;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Right Obstacle" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.obstacles[1];&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    var pred = (sensorvalue !== 0);&#xD;    console.log("sensor value has been set: ", pred);&#xD;&#xD;    myself.finchDummy8 = pred;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.05</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy8;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Obstacles" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><custom-block s="Finch Left Obstacle"></custom-block><custom-block s="Finch Right Obstacle"></custom-block></list></block></block></script></block-definition><block-definition s="Finch Temperature Celcius" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;finchAppID = "ojocioejjpmeccjfjlhkepchminjemod";&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;        sensorvalue = response.temperature;&#xD;        callback(sensorvalue);&#xD;&#xD;    };&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;    chrome.runtime.sendMessage(finchAppID, {&#xD;&#xD;        message: "POLL"&#xD;&#xD;    }, getValue);&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;    &#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;    myself.finchDummy9 = sensorvalue;&#xD;};&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;</l></block><list></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.finchDummy9;</l></block><list></list></block></block></script></block-definition><block-definition s="Finch Temperature Fahrenheit" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportSum"><block s="reportProduct"><l>1.8</l><custom-block s="Finch Temperature Celcius"></custom-block></block><l>32</l></block></block></script></block-definition></blocks><variables><variable name="left light"><l>63</l></variable><variable name="temperature"><l>0</l></variable><variable name="accelX"><l>0</l></variable><variable name="accelY"><l>0</l></variable><variable name="accelZ"><l>0</l></variable><variable name="xPaddlePosition"><l>0</l></variable></variables></project><media name="Finch Intermediate I Lessons" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>