<?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>75057</bug_id>
          
          <creation_ts>2011-12-21 17:19:03 -0800</creation_ts>
          <short_desc>Implement MediaElementAudioSourceNode::setFormat() so numberOfChannels and sampleRate are accounted for</short_desc>
          <delta_ts>2011-12-22 14:40:42 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525862</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-21 17:19:03 -0800</bug_when>
    <thetext>Implement MediaElementAudioSourceNode::setFormat() so numberOfChannels and sampleRate are accounted for</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525870</commentid>
    <comment_count>1</comment_count>
      <attachid>120248</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-21 17:24:39 -0800</bug_when>
    <thetext>Created attachment 120248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525873</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 17:27:43 -0800</bug_when>
    <thetext>Attachment 120248 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167528 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526262</commentid>
    <comment_count>3</comment_count>
      <attachid>120248</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-22 08:01:25 -0800</bug_when>
    <thetext>Comment on attachment 120248
Patch

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

&gt; Source/WebCore/platform/audio/MultiChannelResampler.cpp:90
&gt; +    size_t m_framesToProcess; // used to verify that all channels ask for the same amount

Nit: Comments should use proper sentences (missing capital and period).

&gt; Source/WebCore/platform/audio/MultiChannelResampler.cpp:102
&gt; +        OwnPtr&lt;SincResampler&gt; resampler = adoptPtr(new SincResampler(scaleFactor));
&gt; +        m_kernels.append(resampler.release());

This local variable isn&apos;t necessary, it causes ref count churn.

Why doesn&apos;t SincResampler use the preferred WebKit idiom of a private constructor plus a create() method?

&gt; Source/WebCore/platform/audio/MultiChannelResampler.cpp:108
&gt; +    // provider can provide us with multi-channel audio data. But each of our single-channel resamplers (kernels)

Nit: Capitalize.

&gt; Source/WebCore/platform/audio/MultiChannelResampler.h:48
&gt; +    // FIXME: the mac port can have a more highly optimized implementation based on CoreAudio
&gt; +    // instead of SincResampler. For now the default implementation will be used on all ports.

Please include a bug number with the FIXME.

&gt; Source/WebCore/platform/audio/MultiChannelResampler.h:53
&gt; +    double m_scaleFactor;

This is initialized in the constructor but never used in the code. Is it necessary?

&gt; Source/WebCore/webaudio/MediaElementAudioSourceNode.cpp:70
&gt; +        // FIXME: implement multi-channel greater than stereo.

Please include a bug number for the FIXME.

&gt; Source/WebCore/webaudio/MediaElementAudioSourceNode.cpp:75
&gt; +        if (!numberOfChannels || numberOfChannels &gt; 2 || sourceSampleRate &lt; minSampleRate || sourceSampleRate &gt; maxSampleRate) {
&gt; +            // process() will generate silence for these uninitialized values.
&gt; +            m_sourceNumberOfChannels = 0;
&gt; +            m_sourceSampleRate = 0;
&gt; +            return;

It would be helpful to LOG() exactly which condition(s) trigger this so it is possible to discover why a file generates only silence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526526</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-22 14:40:10 -0800</bug_when>
    <thetext>Committed r103581: &lt;http://trac.webkit.org/changeset/103581&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526528</commentid>
    <comment_count>5</comment_count>
      <attachid>120248</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-22 14:40:42 -0800</bug_when>
    <thetext>Comment on attachment 120248
Patch

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

Eric, thanks for the review!

&gt;&gt; Source/WebCore/platform/audio/MultiChannelResampler.cpp:90
&gt;&gt; +    size_t m_framesToProcess; // used to verify that all channels ask for the same amount
&gt; 
&gt; Nit: Comments should use proper sentences (missing capital and period).

FIXED

&gt;&gt; Source/WebCore/platform/audio/MultiChannelResampler.cpp:102
&gt;&gt; +        m_kernels.append(resampler.release());
&gt; 
&gt; This local variable isn&apos;t necessary, it causes ref count churn.
&gt; 
&gt; Why doesn&apos;t SincResampler use the preferred WebKit idiom of a private constructor plus a create() method?

FIXED

I&apos;m using the SincResampler class elsewhere as a lightweight local stack-based variable, so that&apos;s why the constructor is public.
I guess I could still add a create() method too...

&gt;&gt; Source/WebCore/platform/audio/MultiChannelResampler.cpp:108
&gt;&gt; +    // provider can provide us with multi-channel audio data. But each of our single-channel resamplers (kernels)
&gt; 
&gt; Nit: Capitalize.

FIXED

&gt;&gt; Source/WebCore/platform/audio/MultiChannelResampler.h:48
&gt;&gt; +    // instead of SincResampler. For now the default implementation will be used on all ports.
&gt; 
&gt; Please include a bug number with the FIXME.

FIXED: create bug:
https://bugs.webkit.org/show_bug.cgi?id=75118

&gt;&gt; Source/WebCore/platform/audio/MultiChannelResampler.h:53
&gt;&gt; +    double m_scaleFactor;
&gt; 
&gt; This is initialized in the constructor but never used in the code. Is it necessary?

Good point - I removed it.

&gt;&gt; Source/WebCore/webaudio/MediaElementAudioSourceNode.cpp:70
&gt;&gt; +        // FIXME: implement multi-channel greater than stereo.
&gt; 
&gt; Please include a bug number for the FIXME.

Added comment referencing:
https://bugs.webkit.org/show_bug.cgi?id=75119

&gt;&gt; Source/WebCore/webaudio/MediaElementAudioSourceNode.cpp:75
&gt;&gt; +            return;
&gt; 
&gt; It would be helpful to LOG() exactly which condition(s) trigger this so it is possible to discover why a file generates only silence.

Added LOG message</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120248</attachid>
            <date>2011-12-21 17:24:39 -0800</date>
            <delta_ts>2011-12-22 14:40:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75057-20111221172439.patch</filename>
            <type>text/plain</type>
            <size>22191</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYzYTE3NmFjMGU5MmVk
ODBiMDA5NWYwMmNhNmJhZTViMGU4OTQ5NS4uMzcyNDA5MTk3MGFmMjljZTU3NmM0N2IyN2RiOGJk
MzJjNDgzYmVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTEyLTIxICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KCkgc28gbnVtYmVyT2ZDaGFubmVscyBh
bmQgc2FtcGxlUmF0ZSBhcmUgYWNjb3VudGVkIGZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgQWRkIE11bHRpQ2hhbm5lbFJlc2FtcGxlciBzb3VyY2UgZmlsZXMgdG8gbWFr
ZWZpbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0
aUNoYW5uZWxSZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNh
bXBsZXIuaDogQWRkZWQuCisgICAgICAgIEFkZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgaW1wbGVt
ZW50YXRpb24gd2hpY2ggdXNlcyBvbmUgU2luY1Jlc2FtcGxlciBwZXIgY2hhbm5lbC4KKyAgICAg
ICAgKiB3ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
OjpzZXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpwcm9jZXNzKToKKyAgICAgICAgSW1wbGVtZW50IE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZTo6c2V0Rm9ybWF0KCkgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgcHJvcGVybHkgc2V0dXAg
YSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIgYW5kIHNldCB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzCisg
ICAgICAgIG9mIHRoZSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgb3V0cHV0LgorICAgICAg
ICAqIHdlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorCiAyMDExLTEyLTIx
ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEwMzQwOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDZhOGIyNjYzY2IwMzJlNGI1NDI1YTM5NmNhZWExOWM3ZmQzNWFmNDUuLmI3ZmRjNjU4YjI1Yzk5
ZmRjMTg2MmEwNWM1NzFjYTM2ZDMzNTBlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNDgyOSw2ICs0ODI5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGUGFubmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRp
Q2hhbm5lbFJlc2FtcGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5u
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMTEyMTFmM2FiY2E2NGQwNDU3YzFmNGI1N2ZiNmRkN2YxMmQz
Y2RmZS4uZTZhY2E0Zjk4YWQwOWNkY2ViZDAxNzBhZDYzMmU0NTc0ZWU3NGMyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzIxNyw2ICszMjE3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRp
by9IUlRGS2VybmVsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9h
dWRpby9QYW5uZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTgwYWEzMzA3MTgxNDlhMzdjM2U5MDkyNjVkNmE5YWM3MmY1NjU4Ny4uM2JmYjQyZGJj
Zjc3ZDQ4NmE1MWZjODQ5ZGRjMWY3YzQzZjhlZDRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjM3MSw2ICs2MzcxLDggQEAK
IAkJRkRBM0U5NUExMzRBNDlFRjAwOEQ0QjVBIC8qIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBM0U5
NTYxMzRBNDlFRjAwOEQ0QjVBIC8qIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oICovOyB9
OwogCQlGREEzRTk1QjEzNEE0OUVGMDA4RDRCNUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
QTNFOTU3MTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
ICovOyB9OwogCQlGREEzRTk1QzEzNEE0OUVGMDA4RDRCNUEgLyogT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGREEzRTk1ODEzNEE0OUVGMDA4RDRCNUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmggKi87IH07CisJCUZEQjE3MDA1MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNh
bXBsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkRCMTcwMDMxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgKi87
IH07CisJCUZEQjE3MDA2MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQjE3MDA0
MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCAqLzsgfTsKIAkJRkRD
NTRGMDQxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRDNTRGMDExMzk5QjBEQTAwOEQ5
MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuY3BwICovOyB9OwogCQlGREM1NEYwNTEzOTlCMERBMDA4
RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkRDNTRGMDIxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRl
ck5vZGUuaCAqLzsgfTsKIAkJRkRFQUFBRjMxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHAgKi87IH07CkBAIC0xMzg0Myw2ICsxMzg0NSw4IEBACiAJCUZEQTNF
OTU3MTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBM0U5NTgxMzRBNDlF
RjAwOEQ0QjVBIC8qIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBM0U5NUQxMzRBNDlGRjAwOEQ0QjVBIC8qIE9mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT2ZmbGlu
ZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkRCMTcwMDMxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdWx0aUNoYW5uZWxSZXNhbXBsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1
RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGREM1NEYwMTEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXF1YWRGaWx0ZXJOb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRDNTRGMDIxMzk5QjBEQTAwOEQ5MTE3IC8q
IEJpcXVhZEZpbHRlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmlx
dWFkRmlsdGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREM1NEYwMzEz
OTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQmlxdWFkRmlsdGVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTc1Nyw2ICsyMTc2MSw4IEBACiAJCQkJRkQzMTYwNjkxMkIwMjZGNzAwQzFBMzU5IC8qIEhS
VEZLZXJuZWwuaCAqLywKIAkJCQlGRDMxNjA2QTEyQjAyNkY3MDBDMUEzNTkgLyogSFJURlBhbm5l
ci5jcHAgKi8sCiAJCQkJRkQzMTYwNkIxMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIuaCAq
LywKKwkJCQlGREIxNzAwMzE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVy
LmNwcCAqLywKKwkJCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5jcHAg
Ki8sCiAJCQkJRkQzMTYwNkQxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5oICovLAogCQkJCUZE
MzE2MDZFMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3BwICovLApAQCAtMjQ5NTQsNiArMjQ5
NjAsNyBAQAogCQkJCTFBQTcxNjBCMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxlQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMzN0NERUJEMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5MjZBMTRBMTI1MzIwMEJEODVGMSAvKiBT
Y3JvbGxhYmxlQXJlYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkRCMTcwMDYxNEEyQkFC
MjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
Nzg1OCw2ICsyNzg2NSw3IEBACiAJCQkJQTgwQTk0MjMxNDlGMjI1RTAwOTg5MjkxIC8qIEpTRE9N
V2luZG93V2ViQXVkaW9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwQTk0MjUxNDlG
MjI3MTAwOTg5MjkxIC8qIEpTRE9NV2luZG93V2ViU29ja2V0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUyRjUyRTExMTRBMDEzNEYwMEFDQzM5NyAvKiBOU1Njcm9sbGVySW1wRGV0YWls
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUZEQjE3MDA1MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0
aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYjQ5Nzc0NjRiMWZkYWRhN2VlNmQyZjE1MmEzMTU5ZmMyMzFjZDkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmNwcApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCIKKwor
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IHsKKworLy8gQ2hhbm5lbFByb3ZpZGVyIHByb3ZpZGVzIGEgc2luZ2xlIGNoYW5uZWwgb2YgYXVk
aW8gZGF0YSAob25lIGNoYW5uZWwgYXQgYSB0aW1lKSBmb3IgZWFjaCBjaGFubmVsCisvLyBvZiBk
YXRhIHByb3ZpZGVkIHRvIHVzIGluIGEgbXVsdGktY2hhbm5lbCBwcm92aWRlci4KKworY2xhc3Mg
Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgeworcHVibGljOgor
ICAgIENoYW5uZWxQcm92aWRlcihBdWRpb1NvdXJjZVByb3ZpZGVyKiBtdWx0aUNoYW5uZWxQcm92
aWRlciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKKyAgICAgICAgOiBtX211bHRpQ2hhbm5l
bFByb3ZpZGVyKG11bHRpQ2hhbm5lbFByb3ZpZGVyKQorICAgICAgICAsIG1fbnVtYmVyT2ZDaGFu
bmVscyhudW1iZXJPZkNoYW5uZWxzKQorICAgICAgICAsIG1fY3VycmVudENoYW5uZWwoMCkKKyAg
ICAgICAgLCBtX2ZyYW1lc1RvUHJvY2VzcygwKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBwcm92
aWRlSW5wdXQoKSB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIGNoYW5uZWwsIHN0YXJ0aW5n
IHdpdGggdGhlIGZpcnN0IGNoYW5uZWwuCisgICAgLy8gRWFjaCB0aW1lIGl0J3MgY2FsbGVkLCBp
dCB3aWxsIHByb3ZpZGUgdGhlIG5leHQgY2hhbm5lbCBvZiBkYXRhLgorICAgIHZpcnR1YWwgdm9p
ZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKKyAg
ICB7CisgICAgICAgIGJvb2wgaXNCdXNHb29kID0gYnVzICYmIGJ1cy0+bnVtYmVyT2ZDaGFubmVs
cygpID09IDE7CisgICAgICAgIEFTU0VSVChpc0J1c0dvb2QpOworICAgICAgICBpZiAoIWlzQnVz
R29vZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBHZXQgdGhlIGRhdGEgZnJv
bSB0aGUgbXVsdGktY2hhbm5lbCBwcm92aWRlciB3aGVuIHRoZSBmaXJzdCBjaGFubmVsIGFza3Mg
Zm9yIGl0LgorICAgICAgICAvLyBGb3Igc3Vic2VxdWVudCBjaGFubmVscywgd2UgY2FuIGp1c3Qg
ZGlzaCBvdXQgdGhlIGNoYW5uZWwgZGF0YSBmcm9tIHRoYXQgKHN0b3JlZCBpbiBtX211bHRpQ2hh
bm5lbEJ1cykuCisgICAgICAgIGlmICghbV9jdXJyZW50Q2hhbm5lbCkgeworICAgICAgICAgICAg
bV9mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7CisgICAgICAgICAgICBtX211bHRp
Q2hhbm5lbEJ1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhtX251bWJlck9mQ2hhbm5lbHMsIGZy
YW1lc1RvUHJvY2VzcykpOworICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxQcm92aWRlci0+cHJv
dmlkZUlucHV0KG1fbXVsdGlDaGFubmVsQnVzLmdldCgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQWxsIGNoYW5uZWxzIG11c3QgYXNrIGZvciB0aGUgc2FtZSBh
bW91bnQuIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY2FzZSwgYnV0IGxldCdzIGp1c3QgbWFr
ZSBzdXJlLgorICAgICAgICBib29sIGlzR29vZCA9IG1fbXVsdGlDaGFubmVsQnVzLmdldCgpICYm
IGZyYW1lc1RvUHJvY2VzcyA9PSBtX2ZyYW1lc1RvUHJvY2VzczsKKyAgICAgICAgQVNTRVJUKGlz
R29vZCk7CisgICAgICAgIGlmICghaXNHb29kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIC8vIENvcHkgdGhlIGNoYW5uZWwgZGF0YSBmcm9tIHdoYXQgd2UgcmVjZWl2ZWQgZnJvbSBt
X211bHRpQ2hhbm5lbFByb3ZpZGVyLgorICAgICAgICBBU1NFUlQobV9jdXJyZW50Q2hhbm5lbCA8
PSBtX251bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBpZiAobV9jdXJyZW50Q2hhbm5lbCA8IG1f
bnVtYmVyT2ZDaGFubmVscykgeworICAgICAgICAgICAgbWVtY3B5KGJ1cy0+Y2hhbm5lbCgwKS0+
ZGF0YSgpLCBtX211bHRpQ2hhbm5lbEJ1cy0+Y2hhbm5lbChtX2N1cnJlbnRDaGFubmVsKS0+ZGF0
YSgpLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgICAgICsrbV9j
dXJyZW50Q2hhbm5lbDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBtX211bHRpQ2hhbm5lbFByb3ZpZGVyOworICAgIE93blB0cjxBdWRpb0J1
cz4gbV9tdWx0aUNoYW5uZWxCdXM7CisgICAgdW5zaWduZWQgbV9udW1iZXJPZkNoYW5uZWxzOwor
ICAgIHVuc2lnbmVkIG1fY3VycmVudENoYW5uZWw7CisgICAgc2l6ZV90IG1fZnJhbWVzVG9Qcm9j
ZXNzOyAvLyB1c2VkIHRvIHZlcmlmeSB0aGF0IGFsbCBjaGFubmVscyBhc2sgZm9yIHRoZSBzYW1l
IGFtb3VudAorfTsKKworfSAvLyBuYW1lc3BhY2UKKworTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpN
dWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzKQorICAgIDogbV9zY2FsZUZhY3RvcihzY2FsZUZhY3RvcikKKyAgICAsIG1fbnVt
YmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQoreworICAgIC8vIENyZWF0ZSBlYWNoIGNo
YW5uZWwncyByZXNhbXBsZXIuCisgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBj
aGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgeworICAgICAg
ICBPd25QdHI8U2luY1Jlc2FtcGxlcj4gcmVzYW1wbGVyID0gYWRvcHRQdHIobmV3IFNpbmNSZXNh
bXBsZXIoc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChyZXNhbXBsZXIu
cmVsZWFzZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9j
ZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpb24s
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gcHJvdmlkZXIgY2FuIHByb3ZpZGUg
dXMgd2l0aCBtdWx0aS1jaGFubmVsIGF1ZGlvIGRhdGEuIEJ1dCBlYWNoIG9mIG91ciBzaW5nbGUt
Y2hhbm5lbCByZXNhbXBsZXJzIChrZXJuZWxzKQorICAgIC8vIGJlbG93IHJlcXVpcmVzIGEgcHJv
dmlkZXIgd2hpY2ggcHJvdmlkZXMgYSBzaW5nbGUgdW5pcXVlIGNoYW5uZWwgb2YgZGF0YS4KKyAg
ICAvLyBjaGFubmVsUHJvdmlkZXIgd3JhcHMgdGhlIG9yaWdpbmFsIG11bHRpLWNoYW5uZWwgcHJv
dmlkZXIgYW5kIGRpc2hlcyBvdXQgb25lIGNoYW5uZWwgYXQgYSB0aW1lLgorICAgIENoYW5uZWxQ
cm92aWRlciBjaGFubmVsUHJvdmlkZXIocHJvdmlkZXIsIG1fbnVtYmVyT2ZDaGFubmVscyk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG1fbnVt
YmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKKyAgICAgICAgLy8gRGVwZW5kaW5nIG9u
IHRoZSBzYW1wbGUtcmF0ZSBzY2FsZSBmYWN0b3IsIGFuZCB0aGUgaW50ZXJuYWwgYnVmZmVyaW5n
IHVzZWQgaW4gYSBTaW5jUmVzYW1wbGVyCisgICAgICAgIC8vIGtlcm5lbCwgdGhpcyBjYWxsIHRv
IHByb2Nlc3MoKSB3aWxsIG9ubHkgc29tZXRpbWVzIGNhbGwgcHJvdmlkZUlucHV0KCkgb24gdGhl
IGNoYW5uZWxQcm92aWRlci4KKyAgICAgICAgLy8gSG93ZXZlciwgaWYgaXQgY2FsbHMgcHJvdmlk
ZUlucHV0KCkgZm9yIHRoZSBmaXJzdCBjaGFubmVsLCB0aGVuIGl0IHdpbGwgY2FsbCBpdCBmb3Ig
dGhlIHJlbWFpbmluZworICAgICAgICAvLyBjaGFubmVscywgc2luY2UgdGhleSBhbGwgYnVmZmVy
IGluIHRoZSBzYW1lIHdheSBhbmQgYXJlIHByb2Nlc3NpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIGZy
YW1lcy4KKyAgICAgICAgbV9rZXJuZWxzW2NoYW5uZWxJbmRleF0tPnByb2Nlc3MoJmNoYW5uZWxQ
cm92aWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGlu
YXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXNUb1Byb2Nlc3MpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmQ1OTcwYzMwMjQ2MDE3NWIyM2I0OGY4NWY1YTdjZjQyY2RlOWUzZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11bHRpQ2hhbm5lbFJl
c2FtcGxlcl9oCisjZGVmaW5lIE11bHRpQ2hhbm5lbFJlc2FtcGxlcl9oCisKKyNpbmNsdWRlICJT
aW5jUmVzYW1wbGVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvQnVzOworICAgIAorY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1w
bGVyIHsKK3B1YmxpYzogICAKKyAgICBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxl
RmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAKKyAgICAvLyBQcm9jZXNz
IGdpdmVuIEF1ZGlvU291cmNlUHJvdmlkZXIgZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCisg
ICAgdm9pZCBwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqLCBBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiB0
aGUgbWFjIHBvcnQgY2FuIGhhdmUgYSBtb3JlIGhpZ2hseSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRp
b24gYmFzZWQgb24gQ29yZUF1ZGlvCisgICAgLy8gaW5zdGVhZCBvZiBTaW5jUmVzYW1wbGVyLiBG
b3Igbm93IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBvbiBhbGwgcG9y
dHMuCisKKyAgICAvLyBFYWNoIGNoYW5uZWwgd2lsbCBiZSByZXNhbXBsZWQgdXNpbmcgYSBoaWdo
LXF1YWxpdHkgU2luY1Jlc2FtcGxlci4KKyAgICBWZWN0b3I8T3duUHRyPFNpbmNSZXNhbXBsZXI+
ID4gbV9rZXJuZWxzOworICAgIAorICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOworICAgIHVuc2ln
bmVkIG1fbnVtYmVyT2ZDaGFubmVsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIE11bHRpQ2hhbm5lbFJlc2FtcGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA3YTYx
MTZkNzkyNjg3M2IyYTA3ZWRjMGM3NDM2YTRiYWE5Yjg4MGZkLi5iMjRmY2M4NDUwOWFkYzdkYjcz
MTA1M2Q0MGJlNWY2MjVlZDAxNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTMwLDIyICszMCwyOSBA
QAogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0
LmgiCisjaW5jbHVkZSAiTG9ja2VyLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKIAorLy8g
VGhlc2UgYXJlIHNvbWV3aGF0IGFyYml0cmFyeSBsaW1pdHMsIGJ1dCB3ZSBuZWVkIHRvIGRvIHNv
bWUga2luZCBvZiBzYW5pdHktY2hlY2tpbmcuCitjb25zdCB1bnNpZ25lZCBtaW5TYW1wbGVSYXRl
ID0gODAwMDsKK2NvbnN0IHVuc2lnbmVkIG1heFNhbXBsZVJhdGUgPSAxOTIwMDA7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlhRWxlbWVudCkp
OyAgICAgIAorICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlKGNvbnRleHQsIG1lZGlhRWxlbWVudCkpOwogfQogCiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvU291cmNlTm9kZShj
b250ZXh0LCBjb250ZXh0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX21lZGlhRWxlbWVudChtZWRp
YUVsZW1lbnQpCisgICAgLCBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMoMCkKKyAgICAsIG1fc291
cmNlU2FtcGxlUmF0ZSgwKQogewogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxk
IGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAuc3JjIGlzIHNldCB0
by4KICAgICBhZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAyKSkp
OwotICAgIAorCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZSk7CiAKICAgICBpbml0aWFsaXplKCk7CkBAIC01NywzMiArNjQsNzMgQEAgTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjp+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCkKICAgICB1bmlu
aXRpYWxpemUoKTsKIH0KIAotdm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZv
cm1hdChzaXplX3QsIGZsb2F0KQordm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNl
dEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlU2FtcGxlUmF0ZSkK
IHsKLSAgICAvLyBGSVhNRTogc2V0dXAgYSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIgaWYgbmVjZXNz
YXJ5IHRvIGNvbnZlcnQgdG8gdGhlIEF1ZGlvQ29udGV4dCBzYW1wbGUtcmF0ZS4KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobnVtYmVyT2ZDaGFubmVscyAhPSBtX3NvdXJjZU51
bWJlck9mQ2hhbm5lbHMgfHwgc291cmNlU2FtcGxlUmF0ZSAhPSBtX3NvdXJjZVNhbXBsZVJhdGUp
IHsKKyAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBtdWx0aS1jaGFubmVsIGdyZWF0ZXIgdGhh
biBzdGVyZW8uCisgICAgICAgIGlmICghbnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5u
ZWxzID4gMiB8fCBzb3VyY2VTYW1wbGVSYXRlIDwgbWluU2FtcGxlUmF0ZSB8fCBzb3VyY2VTYW1w
bGVSYXRlID4gbWF4U2FtcGxlUmF0ZSkgeworICAgICAgICAgICAgLy8gcHJvY2VzcygpIHdpbGwg
Z2VuZXJhdGUgc2lsZW5jZSBmb3IgdGhlc2UgdW5pbml0aWFsaXplZCB2YWx1ZXMuCisgICAgICAg
ICAgICBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMgPSAwOworICAgICAgICAgICAgbV9zb3VyY2VT
YW1wbGVSYXRlID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IG1fc291cmNlTnVtYmVyT2ZDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisgICAgICAgIG1f
c291cmNlU2FtcGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CisKKyAgICAgICAgLy8gU3luY2hy
b25pemUgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIExvY2tlcjxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGxvY2tlcigqdGhpcyk7CisKKyAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUg
IT0gc2FtcGxlUmF0ZSgpKSB7CisgICAgICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3Vy
Y2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOworICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBhZG9wdFB0cihuZXcgTXVsdGlDaGFubmVsUmVzYW1wbGVyKHNjYWxlRmFjdG9y
LCBudW1iZXJPZkNoYW5uZWxzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBC
eXBhc3MgcmVzYW1wbGluZy4KKyAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyLmNs
ZWFyKCk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgY29udGV4
dCBtdXN0IGJlIGxvY2tlZCB3aGVuIGNoYW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5u
ZWxzLgorICAgICAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIo
Y29udGV4dCgpKTsKKworICAgICAgICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29uZmln
dXJhdGlvbiB0byB0aGUgYnVmZmVyJ3MgbnVtYmVyIG9mIGNoYW5uZWxzLgorICAgICAgICAgICAg
b3V0cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOworICAgICAg
ICB9CisgICAgfQogfQogCiB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6cHJvY2Vz
cyhzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IG91
dHB1dCgwKS0+YnVzKCk7CiAKLSAgICBpZiAoIW1lZGlhRWxlbWVudCgpKSB7CisgICAgaWYgKCFt
ZWRpYUVsZW1lbnQoKSB8fCAhbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzIHx8ICFtX3NvdXJjZVNh
bXBsZVJhdGUpIHsKICAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgCisKICAgICAvLyBVc2UgYSB0cnlMb2NrKCkgdG8gYXZvaWQgY29udGVudGlv
biBpbiB0aGUgcmVhbC10aW1lIGF1ZGlvIHRocmVhZC4KICAgICAvLyBJZiB3ZSBmYWlsIHRvIGFj
cXVpcmUgdGhlIGxvY2sgdGhlbiB0aGUgSFRNTE1lZGlhRWxlbWVudCBtdXN0IGJlIGluIHRoZSBt
aWRkbGUgb2YKICAgICAvLyByZWNvbmZpZ3VyaW5nIGl0cyBwbGF5YmFjayBlbmdpbmUsIHNvIHdl
IG91dHB1dCBzaWxlbmNlIGluIHRoaXMgY2FzZS4KICAgICBpZiAobV9wcm9jZXNzTG9jay50cnlM
b2NrKCkpIHsKLSAgICAgICAgaWYgKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gbWVk
aWFFbGVtZW50KCktPmF1ZGlvU291cmNlUHJvdmlkZXIoKSkKLSAgICAgICAgICAgIHByb3ZpZGVy
LT5wcm92aWRlSW5wdXQob3V0cHV0QnVzLCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgICAgIGVsc2UK
KyAgICAgICAgaWYgKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gbWVkaWFFbGVtZW50
KCktPmF1ZGlvU291cmNlUHJvdmlkZXIoKSkgeworICAgICAgICAgICAgaWYgKG1fbXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmdldCgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fc291cmNlU2Ft
cGxlUmF0ZSAhPSBzYW1wbGVSYXRlKCkpOworICAgICAgICAgICAgICAgIG1fbXVsdGlDaGFubmVs
UmVzYW1wbGVyLT5wcm9jZXNzKHByb3ZpZGVyLCBvdXRwdXRCdXMsIG51bWJlck9mRnJhbWVzKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQnlwYXNzIHRoZSByZXNh
bXBsZXIgY29tcGxldGVseSBpZiB0aGUgc291cmNlIGlzIGF0IHRoZSBjb250ZXh0J3Mgc2FtcGxl
LXJhdGUuCisgICAgICAgICAgICAgICAgQVNTRVJUKG1fc291cmNlU2FtcGxlUmF0ZSA9PSBzYW1w
bGVSYXRlKCkpOworICAgICAgICAgICAgICAgIHByb3ZpZGVyLT5wcm92aWRlSW5wdXQob3V0cHV0
QnVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBFaXRoZXIgdGhpcyBwb3J0IGRvZXNuJ3QgeWV0IHN1cHBvcnQgSFRNTE1l
ZGlhRWxlbWVudCBhdWRpbyBzdHJlYW0gYWNjZXNzLAorICAgICAgICAgICAgLy8gb3IgdGhlIHN0
cmVhbSBpcyBub3QgeWV0IGF2YWlsYWJsZS4KICAgICAgICAgICAgIG91dHB1dEJ1cy0+emVybygp
OworICAgICAgICB9CiAgICAgICAgIG1fcHJvY2Vzc0xvY2sudW5sb2NrKCk7Ci0gICAgfSBlbHNl
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gV2UgZmFpbGVkIHRvIGFjcXVpcmUgdGhlIGxvY2su
CiAgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgIH0KIH0KIAogdm9pZCBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgKaW5kZXggMDdlYmY2N2ViZGM2MmU4
NjM0MTkzYjY3ZDEzODc2MDQ3NTg2NzJiMi4uMDZlYzdlMTZiNDQyYTEwYzJmNDhlMjc3NmNkMmNj
NDQ2NzllNWYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJBdWRp
b1NvdXJjZU5vZGUuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk11bHRpQ2hhbm5lbFJlc2Ft
cGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApAQCAtNjAsNiArNjIsMTEgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKICAg
ICBNdXRleCBtX3Byb2Nlc3NMb2NrOworCisgICAgdW5zaWduZWQgbV9zb3VyY2VOdW1iZXJPZkNo
YW5uZWxzOworICAgIGRvdWJsZSBtX3NvdXJjZVNhbXBsZVJhdGU7CisKKyAgICBPd25QdHI8TXVs
dGlDaGFubmVsUmVzYW1wbGVyPiBtX211bHRpQ2hhbm5lbFJlc2FtcGxlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="120477"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>