<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>10491</bug_id>
          
          <creation_ts>2006-08-21 01:53:20 -0700</creation_ts>
          <short_desc>KCanvasMatrix removal</short_desc>
          <delta_ts>2006-08-22 07:57:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rwlbuis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>52972</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-08-21 01:53:20 -0700</bug_when>
    <thetext>KCanvasMatrix was needed when kcanvas was standalone, but all of its functionality
can be handled by platform/AffineTransform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52975</commentid>
    <comment_count>1</comment_count>
      <attachid>10140</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-08-21 02:47:32 -0700</bug_when>
    <thetext>Created attachment 10140
First attempt

I sort of got permission from Eric, but lets get official okay first :)
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53026</commentid>
    <comment_count>2</comment_count>
      <attachid>10140</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-08-21 16:04:12 -0700</bug_when>
    <thetext>Comment on attachment 10140
First attempt

looks good.  r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53058</commentid>
    <comment_count>3</comment_count>
      <attachid>10140</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-08-22 07:57:10 -0700</bug_when>
    <thetext>Comment on attachment 10140
First attempt

Landed as r15964.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10140</attachid>
            <date>2006-08-21 02:47:32 -0700</date>
            <delta_ts>2006-08-21 16:04:12 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>10491.diff</filename>
            <type>text/plain</type>
            <size>42836</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMDYtMDgtMjEgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0OTEKKyAgICAgICAgS0NhbnZh
c01hdHJpeCByZW1vdmFsCisKKyAgICAgICAgUmVtb3ZlIEtDYW52YXNNYXRyaXggZnJvbSBwcm9q
ZWN0LCB1c2luZyBBZmZpbmVUcmFuc2Zvcm0gaW5zdGVhZC4KKworICAgICAgICBXQVJOSU5HOiBO
TyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNNYXRyaXguY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc01hdHJpeC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLQ2FudmFzTWFya2VyOjpkcmF3KToKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNSZXNvdXJj
ZXMuaDoKKyAgICAgICAgKiBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwOgorICAgICAg
ICAqIGtjYW52YXMvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0NvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHQ29udGFpbmVyOjpnZXRBc3BlY3RSYXRpbyk6CisgICAgICAgICoga2NhbnZhcy9S
ZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR1RleHQuY3Bw
OgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaDoKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnRUcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6
OnNldEdyYWRpZW50VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OktSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBrY2Fu
dmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oOgorICAgICAgICAqIGtj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6cGF0dGVyblRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRQYXR0
ZXJuVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OktSZW5kZXJpbmdQYWludFNlcnZlclBh
dHRlcm46OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNl
L0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uaDoKKyAgICAgICAgKiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbToKKyAgICAgICAgKiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW06CisgICAgICAgICoga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaDoKKyAgICAgICAgKiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbToKKyAgICAgICAgKFdlYkNvcmU6OktS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6Ojpjb25jYXRDVE0pOgorICAgICAgICAoV2ViQ29y
ZTo6S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHo6OmN0bSk6CisgICAgICAgICoga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnJl
bmRlclBhdGgpOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJRdWFydHoubW06CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJQYXR0ZXJuUXVhcnR6OjpzZXR1cCk6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6
L1F1YXJ0elN1cHBvcnQubW06CisgICAgICAgICoga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5n
U3R5bGUuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KToKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVzRnJvbVJlZmVyZW5jZVBhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmRyYXdQYXR0ZXJuQ29udGVudEludG9UaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVD
aGFuZ2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KToKKwogMjAwNi0w
OC0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTU5NTApCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTc5LDggKzk3OSw2IEBACiAJCUE4OEFEM0Mw
MDk1MjQ4NkUwMDFERDE5NiAvKiBLQ2FudmFzSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjgxMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2Fu
dmFzSW1hZ2UuaCAqLzsgfTsKIAkJQTg4QUQzQzEwOTUyNDg2RTAwMUREMTk2IC8qIFJlbmRlclBh
dGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MEZCODIwODk3MDFGODAwQkE1MTE0IC8qIFJlbmRlclBhdGguY3BwICovOyB9OwogCQlBODhBRDND
MjA5NTI0ODZFMDAxREQxOTYgLyogUmVuZGVyUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCODMwODk3MDFGODAwQkE1MTE0IC8qIFJlbmRl
clBhdGguaCAqLzsgfTsKLQkJQTg4QUQzQzMwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNNYXRy
aXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MEZCODQwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNNYXRyaXguY3BwICovOyB9OwotCQlBODhB
RDNDNDA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCODUwODk3MDFGODAwQkE1MTE0IC8q
IEtDYW52YXNNYXRyaXguaCAqLzsgfTsKIAkJQTg4QUQzQzUwOTUyNDg2RTAwMUREMTk2IC8qIEtD
YW52YXNQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEMwRkI4NjA4OTcwMUY4MDBCQTUxMTQgLyogS0NhbnZhc1BhdGguaCAqLzsgfTsKIAkJQTg4
QUQzQzYwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNQYXRoLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3NThDNDQzMDhDNUYyMTcwMDlCQUYwNSAv
KiBLQ2FudmFzUGF0aC5jcHAgKi87IH07CiAJCUE4OEFEM0M3MDk1MjQ4NkUwMDFERDE5NiAvKiBL
Q2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEZCODkwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52YXNSZXNvdXJj
ZUxpc3RlbmVyLmggKi87IH07CkBAIC0yOTgyLDggKzI5ODAsNiBAQAogCQlBOEMwRkI4MTA4OTcw
MUY4MDBCQTUxMTQgLyogS0NhbnZhc0ltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc0ltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRkI4MjA4OTcwMUY4
MDBCQTUxMTQgLyogUmVuZGVyUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCODMwODk3MDFG
ODAwQkE1MTE0IC8qIFJlbmRlclBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlBOEMwRkI4NDA4OTcwMUY4MDBCQTUx
MTQgLyogS0NhbnZhc01hdHJpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEZCODUwODk3MDFG
ODAwQkE1MTE0IC8qIEtDYW52YXNNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRkI4NjA4OTcwMUY4
MDBCQTUxMTQgLyogS0NhbnZhc1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEZCODkwODk3MDFGODAwQkE1
MTE0IC8qIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4
QzBGQjhBMDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS0NhbnZhc1Jlc291
cmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwpAQCAtNDgwMyw4ICs0Nzk5LDYgQEAKIAkJCQlBOEMwRkI3RTA4OTcwMUY4MDBCQTUx
MTQgLyogS0NhbnZhc0ZpbHRlcnMuY3BwICovLAogCQkJCUE4QzBGQjdGMDg5NzAxRjgwMEJBNTEx
NCAvKiBLQ2FudmFzRmlsdGVycy5oICovLAogCQkJCUE4QzBGQjgxMDg5NzAxRjgwMEJBNTExNCAv
KiBLQ2FudmFzSW1hZ2UuaCAqLywKLQkJCQlBOEMwRkI4NDA4OTcwMUY4MDBCQTUxMTQgLyogS0Nh
bnZhc01hdHJpeC5jcHAgKi8sCi0JCQkJQThDMEZCODUwODk3MDFGODAwQkE1MTE0IC8qIEtDYW52
YXNNYXRyaXguaCAqLywKIAkJCQk0NzU4QzQ0MzA4QzVGMjE3MDA5QkFGMDUgLyogS0NhbnZhc1Bh
dGguY3BwICovLAogCQkJCUE4QzBGQjg2MDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUGF0aC5o
ICovLAogCQkJCUE4QzBGQjg5MDg5NzAxRjgwMEJBNTExNCAvKiBLQ2FudmFzUmVzb3VyY2VMaXN0
ZW5lci5oICovLApAQCAtNTcwNSw3ICs1Njk5LDYgQEAKIAkJCQlBODhBRDNCRTA5NTI0ODZFMDAx
REQxOTYgLyogS0NhbnZhc0ZpbHRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFEM0MwMDk1
MjQ4NkUwMDFERDE5NiAvKiBLQ2FudmFzSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFE
M0MyMDk1MjQ4NkUwMDFERDE5NiAvKiBSZW5kZXJQYXRoLmggaW4gSGVhZGVycyAqLywKLQkJCQlB
ODhBRDNDNDA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc01hdHJpeC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg4QUQzQzUwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNQYXRoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODhBRDNDNzA5NTI0ODZFMDAxREQxOTYgLyogS0NhbnZhc1Jlc291cmNlTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFEM0M5MDk1MjQ4NkUwMDFERDE5NiAvKiBL
Q2FudmFzUmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTY2MjcsNyArNjYyMCw2IEBACiAJ
CQkJQTg4QUQzQkIwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNDcmVhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4OEFEM0JEMDk1MjQ4NkUwMDFERDE5NiAvKiBLQ2FudmFzRmlsdGVycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDNDMTA5NTI0ODZFMDAxREQxOTYgLyogUmVuZGVy
UGF0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODhBRDNDMzA5NTI0ODZFMDAxREQxOTYgLyog
S0NhbnZhc01hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDNDNjA5NTI0ODZFMDAx
REQxOTYgLyogS0NhbnZhc1BhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQzgwOTUy
NDg2RTAwMUREMTk2IC8qIEtDYW52YXNSZXNvdXJjZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTg4QUQzQ0MwOTUyNDg2RTAwMUREMTk2IC8qIEtDYW52YXNUcmVlRGVidWcuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hdHJpeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXRyaXguY3BwCShyZXZpc2lvbiAxNTk1MCkK
KysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwyOTUgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmZGVmIFNWR19TVVBQT1JUCi0jaW5j
bHVkZSAiS0NhbnZhc01hdHJpeC5oIgotCi0jaW5jbHVkZSAiS0NhbnZhc1BhdGguaCIKLSNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBkZWcycmFkID0gMC4wMTc0NTMyOTI1MTk5
NDMyOTU3Njk7IC8vIHBpLzE4MAotCi0vLyBLQ2FudmFzTWF0cml4Ci1LQ2FudmFzTWF0cml4OjpL
Q2FudmFzTWF0cml4KCkKLXsKLSAgICBtX21vZGUgPSBPUFNfUFJFTVVMOwotfQotCi1LQ2FudmFz
TWF0cml4OjpLQ2FudmFzTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmbWF0cml4KQotewot
ICAgIG1fbW9kZSA9IE9QU19QUkVNVUw7Ci0gICAgKCp0aGlzKSA9IG1hdHJpeDsKLX0KLQotS0Nh
bnZhc01hdHJpeDo6S0NhbnZhc01hdHJpeChjb25zdCBLQ2FudmFzTWF0cml4ICZtYXRyaXgpCi17
Ci0gICAgbV9tb2RlID0gT1BTX1BSRU1VTDsKLSAgICAoKnRoaXMpID0gbWF0cml4OwotfQotCi1L
Q2FudmFzTWF0cml4OjpLQ2FudmFzTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMs
IGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCi17Ci0gICAgbV9tb2RlID0gT1BTX1BSRU1V
TDsKLSAgICBtX21hdHJpeC5zZXRNYXRyaXgoYSwgYiwgYywgZCwgZSwgZik7Ci19Ci0KLUtDYW52
YXNNYXRyaXg6On5LQ2FudmFzTWF0cml4KCkKLXsKLX0KLQotS0NhbnZhc01hdHJpeCAmS0NhbnZh
c01hdHJpeDo6b3BlcmF0b3I9KGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmb3RoZXIpCi17Ci0gICAg
bV9tYXRyaXggPSBvdGhlcjsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUtDYW52YXNNYXRyaXgg
JktDYW52YXNNYXRyaXg6Om9wZXJhdG9yPShjb25zdCBLQ2FudmFzTWF0cml4ICZvdGhlcikKLXsK
LSAgICBtX21hdHJpeCA9IG90aGVyLm1fbWF0cml4OwotICAgIHJldHVybiAqdGhpczsKLX0KLQot
Ym9vbCBLQ2FudmFzTWF0cml4OjpvcGVyYXRvcj09KGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX21hdHJpeCA9PSBvdGhlcik7Ci19Ci0KLWJvb2wg
S0NhbnZhc01hdHJpeDo6b3BlcmF0b3IhPShjb25zdCBBZmZpbmVUcmFuc2Zvcm0gJm90aGVyKSBj
b25zdAotewotICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7Ci19Ci0KLWJvb2wgS0NhbnZh
c01hdHJpeDo6b3BlcmF0b3I9PShjb25zdCBLQ2FudmFzTWF0cml4ICZvdGhlcikgY29uc3QKLXsK
LSAgICByZXR1cm4gKG1fbWF0cml4ID09IG90aGVyLm1fbWF0cml4KTsKLX0KLQotYm9vbCBLQ2Fu
dmFzTWF0cml4OjpvcGVyYXRvciE9KGNvbnN0IEtDYW52YXNNYXRyaXggJm90aGVyKSBjb25zdAot
ewotICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7Ci19Ci0KLXZvaWQgS0NhbnZhc01hdHJp
eDo6c2V0T3BlcmF0aW9uTW9kZShLQ01hdHJpeE9wZXJhdGlvbk1vZGUgbW9kZSkKLXsKLSAgICBt
X21vZGUgPSBtb2RlOwotfSAgICAKLQotdm9pZCBLQ2FudmFzTWF0cml4OjpzZXRBKGRvdWJsZSBh
KQotewotICAgIG1fbWF0cml4LnNldE1hdHJpeChhLCBtX21hdHJpeC5tMTIoKSwgbV9tYXRyaXgu
bTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJpeC5keCgpLCBtX21hdHJpeC5keSgpKTsKLX0K
LQotZG91YmxlIEtDYW52YXNNYXRyaXg6OmEoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdHJp
eC5tMTEoKTsKLX0KLQotdm9pZCBLQ2FudmFzTWF0cml4OjpzZXRCKGRvdWJsZSBiKQotewotICAg
IG1fbWF0cml4LnNldE1hdHJpeChtX21hdHJpeC5tMTEoKSwgYiwgbV9tYXRyaXgubTIxKCksIG1f
bWF0cml4Lm0yMigpLCBtX21hdHJpeC5keCgpLCBtX21hdHJpeC5keSgpKTsKLX0KLQotZG91Ymxl
IEtDYW52YXNNYXRyaXg6OmIoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdHJpeC5tMTIoKTsK
LX0KLQotdm9pZCBLQ2FudmFzTWF0cml4OjpzZXRDKGRvdWJsZSBjKQotewotICAgIG1fbWF0cml4
LnNldE1hdHJpeChtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIGMsIG1fbWF0cml4Lm0y
MigpLCBtX21hdHJpeC5keCgpLCBtX21hdHJpeC5keSgpKTsKLX0KLQotZG91YmxlIEtDYW52YXNN
YXRyaXg6OmMoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdHJpeC5tMjEoKTsKLX0KLQotdm9p
ZCBLQ2FudmFzTWF0cml4OjpzZXREKGRvdWJsZSBkKQotewotICAgIG1fbWF0cml4LnNldE1hdHJp
eChtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0yMSgpLCBkLCBtX21h
dHJpeC5keCgpLCBtX21hdHJpeC5keSgpKTsKLX0KLQotZG91YmxlIEtDYW52YXNNYXRyaXg6OmQo
KSBjb25zdAotewotICAgIHJldHVybiBtX21hdHJpeC5tMjIoKTsKLX0KLQotdm9pZCBLQ2FudmFz
TWF0cml4OjpzZXRFKGRvdWJsZSBlKQotewotICAgIG1fbWF0cml4LnNldE1hdHJpeChtX21hdHJp
eC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0yMSgpLCBtX21hdHJpeC5tMjIoKSwg
ZSwgbV9tYXRyaXguZHkoKSk7Ci19Ci0KLWRvdWJsZSBLQ2FudmFzTWF0cml4OjplKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tYXRyaXguZHgoKTsKLX0KLQotdm9pZCBLQ2FudmFzTWF0cml4Ojpz
ZXRGKGRvdWJsZSBmKQotewotICAgIG1fbWF0cml4LnNldE1hdHJpeChtX21hdHJpeC5tMTEoKSwg
bV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0yMSgpLCBtX21hdHJpeC5tMjIoKSwgbV9tYXRyaXgu
ZHgoKSwgZik7Ci19Ci0KLWRvdWJsZSBLQ2FudmFzTWF0cml4OjpmKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9tYXRyaXguZHkoKTsKLX0KLQotS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6
dHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSkKLXsKLSAgICBpZihtX21vZGUgPT0gT1BTX1BS
RU1VTCkKLSAgICAgICAgbV9tYXRyaXgudHJhbnNsYXRlKHgsIHkpOwotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgICAgICB0ZW1wLnRyYW5zbGF0ZSh4
LCB5KTsKLSAgICAgICAgbV9tYXRyaXggKj0gdGVtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KLUtDYW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6Om11bHRpcGx5KGNvbnN0IEtD
YW52YXNNYXRyaXggJm90aGVyKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKG90aGVyLmEo
KSwgb3RoZXIuYigpLCBvdGhlci5jKCksIG90aGVyLmQoKSwgb3RoZXIuZSgpLCBvdGhlci5mKCkp
OwotCi0gICAgaWYobV9tb2RlID09IE9QU19QUkVNVUwpCi0gICAgewotICAgICAgICB0ZW1wICo9
IG1fbWF0cml4OwotICAgICAgICBtX21hdHJpeCA9IHRlbXA7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICAgICAgbV9tYXRyaXggKj0gdGVtcDsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotS0NhbnZh
c01hdHJpeCAmS0NhbnZhc01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91Ymxl
IHNjYWxlRmFjdG9yWSkKLXsKLSAgICBpZihtX21vZGUgPT0gT1BTX1BSRU1VTCkKLSAgICAgICAg
bV9tYXRyaXguc2NhbGUoc2NhbGVGYWN0b3JYLCBzY2FsZUZhY3RvclkpOwotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgICAgICB0ZW1wLnNjYWxlKHNj
YWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsKLSAgICAgICAgbV9tYXRyaXggKj0gdGVtcDsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUtDYW52YXNNYXRyaXggJktDYW52YXNNYXRy
aXg6OnJvdGF0ZShkb3VibGUgYW5nbGUpCi17Ci0gICAgaWYobV9tb2RlID09IE9QU19QUkVNVUwp
Ci0gICAgICAgIG1fbWF0cml4LnJvdGF0ZShhbmdsZSk7Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgICAgIHRlbXAucm90YXRlKGFuZ2xlKTsKLSAg
ICAgICAgbV9tYXRyaXggKj0gdGVtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LUtDYW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgs
IGRvdWJsZSB5KQotewotICAgIGlmKG1fbW9kZSA9PSBPUFNfUFJFTVVMKQotICAgICAgICBtX21h
dHJpeC5yb3RhdGUoYXRhbjIoeSwgeCkgLyBkZWcycmFkKTsKLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICAgICAgdGVtcC5yb3RhdGUoYXRhbjIoeSwg
eCkgLyBkZWcycmFkKTsKLSAgICAgICAgbV9tYXRyaXggKj0gdGVtcDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLUtDYW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6OmZsaXBYKCkK
LXsKLSAgICByZXR1cm4gc2NhbGUoLTEuMGYsIDEuMGYpOwotfQotCi1LQ2FudmFzTWF0cml4ICZL
Q2FudmFzTWF0cml4OjpmbGlwWSgpCi17Ci0gICAgcmV0dXJuIHNjYWxlKDEuMGYsIC0xLjBmKTsK
LX0KLQotS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKQot
ewotICAgIGlmKG1fbW9kZSA9PSBPUFNfUFJFTVVMKQotICAgICAgICBtX21hdHJpeC5zaGVhcih0
YW4oYW5nbGUgKiBkZWcycmFkKSwgMC4wZik7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgICAgIHRlbXAuc2hlYXIodGFuKGFuZ2xlICogZGVnMnJh
ZCksIDAuMGYpOwotICAgICAgICBtX21hdHJpeCAqPSB0ZW1wOwotICAgIH0KLQotICAgIHJldHVy
biAqdGhpczsKLX0KLQotS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6c2tld1koZG91Ymxl
IGFuZ2xlKQotewotICAgIGlmKG1fbW9kZSA9PSBPUFNfUFJFTVVMKQotICAgICAgICBtX21hdHJp
eC5zaGVhcigwLjBmLCB0YW4oYW5nbGUgKiBkZWcycmFkKSk7Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgICAgIHRlbXAuc2hlYXIoMC4wZiwgdGFu
KGFuZ2xlICogZGVnMnJhZCkpOwotICAgICAgICBtX21hdHJpeCAqPSB0ZW1wOwotICAgIH0KLQot
ICAgIHJldHVybiAqdGhpczsKLX0KLQotdm9pZCBLQ2FudmFzTWF0cml4OjpyZXNldCgpCi17Ci0g
ICAgbV9tYXRyaXgucmVzZXQoKTsKLX0KLQotdm9pZCBLQ2FudmFzTWF0cml4OjpyZW1vdmVTY2Fs
ZShkb3VibGUgKnhTY2FsZSwgZG91YmxlICp5U2NhbGUpCi17Ci0gICAgZG91YmxlIHN4ID0gc3Fy
dChhKCkgKiBhKCkgKyBiKCkgKmIoKSk7Ci0gICAgZG91YmxlIHN5ID0gc3FydChjKCkgKiBjKCkg
KyBkKCkgKmQoKSk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIHNjYWxpbmcgZnJvbSB0aGUgbWF0cml4
LgotICAgIHNldEEoYSgpIC8gc3gpOyBzZXRCKGIoKSAvIHN4KTsKLSAgICBzZXRDKGMoKSAvIHN5
KTsgc2V0RChkKCkgLyBzeSk7Ci0KLSAgICAqeFNjYWxlID0gc3g7ICp5U2NhbGUgPSBzeTsKLX0K
LQotQWZmaW5lVHJhbnNmb3JtIEtDYW52YXNNYXRyaXg6Om1hdHJpeCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fbWF0cml4OwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQKLSNlbmRpZiAvLyBT
VkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc01hdHJpeC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzTWF0cml4LmgJKHJldmlzaW9uIDE1OTUw
KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMDkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgotKi8KLQotI2lmbmRlZiBLQ2FudmFzTWF0cml4X0gKLSNkZWZpbmUgS0NhbnZhc01hdHJp
eF9ICi0jaWZkZWYgU1ZHX1NVUFBPUlQKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gS0NNYXRyaXhPcGVyYXRpb25Nb2RlIHsKLSAg
ICBPUFNfUFJFTVVMID0gMSwgLy8gRGVmYXVsdCBtb2RlIChzdmcgY29tcGF0aWJsZSkKLSAgICBP
UFNfUE9TVE1VTCA9IDIKLX07Ci0KLWNsYXNzIEtDYW52YXNQYXRoOwotY2xhc3MgS0NhbnZhc01h
dHJpeAotewotcHVibGljOgotICAgIEtDYW52YXNNYXRyaXgoKTsKLSAgICBLQ2FudmFzTWF0cml4
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmbWF0cml4KTsKLSAgICBLQ2FudmFzTWF0cml4KGNvbnN0
IEtDYW52YXNNYXRyaXggJm1hdHJpeCk7Ci0gICAgS0NhbnZhc01hdHJpeChkb3VibGUgYSwgZG91
YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKLSAgICB+S0Nh
bnZhc01hdHJpeCgpOwotCi0gICAgLy8gT3BlcmF0b3JzCi0gICAgS0NhbnZhc01hdHJpeCAmb3Bl
cmF0b3I9KGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmb3RoZXIpOwotICAgIEtDYW52YXNNYXRyaXgg
Jm9wZXJhdG9yPShjb25zdCBLQ2FudmFzTWF0cml4ICZvdGhlcik7Ci0KLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQWZmaW5lVHJhbnNmb3JtICZvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmb3RoZXIpIGNvbnN0OwotCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEtDYW52YXNNYXRyaXggJm90aGVyKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgS0NhbnZhc01hdHJpeCAmb3RoZXIpIGNvbnN0OwotCi0gICAgdm9pZCBz
ZXRPcGVyYXRpb25Nb2RlKEtDTWF0cml4T3BlcmF0aW9uTW9kZSBtb2RlKTsKLQotICAgIGRvdWJs
ZSBhKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBKGRvdWJsZSBhKTsKLQotICAgIGRvdWJsZSBiKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRCKGRvdWJsZSBiKTsKLQotICAgIGRvdWJsZSBjKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRDKGRvdWJsZSBjKTsKLQotICAgIGRvdWJsZSBkKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXREKGRvdWJsZSBkKTsKLQotICAgIGRvdWJsZSBlKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRFKGRvdWJsZSBlKTsKLQotICAgIGRvdWJsZSBmKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGKGRv
dWJsZSBmKTsKLQotICAgIC8vIE9QU19QUkVNVUwgOiBQcmUtbXVsdGlwbGllZCBvcGVyYXRpb25z
IChuZWVkZWQgZm9yIHN2Zy1saWtlIG1hdHJpeCBvcGVyYXRpb25zKQotICAgIC8vIE9QU19QT1NU
TVVMOiBQb3N0LW11bHRpcGxpZWQgb3BlcmF0aW9ucwotICAgIEtDYW52YXNNYXRyaXggJnRyYW5z
bGF0ZShkb3VibGUgeCwgZG91YmxlIHkpOwotICAgIEtDYW52YXNNYXRyaXggJm11bHRpcGx5KGNv
bnN0IEtDYW52YXNNYXRyaXggJm90aGVyKTsKLSAgICBLQ2FudmFzTWF0cml4ICZzY2FsZShkb3Vi
bGUgc2NhbGVGYWN0b3JYLCBkb3VibGUgc2NhbGVGYWN0b3JZKTsKLQotICAgIEtDYW52YXNNYXRy
aXggJnJvdGF0ZShkb3VibGUgYW5nbGUpOwotICAgIEtDYW52YXNNYXRyaXggJnJvdGF0ZUZyb21W
ZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KTsKLQotICAgIEtDYW52YXNNYXRyaXggJmZsaXBYKCk7
Ci0gICAgS0NhbnZhc01hdHJpeCAmZmxpcFkoKTsKLQotICAgIEtDYW52YXNNYXRyaXggJnNrZXdY
KGRvdWJsZSBhbmdsZSk7Ci0gICAgS0NhbnZhc01hdHJpeCAmc2tld1koZG91YmxlIGFuZ2xlKTsK
LQotICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIC8vIERldGVybWluZSB0aGUgc2NhbGluZyBjb21w
b25lbnQgb2YgdGhlIG1hdHJpeCBhbmQgZmFjdG9yIGl0IG91dC4KLSAgICAvLyBBZnRlciB0aGlz
IG9wZXJhdGlvbiwgdGhlIG1hdHJpeCBoYXMgeCBhbmQgeSBzY2FsZSBvZiBvbmUgKCcxJykuCi0g
ICAgdm9pZCByZW1vdmVTY2FsZShkb3VibGUgKnhTY2FsZSwgZG91YmxlICp5U2NhbGUpOwotCi0g
ICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEFmZmlu
ZVRyYW5zZm9ybSBtX21hdHJpeDsKLSAgICBLQ01hdHJpeE9wZXJhdGlvbk1vZGUgbV9tb2RlOwot
fTsKLQotfQotCi0jZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCShyZXZpc2lvbiAxNTk1
MCkKKysrIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdDb250YWluZXIuaCIKICNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKLSNpbmNsdWRlICJL
Q2FudmFzTWF0cml4LmgiCiAjaW5jbHVkZSAiS0NhbnZhc1RyZWVEZWJ1Zy5oIgogI2luY2x1ZGUg
IktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCkBAIC0yMjQsMTEg
KzIyMywxMCBAQCB2b2lkIEtDYW52YXNNYXJrZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0CiB7CiAg
ICAgaWYobV9tYXJrZXIpCiAgICAgewotICAgICAgICBLQ2FudmFzTWF0cml4IHRyYW5zbGF0aW9u
OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNsYXRpb247CiAgICAgICAgIHRyYW5zbGF0
aW9uLnRyYW5zbGF0ZSh4LCB5KTsKIAotICAgICAgICBLQ2FudmFzTWF0cml4IHJvdGF0aW9uOwot
ICAgICAgICByb3RhdGlvbi5zZXRPcGVyYXRpb25Nb2RlKE9QU19QT1NUTVVMKTsKKyAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHJvdGF0aW9uOwogICAgICAgICByb3RhdGlvbi50cmFuc2xhdGUoLW1f
cmVmWCwgLW1fcmVmWSk7CiAgICAgICAgIHJvdGF0aW9uLnNjYWxlKG1fc2NhbGVYLCBtX3NjYWxl
WSk7CiAgICAgICAgIHJvdGF0aW9uLnJvdGF0ZShtX2FuZ2xlID4gLTEgPyBtX2FuZ2xlIDogYW5n
bGUpOwpAQCAtMjQwLDcgKzIzOCw4IEBAIHZvaWQgS0NhbnZhc01hcmtlcjo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQKICAgICAgICAgLy8gRklYTUU6IFBhaW50SW5mbyBzaG91bGQgYmUgcGFzc2VkIGlu
dG8gdGhpcyBtZXRob2QgaW5zdGVhZC4KICAgICAgICAgLy8gRklYTUU6IGJvdW5kaW5nIGJveCBm
cmFjdGlvbnMgbG9zdAogICAgICAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBpbmZvKGNvbnRl
eHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCksIFBhaW50UGhhc2VGb3JlZ3JvdW5kLCAwLCAwLCAw
KTsKLSAgICAgICAgbV9tYXJrZXItPnNldExvY2FsVHJhbnNmb3JtKHJvdGF0aW9uLm11bHRpcGx5
KHRyYW5zbGF0aW9uKS5tYXRyaXgoKSk7CisgICAgICAgIHJvdGF0aW9uID0gcm90YXRpb24gKiB0
cmFuc2xhdGlvbjsKKyAgICAgICAgbV9tYXJrZXItPnNldExvY2FsVHJhbnNmb3JtKHJvdGF0aW9u
KTsKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHQ29udGFpbmVyICo+KG1fbWFya2VyKS0+
c2V0RHJhd3NDb250ZW50cyh0cnVlKTsKICAgICAgICAgbV9tYXJrZXItPnBhaW50KGluZm8sIDAs
IDApOwogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdDb250YWluZXIgKj4obV9tYXJrZXIp
LT5zZXREcmF3c0NvbnRlbnRzKGZhbHNlKTsKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9LQ2FudmFz
UmVzb3VyY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL0tDYW52YXNSZXNvdXJj
ZXMuaAkocmV2aXNpb24gMTU5NTApCisrKyBXZWJDb3JlL2tjYW52YXMvS0NhbnZhc1Jlc291cmNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHR5cGVkZWYgZW51bQogICAgIFJT
X01BU0tFUiA9IDQKIH0gS0NSZXNvdXJjZVR5cGU7CiAKLWNsYXNzIEtDYW52YXNNYXRyaXg7CiBj
bGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI7CiAKIGNsYXNzIEtDYW52YXNSZXNvdXJjZQpJbmRl
eDogV2ViQ29yZS9rY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva2NhbnZhcy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkocmV2aXNpb24gMTU5NTAp
CisrKyBXZWJDb3JlL2tjYW52YXMvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJGb3JlaWduT2JqZWN0LmgiCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJLQ2FudmFzTWF0cml4Lmgi
CiAjaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVu
Z3RoLmgiCiAjaW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKSW5kZXg6IFdlYkNv
cmUva2NhbnZhcy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a2NhbnZhcy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNv
cmUva2NhbnZhcy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMs
NyArMjQzLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR0NvbnRhaW5lcjo6dmlldwogICAg
ICAgICBGbG9hdFJlY3Qgdmlld3BvcnRSZWN0ID0gdmlld3BvcnQoKTsKICAgICAgICAgaWYgKCFw
YXJlbnQoKS0+aXNLQ2FudmFzQ29udGFpbmVyKCkpCiAgICAgICAgICAgICB2aWV3cG9ydFJlY3Qg
PSBGbG9hdFJlY3Qodmlld3BvcnQoKS54KCksIHZpZXdwb3J0KCkueSgpLCB3aWR0aCgpLCBoZWln
aHQoKSk7Ci0gICAgICAgIHJldHVybiBnZXRBc3BlY3RSYXRpbyh2aWV3Qm94KCksIHZpZXdwb3J0
UmVjdCkubWF0cml4KCk7CisgICAgICAgIHJldHVybiBnZXRBc3BlY3RSYXRpbyh2aWV3Qm94KCks
IHZpZXdwb3J0UmVjdCk7CiAgICAgfQogICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIH0K
QEAgLTMyOCw5ICszMjgsOSBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6c2xpY2UoKSBjb25z
dAogICAgIHJldHVybiBkLT5zbGljZTsKIH0KIAotS0NhbnZhc01hdHJpeCBSZW5kZXJTVkdDb250
YWluZXI6OmdldEFzcGVjdFJhdGlvKGNvbnN0IEZsb2F0UmVjdCYgbG9naWNhbCwgY29uc3QgRmxv
YXRSZWN0JiBwaHlzaWNhbCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdDb250YWlu
ZXI6OmdldEFzcGVjdFJhdGlvKGNvbnN0IEZsb2F0UmVjdCYgbG9naWNhbCwgY29uc3QgRmxvYXRS
ZWN0JiBwaHlzaWNhbCkgY29uc3QKIHsKLSAgICBLQ2FudmFzTWF0cml4IHRlbXA7CisgICAgQWZm
aW5lVHJhbnNmb3JtIHRlbXA7CiAKICAgICBmbG9hdCBsb2dpY1ggPSBsb2dpY2FsLngoKTsKICAg
ICBmbG9hdCBsb2dpY1kgPSBsb2dpY2FsLnkoKTsKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9SZW5k
ZXJTVkdDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvUmVuZGVyU1ZH
Q29udGFpbmVyLmgJKHJldmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rY2FudmFzL1JlbmRlclNW
R0NvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHNsaWNlKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIEtDYW52YXNNYXRyaXgg
Z2V0QXNwZWN0UmF0aW8oY29uc3QgRmxvYXRSZWN0JiBsb2dpY2FsLCBjb25zdCBGbG9hdFJlY3Qm
IHBoeXNpY2FsKSBjb25zdDsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0QXNwZWN0UmF0aW8oY29u
c3QgRmxvYXRSZWN0JiBsb2dpY2FsLCBjb25zdCBGbG9hdFJlY3QmIHBoeXNpY2FsKSBjb25zdDsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdDsKIAogICAgIGNs
YXNzIFByaXZhdGU7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvUmVuZGVyU1ZHVGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL1JlbmRlclNWR1RleHQuY3BwCShyZXZpc2lvbiAx
NTk1MCkKKysrIFdlYkNvcmUva2NhbnZhcy9SZW5kZXJTVkdUZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKIAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIktDYW52YXNNYXRyaXguaCIKICNpbmNs
dWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNl
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgiCkluZGV4OiBXZWJDb3JlL2tj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAkocmV2aXNpb24gMTU5NTApCisrKyBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTUgKzMwLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIGFrYSB3aGVyZSB0byBk
cmF3Ci1jbGFzcyBLQ2FudmFzTWF0cml4OwogY2xhc3MgS1JlbmRlcmluZ0RldmljZUNvbnRleHQK
IHsKIHB1YmxpYzoKICAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpIHsgfQogICAgIHZpcnR1
YWwgfktSZW5kZXJpbmdEZXZpY2VDb250ZXh0KCkgeyB9CiAKLSAgICB2aXJ0dWFsIEtDYW52YXNN
YXRyaXggY29uY2F0Q1RNKGNvbnN0IEtDYW52YXNNYXRyaXggJndvcmxkTWF0cml4KSA9IDA7Ci0g
ICAgdmlydHVhbCBLQ2FudmFzTWF0cml4IGN0bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgPSAwOworICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGN0bSgpIGNvbnN0ID0gMDsKICAgICAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyUGF0aCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUGF0aChj
b25zdCBLQ2FudmFzUGF0aCopID0gMDsKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCShyZXZpc2lvbiAx
NTk1MCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAiSW50
UG9pbnQuaCIKIAogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgiCi0j
aW5jbHVkZSAiS0NhbnZhc01hdHJpeC5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIktDYW52YXNUcmVlRGVidWcuaCIK
IApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEtDR3JhZGllbnRTdG9wPiBz
dG9wczsKICAgICBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZDsKICAgICBib29s
IGJvdW5kaW5nQm94TW9kZTsKLSAgICBLQ2FudmFzTWF0cml4IGdyYWRpZW50VHJhbnNmb3JtOwor
ICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybTsKICAgICBLQ2FudmFzUmVzb3Vy
Y2VMaXN0ZW5lciAqbGlzdGVuZXI7CiB9OwogCkBAIC0xMjMsMTIgKzEyMywxMiBAQCB2b2lkIEtS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpzZXRCCiAgICAgZC0+Ym91bmRpbmdCb3hNb2Rl
ID0gbW9kZTsKIH0KIAotS0NhbnZhc01hdHJpeCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVu
dDo6Z3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50OjpncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGQtPmdyYWRpZW50VHJhbnNmb3JtOwogfQogCi12b2lkIEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50OjpzZXRHcmFkaWVudFRyYW5zZm9ybShjb25zdCBLQ2FudmFzTWF0cml4ICZtYXQp
Cit2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpzZXRHcmFkaWVudFRyYW5zZm9y
bShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdCkKIHsKICAgICBkLT5ncmFkaWVudFRyYW5zZm9y
bSA9IG1hdDsKIH0KQEAgLTE0MSw4ICsxNDEsOCBAQCBUZXh0U3RyZWFtICZLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJHcmFkaWVuCiAgICAgICAgIHRzIDw8ICJbbWV0aG9kPSIgPDwgc3ByZWFkTWV0aG9k
KCkgPDwgIl0iOyAgICAgICAgCiAgICAgaWYgKCFib3VuZGluZ0JveE1vZGUoKSkKICAgICAgICAg
dHMgPDwgIiBbYm91bmRpbmcgYm94IG1vZGU9IiA8PCBib3VuZGluZ0JveE1vZGUoKSA8PCAiXSI7
Ci0gICAgaWYgKCFncmFkaWVudFRyYW5zZm9ybSgpLm1hdHJpeCgpLmlzSWRlbnRpdHkoKSkKLSAg
ICAgICAgdHMgPDwgIiBbdHJhbnNmb3JtPSIgPDwgZ3JhZGllbnRUcmFuc2Zvcm0oKS5tYXRyaXgo
KSA8PCAiXSI7CisgICAgaWYgKCFncmFkaWVudFRyYW5zZm9ybSgpLmlzSWRlbnRpdHkoKSkKKyAg
ICAgICAgdHMgPDwgIiBbdHJhbnNmb3JtPSIgPDwgZ3JhZGllbnRUcmFuc2Zvcm0oKSA8PCAiXSI7
CiAgICAgCiAgICAgcmV0dXJuIHRzOwogfQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaAkocmV2aXNpb24gMTU5
NTApCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAgaW5saW5lIEtDR3JhZGllbnRT
dG9wIG1ha2VHcmFkaWVudFN0b3AoZgogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kKTsKIAotY2xhc3MgS0NhbnZhc01hdHJpeDsKIGNs
YXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50IDogcHVibGljIEtSZW5kZXJpbmdQYWlu
dFNlcnZlcgogewogcHVibGljOgpAQCAtNjEsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBi
b3VuZGluZ0JveE1vZGUoKSBjb25zdDsKICAgICB2b2lkIHNldEJvdW5kaW5nQm94TW9kZShib29s
IG1vZGUgPSB0cnVlKTsKIAotICAgIEtDYW52YXNNYXRyaXggZ3JhZGllbnRUcmFuc2Zvcm0oKSBj
b25zdDsKLSAgICB2b2lkIHNldEdyYWRpZW50VHJhbnNmb3JtKGNvbnN0IEtDYW52YXNNYXRyaXgg
Jm1hdCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRHcmFkaWVudFRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAg
ICAKICAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXIoKSBjb25zdDsKICAgICB2
b2lkIHNldExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyICpsaXN0ZW5lcik7CkluZGV4
OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVybi5jcHAJKHJldmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIs
MTAgKzIyLDEwIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpZmRlZiBTVkdfU1VQUE9SVAot
I2luY2x1ZGUgIktDYW52YXNNYXRyaXguaCIKICNpbmNsdWRlICJLQ2FudmFzSW1hZ2UuaCIKICNp
bmNsdWRlICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgiCiAKKyNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiS0NhbnZh
c1RyZWVEZWJ1Zy5oIgogCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB+UHJpdmF0ZSgp
IHsgZGVsZXRlIHRpbGU7IH0KIAogICAgIEtDYW52YXNJbWFnZSAqdGlsZTsKLSAgICBLQ2FudmFz
TWF0cml4IHBhdHRlcm5UcmFuc2Zvcm07CisgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFu
c2Zvcm07CiAgICAgRmxvYXRSZWN0IGJib3g7CiAgICAgYm9vbCB1c2VCb3VuZGluZ0JveE1vZGU7
CiAgICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIgKmxpc3RlbmVyOwpAQCAtODgsMTIgKzg4LDEy
IEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0VGkKICAgICBkLT50aWxl
ID0gdGlsZTsKIH0KIAotS0NhbnZhc01hdHJpeCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJu
OjpwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJQYXR0ZXJuOjpwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4g
ZC0+cGF0dGVyblRyYW5zZm9ybTsKIH0KIAotdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0
ZXJuOjpzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0IEtDYW52YXNNYXRyaXggJm1hdCkKK3ZvaWQg
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIG1hdCkKIHsKICAgICBkLT5wYXR0ZXJuVHJhbnNmb3JtID0gbWF0Owog
fQpAQCAtMTE5LDggKzExOSw4IEBAIFRleHRTdHJlYW0gJktSZW5kZXJpbmdQYWludFNlcnZlclBh
dHRlcm4KICAgICAgICAgPDwgIiBbYmJveD0iIDw8IGJib3goKSA8PCAiXSI7CiAgICAgaWYgKCFi
b3VuZGluZ0JveE1vZGUoKSkKICAgICAgICAgdHMgPDwgIiBbYm91bmRpbmcgYm94IG1vZGU9IiA8
PCBib3VuZGluZ0JveE1vZGUoKSA8PCAiXSI7ICAgICAgICAKLSAgICBpZiAoIXBhdHRlcm5UcmFu
c2Zvcm0oKS5tYXRyaXgoKS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHRzIDw8ICIgW3BhdHRlcm4g
dHJhbnNmb3JtPSIgPDwgcGF0dGVyblRyYW5zZm9ybSgpLm1hdHJpeCgpIDw8ICJdIjsKKyAgICBp
ZiAoIXBhdHRlcm5UcmFuc2Zvcm0oKS5pc0lkZW50aXR5KCkpCisgICAgICAgIHRzIDw8ICIgW3Bh
dHRlcm4gdHJhbnNmb3JtPSIgPDwgcGF0dGVyblRyYW5zZm9ybSgpIDw8ICJdIjsKICAgICByZXR1
cm4gdHM7CiB9CiAKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50
U2VydmVyUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvS1Jl
bmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oCShyZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNvcmUv
a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICBLQ2FudmFzSW1hZ2UgKnRpbGUoKSBj
b25zdDsKICAgICB2b2lkIHNldFRpbGUoS0NhbnZhc0ltYWdlICp0aWxlKTsKIAotICAgIEtDYW52
YXNNYXRyaXggcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UGF0dGVyblRy
YW5zZm9ybShjb25zdCBLQ2FudmFzTWF0cml4ICZtYXQpOworICAgIEFmZmluZVRyYW5zZm9ybSBw
YXR0ZXJuVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXR0ZXJuVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIgKmxp
c3RlbmVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMaXN0ZW5lcihLQ2FudmFzUmVzb3VyY2VMaXN0
ZW5lciAqbGlzdGVuZXIpOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0Nh
bnZhc0ZpbHRlclF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCShyZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA2IERhdmUgTWFjTGFjaGxhbiAoZG1hY2xhY2hAbWFjLmNvbSkKKyAqICAgICAgICAgICAg
ICAgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICszMCw3IEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbXBvcnQgIktD
YW52YXNGaWx0ZXJRdWFydHouaCIKIAorI2ltcG9ydCAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0
ICJGb3VuZGF0aW9uRXh0cmFzLmgiCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQkocmV2aXNpb24gMTU5NTApCisrKyBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYg
QWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KKyAqICAgICAgICAgICAgICAgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNCw3ICszNSw2IEBACiAjaW1wb3J0ICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKICNp
bXBvcnQgIktSZW5kZXJpbmdGaWxsUGFpbnRlci5oIgogI2ltcG9ydCAiS1JlbmRlcmluZ1N0cm9r
ZVBhaW50ZXIuaCIKLSNpbXBvcnQgIktDYW52YXNNYXRyaXguaCIKIAogI2ltcG9ydCAiS0NhbnZh
c1BhdGhRdWFydHouaCIKICNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKSW5kZXg6
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHouaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2
aWNlUXVhcnR6LmgJKHJldmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAgICAgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw4ICs0Nyw4IEBA
IHB1YmxpYzoKICAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0eihDR0NvbnRleHRSZWYg
Y29udGV4dCk7CiAgICAgdmlydHVhbCB+S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHooKTsK
ICAgICAKLSAgICB2aXJ0dWFsIEtDYW52YXNNYXRyaXggY29uY2F0Q1RNKGNvbnN0IEtDYW52YXNN
YXRyaXggJndvcmxkTWF0cml4KTsKLSAgICB2aXJ0dWFsIEtDYW52YXNNYXRyaXggY3RtKCkgY29u
c3Q7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGN0bSgpIGNvbnN0OwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclBhdGgoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUGF0
aChjb25zdCBLQ2FudmFzUGF0aCopOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFy
dHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52
YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCShyZXZpc2lvbiAxNTk1
MCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFy
dHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAg
ICAgICAgICAgICAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMzLDYgQEAKICNpbXBvcnQgIktDYW52YXNGaWx0ZXJR
dWFydHouaCIKICNpbXBvcnQgIktDYW52YXNJdGVtUXVhcnR6LmgiCiAjaW1wb3J0ICJLQ2FudmFz
TWFza2VyUXVhcnR6LmgiCi0jaW1wb3J0ICJLQ2FudmFzTWF0cml4LmgiCiAjaW1wb3J0ICJLQ2Fu
dmFzUGF0aFF1YXJ0ei5oIgogI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oIgogI2lt
cG9ydCAiS1JlbmRlcmluZ0ZpbGxQYWludGVyLmgiCkBAIC01NywxOSArNTcsMTcgQEAgS1JlbmRl
cmluZ0RldmljZUNvbnRleHRRdWFydHo6On5LUmVuZGVyaQogICAgIEhhcmRSZWxlYXNlKG1fbnNH
cmFwaGljc0NvbnRleHQpOwogfQogCi1LQ2FudmFzTWF0cml4IEtSZW5kZXJpbmdEZXZpY2VDb250
ZXh0UXVhcnR6Ojpjb25jYXRDVE0oY29uc3QgS0NhbnZhc01hdHJpeCAmd29ybGRNYXRyaXgpCitB
ZmZpbmVUcmFuc2Zvcm0gS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHo6OmNvbmNhdENUTShj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHdvcmxkTWF0cml4KQogewotICAgIEtDYW52YXNNYXRyaXgg
cmV0ID0gY3RtKCk7Ci0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gd01hdHJpeCA9IENHQWZmaW5lVHJh
bnNmb3JtTWFrZSh3b3JsZE1hdHJpeC5hKCksIHdvcmxkTWF0cml4LmIoKSwgd29ybGRNYXRyaXgu
YygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3b3JsZE1hdHJpeC5kKCksIHdvcmxkTWF0cml4LmUoKSwgd29ybGRNYXRyaXguZigpKTsKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0gcmV0ID0gY3RtKCk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gd01h
dHJpeCA9IHdvcmxkTWF0cml4OwogICAgIENHQ29udGV4dENvbmNhdENUTShtX2NnQ29udGV4dCwg
d01hdHJpeCk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAotS0NhbnZhc01hdHJpeCBLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dFF1YXJ0ejo6Y3RtKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dFF1YXJ0ejo6Y3RtKCkgY29uc3QKIHsKLSAgICBDR0FmZmluZVRyYW5z
Zm9ybSBjb250ZXh0Q1RNID0gQ0dDb250ZXh0R2V0Q1RNKG1fY2dDb250ZXh0KTsKLSAgICByZXR1
cm4gS0NhbnZhc01hdHJpeChjb250ZXh0Q1RNLmEsIGNvbnRleHRDVE0uYiwgY29udGV4dENUTS5j
LCBjb250ZXh0Q1RNLmQsIGNvbnRleHRDVE0udHgsIGNvbnRleHRDVE0udHkpOworICAgIHJldHVy
biBDR0NvbnRleHRHZXRDVE0obV9jZ0NvbnRleHQpOwogfQogCiB2b2lkIEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0UXVhcnR6OjpjbGVhclBhdGgoKQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVy
R3JhZGllbnRRdWFydHoubW0JKHJldmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rY2FudmFzL2Rl
dmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgICAgICAy
MDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CisgKiAgICAgICAgICAgICAg
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzYsNyArMzcsNiBAQAogI2ltcG9ydCAiS1JlbmRlcmluZ1BhaW50U2VydmVyLmgi
CiAjaW1wb3J0ICJLUmVuZGVyaW5nRmlsbFBhaW50ZXIuaCIKICNpbXBvcnQgIktSZW5kZXJpbmdT
dHJva2VQYWludGVyLmgiCi0jaW1wb3J0ICJLQ2FudmFzTWF0cml4LmgiCiAjaW1wb3J0ICJLUmVu
ZGVyaW5nRGV2aWNlUXVhcnR6LmgiCiAKICNpbXBvcnQgIktDYW52YXNSZXNvdXJjZXNRdWFydHou
aCIKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
UXVhcnR6CiAgICAgfQogICAgIAogICAgIC8vIGFwcGx5IHRoZSBncmFkaWVudCdzIG93biB0cmFu
c2Zvcm0KLSAgICBDR0FmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSA9IENHQWZmaW5l
VHJhbnNmb3JtKHNlcnZlci0+Z3JhZGllbnRUcmFuc2Zvcm0oKS5tYXRyaXgoKSk7CisgICAgQ0dB
ZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0gPSBzZXJ2ZXItPmdyYWRpZW50VHJhbnNm
b3JtKCk7CiAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGdyYWRpZW50VHJhbnNmb3Jt
KTsKIH0KIApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1Bh
aW50U2VydmVyUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5tbQkocmV2aXNpb24gMTU5NTApCisr
KyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFy
dHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogICAgICAgICAgICAgICAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+
CisgKiAgICAgICAgICAgICAgIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzcsNiBAQAogI2ltcG9ydCAiS1JlbmRl
cmluZ1BhaW50U2VydmVyLmgiCiAjaW1wb3J0ICJLUmVuZGVyaW5nRmlsbFBhaW50ZXIuaCIKICNp
bXBvcnQgIktSZW5kZXJpbmdTdHJva2VQYWludGVyLmgiCi0jaW1wb3J0ICJLQ2FudmFzTWF0cml4
LmgiCiAjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlLmgiCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
QEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdWFy
dHo6CiAgICAgICAgICAgICAKICAgICAvLyBQYXR0ZXJucyBkb24ndCBzZWVtIHRvIHJlc2VwZWN0
IHRoZSBDVE0gdW5sZXNzIHdlIG1ha2UgdGhlbS4uLgogICAgIENHQWZmaW5lVHJhbnNmb3JtIGN0
bSA9IENHQ29udGV4dEdldENUTShjb250ZXh0KTsKLSAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKCkubWF0cml4KCkpOwor
ICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHBhdHRlcm5UcmFuc2Zvcm0oKTsKICAg
ICB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdCh0cmFuc2Zvcm0sIGN0bSk7CiAK
ICAgICBDR1NpemUgcGhhc2UgPSBDR1NpemVNYWtlKGJib3goKS54KCksIGJib3goKS55KCkpOwpJ
bmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0Lm1t
CShyZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0
elN1cHBvcnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogICAgICAgICAgICAgICAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzMwLDYgQEAKICNpbXBvcnQgIlF1YXJ0elN1
cHBvcnQuaCIKIAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJLQ2FudmFz
TWF0cml4LmgiCiAjaW1wb3J0ICJLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgiCiAjaW1wb3J0ICJL
UmVuZGVyaW5nRmlsbFBhaW50ZXIuaCIKICNpbXBvcnQgIktSZW5kZXJpbmdTdHJva2VQYWludGVy
LmgiCkluZGV4OiBXZWJDb3JlL2tzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5oCShy
ZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2lmZGVmIFNWR19TVVBQT1JU
CiAKICNpbmNsdWRlICJEZXByZWNhdGVkVmFsdWVMaXN0LmgiCi0jaW5jbHVkZSA8a2NhbnZhcy9L
Q2FudmFzTWF0cml4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24g
MTU5NTApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAK
ICNpbmNsdWRlIDxrY2FudmFzL1JlbmRlclBhdGguaD4KLSNpbmNsdWRlIDxrY2FudmFzL0tDYW52
YXNNYXRyaXguaD4KIAogI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZHTWF0cml4
LmgiCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmgJKHJldmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5j
bHVkZSAia3N2Zy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRl
IDxrY2FudmFzL0tDYW52YXNNYXRyaXguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlNWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5oIgogCi0jaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzTWF0cml4Lmg+CiAjaW5jbHVkZSA8a2Nh
bnZhcy9LQ2FudmFzUmVzb3VyY2VzLmg+CiAjaW5jbHVkZSA8a2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ0RldmljZS5oPgogI2luY2x1ZGUgPGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50Lmg+CkBAIC0xMTAsOSArMTA5LDkgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIGZsb2F0IF94MiA9IHgyKCktPmJhc2VWYWwoKS0+dmFs
dWUoKSwgX3kyID0geTIoKS0+YmFzZVZhbCgpLT52YWx1ZSgpOwogCiAgICAgS1JlbmRlcmluZ1Bh
aW50U2VydmVyTGluZWFyR3JhZGllbnQgKmdyYWQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCAqPihfZ3JhZCk7Ci0gICAgS0NhbnZhc01hdHJpeCBtYXQ7
CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKICAgICBpZihncmFkaWVudFRyYW5zZm9ybSgpLT5i
YXNlVmFsKCktPm51bWJlck9mSXRlbXMoKSA+IDApCi0gICAgICAgIG1hdCA9IEtDYW52YXNNYXRy
aXgoZ3JhZGllbnRUcmFuc2Zvcm0oKS0+YmFzZVZhbCgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgo
KS0+bWF0cml4KCkpOworICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5iYXNlVmFs
KCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgoKTsKIAogICAgIERlcHJlY2F0ZWRT
dHJpbmcgcmVmID0gU3RyaW5nKGhyZWYoKS0+YmFzZVZhbCgpKS5kZXByZWNhdGVkU3RyaW5nKCk7
CiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpwc2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJCeUlk
KGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTU5NTApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNs
dWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKICNpbmNsdWRlICJLQ2FudmFzQ3JlYXRvci5oIgog
I2luY2x1ZGUgIktDYW52YXNJbWFnZS5oIgotI2luY2x1ZGUgIktDYW52YXNNYXRyaXguaCIKICNp
bmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2
aWNlLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oIgpAQCAtMTY2
LDcgKzE2NSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJlc291cmNlTm90aWZpY2EKICAg
ICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAotdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZXNGcm9tUmVmZXJlbmNlUGF0dGVybihjb25zdCBTVkdQYXR0ZXJuRWxlbWVu
dCogdGFyZ2V0LCBLQ2FudmFzTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4KSBjb25zdAor
dm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZXNGcm9tUmVmZXJlbmNlUGF0dGVy
bihjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCogdGFyZ2V0LCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm1NYXRyaXgpIGNvbnN0CiB7CiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBT
dHJpbmcoaHJlZigpLT5iYXNlVmFsKCkpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIgKnJlZlNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgp
LCByZWYubWlkKDEpKTsKQEAgLTE5Niw3ICsxOTUsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50
OjpmaWxsQXR0cmlidXRlc0ZyCiAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXggPSByZWZQ
YXR0ZXJuLT5wYXR0ZXJuVHJhbnNmb3JtKCk7CiB9CiAKLXZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmRyYXdQYXR0ZXJuQ29udGVudEludG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50KiB0YXJn
ZXQsIGNvbnN0IEludFNpemUmIG5ld1NpemUsIEtDYW52YXNNYXRyaXggcGF0dGVyblRyYW5zZm9y
bU1hdHJpeCkgY29uc3QKK3ZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmRyYXdQYXR0ZXJuQ29udGVu
dEludG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50KiB0YXJnZXQsIGNvbnN0IEludFNpemUm
IG5ld1NpemUsIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4KSBjb25zdAog
ewogICAgIEtSZW5kZXJpbmdEZXZpY2UqIGRldmljZSA9IHJlbmRlcmluZ0RldmljZSgpOwogICAg
IApAQCAtMzM4LDkgKzMzNyw5IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6Om5vdGlmeUF0dHJp
YnV0ZUMKICAgICB1bnNpZ25lZCBzaG9ydCBzYXZlZFBhdHRlcm5Vbml0cyA9IHBhdHRlcm5Vbml0
cygpLT5iYXNlVmFsKCk7CiAgICAgdW5zaWduZWQgc2hvcnQgc2F2ZWRQYXR0ZXJuQ29udGVudFVu
aXRzID0gcGF0dGVybkNvbnRlbnRVbml0cygpLT5iYXNlVmFsKCk7CiAKLSAgICBLQ2FudmFzTWF0
cml4IHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXg7CisgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5U
cmFuc2Zvcm1NYXRyaXg7CiAgICAgaWYgKHBhdHRlcm5UcmFuc2Zvcm0oKS0+YmFzZVZhbCgpLT5u
dW1iZXJPZkl0ZW1zKCkgPiAwKQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4ID0gS0Nh
bnZhc01hdHJpeChwYXR0ZXJuVHJhbnNmb3JtKCktPmJhc2VWYWwoKS0+Y29uc29saWRhdGUoKS0+
bWF0cml4KCktPm1hdHJpeCgpKTsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybU1hdHJpeCA9IHBh
dHRlcm5UcmFuc2Zvcm0oKS0+YmFzZVZhbCgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKS0+bWF0
cml4KCk7CiAKICAgICBmaWxsQXR0cmlidXRlc0Zyb21SZWZlcmVuY2VQYXR0ZXJuKHRhcmdldCwg
cGF0dGVyblRyYW5zZm9ybU1hdHJpeCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDE1OTUwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsOCArOTcsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UgaGVscGVyczoKLSAgICAgICAgdm9pZCBmaWxsQXR0cmlidXRlc0Zyb21SZWZl
cmVuY2VQYXR0ZXJuKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50ICp0YXJnZXQsIEtDYW52YXNNYXRy
aXggJnBhdHRlcm5UcmFuc2Zvcm1NYXRyaXgpIGNvbnN0OwotICAgICAgICB2b2lkIGRyYXdQYXR0
ZXJuQ29udGVudEludG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50ICp0YXJnZXQsIGNvbnN0
IEludFNpemUgJm5ld1NpemUsIEtDYW52YXNNYXRyaXggcGF0dGVyblRyYW5zZm9ybU1hdHJpeCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgZmlsbEF0dHJpYnV0ZXNGcm9tUmVmZXJlbmNlUGF0dGVybihj
b25zdCBTVkdQYXR0ZXJuRWxlbWVudCAqdGFyZ2V0LCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm1NYXRyaXgpIGNvbnN0OworICAgICAgICB2b2lkIGRyYXdQYXR0ZXJuQ29udGVudElu
dG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50ICp0YXJnZXQsIGNvbnN0IEludFNpemUgJm5l
d1NpemUsIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4KSBjb25zdDsKICAg
ICAgICAgdm9pZCBub3RpZnlDbGllbnRzVG9SZXBhaW50KCkgY29uc3Q7CiAgICAgfTsKIApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNTk1MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3QuaCIKIAotI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc01hdHJpeC5oPgogI2luY2x1ZGUgPGtj
YW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaD4KICNpbmNsdWRlIDxrY2FudmFzL2Rldmlj
ZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oPgogCkBAIC0xMzAsOSArMTI5LDkgQEAg
dm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIGZsb2F0IF9meSA9
IGZ5U2V0ID8gZnkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpIDogX2N5OwogCiAgICAgS1JlbmRlcmlu
Z1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQgKmdyYWQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudCAqPihfZ3JhZCk7Ci0gICAgS0NhbnZhc01hdHJpeCBt
YXQ7CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKICAgICBpZihncmFkaWVudFRyYW5zZm9ybSgp
LT5iYXNlVmFsKCktPm51bWJlck9mSXRlbXMoKSA+IDApCi0gICAgICAgIG1hdCA9IEtDYW52YXNN
YXRyaXgoZ3JhZGllbnRUcmFuc2Zvcm0oKS0+YmFzZVZhbCgpLT5jb25zb2xpZGF0ZSgpLT5tYXRy
aXgoKS0+bWF0cml4KCkpOworICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5iYXNl
VmFsKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgoKTsKIAogICAgIERlcHJlY2F0
ZWRTdHJpbmcgcmVmID0gU3RyaW5nKGhyZWYoKS0+YmFzZVZhbCgpKS5kZXByZWNhdGVkU3RyaW5n
KCk7CiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpwc2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJC
eUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwo=
</data>
<flag name="review"
          id="3162"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>