<snapdata remixID="10356994"><project name="Hummingbird-Chrome" 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="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" 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 struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="15.686274509804662" y="50.00000000000003" heading="195" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><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="10"/></item></list></costumes><sounds><list struct="atomic" id="11"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="10"><custom-block s="Hummingbird LED %n %n"><l>1</l><l>50</l></custom-block></script><script x="26.000000000000057" y="72.33333333333348"><block s="receiveKey"><l><option>x</option></l></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>0</l></custom-block></script><script x="23.00000000000017" y="160.33333333333348"><block s="receiveGo"></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>50</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird LED %n %n"><l>2</l><l>50</l><comment w="90" collapsed="false">1.3</comment></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>0</l></custom-block><custom-block s="Hummingbird LED %n %n"><l>2</l><l>0</l></custom-block></script><script x="24.00000000000017" y="335.9999999999991"><block s="receiveGo"></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>100</l></custom-block><custom-block s="Hummingbird LED %n %n"><l>2</l><l>10</l></custom-block><block s="doWait"><l>5</l></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>0</l></custom-block><custom-block s="Hummingbird LED %n %n"><l>2</l><l>0</l></custom-block></script><script x="12" y="54.666666666666515"><custom-block s="Hummingbird LED %n %n"><l>1</l><l>50</l></custom-block></script><comment x="190.00000000000003" y="26.66666666666697" w="90" collapsed="false">1.1</comment><comment x="206.00000000000003" y="80.66666666666652" w="90" collapsed="false">1.2</comment><comment x="220.00000000000037" y="374.66666666666606" w="90" collapsed="false">1.4</comment><script x="25.000000000000057" y="500.3333333333326"><block s="receiveKey"><l><option>left arrow</option></l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>100</l><l>0</l><l>0</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>0</l><l>0</l><l>100</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>100</l><l>0</l><l>0</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>0</l><l>0</l><l>0</l></custom-block></script><comment x="367.0000000000002" y="542" w="90" collapsed="false">2.1: I think the color is going to blink 3 different times and then once all 3 R G B is 0 then it will turn off</comment><script x="30.000000000000057" y="736.0000000000005"><block s="receiveKey"><l><option>left arrow</option></l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>2</l><l>100</l><l>0</l><l>0</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>2</l><l>0</l><l>0</l><l>100</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>2</l><l>100</l><l>0</l><l>0</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>2</l><l>0</l><l>0</l><l>100</l></custom-block><block s="doWait"><l>1</l></block></script><comment x="347.3333333333326" y="769.0000000000009" w="90" collapsed="false">2.2</comment><script x="25.999999999999943" y="957.0000000000014"><block s="receiveKey"><l><option>up arrow</option></l></block><block s="doRepeat"><l>10</l><script><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>50</l><l>100</l><l>50</l></custom-block><block s="doWait"><l>.5</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>0</l><l>0</l><l>0</l></custom-block></script></block><block s="doWait"><l>5</l></block><block s="doRepeat"><l>10</l><script><custom-block s="Hummingbird LED %n %n"><l>1</l><l>100</l></custom-block><block s="doWait"><l>.5</l></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>0</l></custom-block></script></block><block s="doWait"><l>5</l></block></script><comment x="366.3333333333328" y="1068.333333333334" w="90" collapsed="false">2.3</comment><script x="24.000000000000114" y="1247.6666666666674"><block s="receiveGo"></block><block s="doRepeat"><l>5</l><script><custom-block s="Hummingbird Vibration %n %n"><l>1</l><l>50</l></custom-block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>100</l></custom-block><block s="doWait"><l>4</l></block><custom-block s="Hummingbird Vibration %n %n"><l>1</l><l>0</l></custom-block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>0</l></custom-block><block s="doWait"><l>4</l></block></script></block></script><comment x="237.99999999999991" y="1345.6666666666674" w="90" collapsed="false">3.1</comment><script x="28.000000000000114" y="1453.000000000001"><block s="receiveKey"><l><option>b</option></l></block><block s="doRepeat"><l>10</l><script><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>-90</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>30</l></custom-block></script></block></script><comment x="231.66666666666666" y="1481.0000000000014" w="90" collapsed="false">3.2: both cant be positive or both negative each number needs to be different</comment><script x="28.000000000000114" y="1621.0000000000011"><block s="receiveKey"><l><option>space</option></l></block><block s="doRepeat"><l>10</l><script><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>-90</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>30</l></custom-block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>50</l><l>100</l><l>50</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>90</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>-30</l></custom-block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>20</l><l>50</l><l>30</l></custom-block></script></block></script><comment x="351.9999999999993" y="1774.0000000000018" w="90" collapsed="false">3.3</comment><script x="30.999999999999886" y="1940.000000000001"><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>0</l></custom-block></script><comment x="274.0000000000007" y="1942.000000000001" w="90" collapsed="false">3.4</comment><script x="29.66666666666663" y="2218.000000000001"><block s="receiveGo"></block><custom-block s="Say This %txt"><l>hi</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Say This %txt"><l>bye</l></custom-block></script><comment x="175.6666666666662" y="2248.000000000001" w="90" collapsed="false">4.1: you need to put a wait block in between them</comment><script x="33.999999999999886" y="2001.000000000001"><block s="receiveGo"></block><block s="doRepeat"><l>2</l><script><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>100</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>-100</l><comment w="90" collapsed="false">3.5</comment></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>0</l></custom-block></script></block></script><script x="266.99999999999966" y="2360.000000000001"><block s="receiveKey"><l><option>e</option></l></block><custom-block s="Hummingbird LED %n %n"><l>2</l><l>50</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>100</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>0</l></custom-block></script><comment x="461.33333333333326" y="2447.333333333334" w="90" collapsed="false">4.2</comment><script x="29.66666666666663" y="2367.666666666665"><block s="receiveKey"><l><option>w</option></l></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>50</l></custom-block><block s="doWait"><l>1</l></block><custom-block s="Hummingbird Servo %n %n"><l>1</l><l>100</l></custom-block><block s="doWait"><l>1</l></block><block s="doRepeat"><l>10</l><script><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>20</l><l>100</l><l>40</l></custom-block><block s="doWait"><l>.5</l></block><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><l>0</l><l>0</l><l>0</l></custom-block></script></block></script><script x="33.3333333333332" y="2653.333333333332"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><block s="doSetVar"><l>distance</l><custom-block s="HB Distance CM %n"><l>1</l></custom-block></block></script></block></script><comment x="283.33333333333303" y="2701.166666666665" w="90" collapsed="false">5.1</comment><script x="34.99999999999994" y="2767.499999999998"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><block s="doIfElse"><block s="reportLessThan"><custom-block s="HB Distance CM %n"><l>1</l></custom-block><l>20</l></block><script><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>50</l></custom-block><block s="doWait"><l>5</l></block></script><script><custom-block s="Hummingbird Motor %n %n"><l>1</l><l>0</l></custom-block><block s="doWait"><l>5</l></block></script></block></script></block></script><comment x="260.6666666666664" y="2875.166666666665" w="90" collapsed="false">5.3</comment><script x="20" y="3016.833333333332"><block s="receiveGo"></block><block s="doSetVar"><l>knob</l><custom-block s="Hummingbird Knob %n"><l>1</l></custom-block></block></script><comment x="272.9999999999998" y="3028.8333333333317" w="90" collapsed="false">6.1: when I turn it to the right it decreases and the left increases the value</comment><script x="17" y="3110.499999999998"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><custom-block s="Hummingbird LED %n %n"><l>1</l><custom-block s="Hummingbird Knob %n"><l>1</l></custom-block></custom-block></script></block></script><comment x="357.6666666666665" y="3152.3333333333317" w="90" collapsed="false">6.2</comment><script x="21.999999999999943" y="3212.999999999998"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><custom-block s="Hummingbird Servo %n %n"><l>1</l><custom-block s="Hummingbird Knob %n"><l>1</l></custom-block></custom-block></script></block></script><comment x="344.9999999999998" y="3258.8333333333317" w="90" collapsed="false">6.3</comment><script x="23.999999999999943" y="3331.8333333333317"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><custom-block s="Hummingbird Servo %n %n"><l>1</l><block s="reportProduct"><l>50</l><custom-block s="Hummingbird Knob %n"><l>1</l></custom-block></block></custom-block></script></block></script><script x="28.999999999999943" y="3448.666666666665"><block s="receiveKey"><l><option>space</option></l></block><block s="doForever"><script><custom-block s="Hummingbird TRI-LED %n R %n G %n B %n"><l>1</l><custom-block s="Hummingbird Knob %n"><l>1</l></custom-block><l>0</l><block s="reportDifference"><l>100</l><custom-block s="Hummingbird Knob %n"><l>1</l></custom-block></block></custom-block></script></block></script><comment x="451.6666666666665" y="3530.166666666665" w="90" collapsed="false"> 6.5: it turns the 3 LED into a different color</comment><comment x="431.9999999999998" y="3386.166666666665" w="90" collapsed="false">6.4</comment><script x="13.3333333333334" y="3588.166666666665"><custom-block s="Hummingbird Light %n"><l>1</l></custom-block></script><comment x="182.3333333333334" y="3595.166666666665" w="90" collapsed="false">7.1: the light amount is at 50</comment><script x="20.3333333333334" y="3657.499999999998"><block s="receiveKey"><l><option>space</option></l></block><block s="doIfElse"><block s="reportEquals"><custom-block s="Hummingbird Light %n"><l>1</l></custom-block><l>50</l></block><script></script><script></script></block></script><comment x="278.33333333333337" y="3692.333333333332" w="90" collapsed="false">7.4?</comment></scripts></sprite><watcher scope="Stage" s="getTimer" style="normal" x="0.009765625" y="0.09179688281250264" color="4,148,220" hidden="true"/><watcher scope="Stage" s="getLastAnswer" style="normal" x="0.009765625" y="0.11230469726562475" color="4,148,220" hidden="true"/><watcher scope="Sprite" s="getScale" style="normal" x="0.009765625" y="0.13281251171874686" color="143,86,227" hidden="true"/><watcher var="distance" style="normal" x="10" y="10" color="243,118,29"/><watcher var="knob" style="normal" x="10" y="31.000001999999995" color="243,118,29"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Hummingbird LED %&apos;port&apos; %&apos;intensity&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">50</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum,intensitynum</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#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.LEDs === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.LEDs = {&#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;        setLEDIntensity: function(port, intensity) {&#xD;            function callback() {&#xD;                if (window.birdbrain.LEDs[port] === intensity) {&#xD;                    delete window.birdbrain.LEDs[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.LEDs.setLEDIntensity(port, window.birdbrain.LEDs[port]);&#xD;                }&#xD;            }&#xD;&#xD;            var report = {&#xD;                message:"L".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                intensity: intensity&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var realIntensity = Math.floor(intensitynum*2.55);&#xD;&#xD;realIntensity = Math.max(Math.min(realIntensity,255.0),0.0);&#xD;&#xD;if (window.birdbrain.LEDs[realPort] === undefined) {&#xD;  window.birdbrain.LEDs.setLEDIntensity(realPort, realIntensity);&#xD;}&#xD;&#xD;window.birdbrain.LEDs[realPort] = realIntensity;&#xD;</l></block><list><block var="port"/><block var="intensity"/></list></block><block s="doWait"><l>0</l></block></script></block-definition><block-definition s="Hummingbird TRI-LED %&apos;port&apos; R %&apos;redLED&apos; G %&apos;greenLED&apos; B %&apos;blueLED&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">0</input><input type="%n">100</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>rednum</l><l>greennum</l><l>bluenum</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#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.triLEDs === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.triLEDs = {&#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;        setLEDIntensities: function(port, intensities) {&#xD;            function callback() {&#xD;                if (JSON.stringify(window.birdbrain.triLEDs[port]) === JSON.stringify(intensities)) {&#xD;                    delete window.birdbrain.triLEDs[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.triLEDs.setLEDIntensities(port, window.birdbrain.triLEDs[port]);&#xD;                }&#xD;            }&#xD;&#xD;            var report = {&#xD;                message:"O".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                red: intensities[0],&#xD;                green: intensities[1],&#xD;                blue: intensities[2]&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var realIntensities = [rednum, greennum, bluenum].map(function(intensity) {&#xD;    return Math.floor(Math.max(Math.min(intensity*2.55, 255), 0));&#xD;});&#xD;&#xD;if (window.birdbrain.triLEDs[realPort] === undefined) {&#xD;    window.birdbrain.triLEDs.setLEDIntensities(realPort, realIntensities);&#xD;}&#xD;&#xD;window.birdbrain.triLEDs[realPort] = realIntensities;&#xD;</l></block><list><block var="port"/><block var="redLED"/><block var="greenLED"/><block var="blueLED"/></list></block><block s="doWait"><l>0</l></block></script></block-definition><block-definition s="Hummingbird Servo %&apos;port&apos; %&apos;position&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>ang</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#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.servos === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.servos = {&#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;        setServoAngle: function (port, angle) {&#xD;            function callback() {&#xD;                if (window.birdbrain.servos[port] === angle) {&#xD;                    delete window.birdbrain.servos[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.servos.setServoAngle(port, window.birdbrain.servos[port]);&#xD;                }&#xD;            }&#xD;            var report = {&#xD;                message: "S".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                angle: angle&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;var realAngle = Math.floor(ang*1.25);&#xD;&#xD;realAngle = Math.max(Math.min(realAngle,225.0),0.0);&#xD;&#xD;if (window.birdbrain.servos[realPort] === undefined) {&#xD;    window.birdbrain.servos.setServoAngle(realPort, realAngle);&#xD;}&#xD;&#xD;window.birdbrain.servos[realPort] = realAngle;</l></block><list><block var="port"/><block var="position"/></list></block><block s="doWait"><l>0</l></block></script></block-definition><block-definition s="Hummingbird Motor %&apos;port&apos; %&apos;speed&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>velocity</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#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.motors === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.motors = {&#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;        setMotorVelocity: function (port, velocity) {&#xD;            function callback() {&#xD;                if (window.birdbrain.motors[port] === velocity) {&#xD;                    delete window.birdbrain.motors[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.motors.setMotorVelocity(port, window.birdbrain.motors[port]);&#xD;                }&#xD;            }&#xD;            var report = {&#xD;                message: "M".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                direction: (velocity &lt; 0 ? 1 : 0).toString().charCodeAt(0),&#xD;                velocity: Math.abs(velocity)&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;var realVelocity = Math.floor(velocity*2.55);&#xD;&#xD;realVelocity = Math.max(Math.min(realVelocity,255), -255);&#xD;&#xD;if (window.birdbrain.motors[realPort] === undefined) {&#xD;  window.birdbrain.motors.setMotorVelocity(realPort, realVelocity);&#xD;}&#xD;&#xD;window.birdbrain.motors[realPort] = realVelocity;</l></block><list><block var="port"/><block var="speed"/></list></block><block s="doWait"><l>0</l></block></script></block-definition><block-definition s="Hummingbird Vibration %&apos;port&apos; %&apos;intensity&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>intensitynum</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#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.vibrations === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.vibrations = {&#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;        setServoIntensity: function (port, intensity) {&#xD;            function callback() {&#xD;                if (window.birdbrain.vibrations[port] === intensity) {&#xD;                    delete window.birdbrain.vibrations[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.vibrations.setServoIntensity(port, window.birdbrain.vibrations[port]);&#xD;                }&#xD;            }&#xD;            var report = {&#xD;                message: "V".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                intensity: intensity&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;var realIntensity = Math.floor(intensitynum*2.55);&#xD;&#xD;realIntensity = Math.max(Math.min(realIntensity,255.0),0.0);&#xD;&#xD;if (window.birdbrain.vibrations[realPort] === undefined) {&#xD;  window.birdbrain.vibrations.setServoIntensity(realPort, realIntensity);&#xD;}&#xD;&#xD;window.birdbrain.vibrations[realPort] = realIntensity;</l></block><list><block var="port"/><block var="intensity"/></list></block><block s="doWait"><l>0</l></block></script></block-definition><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>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var report = { message: "SPEAK", val: phrase};&#xD;chrome.runtime.sendMessage(hummingbirdAppID, report, function(){});</l></block><list><block var="speech"/></list></block></script></block-definition><block-definition s="Hummingbird Light %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = sensorvalue / 2.55;&#xD;    sensorvalue = parseInt(sensorvalue);&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="HB Temperature C %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = Math.floor(((sensorvalue-127)/2.4+25)*100/100);;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="HB Temperature F %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doReport"><block s="reportRound"><block s="reportSum"><l>32</l><block s="reportProduct"><l>1.80</l><custom-block s="HB Temperature C %n"><block var="port"/></custom-block></block></block></block></block></script></block-definition><block-definition s="HB Distance CM %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    var reading = sensorvalue*4;&#xD;&#xD;    if(reading &lt; 130){&#xD;        sensorvalue =  100;&#xD;    }&#xD;    else { //formula based on mathematical regression&#xD;            reading = reading - 120;&#xD;            var distance;&#xD;            if (reading &gt; 680)&#xD;                distance = 5.0;&#xD;            else{&#xD;                var sensor_val_square = reading*reading;&#xD;                distance = sensor_val_square*sensor_val_square*reading*-0.000000000004789&#xD;				               + sensor_val_square*sensor_val_square*0.000000010057143&#xD;				               - sensor_val_square*reading*0.000008279033021 &#xD;				               + sensor_val_square*0.003416264518201 &#xD;				               - reading*0.756893112198934 &#xD;				               + 90.707167605683000;&#xD;            }&#xD;            sensorvalue =  parseInt(distance);&#xD;        }&#xD;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="HB Distance Inch %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportQuotient"><custom-block s="HB Distance CM %n"><block var="port"/></custom-block><l>0.254</l></block></block><l>10</l></block></block></script></block-definition><block-definition s="Hummingbird Raw Sensor %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = sensorvalue / 2.55;&#xD;    sensorvalue = parseInt(sensorvalue);&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="Hummingbird Knob %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = sensorvalue / 2.55;&#xD;    sensorvalue = parseInt(sensorvalue);&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="Hummingbird Sound %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition></blocks><variables><variable name="distance"><l>12</l></variable><variable name="knob"><l>50</l></variable></variables></project><media name="Hummingbird-Chrome" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>