<?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>6716</bug_id>
          
          <creation_ts>2006-01-22 14:10:58 -0800</creation_ts>
          <short_desc>cleanup patch for duplicated code in quartz gradient drawing</short_desc>
          <delta_ts>2006-02-15 21:28:18 -0800</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>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://welcome.linux.org.il/welcome-to-linux-2004.svg</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>SVGHitList</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>7199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29474</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-22 14:10:58 -0800</bug_when>
    <thetext>Gradient appears and disappears in SVG

http://welcome.linux.org.il/welcome-to-linux-2004.svg

We&apos;ll need to reduce this to figure out what&apos;s going wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30206</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-26 16:21:32 -0800</bug_when>
    <thetext>High visibility user issue.  SVGHitList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30396</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-01-28 03:29:01 -0800</bug_when>
    <thetext>does not render with a gradient in either opera or firefox, however, this is not serious enough to be a hitlist / p2 item, so removing the keyword and making p3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30397</commentid>
    <comment_count>3</comment_count>
      <attachid>6042</attachid>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-01-28 03:54:07 -0800</bug_when>
    <thetext>Created attachment 6042
reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30398</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-01-28 03:55:05 -0800</bug_when>
    <thetext>have a reduction now, making hitlist as this shows a major bug in gradient filled text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31625</commentid>
    <comment_count>5</comment_count>
      <attachid>6302</attachid>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-02-06 13:48:28 -0800</bug_when>
    <thetext>Created attachment 6302
cleanup patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31929</commentid>
    <comment_count>6</comment_count>
      <attachid>6302</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-09 00:43:34 -0800</bug_when>
    <thetext>Comment on attachment 6302
cleanup patch

We talked about this on irc.  This can be done cleaner w/o addin a new &quot;BaseClass&quot; class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31930</commentid>
    <comment_count>7</comment_count>
      <attachid>6358</attachid>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-02-09 00:49:09 -0800</bug_when>
    <thetext>Created attachment 6358
cleanup patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31932</commentid>
    <comment_count>8</comment_count>
      <attachid>6358</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-09 01:52:41 -0800</bug_when>
    <thetext>Comment on attachment 6358
cleanup patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32155</commentid>
    <comment_count>9</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-02-11 12:15:05 -0800</bug_when>
    <thetext>Maciej committed this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6042</attachid>
            <date>2006-01-28 03:54:07 -0800</date>
            <delta_ts>2006-01-28 03:54:07 -0800</delta_ts>
            <desc>reduction</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>512</size>
            <attacher name="Alexander Kellett">a</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh
RE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMjAwMTA5MDQvL0VOIgoiaHR0cDov
L3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RURC9zdmcxMC5kdGQiPgo8c3Zn
IGlkPSJzdmcxIiB3aWR0aD0iMjAwJSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
Ij4KICAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkaWVudCI+CiAgICAgIDxzdG9wIG9mZnNldD0i
MCIgc3RvcC1jb2xvcj0icmVkIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0i
Z3JlZW4iLz4KICAgPC9saW5lYXJHcmFkaWVudD4KICAgPHRleHQgZmlsbD0idXJsKCNncmFkaWVu
dCkiIHg9IjEwMCIgeT0iMTAwIj4KICAgICAgPHRzcGFuIGlkPSJ0c3BhbjkxMiI+15HXqNeV15vX
mdedINeU15HXkNeZ150g15zXnNeZ16DXlden16E8L3RzcGFuPgogICA8L3RleHQ+Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6302</attachid>
            <date>2006-02-06 13:48:28 -0800</date>
            <delta_ts>2006-02-09 00:49:09 -0800</delta_ts>
            <desc>cleanup patch</desc>
            <filename>6716-cleanup.patch</filename>
            <type>text/plain</type>
            <size>24226</size>
            <attacher name="Alexander Kellett">a</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHou
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUXVhcnR6LmgJKHJldmlzaW9uIDEyNTU3KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tS
ZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMiArNjks
MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIGZsb2F0IHByZXZpb3VzRGVsdGFJbnZlcnNlOwog
fSBRdWFydHpHcmFkaWVudFN0b3A7CiAKLS8vIERvZXMgbm90IHN1YmNsYXNzIGZyb20gS1JlbmRl
cmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQgaW50ZW50aW9uYWxseS4KKy8vIERvZXMgbm90
IHN1YmNsYXNzIGZyb20gS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgaW50ZW50aW9uYWxs
eS4KIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6IHsKIAogcHVibGlj
OgogICAgIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCk7Ci0gICAgfktSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCk7CisgICAgdmlydHVhbCB+S1JlbmRlcmlu
Z1BhaW50U2VydmVyR3JhZGllbnRRdWFydHooKTsKICAgICAKICAgICB2b2lkIHVwZGF0ZVF1YXJ0
ekdyYWRpZW50U3RvcHNDYWNoZShjb25zdCBWZWN0b3I8S0NHcmFkaWVudFN0b3A+JiBzdG9wcyk7
CiAgICAgdm9pZCB1cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKGNvbnN0IEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIpOwpAQCAtOTAsMjYgKzkwLDQzIEBAIHByb3RlY3RlZDoK
ICAgICBtdXRhYmxlIEtDYW52YXNJbWFnZSAqbV9tYXNrSW1hZ2U7CiB9OwogCi1jbGFzcyBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0eiA6IHB1YmxpYyBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
UXVhcnR6IHsKK2NsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNs
YXNzIDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6IHsKK3B1Ymxp
YzoKKyAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ekJhc2VDbGFzcygpIHsg
fQorICAgIHZpcnR1YWwgfktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNs
YXNzKCkgeyB9CisKKyAgICB2b2lkIGRyYXcoY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQqIHNlcnZlciwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqLCBjb25zdCBSZW5kZXJQYXRo
KiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0OworICAgIGJvb2wgc2V0dXAoY29uc3QgS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQqIHNlcnZlciwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7
CisgICAgdm9pZCB0ZWFyZG93bihjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCog
c2VydmVyLCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9i
amVjdCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdDsKKyAgICB2b2lkIHJlbmRlclBhdGgoY29u
c3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQqIHNlcnZlciwgS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHQqLCBjb25zdCBSZW5kZXJQYXRoKiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0Owor
fTsKKworY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHogOiBw
dWJsaWMgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpCYXNlQ2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCB7CiBwdWJsaWM6CiAgICAgS1JlbmRlcmlu
Z1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHooKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250
ZXh0KiwgY29uc3QgUmVuZGVyUGF0aCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgc2V0dXAoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpSZW5kZXJPYmplY3QqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHRlYXJkb3duKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0OwotcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJQYXRoKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3QgUmVu
ZGVyUGF0aCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVu
ZGVyUGF0aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKKyAgICAgICAgeyBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ekJhc2VDbGFzczo6ZHJhdyh0aGlzLCBjb250ZXh0
LCByZW5kZXJQYXRoLCB0eXBlKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXR1cChLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CisgICAgICAgIHsgcmV0dXJu
IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzOjpzZXR1cCh0aGlz
LCBjb250ZXh0LCByZW5kZXJPYmplY3QsIHR5cGUpOyB9CisgICAgdmlydHVhbCB2b2lkIHRlYXJk
b3duKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKKyAg
ICAgICAgeyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ekJhc2VDbGFzczo6dGVh
cmRvd24odGhpcywgY29udGV4dCwgcmVuZGVyT2JqZWN0LCB0eXBlKTsgfQorICAgIHZpcnR1YWwg
dm9pZCByZW5kZXJQYXRoKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBS
ZW5kZXJQYXRoKiByZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAorICAg
ICAgICB7IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzOjpyZW5k
ZXJQYXRoKHRoaXMsIGNvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOyB9CiB9OwogCi1jbGFzcyBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eiA6IHB1YmxpYyBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRp
ZW50UXVhcnR6IHsKK2NsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVh
cnR6IDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQgewogcHVibGljOgogICAgIEtS
ZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVhcnR6KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCosIGNvbnN0IFJlbmRlclBhdGgqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIHNldHVwKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6UmVuZGVyT2JqZWN0KiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCB0ZWFyZG93bihLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OlJlbmRlck9iamVjdCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdDsKLXByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyUGF0aChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCosIGNv
bnN0IFJlbmRlclBhdGgqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7Ci19OworICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5k
ZXJQYXRoKiByZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAorICAgICAg
ICB7IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzOjpkcmF3KHRo
aXMsIGNvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOyB9CisgICAgdmlydHVhbCBib29sIHNldHVw
KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKKyAgICAg
ICAgeyByZXR1cm4gS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpCYXNlQ2xhc3M6
OnNldHVwKHRoaXMsIGNvbnRleHQsIHJlbmRlck9iamVjdCwgdHlwZSk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdGVhcmRvd24oS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdl
YkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBl
KSBjb25zdAorICAgICAgICB7IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFz
ZUNsYXNzOjp0ZWFyZG93bih0aGlzLCBjb250ZXh0LCByZW5kZXJPYmplY3QsIHR5cGUpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlbmRlclBhdGgoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUp
IGNvbnN0CisgICAgICAgIHsgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpCYXNl
Q2xhc3M6OnJlbmRlclBhdGgodGhpcywgY29udGV4dCwgcmVuZGVyUGF0aCwgdHlwZSk7IH0KK307
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6
L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5t
bQkocmV2aXNpb24gMTI1NTcpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1Bh
aW50U2VydmVyR3JhZGllbnRRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEwNyArNDcs
NiBAQAogI2ltcG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgogCiAKLS8vIE1heWJlIHRoaXMg
c2hvdWxkIGJlIGluIGEgYmFzZSBjbGFzcyBpbnN0ZWFkLi4uCi1zdGF0aWMgS0NhbnZhc0ltYWdl
KiBzZXR1cFNoYWRpbmdXaXRoU3R5bGUoY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnQgKnNlcnZlciwgQ0dTaGFkaW5nUmVmIHNoYWRpbmcsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSwgYm9vbCBwYWludGluZ1Rl
eHQpCi17Ci0gICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqcXVhcnR6RGV2aWNlID0gc3RhdGlj
X2Nhc3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqPihRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNl
KCkpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5jdXJyZW50Q0dD
b250ZXh0KCk7Ci0gICAga2h0bWw6OlJlbmRlclN0eWxlICpyZW5kZXJTdHlsZSA9IHJlbmRlck9i
amVjdC0+c3R5bGUoKTsKLSAgICBBU1NFUlQoY29udGV4dCAhPSBOVUxMKTsKLSAgICAKLSAgICBD
R0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotICAgIC8vIG1ha2UgdGhlIGdyYWRpZW50IGZp
dCBpbiB0aGUgYmJveCBpZiBuZWNlc3NhcnkuCi0gICAgaWYgKHNlcnZlci0+Ym91bmRpbmdCb3hN
b2RlKCkgJiYgcmVuZGVyT2JqZWN0LT5pc1JlbmRlclBhdGgoKSkgeyAvLyBubyBzdXBwb3J0IGZv
ciBib3VuZGluZyBib3hlcyBhcm91bmQgdGV4dCB5ZXQhCi0gICAgICAgIC8vIGdldCB0aGUgb2Jq
ZWN0IGJib3gKLSAgICAgICAgQ0dSZWN0IG9iamVjdEJCb3ggPSBDR0NvbnRleHRHZXRQYXRoQm91
bmRpbmdCb3goY29udGV4dCk7Ci0gICAgICAgIENHUmVjdCBncmFkaWVudEJCb3ggPSBDR1JlY3RN
YWtlKDAsMCwxMDAsMTAwKTsKLSAgICAgICAgLy8gZ2VuZXJhdGUgYSB0cmFuc2Zvcm0gdG8gbWFw
IGJldHdlZW4gdGhlIHR3by4KLSAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRJbnRv
T2JqZWN0QkJveCA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZU1hcEJldHdlZW5SZWN0cyhncmFkaWVu
dEJCb3gsIG9iamVjdEJCb3gpOwotICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwg
Z3JhZGllbnRJbnRvT2JqZWN0QkJveCk7Ci0gICAgfQotICAgIAotICAgIC8vIGFwcGx5IHRoZSBn
cmFkaWVudCdzIG93biB0cmFuc2Zvcm0KLSAgICBDR0FmZmluZVRyYW5zZm9ybSBncmFkaWVudFRy
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtKHNlcnZlci0+Z3JhZGllbnRUcmFuc2Zvcm0oKS5x
bWF0cml4KCkpOwotICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBncmFkaWVudFRyYW5z
Zm9ybSk7Ci0gICAgCi0gICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgcmVuZGVyU3R5bGUt
Pm9wYWNpdHkoKSk7Ci0gICAgCi0gICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYgS1NW
Rzo6S1NWR1BhaW50ZXJGYWN0b3J5Ojppc0ZpbGxlZChyZW5kZXJTdHlsZSkpIHsKLSAgICAgICAg
Q0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLSAgICAgICAgaWYgKHBhaW50aW5nVGV4dCkK
LSAgICAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0
Q2xpcCk7Ci0gICAgfQotCi0gICAgS0NhbnZhc0ltYWdlICptYXNrSW1hZ2UgPSAwOwotICAgIAot
ICAgIGlmICgodHlwZSAmIEFQUExZX1RPX1NUUk9LRSkgJiYgS1NWRzo6S1NWR1BhaW50ZXJGYWN0
b3J5Ojppc1N0cm9rZWQocmVuZGVyU3R5bGUpKSB7Ci0gICAgICAgIENHQ29udGV4dFNhdmVHU3Rh
dGUoY29udGV4dCk7Ci0gICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwg
cmVuZGVyU3R5bGUsIHJlbmRlck9iamVjdCk7IC8vIEZJWE1FOiB0aGlzIHNlZW1zIGxpa2UgdGhl
IHdyb25nIHBsYWNlIGZvciB0aGlzLgotICAgICAgICBpZiAocGFpbnRpbmdUZXh0KSB7Ci0gICAg
ICAgICAgICBtYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxLQ2FudmFzSW1hZ2UgKj4ocXVhcnR6RGV2
aWNlLT5jcmVhdGVSZXNvdXJjZShSU19JTUFHRSkpOwotICAgICAgICAgICAgaW50IHdpZHRoICA9
IDIwNDg7Ci0gICAgICAgICAgICBpbnQgaGVpZ2h0ID0gMjA0ODsgLy8gRklYTUU/Pz8KLSAgICAg
ICAgICAgIEludFNpemUgc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAg
ICBtYXNrSW1hZ2UtPmluaXQoc2l6ZSk7Ci0gICAgICAgICAgICBLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCogbWFza0ltYWdlQ29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y29udGV4dEZvckltYWdlKG1h
c2tJbWFnZSk7Ci0gICAgICAgICAgICBxdWFydHpEZXZpY2UtPnB1c2hDb250ZXh0KG1hc2tJbWFn
ZUNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIG1hc2tDb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHoqPihtYXNrSW1hZ2VDb250ZXh0KS0+
Y2dDb250ZXh0KCk7Ci0gICAgICAgICAgICBjb25zdF9jYXN0PGtodG1sOjpSZW5kZXJPYmplY3Qg
Kj4ocmVuZGVyT2JqZWN0KS0+c3R5bGUoKS0+c2V0Q29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSkp
OwotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKG1hc2tDb250ZXh0LCBr
Q0dUZXh0U3Ryb2tlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWFza0ltYWdlOwot
fQotCi1zdGF0aWMgdm9pZCByZW5kZXJTaGFkaW5nV2l0aFN0eWxlKGNvbnN0IEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50ICpzZXJ2ZXIsIENHU2hhZGluZ1JlZiBzaGFkaW5nLCBjb25zdCBS
ZW5kZXJQYXRoKiBwYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKQotewotICAgIEtSZW5kZXJp
bmdEZXZpY2VRdWFydHogKnF1YXJ0ekRldmljZSA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHogKj4oUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpKTsKLSAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVudENHQ29udGV4dCgpOwotICAgIGtodG1s
OjpSZW5kZXJTdHlsZSAqcmVuZGVyU3R5bGUgPSBwYXRoLT5zdHlsZSgpOwotICAgIEFTU0VSVChj
b250ZXh0ICE9IE5VTEwpOwotICAgIAotICAgIGlmICgodHlwZSAmIEFQUExZX1RPX0ZJTEwpICYm
IEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNGaWxsZWQocmVuZGVyU3R5bGUpKQotICAgICAg
ICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHpIZWxwZXI6OmNsaXBUb0ZpbGxQYXRoKGNvbnRl
eHQsIHBhdGgpOwotICAgIGlmICgodHlwZSAmIEFQUExZX1RPX1NUUk9LRSkgJiYgS1NWRzo6S1NW
R1BhaW50ZXJGYWN0b3J5Ojppc1N0cm9rZWQocmVuZGVyU3R5bGUpKQotICAgICAgICBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJRdWFydHpIZWxwZXI6OmNsaXBUb1N0cm9rZVBhdGgoY29udGV4dCwgcGF0
aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlYXJkb3duU2hhZGluZ1dpdGhTdHlsZShjb25zdCBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCAqc2VydmVyLCBDR1NoYWRpbmdSZWYgc2hhZGluZywg
Y29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCAqcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlw
ZSB0eXBlLCBib29sIHBhaW50aW5nVGV4dCwgS0NhbnZhc0ltYWdlICptYXNrSW1hZ2UpCi17Ci0g
ICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqcXVhcnR6RGV2aWNlID0gc3RhdGljX2Nhc3Q8S1Jl
bmRlcmluZ0RldmljZVF1YXJ0eiAqPihRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCkpOwotICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5jdXJyZW50Q0dDb250ZXh0KCk7
Ci0gICAga2h0bWw6OlJlbmRlclN0eWxlICpyZW5kZXJTdHlsZSA9IHJlbmRlck9iamVjdC0+c3R5
bGUoKTsKLSAgICBBU1NFUlQoY29udGV4dCAhPSBOVUxMKTsKLSAgICAKLSAgICBpZiAoKHR5cGUg
JiBBUFBMWV9UT19GSUxMKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzRmlsbGVkKHJl
bmRlclN0eWxlKSkgewotICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBzaGFk
aW5nKTsKLSAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fU1RST0tFKSAmJiBLU1ZHOjpLU1ZHUGFpbnRl
ckZhY3Rvcnk6OmlzU3Ryb2tlZChyZW5kZXJTdHlsZSkpIHsKLSAgICAgICAgaWYgKHBhaW50aW5n
VGV4dCkgewotICAgICAgICAgICAgaW50IHdpZHRoICA9IDIwNDg7Ci0gICAgICAgICAgICBpbnQg
aGVpZ2h0ID0gMjA0ODsgLy8gRklYTUU/Pz8gU0VFIEFCT1ZFCi0gICAgICAgICAgICBkZWxldGUg
cXVhcnR6RGV2aWNlLT5wb3BDb250ZXh0KCk7Ci0gICAgICAgICAgICBjb250ZXh0ID0gcXVhcnR6
RGV2aWNlLT5jdXJyZW50Q0dDb250ZXh0KCk7Ci0gICAgICAgICAgICB2b2lkICppbWFnZUJ1ZmZl
ciA9IGZhc3RNYWxsb2Mod2lkdGggKiBoZWlnaHQpOwotICAgICAgICAgICAgQ0dDb2xvclNwYWNl
UmVmIGdyYXlDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAg
ICAgICAgICAgQ0dDb250ZXh0UmVmIGdyYXlzY2FsZUNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRD
cmVhdGUoaW1hZ2VCdWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHdpZHRoLCBncmF5Q29sb3JTcGFj
ZSwga0NHSW1hZ2VBbHBoYU5vbmUpOwotICAgICAgICAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShn
cmF5Q29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBLQ2FudmFzSW1hZ2VRdWFydHogKnFNYXNrSW1h
Z2UgPSBzdGF0aWNfY2FzdDxLQ2FudmFzSW1hZ2VRdWFydHogKj4obWFza0ltYWdlKTsKLSAgICAg
ICAgICAgIENHQ29udGV4dERyYXdMYXllckF0UG9pbnQoZ3JheXNjYWxlQ29udGV4dCwgQ0dQb2lu
dE1ha2UoMCwgMCksIHFNYXNrSW1hZ2UtPmNnTGF5ZXIoKSk7Ci0gICAgICAgICAgICBDR0ltYWdl
UmVmIGdyYXlzY2FsZUltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JheXNjYWxl
Q29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRleHQsIENHUmVj
dE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIGdyYXlzY2FsZUltYWdlKTsKLSAgICAgICAgICAg
IENHQ29udGV4dFJlbGVhc2UoZ3JheXNjYWxlQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0ltYWdl
UmVsZWFzZShncmF5c2NhbGVJbWFnZSk7Ci0gICAgICAgIH0KLSAgICAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcoY29udGV4dCwgc2hhZGluZyk7Ci0gICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7Ci0gICAgfQotICAgIAotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29u
dGV4dCk7Ci19Ci0KIC8vdHlwZWRlZiB2ZWN0b3IgdW5zaWduZWQgY2hhciB2VUludDg7CiAvL3Zl
Y3RvciBmbG9hdCB2ZWNfbG9hZEFuZFNwbGF0U2NhbGFyKCBmbG9hdCAqc2NhbGFyUHRyICkKIC8v
ewpAQCAtMjg0LDIwICsxODMsMTMgQEAgdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVu
dFF1YXJ0egogICAgIGlmICghbV9zdG9wc0NvdW50KQogICAgICAgICBOU0xvZyhAIldhcm5pbmcs
IG5vIGdyYWRpZW50IHN0b3BzLCBncmFkaWVudCAoJXApIHdpbGwgYmUgYWxsIGJsYWNrISIsIHRo
aXMpOwogICAgIAotICAgIGlmIChzZXJ2ZXItPnR5cGUoKSA9PSBQU19SQURJQUxfR1JBRElFTlQp
Ci0gICAgeworICAgIGlmIChtX3NoYWRpbmdDYWNoZSkKKyAgICAgICAgQ0dTaGFkaW5nUmVsZWFz
ZShtX3NoYWRpbmdDYWNoZSk7CisgICAgaWYgKHNlcnZlci0+dHlwZSgpID09IFBTX1JBRElBTF9H
UkFESUVOVCkgewogICAgICAgICBjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFk
aWVudFF1YXJ0eiAqcmFkaWFsID0gc3RhdGljX2Nhc3Q8Y29uc3QgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUmFkaWFsR3JhZGllbnRRdWFydHogKj4oc2VydmVyKTsKLSAgICAgICAgaWYgKG1fc2hhZGlu
Z0NhY2hlKQotICAgICAgICAgICAgQ0dTaGFkaW5nUmVsZWFzZShtX3NoYWRpbmdDYWNoZSk7Ci0g
ICAgICAgIC8vIGFjdHVhbGx5IG1ha2UgdGhlIGdyYWRpZW50CiAgICAgICAgIG1fc2hhZGluZ0Nh
Y2hlID0gQ0dTaGFkaW5nUmVmRm9yUmFkaWFsR3JhZGllbnQocmFkaWFsKTsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAoc2VydmVyLT50eXBlKCkgPT0gUFNfTElORUFSX0dSQURJRU5UKQotICAgIHsKKyAg
ICB9IGVsc2UgaWYgKHNlcnZlci0+dHlwZSgpID09IFBTX0xJTkVBUl9HUkFESUVOVCkgewogICAg
ICAgICBjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0eiAqbGlu
ZWFyID0gc3RhdGljX2Nhc3Q8Y29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGll
bnRRdWFydHogKj4oc2VydmVyKTsKLSAgICAgICAgaWYgKG1fc2hhZGluZ0NhY2hlKQotICAgICAg
ICAgICAgQ0dTaGFkaW5nUmVsZWFzZShtX3NoYWRpbmdDYWNoZSk7Ci0gICAgICAgIC8vIGFjdHVh
bGx5IG1ha2UgdGhlIGdyYWRpZW50CiAgICAgICAgIG1fc2hhZGluZ0NhY2hlID0gQ0dTaGFkaW5n
UmVmRm9yTGluZWFyR3JhZGllbnQobGluZWFyKTsKICAgICB9CiB9CkBAIC0zNDAsNzIgKzIzMiwx
MjMgQEAgdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudAogICAgIEtSZW5k
ZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50OjppbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQg
S1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHo6OmRyYXcoS1JlbmRlcmlu
Z0RldmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHBhdGgs
IEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Cit2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzOjpkcmF3KGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50KiBzZXJ2ZXIsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250
ZXh0LCBjb25zdCBSZW5kZXJQYXRoKiBwYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25z
dAogewotICAgIGlmICghc2V0dXAocmVuZGVyaW5nQ29udGV4dCwgcGF0aCwgdHlwZSkpCisgICAg
aWYgKCFzZXR1cChzZXJ2ZXIsIHJlbmRlcmluZ0NvbnRleHQsIHBhdGgsIHR5cGUpKQogICAgICAg
ICByZXR1cm47Ci0gICAgcmVuZGVyUGF0aChyZW5kZXJpbmdDb250ZXh0LCBwYXRoLCB0eXBlKTsK
LSAgICB0ZWFyZG93bihyZW5kZXJpbmdDb250ZXh0LCBwYXRoLCB0eXBlKTsKKyAgICByZW5kZXJQ
YXRoKHNlcnZlciwgcmVuZGVyaW5nQ29udGV4dCwgcGF0aCwgdHlwZSk7CisgICAgdGVhcmRvd24o
c2VydmVyLCByZW5kZXJpbmdDb250ZXh0LCBwYXRoLCB0eXBlKTsKIH0KIAotYm9vbCBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6c2V0dXAoS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKK2Jvb2wgS1JlbmRlcmlu
Z1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpCYXNlQ2xhc3M6OnNldHVwKGNvbnN0IEtSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBy
ZW5kZXJpbmdDb250ZXh0LCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qs
IEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYobGlzdGVuZXIoKSkgLy8g
dGhpcyBzZWVtcyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBi
YXNlY2xhc3MuIC0tIGVjcyA4LzYvMDUKLSAgICAgICAgbGlzdGVuZXIoKS0+cmVzb3VyY2VOb3Rp
ZmljYXRpb24oKTsKKyAgICBpZiAoc2VydmVyLT5saXN0ZW5lcigpKSAvLyB0aGlzIHNlZW1zIGxp
a2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEgY29tbW9uIGJhc2VjbGFzcy4gLS0g
ZWNzIDgvNi8wNQorICAgICAgICBzZXJ2ZXItPmxpc3RlbmVyKCktPnJlc291cmNlTm90aWZpY2F0
aW9uKCk7CisgICAgCisgICAgZGVsZXRlIG1fbWFza0ltYWdlOworICAgIG1fbWFza0ltYWdlID0g
MDsKIAogICAgIC8vIEZJWE1FOiB0b3RhbCBjb25zdCBIQUNLIQogICAgIC8vIFdlIG5lZWQgYSBo
b29rIHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBncmFkaWVudCBnZXRzIHVwZGF0ZWQsIGJlZm9yZSBk
cmF3bi4KICAgICBpZiAoIW1fc2hhZGluZ0NhY2hlKQotICAgICAgICBjb25zdF9jYXN0PEtSZW5k
ZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6ICo+KHRoaXMpLT51cGRhdGVRdWFy
dHpHcmFkaWVudENhY2hlKHRoaXMpOwotCi0gICAgZGVsZXRlIG1fbWFza0ltYWdlOwotICAgIG1f
bWFza0ltYWdlID0gc2V0dXBTaGFkaW5nV2l0aFN0eWxlKHRoaXMsIG1fc2hhZGluZ0NhY2hlLCBy
ZW5kZXJPYmplY3QsIHR5cGUsIGlzUGFpbnRpbmdUZXh0KCkpOworICAgICAgICBjb25zdF9jYXN0
PEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzKj4odGhpcyktPnVw
ZGF0ZVF1YXJ0ekdyYWRpZW50Q2FjaGUoc2VydmVyKTsKKyAgICAKKyAgICBLUmVuZGVyaW5nRGV2
aWNlUXVhcnR6KiBxdWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVh
cnR6Kj4oUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpKTsKKyAgICBDR0NvbnRleHRSZWYgY29u
dGV4dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVudENHQ29udGV4dCgpOworICAgIGtodG1sOjpSZW5k
ZXJTdHlsZSogcmVuZGVyU3R5bGUgPSByZW5kZXJPYmplY3QtPnN0eWxlKCk7CisgICAgQVNTRVJU
KGNvbnRleHQgIT0gTlVMTCk7CisgICAgCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0
KTsKKyAgICAvLyBtYWtlIHRoZSBncmFkaWVudCBmaXQgaW4gdGhlIGJib3ggaWYgbmVjZXNzYXJ5
LgorICAgIGlmIChzZXJ2ZXItPmJvdW5kaW5nQm94TW9kZSgpICYmIHJlbmRlck9iamVjdC0+aXNS
ZW5kZXJQYXRoKCkpIHsgLy8gbm8gc3VwcG9ydCBmb3IgYm91bmRpbmcgYm94ZXMgYXJvdW5kIHRl
eHQgeWV0IQorICAgICAgICAvLyBnZXQgdGhlIG9iamVjdCBiYm94CisgICAgICAgIENHUmVjdCBv
YmplY3RCQm94ID0gQ0dDb250ZXh0R2V0UGF0aEJvdW5kaW5nQm94KGNvbnRleHQpOworICAgICAg
ICBDR1JlY3QgZ3JhZGllbnRCQm94ID0gQ0dSZWN0TWFrZSgwLDAsMTAwLDEwMCk7IC8vIEZJWE1F
IC0gdGhpcyBpcyBhcmJpdHJhcnkgbm8/CisgICAgICAgIC8vIGdlbmVyYXRlIGEgdHJhbnNmb3Jt
IHRvIG1hcCBiZXR3ZWVuIHRoZSB0d28uCisgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGdyYWRp
ZW50SW50b09iamVjdEJCb3ggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVuUmVjdHMo
Z3JhZGllbnRCQm94LCBvYmplY3RCQm94KTsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNv
bnRleHQsIGdyYWRpZW50SW50b09iamVjdEJCb3gpOworICAgIH0KKyAgICAKKyAgICAvLyBhcHBs
eSB0aGUgZ3JhZGllbnQncyBvd24gdHJhbnNmb3JtCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gZ3Jh
ZGllbnRUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybShzZXJ2ZXItPmdyYWRpZW50VHJhbnNm
b3JtKCkucW1hdHJpeCgpKTsKKyAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgZ3JhZGll
bnRUcmFuc2Zvcm0pOworICAgIAorICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHJlbmRl
clN0eWxlLT5vcGFjaXR5KCkpOworICAgIAorICAgIGlmICgodHlwZSAmIEFQUExZX1RPX0ZJTEwp
ICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNGaWxsZWQocmVuZGVyU3R5bGUpKSB7Cisg
ICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgICAgIGlmIChzZXJ2ZXIt
PmlzUGFpbnRpbmdUZXh0KCkpCisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01v
ZGUoY29udGV4dCwga0NHVGV4dENsaXApOworICAgIH0KIAorICAgIGlmICgodHlwZSAmIEFQUExZ
X1RPX1NUUk9LRSkgJiYgS1NWRzo6S1NWR1BhaW50ZXJGYWN0b3J5Ojppc1N0cm9rZWQocmVuZGVy
U3R5bGUpKSB7CisgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgICAg
IGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgcmVuZGVyU3R5bGUsIHJlbmRlck9i
amVjdCk7IC8vIEZJWE1FOiB0aGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHBsYWNlIGZvciB0aGlz
LgorICAgICAgICBpZiAoc2VydmVyLT5pc1BhaW50aW5nVGV4dCgpKSB7CisgICAgICAgICAgICBt
X21hc2tJbWFnZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZSAqPihxdWFydHpEZXZpY2UtPmNy
ZWF0ZVJlc291cmNlKFJTX0lNQUdFKSk7CisgICAgICAgICAgICBpbnQgd2lkdGggID0gMjA0ODsK
KyAgICAgICAgICAgIGludCBoZWlnaHQgPSAyMDQ4OyAvLyBGSVhNRT8/PworICAgICAgICAgICAg
SW50U2l6ZSBzaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIG1fbWFz
a0ltYWdlLT5pbml0KHNpemUpOworICAgICAgICAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQq
IG1hc2tJbWFnZUNvbnRleHQgPSBxdWFydHpEZXZpY2UtPmNvbnRleHRGb3JJbWFnZShtX21hc2tJ
bWFnZSk7CisgICAgICAgICAgICBxdWFydHpEZXZpY2UtPnB1c2hDb250ZXh0KG1hc2tJbWFnZUNv
bnRleHQpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVmIG1hc2tDb250ZXh0ID0gc3RhdGljX2Nh
c3Q8S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHoqPihtYXNrSW1hZ2VDb250ZXh0KS0+Y2dD
b250ZXh0KCk7CisgICAgICAgICAgICBjb25zdF9jYXN0PGtodG1sOjpSZW5kZXJPYmplY3QqPihy
ZW5kZXJPYmplY3QpLT5zdHlsZSgpLT5zZXRDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUobWFza0NvbnRleHQsIGtDR1Rl
eHRTdHJva2UpOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6OjpyZW5kZXJQYXRoKEtS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBSZW5kZXJQYXRo
KiBwYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAordm9pZCBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ekJhc2VDbGFzczo6cmVuZGVyUGF0aChjb25zdCBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogc2VydmVyLCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCog
cmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcGF0aCwgS0NQYWludFRhcmdldFR5
cGUgdHlwZSkgY29uc3QKIHsgICAgCi0gICAgcmVuZGVyU2hhZGluZ1dpdGhTdHlsZSh0aGlzLCBt
X3NoYWRpbmdDYWNoZSwgcGF0aCwgdHlwZSk7CisgICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0eiog
cXVhcnR6RGV2aWNlID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eio+KFFQYWlu
dGVyOjpyZW5kZXJpbmdEZXZpY2UoKSk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBxdWFy
dHpEZXZpY2UtPmN1cnJlbnRDR0NvbnRleHQoKTsKKyAgICBraHRtbDo6UmVuZGVyU3R5bGUqIHJl
bmRlclN0eWxlID0gcGF0aC0+c3R5bGUoKTsKKyAgICBBU1NFUlQoY29udGV4dCAhPSBOVUxMKTsK
KyAgICAKKyAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19GSUxMKSAmJiBLU1ZHOjpLU1ZHUGFpbnRl
ckZhY3Rvcnk6OmlzRmlsbGVkKHJlbmRlclN0eWxlKSkKKyAgICAgICAgS1JlbmRlcmluZ1BhaW50
U2VydmVyUXVhcnR6SGVscGVyOjpjbGlwVG9GaWxsUGF0aChjb250ZXh0LCBwYXRoKTsKKyAgICBp
ZiAoKHR5cGUgJiBBUFBMWV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6
aXNTdHJva2VkKHJlbmRlclN0eWxlKSkKKyAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUXVh
cnR6SGVscGVyOjpjbGlwVG9TdHJva2VQYXRoKGNvbnRleHQsIHBhdGgpOwogfQogCi12b2lkIEtS
ZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6Ojp0ZWFyZG93bihLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAordm9pZCBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ekJhc2VDbGFzczo6dGVhcmRvd24oY29u
c3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgKnNlcnZlciwgS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsgCi0gICAgdGVhcmRv
d25TaGFkaW5nV2l0aFN0eWxlKHRoaXMsIG1fc2hhZGluZ0NhY2hlLCByZW5kZXJPYmplY3QsIHR5
cGUsIGlzUGFpbnRpbmdUZXh0KCksIG1fbWFza0ltYWdlKTsKLX0KLQotdm9pZCBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcGF0aCwgS0NQYWludFRh
cmdldFR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICBpZiAoIXNldHVwKHJlbmRlcmluZ0NvbnRleHQs
IHBhdGgsIHR5cGUpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVuZGVyUGF0aChyZW5kZXJpbmdD
b250ZXh0LCBwYXRoLCB0eXBlKTsKLSAgICB0ZWFyZG93bihyZW5kZXJpbmdDb250ZXh0LCBwYXRo
LCB0eXBlKTsKLX0KLQotYm9vbCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1
YXJ0ejo6c2V0dXAoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNv
bnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUg
dHlwZSkgY29uc3QKLXsKLSAgICBpZihsaXN0ZW5lcigpKSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFk
IGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEgY29tbW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgv
Ni8wNQotICAgICAgICBsaXN0ZW5lcigpLT5yZXNvdXJjZU5vdGlmaWNhdGlvbigpOwotICAgICAg
ICAKLSAgICAvLyBGSVhNRTogdG90YWwgY29uc3QgSEFDSyEKLSAgICAvLyBXZSBuZWVkIGEgaG9v
ayB0byBjYWxsIHRoaXMgd2hlbiB0aGUgZ3JhZGllbnQgZ2V0cyB1cGRhdGVkLCBiZWZvcmUgZHJh
d24uCi0gICAgaWYgKCFtX3NoYWRpbmdDYWNoZSkKLSAgICAgICAgY29uc3RfY2FzdDxLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eiAqPih0aGlzKS0+dXBkYXRlUXVhcnR6
R3JhZGllbnRDYWNoZSh0aGlzKTsKLQotICAgIGRlbGV0ZSBtX21hc2tJbWFnZTsKLSAgICBtX21h
c2tJbWFnZSA9IHNldHVwU2hhZGluZ1dpdGhTdHlsZSh0aGlzLCBtX3NoYWRpbmdDYWNoZSwgcmVu
ZGVyT2JqZWN0LCB0eXBlLCBpc1BhaW50aW5nVGV4dCgpKTsKLSAgICAgICAgCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFy
dHo6OnJlbmRlclBhdGgoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQs
IGNvbnN0IFJlbmRlclBhdGgqIHBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Ci17
Ci0gICAgcmVuZGVyU2hhZGluZ1dpdGhTdHlsZSh0aGlzLCBtX3NoYWRpbmdDYWNoZSwgcGF0aCwg
dHlwZSk7CisgICAgQ0dTaGFkaW5nUmVmIHNoYWRpbmcgPSBtX3NoYWRpbmdDYWNoZTsKKyAgICBL
Q2FudmFzSW1hZ2UqIG1hc2tJbWFnZSA9IG1fbWFza0ltYWdlOworICAgIEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHoqIHF1YXJ0ekRldmljZSA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VRdWFy
dHoqPihRUGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCkpOworICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcXVhcnR6RGV2aWNlLT5jdXJyZW50Q0dDb250ZXh0KCk7CisgICAga2h0bWw6OlJlbmRl
clN0eWxlKiByZW5kZXJTdHlsZSA9IHJlbmRlck9iamVjdC0+c3R5bGUoKTsKKyAgICBBU1NFUlQo
Y29udGV4dCAhPSBOVUxMKTsKKyAgICAKKyAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19GSUxMKSAm
JiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzRmlsbGVkKHJlbmRlclN0eWxlKSkgeworICAg
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBzaGFkaW5nKTsKKyAgICAgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICB9CisgICAgCisgICAgaWYgKCh0eXBl
ICYgQVBQTFlfVE9fU1RST0tFKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzU3Ryb2tl
ZChyZW5kZXJTdHlsZSkpIHsKKyAgICAgICAgaWYgKHNlcnZlci0+aXNQYWludGluZ1RleHQoKSkg
eworICAgICAgICAgICAgaW50IHdpZHRoICA9IDIwNDg7CisgICAgICAgICAgICBpbnQgaGVpZ2h0
ID0gMjA0ODsgLy8gRklYTUU/Pz8gU0VFIEFCT1ZFCisgICAgICAgICAgICBkZWxldGUgcXVhcnR6
RGV2aWNlLT5wb3BDb250ZXh0KCk7CisgICAgICAgICAgICBjb250ZXh0ID0gcXVhcnR6RGV2aWNl
LT5jdXJyZW50Q0dDb250ZXh0KCk7CisgICAgICAgICAgICB2b2lkKiBpbWFnZUJ1ZmZlciA9IGZh
c3RNYWxsb2Mod2lkdGggKiBoZWlnaHQpOworICAgICAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGdy
YXlDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOworICAgICAgICAg
ICAgQ0dDb250ZXh0UmVmIGdyYXlzY2FsZUNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUo
aW1hZ2VCdWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHdpZHRoLCBncmF5Q29sb3JTcGFjZSwga0NH
SW1hZ2VBbHBoYU5vbmUpOworICAgICAgICAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShncmF5Q29s
b3JTcGFjZSk7CisgICAgICAgICAgICBLQ2FudmFzSW1hZ2VRdWFydHoqIHFNYXNrSW1hZ2UgPSBz
dGF0aWNfY2FzdDxLQ2FudmFzSW1hZ2VRdWFydHogKj4obWFza0ltYWdlKTsKKyAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckF0UG9pbnQoZ3JheXNjYWxlQ29udGV4dCwgQ0dQb2ludE1ha2Uo
MCwgMCksIHFNYXNrSW1hZ2UtPmNnTGF5ZXIoKSk7CisgICAgICAgICAgICBDR0ltYWdlUmVmIGdy
YXlzY2FsZUltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZ3JheXNjYWxlQ29udGV4
dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRleHQsIENHUmVjdE1ha2Uo
MCwgMCwgd2lkdGgsIGhlaWdodCksIGdyYXlzY2FsZUltYWdlKTsKKyAgICAgICAgICAgIENHQ29u
dGV4dFJlbGVhc2UoZ3JheXNjYWxlQ29udGV4dCk7CisgICAgICAgICAgICBDR0ltYWdlUmVsZWFz
ZShncmF5c2NhbGVJbWFnZSk7CisgICAgICAgIH0KKyAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcoY29udGV4dCwgc2hhZGluZyk7CisgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29u
dGV4dCk7CisgICAgfQorICAgIAorICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7
CiB9CiAKLXZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OnRl
YXJkb3duKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBr
aHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUp
IGNvbnN0Ci17Ci0gICAgdGVhcmRvd25TaGFkaW5nV2l0aFN0eWxlKHRoaXMsIG1fc2hhZGluZ0Nh
Y2hlLCByZW5kZXJPYmplY3QsIHR5cGUsIGlzUGFpbnRpbmdUZXh0KCksIG1fbWFza0ltYWdlKTsK
LX0KICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCkluZGV4OiBrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIuaAkocmV2aXNpb24gMTI1NTcpCisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQYWludGluZ1RleHQoYm9vbCBwYWludGluZ1RleHQpIHsgbV9wYWludGlu
Z1RleHQgPSBwYWludGluZ1RleHQ7IH0KIAogICAgIHZpcnR1YWwgUVRleHRTdHJlYW0gJmV4dGVy
bmFsUmVwcmVzZW50YXRpb24oUVRleHRTdHJlYW0gJikgY29uc3QgPSAwOwotcHJvdGVjdGVkOgor
CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlclBhdGgoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqLCBj
b25zdCBSZW5kZXJQYXRoKiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0ID0gMDsKIHByaXZhdGU6
CiAgICAgY29uc3QgUmVuZGVyUGF0aCAqbV9hY3RpdmVDbGllbnQ7CkluZGV4OiBDaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjU1NykKKysrIENoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDA2LTAyLTA2ICBBbGV4YW5kZXIgS2Vs
bGV0dCAgPGx5cGFub3ZAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIEZhY3RvciBvdXQgY29tbW9uIHBhcnRzIG9mIExpbmVh
ci9SYWRpYWwgR3JhZGllbnRRdWFydHogCisgICAgICAgIGludG8gS1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnRRdWFydHpCYXNlQ2xhc3MuCisKKyAgICAgICAgQ2xlYW51cCBvbmx5LCBubyBs
YXlvdXQgdGVzdHMgbmVlZGVkIG9yIGFmZmVjdGVkLgorCisgICAgICAgICoga2NhbnZhcy9kZXZp
Y2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmg6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tOgorICAgICAgICAoS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnVwZGF0ZVF1YXJ0ekdyYWRpZW50Q2Fj
aGUpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpCYXNlQ2xh
c3M6OmRyYXcpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpC
YXNlQ2xhc3M6OnNldHVwKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
UXVhcnR6QmFzZUNsYXNzOjpyZW5kZXJQYXRoKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzOjp0ZWFyZG93bik6CisgICAgICAgICoga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oOgorICAgICAgICAo
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHpCYXNlQ2xhc3M6OktSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzKToKKyAgICAgICAgKEtSZW5kZXJpbmdQ
YWludFNlcnZlckdyYWRpZW50UXVhcnR6QmFzZUNsYXNzOjp+S1JlbmRlcmluZ1BhaW50U2VydmVy
R3JhZGllbnRRdWFydHpCYXNlQ2xhc3MpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVy
TGluZWFyR3JhZGllbnRRdWFydHo6OmRyYXcpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2Vy
dmVyTGluZWFyR3JhZGllbnRRdWFydHo6OnNldHVwKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWlu
dFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6Ojp0ZWFyZG93bik6CisgICAgICAgIChLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6cmVuZGVyUGF0aCk6CisgICAgICAg
IChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0ejo6ZHJhdyk6CisgICAg
ICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0ejo6c2V0dXApOgor
ICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OnRlYXJk
b3duKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVhcnR6
OjpyZW5kZXJQYXRoKToKKwogMjAwNi0wMi0wMyAgQW5kcmV3IFdlbGxpbmd0b24gIDxwcm90b25A
d2lyZXRhcHBlZC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYW5kIHR3ZWFrZWQgYnkgRGFyaW4u
Cg==
</data>
<flag name="review"
          id="1533"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6358</attachid>
            <date>2006-02-09 00:49:09 -0800</date>
            <delta_ts>2006-02-09 01:52:41 -0800</delta_ts>
            <desc>cleanup patch</desc>
            <filename>6716-cleanup.patch</filename>
            <type>text/plain</type>
            <size>23684</size>
            <attacher name="Alexander Kellett">a</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHou
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUXVhcnR6LmgJKHJldmlzaW9uIDEyNTU3KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tS
ZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNiArNjks
MjEgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIGZsb2F0IHByZXZpb3VzRGVsdGFJbnZlcnNlOwog
fSBRdWFydHpHcmFkaWVudFN0b3A7CiAKLS8vIERvZXMgbm90IHN1YmNsYXNzIGZyb20gS1JlbmRl
cmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQgaW50ZW50aW9uYWxseS4KKy8vIERvZXMgbm90
IHN1YmNsYXNzIGZyb20gS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgaW50ZW50aW9uYWxs
eS4KIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6IHsKIAogcHVibGlj
OgogICAgIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCk7Ci0gICAgfktSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCk7CisgICAgdmlydHVhbCB+S1JlbmRlcmlu
Z1BhaW50U2VydmVyR3JhZGllbnRRdWFydHooKTsKICAgICAKICAgICB2b2lkIHVwZGF0ZVF1YXJ0
ekdyYWRpZW50U3RvcHNDYWNoZShjb25zdCBWZWN0b3I8S0NHcmFkaWVudFN0b3A+JiBzdG9wcyk7
CiAgICAgdm9pZCB1cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKGNvbnN0IEtSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIpOwogCisgICAgdm9pZCBkcmF3KGNvbnN0IEtSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0Kiwg
Y29uc3QgUmVuZGVyUGF0aCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdDsKKyAgICBib29sIHNl
dHVwKGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIsIEtSZW5kZXJp
bmdEZXZpY2VDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiwgS0NQYWludFRh
cmdldFR5cGUpIGNvbnN0OworICAgIHZvaWQgdGVhcmRvd24oY29uc3QgS1JlbmRlcmluZ1BhaW50
U2VydmVyR3JhZGllbnQqIHNlcnZlciwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7CisgICAgdm9p
ZCByZW5kZXJQYXRoKGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50KiBzZXJ2ZXIs
IEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3QgUmVuZGVyUGF0aCosIEtDUGFpbnRUYXJn
ZXRUeXBlKSBjb25zdDsKKwogcHVibGljOgogICAgIC8vIGR1ZSB0byBjIGZ1bmN0aW9ucwogICAg
IFF1YXJ0ekdyYWRpZW50U3RvcCAqbV9zdG9wc0NhY2hlOwpAQCAtOTAsMjYgKzk1LDMyIEBAIHBy
b3RlY3RlZDoKICAgICBtdXRhYmxlIEtDYW52YXNJbWFnZSAqbV9tYXNrSW1hZ2U7CiB9OwogCi1j
bGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0eiA6IHB1YmxpYyBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50UXVhcnR6IHsKK2NsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRp
ZW50UXVhcnR6IDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
S1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQgewogcHVibGljOgogICAgIEtSZW5k
ZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6KCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dCosIGNvbnN0IFJlbmRlclBhdGgqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIHNldHVwKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0KiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCB0ZWFyZG93bihLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OlJlbmRlck9iamVjdCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdDsKLXByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyUGF0aChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCosIGNvbnN0
IFJlbmRlclBhdGgqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGRyYXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgq
IHJlbmRlclBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CisgICAgICAgIHsgS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OmRyYXcodGhpcywgY29udGV4dCwgcmVu
ZGVyUGF0aCwgdHlwZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0dXAoS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2Jq
ZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAorICAgICAgICB7IHJldHVybiBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6c2V0dXAodGhpcywgY29udGV4dCwgcmVu
ZGVyT2JqZWN0LCB0eXBlKTsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93bihLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CisgICAgICAgIHsgS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnRlYXJkb3duKHRoaXMsIGNvbnRleHQsIHJl
bmRlck9iamVjdCwgdHlwZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyUGF0aChLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVuZGVyUGF0aCwg
S0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKKyAgICAgICAgeyBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6cmVuZGVyUGF0aCh0aGlzLCBjb250ZXh0LCByZW5kZXJQYXRo
LCB0eXBlKTsgfQogfTsKIAotY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGll
bnRRdWFydHogOiBwdWJsaWMgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0eiB7CitjbGFzcyBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eiA6IHB1YmxpYyBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudFF1YXJ0eiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50IHsK
IHB1YmxpYzoKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eigp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRy
YXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqLCBjb25zdCBSZW5kZXJQYXRoKiwgS0NQYWludFRh
cmdldFR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzZXR1cChLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCosIEtDUGFpbnRUYXJnZXRUeXBl
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdGVhcmRvd24oS1JlbmRlcmluZ0RldmljZUNvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBLQ1BhaW50VGFyZ2V0VHlwZSkgY29u
c3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlclBhdGgoS1JlbmRlcmluZ0Rl
dmljZUNvbnRleHQqLCBjb25zdCBSZW5kZXJQYXRoKiwgS0NQYWludFRhcmdldFR5cGUpIGNvbnN0
OwotfTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29u
dGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVuZGVyUGF0aCwgS0NQYWludFRhcmdldFR5cGUgdHlw
ZSkgY29uc3QKKyAgICAgICAgeyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6
ZHJhdyh0aGlzLCBjb250ZXh0LCByZW5kZXJQYXRoLCB0eXBlKTsgfQorICAgIHZpcnR1YWwgYm9v
bCBzZXR1cChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgV2ViQ29yZTo6
UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0
CisgICAgICAgIHsgcmV0dXJuIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Ojpz
ZXR1cCh0aGlzLCBjb250ZXh0LCByZW5kZXJPYmplY3QsIHR5cGUpOyB9CisgICAgdmlydHVhbCB2
b2lkIHRlYXJkb3duKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXZWJD
b3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkg
Y29uc3QKKyAgICAgICAgeyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6dGVh
cmRvd24odGhpcywgY29udGV4dCwgcmVuZGVyT2JqZWN0LCB0eXBlKTsgfQorICAgIHZpcnR1YWwg
dm9pZCByZW5kZXJQYXRoKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBS
ZW5kZXJQYXRoKiByZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAorICAg
ICAgICB7IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6OjpyZW5kZXJQYXRoKHRo
aXMsIGNvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOyB9Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudFF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHov
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW0JKHJldmlzaW9uIDEyNTU3KQor
Kysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVh
cnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMDcgKzQ3LDYgQEAKICNpbXBvcnQgPGt4bWxj
b3JlL0Fzc2VydGlvbnMuaD4KIAogCi0vLyBNYXliZSB0aGlzIHNob3VsZCBiZSBpbiBhIGJhc2Ug
Y2xhc3MgaW5zdGVhZC4uLgotc3RhdGljIEtDYW52YXNJbWFnZSogc2V0dXBTaGFkaW5nV2l0aFN0
eWxlKGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50ICpzZXJ2ZXIsIENHU2hhZGlu
Z1JlZiBzaGFkaW5nLCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtD
UGFpbnRUYXJnZXRUeXBlIHR5cGUsIGJvb2wgcGFpbnRpbmdUZXh0KQotewotICAgIEtSZW5kZXJp
bmdEZXZpY2VRdWFydHogKnF1YXJ0ekRldmljZSA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZp
Y2VRdWFydHogKj4oUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpKTsKLSAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVudENHQ29udGV4dCgpOwotICAgIGtodG1s
OjpSZW5kZXJTdHlsZSAqcmVuZGVyU3R5bGUgPSByZW5kZXJPYmplY3QtPnN0eWxlKCk7Ci0gICAg
QVNTRVJUKGNvbnRleHQgIT0gTlVMTCk7Ci0gICAgCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShj
b250ZXh0KTsKLSAgICAvLyBtYWtlIHRoZSBncmFkaWVudCBmaXQgaW4gdGhlIGJib3ggaWYgbmVj
ZXNzYXJ5LgotICAgIGlmIChzZXJ2ZXItPmJvdW5kaW5nQm94TW9kZSgpICYmIHJlbmRlck9iamVj
dC0+aXNSZW5kZXJQYXRoKCkpIHsgLy8gbm8gc3VwcG9ydCBmb3IgYm91bmRpbmcgYm94ZXMgYXJv
dW5kIHRleHQgeWV0IQotICAgICAgICAvLyBnZXQgdGhlIG9iamVjdCBiYm94Ci0gICAgICAgIENH
UmVjdCBvYmplY3RCQm94ID0gQ0dDb250ZXh0R2V0UGF0aEJvdW5kaW5nQm94KGNvbnRleHQpOwot
ICAgICAgICBDR1JlY3QgZ3JhZGllbnRCQm94ID0gQ0dSZWN0TWFrZSgwLDAsMTAwLDEwMCk7Ci0g
ICAgICAgIC8vIGdlbmVyYXRlIGEgdHJhbnNmb3JtIHRvIG1hcCBiZXR3ZWVuIHRoZSB0d28uCi0g
ICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50SW50b09iamVjdEJCb3ggPSBDR0FmZmlu
ZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVuUmVjdHMoZ3JhZGllbnRCQm94LCBvYmplY3RCQm94KTsK
LSAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGdyYWRpZW50SW50b09iamVjdEJC
b3gpOwotICAgIH0KLSAgICAKLSAgICAvLyBhcHBseSB0aGUgZ3JhZGllbnQncyBvd24gdHJhbnNm
b3JtCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybShzZXJ2ZXItPmdyYWRpZW50VHJhbnNmb3JtKCkucW1hdHJpeCgpKTsKLSAgICBDR0Nv
bnRleHRDb25jYXRDVE0oY29udGV4dCwgZ3JhZGllbnRUcmFuc2Zvcm0pOwotICAgIAotICAgIENH
Q29udGV4dFNldEFscGhhKGNvbnRleHQsIHJlbmRlclN0eWxlLT5vcGFjaXR5KCkpOwotICAgIAot
ICAgIGlmICgodHlwZSAmIEFQUExZX1RPX0ZJTEwpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9y
eTo6aXNGaWxsZWQocmVuZGVyU3R5bGUpKSB7Ci0gICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUo
Y29udGV4dCk7Ci0gICAgICAgIGlmIChwYWludGluZ1RleHQpCi0gICAgICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dENsaXApOwotICAgIH0KLQotICAg
IEtDYW52YXNJbWFnZSAqbWFza0ltYWdlID0gMDsKLSAgICAKLSAgICBpZiAoKHR5cGUgJiBBUFBM
WV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNTdHJva2VkKHJlbmRl
clN0eWxlKSkgewotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotICAgICAg
ICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHJlbmRlclN0eWxlLCByZW5kZXJP
YmplY3QpOyAvLyBGSVhNRTogdGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBwbGFjZSBmb3IgdGhp
cy4KLSAgICAgICAgaWYgKHBhaW50aW5nVGV4dCkgewotICAgICAgICAgICAgbWFza0ltYWdlID0g
c3RhdGljX2Nhc3Q8S0NhbnZhc0ltYWdlICo+KHF1YXJ0ekRldmljZS0+Y3JlYXRlUmVzb3VyY2Uo
UlNfSU1BR0UpKTsKLSAgICAgICAgICAgIGludCB3aWR0aCAgPSAyMDQ4OwotICAgICAgICAgICAg
aW50IGhlaWdodCA9IDIwNDg7IC8vIEZJWE1FPz8/Ci0gICAgICAgICAgICBJbnRTaXplIHNpemUg
PSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgbWFza0ltYWdlLT5pbml0KHNp
emUpOwotICAgICAgICAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIG1hc2tJbWFnZUNvbnRl
eHQgPSBxdWFydHpEZXZpY2UtPmNvbnRleHRGb3JJbWFnZShtYXNrSW1hZ2UpOwotICAgICAgICAg
ICAgcXVhcnR6RGV2aWNlLT5wdXNoQ29udGV4dChtYXNrSW1hZ2VDb250ZXh0KTsKLSAgICAgICAg
ICAgIENHQ29udGV4dFJlZiBtYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0UXVhcnR6Kj4obWFza0ltYWdlQ29udGV4dCktPmNnQ29udGV4dCgpOwotICAgICAg
ICAgICAgY29uc3RfY2FzdDxraHRtbDo6UmVuZGVyT2JqZWN0ICo+KHJlbmRlck9iamVjdCktPnN0
eWxlKCktPnNldENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpKTsKLSAgICAgICAgICAgIENHQ29u
dGV4dFNldFRleHREcmF3aW5nTW9kZShtYXNrQ29udGV4dCwga0NHVGV4dFN0cm9rZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG1hc2tJbWFnZTsKLX0KLQotc3RhdGljIHZvaWQgcmVu
ZGVyU2hhZGluZ1dpdGhTdHlsZShjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCAq
c2VydmVyLCBDR1NoYWRpbmdSZWYgc2hhZGluZywgY29uc3QgUmVuZGVyUGF0aCogcGF0aCwgS0NQ
YWludFRhcmdldFR5cGUgdHlwZSkKLXsKLSAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpxdWFy
dHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICo+KFFQYWludGVy
OjpyZW5kZXJpbmdEZXZpY2UoKSk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBxdWFydHpE
ZXZpY2UtPmN1cnJlbnRDR0NvbnRleHQoKTsKLSAgICBraHRtbDo6UmVuZGVyU3R5bGUgKnJlbmRl
clN0eWxlID0gcGF0aC0+c3R5bGUoKTsKLSAgICBBU1NFUlQoY29udGV4dCAhPSBOVUxMKTsKLSAg
ICAKLSAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19GSUxMKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZh
Y3Rvcnk6OmlzRmlsbGVkKHJlbmRlclN0eWxlKSkKLSAgICAgICAgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUXVhcnR6SGVscGVyOjpjbGlwVG9GaWxsUGF0aChjb250ZXh0LCBwYXRoKTsKLSAgICBpZiAo
KHR5cGUgJiBBUFBMWV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNT
dHJva2VkKHJlbmRlclN0eWxlKSkKLSAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6
SGVscGVyOjpjbGlwVG9TdHJva2VQYXRoKGNvbnRleHQsIHBhdGgpOwotfQotCi1zdGF0aWMgdm9p
ZCB0ZWFyZG93blNoYWRpbmdXaXRoU3R5bGUoY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQgKnNlcnZlciwgQ0dTaGFkaW5nUmVmIHNoYWRpbmcsIGNvbnN0IGtodG1sOjpSZW5kZXJP
YmplY3QgKnJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSwgYm9vbCBwYWludGlu
Z1RleHQsIEtDYW52YXNJbWFnZSAqbWFza0ltYWdlKQotewotICAgIEtSZW5kZXJpbmdEZXZpY2VR
dWFydHogKnF1YXJ0ekRldmljZSA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VRdWFydHog
Kj4oUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVudENHQ29udGV4dCgpOwotICAgIGtodG1sOjpSZW5kZXJT
dHlsZSAqcmVuZGVyU3R5bGUgPSByZW5kZXJPYmplY3QtPnN0eWxlKCk7Ci0gICAgQVNTRVJUKGNv
bnRleHQgIT0gTlVMTCk7Ci0gICAgCi0gICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYg
S1NWRzo6S1NWR1BhaW50ZXJGYWN0b3J5Ojppc0ZpbGxlZChyZW5kZXJTdHlsZSkpIHsKLSAgICAg
ICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZyk7Ci0gICAgICAgIENHQ29u
dGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7Ci0gICAgfQotICAgIAotICAgIGlmICgodHlwZSAm
IEFQUExZX1RPX1NUUk9LRSkgJiYgS1NWRzo6S1NWR1BhaW50ZXJGYWN0b3J5Ojppc1N0cm9rZWQo
cmVuZGVyU3R5bGUpKSB7Ci0gICAgICAgIGlmIChwYWludGluZ1RleHQpIHsKLSAgICAgICAgICAg
IGludCB3aWR0aCAgPSAyMDQ4OwotICAgICAgICAgICAgaW50IGhlaWdodCA9IDIwNDg7IC8vIEZJ
WE1FPz8/IFNFRSBBQk9WRQotICAgICAgICAgICAgZGVsZXRlIHF1YXJ0ekRldmljZS0+cG9wQ29u
dGV4dCgpOwotICAgICAgICAgICAgY29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVudENHQ29u
dGV4dCgpOwotICAgICAgICAgICAgdm9pZCAqaW1hZ2VCdWZmZXIgPSBmYXN0TWFsbG9jKHdpZHRo
ICogaGVpZ2h0KTsKLSAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlZiBncmF5Q29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBncmF5c2NhbGVDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGltYWdlQnVmZmVyLCB3
aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCwgZ3JheUNvbG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFOb25l
KTsKLSAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoZ3JheUNvbG9yU3BhY2UpOwotICAg
ICAgICAgICAgS0NhbnZhc0ltYWdlUXVhcnR6ICpxTWFza0ltYWdlID0gc3RhdGljX2Nhc3Q8S0Nh
bnZhc0ltYWdlUXVhcnR6ICo+KG1hc2tJbWFnZSk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3
TGF5ZXJBdFBvaW50KGdyYXlzY2FsZUNvbnRleHQsIENHUG9pbnRNYWtlKDAsIDApLCBxTWFza0lt
YWdlLT5jZ0xheWVyKCkpOwotICAgICAgICAgICAgQ0dJbWFnZVJlZiBncmF5c2NhbGVJbWFnZSA9
IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGdyYXlzY2FsZUNvbnRleHQpOwotICAgICAgICAg
ICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBo
ZWlnaHQpLCBncmF5c2NhbGVJbWFnZSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRSZWxlYXNlKGdy
YXlzY2FsZUNvbnRleHQpOwotICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoZ3JheXNjYWxlSW1h
Z2UpOwotICAgICAgICB9Ci0gICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNo
YWRpbmcpOwotICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotICAgIH0K
LSAgICAKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotfQotCiAvL3R5cGVk
ZWYgdmVjdG9yIHVuc2lnbmVkIGNoYXIgdlVJbnQ4OwogLy92ZWN0b3IgZmxvYXQgdmVjX2xvYWRB
bmRTcGxhdFNjYWxhciggZmxvYXQgKnNjYWxhclB0ciApCiAvL3sKQEAgLTI4NCwyMCArMTgzLDEz
IEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoKICAgICBpZiAoIW1f
c3RvcHNDb3VudCkKICAgICAgICAgTlNMb2coQCJXYXJuaW5nLCBubyBncmFkaWVudCBzdG9wcywg
Z3JhZGllbnQgKCVwKSB3aWxsIGJlIGFsbCBibGFjayEiLCB0aGlzKTsKICAgICAKLSAgICBpZiAo
c2VydmVyLT50eXBlKCkgPT0gUFNfUkFESUFMX0dSQURJRU5UKQotICAgIHsKKyAgICBpZiAobV9z
aGFkaW5nQ2FjaGUpCisgICAgICAgIENHU2hhZGluZ1JlbGVhc2UobV9zaGFkaW5nQ2FjaGUpOwor
ICAgIGlmIChzZXJ2ZXItPnR5cGUoKSA9PSBQU19SQURJQUxfR1JBRElFTlQpIHsKICAgICAgICAg
Y29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHogKnJhZGlhbCA9
IHN0YXRpY19jYXN0PGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVh
cnR6ICo+KHNlcnZlcik7Ci0gICAgICAgIGlmIChtX3NoYWRpbmdDYWNoZSkKLSAgICAgICAgICAg
IENHU2hhZGluZ1JlbGVhc2UobV9zaGFkaW5nQ2FjaGUpOwotICAgICAgICAvLyBhY3R1YWxseSBt
YWtlIHRoZSBncmFkaWVudAogICAgICAgICBtX3NoYWRpbmdDYWNoZSA9IENHU2hhZGluZ1JlZkZv
clJhZGlhbEdyYWRpZW50KHJhZGlhbCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNlcnZlci0+dHlw
ZSgpID09IFBTX0xJTkVBUl9HUkFESUVOVCkKLSAgICB7CisgICAgfSBlbHNlIGlmIChzZXJ2ZXIt
PnR5cGUoKSA9PSBQU19MSU5FQVJfR1JBRElFTlQpIHsKICAgICAgICAgY29uc3QgS1JlbmRlcmlu
Z1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHogKmxpbmVhciA9IHN0YXRpY19jYXN0PGNv
bnN0IEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6ICo+KHNlcnZlcik7
Ci0gICAgICAgIGlmIChtX3NoYWRpbmdDYWNoZSkKLSAgICAgICAgICAgIENHU2hhZGluZ1JlbGVh
c2UobV9zaGFkaW5nQ2FjaGUpOwotICAgICAgICAvLyBhY3R1YWxseSBtYWtlIHRoZSBncmFkaWVu
dAogICAgICAgICBtX3NoYWRpbmdDYWNoZSA9IENHU2hhZGluZ1JlZkZvckxpbmVhckdyYWRpZW50
KGxpbmVhcik7CiAgICAgfQogfQpAQCAtMzQwLDcyICsyMzIsMTIzIEBAIHZvaWQgS1JlbmRlcmlu
Z1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRp
YWxHcmFkaWVudDo6aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIEtSZW5kZXJpbmdQYWludFNlcnZl
ckxpbmVhckdyYWRpZW50UXVhcnR6OjpkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5k
ZXJpbmdDb250ZXh0LCBjb25zdCBSZW5kZXJQYXRoKiBwYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0
eXBlKSBjb25zdAordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6ZHJh
dyhjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogc2VydmVyLCBLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcGF0aCwg
S0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBpZiAoIXNldHVwKHJlbmRlcmlu
Z0NvbnRleHQsIHBhdGgsIHR5cGUpKQorICAgIGlmICghc2V0dXAoc2VydmVyLCByZW5kZXJpbmdD
b250ZXh0LCBwYXRoLCB0eXBlKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlbmRlclBhdGgocmVu
ZGVyaW5nQ29udGV4dCwgcGF0aCwgdHlwZSk7Ci0gICAgdGVhcmRvd24ocmVuZGVyaW5nQ29udGV4
dCwgcGF0aCwgdHlwZSk7CisgICAgcmVuZGVyUGF0aChzZXJ2ZXIsIHJlbmRlcmluZ0NvbnRleHQs
IHBhdGgsIHR5cGUpOworICAgIHRlYXJkb3duKHNlcnZlciwgcmVuZGVyaW5nQ29udGV4dCwgcGF0
aCwgdHlwZSk7CiB9CiAKLWJvb2wgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRR
dWFydHo6OnNldHVwKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBj
b25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBl
IHR5cGUpIGNvbnN0Citib29sIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Ojpz
ZXR1cChjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCogc2VydmVyLCBLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAogewotICAg
IGlmKGxpc3RlbmVyKCkpIC8vIHRoaXMgc2VlbXMgbGlrZSBiYWQgZGVzaWduIHRvIG1lLCBzaG91
bGQgYmUgaW4gYSBjb21tb24gYmFzZWNsYXNzLiAtLSBlY3MgOC82LzA1Ci0gICAgICAgIGxpc3Rl
bmVyKCktPnJlc291cmNlTm90aWZpY2F0aW9uKCk7CisgICAgaWYgKHNlcnZlci0+bGlzdGVuZXIo
KSkgLy8gdGhpcyBzZWVtcyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNv
bW1vbiBiYXNlY2xhc3MuIC0tIGVjcyA4LzYvMDUKKyAgICAgICAgc2VydmVyLT5saXN0ZW5lcigp
LT5yZXNvdXJjZU5vdGlmaWNhdGlvbigpOworICAgIAorICAgIGRlbGV0ZSBtX21hc2tJbWFnZTsK
KyAgICBtX21hc2tJbWFnZSA9IDA7CiAKICAgICAvLyBGSVhNRTogdG90YWwgY29uc3QgSEFDSyEK
ICAgICAvLyBXZSBuZWVkIGEgaG9vayB0byBjYWxsIHRoaXMgd2hlbiB0aGUgZ3JhZGllbnQgZ2V0
cyB1cGRhdGVkLCBiZWZvcmUgZHJhd24uCiAgICAgaWYgKCFtX3NoYWRpbmdDYWNoZSkKLSAgICAg
ICAgY29uc3RfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0eiAq
Pih0aGlzKS0+dXBkYXRlUXVhcnR6R3JhZGllbnRDYWNoZSh0aGlzKTsKLQotICAgIGRlbGV0ZSBt
X21hc2tJbWFnZTsKLSAgICBtX21hc2tJbWFnZSA9IHNldHVwU2hhZGluZ1dpdGhTdHlsZSh0aGlz
LCBtX3NoYWRpbmdDYWNoZSwgcmVuZGVyT2JqZWN0LCB0eXBlLCBpc1BhaW50aW5nVGV4dCgpKTsK
KyAgICAgICAgY29uc3RfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0eio+
KHRoaXMpLT51cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKHNlcnZlcik7CisgICAgCisgICAgS1Jl
bmRlcmluZ0RldmljZVF1YXJ0eiogcXVhcnR6RGV2aWNlID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmlu
Z0RldmljZVF1YXJ0eio+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKSk7CisgICAgQ0dDb250
ZXh0UmVmIGNvbnRleHQgPSBxdWFydHpEZXZpY2UtPmN1cnJlbnRDR0NvbnRleHQoKTsKKyAgICBr
aHRtbDo6UmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpOwor
ICAgIEFTU0VSVChjb250ZXh0ICE9IE5VTEwpOworICAgIAorICAgIENHQ29udGV4dFNhdmVHU3Rh
dGUoY29udGV4dCk7CisgICAgLy8gbWFrZSB0aGUgZ3JhZGllbnQgZml0IGluIHRoZSBiYm94IGlm
IG5lY2Vzc2FyeS4KKyAgICBpZiAoc2VydmVyLT5ib3VuZGluZ0JveE1vZGUoKSAmJiByZW5kZXJP
YmplY3QtPmlzUmVuZGVyUGF0aCgpKSB7IC8vIG5vIHN1cHBvcnQgZm9yIGJvdW5kaW5nIGJveGVz
IGFyb3VuZCB0ZXh0IHlldCEKKyAgICAgICAgLy8gZ2V0IHRoZSBvYmplY3QgYmJveAorICAgICAg
ICBDR1JlY3Qgb2JqZWN0QkJveCA9IENHQ29udGV4dEdldFBhdGhCb3VuZGluZ0JveChjb250ZXh0
KTsKKyAgICAgICAgQ0dSZWN0IGdyYWRpZW50QkJveCA9IENHUmVjdE1ha2UoMCwwLDEwMCwxMDAp
OyAvLyBGSVhNRSAtIHRoaXMgaXMgYXJiaXRyYXJ5IG5vPworICAgICAgICAvLyBnZW5lcmF0ZSBh
IHRyYW5zZm9ybSB0byBtYXAgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBDR0FmZmluZVRyYW5z
Zm9ybSBncmFkaWVudEludG9PYmplY3RCQm94ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlTWFwQmV0
d2VlblJlY3RzKGdyYWRpZW50QkJveCwgb2JqZWN0QkJveCk7CisgICAgICAgIENHQ29udGV4dENv
bmNhdENUTShjb250ZXh0LCBncmFkaWVudEludG9PYmplY3RCQm94KTsKKyAgICB9CisgICAgCisg
ICAgLy8gYXBwbHkgdGhlIGdyYWRpZW50J3Mgb3duIHRyYW5zZm9ybQorICAgIENHQWZmaW5lVHJh
bnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm0oc2VydmVyLT5ncmFk
aWVudFRyYW5zZm9ybSgpLnFtYXRyaXgoKSk7CisgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIGdyYWRpZW50VHJhbnNmb3JtKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRBbHBoYShjb250
ZXh0LCByZW5kZXJTdHlsZS0+b3BhY2l0eSgpKTsKKyAgICAKKyAgICBpZiAoKHR5cGUgJiBBUFBM
WV9UT19GSUxMKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzRmlsbGVkKHJlbmRlclN0
eWxlKSkgeworICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgICAgICBp
ZiAoc2VydmVyLT5pc1BhaW50aW5nVGV4dCgpKQorICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4
dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRDbGlwKTsKKyAgICB9CiAKKyAgICBpZiAoKHR5
cGUgJiBBUFBMWV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNTdHJv
a2VkKHJlbmRlclN0eWxlKSkgeworICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQp
OworICAgICAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHJlbmRlclN0eWxl
LCByZW5kZXJPYmplY3QpOyAvLyBGSVhNRTogdGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBwbGFj
ZSBmb3IgdGhpcy4KKyAgICAgICAgaWYgKHNlcnZlci0+aXNQYWludGluZ1RleHQoKSkgeworICAg
ICAgICAgICAgbV9tYXNrSW1hZ2UgPSBzdGF0aWNfY2FzdDxLQ2FudmFzSW1hZ2UgKj4ocXVhcnR6
RGV2aWNlLT5jcmVhdGVSZXNvdXJjZShSU19JTUFHRSkpOworICAgICAgICAgICAgaW50IHdpZHRo
ICA9IDIwNDg7CisgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gMjA0ODsgLy8gRklYTUU/Pz8KKyAg
ICAgICAgICAgIEludFNpemUgc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAg
ICAgICBtX21hc2tJbWFnZS0+aW5pdChzaXplKTsKKyAgICAgICAgICAgIEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gcXVhcnR6RGV2aWNlLT5jb250ZXh0Rm9ySW1h
Z2UobV9tYXNrSW1hZ2UpOworICAgICAgICAgICAgcXVhcnR6RGV2aWNlLT5wdXNoQ29udGV4dCht
YXNrSW1hZ2VDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBtYXNrQ29udGV4dCA9
IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6Kj4obWFza0ltYWdlQ29u
dGV4dCktPmNnQ29udGV4dCgpOworICAgICAgICAgICAgY29uc3RfY2FzdDxraHRtbDo6UmVuZGVy
T2JqZWN0Kj4ocmVuZGVyT2JqZWN0KS0+c3R5bGUoKS0+c2V0Q29sb3IoQ29sb3IoMjU1LCAyNTUs
IDI1NSkpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKG1hc2tDb250
ZXh0LCBrQ0dUZXh0U3Ryb2tlKTsKKyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6cmVu
ZGVyUGF0aChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3Qg
UmVuZGVyUGF0aCogcGF0aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKK3ZvaWQgS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnJlbmRlclBhdGgoY29uc3QgS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQqIHNlcnZlciwgS1JlbmRlcmluZ0RldmljZUNvbnRleHQq
IHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHBhdGgsIEtDUGFpbnRUYXJnZXRU
eXBlIHR5cGUpIGNvbnN0CiB7ICAgIAotICAgIHJlbmRlclNoYWRpbmdXaXRoU3R5bGUodGhpcywg
bV9zaGFkaW5nQ2FjaGUsIHBhdGgsIHR5cGUpOworICAgIEtSZW5kZXJpbmdEZXZpY2VRdWFydHoq
IHF1YXJ0ekRldmljZSA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZpY2VRdWFydHoqPihRUGFp
bnRlcjo6cmVuZGVyaW5nRGV2aWNlKCkpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcXVh
cnR6RGV2aWNlLT5jdXJyZW50Q0dDb250ZXh0KCk7CisgICAga2h0bWw6OlJlbmRlclN0eWxlKiBy
ZW5kZXJTdHlsZSA9IHBhdGgtPnN0eWxlKCk7CisgICAgQVNTRVJUKGNvbnRleHQgIT0gTlVMTCk7
CisgICAgCisgICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYgS1NWRzo6S1NWR1BhaW50
ZXJGYWN0b3J5Ojppc0ZpbGxlZChyZW5kZXJTdHlsZSkpCisgICAgICAgIEtSZW5kZXJpbmdQYWlu
dFNlcnZlclF1YXJ0ekhlbHBlcjo6Y2xpcFRvRmlsbFBhdGgoY29udGV4dCwgcGF0aCk7CisgICAg
aWYgKCh0eXBlICYgQVBQTFlfVE9fU1RST0tFKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6
OmlzU3Ryb2tlZChyZW5kZXJTdHlsZSkpCisgICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlclF1
YXJ0ekhlbHBlcjo6Y2xpcFRvU3Ryb2tlUGF0aChjb250ZXh0LCBwYXRoKTsKIH0KIAotdm9pZCBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6dGVhcmRvd24oS1JlbmRl
cmluZ0RldmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKK3ZvaWQg
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OnRlYXJkb3duKGNvbnN0IEtSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50ICpzZXJ2ZXIsIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0
KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmpl
Y3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CiB7IAotICAgIHRlYXJkb3duU2hhZGlu
Z1dpdGhTdHlsZSh0aGlzLCBtX3NoYWRpbmdDYWNoZSwgcmVuZGVyT2JqZWN0LCB0eXBlLCBpc1Bh
aW50aW5nVGV4dCgpLCBtX21hc2tJbWFnZSk7Ci19Ci0KLXZvaWQgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OmRyYXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHJl
bmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHBhdGgsIEtDUGFpbnRUYXJnZXRUeXBl
IHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFzZXR1cChyZW5kZXJpbmdDb250ZXh0LCBwYXRoLCB0
eXBlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlbmRlclBhdGgocmVuZGVyaW5nQ29udGV4dCwg
cGF0aCwgdHlwZSk7Ci0gICAgdGVhcmRvd24ocmVuZGVyaW5nQ29udGV4dCwgcGF0aCwgdHlwZSk7
Ci19Ci0KLWJvb2wgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OnNl
dHVwKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBraHRt
bDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNv
bnN0Ci17Ci0gICAgaWYobGlzdGVuZXIoKSkgLy8gdGhpcyBzZWVtcyBsaWtlIGJhZCBkZXNpZ24g
dG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBiYXNlY2xhc3MuIC0tIGVjcyA4LzYvMDUKLSAg
ICAgICAgbGlzdGVuZXIoKS0+cmVzb3VyY2VOb3RpZmljYXRpb24oKTsKLSAgICAgICAgCi0gICAg
Ly8gRklYTUU6IHRvdGFsIGNvbnN0IEhBQ0shCi0gICAgLy8gV2UgbmVlZCBhIGhvb2sgdG8gY2Fs
bCB0aGlzIHdoZW4gdGhlIGdyYWRpZW50IGdldHMgdXBkYXRlZCwgYmVmb3JlIGRyYXduLgotICAg
IGlmICghbV9zaGFkaW5nQ2FjaGUpCi0gICAgICAgIGNvbnN0X2Nhc3Q8S1JlbmRlcmluZ1BhaW50
U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHogKj4odGhpcyktPnVwZGF0ZVF1YXJ0ekdyYWRpZW50
Q2FjaGUodGhpcyk7Ci0KLSAgICBkZWxldGUgbV9tYXNrSW1hZ2U7Ci0gICAgbV9tYXNrSW1hZ2Ug
PSBzZXR1cFNoYWRpbmdXaXRoU3R5bGUodGhpcywgbV9zaGFkaW5nQ2FjaGUsIHJlbmRlck9iamVj
dCwgdHlwZSwgaXNQYWludGluZ1RleHQoKSk7Ci0gICAgICAgIAotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVhcnR6OjpyZW5k
ZXJQYXRoKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBS
ZW5kZXJQYXRoKiBwYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAotewotICAgIHJl
bmRlclNoYWRpbmdXaXRoU3R5bGUodGhpcywgbV9zaGFkaW5nQ2FjaGUsIHBhdGgsIHR5cGUpOwor
ICAgIENHU2hhZGluZ1JlZiBzaGFkaW5nID0gbV9zaGFkaW5nQ2FjaGU7CisgICAgS0NhbnZhc0lt
YWdlKiBtYXNrSW1hZ2UgPSBtX21hc2tJbWFnZTsKKyAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6
KiBxdWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6Kj4oUVBh
aW50ZXI6OnJlbmRlcmluZ0RldmljZSgpKTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHF1
YXJ0ekRldmljZS0+Y3VycmVudENHQ29udGV4dCgpOworICAgIGtodG1sOjpSZW5kZXJTdHlsZSog
cmVuZGVyU3R5bGUgPSByZW5kZXJPYmplY3QtPnN0eWxlKCk7CisgICAgQVNTRVJUKGNvbnRleHQg
IT0gTlVMTCk7CisgICAgCisgICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYgS1NWRzo6
S1NWR1BhaW50ZXJGYWN0b3J5Ojppc0ZpbGxlZChyZW5kZXJTdHlsZSkpIHsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZyk7CisgICAgICAgIENHQ29udGV4dFJl
c3RvcmVHU3RhdGUoY29udGV4dCk7CisgICAgfQorICAgIAorICAgIGlmICgodHlwZSAmIEFQUExZ
X1RPX1NUUk9LRSkgJiYgS1NWRzo6S1NWR1BhaW50ZXJGYWN0b3J5Ojppc1N0cm9rZWQocmVuZGVy
U3R5bGUpKSB7CisgICAgICAgIGlmIChzZXJ2ZXItPmlzUGFpbnRpbmdUZXh0KCkpIHsKKyAgICAg
ICAgICAgIGludCB3aWR0aCAgPSAyMDQ4OworICAgICAgICAgICAgaW50IGhlaWdodCA9IDIwNDg7
IC8vIEZJWE1FPz8/IFNFRSBBQk9WRQorICAgICAgICAgICAgZGVsZXRlIHF1YXJ0ekRldmljZS0+
cG9wQ29udGV4dCgpOworICAgICAgICAgICAgY29udGV4dCA9IHF1YXJ0ekRldmljZS0+Y3VycmVu
dENHQ29udGV4dCgpOworICAgICAgICAgICAgdm9pZCogaW1hZ2VCdWZmZXIgPSBmYXN0TWFsbG9j
KHdpZHRoICogaGVpZ2h0KTsKKyAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlZiBncmF5Q29sb3JT
cGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKKyAgICAgICAgICAgIENHQ29u
dGV4dFJlZiBncmF5c2NhbGVDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGltYWdlQnVm
ZmVyLCB3aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCwgZ3JheUNvbG9yU3BhY2UsIGtDR0ltYWdlQWxw
aGFOb25lKTsKKyAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoZ3JheUNvbG9yU3BhY2Up
OworICAgICAgICAgICAgS0NhbnZhc0ltYWdlUXVhcnR6KiBxTWFza0ltYWdlID0gc3RhdGljX2Nh
c3Q8S0NhbnZhc0ltYWdlUXVhcnR6ICo+KG1hc2tJbWFnZSk7CisgICAgICAgICAgICBDR0NvbnRl
eHREcmF3TGF5ZXJBdFBvaW50KGdyYXlzY2FsZUNvbnRleHQsIENHUG9pbnRNYWtlKDAsIDApLCBx
TWFza0ltYWdlLT5jZ0xheWVyKCkpOworICAgICAgICAgICAgQ0dJbWFnZVJlZiBncmF5c2NhbGVJ
bWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGdyYXlzY2FsZUNvbnRleHQpOworICAg
ICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHdp
ZHRoLCBoZWlnaHQpLCBncmF5c2NhbGVJbWFnZSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWxl
YXNlKGdyYXlzY2FsZUNvbnRleHQpOworICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoZ3JheXNj
YWxlSW1hZ2UpOworICAgICAgICB9CisgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRl
eHQsIHNoYWRpbmcpOworICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwor
ICAgIH0KKyAgICAKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi12
b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVhcnR6Ojp0ZWFyZG93bihL
UmVuZGVyaW5nRGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3Qga2h0bWw6OlJl
bmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAot
ewotICAgIHRlYXJkb3duU2hhZGluZ1dpdGhTdHlsZSh0aGlzLCBtX3NoYWRpbmdDYWNoZSwgcmVu
ZGVyT2JqZWN0LCB0eXBlLCBpc1BhaW50aW5nVGV4dCgpLCBtX21hc2tJbWFnZSk7Ci19CiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKLQpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50
U2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyLmgJKHJldmlzaW9uIDEyNTU3KQorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50
U2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UGFpbnRpbmdUZXh0KGJvb2wgcGFpbnRpbmdUZXh0KSB7IG1fcGFpbnRpbmdUZXh0ID0g
cGFpbnRpbmdUZXh0OyB9CiAKICAgICB2aXJ0dWFsIFFUZXh0U3RyZWFtICZleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFFUZXh0U3RyZWFtICYpIGNvbnN0ID0gMDsKLXByb3RlY3RlZDoKKwogICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJQYXRoKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiwgY29uc3QgUmVu
ZGVyUGF0aCosIEtDUGFpbnRUYXJnZXRUeXBlKSBjb25zdCA9IDA7CiBwcml2YXRlOgogICAgIGNv
bnN0IFJlbmRlclBhdGggKm1fYWN0aXZlQ2xpZW50OwpJbmRleDogQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTI1NTcpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAwNi0wMi0wOSAgQWxleGFuZGVyIEtlbGxldHQgIDxs
eXBhbm92QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBGYWN0b3Igb3V0IGNvbW1vbiBwYXJ0cyBvZiBMaW5lYXIvUmFkaWFs
IEdyYWRpZW50UXVhcnR6IAorICAgICAgICB1cCBpbnRvIEtSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50UXVhcnR6LgorCisgICAgICAgIENsZWFudXAgb25seSwgbm8gbGF5b3V0IHRlc3RzIG5l
ZWRlZCBvciBhZmZlY3RlZC4KKworICAgICAgICAqIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQ
YWludFNlcnZlci5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50UXVhcnR6Ojp1cGRhdGVRdWFydHpHcmFkaWVudENhY2hlKToKKyAgICAgICAg
KEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6OjpkcmF3KToKKyAgICAgICAgKEtS
ZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6OjpzZXR1cCk6CisgICAgICAgIChLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6cmVuZGVyUGF0aCk6CisgICAgICAgIChL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6dGVhcmRvd24pOgorICAgICAgICAq
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaDoKKyAg
ICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6OjpkcmF3KToK
KyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6OjpzZXR1
cCk6CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6
dGVhcmRvd24pOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRR
dWFydHo6OnJlbmRlclBhdGgpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFs
R3JhZGllbnRRdWFydHo6OmRyYXcpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUmFk
aWFsR3JhZGllbnRRdWFydHo6OnNldHVwKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZl
clJhZGlhbEdyYWRpZW50UXVhcnR6Ojp0ZWFyZG93bik6CisgICAgICAgIChLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0ejo6cmVuZGVyUGF0aCk6CisKIDIwMDYtMDItMDMg
IEFuZHJldyBXZWxsaW5ndG9uICA8cHJvdG9uQHdpcmV0YXBwZWQubmV0PgogCiAgICAgICAgIFJl
dmlld2VkIGFuZCB0d2Vha2VkIGJ5IERhcmluLgo=
</data>
<flag name="review"
          id="1559"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>