Subject: patch for those who need to type dvorak in console (i.e. not X) on macppc (and possibly mac68k) ports...
To: None <port-macppc@netbsd.org>
From: leon zadorin <leonleon77@gmail.com>
List: port-macppc
Date: 01/24/2007 09:37:50
------=_Part_78415_20968473.1169595470072
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi all,

to those who are intersted: I have written a fix/simple-hack to allow
NetBSD-macppc port the use of dvorak keyboard/layout in
terminal/console mode (i.e. wsconsctl -w encoding=us.dvorak should now
work, whilst previously it didn't have the appropriate mappings - the
apple keyboard layout, I think, uses different scancodes or something
like that - to the extent that even normal us qwerty layout for pc
differs from mac). The good news is that it is only 1 file (akbdmap.h)
which needs to be modified (appended in two places) and I have tested
it to work on my iBook G4. Also, the fact that macppc (AFAIK) borrows
some of the commonly shared info from mac68k port (inclusive of
akbdmap.h) the attached file should also allow "wsconsctl -w
encoding=us.dvorak" work on mac68k port... but this is a pure
speculation of mine :-)

And, of course, when in X, instead of "wsconsctl" one can just try
existing "setxkbmap dvorak"

The attached file should go to the following location in your sources
(if you wanna try using it):
/usr/src/sys/arch/mac68k/dev/akbdmap.h

then go to usual arch/macppc/conf dir and configure/compile your
kernel as usual...

In case the attached file does not make it past some mail filters,
here is the diff (diff MY NetBSDv30) output:

163,201d162
< /* added by Leon Zadorin - the dvorak layout */
< static const keysym_t akbd_keydesc_us_dvorak[] = {
< /*  pos      command		normal		shifted */
<     KC(1),			KS_o, /* s is replaced by o */
<     KC(2),			KS_e, /* d is replaced by e */
<     KC(3),			KS_u, /* f is replaced by u */
<     KC(4),			KS_d, /* h is replaced by d */
<     KC(5),			KS_i, /* g is replaced by i */
<     KC(6),			KS_semicolon,	KS_colon, /* z is replaced by ; */
<     KC(7),			KS_q, /* x is replaced by q */
<     KC(8),			KS_j, /* c is replaced by j */
<     KC(9),			KS_k, /* v is replaced by k */
<
<     KC(11),			KS_x, /* b is replaced by x */
<     KC(12),			KS_apostrophe,	KS_quotedbl, /* q is replaced by ' */
<     KC(13),			KS_comma,	KS_less, /* w is replaced by , */
<     KC(14),			KS_period,	KS_greater, /* e is replaced by . */
<     KC(15),			KS_p, /* r is replaced by p */
<     KC(16),			KS_f, /* y is replaced by f */
<     KC(17),			KS_y, /* t is perlaced by y */
<     KC(24),			KS_bracketright, KS_braceright, /* = is replaced by ] */
<     KC(27),			KS_bracketleft,	KS_braceleft, /* - is replaced by [ */
<     KC(30),			KS_equal,	KS_plus, /* ] is replaced by = */
<     KC(31),			KS_r, /* o is replaced by r */
<     KC(32),			KS_g, /* u is replaced by g */
<     KC(33),			KS_slash,	KS_question, /* [ is replaced by / */
<     KC(34),			KS_c, /* i is replaced by c */
<     KC(35),			KS_l, /* p is replaced by l */
<     KC(37),			KS_n, /* l is replaced by n */
<     KC(38),			KS_h, /* j is replaced by h */
<     KC(39),			KS_minus,	KS_underscore, /* ' is replaced by - */
<     KC(40),			KS_t, /* k is replaced by t */
<     KC(41),			KS_s, /* ; is replaced by s */
<     KC(43),			KS_w, /* , is replaced by w */
<     KC(44),			KS_z, /* / is replaced by z */
<     KC(45),			KS_b, /* n is replaced by b */
<     KC(47),			KS_v, /* . is replaced by v */
< };
<
452d412
< /* modified by Leon Zadorin - added the "akbd_keydesc_us_dvorak" layout */
455d414
< 	KBD_MAP(KB_US | KB_DVORAK,			KB_US,	akbd_keydesc_us_dvorak),

------=_Part_78415_20968473.1169595470072
Content-Type: text/x-chdr; name=akbdmap.h; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="akbdmap.h"

LyoJJE5ldEJTRDogYWtiZG1hcC5oLHYgMS42LjEwLjEgMjAwNS8wNS8wOSAxNzoyMjo0NiB0cm9u
IEV4cCAkCSovCgovKi0KICogQ29weXJpZ2h0IChjKSAxOTk3IFRoZSBOZXRCU0QgRm91bmRhdGlv
biwgSW5jLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBUaGlzIGNvZGUgaXMgZGVyaXZl
ZCBmcm9tIHNvZnR3YXJlIGNvbnRyaWJ1dGVkIHRvIFRoZSBOZXRCU0QgRm91bmRhdGlvbgogKiBi
eSBKdWVyZ2VuIEhhbm5rZW4tSWxsamVzLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAq
IGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz
IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAgbXVzdCBk
aXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKglUaGlzIHByb2R1Y3QgaW5j
bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBOZXRCU0QKICoJRm91bmRhdGlvbiwgSW5j
LiBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgTmV0
QlNEIEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICogICAgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiAqICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJ
T04sIElOQy4gQU5EIENPTlRSSUJVVE9SUwogKiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKICogVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBGT1VOREFUSU9OIE9SIENPTlRSSUJVVE9SUwogKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCiAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwogKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgogKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICovCgovKiBYWFggVGhpcyBsaXN0IGlzIGluY29tcGxldGUuICovCgojZGVmaW5lIEtDKG4pIEtT
X0tFWUNPREUobikKCnN0YXRpYyBjb25zdCBrZXlzeW1fdCBha2JkX2tleWRlc2NfdXNbXSA9IHsK
LyogIHBvcyAgICAgIGNvbW1hbmQJCW5vcm1hbAkJc2hpZnRlZCAqLwogICAgS0MoMCksCQkJS1Nf
YSwKICAgIEtDKDEpLAkJCUtTX3MsCiAgICBLQygyKSwJCQlLU19kLAogICAgS0MoMyksCQkJS1Nf
ZiwKICAgIEtDKDQpLAkJCUtTX2gsCiAgICBLQyg1KSwJCQlLU19nLAogICAgS0MoNiksCQkJS1Nf
eiwKICAgIEtDKDcpLAkJCUtTX3gsCiAgICBLQyg4KSwJCQlLU19jLAogICAgS0MoOSksCQkJS1Nf
diwKCiAgICBLQygxMSksCQkJS1NfYiwKICAgIEtDKDEyKSwJCQlLU19xLAogICAgS0MoMTMpLAkJ
CUtTX3csCiAgICBLQygxNCksCQkJS1NfZSwKICAgIEtDKDE1KSwJCQlLU19yLAogICAgS0MoMTYp
LAkJCUtTX3ksCiAgICBLQygxNyksCQkJS1NfdCwKICAgIEtDKDE4KSwJCQlLU18xLAkJS1NfZXhj
bGFtLAogICAgS0MoMTkpLAkJCUtTXzIsCQlLU19hdCwKICAgIEtDKDIwKSwJCQlLU18zLAkJS1Nf
bnVtYmVyc2lnbiwKICAgIEtDKDIxKSwJCQlLU180LAkJS1NfZG9sbGFyLAogICAgS0MoMjIpLAkJ
CUtTXzYsCQlLU19hc2NpaWNpcmN1bSwKICAgIEtDKDIzKSwJCQlLU181LAkJS1NfcGVyY2VudCwK
ICAgIEtDKDI0KSwJCQlLU19lcXVhbCwJS1NfcGx1cywKICAgIEtDKDI1KSwJCQlLU185LAkJS1Nf
cGFyZW5sZWZ0LAogICAgS0MoMjYpLAkJCUtTXzcsCQlLU19hbXBlcnNhbmQsCiAgICBLQygyNyks
CQkJS1NfbWludXMsCUtTX3VuZGVyc2NvcmUsCiAgICBLQygyOCksCQkJS1NfOCwJCUtTX2FzdGVy
aXNrLAogICAgS0MoMjkpLAkJCUtTXzAsCQlLU19wYXJlbnJpZ2h0LAogICAgS0MoMzApLAkJCUtT
X2JyYWNrZXRyaWdodCwgS1NfYnJhY2VyaWdodCwKICAgIEtDKDMxKSwJCQlLU19vLAogICAgS0Mo
MzIpLAkJCUtTX3UsCiAgICBLQygzMyksCQkJS1NfYnJhY2tldGxlZnQsCUtTX2JyYWNlbGVmdCwK
ICAgIEtDKDM0KSwJCQlLU19pLAogICAgS0MoMzUpLAkJCUtTX3AsCiAgICBLQygzNiksCQkJS1Nf
UmV0dXJuLAogICAgS0MoMzcpLAkJCUtTX2wsCiAgICBLQygzOCksCQkJS1NfaiwKICAgIEtDKDM5
KSwJCQlLU19hcG9zdHJvcGhlLAlLU19xdW90ZWRibCwKICAgIEtDKDQwKSwJCQlLU19rLAogICAg
S0MoNDEpLAkJCUtTX3NlbWljb2xvbiwJS1NfY29sb24sCiAgICBLQyg0MiksCQkJS1NfYmFja3Ns
YXNoLAlLU19iYXIsCiAgICBLQyg0MyksCQkJS1NfY29tbWEsCUtTX2xlc3MsCiAgICBLQyg0NCks
CQkJS1Nfc2xhc2gsCUtTX3F1ZXN0aW9uLAogICAgS0MoNDUpLAkJCUtTX24sCiAgICBLQyg0Niks
CQkJS1NfbSwKICAgIEtDKDQ3KSwJCQlLU19wZXJpb2QsCUtTX2dyZWF0ZXIsCiAgICBLQyg0OCks
CQkJS1NfVGFiLAogICAgS0MoNDkpLAkJCUtTX3NwYWNlLAogICAgS0MoNTApLAkJCUtTX2dyYXZl
LAlLU19hc2NpaXRpbGRlLAogICAgS0MoNTEpLAkJCUtTX0RlbGV0ZSwKICAgIEtDKDUyKSwJCQlL
U19LUF9FbnRlciwgICAgLyogUHJldGVuZCB0aGlzIGlzIGFsdC1SID8gKi8KICAgIEtDKDUzKSwJ
CQlLU19Fc2NhcGUsCiAgICBLQyg1NCksCQkJS1NfQ29udHJvbF9MLAogICAgS0MoNTUpLCAgS1Nf
Q21kLAkJCQkvKiBDb21tYW5kICovCiAgICBLQyg1NiksCQkJS1NfU2hpZnRfTCwKICAgIEtDKDU3
KSwJCQlLU19DYXBzX0xvY2ssCiAgICBLQyg1OCksICBLU19DbWQxLAkJCQkvKiBPcHRpb24gKi8K
ICAgIEtDKDU5KSwJCQlLU19MZWZ0LAogICAgS0MoNjApLAkJCUtTX1JpZ2h0LAogICAgS0MoNjEp
LAkJCUtTX0Rvd24sCiAgICBLQyg2MiksCQkJS1NfVXAsCgogICAgS0MoNjUpLAkJCUtTX0tQX0Rl
Y2ltYWwsCiAgICBLQyg2NyksCQkJS1NfS1BfTXVsdGlwbHksCiAgICBLQyg2OSksCQkJS1NfS1Bf
QWRkLAogICAgS0MoNzEpLAkJCUtTX051bV9Mb2NrLAogICAgS0MoNzUpLAkJCUtTX0tQX0Rpdmlk
ZSwKICAgIEtDKDc2KSwJCQlLU19LUF9FbnRlciwKICAgIEtDKDc4KSwJCQlLU19LUF9TdWJ0cmFj
dCwKCiAgICBLQyg4MSksCQkJS1NfS1BfRXF1YWwsCiAgICBLQyg4MiksCQkJS1NfS1BfSW5zZXJ0
LAlLU19LUF8wLAogICAgS0MoODMpLAkJCUtTX0tQX0VuZCwJS1NfS1BfMSwKICAgIEtDKDg0KSwJ
CQlLU19LUF9Eb3duLAlLU19LUF8yLAogICAgS0MoODUpLAkJCUtTX0tQX05leHQsCUtTX0tQXzMs
CiAgICBLQyg4NiksCQkJS1NfS1BfTGVmdCwJS1NfS1BfNCwKICAgIEtDKDg3KSwJCQlLU19LUF9C
ZWdpbiwJS1NfS1BfNSwKICAgIEtDKDg4KSwJCQlLU19LUF9SaWdodCwJS1NfS1BfNiwKICAgIEtD
KDg5KSwJCQlLU19LUF9Ib21lLAlLU19LUF83LAoKICAgIEtDKDkxKSwJCQlLU19LUF9VcCwJS1Nf
S1BfOCwKICAgIEtDKDkyKSwJCQlLU19LUF9QcmlvciwJS1NfS1BfOSwKCiAgICBLQyg5NSksCQkJ
S1NfS1BfRGVsZXRlLAlLU19LUF9EZWNpbWFsLAogICAgS0MoOTYpLAkJCUtTX2Y1LAogICAgS0Mo
OTcpLAkJCUtTX2Y2LAogICAgS0MoOTgpLAkJCUtTX2Y3LAogICAgS0MoOTkpLAkJCUtTX2YzLAog
ICAgS0MoMTAwKSwJCQlLU19mOCwKCiAgICBLQygxMDEpLAkJCUtTX2Y5LAoKICAgIEtDKDEwMyks
CQkJS1NfZjExLAoKICAgIEtDKDEwNSksCQkJS1NfUHJpbnRfU2NyZWVuLAogICAgS0MoMTA2KSwJ
CQlLU19LUF9FbnRlciwKICAgIEtDKDEwNyksCQkJS1NfSG9sZF9TY3JlZW4sCgogICAgS0MoMTA5
KSwJCQlLU19mMTAsCgogICAgS0MoMTExKSwJCQlLU19mMTIsCgogICAgS0MoMTEzKSwJCQlLU19Q
YXVzZSwKICAgIEtDKDExNCksCQkJS1NfSW5zZXJ0LAogICAgS0MoMTE1KSwJCQlLU19Ib21lLAog
ICAgS0MoMTE2KSwJCQlLU19QcmlvciwKICAgIEtDKDExNyksCQkJS1NfRGVsZXRlLAogICAgS0Mo
MTE4KSwJCQlLU19mNCwKICAgIEtDKDExOSksCQkJS1NfRW5kLAogICAgS0MoMTIwKSwJCQlLU19m
MiwKICAgIEtDKDEyMSksCQkJS1NfTmV4dCwKICAgIEtDKDEyMiksCQkJS1NfZjEsCgogICAgS0Mo
MTI3KSwgIEtTX0NtZF9EZWJ1Z2dlciwKfTsKCi8qIGFkZGVkIGJ5IExlb24gWmFkb3JpbiAtIHRo
ZSBkdm9yYWsgbGF5b3V0ICovCnN0YXRpYyBjb25zdCBrZXlzeW1fdCBha2JkX2tleWRlc2NfdXNf
ZHZvcmFrW10gPSB7Ci8qICBwb3MgICAgICBjb21tYW5kCQlub3JtYWwJCXNoaWZ0ZWQgKi8KICAg
IEtDKDEpLAkJCUtTX28sIC8qIHMgaXMgcmVwbGFjZWQgYnkgbyAqLwogICAgS0MoMiksCQkJS1Nf
ZSwgLyogZCBpcyByZXBsYWNlZCBieSBlICovCiAgICBLQygzKSwJCQlLU191LCAvKiBmIGlzIHJl
cGxhY2VkIGJ5IHUgKi8KICAgIEtDKDQpLAkJCUtTX2QsIC8qIGggaXMgcmVwbGFjZWQgYnkgZCAq
LwogICAgS0MoNSksCQkJS1NfaSwgLyogZyBpcyByZXBsYWNlZCBieSBpICovCiAgICBLQyg2KSwJ
CQlLU19zZW1pY29sb24sCUtTX2NvbG9uLCAvKiB6IGlzIHJlcGxhY2VkIGJ5IDsgKi8KICAgIEtD
KDcpLAkJCUtTX3EsIC8qIHggaXMgcmVwbGFjZWQgYnkgcSAqLwogICAgS0MoOCksCQkJS1Nfaiwg
LyogYyBpcyByZXBsYWNlZCBieSBqICovCiAgICBLQyg5KSwJCQlLU19rLCAvKiB2IGlzIHJlcGxh
Y2VkIGJ5IGsgKi8KCiAgICBLQygxMSksCQkJS1NfeCwgLyogYiBpcyByZXBsYWNlZCBieSB4ICov
CiAgICBLQygxMiksCQkJS1NfYXBvc3Ryb3BoZSwJS1NfcXVvdGVkYmwsIC8qIHEgaXMgcmVwbGFj
ZWQgYnkgJyAqLwogICAgS0MoMTMpLAkJCUtTX2NvbW1hLAlLU19sZXNzLCAvKiB3IGlzIHJlcGxh
Y2VkIGJ5ICwgKi8KICAgIEtDKDE0KSwJCQlLU19wZXJpb2QsCUtTX2dyZWF0ZXIsIC8qIGUgaXMg
cmVwbGFjZWQgYnkgLiAqLwogICAgS0MoMTUpLAkJCUtTX3AsIC8qIHIgaXMgcmVwbGFjZWQgYnkg
cCAqLwogICAgS0MoMTYpLAkJCUtTX2YsIC8qIHkgaXMgcmVwbGFjZWQgYnkgZiAqLwogICAgS0Mo
MTcpLAkJCUtTX3ksIC8qIHQgaXMgcGVybGFjZWQgYnkgeSAqLwogICAgS0MoMjQpLAkJCUtTX2Jy
YWNrZXRyaWdodCwgS1NfYnJhY2VyaWdodCwgLyogPSBpcyByZXBsYWNlZCBieSBdICovCiAgICBL
QygyNyksCQkJS1NfYnJhY2tldGxlZnQsCUtTX2JyYWNlbGVmdCwgLyogLSBpcyByZXBsYWNlZCBi
eSBbICovCiAgICBLQygzMCksCQkJS1NfZXF1YWwsCUtTX3BsdXMsIC8qIF0gaXMgcmVwbGFjZWQg
YnkgPSAqLwogICAgS0MoMzEpLAkJCUtTX3IsIC8qIG8gaXMgcmVwbGFjZWQgYnkgciAqLwogICAg
S0MoMzIpLAkJCUtTX2csIC8qIHUgaXMgcmVwbGFjZWQgYnkgZyAqLwogICAgS0MoMzMpLAkJCUtT
X3NsYXNoLAlLU19xdWVzdGlvbiwgLyogWyBpcyByZXBsYWNlZCBieSAvICovCiAgICBLQygzNCks
CQkJS1NfYywgLyogaSBpcyByZXBsYWNlZCBieSBjICovCiAgICBLQygzNSksCQkJS1NfbCwgLyog
cCBpcyByZXBsYWNlZCBieSBsICovCiAgICBLQygzNyksCQkJS1NfbiwgLyogbCBpcyByZXBsYWNl
ZCBieSBuICovCiAgICBLQygzOCksCQkJS1NfaCwgLyogaiBpcyByZXBsYWNlZCBieSBoICovCiAg
ICBLQygzOSksCQkJS1NfbWludXMsCUtTX3VuZGVyc2NvcmUsIC8qICcgaXMgcmVwbGFjZWQgYnkg
LSAqLwogICAgS0MoNDApLAkJCUtTX3QsIC8qIGsgaXMgcmVwbGFjZWQgYnkgdCAqLwogICAgS0Mo
NDEpLAkJCUtTX3MsIC8qIDsgaXMgcmVwbGFjZWQgYnkgcyAqLwogICAgS0MoNDMpLAkJCUtTX3cs
IC8qICwgaXMgcmVwbGFjZWQgYnkgdyAqLwogICAgS0MoNDQpLAkJCUtTX3osIC8qIC8gaXMgcmVw
bGFjZWQgYnkgeiAqLwogICAgS0MoNDUpLAkJCUtTX2IsIC8qIG4gaXMgcmVwbGFjZWQgYnkgYiAq
LwogICAgS0MoNDcpLAkJCUtTX3YsIC8qIC4gaXMgcmVwbGFjZWQgYnkgdiAqLwp9OwoKc3RhdGlj
IGNvbnN0IGtleXN5bV90IGFrYmRfa2V5ZGVzY19mcltdID0gewovKiAgcG9zCQlub3JtYWwJCXNo
aWZ0ZWQJCWFsdGdyCQlzaGlmdC1hbHRnciAqLwogICAgS0MoMCksCUtTX3EsCiAgICBLQygxKSwJ
S1NfcywJCUtTX1MsCQlLU19PZ3JhdmUsCiAgICBLQyg0KSwJS1NfaCwJCUtTX0gsCQlLU19JZ3Jh
dmUsCUtTX0ljaXJjdW1mbGV4LAogICAgS0MoNiksCUtTX3csCQlLU19XLAkJS1NfbGVzcywJS1Nf
Z3JlYXRlciwKICAgIEtDKDgpLAlLU19jLAkJS1NfQywJCUtTX2NvcHlyaWdodCwJS1NfY2VudCwK
ICAgIEtDKDEwKSwJS1NfYXQsCQlLU19udW1iZXJzaWduLAogICAgS0MoMTEpLAlLU19iLAkJS1Nf
QiwJCUtTX3NzaGFycCwJCiAgICBLQygxMiksCUtTX2EsCQlLU19BLAkJS1NfYWUsCQlLU19BRSwK
ICAgIEtDKDEzKSwJS1NfeiwJCUtTX1osCQlLU19BY2lyY3VtZmxleCwJS1NfQXJpbmcsCiAgICBL
QygxNCksCUtTX2UsCQlLU19FLAkJS1NfZWNpcmN1bWZsZXgsCUtTX0VjaXJjdW1mbGV4LAogICAg
S0MoMTUpLAlLU19yLAkJS1NfUiwJCUtTX3JlZ2lzdGVyZWQsCS8qIEV1cm8gKi8KICAgIEtDKDE2
KSwJS1NfeSwJCUtTX1ksCQlLU19VYWN1dGUsCiAgICBLQygxOCksCUtTX2FtcGVyc2FuZCwJS1Nf
MSwJCUtTX3ZvaWRTeW1ib2wsCUtTX2RlYWRfYWN1dGUsCiAgICBLQygxOSksCUtTX2VhY3V0ZSwJ
S1NfMiwJCUtTX2VkaWFlcmVzaXMsCiAgICBLQygyMCksCUtTX3F1b3RlZGJsLAlLU18zLAogICAg
S0MoMjEpLAlLU19hcG9zdHJvcGhlLAlLU180LAkJS1NfYnJhY2VsZWZ0LAlLU19icmFja2V0bGVm
dCwKICAgIEtDKDIyKSwJS1Nfc2VjdGlvbiwJS1NfNiwJCUtTX3BhcmFncmFwaCwJCiAgICBLQygy
MyksCUtTX3BhcmVubGVmdCwJS1NfNSwJCUtTX2JyYWNlbGVmdCwJS1NfYnJhY2tldGxlZnQsCiAg
ICBLQygyNCksCUtTX21pbnVzLAlLU191bmRlcnNjb3JlLAlLU19icmFjZXJpZ2h0LAogICAgS0Mo
MjUpLAlLU19jY2VkaWxsYSwJS1NfOSwJCUtTX0NjZWRpbGxhLAlLU19BZ3JhdmUsCiAgICBLQygy
NiksCUtTX2VncmF2ZSwJS1NfNywJCUtTX2d1aWxsZW1vdGxlZnQsS1NfZ3VpbGxlbW90cmlnaHQs
CiAgICBLQygyNyksCUtTX3BhcmVucmlnaHQsCUtTX2RlZ3JlZSwJS1NfYnJhY2VyaWdodCwJS1Nf
YnJhY2tldHJpZ2h0LAogICAgS0MoMjgpLAlLU19leGNsYW0sCUtTXzgsCQlLU19leGNsYW1kb3du
LAlLU19VY2lyY3VtZmxleCwKICAgIEtDKDI5KSwJS1NfYWdyYXZlLAlLU18wLAkJS1Nfb3NsYXNo
LAogICAgS0MoMzApLAlLU19kb2xsYXIsCUtTX2FzdGVyaXNrLAlLU19jb21tYSwJS1NfeWVuLAog
ICAgS0MoMzMpLAlLU19kZWFkX2NpcmN1bWZsZXgsIEtTX2RlYWRfZGlhZXJlc2lzLEtTX29jaXJj
dW1mbGV4LEtTX09jaXJjdW1mbGV4LAogICAgS0MoMzQpLAlLU19pLAkJS1NfSSwJCUtTX2ljaXJj
dW1mbGV4LCBLU19JY2lyY3VtZmxleCwKICAgIEtDKDM3KSwJS1NfbCwJCUtTX0wsCQlLU19ub3Rz
aWduLAlLU19iYXIsCiAgICBLQygzOCksCUtTX2osCQlLU19KLAkJS1NfSWRpYWVyZXNpcywJS1Nf
SWdyYXZlLAogICAgS0MoMzkpLAlLU191Z3JhdmUsCUtTX3BlcmNlbnQsCUtTX1VncmF2ZSwKICAg
IEtDKDQwKSwJS1NfaywJCUtTX0ssCQlLU19FZ3JhdmUsCUtTX0VkaWFlcmVzaXMsCiAgICBLQyg0
MSksCUtTX20sCQlLU19NLAkJS1NfbXUsCQlLU19PZ3JhdmUsCiAgICBLQyg0MiksCUtTX2RlYWRf
Z3JhdmUsCUtTX3N0ZXJsaW5nLAlLU19hdCwJCUtTX251bWJlcnNpZ24sCiAgICBLQyg0MyksCUtT
X3NlbWljb2xvbiwJS1NfcGVyaW9kLAogICAgS0MoNDQpLAlLU19lcXVhbCwJS1NfcGx1cywJS1Nf
dm9pZFN5bWJvbCwJS1NfcGx1c21pbnVzLAogICAgS0MoNDUpLAlLU19uLAkJS1NfTiwJCUtTX2Rl
YWRfdGlsZGUsCiAgICBLQyg0NiksCUtTX2NvbW1hLAlLU19xdWVzdGlvbiwJS1Nfdm9pZFN5bWJv
bCwJS1NfcXVlc3Rpb25kb3duLAogICAgS0MoNDcpLAlLU19jb2xvbiwJS1Nfc2xhc2gsCUtTX2Rp
dmlzaW9uLAlLU19iYWNrc2xhc2gsCiAgICBLQyg1MCksCUtTX2xlc3MsCUtTX2dyZWF0ZXIsCiAg
ICBLQyg1MiksCUtTX0FsdF9SLAogICAgS0MoNTUpLAlLU19NZXRhX0wsCQkJCS8qIENvbW1hbmQg
Ki8KICAgIEtDKDU4KSwJS1NfTW9kZV9zd2l0Y2gsCUtTX011bHRpX2tleSwJCS8qIE9wdGlvbiAq
Lwp9OwoKc3RhdGljIGNvbnN0IGtleXN5bV90IGFrYmRfa2V5ZGVzY19mcl9ub2RlYWRbXSA9IHsK
ICAgIEtDKDE4KSwJS1NfYW1wZXJzYW5kLAlLU18xLAkJS1Nfdm9pZFN5bWJvbCwJS1NfYWN1dGUs
CiAgICBLQygzMyksCUtTX2FzY2lpY2lyY3VtLAlLU19kaWFlcmVzaXMsCUtTX29jaXJjdW1mbGV4
LAlLU19PY2lyY3VtZmxleCwKICAgIEtDKDQyKSwJS1NfZ3JhdmUsCUtTX3N0ZXJsaW5nLAlLU19h
dCwJCUtTX251bWJlcnNpZ24sCiAgICBLQyg0NSksCUtTX24sCQlLU19OLAkJS1NfYXNjaWl0aWxk
ZSwKfTsKCnN0YXRpYyBjb25zdCBrZXlzeW1fdCBha2JkX2tleWRlc2NfanBbXSA9IHsKLyogIHBv
cyAgICAgIGNvbW1hbmQJCW5vcm1hbAkJc2hpZnRlZCAqLwogICAgS0MoMTkpLAkJCUtTXzIsCQlL
U19xdW90ZWRibCwKICAgIEtDKDIyKSwJCQlLU182LAkJS1NfYW1wZXJzYW5kLAogICAgS0MoMjQp
LAkJCUtTX2FzY2lpY2lyY3VtLAlLU19hc2NpaXRpbGRlLAogICAgS0MoMjUpLAkJCUtTXzksCQlL
U19wYXJlbnJpZ2h0LAogICAgS0MoMjYpLAkJCUtTXzcsCQlLU19hcG9zdHJvcGhlLAogICAgS0Mo
MjcpLAkJCUtTX21pbnVzLAlLU19lcXVhbCwKICAgIEtDKDI4KSwJCQlLU184LAkJS1NfcGFyZW5s
ZWZ0LAogICAgS0MoMjkpLAkJCUtTXzAsCiAgICBLQygzMCksCQkJS1NfYnJhY2tldGxlZnQsIEtT
X2JyYWNlbGVmdCwKICAgIEtDKDMzKSwJCQlLU19hdCwJCUtTX2dyYXZlLAogICAgS0MoMzkpLAkJ
CUtTX2NvbG9uLAlLU19hc3RlcmlzaywKCiAgICBLQyg0MSksCQkJS1Nfc2VtaWNvbG9uLAlLU19w
bHVzLAogICAgS0MoNDIpLAkJCUtTX2JyYWNrZXRyaWdodCxLU19icmFjZXJpZ2h0LAogICAgS0Mo
OTMpLAkJCUtTX2JhY2tzbGFzaCwJS1NfYmFyLAogICAgS0MoOTQpLAkJCUtTX3VuZGVyc2NvcmUs
Cn07CgpzdGF0aWMgY29uc3Qga2V5c3ltX3QgYWtiZF9rZXlkZXNjX3VrW10gPSB7Ci8qICBwb3MJ
CW5vcm1hbAkJc2hpZnRlZAkJYWx0Z3IJCXNoaWZ0LWFsdGdyICovCiAgICBLQygxMCksCUtTX3Nl
Y3Rpb24sCUtTX3BsdXNtaW51cywKICAgIEtDKDIwKSwJS1NfMywJCUtTX3N0ZXJsaW5nLAlLU19u
dW1iZXJzaWduLAogICAgS0MoNTIpLAlLU19LUF9FbnRlciwKICAgIEtDKDU4KSwJS1NfTW9kZV9z
d2l0Y2gsCUtTX011bHRpX2tleSwJCS8qIE9wdGlvbiAqLwp9OwoKc3RhdGljIGNvbnN0IGtleXN5
bV90IGFrYmRfa2V5ZGVzY19zdltdID0gewovKiAgcG9zCQlub3JtYWwJCXNoaWZ0ZWQJCWFsdGdy
CQlzaGlmdC1hbHRnciAqLwogICAgS0MoMTApLAlLU19zZWN0aW9uLAlLU19kZWdyZWUsCiAgICBL
QygxOSksCUtTXzIsCQlLU19xdW90ZWRibCwJS1NfYXQsCiAgICBLQygyMSksCUtTXzQsCQlLU19k
b2xsYXIsCiAgICBLQygyMiksCUtTXzYsCQlLU19hbXBlcnNhbmQsCiAgICBLQygyNCksCUtTX2Rl
YWRfYWN1dGUsCUtTX2RlYWRfZ3JhdmUsCiAgICBLQygyNSksCUtTXzksCQlLU19wYXJlbnJpZ2h0
LAlLU19icmFja2V0cmlnaHQsCiAgICBLQygyNiksCUtTXzcsCQlLU19zbGFzaCwJS1NfYnJhY2Vs
ZWZ0LAogICAgS0MoMjcpLAlLU19wbHVzLAlLU19xdWVzdGlvbiwJS1NfYmFja3NsYXNoLAogICAg
S0MoMjgpLAlLU184LAkJS1NfcGFyZW5sZWZ0LAlLU19icmFja2V0bGVmdCwKICAgIEtDKDI5KSwJ
S1NfMCwJCUtTX2VxdWFsLAlLU19icmFjZXJpZ2h0LAogICAgS0MoMzApLAlLU19kZWFkX2RpYWVy
ZXNpcyxLU19kZWFkX2NpcmN1bWZsZXgsS1NfZGVhZF90aWxkZSwKICAgIEtDKDMzKSwJS1NfYXJp
bmcsCiAgICBLQygzOSksCUtTX2FkaWFlcmVzaXMsCiAgICBLQyg0MSksCUtTX29kaWFlcmVzaXMs
CiAgICBLQyg0MiksCUtTX2Fwb3N0cm9waGUsCUtTX2FzdGVyaXNrLAogICAgS0MoNDMpLAlLU19j
b21tYSwJS1Nfc2VtaWNvbG9uLAogICAgS0MoNDQpLAlLU19taW51cywJS1NfdW5kZXJzY29yZSwK
ICAgIEtDKDQ3KSwJS1NfcGVyaW9kLAlLU19jb2xvbiwKICAgIEtDKDUwKSwJS1NfbGVzcywJS1Nf
Z3JlYXRlciwJS1NfYmFyLAogICAgS0MoNTgpLAlLU19Nb2RlX3N3aXRjaCxLU19NdWx0aV9rZXks
Cn07CgpzdGF0aWMgY29uc3Qga2V5c3ltX3QgYWtiZF9rZXlkZXNjX3N2X25vZGVhZFtdID0gewov
KiAgcG9zCQlub3JtYWwJCXNoaWZ0ZWQJCWFsdGdyCQlzaGlmdC1hbHRnciAqLwogICAgS0MoMjQp
LAlLU19hcG9zdHJvcGhlLAlLU19ncmF2ZSwKICAgIEtDKDMwKSwJS1NfZGlhZXJlc2lzLAlLU19h
c2NpaWNpcmN1bSwJS1NfYXNjaWl0aWxkZSwKfTsKCnN0YXRpYyBjb25zdCBrZXlzeW1fdCBha2Jk
X2tleWRlc2NfZGVbXSA9IHsKLyogIHBvcwkJbm9ybWFsCQlzaGlmdGVkCQlhbHRncgkJc2hpZnQt
YWx0Z3IgKi8KICAgIEtDKDApLAlLU19hLAkJS1NfQSwJCUtTX2FyaW5nLAlLU19BcmluZywKICAg
IEtDKDEpLAlLU19zLAkJS1NfUywJCUtTX3ZvaWRTeW1ib2wsCUtTX0lhY3V0ZSwKICAgIEtDKDMp
LAlLU19mLAkJS1NfRiwJCUtTX3ZvaWRTeW1ib2wsCUtTX0lkaWFlcmVzaXMsCiAgICBLQyg0KSwJ
S1NfaCwJCUtTX0gsCQlLU19vcmRmZW1pbmluZSwJS1NfT2FjdXRlLAogICAgS0MoNSksCUtTX2cs
CQlLU19HLAkJS1NfY29weXJpZ2h0LAlLU19JZ3JhdmUsCiAgICBLQyg2KSwJS1NfeSwJCUtTX1ks
CQlLU195ZW4sCiAgICBLQyg3KSwJS1NfeCwJCUtTX1gsCQlLU192b2lkU3ltYm9sLAlLU19VZ3Jh
dmUsCiAgICBLQyg4KSwJS1NfYywJCUtTX0MsCQlLU19jY2VkaWxsYSwJS1NfQ2NlZGlsbGEsCiAg
ICBLQygxMCksCUtTX2RlYWRfY2lyY3VtZmxleCxLU19kZWdyZWUsCiAgICBLQygxMiksCUtTX3Es
CQlLU19RLAkJS1NfZ3VpbGxlbW90bGVmdCxLU19ndWlsbGVtb3RyaWdodCwKICAgIEtDKDE1KSwJ
S1NfciwJCUtTX1IsCQlLU19yZWdpc3RlcmVkLAlLU19jZWRpbGxhLAogICAgS0MoMTYpLAlLU196
LAkJS1NfWiwKICAgIEtDKDE4KSwJS1NfMSwJCUtTX2V4Y2xhbSwJS1NfZXhjbGFtZG93biwJS1Nf
bm90c2lnbiwKICAgIEtDKDE5KSwJS1NfMiwJCUtTX3F1b3RlZGJsLAogICAgS0MoMjApLAlLU18z
LAkJS1Nfc2VjdGlvbiwJS1NfcGFyYWdyYXBoLAlLU19udW1iZXJzaWduLAogICAgS0MoMjEpLAlL
U180LAkJS1NfZG9sbGFyLAlLU19jZW50LAlLU19zdGVybGluZywKICAgIEtDKDIyKSwJS1NfNiwJ
CUtTX2FtcGVyc2FuZCwJS1NfYnJhY2tldHJpZ2h0LEtTX2RlYWRfY2lyY3VtZmxleCwKICAgIEtD
KDIzKSwJS1NfNSwJCUtTX3BlcmNlbnQsCUtTX2JyYWNrZXRsZWZ0LAogICAgS0MoMjQpLAlLU19k
ZWFkX2FjdXRlLAlLU19kZWFkX2dyYXZlLAlLU19hcG9zdHJvcGhlLAogICAgS0MoMjUpLAlLU185
LAkJS1NfcGFyZW5yaWdodCwJS1NfYnJhY2VyaWdodCwJS1NfcGVyaW9kY2VudGVyZWQsCiAgICBL
QygyNiksCUtTXzcsCQlLU19zbGFzaCwJS1NfYmFyLAkJS1NfYmFja3NsYXNoLAogICAgS0MoMjcp
LAlLU19zc2hhcnAsCUtTX3F1ZXN0aW9uLAlLU19xdWVzdGlvbmRvd24sCiAgICBLQygyOCksCUtT
XzgsCQlLU19wYXJlbmxlZnQsCUtTX2JyYWNlbGVmdCwKICAgIEtDKDI5KSwJS1NfMCwJCUtTX2Vx
dWFsLAlLU192b2lkU3ltYm9sLAlLU19tYWNyb24sCiAgICBLQygzMCksCUtTX3BsdXMsCUtTX2Fz
dGVyaXNrLAlLU19wbHVzbWludXMsCiAgICBLQygzMSksCUtTX28sCQlLU19PLAkJS1Nfb3NsYXNo
LAlLU19Pb2JsaXF1ZSwKICAgIEtDKDMyKSwJS1NfdSwJCUtTX1UsCQlLU19kZWFkX2RpYWVyZXNp
cyxLU19BYWN1dGUsCiAgICBLQygzMyksCUtTX3VkaWFlcmVzaXMsCUtTX1VkaWFlcmVzaXMsCUtT
X3ZvaWRTeW1ib2wsCUtTX2RlZ3JlZSwKICAgIEtDKDM0KSwJS1NfaSwJCUtTX0ksCQlLU192b2lk
U3ltYm9sLAlLU19VY2lyY3VtZmxleCwKICAgIEtDKDM3KSwJS1NfbCwJCUtTX0wsCQlLU19hdCwK
ICAgIEtDKDM4KSwJS1NfaiwJCUtTX0osCQlLU19tYXNjdWxpbmUsCiAgICBLQygzOSksCUtTX2Fk
aWFlcmVzaXMsCUtTX0FkaWFlcmVzaXMsCUtTX2FlLAkJS1NfQUUsCiAgICBLQyg0MSksCUtTX29k
aWFlcmVzaXMsCUtTX09kaWFlcmVzaXMsCiAgICBLQyg0MiksCUtTX251bWJlcnNpZ24sCUtTX2Fw
b3N0cm9waGUsCiAgICBLQyg0MyksCUtTX2NvbW1hLAlLU19zZW1pY29sb24sCiAgICBLQyg0NCks
CUtTX21pbnVzLAlLU191bmRlcnNjb3JlLAogICAgS0MoNDUpLAlLU19uLAkJS1NfTiwJCUtTX2Rl
YWRfdGlsZGUsCiAgICBLQyg0NiksCUtTX20sCQlLU19NLAkJS1NfbXUsCiAgICBLQyg0NyksCUtT
X3BlcmlvZCwJS1NfY29sb24sCiAgICBLQyg1MCksCUtTX2xlc3MsCUtTX2dyZWF0ZXIsCiAgICBL
Qyg1MiksCUtTX011bHRpX2tleSwKICAgIEtDKDU4KSwJS1NfTW9kZV9zd2l0Y2gsCn07CgpzdGF0
aWMgY29uc3Qga2V5c3ltX3QgYWtiZF9rZXlkZXNjX2RlX25vZGVhZFtdID0gewovKiAgcG9zCQlu
b3JtYWwJCXNoaWZ0ZWQJCWFsdGdyCQlzaGlmdC1hbHRnciAqLwogICAgS0MoMTApLAlLU19hc2Np
aWNpcmN1bSwgS1NfZGVncmVlLAogICAgS0MoMjIpLAlLU182LAkJS1NfYW1wZXJzYW5kLAlLU19i
cmFja2V0cmlnaHQsS1NfYXNjaWljaXJjdW0sCiAgICBLQygyNCksCUtTX2FjdXRlLAlLU19ncmF2
ZSwJS1NfYXBvc3Ryb3BoZSwKICAgIEtDKDMyKSwJS1NfdSwJCUtTX1UsCQlLU19kaWFlcmVzaXMs
CUtTX0FhY3V0ZSwKICAgIEtDKDQ1KSwJS1NfbiwJCUtTX04sCQlLU19hc2NpaXRpbGRlLAp9OwoK
c3RhdGljIGNvbnN0IGtleXN5bV90IGFrYmRfa2V5ZGVzY19zZltdID0gewovKiAgcG9zCQlub3Jt
YWwJCXNoaWZ0ZWQJCWFsdGdyCQlzaGlmdC1hbHRnciAqLwogICAgS0MoNiksCUtTX3ksCiAgICBL
QygxMCksCUtTX3BhcmFncmFwaCwJS1NfZGVncmVlLAogICAgS0MoMTYpLAlLU196LAogICAgS0Mo
MTgpLAlLU19wbHVzLAlLU18xLAogICAgS0MoMTkpLAlLU19xdW90ZWRibCwJS1NfMiwKICAgIEtD
KDIwKSwJS1NfYXN0ZXJpc2ssCUtTXzMsCiAgICBLQygyMSksCUtTX2NjZWRpbGxhLAlLU180LAkJ
S1NfQ2NlZGlsbGEsCiAgICBLQygyMiksCUtTX2FtcGVyc2FuZCwJS1NfNiwKICAgIEtDKDIzKSwJ
S1NfcGVyY2VudCwJS1NfNSwKICAgIEtDKDI0KSwJS1NfZGVhZF9jaXJjdW1mbGV4LEtTX2dyYXZl
LAogICAgS0MoMjUpLAlLU19wYXJlbnJpZ2h0LAlLU185LAogICAgS0MoMjYpLAlLU19zbGFzaCwJ
S1NfNywKICAgIEtDKDI3KSwJS1NfYXBvc3Ryb3BoZSwJS1NfcXVlc3Rpb24sCiAgICBLQygyOCks
CUtTX3BhcmVubGVmdCwJS1NfOCwKICAgIEtDKDI5KSwJS1NfZXF1YWwsCUtTXzAsCiAgICBLQygz
MCksCUtTX2RlYWRfZGlhZXJlc2lzLEtTX2V4Y2xhbSwKICAgIEtDKDMzKSwJS1NfZWdyYXZlLAlL
U191ZGlhZXJlc2lzLAogICAgS0MoMzkpLAlLU19hZ3JhdmUsCUtTX2FkaWFlcmVzaXMsCiAgICBL
Qyg0MSksCUtTX2VhY3V0ZSwJS1Nfb2RpYWVyZXNpcywKICAgIEtDKDQyKSwJS1NfZG9sbGFyLAlL
U19zdGVybGluZywKICAgIEtDKDQzKSwJS1NfcGVyaW9kLAlLU19jb2xvbiwKICAgIEtDKDQ2KSwJ
S1NfY29tbWEsCUtTX3NlbWljb2xvbiwKICAgIEtDKDQ3KSwJS1NfbWludXMsCUtTX3VuZGVyc2Nv
cmUsCiAgICBLQyg1MCksCUtTX2xlc3MsCUtTX2dyZWF0ZXIsCn07CgpzdGF0aWMgY29uc3Qga2V5
c3ltX3QgYWtiZF9rZXlkZXNjX2VzW10gPSB7Ci8qICBwb3MJCW5vcm1hbAkJc2hpZnRlZAkJYWx0
Z3IJCXNoaWZ0LWFsdGdyICovCiAgICBLQygxMCksCUtTX2RlZ3JlZSwJS1Nfb3JkZmVtaW5pbmUs
CUtTX2JhY2tzbGFzaCwKICAgIEtDKDE4KSwJS1NfMSwJCUtTX2V4Y2xhbSwJS1NfYmFyLAogICAg
S0MoMTkpLAlLU18yLAkJS1NfcXVvdGVkYmwsCUtTX2F0LAogICAgS0MoMjApLAlLU18zLAkJS1Nf
cGVyaW9kY2VudGVyZWQsIEtTX251bWJlcnNpZ24sCiAgICBLQygyMSksCUtTXzQsCQlLU19kb2xs
YXIsCUtTX2FzY2lpdGlsZGUsCiAgICBLQygyMiksCUtTXzYsCQlLU19hbXBlcnNhbmQsCUtTX25v
dHNpZ24sCiAgICBLQygyMyksCUtTXzUsCQlLU19wZXJjZW50LAogICAgS0MoMjQpLAlLU19leGNs
YW1kb3duLAlLU19xdWVzdGlvbmRvd24sCiAgICBLQygyNSksCUtTXzksCQlLU19wYXJlbnJpZ2h0
LAogICAgS0MoMjYpLAlLU183LAkJS1Nfc2xhc2gsCiAgICBLQygyNyksCUtTX2Fwb3N0cm9waGUs
CUtTX3F1ZXN0aW9uLAogICAgS0MoMjgpLAlLU184LAkJS1NfcGFyZW5sZWZ0LAogICAgS0MoMjkp
LAlLU18wLAkJS1NfZXF1YWwsCiAgICBLQygzMCksCUtTX3BsdXMsCUtTX2FzdGVyaXNrLAlLU19i
cmFja2V0cmlnaHQsCiAgICBLQygzMyksCUtTX2RlYWRfZ3JhdmUsCUtTX2RlYWRfY2lyY3VtZmxl
eCwgS1NfYnJhY2tldGxlZnQsCiAgICBLQygzOSksCUtTX2RlYWRfYWN1dGUsCUtTX2RlYWRfZGlh
ZXJlc2lzLCBLU19icmFjZWxlZnQsCiAgICBLQyg0MSksCUtTX250aWxkZSwKICAgIEtDKDQyKSwJ
S1NfY2NlZGlsbGEsCUtTX0NjZWRpbGxhLAlLU19icmFjZXJpZ2h0LAogICAgS0MoNDMpLAlLU19j
b21tYSwJS1Nfc2VtaWNvbG9uLAogICAgS0MoNDQpLAlLU19taW51cywJS1NfdW5kZXJzY29yZSwK
ICAgIEtDKDQ3KSwJS1NfcGVyaW9kLAlLU19jb2xvbiwKICAgIEtDKDUwKSwJS1NfbGVzcywJS1Nf
Z3JlYXRlciwKICAgIEtDKDU1KSwJS1NfQWx0X0wsCQkJCS8qIENvbW1hbmQgKi8KICAgIEtDKDU4
KSwJS1NfTW9kZV9zd2l0Y2gsIEtTX011bHRpX2tleSwJCS8qIE9wdGlvbiAqLwp9OwoKc3RhdGlj
IGNvbnN0IGtleXN5bV90IGFrYmRfa2V5ZGVzY19wdFtdID0gewovKiAgcG9zICAgICAgICAgbm9y
bWFsICAgICAgICAgIHNoaWZ0ZWQgICAgICAgICBhbHRnciAgICAgICAgICAgc2hpZnQtYWx0Z3Ig
Ki8KICAgIEtDKDcpLAlLU194LAkJS1NfWCwJCUtTX2d1aWxsZW1vdGxlZnQsIEtTX2d1aWxsZW1v
dHJpZ2h0LAogICAgS0MoMTApLAlLU19zZWN0aW9uLAlLU19wbHVzbWludXMsCiAgICBLQygxOSks
CUtTXzIsCQlLU19xdW90ZWRibCwJS1NfYXQsCiAgICBLQygyMCksCUtTXzMsCQlLU19udW1iZXJz
aWduLAlLU19zdGVybGluZywKICAgIEtDKDIyKSwJS1NfNiwJCUtTX2FtcGVyc2FuZCwKICAgIEtD
KDI0KSwJS1NfcGx1cywJS1NfYXN0ZXJpc2ssCiAgICBLQygyNSksICAgICBLU185LAkJS1NfcGFy
ZW5yaWdodCwJS1NfYnJhY2tldHJpZ2h0LCBLU19icmFjZXJpZ2h0LAogICAgS0MoMjYpLAlLU183
LAkJS1Nfc2xhc2gsCiAgICBLQygyNyksCUtTX2Fwb3N0cm9waGUsCUtTX3F1ZXN0aW9uLAogICAg
S0MoMjgpLAlLU184LAkJS1NfcGFyZW5sZWZ0LAlLU19icmFja2V0bGVmdCwgS1NfYnJhY2VsZWZ0
LAogICAgS0MoMjkpLAlLU18wLAkJS1NfZXF1YWwsCiAgICBLQygzMCksCUtTX2RlYWRfYWN1dGUs
CUtTX2RlYWRfZ3JhdmUsCiAgICBLQygzMyksIAlLU19tYXNjdWxpbmUsCUtTX29yZGZlbWluaW5l
LAogICAgS0MoMzkpLAlLU19kZWFkX3RpbGRlLAlLU19kZWFkX2NpcmN1bWZsZXgsCiAgICBLQyg0
MSksCUtTX2NjZWRpbGxhLAlLU19DY2VkaWxsYSwKICAgIEtDKDQzKSwJS1NfY29tbWEsCUtTX3Nl
bWljb2xvbiwKICAgIEtDKDQ0KSwJS1NfbWludXMsCUtTX3VuZGVyc2NvcmUsCiAgICBLQyg0Nyks
CUtTX3BlcmlvZCwJS1NfY29sb24sCiAgICBLQyg1MCksCUtTX2xlc3MsCUtTX2dyZWF0ZXIsCiAg
ICBLQyg1OCksCUtTX01vZGVfc3dpdGNoLAogICAgS0MoODEpLAlLU19LUF9FcXVhbCwKfTsKCiNk
ZWZpbmUgS0JEX01BUChuYW1lLCBiYXNlLCBtYXApIFwKCQkJeyBuYW1lLCBiYXNlLCBzaXplb2Yo
bWFwKS9zaXplb2Yoa2V5c3ltX3QpLCBtYXAgfQoKLyogbW9kaWZpZWQgYnkgTGVvbiBaYWRvcmlu
IC0gYWRkZWQgdGhlICJha2JkX2tleWRlc2NfdXNfZHZvcmFrIiBsYXlvdXQgKi8Kc3RhdGljIGNv
bnN0IHN0cnVjdCB3c2NvbnNfa2V5ZGVzYyBha2JkX2tleWRlc2N0YWJbXSA9IHsKCUtCRF9NQVAo
S0JfVVMsCQkJMCwJYWtiZF9rZXlkZXNjX3VzKSwKCUtCRF9NQVAoS0JfVVMgfCBLQl9EVk9SQUss
CQkJS0JfVVMsCWFrYmRfa2V5ZGVzY191c19kdm9yYWspLAoJS0JEX01BUChLQl9GUiwJCQlLQl9V
UywJYWtiZF9rZXlkZXNjX2ZyKSwKCUtCRF9NQVAoS0JfSlAsCQkJS0JfVVMsCWFrYmRfa2V5ZGVz
Y19qcCksCglLQkRfTUFQKEtCX0ZSIHwgS0JfTk9ERUFELAlLQl9GUiwJYWtiZF9rZXlkZXNjX2Zy
X25vZGVhZCksCglLQkRfTUFQKEtCX1NGLAkJCUtCX1VTLCAgYWtiZF9rZXlkZXNjX3NmKSwKCUtC
RF9NQVAoS0JfU1YsCQkJS0JfVVMsICBha2JkX2tleWRlc2Nfc3YpLAoJS0JEX01BUChLQl9TViB8
IEtCX05PREVBRCwJS0JfU1YsICBha2JkX2tleWRlc2Nfc3Zfbm9kZWFkKSwKCUtCRF9NQVAoS0Jf
REUsCQkJS0JfVVMsICBha2JkX2tleWRlc2NfZGUpLAoJS0JEX01BUChLQl9ERSB8IEtCX05PREVB
RCwJS0JfREUsICBha2JkX2tleWRlc2NfZGVfbm9kZWFkKSwKCUtCRF9NQVAoS0JfVUssCQkJS0Jf
VVMsICBha2JkX2tleWRlc2NfdWspLAoJS0JEX01BUChLQl9FUywJCQlLQl9VUywJYWtiZF9rZXlk
ZXNjX2VzKSwKCUtCRF9NQVAoS0JfUFQsICAgICAgICAgICAgICAgICAgS0JfVVMsICBha2JkX2tl
eWRlc2NfcHQpLAoJezAsIDAsIDAsIDB9Cn07CgojdW5kZWYgS0JEX01BUAojdW5kZWYgS0MKCg==

------=_Part_78415_20968473.1169595470072--