<?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>105876</bug_id>
          
          <creation_ts>2012-12-30 14:12:24 -0800</creation_ts>
          <short_desc>[EFL] [WebGL] Rename EGLConfigHelper as EGLConfigSelector.</short_desc>
          <delta_ts>2012-12-30 23:34:23 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>105816</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kalyan">kalyan.kondapally</reporter>
          <assigned_to name="Kalyan">kalyan.kondapally</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>798264</commentid>
    <comment_count>0</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 14:12:24 -0800</bug_when>
    <thetext>This is to sync the naming conventions of our classes in both EGL and GLX implementations.
In our GLX implementation, class responsible for the same functionality is named as GLXConfigSelector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798267</commentid>
    <comment_count>1</comment_count>
      <attachid>180961</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 15:18:44 -0800</bug_when>
    <thetext>Created attachment 180961
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798273</commentid>
    <comment_count>2</comment_count>
      <attachid>180961</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-30 17:10:39 -0800</bug_when>
    <thetext>Comment on attachment 180961
patch

Rejecting attachment 180961 from commit-queue.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, u&apos;--status-host=queues.webkit.org&apos;, ...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
ueue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 73, in run_and_handle_errors
    self._run(tool, options, state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 67, in _run
    step(tool, options).run(state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 54, in run
    if changelog_entry.has_valid_reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;has_valid_reviewer&apos;

Full output: http://queues.webkit.org/results/15589687</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798288</commentid>
    <comment_count>3</comment_count>
      <attachid>180963</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 21:24:39 -0800</bug_when>
    <thetext>Created attachment 180963
patchv2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798290</commentid>
    <comment_count>4</comment_count>
      <attachid>180963</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-30 21:39:51 -0800</bug_when>
    <thetext>Comment on attachment 180963
patchv2

Rejecting attachment 180963 from commit-queue.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, u&apos;--status-host=queues.webkit.org&apos;, ...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
ueue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 73, in run_and_handle_errors
    self._run(tool, options, state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 67, in _run
    step(tool, options).run(state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 54, in run
    if changelog_entry.has_valid_reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;has_valid_reviewer&apos;

Full output: http://queues.webkit.org/results/15585773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798291</commentid>
    <comment_count>5</comment_count>
      <attachid>180963</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-30 21:43:15 -0800</bug_when>
    <thetext>Comment on attachment 180963
patchv2

View in context: https://bugs.webkit.org/attachment.cgi?id=180963&amp;action=review

&gt; Source/WebCore/ChangeLog:1
&gt; +        [EFL] [WebGL] Rename EGLConfigHelper as EGLConfigSelector.

You&apos;re missing the first line of this Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798296</commentid>
    <comment_count>6</comment_count>
      <attachid>180965</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 23:07:47 -0800</bug_when>
    <thetext>Created attachment 180965
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798297</commentid>
    <comment_count>7</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2012-12-30 23:08:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 180963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180963&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:1
&gt; &gt; +        [EFL] [WebGL] Rename EGLConfigHelper as EGLConfigSelector.
&gt; 
&gt; You&apos;re missing the first line of this Changelog.

thanks. Fixed it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798302</commentid>
    <comment_count>8</comment_count>
      <attachid>180965</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-30 23:34:17 -0800</bug_when>
    <thetext>Comment on attachment 180965
patch

Clearing flags on attachment: 180965

Committed r138588: &lt;http://trac.webkit.org/changeset/138588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798303</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-30 23:34:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180961</attachid>
            <date>2012-12-30 15:18:44 -0800</date>
            <delta_ts>2012-12-30 21:24:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>renameclass.patch</filename>
            <type>text/plain</type>
            <size>23735</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBDaGFuZ2VMb2cgQ2hhbmdlTG9nCmluZGV4IGVhYzUyZTUuLmM3MGY5YmIgMTAw
NjQ0Ci0tLSBDaGFuZ2VMb2cKKysrIENoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEy
LTMwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KKwor
ICAgICAgICBbRUZMXSBbV2ViR0xdIFJlbmFtZSBFR0xDb25maWdIZWxwZXIgYXMgRUdMQ29uZmln
U2VsZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGlzIHRvIHN5bmMgdGhlIG5hbWluZyBjb252ZW50aW9ucyBvZiBvdXIgY2xhc3NlcyBp
biBib3RoIEVHTCBhbmQgR0xYIGltcGxlbWVudGF0aW9ucy4gCisgICAgICAgIEluIG91ciBHTFgg
aW1wbGVtZW50YXRpb24sIGNsYXNzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2FtZSBmdW5jdGlvbmFs
aXR5IGlzIG5hbWVkIGFzIEdMWENvbmZpZ1NlbGVjdG9yLiAKKyAgICAgICAgVGhpcyBwYXRjaCBy
ZW5hbWVzIEVHTENvbmZpZ0hlbHBlciBhcyBFR0xDb25maWdTZWxlY3Rvci4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTEyLTI3ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5r
b25kYXBhbGx5QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXZWJHTF0gSW1wbGVtZW50IEVH
TCBzdXBwb3J0IHdpdGggR0xYLgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFhNmMxMC4uN2U0ZDgzOSAxMDA2NDQKLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKyAgICAgICAgW0VGTF0gW1dlYkdMXSBSZW5hbWUgRUdMQ29uZmlnSGVs
cGVyIGFzIEVHTENvbmZpZ1NlbGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0byBzeW5jIHRoZSBuYW1pbmcgY29udmVudGlvbnMg
b2Ygb3VyIGNsYXNzZXMgaW4gYm90aCBFR0wgYW5kIEdMWCBpbXBsZW1lbnRhdGlvbnMuIAorICAg
ICAgICBJbiBvdXIgR0xYIGltcGxlbWVudGF0aW9uLCBjbGFzcyByZXNwb25zaWJsZSBmb3IgdGhl
IHNhbWUgZnVuY3Rpb25hbGl0eSBpcyBuYW1lZCBhcyBHTFhDb25maWdTZWxlY3Rvci4gCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyBFR0xDb25maWdIZWxwZXIgYXMgRUdMQ29uZmlnU2VsZWN0
b3IuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZpZ0hl
bHBlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEVH
TERpc3BsYXk6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEVHTERpc3BsYXk6OnNo
YXJlZEVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRUdMRGlzcGxheTo6U2hh
cmVkRUdMRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5OjpjbGVh
bnVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEVHTERpc3BsYXk6On5TaGFyZWRFR0xEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpFR0xDb25maWdTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6fkVHTENvbmZpZ1Nl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpkaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4dENvbmZp
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6c3VyZmFjZUNvbnRleHRD
b25maWcpOgorICAgICAgICAoV2ViQ29yZTo6RUdMQ29uZmlnU2VsZWN0b3I6Om5hdGl2ZVZpc3Vh
bElkKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpyZXNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6Y3JlYXRlQ29uZmlnKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xDb25maWdIZWxwZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhcmVkRUdM
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5OjpjcmVhdGUpOgor
ICAgICAgICAoRUdMQ29uZmlnU2VsZWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRv
d1RyYW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6Y29uZmlndXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5oOgorICAgICAg
ICAoRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZSk6CisKIDIwMTItMTItMzAgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIHdlYmF1
ZGlvL2RlY29kZS1hdWRpby1kYXRhLWJhc2ljLmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCBlN2U0NjljLi43MTJkYjBhIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yOTMs
OCArMjkzLDkgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAKICAgICBpZiAoV1RGX1VTRV9F
R0wpCiAgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCisgICAgICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuY3BwCiAgICAg
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHAKKyAg
ICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAog
ICAgICAgICApCiAgICAgZW5kaWYgKCkKIApkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuY3BwIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDhlYmFhLi4wMDAwMDAwCi0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRUdMQ29uZmlnSGVscGVyLmgiCi0KLSNpZiBV
U0UoRUdMKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZEVHTERpc3BsYXkqIFNoYXJl
ZEVHTERpc3BsYXk6Om1fc3RhdGljU2hhcmVkRUdMRGlzcGxheSA9IDA7Ci0KLXN0YXRpYyBFR0xp
bnQgY29uZmlnQXR0cmlidXRlTGlzdFtdID0gewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICBF
R0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0jZWxzZQotICAgIEVHTF9S
RU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVOR0xfQklULAotI2VuZGlmCi0gICAgRUdMX1JFRF9TSVpF
LCA4LAotICAgIEVHTF9HUkVFTl9TSVpFLCA4LAotICAgIEVHTF9CTFVFX1NJWkUsIDgsCi0gICAg
RUdMX1NURU5DSUxfU0laRSwgOCwKLSAgICBFR0xfQUxQSEFfU0laRSwgOCwKLSAgICBFR0xfU1VS
RkFDRV9UWVBFLCBFR0xfTk9ORSwKLSAgICBFR0xfTk9ORQotfTsKLQotdm9pZCBTaGFyZWRFR0xE
aXNwbGF5OjpkZXJlZigpCi17Ci0gICAgaWYgKGRlcmVmQmFzZSgpKSB7Ci0gICAgICAgIG1fc3Rh
dGljU2hhcmVkRUdMRGlzcGxheSA9IDA7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLX0K
LQotRUdMRGlzcGxheSBTaGFyZWRFR0xEaXNwbGF5OjpzaGFyZWRFR0xEaXNwbGF5KCkKLXsKLSAg
ICByZXR1cm4gbV9lZ2xEaXNwbGF5OwotfQotCi1TaGFyZWRFR0xEaXNwbGF5OjpTaGFyZWRFR0xE
aXNwbGF5KE5hdGl2ZVNoYXJlZERpc3BsYXkqIGRpc3BsYXkpCi0gICAgOiBtX2VnbERpc3BsYXko
RUdMX05PX0RJU1BMQVkpCi17Ci0gICAgaWYgKGRpc3BsYXkpCi0gICAgICAgIG1fZWdsRGlzcGxh
eSA9IGVnbEdldERpc3BsYXkocmVpbnRlcnByZXRfY2FzdDxFR0xOYXRpdmVEaXNwbGF5VHlwZT4o
ZGlzcGxheSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0RGlzcGxh
eShFR0xfREVGQVVMVF9ESVNQTEFZKTsKLQotICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05P
X0RJU1BMQVkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFR0xEaXNwbGF5IEluaXRpYWxpemF0aW9u
IGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEVHTEJvb2xlYW4gc3Vj
Y2VzczsKLSAgICBzdWNjZXNzID0gZWdsSW5pdGlhbGl6ZShtX2VnbERpc3BsYXksIDAsIDApOwot
Ci0gICAgaWYgKHN1Y2Nlc3MgIT0gRUdMX1RSVUUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFR0xJ
bml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIG1fZWdsRGlzcGxheSA9IEVHTF9OT19E
SVNQTEFZOwotICAgIH0KLQotICAgIHN1Y2Nlc3MgPSBlZ2xCaW5kQVBJKGVnbEFQSVZlcnNpb24p
OwotCi0gICAgaWYgKHN1Y2Nlc3MgIT0gRUdMX1RSVUUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gc2V0IEVHTCBBUEkoJWQpLiIsIGVnbEdldEVycm9yKCkpOwotICAgICAgICBtX2Vn
bERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkRUdMRGlz
cGxheTo6Y2xlYW51cCgpCi17Ci0gICAgaWYgKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExB
WSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZWdsTWFrZUN1cnJlbnQobV9lZ2xEaXNwbGF5LCBF
R0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLSAgICBlZ2xU
ZXJtaW5hdGUobV9lZ2xEaXNwbGF5KTsKLSAgICBtX2VnbERpc3BsYXkgPSBFR0xfTk9fRElTUExB
WTsKLX0KLQotU2hhcmVkRUdMRGlzcGxheTo6flNoYXJlZEVHTERpc3BsYXkoKQotewotICAgIGNs
ZWFudXAoKTsKLX0KLQotRUdMQ29uZmlnSGVscGVyOjpFR0xDb25maWdIZWxwZXIoTmF0aXZlU2hh
cmVkRGlzcGxheSogZGlzcGxheSkKLSAgICA6IG1fcGJ1ZmZlckZCQ29uZmlnKDApCi0gICAgLCBt
X3N1cmZhY2VDb250ZXh0RkJDb25maWcoMCkKLXsKLSAgICBtX3NoYXJlZERpc3BsYXkgPSBTaGFy
ZWRFR0xEaXNwbGF5OjpjcmVhdGUoZGlzcGxheSk7Ci19Ci0KLUVHTENvbmZpZ0hlbHBlcjo6fkVH
TENvbmZpZ0hlbHBlcigpCi17Ci19Ci0KLVBsYXRmb3JtRGlzcGxheSBFR0xDb25maWdIZWxwZXI6
OmRpc3BsYXkoKQotewotICAgIHJldHVybiBtX3NoYXJlZERpc3BsYXktPnNoYXJlZEVHTERpc3Bs
YXkoKTsKLX0KLQotRUdMQ29uZmlnIEVHTENvbmZpZ0hlbHBlcjo6cEJ1ZmZlckNvbnRleHRDb25m
aWcoKQotewotICAgIGlmICghbV9wYnVmZmVyRkJDb25maWcpIHsKLSAgICAgICAgY29uZmlnQXR0
cmlidXRlTGlzdFsxM10gPSBFR0xfUElYTUFQX0JJVDsKLSAgICAgICAgbV9wYnVmZmVyRkJDb25m
aWcgPSBjcmVhdGVDb25maWcoY29uZmlnQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIG1fcGJ1ZmZlckZCQ29uZmlnOwotfQotCi1FR0xDb25maWcgRUdMQ29uZmlnSGVscGVyOjpz
dXJmYWNlQ29udGV4dENvbmZpZygpCi17Ci0gICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25m
aWcpIHsKLSAgICAgICAgY29uZmlnQXR0cmlidXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsK
LSAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gY3JlYXRlQ29uZmlnKGNvbmZpZ0F0
dHJpYnV0ZUxpc3QpOwotICAgIH0KLQotICAgIHJldHVybiBtX3N1cmZhY2VDb250ZXh0RkJDb25m
aWc7Ci19Ci0KLUVHTGludCBFR0xDb25maWdIZWxwZXI6Om5hdGl2ZVZpc3VhbElkKGNvbnN0IEVH
TENvbmZpZyYgY29uZmlnKQotewotICAgIGlmIChkaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkp
Ci0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVHTGludCBlZ2xWYWx1ZSA9IDA7Ci0gICAgZWds
R2V0Q29uZmlnQXR0cmliKGRpc3BsYXkoKSwgY29uZmlnLCBFR0xfTkFUSVZFX1ZJU1VBTF9JRCwg
JmVnbFZhbHVlKTsKLQotICAgIHJldHVybiBlZ2xWYWx1ZTsKLX0KLQotdm9pZCBFR0xDb25maWdI
ZWxwZXI6OnJlc2V0KCkKLXsKLSAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSAwOwotICAg
IG1fcGJ1ZmZlckZCQ29uZmlnID0gMDsKLX0KLQotRUdMQ29uZmlnIEVHTENvbmZpZ0hlbHBlcjo6
Y3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pCi17Ci0gICAgaWYgKGRpc3BsYXko
KSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpbnQgbnVtQ29u
ZmlnczsKLSAgICBFR0xDb25maWcgY29uZmlnID0gMDsKLQotICAgIGlmICghZWdsQ2hvb3NlQ29u
ZmlnKGRpc3BsYXkoKSwgYXR0cmlidXRlcywgJmNvbmZpZywgMSwgJm51bUNvbmZpZ3MpKQotICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgc3VwcG9ydGVkIGNvbmZpZ2lyYXRpb25zLiIp
OwotCi0gICAgaWYgKG51bUNvbmZpZ3MgIT0gMSkgewotICAgICAgICBMT0dfRVJST1IoIkVHTENo
b29zZUNvbmZpZyBkaWRuJ3QgcmV0dXJuIGV4YWN0bHkgb25lIGNvbmZpZyBidXQgKCVkKS4iLCBu
dW1Db25maWdzKTsKLSAgICAgICAgY29uZmlnID0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY29u
ZmlnOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuaCBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ODcwMTEuLjAwMDAwMDAKLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRUdM
Q29uZmlnSGVscGVyX2gKLSNkZWZpbmUgRUdMQ29uZmlnSGVscGVyX2gKLQotI2lmIFVTRShFR0wp
Ci0KLSNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10
eXBlZGVmIERpc3BsYXkgTmF0aXZlU2hhcmVkRGlzcGxheTsKLQotY2xhc3MgU2hhcmVkRUdMRGlz
cGxheSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTaGFyZWRFR0xEaXNwbGF5KTsKLQotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNoYXJlZEVHTERpc3BsYXk+IGNyZWF0ZShOYXRpdmVTaGFyZWREaXNwbGF5KiBkaXNwbGF5KQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkpCi0gICAgICAgICAg
ICBtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkgPSBuZXcgU2hhcmVkRUdMRGlzcGxheShkaXNwbGF5
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5LT5y
ZWYoKTsKLQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGRlcmVmKCk7Ci0gICAgRUdMRGlzcGxheSBzaGFyZWRFR0xE
aXNwbGF5KCk7Ci0KLXByb3RlY3RlZDoKLSAgICBTaGFyZWRFR0xEaXNwbGF5KE5hdGl2ZVNoYXJl
ZERpc3BsYXkqKTsKLSAgICB2b2lkIGNsZWFudXAoKTsKLSAgICB2aXJ0dWFsIH5TaGFyZWRFR0xE
aXNwbGF5KCk7Ci0KLSAgICBzdGF0aWMgU2hhcmVkRUdMRGlzcGxheSogbV9zdGF0aWNTaGFyZWRF
R0xEaXNwbGF5OwotICAgIEVHTERpc3BsYXkgbV9lZ2xEaXNwbGF5OwotfTsKLQotY2xhc3MgRUdM
Q29uZmlnSGVscGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFR0xDb25maWdIZWxwZXIp
OwotCi1wdWJsaWM6Ci0gICAgRUdMQ29uZmlnSGVscGVyKE5hdGl2ZVNoYXJlZERpc3BsYXkqID0g
MCk7Ci0gICAgdmlydHVhbCB+RUdMQ29uZmlnSGVscGVyKCk7Ci0gICAgUGxhdGZvcm1EaXNwbGF5
IGRpc3BsYXkoKTsKLSAgICB2aXJ0dWFsIEVHTENvbmZpZyBwQnVmZmVyQ29udGV4dENvbmZpZygp
OwotICAgIHZpcnR1YWwgRUdMQ29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCk7Ci0gICAgRUdM
aW50IG5hdGl2ZVZpc3VhbElkKGNvbnN0IEVHTENvbmZpZyYpOwotICAgIHZvaWQgcmVzZXQoKTsK
LQotcHJpdmF0ZToKLSAgICBFR0xDb25maWcgY3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1
dGVzW10pOwotCi1wcm90ZWN0ZWQ6Ci0gICAgRUdMQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmlnOwot
ICAgIEVHTENvbmZpZyBtX3N1cmZhY2VDb250ZXh0RkJDb25maWc7Ci0gICAgUmVmUHRyPFNoYXJl
ZEVHTERpc3BsYXk+IG1fc2hhcmVkRGlzcGxheTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2Vn
bC9FR0xDb25maWdTZWxlY3Rvci5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWdsL0VHTENvbmZpZ1NlbGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jYmNkMjEyCi0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdTZWxlY3Rvci5jcHAKQEAgLTAs
MCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJFR0xDb25maWdTZWxlY3Rvci5oIgorCisjaWYgVVNFKEVHTCkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTaGFyZWRFR0xEaXNwbGF5KiBTaGFyZWRFR0xEaXNwbGF5OjptX3N0YXRp
Y1NoYXJlZEVHTERpc3BsYXkgPSAwOworCitzdGF0aWMgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZUxp
c3RbXSA9IHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwg
RUdMX09QRU5HTF9FUzJfQklULAorI2Vsc2UKKyAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xf
T1BFTkdMX0JJVCwKKyNlbmRpZgorICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICBFR0xfR1JFRU5f
U0laRSwgOCwKKyAgICBFR0xfQkxVRV9TSVpFLCA4LAorICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDgs
CisgICAgRUdMX0FMUEhBX1NJWkUsIDgsCisgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX05PTkUs
CisgICAgRUdMX05PTkUKK307CisKK3ZvaWQgU2hhcmVkRUdMRGlzcGxheTo6ZGVyZWYoKQorewor
ICAgIGlmIChkZXJlZkJhc2UoKSkgeworICAgICAgICBtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkg
PSAwOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9Cit9CisKK0VHTERpc3BsYXkgU2hhcmVk
RUdMRGlzcGxheTo6c2hhcmVkRUdMRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWds
RGlzcGxheTsKK30KKworU2hhcmVkRUdMRGlzcGxheTo6U2hhcmVkRUdMRGlzcGxheShOYXRpdmVT
aGFyZWREaXNwbGF5KiBkaXNwbGF5KQorICAgIDogbV9lZ2xEaXNwbGF5KEVHTF9OT19ESVNQTEFZ
KQoreworICAgIGlmIChkaXNwbGF5KQorICAgICAgICBtX2VnbERpc3BsYXkgPSBlZ2xHZXREaXNw
bGF5KHJlaW50ZXJwcmV0X2Nhc3Q8RUdMTmF0aXZlRGlzcGxheVR5cGU+KGRpc3BsYXkpKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRf
RElTUExBWSk7CisKKyAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7CisgICAgc3Vj
Y2VzcyA9IGVnbEluaXRpYWxpemUobV9lZ2xEaXNwbGF5LCAwLCAwKTsKKworICAgIGlmIChzdWNj
ZXNzICE9IEVHTF9UUlVFKSB7CisgICAgICAgIExPR19FUlJPUigiRUdMSW5pdGlhbGl6YXRpb24g
ZmFpbGVkLiIpOworICAgICAgICBtX2VnbERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9
CisKKyAgICBzdWNjZXNzID0gZWdsQmluZEFQSShlZ2xBUElWZXJzaW9uKTsKKworICAgIGlmIChz
dWNjZXNzICE9IEVHTF9UUlVFKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBF
R0wgQVBJKCVkKS4iLCBlZ2xHZXRFcnJvcigpKTsKKyAgICAgICAgbV9lZ2xEaXNwbGF5ID0gRUdM
X05PX0RJU1BMQVk7CisgICAgfQorfQorCit2b2lkIFNoYXJlZEVHTERpc3BsYXk6OmNsZWFudXAo
KQoreworICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGVnbE1ha2VDdXJyZW50KG1fZWdsRGlzcGxheSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgZWdsVGVybWluYXRlKG1fZWds
RGlzcGxheSk7CisgICAgbV9lZ2xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Cit9CisKK1NoYXJl
ZEVHTERpc3BsYXk6On5TaGFyZWRFR0xEaXNwbGF5KCkKK3sKKyAgICBjbGVhbnVwKCk7Cit9CisK
K0VHTENvbmZpZ1NlbGVjdG9yOjpFR0xDb25maWdTZWxlY3RvcihOYXRpdmVTaGFyZWREaXNwbGF5
KiBkaXNwbGF5KQorICAgIDogbV9wYnVmZmVyRkJDb25maWcoMCkKKyAgICAsIG1fc3VyZmFjZUNv
bnRleHRGQkNvbmZpZygwKQoreworICAgIG1fc2hhcmVkRGlzcGxheSA9IFNoYXJlZEVHTERpc3Bs
YXk6OmNyZWF0ZShkaXNwbGF5KTsKK30KKworRUdMQ29uZmlnU2VsZWN0b3I6On5FR0xDb25maWdT
ZWxlY3RvcigpCit7Cit9CisKK1BsYXRmb3JtRGlzcGxheSBFR0xDb25maWdTZWxlY3Rvcjo6ZGlz
cGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hhcmVkRGlzcGxheS0+c2hhcmVkRUdMRGlz
cGxheSgpOworfQorCitFR0xDb25maWcgRUdMQ29uZmlnU2VsZWN0b3I6OnBCdWZmZXJDb250ZXh0
Q29uZmlnKCkKK3sKKyAgICBpZiAoIW1fcGJ1ZmZlckZCQ29uZmlnKSB7CisgICAgICAgIGNvbmZp
Z0F0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7CisgICAgICAgIG1fcGJ1ZmZlckZC
Q29uZmlnID0gY3JlYXRlQ29uZmlnKGNvbmZpZ0F0dHJpYnV0ZUxpc3QpOworICAgIH0KKworICAg
IHJldHVybiBtX3BidWZmZXJGQkNvbmZpZzsKK30KKworRUdMQ29uZmlnIEVHTENvbmZpZ1NlbGVj
dG9yOjpzdXJmYWNlQ29udGV4dENvbmZpZygpCit7CisgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0
RkJDb25maWcpIHsKKyAgICAgICAgY29uZmlnQXR0cmlidXRlTGlzdFsxM10gPSBFR0xfV0lORE9X
X0JJVDsKKyAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gY3JlYXRlQ29uZmlnKGNv
bmZpZ0F0dHJpYnV0ZUxpc3QpOworICAgIH0KKworICAgIHJldHVybiBtX3N1cmZhY2VDb250ZXh0
RkJDb25maWc7Cit9CisKK0VHTGludCBFR0xDb25maWdTZWxlY3Rvcjo6bmF0aXZlVmlzdWFsSWQo
Y29uc3QgRUdMQ29uZmlnJiBjb25maWcpIGNvbnN0Cit7CisgICAgaWYgKGRpc3BsYXkoKSA9PSBF
R0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRUdMaW50IGVnbFZhbHVl
ID0gMDsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSgpLCBjb25maWcsIEVHTF9OQVRJ
VkVfVklTVUFMX0lELCAmZWdsVmFsdWUpOworCisgICAgcmV0dXJuIGVnbFZhbHVlOworfQorCit2
b2lkIEVHTENvbmZpZ1NlbGVjdG9yOjpyZXNldCgpCit7CisgICAgbV9zdXJmYWNlQ29udGV4dEZC
Q29uZmlnID0gMDsKKyAgICBtX3BidWZmZXJGQkNvbmZpZyA9IDA7Cit9CisKK0VHTENvbmZpZyBF
R0xDb25maWdTZWxlY3Rvcjo6Y3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pCit7
CisgICAgaWYgKGRpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpbnQgbnVtQ29uZmlnczsKKyAgICBFR0xDb25maWcgY29uZmlnID0gMDsKKworICAg
IGlmICghZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXkoKSwgYXR0cmlidXRlcywgJmNvbmZpZywgMSwg
Jm51bUNvbmZpZ3MpKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgc3VwcG9ydGVk
IGNvbmZpZ2lyYXRpb25zLiIpOworCisgICAgaWYgKG51bUNvbmZpZ3MgIT0gMSkgeworICAgICAg
ICBMT0dfRVJST1IoIkVHTENob29zZUNvbmZpZyBkaWRuJ3QgcmV0dXJuIGV4YWN0bHkgb25lIGNv
bmZpZyBidXQgKCVkKS4iLCBudW1Db25maWdzKTsKKyAgICAgICAgY29uZmlnID0gMDsKKyAgICB9
CisKKyAgICByZXR1cm4gY29uZmlnOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdTZWxlY3Rv
ci5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25m
aWdTZWxlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MzFhZGMK
LS0tIC9kZXYvbnVsbAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWdsL0VHTENvbmZpZ1NlbGVjdG9yLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBFR0xDb25maWdTZWxlY3Rvcl9oCisjZGVmaW5lIEVHTENvbmZpZ1Nl
bGVjdG9yX2gKKworI2lmIFVTRShFR0wpCisKKyNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIERpc3BsYXkgTmF0aXZlU2hhcmVkRGlzcGxh
eTsKKworY2xhc3MgU2hhcmVkRUdMRGlzcGxheSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNl
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRFR0xEaXNwbGF5KTsKKworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEVHTERpc3BsYXk+IGNyZWF0ZShOYXRpdmVT
aGFyZWREaXNwbGF5KiBkaXNwbGF5KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3N0YXRpY1NoYXJl
ZEVHTERpc3BsYXkpCisgICAgICAgICAgICBtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkgPSBuZXcg
U2hhcmVkRUdMRGlzcGxheShkaXNwbGF5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9z
dGF0aWNTaGFyZWRFR0xEaXNwbGF5LT5yZWYoKTsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5KTsKKyAgICB9CisKKyAgICB2b2lkIGRlcmVmKCk7Cisg
ICAgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAg
ICBTaGFyZWRFR0xEaXNwbGF5KE5hdGl2ZVNoYXJlZERpc3BsYXkqKTsKKyAgICB2b2lkIGNsZWFu
dXAoKTsKKyAgICB2aXJ0dWFsIH5TaGFyZWRFR0xEaXNwbGF5KCk7CisKKyAgICBzdGF0aWMgU2hh
cmVkRUdMRGlzcGxheSogbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5OworICAgIEVHTERpc3BsYXkg
bV9lZ2xEaXNwbGF5OworfTsKKworY2xhc3MgRUdMQ29uZmlnU2VsZWN0b3IgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEVHTENvbmZpZ1NlbGVjdG9yKTsKKworcHVibGljOgorICAgIEVHTENv
bmZpZ1NlbGVjdG9yKE5hdGl2ZVNoYXJlZERpc3BsYXkqID0gMCk7CisgICAgdmlydHVhbCB+RUdM
Q29uZmlnU2VsZWN0b3IoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXkgZGlzcGxheSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgRUdMQ29uZmlnIHBCdWZmZXJDb250ZXh0Q29uZmlnKCk7CisgICAgdmlydHVh
bCBFR0xDb25maWcgc3VyZmFjZUNvbnRleHRDb25maWcoKTsKKyAgICBFR0xpbnQgbmF0aXZlVmlz
dWFsSWQoY29uc3QgRUdMQ29uZmlnJikgY29uc3Q7CisgICAgdm9pZCByZXNldCgpOworCitwcml2
YXRlOgorICAgIEVHTENvbmZpZyBjcmVhdGVDb25maWcoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSk7
CisKK3Byb3RlY3RlZDoKKyAgICBFR0xDb25maWcgbV9wYnVmZmVyRkJDb25maWc7CisgICAgRUdM
Q29uZmlnIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZzsKKyAgICBSZWZQdHI8U2hhcmVkRUdMRGlz
cGxheT4gbV9zaGFyZWREaXNwbGF5OworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYg
LS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1
cmZhY2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xTdXJmYWNlLmNwcAppbmRleCBmYzk0MGRlLi45OTJiM2E2IDEwMDY0NAotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5j
cHAKQEAgLTM0LDIzICszNCwyMyBAQCBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5k
b3dUcmFuc3BvcnRTdXJmYWNlKCkKICAgICA6IEdMUGxhdGZvcm1TdXJmYWNlKCkKIHsKICAgICBt
X25hdGl2ZVJlc291cmNlID0gYWRvcHRQdHIobmV3IE5hdGl2ZU9mZlNjcmVlbldpbmRvdygpKTsK
LSAgICBtX2VnbENvbmZpZ0hlbHBlciA9IGFkb3B0UHRyKG5ldyBFR0xDb25maWdIZWxwZXIobV9u
YXRpdmVSZXNvdXJjZS0+bmF0aXZlU2hhcmVkRGlzcGxheSgpKSk7Ci0gICAgbV9zaGFyZWREaXNw
bGF5ID0gbV9lZ2xDb25maWdIZWxwZXItPmRpc3BsYXkoKTsKKyAgICBtX2NvbmZpZ1NlbGVjdG9y
ID0gYWRvcHRQdHIobmV3IEVHTENvbmZpZ1NlbGVjdG9yKG1fbmF0aXZlUmVzb3VyY2UtPm5hdGl2
ZVNoYXJlZERpc3BsYXkoKSkpOworICAgIG1fc2hhcmVkRGlzcGxheSA9IG1fY29uZmlnU2VsZWN0
b3ItPmRpc3BsYXkoKTsKIAogICAgIGlmIChtX3NoYXJlZERpc3BsYXkgPT0gRUdMX05PX0RJU1BM
QVkpIHsKLSAgICAgICAgbV9lZ2xDb25maWdIZWxwZXIgPSBudWxscHRyOworICAgICAgICBtX2Nv
bmZpZ1NlbGVjdG9yID0gbnVsbHB0cjsKICAgICAgICAgbV9uYXRpdmVSZXNvdXJjZSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFR0xDb25maWcgY29uZmlnID0gbV9l
Z2xDb25maWdIZWxwZXItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCk7CisgICAgRUdMQ29uZmlnIGNv
bmZpZyA9IG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCk7CiAKICAgICBp
ZiAoIWNvbmZpZykgewogICAgICAgICBkZXN0cm95KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBFR0xpbnQgdmlzdWFsSWQgPSBtX2VnbENvbmZpZ0hlbHBlci0+bmF0aXZlVmlzdWFs
SWQoY29uZmlnKTsKKyAgICBFR0xpbnQgdmlzdWFsSWQgPSBtX2NvbmZpZ1NlbGVjdG9yLT5uYXRp
dmVWaXN1YWxJZChjb25maWcpOwogCiAgICAgaWYgKHZpc3VhbElkID09IC0xKSB7CiAgICAgICAg
IGRlc3Ryb3koKTsKQEAgLTY5LDcgKzY5LDcgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6
RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2RyYXdhYmxlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtX3NoYXJlZERpc3BsYXksIG1f
ZWdsQ29uZmlnSGVscGVyLT5zdXJmYWNlQ29udGV4dENvbmZpZygpLCAoRUdMTmF0aXZlV2luZG93
VHlwZSltX2J1ZmZlckhhbmRsZSwgMCk7CisgICAgbV9kcmF3YWJsZSA9IGVnbENyZWF0ZVdpbmRv
d1N1cmZhY2UobV9zaGFyZWREaXNwbGF5LCBtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4
dENvbmZpZygpLCAoRUdMTmF0aXZlV2luZG93VHlwZSltX2J1ZmZlckhhbmRsZSwgMCk7CiAKICAg
ICBpZiAobV9kcmF3YWJsZSA9PSBFR0xfTk9fU1VSRkFDRSkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgRUdMIHN1cmZhY2UoJWQpLiIsIGVnbEdldEVycm9yKCkpOwpAQCAt
ODMsNyArODMsNyBAQCBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjp+RUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZSgpCiAKIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBFR0xXaW5kb3dUcmFuc3BvcnRT
dXJmYWNlOjpjb25maWd1cmF0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9lZ2xDb25maWdIZWxwZXIt
PnN1cmZhY2VDb250ZXh0Q29uZmlnKCk7CisgICAgcmV0dXJuIG1fY29uZmlnU2VsZWN0b3ItPnN1
cmZhY2VDb250ZXh0Q29uZmlnKCk7CiB9CiAKIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFj
ZTo6c3dhcEJ1ZmZlcnMoKQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgRUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZTo6ZGVzdHJveSgpCiAgICAgbV9uYXRpdmVSZXNvdXJjZS0+ZGVzdHJveVdpbmRv
dyhtX2J1ZmZlckhhbmRsZSk7CiAgICAgZnJlZUVHTFJlc291cmNlcygpOwogICAgIG1fbmF0aXZl
UmVzb3VyY2UgPSBudWxscHRyOwotICAgIG1fZWdsQ29uZmlnSGVscGVyID0gbnVsbHB0cjsKKyAg
ICBtX2NvbmZpZ1NlbGVjdG9yID0gbnVsbHB0cjsKICAgICBtX2J1ZmZlckhhbmRsZSA9IDA7CiB9
CiAKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9l
Z2wvRUdMU3VyZmFjZS5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VnbC9FR0xTdXJmYWNlLmgKaW5kZXggNzg4NjNkYy4uNWMyODhhOSAxMDA2NDQKLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmgKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNl
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShFR0wpICYmIFVTRShHUkFQSElDU19TVVJG
QUNFKQogCi0jaW5jbHVkZSAiRUdMQ29uZmlnSGVscGVyLmgiCisjaW5jbHVkZSAiRUdMQ29uZmln
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJHTFBsYXRmb3JtU3VyZmFjZS5oIgogCiAjaW5jbHVkZSA8
Z2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oPgpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZnJlZUVHTFJlc291cmNlcygpOwogICAgIE93blB0cjxOYXRpdmVPZmZT
Y3JlZW5XaW5kb3c+IG1fbmF0aXZlUmVzb3VyY2U7Ci0gICAgT3duUHRyPEVHTENvbmZpZ0hlbHBl
cj4gbV9lZ2xDb25maWdIZWxwZXI7CisgICAgT3duUHRyPEVHTENvbmZpZ1NlbGVjdG9yPiBtX2Nv
bmZpZ1NlbGVjdG9yOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="198401"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="198402"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180963</attachid>
            <date>2012-12-30 21:24:39 -0800</date>
            <delta_ts>2012-12-30 23:07:47 -0800</delta_ts>
            <desc>patchv2</desc>
            <filename>changelogfix.patch</filename>
            <type>text/plain</type>
            <size>23720</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBDaGFuZ2VMb2cgQ2hhbmdlTG9nCmluZGV4IGVhYzUyZTUuLjI5ZTk2ZmMgMTAw
NjQ0Ci0tLSBDaGFuZ2VMb2cKKysrIENoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEy
LTMwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KKwor
ICAgICAgICBbRUZMXSBbV2ViR0xdIFJlbmFtZSBFR0xDb25maWdIZWxwZXIgYXMgRUdMQ29uZmln
U2VsZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBUaGlzIGlzIHRvIHN5bmMgdGhlIG5hbWluZyBjb252ZW50aW9ucyBvZiBv
dXIgY2xhc3NlcyBpbiBib3RoIEVHTCBhbmQgR0xYIGltcGxlbWVudGF0aW9ucy4gCisgICAgICAg
IEluIG91ciBHTFggaW1wbGVtZW50YXRpb24sIGNsYXNzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Ft
ZSBmdW5jdGlvbmFsaXR5IGlzIG5hbWVkIGFzIEdMWENvbmZpZ1NlbGVjdG9yLiAKKyAgICAgICAg
VGhpcyBwYXRjaCByZW5hbWVzIEVHTENvbmZpZ0hlbHBlciBhcyBFR0xDb25maWdTZWxlY3Rvci4K
KworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgorCiAyMDEyLTEyLTI3
ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXZWJHTF0gSW1wbGVtZW50IEVHTCBzdXBwb3J0IHdpdGggR0xYLgpkaWZmIC0t
Z2l0IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZDFhNmMxMC4uZTQ1NGIzYyAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKyAgICAgICAgW0VG
TF0gW1dlYkdMXSBSZW5hbWUgRUdMQ29uZmlnSGVscGVyIGFzIEVHTENvbmZpZ1NlbGVjdG9yLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAg
ICAgVGhpcyBpcyB0byBzeW5jIHRoZSBuYW1pbmcgY29udmVudGlvbnMgb2Ygb3VyIGNsYXNzZXMg
aW4gYm90aCBFR0wgYW5kIEdMWCBpbXBsZW1lbnRhdGlvbnMuIAorICAgICAgICBJbiBvdXIgR0xY
IGltcGxlbWVudGF0aW9uLCBjbGFzcyByZXNwb25zaWJsZSBmb3IgdGhlIHNhbWUgZnVuY3Rpb25h
bGl0eSBpcyBuYW1lZCBhcyBHTFhDb25maWdTZWxlY3Rvci4gCisgICAgICAgIFRoaXMgcGF0Y2gg
cmVuYW1lcyBFR0xDb25maWdIZWxwZXIgYXMgRUdMQ29uZmlnU2VsZWN0b3IuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZpZ0hlbHBlci5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEVHTERpc3BsYXk6OmRlcmVm
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEVHTERpc3BsYXk6OnNoYXJlZEVHTERpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRUdMRGlzcGxheTo6U2hhcmVkRUdMRGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5OjpjbGVhbnVwKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEVHTERpc3BsYXk6On5TaGFyZWRFR0xEaXNwbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpFR0xDb25maWdTZWxlY3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6fkVHTENvbmZpZ1NlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYkNv
cmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4dENvbmZpZyk6CisgICAgICAgIChX
ZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6c3VyZmFjZUNvbnRleHRDb25maWcpOgorICAgICAg
ICAoV2ViQ29yZTo6RUdMQ29uZmlnU2VsZWN0b3I6Om5hdGl2ZVZpc3VhbElkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpF
R0xDb25maWdTZWxlY3Rvcjo6Y3JlYXRlQ29uZmlnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhcmVkRUdMRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5OjpjcmVhdGUpOgorICAgICAgICAoRUdMQ29u
ZmlnU2VsZWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RUdMV2lu
ZG93VHJhbnNwb3J0U3VyZmFjZTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
R0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5oOgorICAgICAgICAoRUdMV2luZG93VHJh
bnNwb3J0U3VyZmFjZSk6CisKIDIwMTItMTItMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIHdlYmF1ZGlvL2RlY29kZS1hdWRp
by1kYXRhLWJhc2ljLmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlN2U0Njlj
Li43MTJkYjBhIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysr
IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yOTMsOCArMjkzLDkgQEAgaWYg
KFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAKICAgICBpZiAoV1RGX1VTRV9FR0wpCiAgICAgICAgIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuY3BwCiAgICAgICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29udGV4dC5jcHAKKyAgICAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAogICAgICAgICApCiAgICAg
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiMDhlYmFhLi4wMDAwMDAwCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiRUdMQ29uZmlnSGVscGVyLmgiCi0KLSNpZiBVU0UoRUdMKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVNoYXJlZEVHTERpc3BsYXkqIFNoYXJlZEVHTERpc3BsYXk6Om1f
c3RhdGljU2hhcmVkRUdMRGlzcGxheSA9IDA7Ci0KLXN0YXRpYyBFR0xpbnQgY29uZmlnQXR0cmli
dXRlTGlzdFtdID0gewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICBFR0xfUkVOREVSQUJMRV9U
WVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCi0jZWxzZQotICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUs
IEVHTF9PUEVOR0xfQklULAotI2VuZGlmCi0gICAgRUdMX1JFRF9TSVpFLCA4LAotICAgIEVHTF9H
UkVFTl9TSVpFLCA4LAotICAgIEVHTF9CTFVFX1NJWkUsIDgsCi0gICAgRUdMX1NURU5DSUxfU0la
RSwgOCwKLSAgICBFR0xfQUxQSEFfU0laRSwgOCwKLSAgICBFR0xfU1VSRkFDRV9UWVBFLCBFR0xf
Tk9ORSwKLSAgICBFR0xfTk9ORQotfTsKLQotdm9pZCBTaGFyZWRFR0xEaXNwbGF5OjpkZXJlZigp
Ci17Ci0gICAgaWYgKGRlcmVmQmFzZSgpKSB7Ci0gICAgICAgIG1fc3RhdGljU2hhcmVkRUdMRGlz
cGxheSA9IDA7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLX0KLQotRUdMRGlzcGxheSBT
aGFyZWRFR0xEaXNwbGF5OjpzaGFyZWRFR0xEaXNwbGF5KCkKLXsKLSAgICByZXR1cm4gbV9lZ2xE
aXNwbGF5OwotfQotCi1TaGFyZWRFR0xEaXNwbGF5OjpTaGFyZWRFR0xEaXNwbGF5KE5hdGl2ZVNo
YXJlZERpc3BsYXkqIGRpc3BsYXkpCi0gICAgOiBtX2VnbERpc3BsYXkoRUdMX05PX0RJU1BMQVkp
Ci17Ci0gICAgaWYgKGRpc3BsYXkpCi0gICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3Bs
YXkocmVpbnRlcnByZXRfY2FzdDxFR0xOYXRpdmVEaXNwbGF5VHlwZT4oZGlzcGxheSkpOwotICAg
IGVsc2UKLSAgICAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShFR0xfREVGQVVMVF9E
SVNQTEFZKTsKLQotICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJFR0xEaXNwbGF5IEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEVHTEJvb2xlYW4gc3VjY2VzczsKLSAgICBzdWNj
ZXNzID0gZWdsSW5pdGlhbGl6ZShtX2VnbERpc3BsYXksIDAsIDApOwotCi0gICAgaWYgKHN1Y2Nl
c3MgIT0gRUdMX1RSVUUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFR0xJbml0aWFsaXphdGlvbiBm
YWlsZWQuIik7Ci0gICAgICAgIG1fZWdsRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgIH0K
LQotICAgIHN1Y2Nlc3MgPSBlZ2xCaW5kQVBJKGVnbEFQSVZlcnNpb24pOwotCi0gICAgaWYgKHN1
Y2Nlc3MgIT0gRUdMX1RSVUUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IEVH
TCBBUEkoJWQpLiIsIGVnbEdldEVycm9yKCkpOwotICAgICAgICBtX2VnbERpc3BsYXkgPSBFR0xf
Tk9fRElTUExBWTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhcmVkRUdMRGlzcGxheTo6Y2xlYW51cCgp
Ci17Ci0gICAgaWYgKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZWdsTWFrZUN1cnJlbnQobV9lZ2xEaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwg
RUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLSAgICBlZ2xUZXJtaW5hdGUobV9lZ2xE
aXNwbGF5KTsKLSAgICBtX2VnbERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLX0KLQotU2hhcmVk
RUdMRGlzcGxheTo6flNoYXJlZEVHTERpc3BsYXkoKQotewotICAgIGNsZWFudXAoKTsKLX0KLQot
RUdMQ29uZmlnSGVscGVyOjpFR0xDb25maWdIZWxwZXIoTmF0aXZlU2hhcmVkRGlzcGxheSogZGlz
cGxheSkKLSAgICA6IG1fcGJ1ZmZlckZCQ29uZmlnKDApCi0gICAgLCBtX3N1cmZhY2VDb250ZXh0
RkJDb25maWcoMCkKLXsKLSAgICBtX3NoYXJlZERpc3BsYXkgPSBTaGFyZWRFR0xEaXNwbGF5Ojpj
cmVhdGUoZGlzcGxheSk7Ci19Ci0KLUVHTENvbmZpZ0hlbHBlcjo6fkVHTENvbmZpZ0hlbHBlcigp
Ci17Ci19Ci0KLVBsYXRmb3JtRGlzcGxheSBFR0xDb25maWdIZWxwZXI6OmRpc3BsYXkoKQotewot
ICAgIHJldHVybiBtX3NoYXJlZERpc3BsYXktPnNoYXJlZEVHTERpc3BsYXkoKTsKLX0KLQotRUdM
Q29uZmlnIEVHTENvbmZpZ0hlbHBlcjo6cEJ1ZmZlckNvbnRleHRDb25maWcoKQotewotICAgIGlm
ICghbV9wYnVmZmVyRkJDb25maWcpIHsKLSAgICAgICAgY29uZmlnQXR0cmlidXRlTGlzdFsxM10g
PSBFR0xfUElYTUFQX0JJVDsKLSAgICAgICAgbV9wYnVmZmVyRkJDb25maWcgPSBjcmVhdGVDb25m
aWcoY29uZmlnQXR0cmlidXRlTGlzdCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fcGJ1ZmZlckZC
Q29uZmlnOwotfQotCi1FR0xDb25maWcgRUdMQ29uZmlnSGVscGVyOjpzdXJmYWNlQ29udGV4dENv
bmZpZygpCi17Ci0gICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpIHsKLSAgICAgICAg
Y29uZmlnQXR0cmlidXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsKLSAgICAgICAgbV9zdXJm
YWNlQ29udGV4dEZCQ29uZmlnID0gY3JlYXRlQ29uZmlnKGNvbmZpZ0F0dHJpYnV0ZUxpc3QpOwot
ICAgIH0KLQotICAgIHJldHVybiBtX3N1cmZhY2VDb250ZXh0RkJDb25maWc7Ci19Ci0KLUVHTGlu
dCBFR0xDb25maWdIZWxwZXI6Om5hdGl2ZVZpc3VhbElkKGNvbnN0IEVHTENvbmZpZyYgY29uZmln
KQotewotICAgIGlmIChkaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHJldHVy
biAtMTsKLQotICAgIEVHTGludCBlZ2xWYWx1ZSA9IDA7Ci0gICAgZWdsR2V0Q29uZmlnQXR0cmli
KGRpc3BsYXkoKSwgY29uZmlnLCBFR0xfTkFUSVZFX1ZJU1VBTF9JRCwgJmVnbFZhbHVlKTsKLQot
ICAgIHJldHVybiBlZ2xWYWx1ZTsKLX0KLQotdm9pZCBFR0xDb25maWdIZWxwZXI6OnJlc2V0KCkK
LXsKLSAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSAwOwotICAgIG1fcGJ1ZmZlckZCQ29u
ZmlnID0gMDsKLX0KLQotRUdMQ29uZmlnIEVHTENvbmZpZ0hlbHBlcjo6Y3JlYXRlQ29uZmlnKGNv
bnN0IGludCBhdHRyaWJ1dGVzW10pCi17Ci0gICAgaWYgKGRpc3BsYXkoKSA9PSBFR0xfTk9fRElT
UExBWSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpbnQgbnVtQ29uZmlnczsKLSAgICBFR0xD
b25maWcgY29uZmlnID0gMDsKLQotICAgIGlmICghZWdsQ2hvb3NlQ29uZmlnKGRpc3BsYXkoKSwg
YXR0cmlidXRlcywgJmNvbmZpZywgMSwgJm51bUNvbmZpZ3MpKQotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBnZXQgc3VwcG9ydGVkIGNvbmZpZ2lyYXRpb25zLiIpOwotCi0gICAgaWYgKG51
bUNvbmZpZ3MgIT0gMSkgewotICAgICAgICBMT0dfRVJST1IoIkVHTENob29zZUNvbmZpZyBkaWRu
J3QgcmV0dXJuIGV4YWN0bHkgb25lIGNvbmZpZyBidXQgKCVkKS4iLCBudW1Db25maWdzKTsKLSAg
ICAgICAgY29uZmlnID0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY29uZmlnOwotfQotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2VnbC9FR0xDb25maWdIZWxwZXIuaCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE5ODcwMTEuLjAwMDAwMDAKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDky
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRUdMQ29uZmlnSGVscGVyX2gK
LSNkZWZpbmUgRUdMQ29uZmlnSGVscGVyX2gKLQotI2lmIFVTRShFR0wpCi0KLSNpbmNsdWRlIDxv
cGVuZ2wvR0xEZWZzLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVmIERpc3BsYXkg
TmF0aXZlU2hhcmVkRGlzcGxheTsKLQotY2xhc3MgU2hhcmVkRUdMRGlzcGxheSA6IHB1YmxpYyBX
VEY6OlJlZkNvdW50ZWRCYXNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRFR0xE
aXNwbGF5KTsKLQotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEVHTERpc3Bs
YXk+IGNyZWF0ZShOYXRpdmVTaGFyZWREaXNwbGF5KiBkaXNwbGF5KQotICAgIHsKLSAgICAgICAg
aWYgKCFtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkpCi0gICAgICAgICAgICBtX3N0YXRpY1NoYXJl
ZEVHTERpc3BsYXkgPSBuZXcgU2hhcmVkRUdMRGlzcGxheShkaXNwbGF5KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5LT5yZWYoKTsKLQotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGRlcmVmKCk7Ci0gICAgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCk7Ci0KLXBy
b3RlY3RlZDoKLSAgICBTaGFyZWRFR0xEaXNwbGF5KE5hdGl2ZVNoYXJlZERpc3BsYXkqKTsKLSAg
ICB2b2lkIGNsZWFudXAoKTsKLSAgICB2aXJ0dWFsIH5TaGFyZWRFR0xEaXNwbGF5KCk7Ci0KLSAg
ICBzdGF0aWMgU2hhcmVkRUdMRGlzcGxheSogbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5OwotICAg
IEVHTERpc3BsYXkgbV9lZ2xEaXNwbGF5OwotfTsKLQotY2xhc3MgRUdMQ29uZmlnSGVscGVyIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFR0xDb25maWdIZWxwZXIpOwotCi1wdWJsaWM6Ci0g
ICAgRUdMQ29uZmlnSGVscGVyKE5hdGl2ZVNoYXJlZERpc3BsYXkqID0gMCk7Ci0gICAgdmlydHVh
bCB+RUdMQ29uZmlnSGVscGVyKCk7Ci0gICAgUGxhdGZvcm1EaXNwbGF5IGRpc3BsYXkoKTsKLSAg
ICB2aXJ0dWFsIEVHTENvbmZpZyBwQnVmZmVyQ29udGV4dENvbmZpZygpOwotICAgIHZpcnR1YWwg
RUdMQ29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCk7Ci0gICAgRUdMaW50IG5hdGl2ZVZpc3Vh
bElkKGNvbnN0IEVHTENvbmZpZyYpOwotICAgIHZvaWQgcmVzZXQoKTsKLQotcHJpdmF0ZToKLSAg
ICBFR0xDb25maWcgY3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgRUdMQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmlnOwotICAgIEVHTENvbmZpZyBt
X3N1cmZhY2VDb250ZXh0RkJDb25maWc7Ci0gICAgUmVmUHRyPFNoYXJlZEVHTERpc3BsYXk+IG1f
c2hhcmVkRGlzcGxheTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdTZWxl
Y3Rvci5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VH
TENvbmZpZ1NlbGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
YmNkMjEyCi0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xDb25maWdTZWxlY3Rvci5jcHAKQEAgLTAsMCArMSwxODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFR0xDb25m
aWdTZWxlY3Rvci5oIgorCisjaWYgVVNFKEVHTCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
aGFyZWRFR0xEaXNwbGF5KiBTaGFyZWRFR0xEaXNwbGF5OjptX3N0YXRpY1NoYXJlZEVHTERpc3Bs
YXkgPSAwOworCitzdGF0aWMgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZUxpc3RbXSA9IHsKKyNpZiBV
U0UoT1BFTkdMX0VTXzIpCisgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9FUzJf
QklULAorI2Vsc2UKKyAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKKyNl
bmRpZgorICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICBF
R0xfQkxVRV9TSVpFLCA4LAorICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDgsCisgICAgRUdMX0FMUEhB
X1NJWkUsIDgsCisgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX05PTkUsCisgICAgRUdMX05PTkUK
K307CisKK3ZvaWQgU2hhcmVkRUdMRGlzcGxheTo6ZGVyZWYoKQoreworICAgIGlmIChkZXJlZkJh
c2UoKSkgeworICAgICAgICBtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkgPSAwOworICAgICAgICBk
ZWxldGUgdGhpczsKKyAgICB9Cit9CisKK0VHTERpc3BsYXkgU2hhcmVkRUdMRGlzcGxheTo6c2hh
cmVkRUdMRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWdsRGlzcGxheTsKK30KKwor
U2hhcmVkRUdMRGlzcGxheTo6U2hhcmVkRUdMRGlzcGxheShOYXRpdmVTaGFyZWREaXNwbGF5KiBk
aXNwbGF5KQorICAgIDogbV9lZ2xEaXNwbGF5KEVHTF9OT19ESVNQTEFZKQoreworICAgIGlmIChk
aXNwbGF5KQorICAgICAgICBtX2VnbERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMTmF0aXZlRGlzcGxheVR5cGU+KGRpc3BsYXkpKTsKKyAgICBlbHNlCisgICAgICAg
IG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisKKyAg
ICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKSB7CisgICAgICAgIExPR19FUlJP
UigiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7CisgICAgc3VjY2VzcyA9IGVnbEluaXRp
YWxpemUobV9lZ2xEaXNwbGF5LCAwLCAwKTsKKworICAgIGlmIChzdWNjZXNzICE9IEVHTF9UUlVF
KSB7CisgICAgICAgIExPR19FUlJPUigiRUdMSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAg
ICAgICBtX2VnbERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICB9CisKKyAgICBzdWNjZXNz
ID0gZWdsQmluZEFQSShlZ2xBUElWZXJzaW9uKTsKKworICAgIGlmIChzdWNjZXNzICE9IEVHTF9U
UlVFKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBFR0wgQVBJKCVkKS4iLCBl
Z2xHZXRFcnJvcigpKTsKKyAgICAgICAgbV9lZ2xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Cisg
ICAgfQorfQorCit2b2lkIFNoYXJlZEVHTERpc3BsYXk6OmNsZWFudXAoKQoreworICAgIGlmICht
X2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybjsKKworICAgIGVn
bE1ha2VDdXJyZW50KG1fZWdsRGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fQ09OVEVYVCk7CisgICAgZWdsVGVybWluYXRlKG1fZWdsRGlzcGxheSk7CisgICAg
bV9lZ2xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Cit9CisKK1NoYXJlZEVHTERpc3BsYXk6On5T
aGFyZWRFR0xEaXNwbGF5KCkKK3sKKyAgICBjbGVhbnVwKCk7Cit9CisKK0VHTENvbmZpZ1NlbGVj
dG9yOjpFR0xDb25maWdTZWxlY3RvcihOYXRpdmVTaGFyZWREaXNwbGF5KiBkaXNwbGF5KQorICAg
IDogbV9wYnVmZmVyRkJDb25maWcoMCkKKyAgICAsIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZygw
KQoreworICAgIG1fc2hhcmVkRGlzcGxheSA9IFNoYXJlZEVHTERpc3BsYXk6OmNyZWF0ZShkaXNw
bGF5KTsKK30KKworRUdMQ29uZmlnU2VsZWN0b3I6On5FR0xDb25maWdTZWxlY3RvcigpCit7Cit9
CisKK1BsYXRmb3JtRGlzcGxheSBFR0xDb25maWdTZWxlY3Rvcjo6ZGlzcGxheSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2hhcmVkRGlzcGxheS0+c2hhcmVkRUdMRGlzcGxheSgpOworfQorCitF
R0xDb25maWcgRUdMQ29uZmlnU2VsZWN0b3I6OnBCdWZmZXJDb250ZXh0Q29uZmlnKCkKK3sKKyAg
ICBpZiAoIW1fcGJ1ZmZlckZCQ29uZmlnKSB7CisgICAgICAgIGNvbmZpZ0F0dHJpYnV0ZUxpc3Rb
MTNdID0gRUdMX1BJWE1BUF9CSVQ7CisgICAgICAgIG1fcGJ1ZmZlckZCQ29uZmlnID0gY3JlYXRl
Q29uZmlnKGNvbmZpZ0F0dHJpYnV0ZUxpc3QpOworICAgIH0KKworICAgIHJldHVybiBtX3BidWZm
ZXJGQkNvbmZpZzsKK30KKworRUdMQ29uZmlnIEVHTENvbmZpZ1NlbGVjdG9yOjpzdXJmYWNlQ29u
dGV4dENvbmZpZygpCit7CisgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpIHsKKyAg
ICAgICAgY29uZmlnQXR0cmlidXRlTGlzdFsxM10gPSBFR0xfV0lORE9XX0JJVDsKKyAgICAgICAg
bV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gY3JlYXRlQ29uZmlnKGNvbmZpZ0F0dHJpYnV0ZUxp
c3QpOworICAgIH0KKworICAgIHJldHVybiBtX3N1cmZhY2VDb250ZXh0RkJDb25maWc7Cit9CisK
K0VHTGludCBFR0xDb25maWdTZWxlY3Rvcjo6bmF0aXZlVmlzdWFsSWQoY29uc3QgRUdMQ29uZmln
JiBjb25maWcpIGNvbnN0Cit7CisgICAgaWYgKGRpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkK
KyAgICAgICAgcmV0dXJuIC0xOworCisgICAgRUdMaW50IGVnbFZhbHVlID0gMDsKKyAgICBlZ2xH
ZXRDb25maWdBdHRyaWIoZGlzcGxheSgpLCBjb25maWcsIEVHTF9OQVRJVkVfVklTVUFMX0lELCAm
ZWdsVmFsdWUpOworCisgICAgcmV0dXJuIGVnbFZhbHVlOworfQorCit2b2lkIEVHTENvbmZpZ1Nl
bGVjdG9yOjpyZXNldCgpCit7CisgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gMDsKKyAg
ICBtX3BidWZmZXJGQkNvbmZpZyA9IDA7Cit9CisKK0VHTENvbmZpZyBFR0xDb25maWdTZWxlY3Rv
cjo6Y3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pCit7CisgICAgaWYgKGRpc3Bs
YXkoKSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgbnVt
Q29uZmlnczsKKyAgICBFR0xDb25maWcgY29uZmlnID0gMDsKKworICAgIGlmICghZWdsQ2hvb3Nl
Q29uZmlnKGRpc3BsYXkoKSwgYXR0cmlidXRlcywgJmNvbmZpZywgMSwgJm51bUNvbmZpZ3MpKQor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgc3VwcG9ydGVkIGNvbmZpZ2lyYXRpb25z
LiIpOworCisgICAgaWYgKG51bUNvbmZpZ3MgIT0gMSkgeworICAgICAgICBMT0dfRVJST1IoIkVH
TENob29zZUNvbmZpZyBkaWRuJ3QgcmV0dXJuIGV4YWN0bHkgb25lIGNvbmZpZyBidXQgKCVkKS4i
LCBudW1Db25maWdzKTsKKyAgICAgICAgY29uZmlnID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4g
Y29uZmlnOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdTZWxlY3Rvci5oIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdTZWxlY3Rvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MzFhZGMKLS0tIC9kZXYvbnVsbAor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZp
Z1NlbGVjdG9yLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBFR0xDb25maWdTZWxlY3Rvcl9oCisjZGVmaW5lIEVHTENvbmZpZ1NlbGVjdG9yX2gKKworI2lm
IFVTRShFR0wpCisKKyNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit0eXBlZGVmIERpc3BsYXkgTmF0aXZlU2hhcmVkRGlzcGxheTsKKworY2xhc3MgU2hh
cmVkRUdMRGlzcGxheSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTaGFyZWRFR0xEaXNwbGF5KTsKKworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZEVHTERpc3BsYXk+IGNyZWF0ZShOYXRpdmVTaGFyZWREaXNwbGF5KiBk
aXNwbGF5KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkpCisg
ICAgICAgICAgICBtX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkgPSBuZXcgU2hhcmVkRUdMRGlzcGxh
eShkaXNwbGF5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdGF0aWNTaGFyZWRFR0xE
aXNwbGF5LT5yZWYoKTsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYobV9zdGF0aWNTaGFyZWRF
R0xEaXNwbGF5KTsKKyAgICB9CisKKyAgICB2b2lkIGRlcmVmKCk7CisgICAgRUdMRGlzcGxheSBz
aGFyZWRFR0xEaXNwbGF5KCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTaGFyZWRFR0xEaXNw
bGF5KE5hdGl2ZVNoYXJlZERpc3BsYXkqKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKKyAgICB2aXJ0
dWFsIH5TaGFyZWRFR0xEaXNwbGF5KCk7CisKKyAgICBzdGF0aWMgU2hhcmVkRUdMRGlzcGxheSog
bV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5OworICAgIEVHTERpc3BsYXkgbV9lZ2xEaXNwbGF5Owor
fTsKKworY2xhc3MgRUdMQ29uZmlnU2VsZWN0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEVHTENvbmZpZ1NlbGVjdG9yKTsKKworcHVibGljOgorICAgIEVHTENvbmZpZ1NlbGVjdG9yKE5h
dGl2ZVNoYXJlZERpc3BsYXkqID0gMCk7CisgICAgdmlydHVhbCB+RUdMQ29uZmlnU2VsZWN0b3Io
KTsKKyAgICBQbGF0Zm9ybURpc3BsYXkgZGlzcGxheSgpIGNvbnN0OworICAgIHZpcnR1YWwgRUdM
Q29uZmlnIHBCdWZmZXJDb250ZXh0Q29uZmlnKCk7CisgICAgdmlydHVhbCBFR0xDb25maWcgc3Vy
ZmFjZUNvbnRleHRDb25maWcoKTsKKyAgICBFR0xpbnQgbmF0aXZlVmlzdWFsSWQoY29uc3QgRUdM
Q29uZmlnJikgY29uc3Q7CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIEVHTENv
bmZpZyBjcmVhdGVDb25maWcoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSk7CisKK3Byb3RlY3RlZDoK
KyAgICBFR0xDb25maWcgbV9wYnVmZmVyRkJDb25maWc7CisgICAgRUdMQ29uZmlnIG1fc3VyZmFj
ZUNvbnRleHRGQkNvbmZpZzsKKyAgICBSZWZQdHI8U2hhcmVkRUdMRGlzcGxheT4gbV9zaGFyZWRE
aXNwbGF5OworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcApp
bmRleCBmYzk0MGRlLi45OTJiM2E2IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKQEAgLTM0LDIzICsz
NCwyMyBAQCBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJm
YWNlKCkKICAgICA6IEdMUGxhdGZvcm1TdXJmYWNlKCkKIHsKICAgICBtX25hdGl2ZVJlc291cmNl
ID0gYWRvcHRQdHIobmV3IE5hdGl2ZU9mZlNjcmVlbldpbmRvdygpKTsKLSAgICBtX2VnbENvbmZp
Z0hlbHBlciA9IGFkb3B0UHRyKG5ldyBFR0xDb25maWdIZWxwZXIobV9uYXRpdmVSZXNvdXJjZS0+
bmF0aXZlU2hhcmVkRGlzcGxheSgpKSk7Ci0gICAgbV9zaGFyZWREaXNwbGF5ID0gbV9lZ2xDb25m
aWdIZWxwZXItPmRpc3BsYXkoKTsKKyAgICBtX2NvbmZpZ1NlbGVjdG9yID0gYWRvcHRQdHIobmV3
IEVHTENvbmZpZ1NlbGVjdG9yKG1fbmF0aXZlUmVzb3VyY2UtPm5hdGl2ZVNoYXJlZERpc3BsYXko
KSkpOworICAgIG1fc2hhcmVkRGlzcGxheSA9IG1fY29uZmlnU2VsZWN0b3ItPmRpc3BsYXkoKTsK
IAogICAgIGlmIChtX3NoYXJlZERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIHsKLSAgICAgICAg
bV9lZ2xDb25maWdIZWxwZXIgPSBudWxscHRyOworICAgICAgICBtX2NvbmZpZ1NlbGVjdG9yID0g
bnVsbHB0cjsKICAgICAgICAgbV9uYXRpdmVSZXNvdXJjZSA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBFR0xDb25maWcgY29uZmlnID0gbV9lZ2xDb25maWdIZWxwZXIt
PnN1cmZhY2VDb250ZXh0Q29uZmlnKCk7CisgICAgRUdMQ29uZmlnIGNvbmZpZyA9IG1fY29uZmln
U2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCk7CiAKICAgICBpZiAoIWNvbmZpZykgewog
ICAgICAgICBkZXN0cm95KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFR0xpbnQg
dmlzdWFsSWQgPSBtX2VnbENvbmZpZ0hlbHBlci0+bmF0aXZlVmlzdWFsSWQoY29uZmlnKTsKKyAg
ICBFR0xpbnQgdmlzdWFsSWQgPSBtX2NvbmZpZ1NlbGVjdG9yLT5uYXRpdmVWaXN1YWxJZChjb25m
aWcpOwogCiAgICAgaWYgKHZpc3VhbElkID09IC0xKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKQEAg
LTY5LDcgKzY5LDcgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RyYXdhYmxlID0g
ZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtX3NoYXJlZERpc3BsYXksIG1fZWdsQ29uZmlnSGVscGVy
LT5zdXJmYWNlQ29udGV4dENvbmZpZygpLCAoRUdMTmF0aXZlV2luZG93VHlwZSltX2J1ZmZlckhh
bmRsZSwgMCk7CisgICAgbV9kcmF3YWJsZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobV9zaGFy
ZWREaXNwbGF5LCBtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZpZygpLCAoRUdM
TmF0aXZlV2luZG93VHlwZSltX2J1ZmZlckhhbmRsZSwgMCk7CiAKICAgICBpZiAobV9kcmF3YWJs
ZSA9PSBFR0xfTk9fU1VSRkFDRSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVh
dGUgRUdMIHN1cmZhY2UoJWQpLiIsIGVnbEdldEVycm9yKCkpOwpAQCAtODMsNyArODMsNyBAQCBF
R0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjp+RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZSgpCiAK
IFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpjb25maWd1
cmF0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9lZ2xDb25maWdIZWxwZXItPnN1cmZhY2VDb250ZXh0
Q29uZmlnKCk7CisgICAgcmV0dXJuIG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29u
ZmlnKCk7CiB9CiAKIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6c3dhcEJ1ZmZlcnMo
KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6ZGVz
dHJveSgpCiAgICAgbV9uYXRpdmVSZXNvdXJjZS0+ZGVzdHJveVdpbmRvdyhtX2J1ZmZlckhhbmRs
ZSk7CiAgICAgZnJlZUVHTFJlc291cmNlcygpOwogICAgIG1fbmF0aXZlUmVzb3VyY2UgPSBudWxs
cHRyOwotICAgIG1fZWdsQ29uZmlnSGVscGVyID0gbnVsbHB0cjsKKyAgICBtX2NvbmZpZ1NlbGVj
dG9yID0gbnVsbHB0cjsKICAgICBtX2J1ZmZlckhhbmRsZSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5o
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNl
LmgKaW5kZXggNzg4NjNkYy4uNWMyODhhOSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmgKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmgKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2lmIFVTRShFR0wpICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQogCi0jaW5jbHVk
ZSAiRUdMQ29uZmlnSGVscGVyLmgiCisjaW5jbHVkZSAiRUdMQ29uZmlnU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJHTFBsYXRmb3JtU3VyZmFjZS5oIgogCiAjaW5jbHVkZSA8Z2x4L1gxMVdpbmRvd1Jl
c291cmNlcy5oPgpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZnJlZUVHTFJlc291cmNlcygpOwogICAgIE93blB0cjxOYXRpdmVPZmZTY3JlZW5XaW5kb3c+IG1f
bmF0aXZlUmVzb3VyY2U7Ci0gICAgT3duUHRyPEVHTENvbmZpZ0hlbHBlcj4gbV9lZ2xDb25maWdI
ZWxwZXI7CisgICAgT3duUHRyPEVHTENvbmZpZ1NlbGVjdG9yPiBtX2NvbmZpZ1NlbGVjdG9yOwog
fTsKIAogfQo=
</data>
<flag name="commit-queue"
          id="198406"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180965</attachid>
            <date>2012-12-30 23:07:47 -0800</date>
            <delta_ts>2012-12-30 23:34:17 -0800</delta_ts>
            <desc>patch</desc>
            <filename>changelogfix2.patch</filename>
            <type>text/plain</type>
            <size>23784</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBDaGFuZ2VMb2cgQ2hhbmdlTG9nCmluZGV4IGVhYzUyZTUuLjI5ZTk2ZmMgMTAw
NjQ0Ci0tLSBDaGFuZ2VMb2cKKysrIENoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEy
LTMwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KKwor
ICAgICAgICBbRUZMXSBbV2ViR0xdIFJlbmFtZSBFR0xDb25maWdIZWxwZXIgYXMgRUdMQ29uZmln
U2VsZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBUaGlzIGlzIHRvIHN5bmMgdGhlIG5hbWluZyBjb252ZW50aW9ucyBvZiBv
dXIgY2xhc3NlcyBpbiBib3RoIEVHTCBhbmQgR0xYIGltcGxlbWVudGF0aW9ucy4gCisgICAgICAg
IEluIG91ciBHTFggaW1wbGVtZW50YXRpb24sIGNsYXNzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Ft
ZSBmdW5jdGlvbmFsaXR5IGlzIG5hbWVkIGFzIEdMWENvbmZpZ1NlbGVjdG9yLiAKKyAgICAgICAg
VGhpcyBwYXRjaCByZW5hbWVzIEVHTENvbmZpZ0hlbHBlciBhcyBFR0xDb25maWdTZWxlY3Rvci4K
KworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgorCiAyMDEyLTEyLTI3
ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXZWJHTF0gSW1wbGVtZW50IEVHTCBzdXBwb3J0IHdpdGggR0xYLgpkaWZmIC0t
Z2l0IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZDFhNmMxMC4uNjExOTY4ZiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMTItMzAg
IEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwuY29tPgorCisgICAg
ICAgIFtFRkxdIFtXZWJHTF0gUmVuYW1lIEVHTENvbmZpZ0hlbHBlciBhcyBFR0xDb25maWdTZWxl
Y3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTg3NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgor
CisgICAgICAgIFRoaXMgaXMgdG8gc3luYyB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIG9mIG91ciBj
bGFzc2VzIGluIGJvdGggRUdMIGFuZCBHTFggaW1wbGVtZW50YXRpb25zLiAKKyAgICAgICAgSW4g
b3VyIEdMWCBpbXBsZW1lbnRhdGlvbiwgY2xhc3MgcmVzcG9uc2libGUgZm9yIHRoZSBzYW1lIGZ1
bmN0aW9uYWxpdHkgaXMgbmFtZWQgYXMgR0xYQ29uZmlnU2VsZWN0b3IuIAorICAgICAgICBUaGlz
IHBhdGNoIHJlbmFtZXMgRUdMQ29uZmlnSGVscGVyIGFzIEVHTENvbmZpZ1NlbGVjdG9yLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWdsL0VHTENvbmZpZ1NlbGVjdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xDb25maWdIZWxwZXIuY3Bw
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5
OjpkZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5OjpzaGFyZWRFR0xE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEVHTERpc3BsYXk6OlNoYXJlZEVHTERp
c3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRUdMRGlzcGxheTo6Y2xlYW51cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRFR0xEaXNwbGF5Ojp+U2hhcmVkRUdMRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6RUdMQ29uZmlnU2VsZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RUdMQ29uZmlnU2VsZWN0b3I6On5FR0xDb25maWdTZWxlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6ZGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6cEJ1ZmZlckNvbnRleHRDb25maWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMQ29uZmlnU2VsZWN0b3I6OnN1cmZhY2VDb250ZXh0Q29uZmlnKToK
KyAgICAgICAgKFdlYkNvcmU6OkVHTENvbmZpZ1NlbGVjdG9yOjpuYXRpdmVWaXN1YWxJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFR0xDb25maWdTZWxlY3Rvcjo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RUdMQ29uZmlnU2VsZWN0b3I6OmNyZWF0ZUNvbmZpZyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZpZ1NlbGVjdG9yLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmln
SGVscGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYXJlZEVHTERpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRUdMRGlzcGxheTo6Y3JlYXRlKToKKyAgICAgICAg
KEVHTENvbmZpZ1NlbGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZ2wvRUdMU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xXaW5kb3dUcmFuc3Bv
cnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OmNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuaDoKKyAgICAgICAgKEVHTFdp
bmRvd1RyYW5zcG9ydFN1cmZhY2UpOgorCiAyMDEyLTEyLTMwICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSB3ZWJhdWRpby9kZWNv
ZGUtYXVkaW8tZGF0YS1iYXNpYy5odG1sIGZhaWxzCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
ZTdlNDY5Yy4uNzEyZGIwYSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjkzLDggKzI5Myw5
IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogCiAgICAgaWYgKFdURl9VU0VfRUdMKQogICAg
ICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAorICAgICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZpZ1NlbGVjdG9yLmNwcAogICAgICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbnRleHQuY3BwCisgICAgICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKICAgICAgICAg
KQogICAgIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjA4ZWJhYS4uMDAwMDAwMAotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZpZ0hlbHBlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkVHTENvbmZpZ0hlbHBlci5oIgotCi0jaWYgVVNFKEVHTCkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TaGFyZWRFR0xEaXNwbGF5KiBTaGFyZWRFR0xEaXNw
bGF5OjptX3N0YXRpY1NoYXJlZEVHTERpc3BsYXkgPSAwOwotCi1zdGF0aWMgRUdMaW50IGNvbmZp
Z0F0dHJpYnV0ZUxpc3RbXSA9IHsKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgRUdMX1JFTkRF
UkFCTEVfVFlQRSwgRUdMX09QRU5HTF9FUzJfQklULAotI2Vsc2UKLSAgICBFR0xfUkVOREVSQUJM
RV9UWVBFLCBFR0xfT1BFTkdMX0JJVCwKLSNlbmRpZgotICAgIEVHTF9SRURfU0laRSwgOCwKLSAg
ICBFR0xfR1JFRU5fU0laRSwgOCwKLSAgICBFR0xfQkxVRV9TSVpFLCA4LAotICAgIEVHTF9TVEVO
Q0lMX1NJWkUsIDgsCi0gICAgRUdMX0FMUEhBX1NJWkUsIDgsCi0gICAgRUdMX1NVUkZBQ0VfVFlQ
RSwgRUdMX05PTkUsCi0gICAgRUdMX05PTkUKLX07Ci0KLXZvaWQgU2hhcmVkRUdMRGlzcGxheTo6
ZGVyZWYoKQotewotICAgIGlmIChkZXJlZkJhc2UoKSkgewotICAgICAgICBtX3N0YXRpY1NoYXJl
ZEVHTERpc3BsYXkgPSAwOwotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci19Ci0KLUVHTERp
c3BsYXkgU2hhcmVkRUdMRGlzcGxheTo6c2hhcmVkRUdMRGlzcGxheSgpCi17Ci0gICAgcmV0dXJu
IG1fZWdsRGlzcGxheTsKLX0KLQotU2hhcmVkRUdMRGlzcGxheTo6U2hhcmVkRUdMRGlzcGxheShO
YXRpdmVTaGFyZWREaXNwbGF5KiBkaXNwbGF5KQotICAgIDogbV9lZ2xEaXNwbGF5KEVHTF9OT19E
SVNQTEFZKQotewotICAgIGlmIChkaXNwbGF5KQotICAgICAgICBtX2VnbERpc3BsYXkgPSBlZ2xH
ZXREaXNwbGF5KHJlaW50ZXJwcmV0X2Nhc3Q8RUdMTmF0aXZlRGlzcGxheVR5cGU+KGRpc3BsYXkp
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldERpc3BsYXkoRUdMX0RF
RkFVTFRfRElTUExBWSk7Ci0KLSAgICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZ
KSB7Ci0gICAgICAgIExPR19FUlJPUigiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7Ci0g
ICAgc3VjY2VzcyA9IGVnbEluaXRpYWxpemUobV9lZ2xEaXNwbGF5LCAwLCAwKTsKLQotICAgIGlm
IChzdWNjZXNzICE9IEVHTF9UUlVFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRUdMSW5pdGlhbGl6
YXRpb24gZmFpbGVkLiIpOwotICAgICAgICBtX2VnbERpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsK
LSAgICB9Ci0KLSAgICBzdWNjZXNzID0gZWdsQmluZEFQSShlZ2xBUElWZXJzaW9uKTsKLQotICAg
IGlmIChzdWNjZXNzICE9IEVHTF9UUlVFKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IHNldCBFR0wgQVBJKCVkKS4iLCBlZ2xHZXRFcnJvcigpKTsKLSAgICAgICAgbV9lZ2xEaXNwbGF5
ID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgfQotfQotCi12b2lkIFNoYXJlZEVHTERpc3BsYXk6OmNs
ZWFudXAoKQotewotICAgIGlmIChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGVnbE1ha2VDdXJyZW50KG1fZWdsRGlzcGxheSwgRUdMX05PX1NV
UkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgZWdsVGVybWluYXRl
KG1fZWdsRGlzcGxheSk7Ci0gICAgbV9lZ2xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci19Ci0K
LVNoYXJlZEVHTERpc3BsYXk6On5TaGFyZWRFR0xEaXNwbGF5KCkKLXsKLSAgICBjbGVhbnVwKCk7
Ci19Ci0KLUVHTENvbmZpZ0hlbHBlcjo6RUdMQ29uZmlnSGVscGVyKE5hdGl2ZVNoYXJlZERpc3Bs
YXkqIGRpc3BsYXkpCi0gICAgOiBtX3BidWZmZXJGQkNvbmZpZygwKQotICAgICwgbV9zdXJmYWNl
Q29udGV4dEZCQ29uZmlnKDApCi17Ci0gICAgbV9zaGFyZWREaXNwbGF5ID0gU2hhcmVkRUdMRGlz
cGxheTo6Y3JlYXRlKGRpc3BsYXkpOwotfQotCi1FR0xDb25maWdIZWxwZXI6On5FR0xDb25maWdI
ZWxwZXIoKQotewotfQotCi1QbGF0Zm9ybURpc3BsYXkgRUdMQ29uZmlnSGVscGVyOjpkaXNwbGF5
KCkKLXsKLSAgICByZXR1cm4gbV9zaGFyZWREaXNwbGF5LT5zaGFyZWRFR0xEaXNwbGF5KCk7Ci19
Ci0KLUVHTENvbmZpZyBFR0xDb25maWdIZWxwZXI6OnBCdWZmZXJDb250ZXh0Q29uZmlnKCkKLXsK
LSAgICBpZiAoIW1fcGJ1ZmZlckZCQ29uZmlnKSB7Ci0gICAgICAgIGNvbmZpZ0F0dHJpYnV0ZUxp
c3RbMTNdID0gRUdMX1BJWE1BUF9CSVQ7Ci0gICAgICAgIG1fcGJ1ZmZlckZCQ29uZmlnID0gY3Jl
YXRlQ29uZmlnKGNvbmZpZ0F0dHJpYnV0ZUxpc3QpOwotICAgIH0KLQotICAgIHJldHVybiBtX3Bi
dWZmZXJGQkNvbmZpZzsKLX0KLQotRUdMQ29uZmlnIEVHTENvbmZpZ0hlbHBlcjo6c3VyZmFjZUNv
bnRleHRDb25maWcoKQotewotICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKSB7Ci0g
ICAgICAgIGNvbmZpZ0F0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7Ci0gICAgICAg
IG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IGNyZWF0ZUNvbmZpZyhjb25maWdBdHRyaWJ1dGVM
aXN0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnOwotfQot
Ci1FR0xpbnQgRUdMQ29uZmlnSGVscGVyOjpuYXRpdmVWaXN1YWxJZChjb25zdCBFR0xDb25maWcm
IGNvbmZpZykKLXsKLSAgICBpZiAoZGlzcGxheSgpID09IEVHTF9OT19ESVNQTEFZKQotICAgICAg
ICByZXR1cm4gLTE7Ci0KLSAgICBFR0xpbnQgZWdsVmFsdWUgPSAwOwotICAgIGVnbEdldENvbmZp
Z0F0dHJpYihkaXNwbGF5KCksIGNvbmZpZywgRUdMX05BVElWRV9WSVNVQUxfSUQsICZlZ2xWYWx1
ZSk7Ci0KLSAgICByZXR1cm4gZWdsVmFsdWU7Ci19Ci0KLXZvaWQgRUdMQ29uZmlnSGVscGVyOjpy
ZXNldCgpCi17Ci0gICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gMDsKLSAgICBtX3BidWZm
ZXJGQkNvbmZpZyA9IDA7Ci19Ci0KLUVHTENvbmZpZyBFR0xDb25maWdIZWxwZXI6OmNyZWF0ZUNv
bmZpZyhjb25zdCBpbnQgYXR0cmlidXRlc1tdKQotewotICAgIGlmIChkaXNwbGF5KCkgPT0gRUdM
X05PX0RJU1BMQVkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaW50IG51bUNvbmZpZ3M7Ci0g
ICAgRUdMQ29uZmlnIGNvbmZpZyA9IDA7Ci0KLSAgICBpZiAoIWVnbENob29zZUNvbmZpZyhkaXNw
bGF5KCksIGF0dHJpYnV0ZXMsICZjb25maWcsIDEsICZudW1Db25maWdzKSkKLSAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gZ2V0IHN1cHBvcnRlZCBjb25maWdpcmF0aW9ucy4iKTsKLQotICAg
IGlmIChudW1Db25maWdzICE9IDEpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJFR0xDaG9vc2VDb25m
aWcgZGlkbid0IHJldHVybiBleGFjdGx5IG9uZSBjb25maWcgYnV0ICglZCkuIiwgbnVtQ29uZmln
cyk7Ci0gICAgICAgIGNvbmZpZyA9IDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbmZpZzsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTENvbmZpZ0hlbHBlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxOTg3MDExLi4wMDAwMDAwCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnSGVscGVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVHTENvbmZpZ0hl
bHBlcl9oCi0jZGVmaW5lIEVHTENvbmZpZ0hlbHBlcl9oCi0KLSNpZiBVU0UoRUdMKQotCi0jaW5j
bHVkZSA8b3BlbmdsL0dMRGVmcy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdHlwZWRlZiBE
aXNwbGF5IE5hdGl2ZVNoYXJlZERpc3BsYXk7Ci0KLWNsYXNzIFNoYXJlZEVHTERpc3BsYXkgOiBw
dWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hh
cmVkRUdMRGlzcGxheSk7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRF
R0xEaXNwbGF5PiBjcmVhdGUoTmF0aXZlU2hhcmVkRGlzcGxheSogZGlzcGxheSkKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5KQotICAgICAgICAgICAgbV9zdGF0
aWNTaGFyZWRFR0xEaXNwbGF5ID0gbmV3IFNoYXJlZEVHTERpc3BsYXkoZGlzcGxheSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3RhdGljU2hhcmVkRUdMRGlzcGxheS0+cmVmKCk7Ci0K
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG1fc3RhdGljU2hhcmVkRUdMRGlzcGxheSk7Ci0gICAg
fQotCi0gICAgdm9pZCBkZXJlZigpOwotICAgIEVHTERpc3BsYXkgc2hhcmVkRUdMRGlzcGxheSgp
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgU2hhcmVkRUdMRGlzcGxheShOYXRpdmVTaGFyZWREaXNwbGF5
Kik7Ci0gICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgdmlydHVhbCB+U2hhcmVkRUdMRGlzcGxheSgp
OwotCi0gICAgc3RhdGljIFNoYXJlZEVHTERpc3BsYXkqIG1fc3RhdGljU2hhcmVkRUdMRGlzcGxh
eTsKLSAgICBFR0xEaXNwbGF5IG1fZWdsRGlzcGxheTsKLX07Ci0KLWNsYXNzIEVHTENvbmZpZ0hl
bHBlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRUdMQ29uZmlnSGVscGVyKTsKLQotcHVi
bGljOgotICAgIEVHTENvbmZpZ0hlbHBlcihOYXRpdmVTaGFyZWREaXNwbGF5KiA9IDApOwotICAg
IHZpcnR1YWwgfkVHTENvbmZpZ0hlbHBlcigpOwotICAgIFBsYXRmb3JtRGlzcGxheSBkaXNwbGF5
KCk7Ci0gICAgdmlydHVhbCBFR0xDb25maWcgcEJ1ZmZlckNvbnRleHRDb25maWcoKTsKLSAgICB2
aXJ0dWFsIEVHTENvbmZpZyBzdXJmYWNlQ29udGV4dENvbmZpZygpOwotICAgIEVHTGludCBuYXRp
dmVWaXN1YWxJZChjb25zdCBFR0xDb25maWcmKTsKLSAgICB2b2lkIHJlc2V0KCk7Ci0KLXByaXZh
dGU6Ci0gICAgRUdMQ29uZmlnIGNyZWF0ZUNvbmZpZyhjb25zdCBpbnQgYXR0cmlidXRlc1tdKTsK
LQotcHJvdGVjdGVkOgotICAgIEVHTENvbmZpZyBtX3BidWZmZXJGQkNvbmZpZzsKLSAgICBFR0xD
b25maWcgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnOwotICAgIFJlZlB0cjxTaGFyZWRFR0xEaXNw
bGF5PiBtX3NoYXJlZERpc3BsYXk7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAt
LWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29u
ZmlnU2VsZWN0b3IuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VnbC9FR0xDb25maWdTZWxlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uY2JjZDIxMgotLS0gL2Rldi9udWxsCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuY3BwCkBAIC0wLDAgKzEsMTgx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RUdMQ29uZmlnU2VsZWN0b3IuaCIKKworI2lmIFVTRShFR0wpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU2hhcmVkRUdMRGlzcGxheSogU2hhcmVkRUdMRGlzcGxheTo6bV9zdGF0aWNTaGFyZWRF
R0xEaXNwbGF5ID0gMDsKKworc3RhdGljIEVHTGludCBjb25maWdBdHRyaWJ1dGVMaXN0W10gPSB7
CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsIEVHTF9PUEVO
R0xfRVMyX0JJVCwKKyNlbHNlCisgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgRUdMX09QRU5HTF9C
SVQsCisjZW5kaWYKKyAgICBFR0xfUkVEX1NJWkUsIDgsCisgICAgRUdMX0dSRUVOX1NJWkUsIDgs
CisgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICBFR0xfU1RFTkNJTF9TSVpFLCA4LAorICAgIEVH
TF9BTFBIQV9TSVpFLCA4LAorICAgIEVHTF9TVVJGQUNFX1RZUEUsIEVHTF9OT05FLAorICAgIEVH
TF9OT05FCit9OworCit2b2lkIFNoYXJlZEVHTERpc3BsYXk6OmRlcmVmKCkKK3sKKyAgICBpZiAo
ZGVyZWZCYXNlKCkpIHsKKyAgICAgICAgbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5ID0gMDsKKyAg
ICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorfQorCitFR0xEaXNwbGF5IFNoYXJlZEVHTERpc3Bs
YXk6OnNoYXJlZEVHTERpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2VnbERpc3BsYXk7
Cit9CisKK1NoYXJlZEVHTERpc3BsYXk6OlNoYXJlZEVHTERpc3BsYXkoTmF0aXZlU2hhcmVkRGlz
cGxheSogZGlzcGxheSkKKyAgICA6IG1fZWdsRGlzcGxheShFR0xfTk9fRElTUExBWSkKK3sKKyAg
ICBpZiAoZGlzcGxheSkKKyAgICAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShyZWlu
dGVycHJldF9jYXN0PEVHTE5hdGl2ZURpc3BsYXlUeXBlPihkaXNwbGF5KSk7CisgICAgZWxzZQor
ICAgICAgICBtX2VnbERpc3BsYXkgPSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkp
OworCisgICAgaWYgKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkgeworICAgICAgICBM
T0dfRVJST1IoIkVHTERpc3BsYXkgSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgRUdMQm9vbGVhbiBzdWNjZXNzOworICAgIHN1Y2Nlc3MgPSBl
Z2xJbml0aWFsaXplKG1fZWdsRGlzcGxheSwgMCwgMCk7CisKKyAgICBpZiAoc3VjY2VzcyAhPSBF
R0xfVFJVRSkgeworICAgICAgICBMT0dfRVJST1IoIkVHTEluaXRpYWxpemF0aW9uIGZhaWxlZC4i
KTsKKyAgICAgICAgbV9lZ2xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgfQorCisgICAg
c3VjY2VzcyA9IGVnbEJpbmRBUEkoZWdsQVBJVmVyc2lvbik7CisKKyAgICBpZiAoc3VjY2VzcyAh
PSBFR0xfVFJVRSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgRUdMIEFQSSgl
ZCkuIiwgZWdsR2V0RXJyb3IoKSk7CisgICAgICAgIG1fZWdsRGlzcGxheSA9IEVHTF9OT19ESVNQ
TEFZOworICAgIH0KK30KKwordm9pZCBTaGFyZWRFR0xEaXNwbGF5OjpjbGVhbnVwKCkKK3sKKyAg
ICBpZiAobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm47CisK
KyAgICBlZ2xNYWtlQ3VycmVudChtX2VnbERpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
U1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgIGVnbFRlcm1pbmF0ZShtX2VnbERpc3BsYXkp
OworICAgIG1fZWdsRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworfQorCitTaGFyZWRFR0xEaXNw
bGF5Ojp+U2hhcmVkRUdMRGlzcGxheSgpCit7CisgICAgY2xlYW51cCgpOworfQorCitFR0xDb25m
aWdTZWxlY3Rvcjo6RUdMQ29uZmlnU2VsZWN0b3IoTmF0aXZlU2hhcmVkRGlzcGxheSogZGlzcGxh
eSkKKyAgICA6IG1fcGJ1ZmZlckZCQ29uZmlnKDApCisgICAgLCBtX3N1cmZhY2VDb250ZXh0RkJD
b25maWcoMCkKK3sKKyAgICBtX3NoYXJlZERpc3BsYXkgPSBTaGFyZWRFR0xEaXNwbGF5OjpjcmVh
dGUoZGlzcGxheSk7Cit9CisKK0VHTENvbmZpZ1NlbGVjdG9yOjp+RUdMQ29uZmlnU2VsZWN0b3Io
KQoreworfQorCitQbGF0Zm9ybURpc3BsYXkgRUdMQ29uZmlnU2VsZWN0b3I6OmRpc3BsYXkoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NoYXJlZERpc3BsYXktPnNoYXJlZEVHTERpc3BsYXkoKTsK
K30KKworRUdMQ29uZmlnIEVHTENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4dENvbmZpZygp
Cit7CisgICAgaWYgKCFtX3BidWZmZXJGQkNvbmZpZykgeworICAgICAgICBjb25maWdBdHRyaWJ1
dGVMaXN0WzEzXSA9IEVHTF9QSVhNQVBfQklUOworICAgICAgICBtX3BidWZmZXJGQkNvbmZpZyA9
IGNyZWF0ZUNvbmZpZyhjb25maWdBdHRyaWJ1dGVMaXN0KTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9wYnVmZmVyRkJDb25maWc7Cit9CisKK0VHTENvbmZpZyBFR0xDb25maWdTZWxlY3Rvcjo6c3Vy
ZmFjZUNvbnRleHRDb25maWcoKQoreworICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmln
KSB7CisgICAgICAgIGNvbmZpZ0F0dHJpYnV0ZUxpc3RbMTNdID0gRUdMX1dJTkRPV19CSVQ7Cisg
ICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IGNyZWF0ZUNvbmZpZyhjb25maWdBdHRy
aWJ1dGVMaXN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdXJmYWNlQ29udGV4dEZCQ29uZmln
OworfQorCitFR0xpbnQgRUdMQ29uZmlnU2VsZWN0b3I6Om5hdGl2ZVZpc3VhbElkKGNvbnN0IEVH
TENvbmZpZyYgY29uZmlnKSBjb25zdAoreworICAgIGlmIChkaXNwbGF5KCkgPT0gRUdMX05PX0RJ
U1BMQVkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIEVHTGludCBlZ2xWYWx1ZSA9IDA7Cisg
ICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXkoKSwgY29uZmlnLCBFR0xfTkFUSVZFX1ZJU1VB
TF9JRCwgJmVnbFZhbHVlKTsKKworICAgIHJldHVybiBlZ2xWYWx1ZTsKK30KKwordm9pZCBFR0xD
b25maWdTZWxlY3Rvcjo6cmVzZXQoKQoreworICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9
IDA7CisgICAgbV9wYnVmZmVyRkJDb25maWcgPSAwOworfQorCitFR0xDb25maWcgRUdMQ29uZmln
U2VsZWN0b3I6OmNyZWF0ZUNvbmZpZyhjb25zdCBpbnQgYXR0cmlidXRlc1tdKQoreworICAgIGlm
IChkaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aW50IG51bUNvbmZpZ3M7CisgICAgRUdMQ29uZmlnIGNvbmZpZyA9IDA7CisKKyAgICBpZiAoIWVn
bENob29zZUNvbmZpZyhkaXNwbGF5KCksIGF0dHJpYnV0ZXMsICZjb25maWcsIDEsICZudW1Db25m
aWdzKSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IHN1cHBvcnRlZCBjb25maWdp
cmF0aW9ucy4iKTsKKworICAgIGlmIChudW1Db25maWdzICE9IDEpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJFR0xDaG9vc2VDb25maWcgZGlkbid0IHJldHVybiBleGFjdGx5IG9uZSBjb25maWcgYnV0
ICglZCkuIiwgbnVtQ29uZmlncyk7CisgICAgICAgIGNvbmZpZyA9IDA7CisgICAgfQorCisgICAg
cmV0dXJuIGNvbmZpZzsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0b3IuaCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMQ29uZmlnU2VsZWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjMxYWRjCi0tLSAvZGV2
L251bGwKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xDb25maWdTZWxlY3Rvci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRUdMQ29uZmlnU2VsZWN0b3JfaAorI2RlZmluZSBFR0xDb25maWdTZWxlY3Rvcl9o
CisKKyNpZiBVU0UoRUdMKQorCisjaW5jbHVkZSA8b3BlbmdsL0dMRGVmcy5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordHlwZWRlZiBEaXNwbGF5IE5hdGl2ZVNoYXJlZERpc3BsYXk7CisKK2Ns
YXNzIFNoYXJlZEVHTERpc3BsYXkgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkRUdMRGlzcGxheSk7CisKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRFR0xEaXNwbGF5PiBjcmVhdGUoTmF0aXZlU2hhcmVkRGlz
cGxheSogZGlzcGxheSkKKyAgICB7CisgICAgICAgIGlmICghbV9zdGF0aWNTaGFyZWRFR0xEaXNw
bGF5KQorICAgICAgICAgICAgbV9zdGF0aWNTaGFyZWRFR0xEaXNwbGF5ID0gbmV3IFNoYXJlZEVH
TERpc3BsYXkoZGlzcGxheSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RhdGljU2hh
cmVkRUdMRGlzcGxheS0+cmVmKCk7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG1fc3RhdGlj
U2hhcmVkRUdMRGlzcGxheSk7CisgICAgfQorCisgICAgdm9pZCBkZXJlZigpOworICAgIEVHTERp
c3BsYXkgc2hhcmVkRUdMRGlzcGxheSgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgU2hhcmVk
RUdMRGlzcGxheShOYXRpdmVTaGFyZWREaXNwbGF5Kik7CisgICAgdm9pZCBjbGVhbnVwKCk7Cisg
ICAgdmlydHVhbCB+U2hhcmVkRUdMRGlzcGxheSgpOworCisgICAgc3RhdGljIFNoYXJlZEVHTERp
c3BsYXkqIG1fc3RhdGljU2hhcmVkRUdMRGlzcGxheTsKKyAgICBFR0xEaXNwbGF5IG1fZWdsRGlz
cGxheTsKK307CisKK2NsYXNzIEVHTENvbmZpZ1NlbGVjdG9yIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShFR0xDb25maWdTZWxlY3Rvcik7CisKK3B1YmxpYzoKKyAgICBFR0xDb25maWdTZWxl
Y3RvcihOYXRpdmVTaGFyZWREaXNwbGF5KiA9IDApOworICAgIHZpcnR1YWwgfkVHTENvbmZpZ1Nl
bGVjdG9yKCk7CisgICAgUGxhdGZvcm1EaXNwbGF5IGRpc3BsYXkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEVHTENvbmZpZyBwQnVmZmVyQ29udGV4dENvbmZpZygpOworICAgIHZpcnR1YWwgRUdMQ29u
ZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCk7CisgICAgRUdMaW50IG5hdGl2ZVZpc3VhbElkKGNv
bnN0IEVHTENvbmZpZyYpIGNvbnN0OworICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAg
ICBFR0xDb25maWcgY3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pOworCitwcm90
ZWN0ZWQ6CisgICAgRUdMQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmlnOworICAgIEVHTENvbmZpZyBt
X3N1cmZhY2VDb250ZXh0RkJDb25maWc7CisgICAgUmVmUHRyPFNoYXJlZEVHTERpc3BsYXk+IG1f
c2hhcmVkRGlzcGxheTsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNw
cCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFj
ZS5jcHAKaW5kZXggZmM5NDBkZS4uOTkyYjNhNiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCkBAIC0z
NCwyMyArMzQsMjMgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZSgpCiAgICAgOiBHTFBsYXRmb3JtU3VyZmFjZSgpCiB7CiAgICAgbV9uYXRpdmVS
ZXNvdXJjZSA9IGFkb3B0UHRyKG5ldyBOYXRpdmVPZmZTY3JlZW5XaW5kb3coKSk7Ci0gICAgbV9l
Z2xDb25maWdIZWxwZXIgPSBhZG9wdFB0cihuZXcgRUdMQ29uZmlnSGVscGVyKG1fbmF0aXZlUmVz
b3VyY2UtPm5hdGl2ZVNoYXJlZERpc3BsYXkoKSkpOwotICAgIG1fc2hhcmVkRGlzcGxheSA9IG1f
ZWdsQ29uZmlnSGVscGVyLT5kaXNwbGF5KCk7CisgICAgbV9jb25maWdTZWxlY3RvciA9IGFkb3B0
UHRyKG5ldyBFR0xDb25maWdTZWxlY3RvcihtX25hdGl2ZVJlc291cmNlLT5uYXRpdmVTaGFyZWRE
aXNwbGF5KCkpKTsKKyAgICBtX3NoYXJlZERpc3BsYXkgPSBtX2NvbmZpZ1NlbGVjdG9yLT5kaXNw
bGF5KCk7CiAKICAgICBpZiAobV9zaGFyZWREaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKSB7Ci0g
ICAgICAgIG1fZWdsQ29uZmlnSGVscGVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9jb25maWdTZWxl
Y3RvciA9IG51bGxwdHI7CiAgICAgICAgIG1fbmF0aXZlUmVzb3VyY2UgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRUdMQ29uZmlnIGNvbmZpZyA9IG1fZWdsQ29uZmln
SGVscGVyLT5zdXJmYWNlQ29udGV4dENvbmZpZygpOworICAgIEVHTENvbmZpZyBjb25maWcgPSBt
X2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZpZygpOwogCiAgICAgaWYgKCFjb25m
aWcpIHsKICAgICAgICAgZGVzdHJveSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
RUdMaW50IHZpc3VhbElkID0gbV9lZ2xDb25maWdIZWxwZXItPm5hdGl2ZVZpc3VhbElkKGNvbmZp
Zyk7CisgICAgRUdMaW50IHZpc3VhbElkID0gbV9jb25maWdTZWxlY3Rvci0+bmF0aXZlVmlzdWFs
SWQoY29uZmlnKTsKIAogICAgIGlmICh2aXN1YWxJZCA9PSAtMSkgewogICAgICAgICBkZXN0cm95
KCk7CkBAIC02OSw3ICs2OSw3IEBAIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRv
d1RyYW5zcG9ydFN1cmZhY2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kcmF3
YWJsZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobV9zaGFyZWREaXNwbGF5LCBtX2VnbENvbmZp
Z0hlbHBlci0+c3VyZmFjZUNvbnRleHRDb25maWcoKSwgKEVHTE5hdGl2ZVdpbmRvd1R5cGUpbV9i
dWZmZXJIYW5kbGUsIDApOworICAgIG1fZHJhd2FibGUgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNl
KG1fc2hhcmVkRGlzcGxheSwgbV9jb25maWdTZWxlY3Rvci0+c3VyZmFjZUNvbnRleHRDb25maWco
KSwgKEVHTE5hdGl2ZVdpbmRvd1R5cGUpbV9idWZmZXJIYW5kbGUsIDApOwogCiAgICAgaWYgKG1f
ZHJhd2FibGUgPT0gRUdMX05PX1NVUkZBQ0UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gY3JlYXRlIEVHTCBzdXJmYWNlKCVkKS4iLCBlZ2xHZXRFcnJvcigpKTsKQEAgLTgzLDcgKzgz
LDcgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6fkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2UoKQogCiBQbGF0Zm9ybVN1cmZhY2VDb25maWcgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6
Y29uZmlndXJhdGlvbigpCiB7Ci0gICAgcmV0dXJuIG1fZWdsQ29uZmlnSGVscGVyLT5zdXJmYWNl
Q29udGV4dENvbmZpZygpOworICAgIHJldHVybiBtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29u
dGV4dENvbmZpZygpOwogfQogCiB2b2lkIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OnN3YXBC
dWZmZXJzKCkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2U6OmRlc3Ryb3koKQogICAgIG1fbmF0aXZlUmVzb3VyY2UtPmRlc3Ryb3lXaW5kb3cobV9idWZm
ZXJIYW5kbGUpOwogICAgIGZyZWVFR0xSZXNvdXJjZXMoKTsKICAgICBtX25hdGl2ZVJlc291cmNl
ID0gbnVsbHB0cjsKLSAgICBtX2VnbENvbmZpZ0hlbHBlciA9IG51bGxwdHI7CisgICAgbV9jb25m
aWdTZWxlY3RvciA9IG51bGxwdHI7CiAgICAgbV9idWZmZXJIYW5kbGUgPSAwOwogfQogCmRpZmYg
LS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1
cmZhY2UuaCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdM
U3VyZmFjZS5oCmluZGV4IDc4ODYzZGMuLjVjMjg4YTkgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5oCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5oCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpZiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAot
I2luY2x1ZGUgIkVHTENvbmZpZ0hlbHBlci5oIgorI2luY2x1ZGUgIkVHTENvbmZpZ1NlbGVjdG9y
LmgiCiAjaW5jbHVkZSAiR0xQbGF0Zm9ybVN1cmZhY2UuaCIKIAogI2luY2x1ZGUgPGdseC9YMTFX
aW5kb3dSZXNvdXJjZXMuaD4KQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGZyZWVFR0xSZXNvdXJjZXMoKTsKICAgICBPd25QdHI8TmF0aXZlT2ZmU2NyZWVuV2lu
ZG93PiBtX25hdGl2ZVJlc291cmNlOwotICAgIE93blB0cjxFR0xDb25maWdIZWxwZXI+IG1fZWds
Q29uZmlnSGVscGVyOworICAgIE93blB0cjxFR0xDb25maWdTZWxlY3Rvcj4gbV9jb25maWdTZWxl
Y3RvcjsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>