instruction: Open the Khan Academy App, Select the Cryptography textbook and read the chapters of the textbook.

previous_actions: {"name": "open_app", "parameters": {"app_name": "Khan Academy"}}
{"name": "click", "parameters": {"x": 301, "y": 644}}
{"name": "scroll", "parameters": {"direction": "down"}}
{"name": "click", "parameters": {"x": 592, "y": 1024}}
{"name": "scroll", "parameters": {"direction": "down"}}

active_application: 

screen_description: windows {
  bounds_in_screen {
    right: 1080
    bottom: 118
  }
  id: 14
  layer: 1
  window_type: TYPE_SYSTEM
  tree {
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
    }
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 1
    }
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 1
    }
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 1
    }
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 2
    }
    nodes {
      bounds_in_screen {
        left: 47
        right: 1027
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 3
    }
    nodes {
      bounds_in_screen {
        left: 47
        top: 1
        right: 454
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 4
    }
    nodes {
      bounds_in_screen {
        left: 454
        top: 1
        right: 599
        bottom: 118
      }
      class_name: "android.view.View"
      depth: 4
    }
    nodes {
      bounds_in_screen {
        left: 599
        top: 1
        right: 1006
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 4
    }
    nodes {
      bounds_in_screen {
        left: 47
        top: 1
        right: 454
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 5
    }
    nodes {
      bounds_in_screen {
        left: 924
        top: 1
        right: 1006
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 5
    }
    nodes {
      bounds_in_screen {
        left: 47
        top: 1
        right: 130
        bottom: 118
      }
      class_name: "android.widget.TextView"
      content_description: "2:12 PM"
      text: "2:12"
      depth: 6
    }
    nodes {
      bounds_in_screen {
        left: 130
        top: 1
        right: 454
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 6
    }
    nodes {
      bounds_in_screen {
        left: 924
        top: 1
        right: 986
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 6
    }
    nodes {
      bounds_in_screen {
        left: 986
        top: 1
        right: 1006
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      content_description: "Battery charging, 100 percent."
      depth: 6
    }
    nodes {
      bounds_in_screen {
        left: 130
        top: 1
        right: 454
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 7
    }
    nodes {
      bounds_in_screen {
        left: 924
        top: 30
        right: 970
        bottom: 88
      }
      class_name: "android.widget.FrameLayout"
      content_description: "Wifi three bars."
      depth: 7
    }
    nodes {
      bounds_in_screen {
        left: 986
        top: 42
        right: 1006
        bottom: 76
      }
      class_name: "android.widget.ImageView"
      depth: 7
    }
    nodes {
      bounds_in_screen {
        left: 130
        top: 1
        right: 454
        bottom: 118
      }
      class_name: "android.widget.FrameLayout"
      depth: 8
    }
    nodes {
      bounds_in_screen {
        left: 931
        top: 30
        right: 970
        bottom: 88
      }
      class_name: "android.widget.LinearLayout"
      depth: 8
    }
    nodes {
      bounds_in_screen {
        left: 130
        top: 1
        right: 188
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "upGrad notification: "
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 188
        top: 1
        right: 246
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "Bluetooth notification: Bluetooth share: Sent files"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 246
        top: 1
        right: 304
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "Gmail notification: 7 new messages"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 304
        top: 1
        right: 362
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "Artsy notification: "
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 362
        top: 1
        right: 420
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "YouTube notification: Happy Tu B\'Av ❤️"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 380
        top: 1
        right: 438
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "Google Play Store notification: Setup complete"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 380
        top: 1
        right: 438
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "YouTube notification: O Bedardeya (Full Video) Tu Jhoothi MainMakkaar | Ranbir, Shraddha | Pritam,ArijitSingh, Amitabh B"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 380
        top: 1
        right: 438
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "YouTube notification: How to plate PRAWN SOUP like a PRO | Chef Majk"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 380
        top: 1
        right: 438
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "Digital Wellbeing notification: Need time to focus?"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 380
        top: 1
        right: 438
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "YouTube notification: Satisfied with this YouTube notification?"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 380
        top: 1
        right: 438
        bottom: 118
      }
      class_name: "android.widget.ImageView"
      content_description: "System update notification: Android 13"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 931
        top: 39
        right: 970
        bottom: 78
      }
      class_name: "android.widget.FrameLayout"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        left: 931
        top: 39
        right: 970
        bottom: 78
      }
      class_name: "android.widget.ImageView"
      depth: 10
    }
  }
}
windows {
  bounds_in_screen {
    right: 1080
    bottom: 2400
  }
  id: 1137
  window_type: TYPE_APPLICATION
  is_active: true
  is_focused: true
  tree {
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 2400
      }
      class_name: "android.widget.FrameLayout"
    }
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 2337
      }
      class_name: "android.widget.LinearLayout"
      depth: 1
    }
    nodes {
      bounds_in_screen {
        right: 1080
        bottom: 118
      }
      class_name: "android.view.View"
      depth: 1
    }
    nodes {
      bounds_in_screen {
        top: 2337
        right: 1080
        bottom: 2400
      }
      class_name: "android.view.View"
      depth: 1
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.widget.FrameLayout"
      depth: 2
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.widget.FrameLayout"
      depth: 3
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.widget.FrameLayout"
      depth: 4
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.widget.FrameLayout"
      depth: 5
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.widget.FrameLayout"
      depth: 6
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 7
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 8
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 9
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 118
      }
      class_name: "android.widget.LinearLayout"
      depth: 10
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 10
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 11
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 12
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 13
    }
    nodes {
      bounds_in_screen {
        top: 2208
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 13
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2208
      }
      class_name: "android.widget.FrameLayout"
      depth: 14
    }
    nodes {
      bounds_in_screen {
        top: 2209
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.ViewGroup"
      depth: 14
    }
    nodes {
      bounds_in_screen {
        top: 2209
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.View"
      depth: 14
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 15
    }
    nodes {
      bounds_in_screen {
        top: 2209
        right: 360
        bottom: 2337
      }
      class_name: "android.view.View"
      content_description: "Home"
      is_clickable: true
      is_focusable: true
      depth: 15
    }
    nodes {
      bounds_in_screen {
        left: 360
        top: 2209
        right: 720
        bottom: 2337
      }
      class_name: "android.view.View"
      content_description: "Explore"
      is_clickable: true
      is_focusable: true
      is_selected: true
      depth: 15
    }
    nodes {
      bounds_in_screen {
        left: 720
        top: 2209
        right: 1080
        bottom: 2337
      }
      class_name: "android.view.View"
      content_description: "Bookmarks"
      is_clickable: true
      is_focusable: true
      depth: 15
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        top: 2209
        right: 360
        bottom: 2285
      }
      class_name: "android.view.ViewGroup"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        top: 2209
        right: 360
        bottom: 2285
      }
      class_name: "android.view.ViewGroup"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 138
        top: 2284
        right: 223
        bottom: 2326
      }
      class_name: "android.widget.TextView"
      text: "Home"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 360
        top: 2209
        right: 720
        bottom: 2285
      }
      class_name: "android.view.ViewGroup"
      is_selected: true
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 360
        top: 2209
        right: 720
        bottom: 2285
      }
      class_name: "android.view.ViewGroup"
      is_selected: true
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 487
        top: 2284
        right: 594
        bottom: 2326
      }
      class_name: "android.widget.TextView"
      text: "Explore"
      is_selected: true
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 720
        top: 2209
        right: 1080
        bottom: 2285
      }
      class_name: "android.view.ViewGroup"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 720
        top: 2209
        right: 1080
        bottom: 2285
      }
      class_name: "android.view.ViewGroup"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        left: 822
        top: 2284
        right: 979
        bottom: 2326
      }
      class_name: "android.widget.TextView"
      text: "Bookmarks"
      depth: 16
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 17
    }
    nodes {
      bounds_in_screen {
        left: 149
        top: 2215
        right: 212
        bottom: 2278
      }
      class_name: "android.widget.ImageView"
      depth: 17
    }
    nodes {
      bounds_in_screen {
        left: 149
        top: 2215
        right: 212
        bottom: 2278
      }
      class_name: "android.widget.ImageView"
      depth: 17
    }
    nodes {
      bounds_in_screen {
        left: 509
        top: 2215
        right: 572
        bottom: 2278
      }
      class_name: "android.widget.ImageView"
      content_description: "Search"
      is_selected: true
      depth: 17
    }
    nodes {
      bounds_in_screen {
        left: 509
        top: 2215
        right: 572
        bottom: 2278
      }
      class_name: "android.widget.ImageView"
      content_description: "Search"
      is_selected: true
      depth: 17
    }
    nodes {
      bounds_in_screen {
        left: 869
        top: 2215
        right: 932
        bottom: 2278
      }
      class_name: "android.widget.ImageView"
      depth: 17
    }
    nodes {
      bounds_in_screen {
        left: 869
        top: 2215
        right: 932
        bottom: 2278
      }
      class_name: "android.widget.ImageView"
      depth: 17
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 18
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 265
      }
      class_name: "android.widget.LinearLayout"
      depth: 19
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 19
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 1080
        bottom: 265
      }
      class_name: "android.view.ViewGroup"
      depth: 20
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 20
    }
    nodes {
      bounds_in_screen {
        top: 118
        right: 147
        bottom: 265
      }
      class_name: "android.widget.ImageButton"
      content_description: "Navigate up"
      is_clickable: true
      is_focusable: true
      depth: 21
    }
    nodes {
      bounds_in_screen {
        left: 189
        top: 164
        right: 551
        bottom: 219
      }
      class_name: "android.widget.TextView"
      text: "Ciphers vs. codes"
      depth: 21
    }
    nodes {
      bounds_in_screen {
        left: 1080
        top: 118
        right: 1080
        bottom: 265
      }
      class_name: "androidx.appcompat.widget.LinearLayoutCompat"
      depth: 21
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 21
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 22
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1080
        bottom: 2208
      }
      class_name: "android.view.ViewGroup"
      depth: 23
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1080
        bottom: 2208
      }
      class_name: "android.webkit.WebView"
      depth: 24
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 2197
        bottom: 2212
      }
      class_name: "android.webkit.WebView"
      is_focusable: true
      is_focused: true
      is_scrollable: true
      depth: 25
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1084
        bottom: -2934
      }
      class_name: "android.widget.TextView"
      depth: 26
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1084
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 26
    }
    nodes {
      bounds_in_screen {
        top: 6084
        right: 1084
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 26
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1084
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 27
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 6134
        right: 189
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "Up next"
      depth: 27
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 6208
        right: 299
        bottom: 2212
      }
      class_name: "android.widget.Button"
      text: "Shift cipher"
      is_clickable: true
      is_focusable: true
      depth: 27
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1042
        bottom: -2535
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1084
        bottom: -1625
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1042
        bottom: -1013
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1042
        bottom: -380
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1042
        bottom: 299
      }
      class_name: "android.widget.TextView"
      text: "Here, the word accountant is code for \"Come at once. Do not delay.\" A code is a mapping from some meaningful unit—such as a word, sentence, or phrase— into something else—usually a shorter group of symbols. For example, we could make up a code where the word apple is written as 67. Generally codes are ways of saving time, and when sending messages around the world, time is money."
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 380
        right: 1042
        bottom: 976
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 1057
        right: 1042
        bottom: 1325
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 1404
        right: 1042
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 2315
        right: 1042
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "Okay, so what about ciphers?"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 2464
        right: 1042
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 3212
        right: 1042
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "Review how this works using the interactive tool below:"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 3428
        right: 2197
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 4577
        right: 1042
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "In this case, we don’t need a codebook. Instead, we follow a series of instructions—also known as an algorithm—where we shift each letter by a certain number. The algorithm requires one piece of shared information known as a key. In the example above where A→D, the key is four. This shared key is required for two parties to encrypt messages: HELLO → KHOOR, and decrypt messages: KHOOR→HELLO."
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 5323
        right: 1042
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "So back to our question: What is the difference between codes and ciphers? Codes generally operate on semantics, meaning, while ciphers operate on syntax, symbols. A code is stored as a mapping in a codebook, while ciphers transform individual symbols according to an algorithm."
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 5869
        right: 1042
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "Now, let’s review the mechanics involved in the Caesar Cipher in the next exercise."
      depth: 28
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 945
        bottom: -2811
      }
      class_name: "android.widget.TextView"
      text: "To begin, let’s make sure we understand the difference between a "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 490
        top: 265
        right: 622
        bottom: -2811
      }
      class_name: "android.widget.TextView"
      text: "cipher"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 616
        top: 265
        right: 758
        bottom: -2811
      }
      class_name: "android.widget.TextView"
      text: " and a "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 756
        top: 265
        right: 858
        bottom: -2811
      }
      class_name: "android.widget.TextView"
      text: "code"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1023
        bottom: -2612
      }
      class_name: "android.widget.TextView"
      text: ". Actually, I dare you to get up and go ask someone the same question right now. While you do that I’ll wait here and admire this Lorenz "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 357
        bottom: -2546
      }
      class_name: "android.view.View"
      content_description: "cipher machine"
      is_clickable: true
      is_focusable: true
      clickable_spans {
        text: "cipher machine"
        source: CONTENT_DESCRIPTION
        node_id: 81
      }
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 354
        top: 265
        right: 391
        bottom: -2546
      }
      class_name: "android.widget.TextView"
      text: "..."
      depth: 29
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1084
        bottom: -1640
      }
      class_name: "android.view.View"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1008
        bottom: -1286
      }
      class_name: "android.widget.TextView"
      text: "Did they stumble around for an answer? For most people, it’s as if you asked them what the difference is between mix and blend. Tough question. Luckily, we have a video on "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 952
        bottom: -1220
      }
      class_name: "android.view.View"
      content_description: "Morse Code"
      is_clickable: true
      is_focusable: true
      clickable_spans {
        text: "Morse Code"
        source: CONTENT_DESCRIPTION
        node_id: 85
      }
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 149
        top: 265
        right: 798
        bottom: -1220
      }
      class_name: "android.widget.TextView"
      text: " which introduces the idea of a "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 795
        top: 265
        right: 1002
        bottom: -1220
      }
      class_name: "android.widget.TextView"
      text: "codebook"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1039
        bottom: -1023
      }
      class_name: "android.widget.TextView"
      text: "—check it out! In the video we see how telegraph operators could save time by mapping entire sentences to shorter words."
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1042
        bottom: -393
      }
      class_name: "android.view.View"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 380
        right: 1042
        bottom: 960
      }
      class_name: "android.view.View"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 1065
        right: 86
        bottom: 1115
      }
      class_name: "android.widget.TextView"
      text: "A "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 84
        top: 1065
        right: 291
        bottom: 1115
      }
      class_name: "android.widget.TextView"
      text: "codebook"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 1065
        right: 882
        bottom: 1249
      }
      class_name: "android.widget.TextView"
      text: " is simply a list of these mappings. Codebooks have been around ever "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 141
        top: 1196
        right: 619
        bottom: 1249
      }
      class_name: "android.view.View"
      content_description: "since we began writing"
      is_clickable: true
      is_focusable: true
      clickable_spans {
        text: "since we began writing"
        source: CONTENT_DESCRIPTION
        node_id: 94
      }
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 614
        top: 1196
        right: 955
        bottom: 1249
      }
      class_name: "android.widget.TextView"
      text: ". Just remember,"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 1196
        right: 979
        bottom: 1315
      }
      class_name: "android.widget.TextView"
      text: "a code requires a codebook"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 572
        top: 1265
        right: 585
        bottom: 1315
      }
      class_name: "android.widget.TextView"
      text: "."
      depth: 29
    }
    nodes {
      bounds_in_screen {
        top: 1404
        right: 1084
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 2475
        right: 1000
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "Most importantly, ciphers do not involve meaning. Instead they are mechanical operations, known as algorithms, that are performed on individual or small chunks of letters. For example, in the "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 598
        top: 2740
        right: 892
        bottom: 2212
      }
      class_name: "android.view.View"
      content_description: "Caesar Cipher"
      is_clickable: true
      is_focusable: true
      clickable_spans {
        text: "Caesar Cipher"
        source: CONTENT_DESCRIPTION
        node_id: 100
      }
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 2806
        right: 1034
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: " we saw how each letter in the alphabet was mapped to a different letter. For example, A→D,  B→E, and C→F, when we\'re using a shift of four. This kind of cipher is known as a "
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 3002
        right: 921
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "shift cipher"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 168
        top: 3071
        right: 183
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "."
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 3428
        right: 2197
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 29
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 357
        bottom: -2546
      }
      class_name: "android.widget.TextView"
      text: "cipher machine"
      depth: 30
    }
    nodes {
      bounds_in_screen {
        top: 265
        right: 1084
        bottom: -1640
      }
      class_name: "android.widget.Image"
      is_clickable: true
      is_focusable: true
      depth: 30
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 952
        bottom: -1220
      }
      class_name: "android.widget.TextView"
      text: "Morse Code"
      depth: 30
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 265
        right: 1042
        bottom: -393
      }
      class_name: "android.widget.Image"
      is_clickable: true
      is_focusable: true
      depth: 30
    }
    nodes {
      bounds_in_screen {
        left: 42
        top: 380
        right: 1042
        bottom: 960
      }
      class_name: "android.widget.Image"
      is_clickable: true
      is_focusable: true
      depth: 30
    }
    nodes {
      bounds_in_screen {
        left: 141
        top: 1196
        right: 619
        bottom: 1249
      }
      class_name: "android.widget.TextView"
      text: "since we began writing"
      depth: 30
    }
    nodes {
      bounds_in_screen {
        top: 1404
        right: 1084
        bottom: 2212
      }
      class_name: "android.view.View"
      depth: 30
    }
    nodes {
      bounds_in_screen {
        left: 598
        top: 2740
        right: 892
        bottom: 2212
      }
      class_name: "android.widget.TextView"
      text: "Caesar Cipher"
      depth: 30
    }
    nodes {
      bounds_in_screen {
        top: 1404
        right: 1084
        bottom: 2212
      }
      class_name: "android.widget.Image"
      is_clickable: true
      is_focusable: true
      depth: 31
    }
  }
}


assistant: !FUNCTIONCALL{"name": "scroll", "parameters": {"direction": "down"}}