CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
rapid7

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: rapid7/metasploit-framework
Path: blob/master/spec/lib/rex/proto/x11/xkeyboard.rb
Views: 16006
1
# -*- coding: binary -*-
2
3
require 'spec_helper'
4
5
RSpec.describe Rex::Proto::X11::Xkeyboard do
6
subject do
7
mod = ::Msf::Exploit.new
8
mod.extend described_class
9
10
mod.send(:initialize)
11
mod
12
end
13
14
let(:get_keyboardmap_resp) do
15
"\x01\x03\x07\x00\x47\x05\x00\x00\x00\x00\x08\xff\x07\x00\x00\x1c" \
16
"\x1c\x08\x6f\x01\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08" \
17
"\xf8\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00" \
18
"\x01\x01\x00\x00\x02\x01\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
19
"\x03\x03\x00\x00\x02\x02\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
20
"\x01\x02\x01\x02\x00\x00\x00\x00\x11\x01\x01\x00\x02\x01\x00\x00" \
21
"\x01\x10\x01\x00\x01\x00\x00\x00\x09\x01\x02\x00\x02\x01\x00\x00" \
22
"\x01\x09\x01\x01\x02\x00\x00\x00\x40\x40\x00\x00\x02\x01\x00\x00" \
23
"\x01\x40\x01\x40\x00\x00\x00\x00\x04\x04\x00\x00\x02\x01\x00\x00" \
24
"\x01\x04\x01\x04\x00\x00\x00\x00\x00\x00\x40\x00\x02\x01\x00\x00" \
25
"\x00\x00\x01\x00\x40\x00\x00\x00\x00\x00\x20\x00\x02\x01\x00\x00" \
26
"\x00\x00\x01\x00\x20\x00\x00\x00\x08\x00\x02\x00\x02\x01\x00\x00" \
27
"\x01\x08\x01\x00\x02\x00\x00\x00\x00\x00\x08\x00\x02\x01\x00\x00" \
28
"\x00\x00\x01\x00\x08\x00\x00\x00\x00\x00\x10\x00\x02\x01\x00\x00" \
29
"\x00\x00\x01\x00\x10\x00\x00\x00\x8d\x05\x06\x00\x05\x04\x01\x00" \
30
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
31
"\x01\x81\x03\x01\x04\x00\x00\x00\x01\x0c\x04\x04\x02\x00\x00\x00" \
32
"\x01\x01\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00" \
33
"\x87\x07\x04\x00\x08\x0f\x00\x00\x01\x03\x00\x03\x00\x00\x00\x00" \
34
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x02\x01\x02\x00\x00\x00\x00" \
35
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x83\x02\x03\x04\x00\x00\x00" \
36
"\x01\x81\x03\x01\x04\x00\x00\x00\x01\x82\x03\x02\x04\x00\x00\x00" \
37
"\x01\x04\x04\x04\x00\x00\x00\x00\x01\x07\x04\x07\x00\x00\x00\x00" \
38
"\x01\x05\x05\x05\x00\x00\x00\x00\x01\x06\x05\x06\x00\x00\x00\x00" \
39
"\x01\x84\x06\x04\x04\x00\x00\x00\x01\x87\x06\x07\x04\x00\x00\x00" \
40
"\x01\x85\x07\x05\x04\x00\x00\x00\x01\x86\x07\x06\x04\x00\x00\x00" \
41
"\x81\x01\x04\x00\x03\x03\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
42
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x02\x01\x04\x00\x00\x00" \
43
"\x81\x01\x04\x01\x08\x07\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
44
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
45
"\x00\x00\x04\x00\x00\x01\x00\x00\x00\x01\x05\x01\x00\x01\x00\x00" \
46
"\x01\x80\x06\x00\x04\x01\x00\x00\x01\x81\x07\x01\x04\x01\x00\x00" \
47
"\x83\x03\x04\x01\x08\x0d\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
48
"\x01\x02\x01\x02\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
49
"\x01\x81\x03\x01\x04\x00\x00\x00\x01\x82\x03\x02\x04\x00\x00\x00" \
50
"\x01\x83\x02\x03\x04\x00\x00\x00\x00\x00\x04\x00\x00\x01\x00\x00" \
51
"\x00\x01\x05\x01\x00\x01\x00\x00\x00\x02\x05\x02\x00\x01\x00\x00" \
52
"\x01\x80\x06\x00\x04\x01\x00\x00\x01\x81\x07\x01\x04\x01\x00\x00" \
53
"\x01\x82\x07\x02\x04\x01\x00\x00\x01\x83\x06\x03\x04\x01\x00\x00" \
54
"\x93\x03\x05\x01\x08\x1c\x01\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
55
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
56
"\x00\x00\x04\x00\x00\x01\x00\x00\x00\x01\x05\x01\x00\x01\x00\x00" \
57
"\x01\x80\x06\x00\x04\x01\x00\x00\x01\x81\x07\x01\x04\x01\x00\x00" \
58
"\x01\x10\x04\x00\x01\x00\x00\x00\x01\x11\x05\x01\x01\x00\x00\x00" \
59
"\x01\x90\x06\x00\x05\x00\x00\x00\x01\x91\x07\x01\x05\x00\x00\x00" \
60
"\x01\x11\x01\x01\x01\x01\x00\x00\x01\x90\x02\x00\x05\x01\x00\x00" \
61
"\x01\x91\x03\x01\x05\x01\x00\x00\x01\x03\x01\x03\x00\x00\x00\x00" \
62
"\x01\x82\x02\x02\x04\x00\x00\x00\x01\x83\x03\x03\x04\x00\x00\x00" \
63
"\x00\x02\x04\x02\x00\x01\x00\x00\x00\x03\x05\x03\x00\x01\x00\x00" \
64
"\x01\x82\x06\x02\x04\x01\x00\x00\x01\x83\x07\x03\x04\x01\x00\x00" \
65
"\x01\x12\x04\x02\x01\x00\x00\x00\x01\x13\x05\x03\x01\x00\x00\x00" \
66
"\x01\x92\x06\x02\x05\x00\x00\x00\x01\x93\x07\x03\x05\x00\x00\x00" \
67
"\x01\x13\x01\x03\x01\x01\x00\x00\x01\x92\x02\x02\x05\x01\x00\x00" \
68
"\x01\x93\x03\x03\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
69
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00" \
70
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00" \
71
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
72
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
73
"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
74
"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
75
"\x00\x00\x00\x00\x00\x00\x00\x00\x93\x03\x05\x01\x08\x1c\x01\x00" \
76
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
77
"\x01\x81\x03\x01\x04\x00\x00\x00\x00\x00\x04\x00\x00\x01\x00\x00" \
78
"\x00\x01\x05\x01\x00\x01\x00\x00\x01\x80\x06\x00\x04\x01\x00\x00" \
79
"\x01\x81\x07\x01\x04\x01\x00\x00\x01\x10\x04\x00\x01\x00\x00\x00" \
80
"\x01\x11\x05\x01\x01\x00\x00\x00\x01\x90\x06\x00\x05\x00\x00\x00" \
81
"\x01\x91\x07\x01\x05\x00\x00\x00\x01\x11\x01\x01\x01\x01\x00\x00" \
82
"\x01\x90\x02\x00\x05\x01\x00\x00\x01\x91\x03\x01\x05\x01\x00\x00" \
83
"\x01\x02\x01\x02\x00\x00\x00\x00\x01\x82\x02\x02\x04\x00\x00\x00" \
84
"\x01\x83\x03\x03\x04\x00\x00\x00\x00\x02\x04\x02\x00\x01\x00\x00" \
85
"\x00\x03\x05\x03\x00\x01\x00\x00\x01\x82\x06\x02\x04\x01\x00\x00" \
86
"\x01\x83\x07\x03\x04\x01\x00\x00\x01\x12\x04\x02\x01\x00\x00\x00" \
87
"\x01\x13\x05\x03\x01\x00\x00\x00\x01\x92\x06\x02\x05\x00\x00\x00" \
88
"\x01\x93\x07\x03\x05\x00\x00\x00\x01\x12\x01\x02\x01\x01\x00\x00" \
89
"\x01\x92\x03\x02\x05\x01\x00\x00\x01\x93\x02\x03\x05\x01\x00\x00" \
90
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
91
"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
92
"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
93
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
94
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
95
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
96
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
97
"\x83\x03\x04\x01\x08\x0e\x01\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
98
"\x01\x02\x01\x02\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
99
"\x01\x81\x03\x01\x04\x00\x00\x00\x01\x82\x02\x02\x04\x00\x00\x00" \
100
"\x01\x83\x03\x03\x04\x00\x00\x00\x00\x00\x04\x00\x00\x01\x00\x00" \
101
"\x00\x01\x05\x01\x00\x01\x00\x00\x00\x02\x05\x02\x00\x01\x00\x00" \
102
"\x00\x03\x05\x03\x00\x01\x00\x00\x01\x80\x06\x00\x04\x01\x00\x00" \
103
"\x01\x81\x07\x01\x04\x01\x00\x00\x01\x82\x06\x02\x04\x01\x00\x00" \
104
"\x01\x83\x07\x03\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
105
"\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x02\x02\x00\x00" \
106
"\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x02\x02\x00\x00" \
107
"\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x02\x02\x00\x00" \
108
"\x81\x01\x04\x00\x04\x03\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
109
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
110
"\x83\x03\x04\x00\x04\x06\x00\x00\x01\x01\x01\x01\x00\x00\x00\x00" \
111
"\x01\x02\x01\x02\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
112
"\x01\x81\x03\x01\x04\x00\x00\x00\x01\x82\x03\x02\x04\x00\x00\x00" \
113
"\x01\x83\x02\x03\x04\x00\x00\x00\x83\x03\x04\x00\x04\x06\x01\x00" \
114
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x02\x01\x02\x00\x00\x00\x00" \
115
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
116
"\x01\x82\x02\x02\x04\x00\x00\x00\x01\x83\x03\x03\x04\x00\x00\x00" \
117
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
118
"\x02\x02\x00\x00\x02\x02\x00\x00\x91\x01\x05\x00\x04\x07\x00\x00" \
119
"\x01\x11\x00\x01\x01\x00\x00\x00\x01\x10\x01\x00\x01\x00\x00\x00" \
120
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
121
"\x01\x90\x02\x00\x05\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
122
"\x01\x91\x03\x01\x05\x00\x00\x00\x8d\x05\x06\x00\x04\x03\x00\x00" \
123
"\x01\x80\x01\x00\x04\x00\x00\x00\x01\x81\x02\x01\x04\x00\x00\x00" \
124
"\x01\x0c\x03\x04\x02\x00\x00\x00\x83\x03\x04\x00\x04\x06\x01\x00" \
125
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x02\x03\x02\x00\x00\x00\x00" \
126
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
127
"\x01\x82\x02\x02\x04\x00\x00\x00\x01\x83\x02\x03\x04\x00\x00\x00" \
128
"\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
129
"\x02\x02\x00\x00\x00\x00\x00\x00\x83\x03\x04\x00\x05\x07\x00\x00" \
130
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x80\x02\x00\x04\x00\x00\x00" \
131
"\x01\x81\x03\x01\x04\x00\x00\x00\x01\x02\x04\x02\x00\x00\x00\x00" \
132
"\x01\x03\x01\x03\x00\x00\x00\x00\x01\x82\x02\x02\x04\x00\x00\x00" \
133
"\x01\x83\x03\x03\x04\x00\x00\x00\x91\x01\x05\x00\x04\x06\x00\x00" \
134
"\x01\x01\x01\x01\x00\x00\x00\x00\x01\x10\x01\x00\x01\x00\x00\x00" \
135
"\x01\x80\x02\x00\x04\x00\x00\x00\x01\x81\x03\x01\x04\x00\x00\x00" \
136
"\x01\x90\x03\x00\x05\x00\x00\x00\x01\x91\x02\x01\x05\x00\x00\x00" \
137
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
138
"\x1b\xff\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x31\x00\x00\x00" \
139
"\x21\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x32\x00\x00\x00" \
140
"\x40\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x33\x00\x00\x00" \
141
"\x23\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x34\x00\x00\x00" \
142
"\x24\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x35\x00\x00\x00" \
143
"\x25\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x36\x00\x00\x00" \
144
"\x5e\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x37\x00\x00\x00" \
145
"\x26\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x38\x00\x00\x00" \
146
"\x2a\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x39\x00\x00\x00" \
147
"\x28\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x30\x00\x00\x00" \
148
"\x29\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x2d\x00\x00\x00" \
149
"\x5f\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x3d\x00\x00\x00" \
150
"\x2b\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x08\xff\x00\x00" \
151
"\x08\xff\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x09\xff\x00\x00" \
152
"\x20\xfe\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x71\x00\x00\x00" \
153
"\x51\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x77\x00\x00\x00" \
154
"\x57\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x65\x00\x00\x00" \
155
"\x45\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x72\x00\x00\x00" \
156
"\x52\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x74\x00\x00\x00" \
157
"\x54\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x79\x00\x00\x00" \
158
"\x59\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x75\x00\x00\x00" \
159
"\x55\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x69\x00\x00\x00" \
160
"\x49\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x6f\x00\x00\x00" \
161
"\x4f\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00\x70\x00\x00\x00" \
162
"\x50\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x5b\x00\x00\x00" \
163
"\x7b\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\x5d\x00\x00\x00" \
164
"\x7d\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x0d\xff\x00\x00" \
165
"\x00\x00\x00\x00\x01\x01\x01\x00\xe3\xff\x00\x00\x02\x00\x00\x00" \
166
"\x01\x02\x02\x00\x61\x00\x00\x00\x41\x00\x00\x00\x02\x00\x00\x00" \
167
"\x01\x02\x02\x00\x73\x00\x00\x00\x53\x00\x00\x00\x02\x00\x00\x00" \
168
"\x01\x02\x02\x00\x64\x00\x00\x00\x44\x00\x00\x00\x02\x00\x00\x00" \
169
"\x01\x02\x02\x00\x66\x00\x00\x00\x46\x00\x00\x00\x02\x00\x00\x00" \
170
"\x01\x02\x02\x00\x67\x00\x00\x00\x47\x00\x00\x00\x02\x00\x00\x00" \
171
"\x01\x02\x02\x00\x68\x00\x00\x00\x48\x00\x00\x00\x02\x00\x00\x00" \
172
"\x01\x02\x02\x00\x6a\x00\x00\x00\x4a\x00\x00\x00\x02\x00\x00\x00" \
173
"\x01\x02\x02\x00\x6b\x00\x00\x00\x4b\x00\x00\x00\x02\x00\x00\x00" \
174
"\x01\x02\x02\x00\x6c\x00\x00\x00\x4c\x00\x00\x00\x01\x00\x00\x00" \
175
"\x01\x02\x02\x00\x3b\x00\x00\x00\x3a\x00\x00\x00\x01\x00\x00\x00" \
176
"\x01\x02\x02\x00\x27\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00" \
177
"\x01\x02\x02\x00\x60\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00" \
178
"\x01\x01\x01\x00\xe1\xff\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00" \
179
"\x5c\x00\x00\x00\x7c\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
180
"\x7a\x00\x00\x00\x5a\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
181
"\x78\x00\x00\x00\x58\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
182
"\x63\x00\x00\x00\x43\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
183
"\x76\x00\x00\x00\x56\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
184
"\x62\x00\x00\x00\x42\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
185
"\x6e\x00\x00\x00\x4e\x00\x00\x00\x02\x00\x00\x00\x01\x02\x02\x00" \
186
"\x6d\x00\x00\x00\x4d\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00" \
187
"\x2c\x00\x00\x00\x3c\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00" \
188
"\x2e\x00\x00\x00\x3e\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00" \
189
"\x2f\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
190
"\xe2\xff\x00\x00\x0c\x00\x00\x00\x01\x05\x05\x00\xaa\xff\x00\x00" \
191
"\xaa\xff\x00\x00\xaa\xff\x00\x00\xaa\xff\x00\x00\x21\xfe\x08\x10" \
192
"\x01\x00\x00\x00\x01\x02\x02\x00\xe9\xff\x00\x00\xe7\xff\x00\x00" \
193
"\x00\x00\x00\x00\x01\x01\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00" \
194
"\x01\x01\x01\x00\xe5\xff\x00\x00\x0c\x00\x00\x00\x01\x05\x05\x00" \
195
"\xbe\xff\x00\x00\xbe\xff\x00\x00\xbe\xff\x00\x00\xbe\xff\x00\x00" \
196
"\x01\xfe\x08\x10\x0c\x00\x00\x00\x01\x05\x05\x00\xbf\xff\x00\x00" \
197
"\xbf\xff\x00\x00\xbf\xff\x00\x00\xbf\xff\x00\x00\x02\xfe\x08\x10" \
198
"\x0c\x00\x00\x00\x01\x05\x05\x00\xc0\xff\x00\x00\xc0\xff\x00\x00" \
199
"\xc0\xff\x00\x00\xc0\xff\x00\x00\x03\xfe\x08\x10\x0c\x00\x00\x00" \
200
"\x01\x05\x05\x00\xc1\xff\x00\x00\xc1\xff\x00\x00\xc1\xff\x00\x00" \
201
"\xc1\xff\x00\x00\x04\xfe\x08\x10\x0c\x00\x00\x00\x01\x05\x05\x00" \
202
"\xc2\xff\x00\x00\xc2\xff\x00\x00\xc2\xff\x00\x00\xc2\xff\x00\x00" \
203
"\x05\xfe\x08\x10\x0c\x00\x00\x00\x01\x05\x05\x00\xc3\xff\x00\x00" \
204
"\xc3\xff\x00\x00\xc3\xff\x00\x00\xc3\xff\x00\x00\x06\xfe\x08\x10" \
205
"\x0c\x00\x00\x00\x01\x05\x05\x00\xc4\xff\x00\x00\xc4\xff\x00\x00" \
206
"\xc4\xff\x00\x00\xc4\xff\x00\x00\x07\xfe\x08\x10\x0c\x00\x00\x00" \
207
"\x01\x05\x05\x00\xc5\xff\x00\x00\xc5\xff\x00\x00\xc5\xff\x00\x00" \
208
"\xc5\xff\x00\x00\x08\xfe\x08\x10\x0c\x00\x00\x00\x01\x05\x05\x00" \
209
"\xc6\xff\x00\x00\xc6\xff\x00\x00\xc6\xff\x00\x00\xc6\xff\x00\x00" \
210
"\x09\xfe\x08\x10\x0c\x00\x00\x00\x01\x05\x05\x00\xc7\xff\x00\x00" \
211
"\xc7\xff\x00\x00\xc7\xff\x00\x00\xc7\xff\x00\x00\x0a\xfe\x08\x10" \
212
"\x00\x00\x00\x00\x01\x01\x01\x00\x7f\xff\x00\x00\x00\x00\x00\x00" \
213
"\x01\x01\x01\x00\x14\xff\x00\x00\x03\x00\x00\x00\x01\x02\x02\x00" \
214
"\x95\xff\x00\x00\xb7\xff\x00\x00\x03\x00\x00\x00\x01\x02\x02\x00" \
215
"\x97\xff\x00\x00\xb8\xff\x00\x00\x03\x00\x00\x00\x01\x02\x02\x00" \
216
"\x9a\xff\x00\x00\xb9\xff\x00\x00\x0c\x00\x00\x00\x01\x05\x05\x00" \
217
"\xad\xff\x00\x00\xad\xff\x00\x00\xad\xff\x00\x00\xad\xff\x00\x00" \
218
"\x23\xfe\x08\x10\x03\x00\x00\x00\x01\x02\x02\x00\x96\xff\x00\x00" \
219
"\xb4\xff\x00\x00\x03\x00\x00\x00\x01\x02\x02\x00\x9d\xff\x00\x00" \
220
"\xb5\xff\x00\x00\x03\x00\x00\x00\x01\x02\x02\x00\x98\xff\x00\x00" \
221
"\xb6\xff\x00\x00\x0c\x00\x00\x00\x01\x05\x05\x00\xab\xff\x00\x00" \
222
"\xab\xff\x00\x00\xab\xff\x00\x00\xab\xff\x00\x00\x22\xfe\x08\x10" \
223
"\x03\x00\x00\x00\x01\x02\x02\x00\x9c\xff\x00\x00\xb1\xff\x00\x00" \
224
"\x03\x00\x00\x00\x01\x02\x02\x00\x99\xff\x00\x00\xb2\xff\x00\x00" \
225
"\x03\x00\x00\x00\x01\x02\x02\x00\x9b\xff\x00\x00\xb3\xff\x00\x00" \
226
"\x03\x00\x00\x00\x01\x02\x02\x00\x9e\xff\x00\x00\xb0\xff\x00\x00" \
227
"\x03\x00\x00\x00\x01\x02\x02\x00\x9f\xff\x00\x00\xae\xff\x00\x00" \
228
"\x00\x00\x00\x00\x01\x01\x01\x00\x03\xfe\x00\x00\x00\x00\x00\x00" \
229
"\x00\x00\x00\x00\x14\x00\x00\x00\x01\x04\x04\x00\x3c\x00\x00\x00" \
230
"\x3e\x00\x00\x00\x7c\x00\x00\x00\xa6\x00\x00\x00\x0c\x00\x00\x00" \
231
"\x01\x05\x05\x00\xc8\xff\x00\x00\xc8\xff\x00\x00\xc8\xff\x00\x00" \
232
"\xc8\xff\x00\x00\x0b\xfe\x08\x10\x0c\x00\x00\x00\x01\x05\x05\x00" \
233
"\xc9\xff\x00\x00\xc9\xff\x00\x00\xc9\xff\x00\x00\xc9\xff\x00\x00" \
234
"\x0c\xfe\x08\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
235
"\x01\x01\x01\x00\x26\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
236
"\x25\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x23\xff\x00\x00" \
237
"\x00\x00\x00\x00\x01\x01\x01\x00\x27\xff\x00\x00\x00\x00\x00\x00" \
238
"\x01\x01\x01\x00\x22\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
239
"\x00\x00\x00\x00\x01\x01\x01\x00\x8d\xff\x00\x00\x00\x00\x00\x00" \
240
"\x01\x01\x01\x00\xe4\xff\x00\x00\x0c\x00\x00\x00\x01\x05\x05\x00" \
241
"\xaf\xff\x00\x00\xaf\xff\x00\x00\xaf\xff\x00\x00\xaf\xff\x00\x00" \
242
"\x20\xfe\x08\x10\x09\x00\x00\x00\x01\x02\x02\x00\x61\xff\x00\x00" \
243
"\x15\xff\x00\x00\x01\x00\x00\x00\x01\x02\x02\x00\xea\xff\x00\x00" \
244
"\xe8\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x0a\xff\x00\x00" \
245
"\x00\x00\x00\x00\x01\x01\x01\x00\x50\xff\x00\x00\x00\x00\x00\x00" \
246
"\x01\x01\x01\x00\x52\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
247
"\x55\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x51\xff\x00\x00" \
248
"\x00\x00\x00\x00\x01\x01\x01\x00\x53\xff\x00\x00\x00\x00\x00\x00" \
249
"\x01\x01\x01\x00\x57\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
250
"\x54\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x56\xff\x00\x00" \
251
"\x00\x00\x00\x00\x01\x01\x01\x00\x63\xff\x00\x00\x00\x00\x00\x00" \
252
"\x01\x01\x01\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
253
"\x00\x00\x00\x00\x01\x01\x01\x00\x12\xff\x08\x10\x00\x00\x00\x00" \
254
"\x01\x01\x01\x00\x11\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
255
"\x13\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x2a\xff\x08\x10" \
256
"\x00\x00\x00\x00\x01\x01\x01\x00\xbd\xff\x00\x00\x00\x00\x00\x00" \
257
"\x01\x01\x01\x00\xb1\x00\x00\x00\x06\x00\x00\x00\x01\x02\x02\x00" \
258
"\x13\xff\x00\x00\x6b\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
259
"\x4a\xff\x08\x10\x03\x00\x00\x00\x01\x02\x02\x00\xae\xff\x00\x00" \
260
"\xae\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x31\xff\x00\x00" \
261
"\x00\x00\x00\x00\x01\x01\x01\x00\x34\xff\x00\x00\x00\x00\x00\x00" \
262
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\xeb\xff\x00\x00" \
263
"\x00\x00\x00\x00\x01\x01\x01\x00\xec\xff\x00\x00\x00\x00\x00\x00" \
264
"\x01\x01\x01\x00\x67\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
265
"\x69\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x66\xff\x00\x00" \
266
"\x00\x00\x00\x00\x01\x01\x01\x00\x70\xff\x05\x10\x00\x00\x00\x00" \
267
"\x01\x01\x01\x00\x65\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
268
"\x71\xff\x05\x10\x00\x00\x00\x00\x01\x01\x01\x00\x57\xff\x08\x10" \
269
"\x00\x00\x00\x00\x01\x01\x01\x00\x6b\xff\x08\x10\x00\x00\x00\x00" \
270
"\x01\x01\x01\x00\x6d\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
271
"\x68\xff\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x58\xff\x08\x10" \
272
"\x00\x00\x00\x00\x01\x01\x01\x00\x6a\xff\x00\x00\x00\x00\x00\x00" \
273
"\x01\x01\x01\x00\x65\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
274
"\x1d\xff\x08\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
275
"\x01\x01\x01\x00\x2f\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
276
"\x2b\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x5d\xff\x08\x10" \
277
"\x00\x00\x00\x00\x01\x01\x01\x00\x7b\xff\x08\x10\x00\x00\x00\x00" \
278
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x8a\xff\x08\x10" \
279
"\x00\x00\x00\x00\x01\x01\x01\x00\x41\xff\x08\x10\x00\x00\x00\x00" \
280
"\x01\x01\x01\x00\x42\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
281
"\x2e\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x5a\xff\x08\x10" \
282
"\x00\x00\x00\x00\x01\x01\x01\x00\x2d\xff\x08\x10\x00\x00\x00\x00" \
283
"\x01\x01\x01\x00\x74\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
284
"\x7f\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x19\xff\x08\x10" \
285
"\x00\x00\x00\x00\x01\x01\x01\x00\x30\xff\x08\x10\x00\x00\x00\x00" \
286
"\x01\x01\x01\x00\x33\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
287
"\x26\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x27\xff\x08\x10" \
288
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
289
"\x2c\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x2c\xff\x08\x10" \
290
"\x00\x00\x00\x00\x01\x01\x01\x00\x17\xff\x08\x10\x01\x00\x00\x00" \
291
"\x01\x02\x02\x00\x14\xff\x08\x10\x31\xff\x08\x10\x00\x00\x00\x00" \
292
"\x01\x01\x01\x00\x16\xff\x08\x10\x01\x00\x00\x00\x01\x02\x02\x00" \
293
"\x15\xff\x08\x10\x2c\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
294
"\x1c\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x3e\xff\x08\x10" \
295
"\x00\x00\x00\x00\x01\x01\x01\x00\x6e\xff\x08\x10\x00\x00\x00\x00" \
296
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x81\xff\x08\x10" \
297
"\x00\x00\x00\x00\x01\x01\x01\x00\x18\xff\x08\x10\x00\x00\x00\x00" \
298
"\x01\x01\x01\x00\x73\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
299
"\x56\xff\x08\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
300
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x78\xff\x08\x10" \
301
"\x00\x00\x00\x00\x01\x01\x01\x00\x79\xff\x08\x10\x00\x00\x00\x00" \
302
"\x01\x01\x01\x00\x28\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
303
"\x29\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x68\xff\x08\x10" \
304
"\x00\x00\x00\x00\x01\x01\x01\x00\x66\xff\x00\x00\x00\x00\x00\x00" \
305
"\x01\x01\x01\x00\x81\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
306
"\x45\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x46\xff\x08\x10" \
307
"\x00\x00\x00\x00\x01\x01\x01\x00\x47\xff\x08\x10\x00\x00\x00\x00" \
308
"\x01\x01\x01\x00\x48\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
309
"\x49\xff\x08\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
310
"\x01\x01\x01\x00\xb2\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
311
"\xa9\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\xb0\xff\x08\x10" \
312
"\x00\x00\x00\x00\x01\x01\x01\x00\xb1\xff\x08\x10\x00\x00\x00\x00" \
313
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x7e\xff\x00\x00" \
314
"\x01\x00\x00\x00\x01\x02\x02\x00\x00\x00\x00\x00\xe9\xff\x00\x00" \
315
"\x01\x00\x00\x00\x01\x02\x02\x00\x00\x00\x00\x00\xe7\xff\x00\x00" \
316
"\x01\x00\x00\x00\x01\x02\x02\x00\x00\x00\x00\x00\xeb\xff\x00\x00" \
317
"\x01\x00\x00\x00\x01\x02\x02\x00\x00\x00\x00\x00\xed\xff\x00\x00" \
318
"\x00\x00\x00\x00\x01\x01\x01\x00\x14\xff\x08\x10\x00\x00\x00\x00" \
319
"\x01\x01\x01\x00\x31\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
320
"\x43\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x44\xff\x08\x10" \
321
"\x00\x00\x00\x00\x01\x01\x01\x00\x4b\xff\x08\x10\x00\x00\x00\x00" \
322
"\x01\x01\x01\x00\xa7\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
323
"\x56\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x14\xff\x08\x10" \
324
"\x00\x00\x00\x00\x01\x01\x01\x00\x97\xff\x08\x10\x00\x00\x00\x00" \
325
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x61\xff\x00\x00" \
326
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
327
"\x8f\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\xb6\xff\x08\x10" \
328
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
329
"\x19\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x8e\xff\x08\x10" \
330
"\x00\x00\x00\x00\x01\x01\x01\x00\x1b\xff\x08\x10\x00\x00\x00\x00" \
331
"\x01\x01\x01\x00\x5f\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
332
"\x3c\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x5e\xff\x08\x10" \
333
"\x00\x00\x00\x00\x01\x01\x01\x00\x36\xff\x08\x10\x00\x00\x00\x00" \
334
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00\x69\xff\x00\x00" \
335
"\x00\x00\x00\x00\x01\x01\x01\x00\x03\xff\x08\x10\x00\x00\x00\x00" \
336
"\x01\x01\x01\x00\x02\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
337
"\x32\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x59\xff\x08\x10" \
338
"\x00\x00\x00\x00\x01\x01\x01\x00\x04\xff\x08\x10\x00\x00\x00\x00" \
339
"\x01\x01\x01\x00\x06\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
340
"\x05\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x7b\xff\x08\x10" \
341
"\x00\x00\x00\x00\x01\x01\x01\x00\x72\xff\x08\x10\x00\x00\x00\x00" \
342
"\x01\x01\x01\x00\x90\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
343
"\x77\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x5b\xff\x08\x10" \
344
"\x00\x00\x00\x00\x01\x01\x01\x00\x93\xff\x08\x10\x00\x00\x00\x00" \
345
"\x01\x01\x01\x00\x94\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
346
"\x95\xff\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x96\xff\x08\x10" \
347
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x00" \
348
"\x22\xfe\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\x23\xfe\x08\x10" \
349
"\x00\x00\x00\x00\x01\x01\x01\x00\x07\xff\x08\x10\x00\x00\x00\x00" \
350
"\x01\x01\x01\x00\xf4\x10\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00" \
351
"\xf5\x10\x08\x10\x00\x00\x00\x00\x01\x01\x01\x00\xb4\xff\x08\x10" \
352
"\x00\x00\x00\x00\x01\x01\x01\x00\xb5\xff\x08\x10\x25\x04\x32\x01" \
353
"\x3e\x01\x40\x08\x42\x02\x4d\x10\x5c\x80\x69\x04\x6c\x08\x85\x40" \
354
"\x86\x40\xcb\x80\xcd\x08\xce\x40\xcf\x40\x00\x00"
355
end
356
357
let(:get_keyboardmap_resp_2) do
358
"\001\003\a\000C\005\000\000\000\000\b\377\a\000\000\034\034\bo\001" \
359
"\370\000\000\000\000\000\000\000\000\000\000\b\370\017\000\000\000" \
360
"\000\000\000\000\000\000\000\001\000\000\000\001\001\000\000\002\001" \
361
"\000\000\001\001\001\001\000\000\000\000\003\003\000\000\002\002\000" \
362
"\000\001\001\001\001\000\000\000\000\001\002\001\002\000\000\000\000" \
363
"\021\001\001\000\002\001\000\000\001\020\001\000\001\000\000\000\t" \
364
"\001\002\000\002\001\000\000\001\t\001\001\002\000\000\000@@\000\000" \
365
"\002\001\000\000\001@\001@\000\000\000\000\004\004\000\000\002\001" \
366
"\000\000\001\004\001\004\000\000\000\000\000\000@\000\002\001\000" \
367
"\000\000\000\001\000@\000\000\000\000\000 \000\002\001\000\000\000" \
368
"\000\001\000 \000\000\000\b\000\002\000\002\001\000\000\001\b\001" \
369
"\000\002\000\000\000\000\000\b\000\002\001\000\000\000\000\001\000" \
370
"\b\000\000\000\000\000\020\000\002\001\000\000\000\000\001\000\020" \
371
"\000\000\000\215\005\006\000\005\004\001\000\001\001\001\001\000\000" \
372
"\000\000\001\200\002\000\004\000\000\000\001\201\003\001\004\000\000" \
373
"\000\001\f\004\004\002\000\000\000\001\001\000\000\000\000\000\000\001" \
374
"\001\000\000\000\000\000\000\207\a\004\000\b\016\000\000\001\001\001\001" \
375
"\000\000\000\000\001\002\001\002\000\000\000\000\001\200\002\000\004\000" \
376
"\000\000\001\203\002\003\004\000\000\000\001\201\003\001\004\000\000\000" \
377
"\001\202\003\002\004\000\000\000\001\004\004\004\000\000\000\000\001\a" \
378
"\004\a\000\000\000\000\001\005\005\005\000\000\000\000\001\006\005\006" \
379
"\000\000\000\000\001\204\006\004\004\000\000\000\001\207\006\a\004\000" \
380
"\000\000\001\205\a\005\004\000\000\000\001\206\a\006\004\000\000\000" \
381
"\201\001\004\000\003\003\000\000\001\001\001\001\000\000\000\000\001" \
382
"\200\002\000\004\000\000\000\001\201\002\001\004\000\000\000\201\001" \
383
"\004\001\b\a\000\000\001\001\001\001\000\000\000\000\001\200\002\000" \
384
"\004\000\000\000\001\201\003\001\004\000\000\000\000\000\004\000\000" \
385
"\001\000\000\000\001\005\001\000\001\000\000\001\200\006\000\004\001" \
386
"\000\000\001\201\a\001\004\001\000\000\203\003\004\001\b\r\000\000" \
387
"\001\001\001\001\000\000\000\000\001\002\001\002\000\000\000\000\001" \
388
"\200\002\000\004\000\000\000\001\201\003\001\004\000\000\000\001\202" \
389
"\003\002\004\000\000\000\001\203\002\003\004\000\000\000\000\000\004" \
390
"\000\000\001\000\000\000\001\005\001\000\001\000\000\000\002\005\002" \
391
"\000\001\000\000\001\200\006\000\004\001\000\000\001\201\a\001\004" \
392
"\001\000\000\001\202\a\002\004\001\000\000\001\203\006\003\004\001" \
393
"\000\000\223\003\005\001\b\034\001\000\001\001\001\001\000\000\000" \
394
"\000\001\200\002\000\004\000\000\000\001\201\003\001\004\000\000" \
395
"\000\000\000\004\000\000\001\000\000\000\001\005\001\000\001\000" \
396
"\000\001\200\006\000\004\001\000\000\001\201\a\001\004\001\000\000" \
397
"\001\020\004\000\001\000\000\000\001\021\005\001\001\000\000\000" \
398
"\001\220\006\000\005\000\000\000\001\221\a\001\005\000\000\000\001" \
399
"\021\001\001\001\001\000\000\001\220\002\000\005\001\000\000\001" \
400
"\221\003\001\005\001\000\000\001\003\001\003\000\000\000\000\001" \
401
"\202\002\002\004\000\000\000\001\203\003\003\004\000\000\000\000" \
402
"\002\004\002\000\001\000\000\000\003\005\003\000\001\000\000\001" \
403
"\202\006\002\004\001\000\000\001\203\a\003\004\001\000\000\001" \
404
"\022\004\002\001\000\000\000\001\023\005\003\001\000\000\000" \
405
"\001\222\006\002\005\000\000\000\001\223\a\003\005\000\000\000" \
406
"\001\023\001\003\001\001\000\000\001\222\002\002\005\001\000\000" \
407
"\001\223\003\003\005\001\000\000\000\000\000\000\000\000\000\000" \
408
"\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000" \
409
"\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000" \
410
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
411
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
412
"\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
413
"\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
414
"\000\000\000\000\000\000\000\000\223\003\005\001\b\034\001\000" \
415
"\001\001\001\001\000\000\000\000\001\200\002\000\004\000\000\000" \
416
"\001\201\003\001\004\000\000\000\000\000\004\000\000\001\000\000" \
417
"\000\001\005\001\000\001\000\000\001\200\006\000\004\001\000\000" \
418
"\001\201\a\001\004\001\000\000\001\020\004\000\001\000\000\000" \
419
"\001\021\005\001\001\000\000\000\001\220\006\000\005\000\000\000" \
420
"\001\221\a\001\005\000\000\000\001\021\001\001\001\001\000\000" \
421
"\001\220\002\000\005\001\000\000\001\221\003\001\005\001\000\000" \
422
"\001\002\001\002\000\000\000\000\001\202\002\002\004\000\000\000" \
423
"\001\203\003\003\004\000\000\000\000\002\004\002\000\001\000\000" \
424
"\000\003\005\003\000\001\000\000\001\202\006\002\004\001\000\000" \
425
"\001\203\a\003\004\001\000\000\001\022\004\002\001\000\000\000" \
426
"\001\023\005\003\001\000\000\000\001\222\006\002\005\000\000\000" \
427
"\001\223\a\003\005\000\000\000\001\022\001\002\001\001\000\000" \
428
"\001\222\003\002\005\001\000\000\001\223\002\003\005\001\000\000" \
429
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
430
"\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
431
"\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
432
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
433
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
434
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
435
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
436
"\203\003\004\001\b\016\001\000\001\001\001\001\000\000\000\000" \
437
"\001\002\001\002\000\000\000\000\001\200\002\000\004\000\000\000" \
438
"\001\201\003\001\004\000\000\000\001\202\002\002\004\000\000\000" \
439
"\001\203\003\003\004\000\000\000\000\000\004\000\000\001\000\000" \
440
"\000\001\005\001\000\001\000\000\000\002\005\002\000\001\000\000" \
441
"\000\003\005\003\000\001\000\000\001\200\006\000\004\001\000\000" \
442
"\001\201\a\001\004\001\000\000\001\202\006\002\004\001\000\000" \
443
"\001\203\a\003\004\001\000\000\000\000\000\000\000\000\000\000" \
444
"\000\000\000\000\000\000\000\000\002\002\000\000\002\002\000\000" \
445
"\000\000\000\000\000\000\000\000\002\002\000\000\002\002\000\000" \
446
"\000\000\000\000\000\000\000\000\002\002\000\000\002\002\000\000" \
447
"\201\001\004\000\004\003\000\000\001\001\001\001\000\000\000\000" \
448
"\001\200\002\000\004\000\000\000\001\201\003\001\004\000\000\000" \
449
"\203\003\004\000\004\006\000\000\001\001\001\001\000\000\000\000" \
450
"\001\002\001\002\000\000\000\000\001\200\002\000\004\000\000\000" \
451
"\001\201\003\001\004\000\000\000\001\202\003\002\004\000\000\000" \
452
"\001\203\002\003\004\000\000\000\203\003\004\000\004\006\001\000" \
453
"\001\001\001\001\000\000\000\000\001\002\001\002\000\000\000\000" \
454
"\001\200\002\000\004\000\000\000\001\201\003\001\004\000\000\000" \
455
"\001\202\002\002\004\000\000\000\001\203\003\003\004\000\000\000" \
456
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
457
"\002\002\000\000\002\002\000\000\221\001\005\000\004\006\000\000" \
458
"\001\020\001\000\001\000\000\000\001\001\001\001\000\000\000\000" \
459
"\001\200\002\000\004\000\000\000\001\220\002\000\005\000\000\000" \
460
"\001\201\003\001\004\000\000\000\001\221\003\001\005\000\000\000" \
461
"\215\005\006\000\004\003\000\000\001\200\001\000\004\000\000\000" \
462
"\001\201\002\001\004\000\000\000\001\f\003\004\002\000\000\000" \
463
"\203\003\004\000\004\006\001\000\001\001\001\001\000\000\000\000" \
464
"\001\002\003\002\000\000\000\000\001\200\002\000\004\000\000\000" \
465
"\001\201\003\001\004\000\000\000\001\202\002\002\004\000\000\000" \
466
"\001\203\002\003\004\000\000\000\000\000\000\000\002\002\000\000" \
467
"\000\000\000\000\000\000\000\000\002\002\000\000\000\000\000\000" \
468
"\203\003\004\000\005\a\000\000\001\001\001\001\000\000\000\000" \
469
"\001\200\002\000\004\000\000\000\001\201\003\001\004\000\000\000" \
470
"\001\002\004\002\000\000\000\000\001\003\001\003\000\000\000\000" \
471
"\001\202\002\002\004\000\000\000\001\203\003\003\004\000\000\000" \
472
"\221\001\005\000\004\006\000\000\001\001\001\001\000\000\000\000" \
473
"\001\020\001\000\001\000\000\000\001\200\002\000\004\000\000\000" \
474
"\001\201\003\001\004\000\000\000\001\220\003\000\005\000\000\000" \
475
"\001\221\002\001\005\000\000\000\000\000\000\000\000\000\000\000" \
476
"\000\000\000\000\001\001\001\000\033\377\000\000\001\000\000\000" \
477
"\001\002\002\0001\000\000\000!\000\000\000\001\000\000\000\001" \
478
"\002\002\0002\000\000\000@\000\000\000\001\000\000\000\001\002" \
479
"\002\0003\000\000\000#\000\000\000\001\000\000\000\001\002\002" \
480
"\0004\000\000\000$\000\000\000\001\000\000\000\001\002\002\0005" \
481
"\000\000\000%\000\000\000\001\000\000\000\001\002\002\0006\000" \
482
"\000\000^\000\000\000\001\000\000\000\001\002\002\0007\000\000" \
483
"\000&\000\000\000\001\000\000\000\001\002\002\0008\000\000\000*" \
484
"\000\000\000\001\000\000\000\001\002\002\0009\000\000\000(\000" \
485
"\000\000\001\000\000\000\001\002\002\0000\000\000\000)\000\000" \
486
"\000\001\000\000\000\001\002\002\000-\000\000\000_\000\000\000" \
487
"\001\000\000\000\001\002\002\000=\000\000\000+\000\000\000\001" \
488
"\000\000\000\001\002\002\000\b\377\000\000\b\377\000\000\001\000" \
489
"\000\000\001\002\002\000\t\377\000\000 \376\000\000\002\000\000" \
490
"\000\001\002\002\000q\000\000\000Q\000\000\000\002\000\000\000" \
491
"\001\002\002\000w\000\000\000W\000\000\000\002\000\000\000\001" \
492
"\002\002\000e\000\000\000E\000\000\000\002\000\000\000\001\002" \
493
"\002\000r\000\000\000R\000\000\000\002\000\000\000\001\002\002" \
494
"\000t\000\000\000T\000\000\000\002\000\000\000\001\002\002\000y" \
495
"\000\000\000Y\000\000\000\002\000\000\000\001\002\002\000u\000" \
496
"\000\000U\000\000\000\002\000\000\000\001\002\002\000i\000\000" \
497
"\000I\000\000\000\002\000\000\000\001\002\002\000o\000\000\000O" \
498
"\000\000\000\002\000\000\000\001\002\002\000p\000\000\000P\000" \
499
"\000\000\001\000\000\000\001\002\002\000[\000\000\000{\000\000" \
500
"\000\001\000\000\000\001\002\002\000]\000\000\000}\000\000\000" \
501
"\000\000\000\000\001\001\001\000\r\377\000\000\000\000\000\000" \
502
"\001\001\001\000\343\377\000\000\002\000\000\000\001\002\002" \
503
"\000a\000\000\000A\000\000\000\002\000\000\000\001\002\002\000s" \
504
"\000\000\000S\000\000\000\002\000\000\000\001\002\002\000d\000" \
505
"\000\000D\000\000\000\002\000\000\000\001\002\002\000f\000\000" \
506
"\000F\000\000\000\002\000\000\000\001\002\002\000g\000\000\000G" \
507
"\000\000\000\002\000\000\000\001\002\002\000h\000\000\000H\000" \
508
"\000\000\002\000\000\000\001\002\002\000j\000\000\000J\000\000" \
509
"\000\002\000\000\000\001\002\002\000k\000\000\000K\000\000\000" \
510
"\002\000\000\000\001\002\002\000l\000\000\000L\000\000\000\001" \
511
"\000\000\000\001\002\002\000;\000\000\000:\000\000\000\001\000" \
512
"\000\000\001\002\002\000'\000\000\000\"\000\000\000\001\000\000" \
513
"\000\001\002\002\000`\000\000\000~\000\000\000\000\000\000\000" \
514
"\001\001\001\000\341\377\000\000\001\000\000\000\001\002\002\000" \
515
"\\\000\000\000|\000\000\000\002\000\000\000\001\002\002\000z\000" \
516
"\000\000Z\000\000\000\002\000\000\000\001\002\002\000x\000\000" \
517
"\000X\000\000\000\002\000\000\000\001\002\002\000c\000\000\000C" \
518
"\000\000\000\002\000\000\000\001\002\002\000v\000\000\000V\000" \
519
"\000\000\002\000\000\000\001\002\002\000b\000\000\000B\000\000" \
520
"\000\002\000\000\000\001\002\002\000n\000\000\000N\000\000\000" \
521
"\002\000\000\000\001\002\002\000m\000\000\000M\000\000\000\001" \
522
"\000\000\000\001\002\002\000,\000\000\000<\000\000\000\001\000" \
523
"\000\000\001\002\002\000.\000\000\000>\000\000\000\001\000\000" \
524
"\000\001\002\002\000/\000\000\000?\000\000\000\000\000\000\000" \
525
"\001\001\001\000\342\377\000\000\f\000\000\000\001\005\005\000" \
526
"\252\377\000\000\252\377\000\000\252\377\000\000\252\377\000" \
527
"\000!\376\b\020\001\000\000\000\001\002\002\000\351\377\000\000" \
528
"\347\377\000\000\000\000\000\000\001\001\001\000 \000\000\000" \
529
"\000\000\000\000\001\001\001\000\345\377\000\000\f\000\000\000" \
530
"\001\005\005\000\276\377\000\000\276\377\000\000\276\377\000" \
531
"\000\276\377\000\000\001\376\b\020\f\000\000\000\001\005\005" \
532
"\000\277\377\000\000\277\377\000\000\277\377\000\000\277\377" \
533
"\000\000\002\376\b\020\f\000\000\000\001\005\005\000\300\377" \
534
"\000\000\300\377\000\000\300\377\000\000\300\377\000\000\003" \
535
"\376\b\020\f\000\000\000\001\005\005\000\301\377\000\000\301" \
536
"\377\000\000\301\377\000\000\301\377\000\000\004\376\b\020\f" \
537
"\000\000\000\001\005\005\000\302\377\000\000\302\377\000\000" \
538
"\302\377\000\000\302\377\000\000\005\376\b\020\f\000\000\000" \
539
"\001\005\005\000\303\377\000\000\303\377\000\000\303\377\000" \
540
"\000\303\377\000\000\006\376\b\020\f\000\000\000\001\005\005" \
541
"\000\304\377\000\000\304\377\000\000\304\377\000\000\304\377" \
542
"\000\000\a\376\b\020\f\000\000\000\001\005\005\000\305\377" \
543
"\000\000\305\377\000\000\305\377\000\000\305\377\000\000\b" \
544
"\376\b\020\f\000\000\000\001\005\005\000\306\377\000\000\306" \
545
"\377\000\000\306\377\000\000\306\377\000\000\t\376\b\020\f" \
546
"\000\000\000\001\005\005\000\307\377\000\000\307\377\000\000" \
547
"\307\377\000\000\307\377\000\000\n\376\b\020\000\000\000\000" \
548
"\001\001\001\000\177\377\000\000\000\000\000\000\001\001\001" \
549
"\000\024\377\000\000\003\000\000\000\001\002\002\000\225\377" \
550
"\000\000\267\377\000\000\003\000\000\000\001\002\002\000\227" \
551
"\377\000\000\270\377\000\000\003\000\000\000\001\002\002\000" \
552
"\232\377\000\000\271\377\000\000\f\000\000\000\001\005\005" \
553
"\000\255\377\000\000\255\377\000\000\255\377\000\000\255" \
554
"\377\000\000#\376\b\020\003\000\000\000\001\002\002\000\226" \
555
"\377\000\000\264\377\000\000\003\000\000\000\001\002\002" \
556
"\000\235\377\000\000\265\377\000\000\003\000\000\000\001" \
557
"\002\002\000\230\377\000\000\266\377\000\000\f\000\000\000" \
558
"\001\005\005\000\253\377\000\000\253\377\000\000\253\377" \
559
"\000\000\253\377\000\000\"\376\b\020\003\000\000\000\001" \
560
"\002\002\000\234\377\000\000\261\377\000\000\003\000\000" \
561
"\000\001\002\002\000\231\377\000\000\262\377\000\000\003" \
562
"\000\000\000\001\002\002\000\233\377\000\000\263\377\000" \
563
"\000\003\000\000\000\001\002\002\000\236\377\000\000\260" \
564
"\377\000\000\003\000\000\000\001\002\002\000\237\377\000" \
565
"\000\256\377\000\000\000\000\000\000\001\001\001\000\003" \
566
"\376\000\000\000\000\000\000\000\000\000\000\024\000\000" \
567
"\000\001\004\004\000<\000\000\000>\000\000\000|\000\000" \
568
"\000\246\000\000\000\f\000\000\000\001\005\005\000\310" \
569
"\377\000\000\310\377\000\000\310\377\000\000\310\377\000" \
570
"\000\v\376\b\020\f\000\000\000\001\005\005\000\311\377" \
571
"\000\000\311\377\000\000\311\377\000\000\311\377\000\000" \
572
"\f\376\b\020\000\000\000\000\000\000\000\000\000\000\000" \
573
"\000\001\001\001\000&\377\000\000\000\000\000\000\001" \
574
"\001\001\000%\377\000\000\000\000\000\000\001\001\001" \
575
"\000#\377\000\000\000\000\000\000\001\001\001\000'\377" \
576
"\000\000\000\000\000\000\001\001\001\000\"\377\000\000" \
577
"\000\000\000\000\000\000\000\000\000\000\000\000\001" \
578
"\001\001\000\215\377\000\000\000\000\000\000\001\001" \
579
"\001\000\344\377\000\000\f\000\000\000\001\005\005\000" \
580
"\257\377\000\000\257\377\000\000\257\377\000\000\257" \
581
"\377\000\000 \376\b\020\t\000\000\000\001\002\002\000a" \
582
"\377\000\000\025\377\000\000\001\000\000\000\001\002" \
583
"\002\000\352\377\000\000\350\377\000\000\000\000\000" \
584
"\000\001\001\001\000\n\377\000\000\000\000\000\000\001" \
585
"\001\001\000P\377\000\000\000\000\000\000\001\001\001" \
586
"\000R\377\000\000\000\000\000\000\001\001\001\000U\377" \
587
"\000\000\000\000\000\000\001\001\001\000Q\377\000\000" \
588
"\000\000\000\000\001\001\001\000S\377\000\000\000\000" \
589
"\000\000\001\001\001\000W\377\000\000\000\000\000\000" \
590
"\001\001\001\000T\377\000\000\000\000\000\000\001\001" \
591
"\001\000V\377\000\000\000\000\000\000\001\001\001\000c" \
592
"\377\000\000\000\000\000\000\001\001\001\000\377\377" \
593
"\000\000\000\000\000\000\000\000\000\000\000\000\000" \
594
"\000\001\001\001\000\022\377\b\020\000\000\000\000\001" \
595
"\001\001\000\021\377\b\020\000\000\000\000\001\001\001" \
596
"\000\023\377\b\020\000\000\000\000\001\001\001\000*" \
597
"\377\b\020\000\000\000\000\001\001\001\000\275\377\000" \
598
"\000\000\000\000\000\001\001\001\000\261\000\000\000" \
599
"\006\000\000\000\001\002\002\000\023\377\000\000k\377" \
600
"\000\000\000\000\000\000\001\001\001\000J\377\b\020" \
601
"\003\000\000\000\001\002\002\000\256\377\000\000\256" \
602
"\377\000\000\000\000\000\000\001\001\001\0001\377\000" \
603
"\000\000\000\000\000\001\001\001\0004\377\000\000\000" \
604
"\000\000\000\000\000\000\000\000\000\000\000\001\001" \
605
"\001\000\353\377\000\000\000\000\000\000\001\001\001" \
606
"\000\354\377\000\000\000\000\000\000\001\001\001\000g" \
607
"\377\000\000\000\000\000\000\001\001\001\000i\377\000" \
608
"\000\000\000\000\000\001\001\001\000f\377\000\000\000\000\000" \
609
"\000\001\001\001\000p\377\005\020\000\000\000\000\001\001\001" \
610
"\000e\377\000\000\000\000\000\000\001\001\001\000q\377\005\020" \
611
"\000\000\000\000\001\001\001\000W\377\b\020\000\000\000\000\001" \
612
"\001\001\000k\377\b\020\000\000\000\000\001\001\001\000m\377\b" \
613
"\020\000\000\000\000\001\001\001\000h\377\000\000\000\000\000" \
614
"\000\001\001\001\000X\377\b\020\000\000\000\000\001\001\001\000" \
615
"j\377\000\000\000\000\000\000\001\001\001\000e\377\b\020\000\000" \
616
"\000\000\001\001\001\000\035\377\b\020\000\000\000\000\000\000" \
617
"\000\000\000\000\000\000\001\001\001\000/\377\b\020\000\000\000" \
618
"\000\001\001\001\000+\377\b\020\000\000\000\000\001\001\001\000" \
619
"]\377\b\020\000\000\000\000\001\001\001\000{\377\b\020\000\000" \
620
"\000\000\000\000\000\000\000\000\000\000\001\001\001\000\212" \
621
"\377\b\020\000\000\000\000\001\001\001\000A\377\b\020\000\000" \
622
"\000\000\001\001\001\000B\377\b\020\000\000\000\000\001\001" \
623
"\001\000.\377\b\020\000\000\000\000\001\001\001\000Z\377\b" \
624
"\020\000\000\000\000\001\001\001\000-\377\b\020\000\000\000" \
625
"\000\001\001\001\000t\377\b\020\000\000\000\000\001\001\001" \
626
"\000\177\377\b\020\000\000\000\000\001\001\001\000\031\377\b" \
627
"\020\000\000\000\000\001\001\001\0000\377\b\020\000\000\000\000" \
628
"\001\001\001\0003\377\b\020\000\000\000\000\001\001\001\000&" \
629
"\377\b\020\000\000\000\000\001\001\001\000'\377\b\020\000\000" \
630
"\000\000\000\000\000\000\000\000\000\000\001\001\001\000,\377" \
631
"\b\020\000\000\000\000\001\001\001\000,\377\b\020\000\000\000" \
632
"\000\001\001\001\000\027\377\b\020\001\000\000\000\001\002\002" \
633
"\000\024\377\b\0201\377\b\020\000\000\000\000\001\001\001\000" \
634
"\026\377\b\020\001\000\000\000\001\002\002\000\025\377\b\020," \
635
"\377\b\020\000\000\000\000\001\001\001\000\034\377\b\020\000" \
636
"\000\000\000\001\001\001\000>\377\b\020\000\000\000\000\001" \
637
"\001\001\000n\377\b\020\000\000\000\000\000\000\000\000\000\000" \
638
"\000\000\001\001\001\000\201\377\b\020\000\000\000\000\001\001" \
639
"\001\000\030\377\b\020\000\000\000\000\001\001\001\000s\377\b" \
640
"\020\000\000\000\000\001\001\001\000V\377\b\020\000\000\000\000" \
641
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" \
642
"\000\001\001\001\000x\377\b\020\000\000\000\000\001\001\001\000" \
643
"y\377\b\020\000\000\000\000\001\001\001\000(\000\000\000\000\000" \
644
"\000\000\001\001\001\000)\000\000\000\000\000\000\000\001\001" \
645
"\001\000h\377\b\020\000\000\000\000\001\001\001\000f\377\000\000" \
646
"\000\000\000\000\001\001\001\000\201\377\b\020\000\000\000\000" \
647
"\001\001\001\000E\377\b\020\000\000\000\000\001\001\001\000F\377" \
648
"\b\020\000\000\000\000\001\001\001\000G\377\b\020\000\000\000\000" \
649
"\001\001\001\000H\377\b\020\000\000\000\000\001\001\001\000I\377\b" \
650
"\020\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001" \
651
"\000\262\377\b\020\000\000\000\000\001\001\001\000\251\377\b\020" \
652
"\000\000\000\000\001\001\001\000\260\377\b\020\000\000\000\000\001" \
653
"\001\001\000\261\377\b\020\000\000\000\000\000\000\000\000\000\000" \
654
"\000\000\001\001\001\000~\377\000\000\001\000\000\000\001\002\002" \
655
"\000\000\000\000\000\351\377\000\000\001\000\000\000\001\002\002" \
656
"\000\000\000\000\000\347\377\000\000\001\000\000\000\001\002\002" \
657
"\000\000\000\000\000\353\377\000\000\001\000\000\000\001\002\002" \
658
"\000\000\000\000\000\355\377\000\000\000\000\000\000\001\001\001" \
659
"\000\024\377\b\020\000\000\000\000\001\001\001\0001\377\b\020\000" \
660
"\000\000\000\001\001\001\000C\377\b\020\000\000\000\000\001\001" \
661
"\001\000D\377\b\020\000\000\000\000\001\001\001\000K\377\b\020" \
662
"\000\000\000\000\001\001\001\000\247\377\b\020\000\000\000\000" \
663
"\001\001\001\000V\377\b\020\000\000\000\000\001\001\001\000\024" \
664
"\377\b\020\000\000\000\000\001\001\001\000\227\377\b\020\000\000" \
665
"\000\000\000\000\000\000\000\000\000\000\001\001\001\000a\377\000" \
666
"\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001" \
667
"\000\217\377\b\020\000\000\000\000\001\001\001\000\266\377\b\020" \
668
"\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000" \
669
"\031\377\b\020\000\000\000\000\001\001\001\000\216\377\b\020\000" \
670
"\000\000\000\001\001\001\000\033\377\b\020\000\000\000\000\001" \
671
"\001\001\000_\377\b\020\000\000\000\000\001\001\001\000<\377\b" \
672
"\020\000\000\000\000\001\001\001\000^\377\b\020\000\000\000\000" \
673
"\001\001\001\0006\377\b\020\000\000\000\000\000\000\000\000\000" \
674
"\000\000\000\001\001\001\000i\377\000\000\000\000\000\000\001\001" \
675
"\001\000\003\377\b\020\000\000\000\000\001\001\001\000\002\377\b" \
676
"\020\000\000\000\000\001\001\001\0002\377\b\020\000\000\000\000" \
677
"\001\001\001\000Y\377\b\020\000\000\000\000\001\001\001\000\004" \
678
"\377\b\020\000\000\000\000\001\001\001\000\006\377\b\020\000\000" \
679
"\000\000\001\001\001\000\005\377\b\020\000\000\000\000\001\001" \
680
"\001\000{\377\b\020\000\000\000\000\001\001\001\000r\377\b\020" \
681
"\000\000\000\000\001\001\001\000\220\377\b\020\000\000\000\000" \
682
"\001\001\001\000w\377\b\020\000\000\000\000\001\001\001\000[\377" \
683
"\b\020\000\000\000\000\001\001\001\000\223\377\b\020\000\000\000" \
684
"\000\001\001\001\000\224\377\b\020\000\000\000\000\001\001\001" \
685
"\000\225\377\b\020\000\000\000\000\001\001\001\000\226\377\b" \
686
"\020\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001" \
687
"\000\"\376\b\020\000\000\000\000\001\001\001\000#\376\b\020\000" \
688
"\000\000\000\001\001\001\000\a\377\b\020\000\000\000\000\001\001" \
689
"\001\000\364\020\b\020\000\000\000\000\001\001\001\000\365\020\b" \
690
"\020\000\000\000\000\001\001\001\000\264\377\b\020\000\000\000" \
691
"\000\001\001\001\000\265\377\b\020%\0042\001>\001@\bB\002M\020" \
692
"\\\200i\004l\b\205@\206@\313\200\315\b\316@\317@\000\000"
693
end
694
695
let(:get_querykeymap_resp) do
696
"\x01\x00\x0f\x25\x02\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00" \
697
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
698
"\x00\x00\x00\x00\x00\x00\x00\x00"
699
end
700
701
let(:keyboard_select_events_new_keyboard_notify) do
702
"\x88\x01\x05\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
703
"\x05\x00\x05\x00"
704
end
705
706
let(:keyboard_select_events_map_notify) do
707
"\x88\x01\x04\x00\x03\x00\x02\x00\x00\x00\x00\x00\x07\x00\x07\x00"
708
end
709
710
let(:keyboard_get_map_request) do
711
"\x88\x08\x07\x00\x00\x01\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00" \
712
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
713
end
714
715
let(:key_map_request) do
716
"\x2c\x00\x01\x00"
717
end
718
719
let(:set_bell) do
720
"\x88\x03\x07\x00\x00\x01\x00\x03\x00\x04\x32\x00\x00\x00\x00\x00" \
721
"\x00\x00\x00\x00\x2e\x03\x00\x00\x00\x00\x00\x00"
722
end
723
724
describe 'X11GetMapReply' do
725
context '#read' do
726
it do
727
response = Rex::Proto::X11::Xkeyboard::X11GetMapReply.read(get_keyboardmap_resp)
728
expect(response.min_key_code).to eq(8)
729
expect(response.max_key_code).to eq(255)
730
731
expect(response.n_types).to eq(28)
732
expect(response.key_types_array.length).to eq(28)
733
# spot check a few of the key_types_array items
734
expect(response.key_types_array[12].mods_mask).to eq(141)
735
expect(response.key_types_array[12].key_map_array.length).to eq(4)
736
expect(response.key_types_array[12].key_mods_array.length).to eq(4)
737
expect(response.key_types_array[13].mods_mask).to eq(135)
738
expect(response.key_types_array[13].key_map_array.length).to eq(15)
739
740
expect(response.n_key_sym).to eq(248)
741
# spot check a few of the key_map_array items
742
expect(response.key_map_array[247].key_sym_array[0]).to eq(269025205)
743
744
expect(response.total_mod_map_key).to eq(15)
745
# spot check a few of the key_mod_map_array items
746
expect(response.key_mod_map_array[0].keycode).to eq(37)
747
expect(response.key_mod_map_array[0].mods).to eq(4)
748
expect(response.key_mod_map_array[14].keycode).to eq(207)
749
expect(response.key_mod_map_array[14].mods).to eq(64)
750
end
751
752
# this was a crash case from https://github.com/rapid7/metasploit-framework/pull/18877#issuecomment-2445152666
753
it do
754
response = Rex::Proto::X11::Xkeyboard::X11GetMapReply.read(get_keyboardmap_resp_2)
755
expect(response.min_key_code).to eq(8)
756
expect(response.max_key_code).to eq(255)
757
758
expect(response.n_types).to eq(28)
759
expect(response.key_types_array.length).to eq(28)
760
# spot check a few of the key_types_array items
761
expect(response.key_types_array[12].mods_mask).to eq(141)
762
expect(response.key_types_array[12].key_map_array.length).to eq(4)
763
expect(response.key_types_array[12].key_mods_array.length).to eq(4)
764
expect(response.key_types_array[13].mods_mask).to eq(135)
765
expect(response.key_types_array[13].key_map_array.length).to eq(14)
766
767
expect(response.n_key_sym).to eq(248)
768
# spot check a few of the key_map_array items
769
expect(response.key_map_array[247].key_sym_array[0]).to eq(269025205)
770
771
expect(response.total_mod_map_key).to eq(15)
772
# spot check a few of the key_mod_map_array items
773
expect(response.key_mod_map_array[0].keycode).to eq(37)
774
expect(response.key_mod_map_array[0].mods).to eq(4)
775
expect(response.key_mod_map_array[14].keycode).to eq(207)
776
expect(response.key_mod_map_array[14].mods).to eq(64)
777
end
778
end
779
end
780
781
describe 'X11QueryKeyMapRequest' do
782
context '#read' do
783
it do
784
response = Rex::Proto::X11::Xkeyboard::X11QueryKeyMapReply.read(get_querykeymap_resp)
785
expect(response.reply).to eq(1)
786
expect(response.sequence_number).to eq(9487)
787
expect(response.response_length).to eq(2)
788
expect(response.data).to eq([
789
0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\
790
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
791
])
792
end
793
end
794
end
795
796
describe 'X11QueryKeyMapRequest' do
797
context '#initialize' do
798
it do
799
request = Rex::Proto::X11::Xkeyboard::X11QueryKeyMapRequest.new
800
expect(request.to_binary_s).to eq(key_map_request)
801
end
802
end
803
context '#read' do
804
it do
805
request = Rex::Proto::X11::Xkeyboard::X11QueryKeyMapRequest.read(key_map_request)
806
expect(request.opcode).to eq(44)
807
end
808
end
809
end
810
811
describe 'X11SelectEvents' do
812
context '#read' do
813
it do
814
# test against packet pulled from wireshark
815
request = Rex::Proto::X11::Xkeyboard::X11SelectEvents.read(keyboard_select_events_new_keyboard_notify)
816
expect(request.xkeyboard_id).to eq(136)
817
expect(request.extension_minor).to eq(1)
818
expect(request.request_length).to eq(5)
819
expect(request.device_spec).to eq(3)
820
expect(request.affect_which_new_keyboard_notify).to eq(1)
821
expect(request.affect_new_keyboard_key_codes).to eq(1)
822
expect(request.affect_new_keyboard_device_id).to eq(1)
823
# build packet and ensure it matches
824
end
825
end
826
827
context '#initialize' do
828
it do
829
request = Rex::Proto::X11::Xkeyboard::X11SelectEvents.new(
830
xkeyboard_id: 136,
831
extension_minor: 1,
832
device_spec: 3,
833
affect_which_new_keyboard_notify: 1,
834
affect_new_keyboard_key_codes: 1,
835
affect_new_keyboard_device_id: 1,
836
new_keyboard_details_key_codes: 1,
837
new_keyboard_details_device_id: 1
838
)
839
expect(request.to_binary_s).to eq(keyboard_select_events_new_keyboard_notify)
840
end
841
end
842
end
843
844
describe 'X11SelectEvents' do
845
context '#read' do
846
it do
847
# test against packet pulled from wireshark
848
request = Rex::Proto::X11::Xkeyboard::X11SelectEvents.read(keyboard_select_events_map_notify)
849
expect(request.xkeyboard_id).to eq(136)
850
expect(request.extension_minor).to eq(1)
851
expect(request.request_length).to eq(4)
852
expect(request.device_spec).to eq(3)
853
expect(request.affect_which_map_notify).to eq(1)
854
expect(request.map_key_types).to eq(1)
855
expect(request.map_key_syms).to eq(1)
856
expect(request.map_modifier_map).to eq(1)
857
end
858
end
859
860
context '#initialize' do
861
it do
862
request = Rex::Proto::X11::Xkeyboard::X11SelectEvents.new(
863
xkeyboard_id: 136,
864
extension_minor: 1,
865
device_spec: 3,
866
affect_which_map_notify: 1,
867
affect_map_key_types: 1,
868
affect_map_key_syms: 1,
869
affect_map_modifier_map: 1,
870
map_key_types: 1,
871
map_key_syms: 1,
872
map_modifier_map: 1
873
)
874
expect(request.to_binary_s).to eq(keyboard_select_events_map_notify)
875
end
876
end
877
end
878
879
describe 'X11BellRequest' do
880
context '#read' do
881
it do
882
# test against packet pulled from wireshark
883
request = Rex::Proto::X11::Xkeyboard::X11BellRequest.read(set_bell)
884
expect(request.xkeyboard_id).to eq(136)
885
expect(request.extension_minor).to eq(3)
886
expect(request.request_length).to eq(7)
887
expect(request.device_spec).to eq(256)
888
expect(request.bell_class).to eq(768)
889
expect(request.bell_id).to eq(1024)
890
expect(request.percent).to eq(50)
891
expect(request.force_sound).to eq(0)
892
expect(request.sound_only).to eq(0)
893
expect(request.pitch).to eq(0)
894
expect(request.duration).to eq(0)
895
expect(request.window).to eq(0)
896
expect(request.name).to eq(814)
897
end
898
end
899
context '#initialize' do
900
it do
901
request = Rex::Proto::X11::Xkeyboard::X11BellRequest.new(
902
xkeyboard_id: 136
903
)
904
expect(request.to_binary_s).to eq(set_bell)
905
end
906
end
907
end
908
end
909
910