<?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>66142</bug_id>
          
          <creation_ts>2011-08-12 09:39:19 -0700</creation_ts>
          <short_desc>[CSSRegions] RenderRegion should not reference a parent RenderFlowThread</short_desc>
          <delta_ts>2011-08-18 07:37:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          <blocked>57312</blocked>
    
    <blocked>66129</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hyatt</cc>
    
    <cc>mihnea</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450471</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-12 09:39:19 -0700</bug_when>
    <thetext>Because RenderRegion can actually be part of other RenderFlowThreads we need to check that it is not actually trying to display a parent RenderFlowThread.

Example:

&lt;div style=&quot;flow: &apos;flow1&apos;;&quot;&gt;
    &lt;div style=&quot;content: from-flow:&apos;flow1&apos;&gt;&lt;/div&gt;
&lt;/div&gt;

Also we need to check for circular dependencies like the following one:

&lt;div style=&quot;flow: &apos;flow1&apos;;&quot;&gt;
    &lt;div style=&quot;content: from-flow:&apos;flow2&apos;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;flow: &apos;flow2&apos;;&quot;&gt;
    &lt;div style=&quot;content: from-flow:&apos;flow1&apos;&gt;&lt;/div&gt;
&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451616</commentid>
    <comment_count>1</comment_count>
      <attachid>104044</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 08:03:23 -0700</bug_when>
    <thetext>Created attachment 104044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451629</commentid>
    <comment_count>2</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 08:20:27 -0700</bug_when>
    <thetext>&gt; Created an attachment (id=104044) [details]
&gt; Patch

The patch creates a dependency tree and adds a region to a flow thread only if it adds no circular dependency to this tree. 

The patch also moves the layout of the RenderFlowThreads to a separate method called RenderView::layoutRenderFlowThreads, so that all threads are done at the end of the RenderView layout.

It will also sort the regions, so that all the dependent RenderRegions are laid out before they are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451679</commentid>
    <comment_count>3</comment_count>
      <attachid>104044</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-16 09:47:07 -0700</bug_when>
    <thetext>Comment on attachment 104044
Patch

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

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:373
&gt; +    if (newRenderer-&gt;isRenderRegion())
&gt; +        toRenderRegion(newRenderer)-&gt;attachRegion();

Seems like this would be better placed in renderer methods than over here. Maybe in RenderObjectChildList::append/insert/removeChildNode instead. Check out updateListMarkerNumbers call sites in RenderObjectChildList to see where you might attach and remove regions as they enter/leave the tree.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1535
&gt; +    if (child-&gt;isRenderFlowThread())
&gt; +        return true;

You&apos;ve turned this into a virtual function call hit by every child you check, even non-positioned ones. This also only handles the insertion of positioned objects from blocks with block-level children. Changing to:

if (child-&gt;isPositioned &amp;&amp; !child-&gt;isRenderFlowThread())

would limit the virtual function call only to positioned children instead of making it for all children.

However, you also didn&apos;t patch insertion from blocks with inline children that happens in RenderBlockLineLayout.cpp near the top of layoutInlineChildren.

I think an easier way to handle this might be to just patch insertPositionedObject to ignore RenderFlowThreads, and that way you only have to patch one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451765</commentid>
    <comment_count>4</comment_count>
      <attachid>104070</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 11:27:54 -0700</bug_when>
    <thetext>Created attachment 104070
Patch V2

Thanks for the tips. Updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451800</commentid>
    <comment_count>5</comment_count>
      <attachid>104070</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-16 12:44:29 -0700</bug_when>
    <thetext>Comment on attachment 104070
Patch V2

You&apos;ll need to tweak this after my landing from r93144. You&apos;ll want to ditch my m_hasRenderFlowThreads boolean now that you added the list, and you can redefine my hasRenderFlowThreads function on RenderView in terms of the list being non-empty.

You&apos;ll also want to add isValid checks to the region walk I do in repaintIntoRegions.

Sorry for the conflicts. Should be easy to update though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451827</commentid>
    <comment_count>6</comment_count>
      <attachid>104083</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 13:35:46 -0700</bug_when>
    <thetext>Created attachment 104083
Patch V3

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451878</commentid>
    <comment_count>7</comment_count>
      <attachid>104083</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-16 14:41:16 -0700</bug_when>
    <thetext>Comment on attachment 104083
Patch V3

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

Fix the one misspelled method name. Sorry I didn&apos;t catch it before.

&gt; Source/WebCore/ChangeLog:47
&gt; +        (WebCore::RenderRegion::dettachRegion):

Typo. Should be detachRegion

&gt; Source/WebCore/rendering/RenderObjectChildList.cpp:106
&gt; +            toRenderRegion(oldChild)-&gt;dettachRegion();

detachRegion

&gt; Source/WebCore/rendering/RenderRegion.cpp:111
&gt; +void RenderRegion::dettachRegion()

detachRegion

&gt; Source/WebCore/rendering/RenderRegion.h:53
&gt; +    void dettachRegion();

detachRegion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451892</commentid>
    <comment_count>8</comment_count>
      <attachid>104096</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 14:59:18 -0700</bug_when>
    <thetext>Created attachment 104096
Patch V4

Fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451898</commentid>
    <comment_count>9</comment_count>
      <attachid>104096</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-16 15:04:04 -0700</bug_when>
    <thetext>Comment on attachment 104096
Patch V4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451970</commentid>
    <comment_count>10</comment_count>
      <attachid>104096</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 16:37:31 -0700</bug_when>
    <thetext>Comment on attachment 104096
Patch V4

Rejecting attachment 104096 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
omium-mac to mean Skia instead of CoreGraphics.&quot;
Failed to merge in the changes.
Patch failed at 0001 This patch prepares for chromium-mac to mean Skia instead of CoreGraphics.

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 146.

Full output: http://queues.webkit.org/results/9399008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452118</commentid>
    <comment_count>11</comment_count>
      <attachid>104147</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 22:02:01 -0700</bug_when>
    <thetext>Created attachment 104147
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452119</commentid>
    <comment_count>12</comment_count>
      <attachid>104147</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 22:03:16 -0700</bug_when>
    <thetext>Comment on attachment 104147
Patch for landing

Rejecting attachment 104147 from commit-queue.

achicu@adobe.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452121</commentid>
    <comment_count>13</comment_count>
      <attachid>104149</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-16 22:07:24 -0700</bug_when>
    <thetext>Created attachment 104149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452122</commentid>
    <comment_count>14</comment_count>
      <attachid>104149</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 22:07:58 -0700</bug_when>
    <thetext>Comment on attachment 104149
Patch for landing

Rejecting attachment 104149 from commit-queue.

achicu@adobe.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452173</commentid>
    <comment_count>15</comment_count>
      <attachid>104149</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 01:31:32 -0700</bug_when>
    <thetext>Comment on attachment 104149
Patch for landing

Rejecting attachment 104149 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
uto-merging Source/WebCore/platform/chromium/ScrollAnimatorChromiumMac.mm
Failed to merge in the changes.
Patch failed at 0001 2011-08-16  Andrey Kosyakov  &lt;caseq@chromium.org&gt;

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 146.

Full output: http://queues.webkit.org/results/9401815</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453016</commentid>
    <comment_count>16</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-18 07:11:01 -0700</bug_when>
    <thetext>*** Bug 66129 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453031</commentid>
    <comment_count>17</comment_count>
      <attachid>104149</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 07:36:59 -0700</bug_when>
    <thetext>Comment on attachment 104149
Patch for landing

Clearing flags on attachment: 104149

Committed r93307: &lt;http://trac.webkit.org/changeset/93307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453033</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 07:37:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104044</attachid>
            <date>2011-08-16 08:03:23 -0700</date>
            <delta_ts>2011-08-16 11:27:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug66142.patch</filename>
            <type>text/plain</type>
            <size>33149</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNzlhNjBkLi5jM2I3ZjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBSZW5kZXJSZWdpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVu
ZGVyRmxvd1RocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
ZHluYW1pYy1yZW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dz
LWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA4LTE1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyNjMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMt
cmVtb3ZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBl
bmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44ZjQwMmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3
IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDAp
IHNpemUgMHgwCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxv
d0EnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMQorICAgIFJlbmRlclJlZ2lv
biB7RElWfSB3aXRoIGluZGV4IDIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QicKKyAg
UmVnaW9ucyBmb3IgZmxvdyAnZmxvd0InCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5k
ZXggMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktZHluYW1pYy1yZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjFlNmYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKQEAgLTAsMCArMSwzNyBA
QAorPCFET0NUWVBFIEhUTUw+CisKKzxzdHlsZT4KKy5mbG93QSB7IC13ZWJraXQtZmxvdzogJ2Zs
b3dBJzsgfQorLmZsb3dCIHsgLXdlYmtpdC1mbG93OiAnZmxvd0InOyB9CisuZmxvd0MgeyAtd2Vi
a2l0LWZsb3c6ICdmbG93Qyc7IH0KKworLnJlZ2lvbkZsb3dBIHsgY29udGVudDogLXdlYmtpdC1m
cm9tLWZsb3coJ2Zsb3dBJyk7IH0KKy5yZWdpb25GbG93QiB7IGNvbnRlbnQ6IC13ZWJraXQtZnJv
bS1mbG93KCdmbG93QicpOyB9CisucmVnaW9uRmxvd0MgeyBjb250ZW50OiAtd2Via2l0LWZyb20t
ZmxvdygnZmxvd0MnKTsgfQorCisuaW5kZXgxIHsgLXdlYmtpdC1jb250ZW50LW9yZGVyOiAxOyB9
CisuaW5kZXgyIHsgLXdlYmtpdC1jb250ZW50LW9yZGVyOiAyOyB9CisuaW5kZXgzIHsgLXdlYmtp
dC1jb250ZW50LW9yZGVyOiAzOyB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJmbG93QSI+Cisg
ICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0IgaW5kZXgxIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGNsYXNzPSJmbG93QiI+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0MgaW5kZXgxIj48L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbG93QyI+CisgICAgPCEtLSBUaGUgZm9sbG93aW5n
IHJlZ2lvbiB3aWxsIGluaXRpYWxseSBiZSBpbnZhbGlkLiBSZW1vdmluZyByZWdpb25GbG93QyBz
aG91bGQgbWFrZSBpdCB2YWxpZCBhZ2Fpbi4gLS0+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxv
d0EgaW5kZXgxIj48L2Rpdj4KKzwvZGl2PgorCis8IS0tIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0
aGUgZmxvd3MuIEluIHRoZSBmdXR1cmUgd2UgbWlnaHQgYXZvaWQgY3JlYXRpbmcgZmxvd3MgaWYg
dGhlcmUgYXJlIG5vIHJlYWNoYWJsZSByZWdpb25zLiAtLT4KKzxkaXYgY2xhc3M9InJlZ2lvbkZs
b3dBIGluZGV4MiI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRU
b3A7ICAgIC8vIGZvcmNlIGxheW91dAorICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoInJlZ2lvbkZsb3dDIilbMF07CisgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChlbCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
c2FtZS1mbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42MjU0ODZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHgxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAg
UmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJSZWdpb24g
e0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93
LW5hbWUgJ2Zsb3dCJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdp
b24ge0RJVn0gaW52YWxpZCB3aXRoIGluZGV4IDEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0
aCBpbmRleCAyCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCisgIFJlZ2lvbnMgZm9y
IGZsb3cgJ2Zsb3dDJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4IDEKKyAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0EnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJworICAgIFJlbmRlclJlZ2lvbiB7RElW
fSB3aXRoIGluZGV4IDIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZs
b3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUt
Zmxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MjkyMjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3cuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTD4KKworPHN0
eWxlPgorLmZsb3dBIHsgLXdlYmtpdC1mbG93OiAnZmxvd0EnOyB9CisuZmxvd0IgeyAtd2Via2l0
LWZsb3c6ICdmbG93Qic7IH0KKy5mbG93QyB7IC13ZWJraXQtZmxvdzogJ2Zsb3dDJzsgfQorCisu
cmVnaW9uRmxvd0EgeyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxvdygnZmxvd0EnKTsgfQorLnJl
Z2lvbkZsb3dCIHsgY29udGVudDogLXdlYmtpdC1mcm9tLWZsb3coJ2Zsb3dCJyk7IH0KKy5yZWdp
b25GbG93QyB7IGNvbnRlbnQ6IC13ZWJraXQtZnJvbS1mbG93KCdmbG93QycpOyB9CisKKy5pbmRl
eDEgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDE7IH0KKy5pbmRleDIgeyAtd2Via2l0LWNvbnRl
bnQtb3JkZXI6IDI7IH0KKy5pbmRleDMgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDM7IH0KKzwv
c3R5bGU+CisKKzxkaXYgY2xhc3M9ImZsb3dBIj4KKyAgICA8IS0tIFRoZSBmb2xsb3dpbmcgcmVn
aW9uIHNob3VsZCBiZSBpZ25vcmVkLiBEaXJlY3QgY2lyY3VsYXIgcmVmZXJlbmNlLiAtLT4KKyAg
ICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QSBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYg
Y2xhc3M9ImZsb3dCIj4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QyBpbmRleDEiPjwvZGl2
PgorICAgIDwhLS0gVGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQuIERpcmVj
dCBjaXJjdWxhciByZWZlcmVuY2UuIC0tPgorICAgIDxkaXYgY2xhc3M9ImZsb3dDIHJlZ2lvbkZs
b3dDIGluZGV4MiI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxvd0MiPgorICAgIDwh
LS0gVGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGludmFsaWQuIENpcmN1bGFyIHJlZmVy
ZW5jZSB0aHJvdWdoIGZsb3dCIHdoaWNoIGFscmVhZHkgaGFzIGNyZWF0ZWQgYSBsaW5rIHRvIHRo
aXMgZmxvdworICAgICAgICAgdGhyb3VnaCB0aGUgInJlZ2lvbkZsb3dDIGluZGV4MSIgcmVnaW9u
LiAtLT4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDEiPjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MiI+PC9kaXY+Cis8L2Rpdj4KKworPCEtLSBGb3Jj
ZSB0aGUgY3JlYXRpb24gb2YgdGhlIGZsb3dzLiBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IGF2b2lk
IGNyZWF0aW5nIGZsb3dzIGlmIHRoZXJlIGFyZSBubyByZWFjaGFibGUgcmVnaW9ucy4gLS0+Cis8
ZGl2IGNsYXNzPSJyZWdpb25GbG93QSBpbmRleDMiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVnaW9u
Rmxvd0IgaW5kZXgyIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dDIGluZGV4MyI+PC9k
aXY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNGQzMzMzMC4uNjhhMWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY0IEBACisyMDExLTA4LTE2ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNv
bT4KKworICAgICAgICBbQ1NTUmVnaW9uc10gUmVuZGVyUmVnaW9uIHNob3VsZCBub3QgcmVmZXJl
bmNlIGEgcGFyZW50IFJlbmRlckZsb3dUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQyCisKKyAgICAgICAgQWRkZWQgY29kZSB0aGF0IGNo
ZWNrcyB0aGUgcGFyZW50IFJlbmRlckZsb3dUaHJlYWQgb2YgYSBSZW5kZXJSZWdpb24gYW5kIGNy
ZWF0ZXMKKyAgICAgICAgYSBkZXBlbmRlbmN5IGZvciBpdHMgcmVmZXJlbmNlZCBSZW5kZXJGbG93
VGhyZWFkIChmcm9tIENTUyBzdHlsZSkuCisKKyAgICAgICAgVGhlcmUgYXJlIHR3byBjYXNlczoK
KyAgICAgICAgMS4gQSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxheSB0aGUgZmxvdyB0aHJl
YWQgdGhhdCBsYWlkIGl0IG91dC4gSW4gdGhpcyBjYXNlCisgICAgICAgIHRoZSByZWdpb24gd2ls
bCBiZSBpZ25vcmVkIGFuZCB3aWxsIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgZmxvdyB0aHJlYWRz
IHJlZ2lvbnMgbGlzdC4KKyAgICAgICAgMi4gQSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxh
eSBhIGZsb3cgdGhyZWFkIHRoYXQgY29udGFpbnMgYW5vdGhlciByZWdpb24gdGhhdAorICAgICAg
ICB0cmllcyB0byBkaXNwbGF5IHRoZSBmaXJzdCByZWdpb24ncyBmbG93IHRocmVhZC4gVGhpcyBv
bmUgY2FuIGJlIGdlbmVyYWxpemVkIHdpdGggYW55CisgICAgICAgIG51bWJlciBvZiBpbnRlcm1l
ZGlhdGUgZmxvdyB0aHJlYWRzLiBJbiB0aGlzIGNhc2UgdGhlIHJlY3Vyc2lvbiBpcyBkZXRlY3Rl
ZCBhbmQgb25seSB0aGUKKyAgICAgICAgZmlyc3QgYWRkZWQgcmVnaW9uIHdpbGwgYWN0dWFsbHkg
YmUgc2VsZWN0ZWQuIFRoZSBvdGhlciByZWdpb24gd2lsbCBiZSBpZ25vcmVkLiBIb3dldmVyLAor
ICAgICAgICBjYXJlIG11c3QgYmUgdGFrZW4sIHNvIHRoYXQgd2hlbiB0aGUgcmVjdXJzaW9uIGlz
IHJlbW92ZWQgdGhlIGludmFsaWQgcmVnaW9ucyB3aWxsIGJlIHJlY292ZXJlZC4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdp
b25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWwKKworICAgICAgICAq
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmhhbmRs
ZVBvc2l0aW9uZWRDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6ZGVwZW5kc09uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25G
bG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZURl
cGVuZGVuY3lPbkZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6cHVzaERlcGVuZGVuY2llcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRl
TG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
Z2lvbjo6flJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnBh
aW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpub2RlQXRQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmF0dGFjaFJlZ2lvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uOjpwYXJlbnRGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lv
bjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnNldElzVmFsaWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlUmVuZGVyRmxvd1RocmVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVM
YXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlbmRlckZsb3dU
aHJlYWRXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXRSZW5k
ZXJGbG93VGhyZWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmlzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZW5kZXJGbG93VGhyZWFkTGlz
dCk6CisKIDIwMTEtMDgtMTUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbQ01BS0VdIFdyYXAgZmlsZXMgb2Ygd2Vic29ja2V0IGFuZCB3b3JrZXIg
aW4gZWFjaCBtYWNyby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDAxNWUyOTQuLjliY2ZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZs
b3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIKQEAgLTM2Nyw2ICszNjgsOSBAQCB2b2lkIE5vZGVSZW5k
ZXJlckZhY3Rvcnk6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogCiAgICAgLy8gTm90ZTogQWRk
aW5nIG5ld1JlbmRlcmVyIGluc3RlYWQgb2YgcmVuZGVyZXIoKS4gcmVuZGVyZXIoKSBtYXkgYmUg
YSBjaGlsZCBvZiBuZXdSZW5kZXJlci4KICAgICBwYXJlbnRSZW5kZXJlci0+YWRkQ2hpbGQobmV3
UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7CisKKyAgICBpZiAobmV3UmVuZGVyZXItPmlzUmVuZGVy
UmVnaW9uKCkpCisgICAgICAgIHRvUmVuZGVyUmVnaW9uKG5ld1JlbmRlcmVyKS0+YXR0YWNoUmVn
aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmlu
ZGV4IGE0MDQxYTQuLjUzZGQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMTUzMSw2ICsxNTMxLDkgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFuZGxlU3Bl
Y2lhbENoaWxkKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IE1hcmdpbkluZm8mIG1hcmdpbkkKIAog
Ym9vbCBSZW5kZXJCbG9jazo6aGFuZGxlUG9zaXRpb25lZENoaWxkKFJlbmRlckJveCogY2hpbGQs
IGNvbnN0IE1hcmdpbkluZm8mIG1hcmdpbkluZm8pCiB7CisgICAgaWYgKGNoaWxkLT5pc1JlbmRl
ckZsb3dUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBpZiAoY2hpbGQtPmlz
UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIGNoaWxkLT5jb250YWluaW5nQmxvY2soKS0+aW5zZXJ0
UG9zaXRpb25lZE9iamVjdChjaGlsZCk7CiAgICAgICAgIGFkanVzdFBvc2l0aW9uZWRCbG9jayhj
aGlsZCwgbWFyZ2luSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKaW5kZXggYmIxNGNhZi4uMDM1OWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTE0OCw2ICsxNDksMjMgQEAgc3RhdGljIGJvb2wgY29tcGFyZVJlbmRlclJlZ2lv
bnMoY29uc3QgUmVuZGVyUmVnaW9uKiBmaXJzdFJlZ2lvbiwgY29uc3QgUmVuZGVyUmUKICAgICBy
ZXR1cm4gKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKTsKIH0K
IAorYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVyRmxvd1RocmVhZCogb3Ro
ZXJSZW5kZXJGbG93VGhyZWFkKSBjb25zdAoreworICAgIGlmIChtX2xheW91dEJlZm9yZVRocmVh
ZHNTZXQuY29udGFpbnMob3RoZXJSZW5kZXJGbG93VGhyZWFkKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAvLyBSZWN1cnNpdmVseSB0cmF2ZXJzZSB0aGUgbV9sYXlvdXRCZWZvcmVUaHJl
YWRzU2V0LgorICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0Ojpjb25zdF9pdGVyYXRvciBp
dGVyYXRvciA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5iZWdpbigpOworICAgIFJlbmRlckZs
b3dUaHJlYWRDb3VudGVkU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2xheW91dEJlZm9yZVRo
cmVhZHNTZXQuZW5kKCk7CisgICAgZm9yICg7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikg
eworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiBiZWZvcmVGbG93VGhyZWFkID0gKCpp
dGVyYXRvcikuZmlyc3Q7CisgICAgICAgIGlmIChiZWZvcmVGbG93VGhyZWFkLT5kZXBlbmRzT24o
b3RoZXJSZW5kZXJGbG93VGhyZWFkKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdp
b25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKIHsKICAgICBBU1NFUlQocmVu
ZGVyUmVnaW9uKTsKQEAgLTE2MSw2ICsxNzksMTkgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjph
ZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKICAgICAgICAgbV9y
ZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVnaW9uKTsKICAgICB9CiAKKyAgICBB
U1NFUlQoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKTsKKyAgICBpZiAocmVuZGVyUmVnaW9uLT5w
YXJlbnRGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50Rmxv
d1RocmVhZCgpLT5kZXBlbmRzT24odGhpcykpIHsKKyAgICAgICAgICAgIC8vIFJlZ2lzdGVyIG91
cnNlbGYgdG8gZ2V0IGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRlIGNoYW5nZXMuCisgICAg
ICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVh
ZHNTZXQuYWRkKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJl
YWQoKSk7CisgICAgfQorCisgICAgcmVuZGVyUmVnaW9uLT5zZXRJc1ZhbGlkKHRydWUpOworCiAg
ICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIApAQCAtMTY4LDEwICsxOTksNzggQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVu
ZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwogICAgIG1fcmVnaW9uTGlz
dC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKyAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93
VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPmlzVmFsaWQoKSkgeworICAg
ICAgICAgICAgcmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCktPm1fb2JzZXJ2ZXJUaHJl
YWRzU2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gaW52YWxpZGF0
ZSB0aGUgcmVnaW9ucyByZWN0YW5nbGVzLiBUaGUgcmVtb3ZlZCByZWdpb24KKyAgICAgICAgICAg
IC8vIHdhcyBub3QgdGFrZW4gaW50byBhY2NvdW50LiBKdXN0IHJldHVybiBoZXJlLgorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlbW92ZURlcGVuZGVuY3lPbkZsb3dU
aHJlYWQocmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpOworICAgIH0KIAogICAgIGlu
dmFsaWRhdGVSZWdpb25zKCk7CiB9CiAKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2hlY2tJbnZh
bGlkUmVnaW9ucygpCit7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVy
ID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgLy8g
VGhlIG9ubHkgcmVhc29uIGEgcmVnaW9uIHdvdWxkIGJlIGludmFsaWQgaXMgYmVjYXVzZSBpdCBo
YXMgYSBwYXJlbnQgZmxvdyB0aHJlYWQuCisgICAgICAgIEFTU0VSVChyZWdpb24tPmlzVmFsaWQo
KSB8fCByZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgICAgIGlmIChyZWdpb24tPmlz
VmFsaWQoKSB8fCByZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmVnaW9uLT5wYXJlbnRGbG93VGhyZWFk
KCktPm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgYWRkRGVwZW5k
ZW5jeU9uRmxvd1RocmVhZChyZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgICAgIHJl
Z2lvbi0+c2V0SXNWYWxpZCh0cnVlKTsKKyAgICAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKKyAg
ICB9CisKKyAgICBpZiAobV9vYnNlcnZlclRocmVhZHNTZXQuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBOb3RpZnkgYWxsIHRoZSBmbG93IHRocmVhZHMgdGhhdCB3ZXJlIGRl
cGVuZGVudCBvbiB0aGlzIGZsb3cuCisKKyAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBsaXN0
IGZpcnN0LiBUaGF0J3MgYmVjYXVzZSBvYnNlcnZlcnMgbWlnaHQgY2hhbmdlIHRoZSBsaXN0IHdo
ZW4gY2FsbGluZyBjaGVja0ludmFsaWRSZWdpb25zLgorICAgIFZlY3RvcjxSZW5kZXJGbG93VGhy
ZWFkKj4gb2JzZXJ2ZXJzOworICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVyVGhyZWFkc1NldCwg
b2JzZXJ2ZXJzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JzZXJ2ZXJzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBvYnNlcnZl
cnMuYXQoaSk7CisgICAgICAgIGZsb3dUaHJlYWQtPmNoZWNrSW52YWxpZFJlZ2lvbnMoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5jeU9uRmxvd1RocmVh
ZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCit7CisgICAgc3RkOjpwYWlyPFJl
bmRlckZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9sYXlv
dXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJlYWQpOworICAgIGlmIChyZXN1bHQu
c2Vjb25kKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2Ugc2VlIHRoaXMg
ZGVwZW5kZW5jeS4gTWFrZSBzdXJlIHdlIHJlY2FsY3VsYXRlIGFsbCB0aGUgZGVwZW5kZW5jaWVz
LgorICAgICAgICB2aWV3KCktPnNldElzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHkodHJ1ZSk7
CisgICAgfQorfQorCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZURlcGVuZGVuY3lPbkZs
b3dUaHJlYWQoUmVuZGVyRmxvd1RocmVhZCogb3RoZXJGbG93VGhyZWFkKQoreworICAgIGJvb2wg
cmVtb3ZlZCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5yZW1vdmUob3RoZXJGbG93VGhyZWFk
KTsKKyAgICBpZiAocmVtb3ZlZCkgeworICAgICAgICBjaGVja0ludmFsaWRSZWdpb25zKCk7Cisg
ICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eSh0cnVlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cHVzaERlcGVuZGVuY2llcyhSZW5kZXJG
bG93VGhyZWFkTGlzdCYgbGlzdCkKK3sKKyAgICBmb3IgKFJlbmRlckZsb3dUaHJlYWRDb3VudGVk
U2V0OjppdGVyYXRvciBpdGVyID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCk7IGl0
ZXIgIT0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAg
UmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9ICgqaXRlcikuZmlyc3Q7CisgICAgICAgIGlm
IChsaXN0LmNvbnRhaW5zKGZsb3dUaHJlYWQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGZsb3dUaHJlYWQtPnB1c2hEZXBlbmRlbmNpZXMobGlzdCk7CisgICAgICAgIGxpc3QuYWRk
KGZsb3dUaHJlYWQpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQo
KQogewogICAgIGlmIChtX3JlZ2lvbnNJbnZhbGlkYXRlZCkgewpAQCAtMTgxLDYgKzI4MCw5IEBA
IHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAgICAgIGZvciAoUmVuZGVy
UmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9
IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKIAorICAgICAgICAgICAgICAgIGlmICghcmVnaW9uLT5pc1Zh
bGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICAgICAg
QVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgICAgICAgICAgICAgSW50UmVj
dCByZWdpb25SZWN0OwpAQCAtMTkyLDcgKzI5NCw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6
bGF5b3V0KCkKICAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodCArPSByZWdpb25SZWN0
LndpZHRoKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcmVnaW9uLT5z
ZXRSZWdpb25SZWN0KHJlZ2lvblJlY3QpOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICByZWdpb24tPnNldFJlZ2lvblJlY3QocmVnaW9uUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CkBAIC0yMDYsNiArMzA4LDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpj
b21wdXRlTG9naWNhbFdpZHRoKCkKIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0
b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAg
ICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogICAgICAgICBsb2dpY2FsV2lkdGgg
PSBtYXgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Y29udGVudFdpZHRoKCkg
OiByZWdpb24tPmNvbnRlbnRIZWlnaHQoKSwgbG9naWNhbFdpZHRoKTsKICAgICB9CkBAIC0yMTks
NiArMzIzLDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdodCgp
CiAKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxp
c3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAg
ICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBpZiAoIXJlZ2lvbi0+aXNW
YWxpZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5u
ZWVkc0xheW91dCgpKTsKICAgICAgICAgbG9naWNhbEhlaWdodCArPSBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gcmVnaW9uLT5jb250ZW50SGVpZ2h0KCkgOiByZWdpb24tPmNvbnRlbnRXaWR0
aCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5o
CmluZGV4IDY5MDZmMDguLjE2MDJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuaApAQCAtMzIsNiArMzIsNyBAQAogCiAKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CkBAIC0zOSw5ICs0MCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJl
bmRlclJlZ2lvbjsKIAordHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJGbG93VGhyZWFkKj4gUmVu
ZGVyRmxvd1RocmVhZExpc3Q7Cit0eXBlZGVmIEhhc2hDb3VudGVkU2V0PFJlbmRlckZsb3dUaHJl
YWQqPiBSZW5kZXJGbG93VGhyZWFkQ291bnRlZFNldDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVu
ZGVyUmVnaW9uKj4gUmVuZGVyUmVnaW9uTGlzdDsKIAogLy8gUmVuZGVyRmxvd1RocmVhZCBpcyB1
c2VkIHRvIGNvbGxlY3QgYWxsIHRoZSByZW5kZXIgb2JqZWN0cyB0aGF0IHBhcnRpY2lwYXRlIGlu
IGEKQEAgLTg4LDE0ICs5MiwzMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAorICAgIHZv
aWQgcHVzaERlcGVuZGVuY2llcyhSZW5kZXJGbG93VGhyZWFkTGlzdCYpOworCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJGbG93VGhyZWFkIjsgfQogCisgICAgYm9vbCBkZXBlbmRzT24oUmVuZGVyRmxvd1RocmVhZCog
b3RoZXJSZW5kZXJGbG93VGhyZWFkKSBjb25zdDsKKyAgICB2b2lkIGFkZERlcGVuZGVuY3lPbkZs
b3dUaHJlYWQoUmVuZGVyRmxvd1RocmVhZCopOworICAgIHZvaWQgcmVtb3ZlRGVwZW5kZW5jeU9u
Rmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKik7CisgICAgdm9pZCBjaGVja0ludmFsaWRSZWdp
b25zKCk7CisKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlck9iamVjdCo+IEZsb3dUaHJl
YWRDaGlsZExpc3Q7CiAgICAgRmxvd1RocmVhZENoaWxkTGlzdCBtX2Zsb3dUaHJlYWRDaGlsZExp
c3Q7CiAKICAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwogICAgIFJlbmRlclJlZ2lvbkxp
c3QgbV9yZWdpb25MaXN0OworCisgICAgLy8gT2JzZXJ2ZXIgZmxvdyB0aHJlYWRzIGhhdmUgaW52
YWxpZCByZWdpb25zIHRoYXQgZGVwZW5kIG9uIHRoZSBzdGF0ZSBvZiB0aGlzIHRocmVhZAorICAg
IC8vIHRvIHJlLXZhbGlkYXRlIHRoZWlyIHJlZ2lvbnMuIEtlZXBpbmcgYSBzZXQgb2Ygb2JzZXJ2
ZXIgdGhyZWFkcyBtYWtlIGl0IGVhc3kKKyAgICAvLyB0byBub3RpZnkgdGhlbSB3aGVuIGEgcmVn
aW9uIHdhcyByZW1vdmVkIGZyb20gdGhpcyBmbG93LgorICAgIFJlbmRlckZsb3dUaHJlYWRDb3Vu
dGVkU2V0IG1fb2JzZXJ2ZXJUaHJlYWRzU2V0OworCisgICAgLy8gU29tZSB0aHJlYWRzIG5lZWQg
dG8gaGF2ZSBhIGNvbXBsZXRlIGxheW91dCBiZWZvcmUgd2UgbGF5b3V0IHRoaXMgZmxvdy4KKyAg
ICAvLyBUaGF0J3MgYmVjYXVzZSB0aGV5IGNvbnRhaW4gYSBSZW5kZXJSZWdpb24gdGhhdCBzaG91
bGQgZGlzcGxheSB0aGlzIHRocmVhZC4gVGhlIHNldCBtYWtlcyBpdAorICAgIC8vIGVhc3kgdG8g
c29ydCB0aGUgb3JkZXIgb2YgdGhyZWFkcyBsYXlvdXQuCisgICAgUmVuZGVyRmxvd1RocmVhZENv
dW50ZWRTZXQgbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0OworCiAgICAgYm9vbCBtX3JlZ2lvbnNJ
bnZhbGlkYXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5j
cHAKaW5kZXggNzMzNzY1Ny4uZTkwYTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUmVu
ZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oTm9kZSogbm9kZSwgUmVuZGVyRmxvd1RocmVhZCogZmxv
d1RocmVhZCkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNpemUoKSkKICAgICAsIG1f
Zmxvd1RocmVhZChmbG93VGhyZWFkKQorICAgICwgbV9wYXJlbnRGbG93VGhyZWFkKDApCisgICAg
LCBtX2lzVmFsaWQoZmFsc2UpCiB7CiB9CiAKQEAgLTQ5LDEzICs1MSwxMiBAQCBSZW5kZXJSZWdp
b246On5SZW5kZXJSZWdpb24oKQogewogICAgIGlmIChtX2Zsb3dUaHJlYWQgJiYgdmlldygpKQog
ICAgICAgICBtX2Zsb3dUaHJlYWQtPnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQodGhpcyk7Ci0gICAg
bV9mbG93VGhyZWFkID0gMDsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsK
ICAgICAvLyBEZWxlZ2F0ZSBwYWludGluZyBvZiBjb250ZW50IGluIHJlZ2lvbiB0byBSZW5kZXJG
bG93VGhyZWFkLgotICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgIGlmICghbV9mbG93VGhyZWFk
IHx8ICFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Zsb3dUaHJlYWQtPnBhaW50
SW50b1JlZ2lvbihwYWludEluZm8sIHJlZ2lvblJlY3QoKSwgTGF5b3V0UG9pbnQocGFpbnRPZmZz
ZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgcGFpbnRPZmZzZXQueSgpICsg
Ym9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKTsKIH0KQEAgLTYzLDYgKzY0LDkgQEAgdm9pZCBS
ZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE8KIC8vIEhpdCBUZXN0aW5nCiBib29sIFJlbmRlclJlZ2lvbjo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCiB7CisgICAgaWYg
KCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIExheW91dFBvaW50IGFk
anVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7CiAKICAgICAv
LyBDaGVjayBvdXIgYm91bmRzIG5leHQuIEZvciB0aGlzIHB1cnBvc2UgYWx3YXlzIGFzc3VtZSB0
aGF0IHdlIGNhbiBvbmx5IGJlIGhpdCBpbiB0aGUKQEAgLTgwLDE0ICs4NCwzMCBAQCBib29sIFJl
bmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJSZWdp
b246OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCit2b2lkIFJlbmRlclJlZ2lvbjo6YXR0YWNoUmVnaW9uKCkKIHsK
LSAgICBSZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZmVyZW5jZSwgb2xkU3R5bGUp
OworICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBCeSBu
b3cgdGhlIGZsb3cgdGhyZWFkIHNob3VsZCBhbHJlYWR5IGJlIGFkZGVkIHRvIHRoZSByZW5kZXJp
bmcgdHJlZSwKKyAgICAvLyBzbyB3ZSBnbyB1cCB0aGUgcmVuZGVyaW5nIHBhcmVudHMgYW5kIGNo
ZWNrIHRoYXQgdGhpcyByZWdpb24gaXMgbm90IHBhcnQgb2YgdGhlIHNhbWUKKyAgICAvLyBmbG93
IHRoYXQgaXQgYWN0dWFsbHkgbmVlZHMgdG8gZGlzcGxheS4gSXQgd291bGQgY3JlYXRlIGEgY2ly
Y3VsYXIgcmVmZXJlbmNlLgorICAgIFJlbmRlck9iamVjdCogcGFyZW50T2JqZWN0ID0gcGFyZW50
KCk7CisgICAgbV9wYXJlbnRGbG93VGhyZWFkID0gMDsKKyAgICBmb3IgKCA7IHBhcmVudE9iamVj
dDsgcGFyZW50T2JqZWN0ID0gcGFyZW50T2JqZWN0LT5wYXJlbnQoKSkgeworICAgICAgICBpZiAo
cGFyZW50T2JqZWN0LT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgICAgICAgICAgbV9wYXJl
bnRGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKHBhcmVudE9iamVjdCk7CisgICAgICAg
ICAgICAvLyBEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgYSByZWdpb24gdGhhdCBsaW5rcyBhIGZs
b3cgd2l0aCBpdHNlbGYuIFRoZSBkZXBlbmRlbmN5CisgICAgICAgICAgICAvLyBjYW5ub3QgY2hh
bmdlLCBzbyBpdCBpcyBub3Qgd29ydGggYWRkaW5nIGl0IHRvIHRoZSBsaXN0LgorICAgICAgICAg
ICAgaWYgKG1fZmxvd1RocmVhZCA9PSBtX3BhcmVudEZsb3dUaHJlYWQpIHsKKyAgICAgICAgICAg
ICAgICBtX2Zsb3dUaHJlYWQgPSAwOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogCi0gICAgLy8gVGhp
cyBuZWVkcyB0byBiZSBkb25lIGhlcmUgYW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IsIGJlY2F1
c2UgUmVuZGVyRmxvd1RocmVhZCAKLSAgICAvLyB1c2VzIHRoZSBzdHlsZSgpIHByb3BlcnR5IHdo
aWNoIGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAgIGlmICgh
b2xkU3R5bGUgJiYgbV9mbG93VGhyZWFkKQotICAgICAgICBtX2Zsb3dUaHJlYWQtPmFkZFJlZ2lv
blRvVGhyZWFkKHRoaXMpOworICAgIG1fZmxvd1RocmVhZC0+YWRkUmVnaW9uVG9UaHJlYWQodGhp
cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uaAppbmRleCBmY2U4ZmE4Li5lNDkxZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC00OSwxMyArNDksMjYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UmVnaW9uUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7IG1fcmVnaW9uUmVjdCA9IHJl
Y3Q7IH0KICAgICBJbnRSZWN0IHJlZ2lvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvblJl
Y3Q7IH0KIAorICAgIHZvaWQgYXR0YWNoUmVnaW9uKCk7CisKKyAgICBSZW5kZXJGbG93VGhyZWFk
KiBwYXJlbnRGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRGbG93VGhyZWFkOyB9
CisKKyAgICAvLyBWYWxpZCByZWdpb25zIGRvIG5vdCBjcmVhdGUgY2lyY3VsYXIgZGVwZW5kZW5j
aWVzIHdpdGggb3RoZXIgZmxvd3MuCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1ZhbGlkOyB9CisgICAgdm9pZCBzZXRJc1ZhbGlkKGJvb2wgdmFsaWQpIHsgbV9pc1ZhbGlk
ID0gdmFsaWQ7IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUmVnaW9uIjsgfQogCi0gICAgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0K
ICAgICBSZW5kZXJGbG93VGhyZWFkKiBtX2Zsb3dUaHJlYWQ7CisKKyAgICAvLyBJZiB0aGlzIFJl
bmRlclJlZ2lvbiBpcyBkaXNwbGF5ZWQgYXMgcGFydCBvZiBhbm90aGVyIGZsb3csCisgICAgLy8g
d2UgbmVlZCB0byBjcmVhdGUgYSBkZXBlbmRlbmN5IHRyZWUsIHNvIHRoYXQgbGF5b3V0IG9mIHRo
ZQorICAgIC8vIHJlZ2lvbnMgaXMgYWx3YXlzIGRvbmUgYmVmb3JlIHRoZSByZWdpb25zIHRoZW1z
ZWx2ZXMuCisgICAgUmVuZGVyRmxvd1RocmVhZCogbV9wYXJlbnRGbG93VGhyZWFkOwogICAgIElu
dFJlY3QgbV9yZWdpb25SZWN0OworCisgICAgYm9vbCBtX2lzVmFsaWQ7CiB9OwogCiBpbmxpbmUg
UmVuZGVyUmVnaW9uKiB0b1JlbmRlclJlZ2lvbihSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmZGQ3OTRi
Li41YjI5YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC02NDcsNiArNjQ3LDUxIEBAIHN0YXRpYyB2b2lkIHdyaXRlKFRleHRTdHJlYW0m
IHRzLCBSZW5kZXJMYXllciYgbCwKICAgICAgICAgd3JpdGUodHMsICpsLnJlbmRlcmVyKCksIGlu
ZGVudCArIDEsIGJlaGF2aW9yKTsKIH0KIAorc3RhdGljIHZvaWQgd3JpdGVSZW5kZXJGbG93VGhy
ZWFkcyhUZXh0U3RyZWFtJiB0cywgUmVuZGVyVmlldyogcmVuZGVyVmlldywgY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IHBhaW50UmVjdCwgaW50IGluZGVudCwgUmVuZGVyQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpCit7
CisgICAgY29uc3QgUmVuZGVyRmxvd1RocmVhZExpc3QqIGxpc3QgPSByZW5kZXJWaWV3LT5yZW5k
ZXJGbG93VGhyZWFkTGlzdCgpOworICAgIGlmICghbGlzdCB8fCBsaXN0LT5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQpOworICAgIHRzIDw8
ICJGbG93IFRocmVhZHNcbiI7CisKKyAgICBmb3IgKFJlbmRlckZsb3dUaHJlYWRMaXN0Ojpjb25z
dF9pdGVyYXRvciBpdGVyID0gbGlzdC0+YmVnaW4oKTsgaXRlciAhPSBsaXN0LT5lbmQoKTsgKytp
dGVyKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIHJlbmRlckZsb3dUaHJlYWQg
PSAqaXRlcjsKKworICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAg
IHRzIDw8ICJUaHJlYWQgd2l0aCBmbG93LW5hbWUgJyIgPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxv
d1RocmVhZCgpIDw8ICInXG4iOworCisgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRl
ckZsb3dUaHJlYWQtPmxheWVyKCk7CisgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCByb290TGF5ZXIs
IGxheWVyLCBwYWludFJlY3QsIGluZGVudCArIDIsIGJlaGF2aW9yKTsKKworICAgICAgICAvLyBE
aXNwbGF5IHRoZSByZW5kZXIgcmVnaW9ucyBhdHRhY2hlZCB0byB0aGlzIGZsb3cgdGhyZWFkCisg
ICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIGZsb3dUaHJlYWRSZWdpb25MaXN0ID0gcmVu
ZGVyRmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOworICAgICAgICBpZiAoIWZsb3dUaHJl
YWRSZWdpb25MaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGlu
ZGVudCArIDEpOworICAgICAgICAgICAgdHMgPDwgIlJlZ2lvbnMgZm9yIGZsb3cgJyI8PCByZW5k
ZXJGbG93VGhyZWFkLT5mbG93VGhyZWFkKCkgPDwgIidcbiI7CisgICAgICAgICAgICBmb3IgKFJl
bmRlclJlZ2lvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0UlIgPSBmbG93VGhyZWFkUmVnaW9uTGlz
dC5iZWdpbigpOyBpdFJSICE9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmVuZCgpOyArK2l0UlIpIHsK
KyAgICAgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9ICppdFJSOworICAg
ICAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAyKTsKKyAgICAgICAgICAgICAg
ICB0cyA8PCAiUmVuZGVyUmVnaW9uIjsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9u
LT5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRUYWdO
YW1lKHJlbmRlclJlZ2lvbi0+bm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0YWdO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRzIDw8ICIgeyIgPDwgdGFn
TmFtZSA8PCAifSI7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPm5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlclJlZ2lvbi0+bm9kZSgpLT5oYXNJRCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHJlbmRlclJlZ2lvbi0+bm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRz
IDw8ICIgIyIgPDwgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXJlbmRl
clJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIGludmFsaWQi
OworICAgICAgICAgICAgICAgIHRzIDw8ICIgd2l0aCBpbmRleCAiIDw8IHJlbmRlclJlZ2lvbi0+
c3R5bGUoKS0+cmVnaW9uSW5kZXgoKSA8PCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwYWludFJlY3QsIGludCBpbmRlbnQsIFJlbmRlckFz
VGV4dEJlaGF2aW9yIGJlaGF2aW9yKQogewpAQCAtNzEwLDQyICs3NTUsOSBAQCBzdGF0aWMgdm9p
ZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXll
ciwgUmVuZGVyTGF5ZQogICAgIAogICAgIC8vIEFsdG91Z2ggdGhlIFJlbmRlckZsb3dUaHJlYWQg
cmVxdWlyZXMgYSBsYXllciwgaXQgaXMgbm90IGNvbGxlY3RlZCBieSBpdHMgcGFyZW50LAogICAg
IC8vIHNvIHdlIGhhdmUgdG8gdHJlYXQgaXQgYXMgYSBzcGVjaWFsIGNhc2UuCi0gICAgYm9vbCBm
aXJzdFJlbmRlckZsb3dUaHJlYWQgPSB0cnVlOwotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IGwtPnJlbmRlcmVyKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkg
ewotICAgICAgICAgICAgaWYgKGZpcnN0UmVuZGVyRmxvd1RocmVhZCkgewotICAgICAgICAgICAg
ICAgIGZpcnN0UmVuZGVyRmxvd1RocmVhZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHdyaXRl
SW5kZW50KHRzLCBpbmRlbnQpOwotICAgICAgICAgICAgICAgIHRzIDw8ICJGbG93IFRocmVhZHNc
biI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiBy
ZW5kZXJGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKGNoaWxkKTsKLSAgICAgICAgICAg
IHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgICAgIHRzIDw8ICJUaHJlYWQg
d2l0aCBmbG93LW5hbWUgJyIgPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZCgpIDw8ICIn
XG4iOwotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyRmxvd1RocmVhZC0+
bGF5ZXIoKTsKLSAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCByb290TGF5ZXIsIGxheWVyLCBw
YWludERpcnR5UmVjdCwgaW5kZW50ICsgMiwgYmVoYXZpb3IpOwotCi0gICAgICAgICAgICAvLyBE
aXNwbGF5IHRoZSByZW5kZXIgcmVnaW9ucyBhdHRhY2hlZCB0byB0aGlzIGZsb3cgdGhyZWFkCi0g
ICAgICAgICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiBmbG93VGhyZWFkUmVnaW9uTGlzdCA9
IHJlbmRlckZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICAgICAgICAgIGlmICgh
Zmxvd1RocmVhZFJlZ2lvbkxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgd3JpdGVJ
bmRlbnQodHMsIGluZGVudCArIDEpOwotICAgICAgICAgICAgICAgIHRzIDw8ICJSZWdpb25zIGZv
ciBmbG93ICciPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZCgpIDw8ICInXG4iOwotICAg
ICAgICAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRSUiA9
IGZsb3dUaHJlYWRSZWdpb25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVhZFJlZ2lvbkxp
c3QuZW5kKCk7ICsraXRSUikgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHJl
bmRlclJlZ2lvbiA9ICppdFJSOwotICAgICAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywg
aW5kZW50ICsgMik7Ci0gICAgICAgICAgICAgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdpb24iOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5ub2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyB0YWdOYW1lID0gZ2V0VGFnTmFtZShyZW5kZXJSZWdpb24t
Pm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhZ05hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzIDw8ICIgeyIgPDwgdGFnTmFtZSA8PCAi
fSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5ub2RlKCktPmlz
RWxlbWVudE5vZGUoKSAmJiByZW5kZXJSZWdpb24tPm5vZGUoKS0+aGFzSUQoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4ocmVuZGVyUmVnaW9uLT5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRzIDw8ICIgIyIgPDwgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB0cyA8PCAiIHdpdGggaW5kZXggIiA8PCByZW5kZXJSZWdpb24tPnN0eWxlKCktPnJlZ2lv
bkluZGV4KCkgPDwgIlxuIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KKyAgICBpZiAobC0+cmVuZGVyZXIoKS0+aXNSZW5kZXJWaWV3KCkpIHsKKyAgICAgICAg
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRvUmVuZGVyVmlldyhsLT5yZW5kZXJlcigpKTsKKyAg
ICAgICAgd3JpdGVSZW5kZXJGbG93VGhyZWFkcyh0cywgcmVuZGVyVmlldywgcm9vdExheWVyLCBw
YWludERpcnR5UmVjdCwgaW5kZW50LCBiZWhhdmlvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMjU1ZGE4MS4uODgzZGIyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNTQsNiArNTQsNyBAQCBSZW5k
ZXJWaWV3OjpSZW5kZXJWaWV3KE5vZGUqIG5vZGUsIEZyYW1lVmlldyogdmlldykKICAgICAsIG1f
cGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9sYXlvdXRTdGF0ZSgwKQog
ICAgICwgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCgwKQorICAgICwgbV9pc1JlbmRlckZsb3dU
aHJlYWRPcmRlckRpcnR5KGZhbHNlKQogewogICAgIC8vIENsZWFyIG91ciBhbm9ueW1vdXMgYml0
LCBzZXQgYmVjYXVzZSBSZW5kZXJPYmplY3QgYXNzdW1lcwogICAgIC8vIGFueSByZW5kZXJlciB3
aXRoIGRvY3VtZW50IGFzIHRoZSBub2RlIGlzIGFub255bW91cy4KQEAgLTEyNyw4ICsxMjgsMTEg
QEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFu
Z2VkID0gZmFsc2U7CiAgICAgbV9sYXlvdXRTdGF0ZSA9ICZzdGF0ZTsKIAotICAgIGlmIChuZWVk
c0xheW91dCgpKQorICAgIGlmIChuZWVkc0xheW91dCgpKSB7CiAgICAgICAgIFJlbmRlckJsb2Nr
OjpsYXlvdXQoKTsKKyAgICAgICAgaWYgKG1fcmVuZGVyRmxvd1RocmVhZExpc3QpCisgICAgICAg
ICAgICBsYXlvdXRSZW5kZXJGbG93VGhyZWFkcygpOworICAgIH0KIAogICAgIEFTU0VSVChsYXlv
dXREZWx0YSgpID09IExheW91dFNpemUoKSk7CiAgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNh
YmxlQ291bnQgPT0gMCk7CkBAIC04MDcsOSArODExLDExIEBAIHZvaWQgUmVuZGVyVmlldzo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsCiAKIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlclZpZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRo
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpCiB7Ci0gICAgZm9yIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gZmlyc3RDaGlsZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5k
ZXJlci0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyRmxv
d1RocmVhZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIg
PSB0b1JlbmRlckZsb3dUaHJlYWQocmVuZGVyZXIpOworICAgIGlmICghbV9yZW5kZXJGbG93VGhy
ZWFkTGlzdCkKKyAgICAgICAgbV9yZW5kZXJGbG93VGhyZWFkTGlzdCA9IGFkb3B0UHRyKG5ldyBS
ZW5kZXJGbG93VGhyZWFkTGlzdCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChSZW5kZXJG
bG93VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVuZGVyRmxvd1RocmVhZExpc3QtPmJl
Z2luKCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+ZW5kKCk7ICsraXRlcikgewor
ICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRlcmVyID0gKml0ZXI7CiAgICAg
ICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93VGhyZWFkKCkgPT0gZmxvd1RocmVhZCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmxvd1JlbmRlcmVyOwogICAgICAgICB9CkBAIC04MTksNyAr
ODI1LDM0IEBAIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlclZpZXc6OnJlbmRlckZsb3dUaHJlYWRX
aXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUCiAgICAgZmxvd1JlbmRlcmVyLT5zZXRT
dHlsZShSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoc3R5bGUoKSkpOwog
ICAgIGFkZENoaWxkKGZsb3dSZW5kZXJlcik7CiAgICAgCisgICAgbV9yZW5kZXJGbG93VGhyZWFk
TGlzdC0+YWRkKGZsb3dSZW5kZXJlcik7CisgICAgc2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSh0cnVlKTsKKwogICAgIHJldHVybiBmbG93UmVuZGVyZXI7CiB9CiAKK3ZvaWQgUmVuZGVy
Vmlldzo6bGF5b3V0UmVuZGVyRmxvd1RocmVhZHMoKQoreworICAgIEFTU0VSVChtX3JlbmRlckZs
b3dUaHJlYWRMaXN0KTsKKworICAgIGlmIChpc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5KCkp
IHsKKyAgICAgICAgLy8gQXJyYW5nZSB0aGUgdGhyZWFkIGxpc3QgYWNjb3JkaW5nIHRvIGRlcGVu
ZGVuY2llcy4KKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZExpc3Qgc29ydGVkTGlzdDsKKyAgICAg
ICAgZm9yIChSZW5kZXJGbG93VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVuZGVyRmxv
d1RocmVhZExpc3QtPmJlZ2luKCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+ZW5k
KCk7ICsraXRlcikgeworICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRlcmVy
ID0gKml0ZXI7CisgICAgICAgICAgICBpZiAoc29ydGVkTGlzdC5jb250YWlucyhmbG93UmVuZGVy
ZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZmxvd1JlbmRlcmVy
LT5wdXNoRGVwZW5kZW5jaWVzKHNvcnRlZExpc3QpOworICAgICAgICAgICAgc29ydGVkTGlzdC5h
ZGQoZmxvd1JlbmRlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBtX3JlbmRlckZsb3dUaHJlYWRM
aXN0LT5zd2FwKHNvcnRlZExpc3QpOworICAgICAgICBzZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRl
ckRpcnR5KGZhbHNlKTsKKyAgICB9CisKKyAgICBmb3IgKFJlbmRlckZsb3dUaHJlYWRMaXN0Ojpp
dGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsgaXRlciAhPSBt
X3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9ICppdGVyOworICAgICAgICBmbG93UmVuZGVyZXItPmxh
eW91dElmTmVlZGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBjODQwNzIwLi4zMzEzYTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2ICszNyw4IEBAIGNsYXNz
IFJlbmRlcldpZGdldDsKIGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRvcjsKICNlbmRpZgogCit0
eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5kZXJGbG93VGhyZWFkTGlz
dDsKKwogY2xhc3MgUmVuZGVyVmlldyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyVmlldyhOb2RlKiwgRnJhbWVWaWV3Kik7CkBAIC0xNjcsNiArMTcwLDE1IEBAIHB1
YmxpYzoKICAgICBJbnRSZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0OwogCiAgICAgUmVuZGVyRmxv
d1RocmVhZCogcmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmxv
d1RocmVhZCk7CisgICAgdm9pZCBsYXlvdXRSZW5kZXJGbG93VGhyZWFkcygpOworICAgIGJvb2wg
aXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZW5kZXJG
bG93VGhyZWFkT3JkZXJEaXJ0eTsgfQorICAgIHZvaWQgc2V0SXNSZW5kZXJGbG93VGhyZWFkT3Jk
ZXJEaXJ0eShib29sIGRpcnR5KQorICAgIHsKKyAgICAgICAgbV9pc1JlbmRlckZsb3dUaHJlYWRP
cmRlckRpcnR5ID0gZGlydHk7CisgICAgICAgIGlmIChkaXJ0eSkKKyAgICAgICAgICAgIHNldE5l
ZWRzTGF5b3V0KHRydWUpOworICAgIH0KKyAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkTGlzdCog
cmVuZGVyRmxvd1RocmVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlckZsb3dUaHJlYWRM
aXN0LmdldCgpOyB9CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKICAgICAKQEAgLTI1MCw2ICsyNjIsOCBAQCBw
cml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7CiAjZW5kaWYKKyAgICBPd25QdHI8UmVu
ZGVyRmxvd1RocmVhZExpc3Q+IG1fcmVuZGVyRmxvd1RocmVhZExpc3Q7CisgICAgYm9vbCBtX2lz
UmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHk7CiB9OwogCiBpbmxpbmUgUmVuZGVyVmlldyogdG9S
ZW5kZXJWaWV3KFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>
<flag name="review"
          id="99767"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="99768"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104070</attachid>
            <date>2011-08-16 11:27:54 -0700</date>
            <delta_ts>2011-08-16 13:35:46 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug66142_1.patch</filename>
            <type>text/plain</type>
            <size>33940</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNzlhNjBkLi5jM2I3ZjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBSZW5kZXJSZWdpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVu
ZGVyRmxvd1RocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
ZHluYW1pYy1yZW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dz
LWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA4LTE1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyNjMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMt
cmVtb3ZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBl
bmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44ZjQwMmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3
IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDAp
IHNpemUgMHgwCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxv
d0EnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMQorICAgIFJlbmRlclJlZ2lv
biB7RElWfSB3aXRoIGluZGV4IDIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QicKKyAg
UmVnaW9ucyBmb3IgZmxvdyAnZmxvd0InCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5k
ZXggMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktZHluYW1pYy1yZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjFlNmYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKQEAgLTAsMCArMSwzNyBA
QAorPCFET0NUWVBFIEhUTUw+CisKKzxzdHlsZT4KKy5mbG93QSB7IC13ZWJraXQtZmxvdzogJ2Zs
b3dBJzsgfQorLmZsb3dCIHsgLXdlYmtpdC1mbG93OiAnZmxvd0InOyB9CisuZmxvd0MgeyAtd2Vi
a2l0LWZsb3c6ICdmbG93Qyc7IH0KKworLnJlZ2lvbkZsb3dBIHsgY29udGVudDogLXdlYmtpdC1m
cm9tLWZsb3coJ2Zsb3dBJyk7IH0KKy5yZWdpb25GbG93QiB7IGNvbnRlbnQ6IC13ZWJraXQtZnJv
bS1mbG93KCdmbG93QicpOyB9CisucmVnaW9uRmxvd0MgeyBjb250ZW50OiAtd2Via2l0LWZyb20t
ZmxvdygnZmxvd0MnKTsgfQorCisuaW5kZXgxIHsgLXdlYmtpdC1jb250ZW50LW9yZGVyOiAxOyB9
CisuaW5kZXgyIHsgLXdlYmtpdC1jb250ZW50LW9yZGVyOiAyOyB9CisuaW5kZXgzIHsgLXdlYmtp
dC1jb250ZW50LW9yZGVyOiAzOyB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJmbG93QSI+Cisg
ICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0IgaW5kZXgxIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGNsYXNzPSJmbG93QiI+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0MgaW5kZXgxIj48L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbG93QyI+CisgICAgPCEtLSBUaGUgZm9sbG93aW5n
IHJlZ2lvbiB3aWxsIGluaXRpYWxseSBiZSBpbnZhbGlkLiBSZW1vdmluZyByZWdpb25GbG93QyBz
aG91bGQgbWFrZSBpdCB2YWxpZCBhZ2Fpbi4gLS0+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxv
d0EgaW5kZXgxIj48L2Rpdj4KKzwvZGl2PgorCis8IS0tIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0
aGUgZmxvd3MuIEluIHRoZSBmdXR1cmUgd2UgbWlnaHQgYXZvaWQgY3JlYXRpbmcgZmxvd3MgaWYg
dGhlcmUgYXJlIG5vIHJlYWNoYWJsZSByZWdpb25zLiAtLT4KKzxkaXYgY2xhc3M9InJlZ2lvbkZs
b3dBIGluZGV4MiI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRU
b3A7ICAgIC8vIGZvcmNlIGxheW91dAorICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoInJlZ2lvbkZsb3dDIilbMF07CisgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChlbCk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
c2FtZS1mbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42MjU0ODZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHgxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAg
UmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJSZWdpb24g
e0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93
LW5hbWUgJ2Zsb3dCJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdp
b24ge0RJVn0gaW52YWxpZCB3aXRoIGluZGV4IDEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0
aCBpbmRleCAyCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCisgIFJlZ2lvbnMgZm9y
IGZsb3cgJ2Zsb3dDJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4IDEKKyAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0EnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJworICAgIFJlbmRlclJlZ2lvbiB7RElW
fSB3aXRoIGluZGV4IDIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZs
b3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUt
Zmxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MjkyMjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3cuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTD4KKworPHN0
eWxlPgorLmZsb3dBIHsgLXdlYmtpdC1mbG93OiAnZmxvd0EnOyB9CisuZmxvd0IgeyAtd2Via2l0
LWZsb3c6ICdmbG93Qic7IH0KKy5mbG93QyB7IC13ZWJraXQtZmxvdzogJ2Zsb3dDJzsgfQorCisu
cmVnaW9uRmxvd0EgeyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxvdygnZmxvd0EnKTsgfQorLnJl
Z2lvbkZsb3dCIHsgY29udGVudDogLXdlYmtpdC1mcm9tLWZsb3coJ2Zsb3dCJyk7IH0KKy5yZWdp
b25GbG93QyB7IGNvbnRlbnQ6IC13ZWJraXQtZnJvbS1mbG93KCdmbG93QycpOyB9CisKKy5pbmRl
eDEgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDE7IH0KKy5pbmRleDIgeyAtd2Via2l0LWNvbnRl
bnQtb3JkZXI6IDI7IH0KKy5pbmRleDMgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDM7IH0KKzwv
c3R5bGU+CisKKzxkaXYgY2xhc3M9ImZsb3dBIj4KKyAgICA8IS0tIFRoZSBmb2xsb3dpbmcgcmVn
aW9uIHNob3VsZCBiZSBpZ25vcmVkLiBEaXJlY3QgY2lyY3VsYXIgcmVmZXJlbmNlLiAtLT4KKyAg
ICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QSBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYg
Y2xhc3M9ImZsb3dCIj4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QyBpbmRleDEiPjwvZGl2
PgorICAgIDwhLS0gVGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQuIERpcmVj
dCBjaXJjdWxhciByZWZlcmVuY2UuIC0tPgorICAgIDxkaXYgY2xhc3M9ImZsb3dDIHJlZ2lvbkZs
b3dDIGluZGV4MiI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxvd0MiPgorICAgIDwh
LS0gVGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGludmFsaWQuIENpcmN1bGFyIHJlZmVy
ZW5jZSB0aHJvdWdoIGZsb3dCIHdoaWNoIGFscmVhZHkgaGFzIGNyZWF0ZWQgYSBsaW5rIHRvIHRo
aXMgZmxvdworICAgICAgICAgdGhyb3VnaCB0aGUgInJlZ2lvbkZsb3dDIGluZGV4MSIgcmVnaW9u
LiAtLT4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDEiPjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MiI+PC9kaXY+Cis8L2Rpdj4KKworPCEtLSBGb3Jj
ZSB0aGUgY3JlYXRpb24gb2YgdGhlIGZsb3dzLiBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IGF2b2lk
IGNyZWF0aW5nIGZsb3dzIGlmIHRoZXJlIGFyZSBubyByZWFjaGFibGUgcmVnaW9ucy4gLS0+Cis8
ZGl2IGNsYXNzPSJyZWdpb25GbG93QSBpbmRleDMiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVnaW9u
Rmxvd0IgaW5kZXgyIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dDIGluZGV4MyI+PC9k
aXY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNGQzMzMzMC4uMmQ5ZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY2IEBACisyMDExLTA4LTE2ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNv
bT4KKworICAgICAgICBbQ1NTUmVnaW9uc10gUmVuZGVyUmVnaW9uIHNob3VsZCBub3QgcmVmZXJl
bmNlIGEgcGFyZW50IFJlbmRlckZsb3dUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQyCisKKyAgICAgICAgQWRkZWQgY29kZSB0aGF0IGNo
ZWNrcyB0aGUgcGFyZW50IFJlbmRlckZsb3dUaHJlYWQgb2YgYSBSZW5kZXJSZWdpb24gYW5kIGNy
ZWF0ZXMKKyAgICAgICAgYSBkZXBlbmRlbmN5IGZvciBpdHMgcmVmZXJlbmNlZCBSZW5kZXJGbG93
VGhyZWFkIChmcm9tIENTUyBzdHlsZSkuCisKKyAgICAgICAgVGhlcmUgYXJlIHR3byBjYXNlczoK
KyAgICAgICAgMS4gQSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxheSB0aGUgZmxvdyB0aHJl
YWQgdGhhdCBsYWlkIGl0IG91dC4gSW4gdGhpcyBjYXNlCisgICAgICAgIHRoZSByZWdpb24gd2ls
bCBiZSBpZ25vcmVkIGFuZCB3aWxsIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgZmxvdyB0aHJlYWRz
IHJlZ2lvbnMgbGlzdC4KKyAgICAgICAgMi4gQSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxh
eSBhIGZsb3cgdGhyZWFkIHRoYXQgY29udGFpbnMgYW5vdGhlciByZWdpb24gdGhhdAorICAgICAg
ICB0cmllcyB0byBkaXNwbGF5IHRoZSBmaXJzdCByZWdpb24ncyBmbG93IHRocmVhZC4gVGhpcyBv
bmUgY2FuIGJlIGdlbmVyYWxpemVkIHdpdGggYW55CisgICAgICAgIG51bWJlciBvZiBpbnRlcm1l
ZGlhdGUgZmxvdyB0aHJlYWRzLiBJbiB0aGlzIGNhc2UgdGhlIHJlY3Vyc2lvbiBpcyBkZXRlY3Rl
ZCBhbmQgb25seSB0aGUKKyAgICAgICAgZmlyc3QgYWRkZWQgcmVnaW9uIHdpbGwgYWN0dWFsbHkg
YmUgc2VsZWN0ZWQuIFRoZSBvdGhlciByZWdpb24gd2lsbCBiZSBpZ25vcmVkLiBIb3dldmVyLAor
ICAgICAgICB3aGVuIHRoZSByZWN1cnNpb24gaXMgcmVtb3ZlZCB0aGUgaW52YWxpZCByZWdpb25z
IHdpbGwgYmUgcmVjb3ZlcmVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWlj
LXJlbW92ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3cuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbG93VGhyZWFkOjpkZXBlbmRzT24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uVG9UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVtb3ZlRGVwZW5kZW5jeU9uRmxvd1RocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Q2hpbGRMaXN0OjphcHBlbmRDaGlsZE5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpSZW5kZXJS
ZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp+UmVuZGVyUmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZWdpb246Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvbjo6YXR0YWNoUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
Z2lvbjo6ZGV0dGFjaFJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpwYXJlbnRGbG93VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OnNldElzVmFsaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlUmVuZGVyRmxvd1RocmVhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjpsYXlvdXRSZW5kZXJGbG93VGhyZWFkcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmlzUmVu
ZGVyRmxvd1RocmVhZE9yZGVyRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3OjpyZW5kZXJGbG93VGhyZWFkTGlzdCk6CisKIDIwMTEtMDgtMTUgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQ01BS0VdIFdyYXAgZmls
ZXMgb2Ygd2Vic29ja2V0IGFuZCB3b3JrZXIgaW4gZWFjaCBtYWNyby4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGE0MDQxYTQuLmViYWU2OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzE0MSw2ICszMTQxLDkgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJlbmRl
ckJsb2NrKiByb290QmxvY2ssIExheW8KIAogdm9pZCBSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRp
b25lZE9iamVjdChSZW5kZXJCb3gqIG8pCiB7CisgICAgaWYgKG8tPmlzUmVuZGVyRmxvd1RocmVh
ZCgpKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0IG9mIHNw
ZWNpYWwgb2JqZWN0cyBpZiB3ZSBkb24ndCBhbGVhZHkgaGF2ZSBvbmUKICAgICBpZiAoIW1fcG9z
aXRpb25lZE9iamVjdHMpCiAgICAgICAgIG1fcG9zaXRpb25lZE9iamVjdHMgPSBhZG9wdFB0cihu
ZXcgUG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggYmIxNGNhZi4uMDM1OWI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw2ICsxNDksMjMgQEAgc3RhdGljIGJvb2wgY29t
cGFyZVJlbmRlclJlZ2lvbnMoY29uc3QgUmVuZGVyUmVnaW9uKiBmaXJzdFJlZ2lvbiwgY29uc3Qg
UmVuZGVyUmUKICAgICByZXR1cm4gKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05f
Rk9MTE9XSU5HKTsKIH0KIAorYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVy
Rmxvd1RocmVhZCogb3RoZXJSZW5kZXJGbG93VGhyZWFkKSBjb25zdAoreworICAgIGlmIChtX2xh
eW91dEJlZm9yZVRocmVhZHNTZXQuY29udGFpbnMob3RoZXJSZW5kZXJGbG93VGhyZWFkKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBSZWN1cnNpdmVseSB0cmF2ZXJzZSB0aGUgbV9s
YXlvdXRCZWZvcmVUaHJlYWRzU2V0LgorICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0Ojpj
b25zdF9pdGVyYXRvciBpdGVyYXRvciA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5iZWdpbigp
OworICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X2xheW91dEJlZm9yZVRocmVhZHNTZXQuZW5kKCk7CisgICAgZm9yICg7IGl0ZXJhdG9yICE9IGVu
ZDsgKytpdGVyYXRvcikgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiBiZWZvcmVG
bG93VGhyZWFkID0gKCppdGVyYXRvcikuZmlyc3Q7CisgICAgICAgIGlmIChiZWZvcmVGbG93VGhy
ZWFkLT5kZXBlbmRzT24ob3RoZXJSZW5kZXJGbG93VGhyZWFkKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZW5kZXJGbG93
VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKIHsK
ICAgICBBU1NFUlQocmVuZGVyUmVnaW9uKTsKQEAgLTE2MSw2ICsxNzksMTkgQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lv
bikKICAgICAgICAgbV9yZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVnaW9uKTsK
ICAgICB9CiAKKyAgICBBU1NFUlQoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKTsKKyAgICBpZiAo
cmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJl
Z2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5kZXBlbmRzT24odGhpcykpIHsKKyAgICAgICAgICAg
IC8vIFJlZ2lzdGVyIG91cnNlbGYgdG8gZ2V0IGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRl
IGNoYW5nZXMuCisgICAgICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+
bV9vYnNlcnZlclRocmVhZHNTZXQuYWRkKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24t
PnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgfQorCisgICAgcmVuZGVyUmVnaW9uLT5zZXRJc1Zh
bGlkKHRydWUpOworCiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIApAQCAtMTY4LDEwICsx
OTksNzggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJl
bmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwog
ICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKyAgICBpZiAocmVuZGVyUmVn
aW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgcmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkt
Pm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIC8vIE5vIG5l
ZWQgdG8gaW52YWxpZGF0ZSB0aGUgcmVnaW9ucyByZWN0YW5nbGVzLiBUaGUgcmVtb3ZlZCByZWdp
b24KKyAgICAgICAgICAgIC8vIHdhcyBub3QgdGFrZW4gaW50byBhY2NvdW50LiBKdXN0IHJldHVy
biBoZXJlLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlbW92ZURl
cGVuZGVuY3lPbkZsb3dUaHJlYWQocmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpOwor
ICAgIH0KIAogICAgIGludmFsaWRhdGVSZWdpb25zKCk7CiB9CiAKK3ZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucygpCit7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0
OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25M
aXN0LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRl
cjsKKyAgICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIGEgcmVnaW9uIHdvdWxkIGJlIGludmFsaWQg
aXMgYmVjYXVzZSBpdCBoYXMgYSBwYXJlbnQgZmxvdyB0aHJlYWQuCisgICAgICAgIEFTU0VSVChy
ZWdpb24tPmlzVmFsaWQoKSB8fCByZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgICAg
IGlmIChyZWdpb24tPmlzVmFsaWQoKSB8fCByZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+ZGVw
ZW5kc09uKHRoaXMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmVnaW9uLT5w
YXJlbnRGbG93VGhyZWFkKCktPm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LnJlbW92ZSh0aGlzKTsKKyAg
ICAgICAgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZWdpb24tPnBhcmVudEZsb3dUaHJlYWQo
KSk7CisgICAgICAgIHJlZ2lvbi0+c2V0SXNWYWxpZCh0cnVlKTsKKyAgICAgICAgaW52YWxpZGF0
ZVJlZ2lvbnMoKTsKKyAgICB9CisKKyAgICBpZiAobV9vYnNlcnZlclRocmVhZHNTZXQuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3RpZnkgYWxsIHRoZSBmbG93IHRocmVh
ZHMgdGhhdCB3ZXJlIGRlcGVuZGVudCBvbiB0aGlzIGZsb3cuCisKKyAgICAvLyBDcmVhdGUgYSBj
b3B5IG9mIHRoZSBsaXN0IGZpcnN0LiBUaGF0J3MgYmVjYXVzZSBvYnNlcnZlcnMgbWlnaHQgY2hh
bmdlIHRoZSBsaXN0IHdoZW4gY2FsbGluZyBjaGVja0ludmFsaWRSZWdpb25zLgorICAgIFZlY3Rv
cjxSZW5kZXJGbG93VGhyZWFkKj4gb2JzZXJ2ZXJzOworICAgIGNvcHlUb1ZlY3RvcihtX29ic2Vy
dmVyVGhyZWFkc1NldCwgb2JzZXJ2ZXJzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JzZXJ2ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQgPSBvYnNlcnZlcnMuYXQoaSk7CisgICAgICAgIGZsb3dUaHJlYWQtPmNoZWNrSW52YWxp
ZFJlZ2lvbnMoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5k
ZW5jeU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCit7Cisg
ICAgc3RkOjpwYWlyPFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJlYWQpOwor
ICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRp
bWUgd2Ugc2VlIHRoaXMgZGVwZW5kZW5jeS4gTWFrZSBzdXJlIHdlIHJlY2FsY3VsYXRlIGFsbCB0
aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICB2aWV3KCktPnNldElzUmVuZGVyRmxvd1RocmVhZE9y
ZGVyRGlydHkodHJ1ZSk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92
ZURlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyRmxvd1RocmVhZCogb3RoZXJGbG93VGhyZWFk
KQoreworICAgIGJvb2wgcmVtb3ZlZCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5yZW1vdmUo
b3RoZXJGbG93VGhyZWFkKTsKKyAgICBpZiAocmVtb3ZlZCkgeworICAgICAgICBjaGVja0ludmFs
aWRSZWdpb25zKCk7CisgICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cHVzaERlcGVu
ZGVuY2llcyhSZW5kZXJGbG93VGhyZWFkTGlzdCYgbGlzdCkKK3sKKyAgICBmb3IgKFJlbmRlckZs
b3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciBpdGVyID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRz
U2V0LmJlZ2luKCk7IGl0ZXIgIT0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9ICgqaXRlcikuZmly
c3Q7CisgICAgICAgIGlmIChsaXN0LmNvbnRhaW5zKGZsb3dUaHJlYWQpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGZsb3dUaHJlYWQtPnB1c2hEZXBlbmRlbmNpZXMobGlzdCk7Cisg
ICAgICAgIGxpc3QuYWRkKGZsb3dUaHJlYWQpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJGbG93
VGhyZWFkOjpsYXlvdXQoKQogewogICAgIGlmIChtX3JlZ2lvbnNJbnZhbGlkYXRlZCkgewpAQCAt
MTgxLDYgKzI4MCw5IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAg
ICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5i
ZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKIAorICAgICAgICAgICAgICAgIGlm
ICghcmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgICAg
ICAgICAgICAgSW50UmVjdCByZWdpb25SZWN0OwpAQCAtMTkyLDcgKzI5NCw3IEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdo
dCArPSByZWdpb25SZWN0LndpZHRoKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgcmVnaW9uLT5zZXRSZWdpb25SZWN0KHJlZ2lvblJlY3QpOyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICByZWdpb24tPnNldFJlZ2lvblJlY3QocmVnaW9uUmVjdCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yMDYsNiArMzA4LDggQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKIAogICAgIGZvciAoUmVuZGVyUmVn
aW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1f
cmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gKml0ZXI7CisgICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogICAgICAg
ICBsb2dpY2FsV2lkdGggPSBtYXgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+
Y29udGVudFdpZHRoKCkgOiByZWdpb24tPmNvbnRlbnRIZWlnaHQoKSwgbG9naWNhbFdpZHRoKTsK
ICAgICB9CkBAIC0yMTksNiArMzIzLDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRl
TG9naWNhbEhlaWdodCgpCiAKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0
ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsr
aXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBp
ZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEFT
U0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpKTsKICAgICAgICAgbG9naWNhbEhlaWdodCArPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5jb250ZW50SGVpZ2h0KCkgOiByZWdp
b24tPmNvbnRlbnRXaWR0aCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5oCmluZGV4IDY5MDZmMDguLjE2MDJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAtMzIsNiArMzIsNyBAQAogCiAKICNp
bmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0zOSw5ICs0MCwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7CiBjbGFzcyBSZW5kZXJT
dHlsZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIAordHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJG
bG93VGhyZWFkKj4gUmVuZGVyRmxvd1RocmVhZExpc3Q7Cit0eXBlZGVmIEhhc2hDb3VudGVkU2V0
PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5kZXJGbG93VGhyZWFkQ291bnRlZFNldDsKIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8UmVuZGVyUmVnaW9uKj4gUmVuZGVyUmVnaW9uTGlzdDsKIAogLy8gUmVuZGVy
Rmxvd1RocmVhZCBpcyB1c2VkIHRvIGNvbGxlY3QgYWxsIHRoZSByZW5kZXIgb2JqZWN0cyB0aGF0
IHBhcnRpY2lwYXRlIGluIGEKQEAgLTg4LDE0ICs5MiwzMiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKTsKIAorICAgIHZvaWQgcHVzaERlcGVuZGVuY2llcyhSZW5kZXJGbG93VGhyZWFkTGlzdCYp
OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuICJSZW5kZXJGbG93VGhyZWFkIjsgfQogCisgICAgYm9vbCBkZXBlbmRzT24oUmVu
ZGVyRmxvd1RocmVhZCogb3RoZXJSZW5kZXJGbG93VGhyZWFkKSBjb25zdDsKKyAgICB2b2lkIGFk
ZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyRmxvd1RocmVhZCopOworICAgIHZvaWQgcmVt
b3ZlRGVwZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKik7CisgICAgdm9pZCBj
aGVja0ludmFsaWRSZWdpb25zKCk7CisKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlck9i
amVjdCo+IEZsb3dUaHJlYWRDaGlsZExpc3Q7CiAgICAgRmxvd1RocmVhZENoaWxkTGlzdCBtX2Zs
b3dUaHJlYWRDaGlsZExpc3Q7CiAKICAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwogICAg
IFJlbmRlclJlZ2lvbkxpc3QgbV9yZWdpb25MaXN0OworCisgICAgLy8gT2JzZXJ2ZXIgZmxvdyB0
aHJlYWRzIGhhdmUgaW52YWxpZCByZWdpb25zIHRoYXQgZGVwZW5kIG9uIHRoZSBzdGF0ZSBvZiB0
aGlzIHRocmVhZAorICAgIC8vIHRvIHJlLXZhbGlkYXRlIHRoZWlyIHJlZ2lvbnMuIEtlZXBpbmcg
YSBzZXQgb2Ygb2JzZXJ2ZXIgdGhyZWFkcyBtYWtlIGl0IGVhc3kKKyAgICAvLyB0byBub3RpZnkg
dGhlbSB3aGVuIGEgcmVnaW9uIHdhcyByZW1vdmVkIGZyb20gdGhpcyBmbG93LgorICAgIFJlbmRl
ckZsb3dUaHJlYWRDb3VudGVkU2V0IG1fb2JzZXJ2ZXJUaHJlYWRzU2V0OworCisgICAgLy8gU29t
ZSB0aHJlYWRzIG5lZWQgdG8gaGF2ZSBhIGNvbXBsZXRlIGxheW91dCBiZWZvcmUgd2UgbGF5b3V0
IHRoaXMgZmxvdy4KKyAgICAvLyBUaGF0J3MgYmVjYXVzZSB0aGV5IGNvbnRhaW4gYSBSZW5kZXJS
ZWdpb24gdGhhdCBzaG91bGQgZGlzcGxheSB0aGlzIHRocmVhZC4gVGhlIHNldCBtYWtlcyBpdAor
ICAgIC8vIGVhc3kgdG8gc29ydCB0aGUgb3JkZXIgb2YgdGhyZWFkcyBsYXlvdXQuCisgICAgUmVu
ZGVyRmxvd1RocmVhZENvdW50ZWRTZXQgbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0OworCiAgICAg
Ym9vbCBtX3JlZ2lvbnNJbnZhbGlkYXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKaW5kZXggZTY3MjlmYS4uYjRiOWQy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxk
TGlzdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKKyNpbmNs
dWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTEwMSw2
ICsxMDIsOSBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVtb3ZlQ2hp
bGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlcgogICAgICAgICBpZiAob2xkQ2hpbGQt
PmlzUG9zaXRpb25lZCgpICYmIG93bmVyLT5jaGlsZHJlbklubGluZSgpKQogICAgICAgICAgICAg
b3duZXItPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKG9sZENoaWxkKTsKIAorICAgICAgICBp
ZiAob2xkQ2hpbGQtPmlzUmVuZGVyUmVnaW9uKCkpCisgICAgICAgICAgICB0b1JlbmRlclJlZ2lv
bihvbGRDaGlsZCktPmRldHRhY2hSZWdpb24oKTsKKwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAg
IC8vIFVwZGF0ZSBjYWNoZWQgYm91bmRhcmllcyBpbiBTVkcgcmVuZGVyZXJzLCBpZiBhIGNoaWxk
IGlzIHJlbW92ZWQuCiAgICAgICAgIG93bmVyLT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsK
QEAgLTE3Nyw2ICsxODEsOSBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlzdDo6YXBwZW5kQ2hp
bGROb2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlck9iamVjdCogbgogCiAgICAgICAgIGlm
ICghbmV3Q2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSAmJiBvd25lci0+Y2hpbGRyZW5J
bmxpbmUoKSkKICAgICAgICAgICAgIG93bmVyLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChu
ZXdDaGlsZCk7CisKKyAgICAgICAgaWYgKG5ld0NoaWxkLT5pc1JlbmRlclJlZ2lvbigpKQorICAg
ICAgICAgICAgdG9SZW5kZXJSZWdpb24obmV3Q2hpbGQpLT5hdHRhY2hSZWdpb24oKTsKICAgICB9
CiAgICAgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQobmV3Q2hpbGQpOwog
ICAgIFJlbmRlclF1b3RlOjpyZW5kZXJlclN1YnRyZWVBdHRhY2hlZChuZXdDaGlsZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDczMzc2NTcuLjZiM2Ji
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC00Miwy
MCArNDIsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdp
b24oTm9kZSogbm9kZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKICAgICA6IFJlbmRl
clJlcGxhY2VkKG5vZGUsIEludFNpemUoKSkKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFk
KQorICAgICwgbV9wYXJlbnRGbG93VGhyZWFkKDApCisgICAgLCBtX2lzVmFsaWQoZmFsc2UpCiB7
CiB9CiAKIFJlbmRlclJlZ2lvbjo6flJlbmRlclJlZ2lvbigpCiB7Ci0gICAgaWYgKG1fZmxvd1Ro
cmVhZCAmJiB2aWV3KCkpCi0gICAgICAgIG1fZmxvd1RocmVhZC0+cmVtb3ZlUmVnaW9uRnJvbVRo
cmVhZCh0aGlzKTsKLSAgICBtX2Zsb3dUaHJlYWQgPSAwOwogfQogCiB2b2lkIFJlbmRlclJlZ2lv
bjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewogICAgIC8vIERlbGVnYXRlIHBhaW50aW5nIG9mIGNvbnRlbnQgaW4g
cmVnaW9uIHRvIFJlbmRlckZsb3dUaHJlYWQuCi0gICAgaWYgKCFtX2Zsb3dUaHJlYWQpCisgICAg
aWYgKCFtX2Zsb3dUaHJlYWQgfHwgIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
Zmxvd1RocmVhZC0+cGFpbnRJbnRvUmVnaW9uKHBhaW50SW5mbywgcmVnaW9uUmVjdCgpLCBMYXlv
dXRQb2ludChwYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBw
YWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkpOwogfQpAQCAtNjMs
NiArNjIsOSBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogLy8gSGl0IFRlc3RpbmcKIGJvb2wg
UmVuZGVyUmVnaW9uOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGFj
dGlvbikKIHsKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9j
YXRpb24oKTsKIAogICAgIC8vIENoZWNrIG91ciBib3VuZHMgbmV4dC4gRm9yIHRoaXMgcHVycG9z
ZSBhbHdheXMgYXNzdW1lIHRoYXQgd2UgY2FuIG9ubHkgYmUgaGl0IGluIHRoZQpAQCAtODAsMTQg
KzgyLDM2IEBAIGJvb2wgUmVuZGVyUmVnaW9uOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlclJlZ2lvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3ZvaWQgUmVuZGVyUmVnaW9uOjph
dHRhY2hSZWdpb24oKQogewotICAgIFJlbmRlclJlcGxhY2VkOjpzdHlsZURpZENoYW5nZShkaWZm
ZXJlbmNlLCBvbGRTdHlsZSk7CisgICAgaWYgKCFtX2Zsb3dUaHJlYWQpCisgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBoZXJlIGFuZCBub3QgaW4gdGhlIGNv
bnN0cnVjdG9yLCBiZWNhdXNlIFJlbmRlckZsb3dUaHJlYWQgCi0gICAgLy8gdXNlcyB0aGUgc3R5
bGUoKSBwcm9wZXJ0eSB3aGljaCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1
Y3Rvci4KLSAgICBpZiAoIW9sZFN0eWxlICYmIG1fZmxvd1RocmVhZCkKLSAgICAgICAgbV9mbG93
VGhyZWFkLT5hZGRSZWdpb25Ub1RocmVhZCh0aGlzKTsKKyAgICAvLyBCeSBub3cgdGhlIGZsb3cg
dGhyZWFkIHNob3VsZCBhbHJlYWR5IGJlIGFkZGVkIHRvIHRoZSByZW5kZXJpbmcgdHJlZSwKKyAg
ICAvLyBzbyB3ZSBnbyB1cCB0aGUgcmVuZGVyaW5nIHBhcmVudHMgYW5kIGNoZWNrIHRoYXQgdGhp
cyByZWdpb24gaXMgbm90IHBhcnQgb2YgdGhlIHNhbWUKKyAgICAvLyBmbG93IHRoYXQgaXQgYWN0
dWFsbHkgbmVlZHMgdG8gZGlzcGxheS4gSXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJl
bmNlLgorICAgIFJlbmRlck9iamVjdCogcGFyZW50T2JqZWN0ID0gcGFyZW50KCk7CisgICAgbV9w
YXJlbnRGbG93VGhyZWFkID0gMDsKKyAgICBmb3IgKCA7IHBhcmVudE9iamVjdDsgcGFyZW50T2Jq
ZWN0ID0gcGFyZW50T2JqZWN0LT5wYXJlbnQoKSkgeworICAgICAgICBpZiAocGFyZW50T2JqZWN0
LT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgICAgICAgICAgbV9wYXJlbnRGbG93VGhyZWFk
ID0gdG9SZW5kZXJGbG93VGhyZWFkKHBhcmVudE9iamVjdCk7CisgICAgICAgICAgICAvLyBEbyBu
b3QgdGFrZSBpbnRvIGFjY291bnQgYSByZWdpb24gdGhhdCBsaW5rcyBhIGZsb3cgd2l0aCBpdHNl
bGYuIFRoZSBkZXBlbmRlbmN5CisgICAgICAgICAgICAvLyBjYW5ub3QgY2hhbmdlLCBzbyBpdCBp
cyBub3Qgd29ydGggYWRkaW5nIGl0IHRvIHRoZSBsaXN0LgorICAgICAgICAgICAgaWYgKG1fZmxv
d1RocmVhZCA9PSBtX3BhcmVudEZsb3dUaHJlYWQpIHsKKyAgICAgICAgICAgICAgICBtX2Zsb3dU
aHJlYWQgPSAwOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbV9mbG93VGhyZWFkLT5hZGRS
ZWdpb25Ub1RocmVhZCh0aGlzKTsKK30KKwordm9pZCBSZW5kZXJSZWdpb246OmRldHRhY2hSZWdp
b24oKQoreworICAgIGlmIChtX2Zsb3dUaHJlYWQpCisgICAgICAgIG1fZmxvd1RocmVhZC0+cmVt
b3ZlUmVnaW9uRnJvbVRocmVhZCh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IGZjZThmYTguLmVkNjMy
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTQ5LDEzICs0
OSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWdpb25SZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpIHsgbV9yZWdpb25SZWN0ID0gcmVjdDsgfQogICAgIEludFJlY3QgcmVnaW9uUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaW9uUmVjdDsgfQogCisgICAgdm9pZCBhdHRhY2hSZWdpb24oKTsK
KyAgICB2b2lkIGRldHRhY2hSZWdpb24oKTsKKworICAgIFJlbmRlckZsb3dUaHJlYWQqIHBhcmVu
dEZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dUaHJlYWQ7IH0KKworICAg
IC8vIFZhbGlkIHJlZ2lvbnMgZG8gbm90IGNyZWF0ZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMgd2l0
aCBvdGhlciBmbG93cy4KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFs
aWQ7IH0KKyAgICB2b2lkIHNldElzVmFsaWQoYm9vbCB2YWxpZCkgeyBtX2lzVmFsaWQgPSB2YWxp
ZDsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJSZWdpb24iOyB9CiAKLSAgICB2b2lkIHN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLQogICAgIFJl
bmRlckZsb3dUaHJlYWQqIG1fZmxvd1RocmVhZDsKKworICAgIC8vIElmIHRoaXMgUmVuZGVyUmVn
aW9uIGlzIGRpc3BsYXllZCBhcyBwYXJ0IG9mIGFub3RoZXIgZmxvdywKKyAgICAvLyB3ZSBuZWVk
IHRvIGNyZWF0ZSBhIGRlcGVuZGVuY3kgdHJlZSwgc28gdGhhdCBsYXlvdXQgb2YgdGhlCisgICAg
Ly8gcmVnaW9ucyBpcyBhbHdheXMgZG9uZSBiZWZvcmUgdGhlIHJlZ2lvbnMgdGhlbXNlbHZlcy4K
KyAgICBSZW5kZXJGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dUaHJlYWQ7CiAgICAgSW50UmVjdCBt
X3JlZ2lvblJlY3Q7CisKKyAgICBib29sIG1faXNWYWxpZDsKIH07CiAKIGlubGluZSBSZW5kZXJS
ZWdpb24qIHRvUmVuZGVyUmVnaW9uKFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGZkZDc5NGIuLjViMjli
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
QEAgLTY0Nyw2ICs2NDcsNTEgQEAgc3RhdGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJl
bmRlckxheWVyJiBsLAogICAgICAgICB3cml0ZSh0cywgKmwucmVuZGVyZXIoKSwgaW5kZW50ICsg
MSwgYmVoYXZpb3IpOwogfQogCitzdGF0aWMgdm9pZCB3cml0ZVJlbmRlckZsb3dUaHJlYWRzKFRl
eHRTdHJlYW0mIHRzLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBjb25zdCBSZW5kZXJMYXllciog
cm9vdExheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnRS
ZWN0LCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvcikKK3sKKyAgICBj
b25zdCBSZW5kZXJGbG93VGhyZWFkTGlzdCogbGlzdCA9IHJlbmRlclZpZXctPnJlbmRlckZsb3dU
aHJlYWRMaXN0KCk7CisgICAgaWYgKCFsaXN0IHx8IGxpc3QtPmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7CisgICAgdHMgPDwgIkZsb3cg
VGhyZWFkc1xuIjsKKworICAgIGZvciAoUmVuZGVyRmxvd1RocmVhZExpc3Q6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBsaXN0LT5iZWdpbigpOyBpdGVyICE9IGxpc3QtPmVuZCgpOyArK2l0ZXIpIHsK
KyAgICAgICAgY29uc3QgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZCA9ICppdGVy
OworCisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwg
IlRocmVhZCB3aXRoIGZsb3ctbmFtZSAnIiA8PCByZW5kZXJGbG93VGhyZWFkLT5mbG93VGhyZWFk
KCkgPDwgIidcbiI7CisKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyRmxvd1Ro
cmVhZC0+bGF5ZXIoKTsKKyAgICAgICAgd3JpdGVMYXllcnModHMsIHJvb3RMYXllciwgbGF5ZXIs
IHBhaW50UmVjdCwgaW5kZW50ICsgMiwgYmVoYXZpb3IpOworCisgICAgICAgIC8vIERpc3BsYXkg
dGhlIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRoaXMgZmxvdyB0aHJlYWQKKyAgICAgICAg
Y29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVhZFJlZ2lvbkxpc3QgPSByZW5kZXJGbG93
VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAgIGlmICghZmxvd1RocmVhZFJlZ2lv
bkxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsg
MSk7CisgICAgICAgICAgICB0cyA8PCAiUmVnaW9ucyBmb3IgZmxvdyAnIjw8IHJlbmRlckZsb3dU
aHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xuIjsKKyAgICAgICAgICAgIGZvciAoUmVuZGVyUmVn
aW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRSUiA9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmJlZ2lu
KCk7IGl0UlIgIT0gZmxvd1RocmVhZFJlZ2lvbkxpc3QuZW5kKCk7ICsraXRSUikgeworICAgICAg
ICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0UlI7CisgICAgICAgICAg
ICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDIpOworICAgICAgICAgICAgICAgIHRzIDw8
ICJSZW5kZXJSZWdpb24iOworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPm5vZGUo
KSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVu
ZGVyUmVnaW9uLT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRhZ05hbWUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8
ICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9kZSgpLT5pc0Vs
ZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5ub2RlKCktPmhhc0lEKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
cmVuZGVyUmVnaW9uLT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiAj
IiA8PCBlbGVtZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghcmVuZGVyUmVnaW9u
LT5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIHRzIDw8ICIgaW52YWxpZCI7CisgICAg
ICAgICAgICAgICAgdHMgPDwgIiB3aXRoIGluZGV4ICIgPDwgcmVuZGVyUmVnaW9uLT5zdHlsZSgp
LT5yZWdpb25JbmRleCgpIDw8ICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHBhaW50UmVjdCwgaW50IGluZGVudCwgUmVuZGVyQXNUZXh0QmVo
YXZpb3IgYmVoYXZpb3IpCiB7CkBAIC03MTAsNDIgKzc1NSw5IEBAIHN0YXRpYyB2b2lkIHdyaXRl
TGF5ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5k
ZXJMYXllCiAgICAgCiAgICAgLy8gQWx0b3VnaCB0aGUgUmVuZGVyRmxvd1RocmVhZCByZXF1aXJl
cyBhIGxheWVyLCBpdCBpcyBub3QgY29sbGVjdGVkIGJ5IGl0cyBwYXJlbnQsCiAgICAgLy8gc28g
d2UgaGF2ZSB0byB0cmVhdCBpdCBhcyBhIHNwZWNpYWwgY2FzZS4KLSAgICBib29sIGZpcnN0UmVu
ZGVyRmxvd1RocmVhZCA9IHRydWU7Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbC0+
cmVuZGVyZXIoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7Ci0gICAg
ICAgICAgICBpZiAoZmlyc3RSZW5kZXJGbG93VGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZmly
c3RSZW5kZXJGbG93VGhyZWFkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQo
dHMsIGluZGVudCk7Ci0gICAgICAgICAgICAgICAgdHMgPDwgIkZsb3cgVGhyZWFkc1xuIjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIHJlbmRlckZs
b3dUaHJlYWQgPSB0b1JlbmRlckZsb3dUaHJlYWQoY2hpbGQpOwotICAgICAgICAgICAgd3JpdGVJ
bmRlbnQodHMsIGluZGVudCArIDEpOwotICAgICAgICAgICAgdHMgPDwgIlRocmVhZCB3aXRoIGZs
b3ctbmFtZSAnIiA8PCByZW5kZXJGbG93VGhyZWFkLT5mbG93VGhyZWFkKCkgPDwgIidcbiI7Ci0g
ICAgICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSByZW5kZXJGbG93VGhyZWFkLT5sYXllcigp
OwotICAgICAgICAgICAgd3JpdGVMYXllcnModHMsIHJvb3RMYXllciwgbGF5ZXIsIHBhaW50RGly
dHlSZWN0LCBpbmRlbnQgKyAyLCBiZWhhdmlvcik7Ci0KLSAgICAgICAgICAgIC8vIERpc3BsYXkg
dGhlIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRoaXMgZmxvdyB0aHJlYWQKLSAgICAgICAg
ICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIGZsb3dUaHJlYWRSZWdpb25MaXN0ID0gcmVuZGVy
Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgICAgICAgICAgaWYgKCFmbG93VGhy
ZWFkUmVnaW9uTGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0
cywgaW5kZW50ICsgMSk7Ci0gICAgICAgICAgICAgICAgdHMgPDwgIlJlZ2lvbnMgZm9yIGZsb3cg
JyI8PCByZW5kZXJGbG93VGhyZWFkLT5mbG93VGhyZWFkKCkgPDwgIidcbiI7Ci0gICAgICAgICAg
ICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdFJSID0gZmxvd1Ro
cmVhZFJlZ2lvbkxpc3QuYmVnaW4oKTsgaXRSUiAhPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5lbmQo
KTsgKytpdFJSKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVn
aW9uID0gKml0UlI7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQg
KyAyKTsKLSAgICAgICAgICAgICAgICAgICAgdHMgPDwgIlJlbmRlclJlZ2lvbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPm5vZGUoKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRUYWdOYW1lKHJlbmRlclJlZ2lvbi0+bm9kZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPm5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpICYmIHJlbmRlclJlZ2lvbi0+bm9kZSgpLT5oYXNJRCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihy
ZW5kZXJSZWdpb24tPm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHMgPDwg
IiAjIiA8PCBlbGVtZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRz
IDw8ICIgd2l0aCBpbmRleCAiIDw8IHJlbmRlclJlZ2lvbi0+c3R5bGUoKS0+cmVnaW9uSW5kZXgo
KSA8PCAiXG4iOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQor
ICAgIGlmIChsLT5yZW5kZXJlcigpLT5pc1JlbmRlclZpZXcoKSkgeworICAgICAgICBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdG9SZW5kZXJWaWV3KGwtPnJlbmRlcmVyKCkpOworICAgICAgICB3
cml0ZVJlbmRlckZsb3dUaHJlYWRzKHRzLCByZW5kZXJWaWV3LCByb290TGF5ZXIsIHBhaW50RGly
dHlSZWN0LCBpbmRlbnQsIGJlaGF2aW9yKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAyNTVkYTgxLi44ODNkYjI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01NCw2ICs1NCw3IEBAIFJlbmRlclZpZXc6
OlJlbmRlclZpZXcoTm9kZSogbm9kZSwgRnJhbWVWaWV3KiB2aWV3KQogICAgICwgbV9wYWdlTG9n
aWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2xheW91dFN0YXRlKDApCiAgICAgLCBt
X2xheW91dFN0YXRlRGlzYWJsZUNvdW50KDApCisgICAgLCBtX2lzUmVuZGVyRmxvd1RocmVhZE9y
ZGVyRGlydHkoZmFsc2UpCiB7CiAgICAgLy8gQ2xlYXIgb3VyIGFub255bW91cyBiaXQsIHNldCBi
ZWNhdXNlIFJlbmRlck9iamVjdCBhc3N1bWVzCiAgICAgLy8gYW55IHJlbmRlcmVyIHdpdGggZG9j
dW1lbnQgYXMgdGhlIG5vZGUgaXMgYW5vbnltb3VzLgpAQCAtMTI3LDggKzEyOCwxMSBAQCB2b2lk
IFJlbmRlclZpZXc6OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBm
YWxzZTsKICAgICBtX2xheW91dFN0YXRlID0gJnN0YXRlOwogCi0gICAgaWYgKG5lZWRzTGF5b3V0
KCkpCisgICAgaWYgKG5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91
dCgpOworICAgICAgICBpZiAobV9yZW5kZXJGbG93VGhyZWFkTGlzdCkKKyAgICAgICAgICAgIGxh
eW91dFJlbmRlckZsb3dUaHJlYWRzKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGxheW91dERlbHRh
KCkgPT0gTGF5b3V0U2l6ZSgpKTsKICAgICBBU1NFUlQobV9sYXlvdXRTdGF0ZURpc2FibGVDb3Vu
dCA9PSAwKTsKQEAgLTgwNyw5ICs4MTEsMTEgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIAog
UmVuZGVyRmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFk
KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVu
ZGVyRmxvd1RocmVhZChyZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlckZsb3dUaHJlYWRMaXN0
KQorICAgICAgICBtX3JlbmRlckZsb3dUaHJlYWRMaXN0ID0gYWRvcHRQdHIobmV3IFJlbmRlckZs
b3dUaHJlYWRMaXN0KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKFJlbmRlckZsb3dUaHJl
YWRMaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsg
aXRlciAhPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAg
ICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKICAgICAgICAgICAg
IGlmIChmbG93UmVuZGVyZXItPmZsb3dUaHJlYWQoKSA9PSBmbG93VGhyZWFkKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmbG93UmVuZGVyZXI7CiAgICAgICAgIH0KQEAgLTgxOSw3ICs4MjUsMzQg
QEAgUmVuZGVyRmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1QKICAgICBmbG93UmVuZGVyZXItPnNldFN0eWxlKFJl
bmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZShzdHlsZSgpKSk7CiAgICAgYWRk
Q2hpbGQoZmxvd1JlbmRlcmVyKTsKICAgICAKKyAgICBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5h
ZGQoZmxvd1JlbmRlcmVyKTsKKyAgICBzZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5KHRy
dWUpOworCiAgICAgcmV0dXJuIGZsb3dSZW5kZXJlcjsKIH0KIAordm9pZCBSZW5kZXJWaWV3Ojps
YXlvdXRSZW5kZXJGbG93VGhyZWFkcygpCit7CisgICAgQVNTRVJUKG1fcmVuZGVyRmxvd1RocmVh
ZExpc3QpOworCisgICAgaWYgKGlzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHkoKSkgeworICAg
ICAgICAvLyBBcnJhbmdlIHRoZSB0aHJlYWQgbGlzdCBhY2NvcmRpbmcgdG8gZGVwZW5kZW5jaWVz
LgorICAgICAgICBSZW5kZXJGbG93VGhyZWFkTGlzdCBzb3J0ZWRMaXN0OworICAgICAgICBmb3Ig
KFJlbmRlckZsb3dUaHJlYWRMaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFk
TGlzdC0+YmVnaW4oKTsgaXRlciAhPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytp
dGVyKSB7CisgICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRl
cjsKKyAgICAgICAgICAgIGlmIChzb3J0ZWRMaXN0LmNvbnRhaW5zKGZsb3dSZW5kZXJlcikpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmbG93UmVuZGVyZXItPnB1c2hE
ZXBlbmRlbmNpZXMoc29ydGVkTGlzdCk7CisgICAgICAgICAgICBzb3J0ZWRMaXN0LmFkZChmbG93
UmVuZGVyZXIpOworICAgICAgICB9CisgICAgICAgIG1fcmVuZGVyRmxvd1RocmVhZExpc3QtPnN3
YXAoc29ydGVkTGlzdCk7CisgICAgICAgIHNldElzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHko
ZmFsc2UpOworICAgIH0KKworICAgIGZvciAoUmVuZGVyRmxvd1RocmVhZExpc3Q6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5iZWdpbigpOyBpdGVyICE9IG1fcmVuZGVy
Rmxvd1RocmVhZExpc3QtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1JlbmRlcmVyID0gKml0ZXI7CisgICAgICAgIGZsb3dSZW5kZXJlci0+bGF5b3V0SWZO
ZWVkZWQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGM4NDA3MjAuLjMzMTNhM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxv
Y2suaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM3LDggQEAgY2xhc3MgUmVuZGVy
V2lkZ2V0OwogY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogI2VuZGlmCiAKK3R5cGVkZWYg
TGlzdEhhc2hTZXQ8UmVuZGVyRmxvd1RocmVhZCo+IFJlbmRlckZsb3dUaHJlYWRMaXN0OworCiBj
bGFzcyBSZW5kZXJWaWV3IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKICAgICBSZW5k
ZXJWaWV3KE5vZGUqLCBGcmFtZVZpZXcqKTsKQEAgLTE2Nyw2ICsxNzAsMTUgQEAgcHVibGljOgog
ICAgIEludFJlY3QgZG9jdW1lbnRSZWN0KCkgY29uc3Q7CiAKICAgICBSZW5kZXJGbG93VGhyZWFk
KiByZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFk
KTsKKyAgICB2b2lkIGxheW91dFJlbmRlckZsb3dUaHJlYWRzKCk7CisgICAgYm9vbCBpc1JlbmRl
ckZsb3dUaHJlYWRPcmRlckRpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlbmRlckZsb3dUaHJl
YWRPcmRlckRpcnR5OyB9CisgICAgdm9pZCBzZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5
KGJvb2wgZGlydHkpCisgICAgeworICAgICAgICBtX2lzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGly
dHkgPSBkaXJ0eTsKKyAgICAgICAgaWYgKGRpcnR5KQorICAgICAgICAgICAgc2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CisgICAgfQorICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWRMaXN0KiByZW5kZXJG
bG93VGhyZWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyRmxvd1RocmVhZExpc3QuZ2V0
KCk7IH0KIAogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogICAgIApAQCAtMjUwLDYgKzI2Miw4IEBAIHByaXZhdGU6
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIE93blB0cjxSZW5kZXJMYXll
ckNvbXBvc2l0b3I+IG1fY29tcG9zaXRvcjsKICNlbmRpZgorICAgIE93blB0cjxSZW5kZXJGbG93
VGhyZWFkTGlzdD4gbV9yZW5kZXJGbG93VGhyZWFkTGlzdDsKKyAgICBib29sIG1faXNSZW5kZXJG
bG93VGhyZWFkT3JkZXJEaXJ0eTsKIH07CiAKIGlubGluZSBSZW5kZXJWaWV3KiB0b1JlbmRlclZp
ZXcoUmVuZGVyT2JqZWN0KiBvYmplY3QpCg==
</data>
<flag name="review"
          id="99800"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="99801"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104083</attachid>
            <date>2011-08-16 13:35:46 -0700</date>
            <delta_ts>2011-08-16 14:59:18 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug66142_2.patch</filename>
            <type>text/plain</type>
            <size>35088</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZDEwZmNiLi4xNGZhZTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBSZW5kZXJSZWdpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVu
ZGVyRmxvd1RocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
ZHluYW1pYy1yZW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dz
LWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA4LTE2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyNTQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFt
aWMtcmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44ZjQwMmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCitG
bG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycKKyAgVGhyZWFkIHdp
dGggZmxvdy1uYW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCisgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRo
IGluZGV4IDIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QicKKyAgUmVnaW9ucyBmb3Ig
ZmxvdyAnZmxvd0InCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1y
ZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5
bmFtaWMtcmVtb3ZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFl
NmYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBF
IEhUTUw+CisKKzxzdHlsZT4KKy5mbG93QSB7IC13ZWJraXQtZmxvdzogJ2Zsb3dBJzsgfQorLmZs
b3dCIHsgLXdlYmtpdC1mbG93OiAnZmxvd0InOyB9CisuZmxvd0MgeyAtd2Via2l0LWZsb3c6ICdm
bG93Qyc7IH0KKworLnJlZ2lvbkZsb3dBIHsgY29udGVudDogLXdlYmtpdC1mcm9tLWZsb3coJ2Zs
b3dBJyk7IH0KKy5yZWdpb25GbG93QiB7IGNvbnRlbnQ6IC13ZWJraXQtZnJvbS1mbG93KCdmbG93
QicpOyB9CisucmVnaW9uRmxvd0MgeyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxvdygnZmxvd0Mn
KTsgfQorCisuaW5kZXgxIHsgLXdlYmtpdC1jb250ZW50LW9yZGVyOiAxOyB9CisuaW5kZXgyIHsg
LXdlYmtpdC1jb250ZW50LW9yZGVyOiAyOyB9CisuaW5kZXgzIHsgLXdlYmtpdC1jb250ZW50LW9y
ZGVyOiAzOyB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJmbG93QSI+CisgICAgPGRpdiBjbGFz
cz0icmVnaW9uRmxvd0IgaW5kZXgxIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbG93
QiI+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0MgaW5kZXgxIj48L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJmbG93QyI+CisgICAgPCEtLSBUaGUgZm9sbG93aW5nIHJlZ2lvbiB3aWxs
IGluaXRpYWxseSBiZSBpbnZhbGlkLiBSZW1vdmluZyByZWdpb25GbG93QyBzaG91bGQgbWFrZSBp
dCB2YWxpZCBhZ2Fpbi4gLS0+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0EgaW5kZXgxIj48
L2Rpdj4KKzwvZGl2PgorCis8IS0tIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmxvd3MuIElu
IHRoZSBmdXR1cmUgd2UgbWlnaHQgYXZvaWQgY3JlYXRpbmcgZmxvd3MgaWYgdGhlcmUgYXJlIG5v
IHJlYWNoYWJsZSByZWdpb25zLiAtLT4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MiI+
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7ICAgIC8vIGZv
cmNlIGxheW91dAorICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
InJlZ2lvbkZsb3dDIilbMF07CisgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7Cis8
L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjU0ODZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHgxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAg
IFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAs
MCkgc2l6ZSAweDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dC
JworICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gaW52
YWxpZCB3aXRoIGluZGV4IDEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAyCisg
IFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dD
JworICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4IDEKKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gd2l0aCBpbmRleCAzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCisgIFJl
Z2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4
IDIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MjkyMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTD4KKworPHN0eWxlPgorLmZsb3dB
IHsgLXdlYmtpdC1mbG93OiAnZmxvd0EnOyB9CisuZmxvd0IgeyAtd2Via2l0LWZsb3c6ICdmbG93
Qic7IH0KKy5mbG93QyB7IC13ZWJraXQtZmxvdzogJ2Zsb3dDJzsgfQorCisucmVnaW9uRmxvd0Eg
eyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxvdygnZmxvd0EnKTsgfQorLnJlZ2lvbkZsb3dCIHsg
Y29udGVudDogLXdlYmtpdC1mcm9tLWZsb3coJ2Zsb3dCJyk7IH0KKy5yZWdpb25GbG93QyB7IGNv
bnRlbnQ6IC13ZWJraXQtZnJvbS1mbG93KCdmbG93QycpOyB9CisKKy5pbmRleDEgeyAtd2Via2l0
LWNvbnRlbnQtb3JkZXI6IDE7IH0KKy5pbmRleDIgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDI7
IH0KKy5pbmRleDMgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDM7IH0KKzwvc3R5bGU+CisKKzxk
aXYgY2xhc3M9ImZsb3dBIj4KKyAgICA8IS0tIFRoZSBmb2xsb3dpbmcgcmVnaW9uIHNob3VsZCBi
ZSBpZ25vcmVkLiBEaXJlY3QgY2lyY3VsYXIgcmVmZXJlbmNlLiAtLT4KKyAgICA8ZGl2IGNsYXNz
PSJyZWdpb25GbG93QSBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImZsb3dC
Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QyBpbmRleDEiPjwvZGl2PgorICAgIDwhLS0g
VGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQuIERpcmVjdCBjaXJjdWxhciBy
ZWZlcmVuY2UuIC0tPgorICAgIDxkaXYgY2xhc3M9ImZsb3dDIHJlZ2lvbkZsb3dDIGluZGV4MiI+
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxvd0MiPgorICAgIDwhLS0gVGhlIGZvbGxv
d2luZyByZWdpb24gc2hvdWxkIGJlIGludmFsaWQuIENpcmN1bGFyIHJlZmVyZW5jZSB0aHJvdWdo
IGZsb3dCIHdoaWNoIGFscmVhZHkgaGFzIGNyZWF0ZWQgYSBsaW5rIHRvIHRoaXMgZmxvdworICAg
ICAgICAgdGhyb3VnaCB0aGUgInJlZ2lvbkZsb3dDIGluZGV4MSIgcmVnaW9uLiAtLT4KKyAgICA8
ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InJl
Z2lvbkZsb3dBIGluZGV4MiI+PC9kaXY+Cis8L2Rpdj4KKworPCEtLSBGb3JjZSB0aGUgY3JlYXRp
b24gb2YgdGhlIGZsb3dzLiBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IGF2b2lkIGNyZWF0aW5nIGZs
b3dzIGlmIHRoZXJlIGFyZSBubyByZWFjaGFibGUgcmVnaW9ucy4gLS0+Cis8ZGl2IGNsYXNzPSJy
ZWdpb25GbG93QSBpbmRleDMiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVnaW9uRmxvd0IgaW5kZXgy
Ij48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dDIGluZGV4MyI+PC9kaXY+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWFkNTYzZC4uMWYwYjllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEx
LTA4LTE2ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAg
ICBbQ1NTUmVnaW9uc10gUmVuZGVyUmVnaW9uIHNob3VsZCBub3QgcmVmZXJlbmNlIGEgcGFyZW50
IFJlbmRlckZsb3dUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MTQyCisKKyAgICAgICAgQWRkZWQgY29kZSB0aGF0IGNoZWNrcyB0aGUgcGFy
ZW50IFJlbmRlckZsb3dUaHJlYWQgb2YgYSBSZW5kZXJSZWdpb24gYW5kIGNyZWF0ZXMKKyAgICAg
ICAgYSBkZXBlbmRlbmN5IGZvciBpdHMgcmVmZXJlbmNlZCBSZW5kZXJGbG93VGhyZWFkIChmcm9t
IENTUyBzdHlsZSkuCisKKyAgICAgICAgVGhlcmUgYXJlIHR3byBjYXNlczoKKyAgICAgICAgMS4g
QSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxheSB0aGUgZmxvdyB0aHJlYWQgdGhhdCBsYWlk
IGl0IG91dC4gSW4gdGhpcyBjYXNlCisgICAgICAgIHRoZSByZWdpb24gd2lsbCBiZSBpZ25vcmVk
IGFuZCB3aWxsIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgZmxvdyB0aHJlYWRzIHJlZ2lvbnMgbGlz
dC4KKyAgICAgICAgMi4gQSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxheSBhIGZsb3cgdGhy
ZWFkIHRoYXQgY29udGFpbnMgYW5vdGhlciByZWdpb24gdGhhdAorICAgICAgICB0cmllcyB0byBk
aXNwbGF5IHRoZSBmaXJzdCByZWdpb24ncyBmbG93IHRocmVhZC4gVGhpcyBvbmUgY2FuIGJlIGdl
bmVyYWxpemVkIHdpdGggYW55CisgICAgICAgIG51bWJlciBvZiBpbnRlcm1lZGlhdGUgZmxvdyB0
aHJlYWRzLiBJbiB0aGlzIGNhc2UgdGhlIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBhbmQgb25seSB0
aGUKKyAgICAgICAgZmlyc3QgYWRkZWQgcmVnaW9uIHdpbGwgYWN0dWFsbHkgYmUgc2VsZWN0ZWQu
IFRoZSBvdGhlciByZWdpb24gd2lsbCBiZSBpZ25vcmVkLiBIb3dldmVyLAorICAgICAgICB3aGVu
IHRoZSByZWN1cnNpb24gaXMgcmVtb3ZlZCB0aGUgaW52YWxpZCByZWdpb25zIHdpbGwgYmUgcmVj
b3ZlcmVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cu
aHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjpkZXBlbmRzT24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6YWRkUmVnaW9uVG9UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93
VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
b3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6cmVtb3ZlRGVwZW5kZW5jeU9uRmxvd1RocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0YW5nbGVJblJlZ2lvbnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RD
aGlsZExpc3Q6OnJlbW92ZUNoaWxkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246On5SZW5kZXJSZWdpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjphdHRhY2hSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
OjpkZXR0YWNoUmVnaW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnBhcmVudEZsb3dUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlZ2lvbjo6c2V0SXNWYWxpZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVSZW5kZXJGbG93VGhyZWFkcyk6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0ZUxheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmxheW91dFJlbmRlckZsb3dUaHJlYWRzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6aGFzUmVuZGVy
Rmxvd1RocmVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6aXNSZW5kZXJGbG93
VGhyZWFkT3JkZXJEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRJc1Jl
bmRlckZsb3dUaHJlYWRPcmRlckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnJlbmRlckZsb3dUaHJlYWRMaXN0KToKKwogMjAxMS0wOC0xNiAgQWRhbSBSb2JlbiAgPGFyb2Jl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBwbGFjZWhvbGRlciB0ZXh0IHJlbWFpbiB2aXNp
YmxlIHVudGlsIGEgY2hhcmFjdGVyIGlzIHR5cGVkIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGE0MDQxYTQuLmViYWU2OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzE0MSw2ICszMTQxLDkgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KFJlbmRl
ckJsb2NrKiByb290QmxvY2ssIExheW8KIAogdm9pZCBSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRp
b25lZE9iamVjdChSZW5kZXJCb3gqIG8pCiB7CisgICAgaWYgKG8tPmlzUmVuZGVyRmxvd1RocmVh
ZCgpKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0IG9mIHNw
ZWNpYWwgb2JqZWN0cyBpZiB3ZSBkb24ndCBhbGVhZHkgaGF2ZSBvbmUKICAgICBpZiAoIW1fcG9z
aXRpb25lZE9iamVjdHMpCiAgICAgICAgIG1fcG9zaXRpb25lZE9iamVjdHMgPSBhZG9wdFB0cihu
ZXcgUG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggMmRjYTYzNy4uZDliOGQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw2ICsxNDksMjMgQEAgc3RhdGljIGJvb2wgY29t
cGFyZVJlbmRlclJlZ2lvbnMoY29uc3QgUmVuZGVyUmVnaW9uKiBmaXJzdFJlZ2lvbiwgY29uc3Qg
UmVuZGVyUmUKICAgICByZXR1cm4gKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05f
Rk9MTE9XSU5HKTsKIH0KIAorYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVy
Rmxvd1RocmVhZCogb3RoZXJSZW5kZXJGbG93VGhyZWFkKSBjb25zdAoreworICAgIGlmIChtX2xh
eW91dEJlZm9yZVRocmVhZHNTZXQuY29udGFpbnMob3RoZXJSZW5kZXJGbG93VGhyZWFkKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBSZWN1cnNpdmVseSB0cmF2ZXJzZSB0aGUgbV9s
YXlvdXRCZWZvcmVUaHJlYWRzU2V0LgorICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0Ojpj
b25zdF9pdGVyYXRvciBpdGVyYXRvciA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5iZWdpbigp
OworICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X2xheW91dEJlZm9yZVRocmVhZHNTZXQuZW5kKCk7CisgICAgZm9yICg7IGl0ZXJhdG9yICE9IGVu
ZDsgKytpdGVyYXRvcikgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiBiZWZvcmVG
bG93VGhyZWFkID0gKCppdGVyYXRvcikuZmlyc3Q7CisgICAgICAgIGlmIChiZWZvcmVGbG93VGhy
ZWFkLT5kZXBlbmRzT24ob3RoZXJSZW5kZXJGbG93VGhyZWFkKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZW5kZXJGbG93
VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKIHsK
ICAgICBBU1NFUlQocmVuZGVyUmVnaW9uKTsKQEAgLTE2MSw2ICsxNzksMTkgQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lv
bikKICAgICAgICAgbV9yZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVnaW9uKTsK
ICAgICB9CiAKKyAgICBBU1NFUlQoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKTsKKyAgICBpZiAo
cmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJl
Z2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5kZXBlbmRzT24odGhpcykpIHsKKyAgICAgICAgICAg
IC8vIFJlZ2lzdGVyIG91cnNlbGYgdG8gZ2V0IGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRl
IGNoYW5nZXMuCisgICAgICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+
bV9vYnNlcnZlclRocmVhZHNTZXQuYWRkKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24t
PnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgfQorCisgICAgcmVuZGVyUmVnaW9uLT5zZXRJc1Zh
bGlkKHRydWUpOworCiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIApAQCAtMTY4LDEwICsx
OTksNzggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJl
bmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwog
ICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKyAgICBpZiAocmVuZGVyUmVn
aW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgcmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkt
Pm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIC8vIE5vIG5l
ZWQgdG8gaW52YWxpZGF0ZSB0aGUgcmVnaW9ucyByZWN0YW5nbGVzLiBUaGUgcmVtb3ZlZCByZWdp
b24KKyAgICAgICAgICAgIC8vIHdhcyBub3QgdGFrZW4gaW50byBhY2NvdW50LiBKdXN0IHJldHVy
biBoZXJlLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlbW92ZURl
cGVuZGVuY3lPbkZsb3dUaHJlYWQocmVuZGVyUmVnaW9uLT5wYXJlbnRGbG93VGhyZWFkKCkpOwor
ICAgIH0KIAogICAgIGludmFsaWRhdGVSZWdpb25zKCk7CiB9CiAKK3ZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucygpCit7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0
OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25M
aXN0LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRl
cjsKKyAgICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIGEgcmVnaW9uIHdvdWxkIGJlIGludmFsaWQg
aXMgYmVjYXVzZSBpdCBoYXMgYSBwYXJlbnQgZmxvdyB0aHJlYWQuCisgICAgICAgIEFTU0VSVChy
ZWdpb24tPmlzVmFsaWQoKSB8fCByZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgICAg
IGlmIChyZWdpb24tPmlzVmFsaWQoKSB8fCByZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+ZGVw
ZW5kc09uKHRoaXMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmVnaW9uLT5w
YXJlbnRGbG93VGhyZWFkKCktPm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LnJlbW92ZSh0aGlzKTsKKyAg
ICAgICAgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZWdpb24tPnBhcmVudEZsb3dUaHJlYWQo
KSk7CisgICAgICAgIHJlZ2lvbi0+c2V0SXNWYWxpZCh0cnVlKTsKKyAgICAgICAgaW52YWxpZGF0
ZVJlZ2lvbnMoKTsKKyAgICB9CisKKyAgICBpZiAobV9vYnNlcnZlclRocmVhZHNTZXQuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3RpZnkgYWxsIHRoZSBmbG93IHRocmVh
ZHMgdGhhdCB3ZXJlIGRlcGVuZGVudCBvbiB0aGlzIGZsb3cuCisKKyAgICAvLyBDcmVhdGUgYSBj
b3B5IG9mIHRoZSBsaXN0IGZpcnN0LiBUaGF0J3MgYmVjYXVzZSBvYnNlcnZlcnMgbWlnaHQgY2hh
bmdlIHRoZSBsaXN0IHdoZW4gY2FsbGluZyBjaGVja0ludmFsaWRSZWdpb25zLgorICAgIFZlY3Rv
cjxSZW5kZXJGbG93VGhyZWFkKj4gb2JzZXJ2ZXJzOworICAgIGNvcHlUb1ZlY3RvcihtX29ic2Vy
dmVyVGhyZWFkc1NldCwgb2JzZXJ2ZXJzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JzZXJ2ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQgPSBvYnNlcnZlcnMuYXQoaSk7CisgICAgICAgIGZsb3dUaHJlYWQtPmNoZWNrSW52YWxp
ZFJlZ2lvbnMoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5k
ZW5jeU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCit7Cisg
ICAgc3RkOjpwYWlyPFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJlYWQpOwor
ICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRp
bWUgd2Ugc2VlIHRoaXMgZGVwZW5kZW5jeS4gTWFrZSBzdXJlIHdlIHJlY2FsY3VsYXRlIGFsbCB0
aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICB2aWV3KCktPnNldElzUmVuZGVyRmxvd1RocmVhZE9y
ZGVyRGlydHkodHJ1ZSk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92
ZURlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyRmxvd1RocmVhZCogb3RoZXJGbG93VGhyZWFk
KQoreworICAgIGJvb2wgcmVtb3ZlZCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5yZW1vdmUo
b3RoZXJGbG93VGhyZWFkKTsKKyAgICBpZiAocmVtb3ZlZCkgeworICAgICAgICBjaGVja0ludmFs
aWRSZWdpb25zKCk7CisgICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cHVzaERlcGVu
ZGVuY2llcyhSZW5kZXJGbG93VGhyZWFkTGlzdCYgbGlzdCkKK3sKKyAgICBmb3IgKFJlbmRlckZs
b3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciBpdGVyID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRz
U2V0LmJlZ2luKCk7IGl0ZXIgIT0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9ICgqaXRlcikuZmly
c3Q7CisgICAgICAgIGlmIChsaXN0LmNvbnRhaW5zKGZsb3dUaHJlYWQpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGZsb3dUaHJlYWQtPnB1c2hEZXBlbmRlbmNpZXMobGlzdCk7Cisg
ICAgICAgIGxpc3QuYWRkKGZsb3dUaHJlYWQpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJGbG93
VGhyZWFkOjpsYXlvdXQoKQogewogICAgIGlmIChtX3JlZ2lvbnNJbnZhbGlkYXRlZCkgewpAQCAt
MTgxLDYgKzI4MCw5IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAg
ICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5i
ZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKIAorICAgICAgICAgICAgICAgIGlm
ICghcmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgICAg
ICAgICAgICAgSW50UmVjdCByZWdpb25SZWN0OwpAQCAtMTkyLDcgKzI5NCw3IEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdo
dCArPSByZWdpb25SZWN0LndpZHRoKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgcmVnaW9uLT5zZXRSZWdpb25SZWN0KHJlZ2lvblJlY3QpOyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICByZWdpb24tPnNldFJlZ2lvblJlY3QocmVnaW9uUmVjdCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yMDYsNiArMzA4LDggQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKIAogICAgIGZvciAoUmVuZGVyUmVn
aW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1f
cmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gKml0ZXI7CisgICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogICAgICAg
ICBsb2dpY2FsV2lkdGggPSBtYXgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+
Y29udGVudFdpZHRoKCkgOiByZWdpb24tPmNvbnRlbnRIZWlnaHQoKSwgbG9naWNhbFdpZHRoKTsK
ICAgICB9CkBAIC0yMTksNiArMzIzLDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRl
TG9naWNhbEhlaWdodCgpCiAKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0
ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsr
aXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBp
ZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEFT
U0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpKTsKICAgICAgICAgbG9naWNhbEhlaWdodCArPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5jb250ZW50SGVpZ2h0KCkgOiByZWdp
b24tPmNvbnRlbnRXaWR0aCgpOwogICAgIH0KQEAgLTI5OSw2ICs0MDUsOCBAQCB2b2lkIFJlbmRl
ckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0YW5nbGVJblJlZ2lvbnMoY29uc3QgTGF5b3V0UmVjdCYg
cmVwYWludFJlY3QsCiB7CiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVy
ID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0
ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgaWYg
KCFyZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8v
IFdlIG9ubHkgaGF2ZSB0byBpc3N1ZSBhIHJlcGFpbnQgaW4gdGhpcyByZWdpb24gaWYgdGhlIHJl
Z2lvbiByZWN0IGludGVyc2VjdHMgdGhlIHJlcGFpbnQgcmVjdC4KICAgICAgICAgTGF5b3V0UmVj
dCBmbGlwcGVkUmVnaW9uUmVjdChyZWdpb24tPnJlZ2lvblJlY3QoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAwN2ZmY2QxLi5lMTFiMWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTMyLDYg
KzMyLDcgQEAKIAogCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMzksOSAr
NDAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJGbG93VGhyZWFk
OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiAKK3R5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVuZGVyRmxvd1RocmVhZCo+IFJlbmRlckZsb3dUaHJlYWRMaXN0OwordHlwZWRl
ZiBIYXNoQ291bnRlZFNldDxSZW5kZXJGbG93VGhyZWFkKj4gUmVuZGVyRmxvd1RocmVhZENvdW50
ZWRTZXQ7CiB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlclJlZ2lvbio+IFJlbmRlclJlZ2lvbkxp
c3Q7CiAKIC8vIFJlbmRlckZsb3dUaHJlYWQgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0aGUgcmVu
ZGVyIG9iamVjdHMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBhCkBAIC04OCwxNiArOTIsMzQgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKKyAgICB2b2lkIHB1c2hEZXBlbmRlbmNpZXMoUmVuZGVy
Rmxvd1RocmVhZExpc3QmKTsKKwogICAgIHZvaWQgcmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhj
b25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUpOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJGbG93VGhy
ZWFkIjsgfQogCisgICAgYm9vbCBkZXBlbmRzT24oUmVuZGVyRmxvd1RocmVhZCogb3RoZXJSZW5k
ZXJGbG93VGhyZWFkKSBjb25zdDsKKyAgICB2b2lkIGFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQo
UmVuZGVyRmxvd1RocmVhZCopOworICAgIHZvaWQgcmVtb3ZlRGVwZW5kZW5jeU9uRmxvd1RocmVh
ZChSZW5kZXJGbG93VGhyZWFkKik7CisgICAgdm9pZCBjaGVja0ludmFsaWRSZWdpb25zKCk7CisK
ICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlck9iamVjdCo+IEZsb3dUaHJlYWRDaGlsZExp
c3Q7CiAgICAgRmxvd1RocmVhZENoaWxkTGlzdCBtX2Zsb3dUaHJlYWRDaGlsZExpc3Q7CiAKICAg
ICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwogICAgIFJlbmRlclJlZ2lvbkxpc3QgbV9yZWdp
b25MaXN0OworCisgICAgLy8gT2JzZXJ2ZXIgZmxvdyB0aHJlYWRzIGhhdmUgaW52YWxpZCByZWdp
b25zIHRoYXQgZGVwZW5kIG9uIHRoZSBzdGF0ZSBvZiB0aGlzIHRocmVhZAorICAgIC8vIHRvIHJl
LXZhbGlkYXRlIHRoZWlyIHJlZ2lvbnMuIEtlZXBpbmcgYSBzZXQgb2Ygb2JzZXJ2ZXIgdGhyZWFk
cyBtYWtlIGl0IGVhc3kKKyAgICAvLyB0byBub3RpZnkgdGhlbSB3aGVuIGEgcmVnaW9uIHdhcyBy
ZW1vdmVkIGZyb20gdGhpcyBmbG93LgorICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0IG1f
b2JzZXJ2ZXJUaHJlYWRzU2V0OworCisgICAgLy8gU29tZSB0aHJlYWRzIG5lZWQgdG8gaGF2ZSBh
IGNvbXBsZXRlIGxheW91dCBiZWZvcmUgd2UgbGF5b3V0IHRoaXMgZmxvdy4KKyAgICAvLyBUaGF0
J3MgYmVjYXVzZSB0aGV5IGNvbnRhaW4gYSBSZW5kZXJSZWdpb24gdGhhdCBzaG91bGQgZGlzcGxh
eSB0aGlzIHRocmVhZC4gVGhlIHNldCBtYWtlcyBpdAorICAgIC8vIGVhc3kgdG8gc29ydCB0aGUg
b3JkZXIgb2YgdGhyZWFkcyBsYXlvdXQuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQg
bV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0OworCiAgICAgYm9vbCBtX3JlZ2lvbnNJbnZhbGlkYXRl
ZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3RDaGlsZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENo
aWxkTGlzdC5jcHAKaW5kZXggZTY3MjlmYS4uYjRiOWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKKyNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTEwMSw2ICsxMDIsOSBAQCBSZW5kZXJPYmplY3Qq
IFJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVtb3ZlQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3du
ZXIsIFJlbmRlcgogICAgICAgICBpZiAob2xkQ2hpbGQtPmlzUG9zaXRpb25lZCgpICYmIG93bmVy
LT5jaGlsZHJlbklubGluZSgpKQogICAgICAgICAgICAgb3duZXItPmRpcnR5TGluZXNGcm9tQ2hh
bmdlZENoaWxkKG9sZENoaWxkKTsKIAorICAgICAgICBpZiAob2xkQ2hpbGQtPmlzUmVuZGVyUmVn
aW9uKCkpCisgICAgICAgICAgICB0b1JlbmRlclJlZ2lvbihvbGRDaGlsZCktPmRldHRhY2hSZWdp
b24oKTsKKwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIC8vIFVwZGF0ZSBjYWNoZWQgYm91bmRh
cmllcyBpbiBTVkcgcmVuZGVyZXJzLCBpZiBhIGNoaWxkIGlzIHJlbW92ZWQuCiAgICAgICAgIG93
bmVyLT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsKQEAgLTE3Nyw2ICsxODEsOSBAQCB2b2lk
IFJlbmRlck9iamVjdENoaWxkTGlzdDo6YXBwZW5kQ2hpbGROb2RlKFJlbmRlck9iamVjdCogb3du
ZXIsIFJlbmRlck9iamVjdCogbgogCiAgICAgICAgIGlmICghbmV3Q2hpbGQtPmlzRmxvYXRpbmdP
clBvc2l0aW9uZWQoKSAmJiBvd25lci0+Y2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgICAgIG93
bmVyLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChuZXdDaGlsZCk7CisKKyAgICAgICAgaWYg
KG5ld0NoaWxkLT5pc1JlbmRlclJlZ2lvbigpKQorICAgICAgICAgICAgdG9SZW5kZXJSZWdpb24o
bmV3Q2hpbGQpLT5hdHRhY2hSZWdpb24oKTsKICAgICB9CiAgICAgUmVuZGVyQ291bnRlcjo6cmVu
ZGVyZXJTdWJ0cmVlQXR0YWNoZWQobmV3Q2hpbGQpOwogICAgIFJlbmRlclF1b3RlOjpyZW5kZXJl
clN1YnRyZWVBdHRhY2hlZChuZXdDaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCmluZGV4IDczMzc2NTcuLjZiM2JiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC00MiwyMCArNDIsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oTm9kZSogbm9kZSwgUmVuZGVyRmxv
d1RocmVhZCogZmxvd1RocmVhZCkKICAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNpemUo
KSkKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQorICAgICwgbV9wYXJlbnRGbG93VGhy
ZWFkKDApCisgICAgLCBtX2lzVmFsaWQoZmFsc2UpCiB7CiB9CiAKIFJlbmRlclJlZ2lvbjo6flJl
bmRlclJlZ2lvbigpCiB7Ci0gICAgaWYgKG1fZmxvd1RocmVhZCAmJiB2aWV3KCkpCi0gICAgICAg
IG1fZmxvd1RocmVhZC0+cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCh0aGlzKTsKLSAgICBtX2Zsb3dU
aHJlYWQgPSAwOwogfQogCiB2b2lkIFJlbmRlclJlZ2lvbjo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIC8v
IERlbGVnYXRlIHBhaW50aW5nIG9mIGNvbnRlbnQgaW4gcmVnaW9uIHRvIFJlbmRlckZsb3dUaHJl
YWQuCi0gICAgaWYgKCFtX2Zsb3dUaHJlYWQpCisgICAgaWYgKCFtX2Zsb3dUaHJlYWQgfHwgIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZmxvd1RocmVhZC0+cGFpbnRJbnRvUmVn
aW9uKHBhaW50SW5mbywgcmVnaW9uUmVjdCgpLCBMYXlvdXRQb2ludChwYWludE9mZnNldC54KCkg
KyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBwYWludE9mZnNldC55KCkgKyBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSkpOwogfQpAQCAtNjMsNiArNjIsOSBAQCB2b2lkIFJlbmRlclJl
Z2lvbjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50TwogLy8gSGl0IFRlc3RpbmcKIGJvb2wgUmVuZGVyUmVnaW9uOjpub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGFjdGlvbikKIHsKKyAgICBpZiAoIWlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRM
b2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKIAogICAgIC8vIENoZWNr
IG91ciBib3VuZHMgbmV4dC4gRm9yIHRoaXMgcHVycG9zZSBhbHdheXMgYXNzdW1lIHRoYXQgd2Ug
Y2FuIG9ubHkgYmUgaGl0IGluIHRoZQpAQCAtODAsMTQgKzgyLDM2IEBAIGJvb2wgUmVuZGVyUmVn
aW9uOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclJlZ2lvbjo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKK3ZvaWQgUmVuZGVyUmVnaW9uOjphdHRhY2hSZWdpb24oKQogewotICAgIFJl
bmRlclJlcGxhY2VkOjpzdHlsZURpZENoYW5nZShkaWZmZXJlbmNlLCBvbGRTdHlsZSk7CisgICAg
aWYgKCFtX2Zsb3dUaHJlYWQpCisgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRoaXMgbmVlZHMg
dG8gYmUgZG9uZSBoZXJlIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLCBiZWNhdXNlIFJlbmRl
ckZsb3dUaHJlYWQgCi0gICAgLy8gdXNlcyB0aGUgc3R5bGUoKSBwcm9wZXJ0eSB3aGljaCBpcyBu
b3QgeWV0IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KLSAgICBpZiAoIW9sZFN0eWxl
ICYmIG1fZmxvd1RocmVhZCkKLSAgICAgICAgbV9mbG93VGhyZWFkLT5hZGRSZWdpb25Ub1RocmVh
ZCh0aGlzKTsKKyAgICAvLyBCeSBub3cgdGhlIGZsb3cgdGhyZWFkIHNob3VsZCBhbHJlYWR5IGJl
IGFkZGVkIHRvIHRoZSByZW5kZXJpbmcgdHJlZSwKKyAgICAvLyBzbyB3ZSBnbyB1cCB0aGUgcmVu
ZGVyaW5nIHBhcmVudHMgYW5kIGNoZWNrIHRoYXQgdGhpcyByZWdpb24gaXMgbm90IHBhcnQgb2Yg
dGhlIHNhbWUKKyAgICAvLyBmbG93IHRoYXQgaXQgYWN0dWFsbHkgbmVlZHMgdG8gZGlzcGxheS4g
SXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLgorICAgIFJlbmRlck9iamVjdCog
cGFyZW50T2JqZWN0ID0gcGFyZW50KCk7CisgICAgbV9wYXJlbnRGbG93VGhyZWFkID0gMDsKKyAg
ICBmb3IgKCA7IHBhcmVudE9iamVjdDsgcGFyZW50T2JqZWN0ID0gcGFyZW50T2JqZWN0LT5wYXJl
bnQoKSkgeworICAgICAgICBpZiAocGFyZW50T2JqZWN0LT5pc1JlbmRlckZsb3dUaHJlYWQoKSkg
eworICAgICAgICAgICAgbV9wYXJlbnRGbG93VGhyZWFkID0gdG9SZW5kZXJGbG93VGhyZWFkKHBh
cmVudE9iamVjdCk7CisgICAgICAgICAgICAvLyBEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgYSBy
ZWdpb24gdGhhdCBsaW5rcyBhIGZsb3cgd2l0aCBpdHNlbGYuIFRoZSBkZXBlbmRlbmN5CisgICAg
ICAgICAgICAvLyBjYW5ub3QgY2hhbmdlLCBzbyBpdCBpcyBub3Qgd29ydGggYWRkaW5nIGl0IHRv
IHRoZSBsaXN0LgorICAgICAgICAgICAgaWYgKG1fZmxvd1RocmVhZCA9PSBtX3BhcmVudEZsb3dU
aHJlYWQpIHsKKyAgICAgICAgICAgICAgICBtX2Zsb3dUaHJlYWQgPSAwOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgbV9mbG93VGhyZWFkLT5hZGRSZWdpb25Ub1RocmVhZCh0aGlzKTsKK30K
Kwordm9pZCBSZW5kZXJSZWdpb246OmRldHRhY2hSZWdpb24oKQoreworICAgIGlmIChtX2Zsb3dU
aHJlYWQpCisgICAgICAgIG1fZmxvd1RocmVhZC0+cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCh0aGlz
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5oCmluZGV4IGZjZThmYTguLmVkNjMyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTQ5LDEzICs0OSwyNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRSZWdpb25SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWdpb25SZWN0ID0gcmVj
dDsgfQogICAgIEludFJlY3QgcmVnaW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uUmVj
dDsgfQogCisgICAgdm9pZCBhdHRhY2hSZWdpb24oKTsKKyAgICB2b2lkIGRldHRhY2hSZWdpb24o
KTsKKworICAgIFJlbmRlckZsb3dUaHJlYWQqIHBhcmVudEZsb3dUaHJlYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudEZsb3dUaHJlYWQ7IH0KKworICAgIC8vIFZhbGlkIHJlZ2lvbnMgZG8gbm90
IGNyZWF0ZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMgd2l0aCBvdGhlciBmbG93cy4KKyAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KKyAgICB2b2lkIHNldElzVmFs
aWQoYm9vbCB2YWxpZCkgeyBtX2lzVmFsaWQgPSB2YWxpZDsgfQorCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJSZWdp
b24iOyB9CiAKLSAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKLQogICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fZmxvd1Ro
cmVhZDsKKworICAgIC8vIElmIHRoaXMgUmVuZGVyUmVnaW9uIGlzIGRpc3BsYXllZCBhcyBwYXJ0
IG9mIGFub3RoZXIgZmxvdywKKyAgICAvLyB3ZSBuZWVkIHRvIGNyZWF0ZSBhIGRlcGVuZGVuY3kg
dHJlZSwgc28gdGhhdCBsYXlvdXQgb2YgdGhlCisgICAgLy8gcmVnaW9ucyBpcyBhbHdheXMgZG9u
ZSBiZWZvcmUgdGhlIHJlZ2lvbnMgdGhlbXNlbHZlcy4KKyAgICBSZW5kZXJGbG93VGhyZWFkKiBt
X3BhcmVudEZsb3dUaHJlYWQ7CiAgICAgSW50UmVjdCBtX3JlZ2lvblJlY3Q7CisKKyAgICBib29s
IG1faXNWYWxpZDsKIH07CiAKIGlubGluZSBSZW5kZXJSZWdpb24qIHRvUmVuZGVyUmVnaW9uKFJl
bmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCmluZGV4IGZkZDc5NGIuLjViMjliYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY0Nyw2ICs2NDcsNTEgQEAgc3Rh
dGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAgICAgICB3
cml0ZSh0cywgKmwucmVuZGVyZXIoKSwgaW5kZW50ICsgMSwgYmVoYXZpb3IpOwogfQogCitzdGF0
aWMgdm9pZCB3cml0ZVJlbmRlckZsb3dUaHJlYWRzKFRleHRTdHJlYW0mIHRzLCBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0LCBpbnQgaW5kZW50LCBSZW5kZXJB
c1RleHRCZWhhdmlvciBiZWhhdmlvcikKK3sKKyAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkTGlz
dCogbGlzdCA9IHJlbmRlclZpZXctPnJlbmRlckZsb3dUaHJlYWRMaXN0KCk7CisgICAgaWYgKCFs
aXN0IHx8IGxpc3QtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd3JpdGVJbmRl
bnQodHMsIGluZGVudCk7CisgICAgdHMgPDwgIkZsb3cgVGhyZWFkc1xuIjsKKworICAgIGZvciAo
UmVuZGVyRmxvd1RocmVhZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBsaXN0LT5iZWdpbigp
OyBpdGVyICE9IGxpc3QtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgY29uc3QgUmVuZGVyRmxv
d1RocmVhZCogcmVuZGVyRmxvd1RocmVhZCA9ICppdGVyOworCisgICAgICAgIHdyaXRlSW5kZW50
KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIlRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
IiA8PCByZW5kZXJGbG93VGhyZWFkLT5mbG93VGhyZWFkKCkgPDwgIidcbiI7CisKKyAgICAgICAg
UmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyRmxvd1RocmVhZC0+bGF5ZXIoKTsKKyAgICAgICAg
d3JpdGVMYXllcnModHMsIHJvb3RMYXllciwgbGF5ZXIsIHBhaW50UmVjdCwgaW5kZW50ICsgMiwg
YmVoYXZpb3IpOworCisgICAgICAgIC8vIERpc3BsYXkgdGhlIHJlbmRlciByZWdpb25zIGF0dGFj
aGVkIHRvIHRoaXMgZmxvdyB0aHJlYWQKKyAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYg
Zmxvd1RocmVhZFJlZ2lvbkxpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0
KCk7CisgICAgICAgIGlmICghZmxvd1RocmVhZFJlZ2lvbkxpc3QuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgICAgICB0cyA8PCAi
UmVnaW9ucyBmb3IgZmxvdyAnIjw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAi
J1xuIjsKKyAgICAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
aXRSUiA9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVhZFJl
Z2lvbkxpc3QuZW5kKCk7ICsraXRSUikgeworICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiog
cmVuZGVyUmVnaW9uID0gKml0UlI7CisgICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGlu
ZGVudCArIDIpOworICAgICAgICAgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdpb24iOworICAgICAg
ICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPm5vZGUoKSkgeworICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVuZGVyUmVnaW9uLT5ub2RlKCkpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIXRhZ05hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVn
aW9uLT5ub2RlKCktPmhhc0lEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVuZGVyUmVnaW9uLT5ub2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiAjIiA8PCBlbGVtZW50LT5pZEZvclN0eWxl
UmVzb2x1dGlvbigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICAgICAgICAgIHRzIDw8ICIgaW52YWxpZCI7CisgICAgICAgICAgICAgICAgdHMgPDwgIiB3aXRo
IGluZGV4ICIgPDwgcmVuZGVyUmVnaW9uLT5zdHlsZSgpLT5yZWdpb25JbmRleCgpIDw8ICJcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIHdyaXRl
TGF5ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5k
ZXJMYXllciogbCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50
UmVjdCwgaW50IGluZGVudCwgUmVuZGVyQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpCiB7CkBAIC03
MTAsNDIgKzc1NSw5IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllCiAgICAgCiAgICAgLy8gQWx0
b3VnaCB0aGUgUmVuZGVyRmxvd1RocmVhZCByZXF1aXJlcyBhIGxheWVyLCBpdCBpcyBub3QgY29s
bGVjdGVkIGJ5IGl0cyBwYXJlbnQsCiAgICAgLy8gc28gd2UgaGF2ZSB0byB0cmVhdCBpdCBhcyBh
IHNwZWNpYWwgY2FzZS4KLSAgICBib29sIGZpcnN0UmVuZGVyRmxvd1RocmVhZCA9IHRydWU7Ci0g
ICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbC0+cmVuZGVyZXIoKS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hp
bGQtPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7Ci0gICAgICAgICAgICBpZiAoZmlyc3RSZW5kZXJG
bG93VGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZmlyc3RSZW5kZXJGbG93VGhyZWFkID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7Ci0gICAgICAgICAg
ICAgICAgdHMgPDwgIkZsb3cgVGhyZWFkc1xuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIHJlbmRlckZsb3dUaHJlYWQgPSB0b1JlbmRlckZsb3dU
aHJlYWQoY2hpbGQpOwotICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwot
ICAgICAgICAgICAgdHMgPDwgIlRocmVhZCB3aXRoIGZsb3ctbmFtZSAnIiA8PCByZW5kZXJGbG93
VGhyZWFkLT5mbG93VGhyZWFkKCkgPDwgIidcbiI7Ci0gICAgICAgICAgICBSZW5kZXJMYXllciog
bGF5ZXIgPSByZW5kZXJGbG93VGhyZWFkLT5sYXllcigpOwotICAgICAgICAgICAgd3JpdGVMYXll
cnModHMsIHJvb3RMYXllciwgbGF5ZXIsIHBhaW50RGlydHlSZWN0LCBpbmRlbnQgKyAyLCBiZWhh
dmlvcik7Ci0KLSAgICAgICAgICAgIC8vIERpc3BsYXkgdGhlIHJlbmRlciByZWdpb25zIGF0dGFj
aGVkIHRvIHRoaXMgZmxvdyB0aHJlYWQKLSAgICAgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxp
c3QmIGZsb3dUaHJlYWRSZWdpb25MaXN0ID0gcmVuZGVyRmxvd1RocmVhZC0+cmVuZGVyUmVnaW9u
TGlzdCgpOwotICAgICAgICAgICAgaWYgKCFmbG93VGhyZWFkUmVnaW9uTGlzdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAg
ICAgICAgICAgdHMgPDwgIlJlZ2lvbnMgZm9yIGZsb3cgJyI8PCByZW5kZXJGbG93VGhyZWFkLT5m
bG93VGhyZWFkKCkgPDwgIidcbiI7Ci0gICAgICAgICAgICAgICAgZm9yIChSZW5kZXJSZWdpb25M
aXN0Ojpjb25zdF9pdGVyYXRvciBpdFJSID0gZmxvd1RocmVhZFJlZ2lvbkxpc3QuYmVnaW4oKTsg
aXRSUiAhPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5lbmQoKTsgKytpdFJSKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0UlI7Ci0gICAgICAgICAg
ICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAyKTsKLSAgICAgICAgICAgICAgICAg
ICAgdHMgPDwgIlJlbmRlclJlZ2lvbiI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJS
ZWdpb24tPm5vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhZ05hbWUg
PSBnZXRUYWdOYW1lKHJlbmRlclJlZ2lvbi0+bm9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChyZW5kZXJSZWdpb24tPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlclJlZ2lvbi0+
bm9kZSgpLT5oYXNJRCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJSZWdpb24tPm5vZGUoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiAjIiA8PCBlbGVtZW50LT5pZEZvclN0
eWxlUmVzb2x1dGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRzIDw8ICIgd2l0aCBpbmRleCAiIDw8IHJl
bmRlclJlZ2lvbi0+c3R5bGUoKS0+cmVnaW9uSW5kZXgoKSA8PCAiXG4iOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmIChsLT5yZW5kZXJlcigpLT5p
c1JlbmRlclZpZXcoKSkgeworICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdG9SZW5k
ZXJWaWV3KGwtPnJlbmRlcmVyKCkpOworICAgICAgICB3cml0ZVJlbmRlckZsb3dUaHJlYWRzKHRz
LCByZW5kZXJWaWV3LCByb290TGF5ZXIsIHBhaW50RGlydHlSZWN0LCBpbmRlbnQsIGJlaGF2aW9y
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRl
eCAxMzc0OWZiLi5hY2FjZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoTm9kZSogbm9kZSwg
RnJhbWVWaWV3KiB2aWV3KQogICAgICwgbV9tYXhpbWFsT3V0bGluZVNpemUoMCkKICAgICAsIG1f
cGFnZUxvZ2ljYWxIZWlnaHQoMCkKICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZh
bHNlKQotICAgICwgbV9oYXNSZW5kZXJGbG93VGhyZWFkcyhmYWxzZSkKKyAgICAsIG1faXNSZW5k
ZXJGbG93VGhyZWFkT3JkZXJEaXJ0eShmYWxzZSkKICAgICAsIG1fbGF5b3V0U3RhdGUoMCkKICAg
ICAsIG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQoMCkKIHsKQEAgLTEyOCw4ICsxMjgsMTEgQEAg
dm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgbV9sYXlvdXRTdGF0ZSA9ICZzdGF0ZTsKIAotICAgIGlmIChuZWVkc0xh
eW91dCgpKQorICAgIGlmIChuZWVkc0xheW91dCgpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrOjps
YXlvdXQoKTsKKyAgICAgICAgaWYgKGhhc1JlbmRlckZsb3dUaHJlYWRzKCkpCisgICAgICAgICAg
ICBsYXlvdXRSZW5kZXJGbG93VGhyZWFkcygpOworICAgIH0KIAogICAgIEFTU0VSVChsYXlvdXRE
ZWx0YSgpID09IExheW91dFNpemUoKSk7CiAgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNhYmxl
Q291bnQgPT0gMCk7CkBAIC04MDgsOSArODExLDExIEBAIHZvaWQgUmVuZGVyVmlldzo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
CiAKIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlclZpZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRoTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpCiB7Ci0gICAgZm9yIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gZmlyc3RDaGlsZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJl
ci0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyRmxvd1Ro
cmVhZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSB0
b1JlbmRlckZsb3dUaHJlYWQocmVuZGVyZXIpOworICAgIGlmICghbV9yZW5kZXJGbG93VGhyZWFk
TGlzdCkKKyAgICAgICAgbV9yZW5kZXJGbG93VGhyZWFkTGlzdCA9IGFkb3B0UHRyKG5ldyBSZW5k
ZXJGbG93VGhyZWFkTGlzdCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChSZW5kZXJGbG93
VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVuZGVyRmxvd1RocmVhZExpc3QtPmJlZ2lu
KCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+ZW5kKCk7ICsraXRlcikgeworICAg
ICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRlcmVyID0gKml0ZXI7CiAgICAgICAg
ICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93VGhyZWFkKCkgPT0gZmxvd1RocmVhZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmxvd1JlbmRlcmVyOwogICAgICAgICB9CkBAIC04MTksOCArODI0
LDM1IEBAIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlclZpZXc6OnJlbmRlckZsb3dUaHJlYWRXaXRo
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxv
d1JlbmRlcmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50
KCksIGZsb3dUaHJlYWQpOwogICAgIGZsb3dSZW5kZXJlci0+c2V0U3R5bGUoUmVuZGVyRmxvd1Ro
cmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKHN0eWxlKCkpKTsKICAgICBhZGRDaGlsZChmbG93
UmVuZGVyZXIpOwotICAgIG1faGFzUmVuZGVyRmxvd1RocmVhZHMgPSB0cnVlOworICAgIAorICAg
IG1fcmVuZGVyRmxvd1RocmVhZExpc3QtPmFkZChmbG93UmVuZGVyZXIpOworICAgIHNldElzUmVu
ZGVyRmxvd1RocmVhZE9yZGVyRGlydHkodHJ1ZSk7CisKICAgICByZXR1cm4gZmxvd1JlbmRlcmVy
OwogfQogCit2b2lkIFJlbmRlclZpZXc6OmxheW91dFJlbmRlckZsb3dUaHJlYWRzKCkKK3sKKyAg
ICBBU1NFUlQobV9yZW5kZXJGbG93VGhyZWFkTGlzdCk7CisKKyAgICBpZiAoaXNSZW5kZXJGbG93
VGhyZWFkT3JkZXJEaXJ0eSgpKSB7CisgICAgICAgIC8vIEFycmFuZ2UgdGhlIHRocmVhZCBsaXN0
IGFjY29yZGluZyB0byBkZXBlbmRlbmNpZXMuCisgICAgICAgIFJlbmRlckZsb3dUaHJlYWRMaXN0
IHNvcnRlZExpc3Q7CisgICAgICAgIGZvciAoUmVuZGVyRmxvd1RocmVhZExpc3Q6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5iZWdpbigpOyBpdGVyICE9IG1fcmVuZGVy
Rmxvd1RocmVhZExpc3QtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dSZW5kZXJlciA9ICppdGVyOworICAgICAgICAgICAgaWYgKHNvcnRlZExpc3Qu
Y29udGFpbnMoZmxvd1JlbmRlcmVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGZsb3dSZW5kZXJlci0+cHVzaERlcGVuZGVuY2llcyhzb3J0ZWRMaXN0KTsKKyAgICAg
ICAgICAgIHNvcnRlZExpc3QuYWRkKGZsb3dSZW5kZXJlcik7CisgICAgICAgIH0KKyAgICAgICAg
bV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+c3dhcChzb3J0ZWRMaXN0KTsKKyAgICAgICAgc2V0SXNS
ZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eShmYWxzZSk7CisgICAgfQorCisgICAgZm9yIChSZW5k
ZXJGbG93VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVuZGVyRmxvd1RocmVhZExpc3Qt
PmJlZ2luKCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+ZW5kKCk7ICsraXRlcikg
eworICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKKyAgICAg
ICAgZmxvd1JlbmRlcmVyLT5sYXlvdXRJZk5lZWRlZCgpOworICAgIH0KK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggN2Q4
NDg4Yy4uNzVjNmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3Rh
dGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzYsNiArMzcsOCBAQCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBSZW5kZXJMYXllckNvbXBv
c2l0b3I7CiAjZW5kaWYKIAordHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJGbG93VGhyZWFkKj4g
UmVuZGVyRmxvd1RocmVhZExpc3Q7CisKIGNsYXNzIFJlbmRlclZpZXcgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgogICAgIFJlbmRlclZpZXcoTm9kZSosIEZyYW1lVmlldyopOwpAQCAt
MTY3LDcgKzE3MCwxNiBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBkb2N1bWVudFJlY3QoKSBjb25z
dDsKIAogICAgIFJlbmRlckZsb3dUaHJlYWQqIHJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpOwotICAgIGJvb2wgaGFzUmVuZGVyRmxvd1RocmVh
ZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1JlbmRlckZsb3dUaHJlYWRzOyB9CisgICAgYm9vbCBo
YXNSZW5kZXJGbG93VGhyZWFkcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyRmxvd1RocmVhZExp
c3QgJiYgIW1fcmVuZGVyRmxvd1RocmVhZExpc3QtPmlzRW1wdHkoKTsgfQorICAgIHZvaWQgbGF5
b3V0UmVuZGVyRmxvd1RocmVhZHMoKTsKKyAgICBib29sIGlzUmVuZGVyRmxvd1RocmVhZE9yZGVy
RGlydHkoKSBjb25zdCB7IHJldHVybiBtX2lzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHk7IH0K
KyAgICB2b2lkIHNldElzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHkoYm9vbCBkaXJ0eSkKKyAg
ICB7CisgICAgICAgIG1faXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eSA9IGRpcnR5OworICAg
ICAgICBpZiAoZGlydHkpCisgICAgICAgICAgICBzZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICB9
CisgICAgY29uc3QgUmVuZGVyRmxvd1RocmVhZExpc3QqIHJlbmRlckZsb3dUaHJlYWRMaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC5nZXQoKTsgfQogCiAgICAgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSk7CiAgICAgCkBAIC0yNDYsMTIgKzI1OCwxMyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fcGFnZUxvZ2ljYWxIZWlnaHQ7CiAgICAgYm9vbCBtX3BhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZDsKLSAgICBib29sIG1faGFzUmVuZGVyRmxvd1RocmVhZHM7CisgICAgYm9v
bCBtX2lzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHk7CiAgICAgTGF5b3V0U3RhdGUqIG1fbGF5
b3V0U3RhdGU7CiAgICAgdW5zaWduZWQgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudDsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgT3duUHRyPFJlbmRlckxheWVyQ29tcG9z
aXRvcj4gbV9jb21wb3NpdG9yOwogI2VuZGlmCisgICAgT3duUHRyPFJlbmRlckZsb3dUaHJlYWRM
aXN0PiBtX3JlbmRlckZsb3dUaHJlYWRMaXN0OwogfTsKIAogaW5saW5lIFJlbmRlclZpZXcqIHRv
UmVuZGVyVmlldyhSZW5kZXJPYmplY3QqIG9iamVjdCkK
</data>
<flag name="review"
          id="99815"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="99816"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104096</attachid>
            <date>2011-08-16 14:59:18 -0700</date>
            <delta_ts>2011-08-16 22:01:55 -0700</delta_ts>
            <desc>Patch V4</desc>
            <filename>bug66142_3.patch</filename>
            <type>text/plain</type>
            <size>35084</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZDEwZmNiLi4xNGZhZTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MTYgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBSZW5kZXJSZWdpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVu
ZGVyRmxvd1RocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjYxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
ZHluYW1pYy1yZW1vdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dz
LWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWw6IEFkZGVkLgorCiAyMDEx
LTA4LTE2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyNTQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFt
aWMtcmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44ZjQwMmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCitG
bG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycKKyAgVGhyZWFkIHdp
dGggZmxvdy1uYW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCisgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRo
IGluZGV4IDIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QicKKyAgUmVnaW9ucyBmb3Ig
ZmxvdyAnZmxvd0InCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1y
ZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5
bmFtaWMtcmVtb3ZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFl
NmYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBF
IEhUTUw+CisKKzxzdHlsZT4KKy5mbG93QSB7IC13ZWJraXQtZmxvdzogJ2Zsb3dBJzsgfQorLmZs
b3dCIHsgLXdlYmtpdC1mbG93OiAnZmxvd0InOyB9CisuZmxvd0MgeyAtd2Via2l0LWZsb3c6ICdm
bG93Qyc7IH0KKworLnJlZ2lvbkZsb3dBIHsgY29udGVudDogLXdlYmtpdC1mcm9tLWZsb3coJ2Zs
b3dBJyk7IH0KKy5yZWdpb25GbG93QiB7IGNvbnRlbnQ6IC13ZWJraXQtZnJvbS1mbG93KCdmbG93
QicpOyB9CisucmVnaW9uRmxvd0MgeyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxvdygnZmxvd0Mn
KTsgfQorCisuaW5kZXgxIHsgLXdlYmtpdC1jb250ZW50LW9yZGVyOiAxOyB9CisuaW5kZXgyIHsg
LXdlYmtpdC1jb250ZW50LW9yZGVyOiAyOyB9CisuaW5kZXgzIHsgLXdlYmtpdC1jb250ZW50LW9y
ZGVyOiAzOyB9Cis8L3N0eWxlPgorCis8ZGl2IGNsYXNzPSJmbG93QSI+CisgICAgPGRpdiBjbGFz
cz0icmVnaW9uRmxvd0IgaW5kZXgxIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbG93
QiI+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0MgaW5kZXgxIj48L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJmbG93QyI+CisgICAgPCEtLSBUaGUgZm9sbG93aW5nIHJlZ2lvbiB3aWxs
IGluaXRpYWxseSBiZSBpbnZhbGlkLiBSZW1vdmluZyByZWdpb25GbG93QyBzaG91bGQgbWFrZSBp
dCB2YWxpZCBhZ2Fpbi4gLS0+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0EgaW5kZXgxIj48
L2Rpdj4KKzwvZGl2PgorCis8IS0tIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmxvd3MuIElu
IHRoZSBmdXR1cmUgd2UgbWlnaHQgYXZvaWQgY3JlYXRpbmcgZmxvd3MgaWYgdGhlcmUgYXJlIG5v
IHJlYWNoYWJsZSByZWdpb25zLiAtLT4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MiI+
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7ICAgIC8vIGZv
cmNlIGxheW91dAorICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
InJlZ2lvbkZsb3dDIilbMF07CisgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7Cis8
L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjU0ODZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHgxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAg
IFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAs
MCkgc2l6ZSAweDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dC
JworICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gaW52
YWxpZCB3aXRoIGluZGV4IDEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAyCisg
IFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dD
JworICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4IDEKKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gd2l0aCBpbmRleCAzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCisgIFJl
Z2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4
IDIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MjkyMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cu
aHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTD4KKworPHN0eWxlPgorLmZsb3dB
IHsgLXdlYmtpdC1mbG93OiAnZmxvd0EnOyB9CisuZmxvd0IgeyAtd2Via2l0LWZsb3c6ICdmbG93
Qic7IH0KKy5mbG93QyB7IC13ZWJraXQtZmxvdzogJ2Zsb3dDJzsgfQorCisucmVnaW9uRmxvd0Eg
eyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxvdygnZmxvd0EnKTsgfQorLnJlZ2lvbkZsb3dCIHsg
Y29udGVudDogLXdlYmtpdC1mcm9tLWZsb3coJ2Zsb3dCJyk7IH0KKy5yZWdpb25GbG93QyB7IGNv
bnRlbnQ6IC13ZWJraXQtZnJvbS1mbG93KCdmbG93QycpOyB9CisKKy5pbmRleDEgeyAtd2Via2l0
LWNvbnRlbnQtb3JkZXI6IDE7IH0KKy5pbmRleDIgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDI7
IH0KKy5pbmRleDMgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDM7IH0KKzwvc3R5bGU+CisKKzxk
aXYgY2xhc3M9ImZsb3dBIj4KKyAgICA8IS0tIFRoZSBmb2xsb3dpbmcgcmVnaW9uIHNob3VsZCBi
ZSBpZ25vcmVkLiBEaXJlY3QgY2lyY3VsYXIgcmVmZXJlbmNlLiAtLT4KKyAgICA8ZGl2IGNsYXNz
PSJyZWdpb25GbG93QSBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImZsb3dC
Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QyBpbmRleDEiPjwvZGl2PgorICAgIDwhLS0g
VGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQuIERpcmVjdCBjaXJjdWxhciBy
ZWZlcmVuY2UuIC0tPgorICAgIDxkaXYgY2xhc3M9ImZsb3dDIHJlZ2lvbkZsb3dDIGluZGV4MiI+
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxvd0MiPgorICAgIDwhLS0gVGhlIGZvbGxv
d2luZyByZWdpb24gc2hvdWxkIGJlIGludmFsaWQuIENpcmN1bGFyIHJlZmVyZW5jZSB0aHJvdWdo
IGZsb3dCIHdoaWNoIGFscmVhZHkgaGFzIGNyZWF0ZWQgYSBsaW5rIHRvIHRoaXMgZmxvdworICAg
ICAgICAgdGhyb3VnaCB0aGUgInJlZ2lvbkZsb3dDIGluZGV4MSIgcmVnaW9uLiAtLT4KKyAgICA8
ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InJl
Z2lvbkZsb3dBIGluZGV4MiI+PC9kaXY+Cis8L2Rpdj4KKworPCEtLSBGb3JjZSB0aGUgY3JlYXRp
b24gb2YgdGhlIGZsb3dzLiBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IGF2b2lkIGNyZWF0aW5nIGZs
b3dzIGlmIHRoZXJlIGFyZSBubyByZWFjaGFibGUgcmVnaW9ucy4gLS0+Cis8ZGl2IGNsYXNzPSJy
ZWdpb25GbG93QSBpbmRleDMiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVnaW9uRmxvd0IgaW5kZXgy
Ij48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dDIGluZGV4MyI+PC9kaXY+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWFkNTYzZC4uMzMxMDRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEx
LTA4LTE2ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAg
ICBbQ1NTUmVnaW9uc10gUmVuZGVyUmVnaW9uIHNob3VsZCBub3QgcmVmZXJlbmNlIGEgcGFyZW50
IFJlbmRlckZsb3dUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MTQyCisKKyAgICAgICAgQWRkZWQgY29kZSB0aGF0IGNoZWNrcyB0aGUgcGFy
ZW50IFJlbmRlckZsb3dUaHJlYWQgb2YgYSBSZW5kZXJSZWdpb24gYW5kIGNyZWF0ZXMKKyAgICAg
ICAgYSBkZXBlbmRlbmN5IGZvciBpdHMgcmVmZXJlbmNlZCBSZW5kZXJGbG93VGhyZWFkIChmcm9t
IENTUyBzdHlsZSkuCisKKyAgICAgICAgVGhlcmUgYXJlIHR3byBjYXNlczoKKyAgICAgICAgMS4g
QSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxheSB0aGUgZmxvdyB0aHJlYWQgdGhhdCBsYWlk
IGl0IG91dC4gSW4gdGhpcyBjYXNlCisgICAgICAgIHRoZSByZWdpb24gd2lsbCBiZSBpZ25vcmVk
IGFuZCB3aWxsIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgZmxvdyB0aHJlYWRzIHJlZ2lvbnMgbGlz
dC4KKyAgICAgICAgMi4gQSBSZW5kZXJSZWdpb24gdHJpZXMgdG8gZGlzcGxheSBhIGZsb3cgdGhy
ZWFkIHRoYXQgY29udGFpbnMgYW5vdGhlciByZWdpb24gdGhhdAorICAgICAgICB0cmllcyB0byBk
aXNwbGF5IHRoZSBmaXJzdCByZWdpb24ncyBmbG93IHRocmVhZC4gVGhpcyBvbmUgY2FuIGJlIGdl
bmVyYWxpemVkIHdpdGggYW55CisgICAgICAgIG51bWJlciBvZiBpbnRlcm1lZGlhdGUgZmxvdyB0
aHJlYWRzLiBJbiB0aGlzIGNhc2UgdGhlIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBhbmQgb25seSB0
aGUKKyAgICAgICAgZmlyc3QgYWRkZWQgcmVnaW9uIHdpbGwgYWN0dWFsbHkgYmUgc2VsZWN0ZWQu
IFRoZSBvdGhlciByZWdpb24gd2lsbCBiZSBpZ25vcmVkLiBIb3dldmVyLAorICAgICAgICB3aGVu
IHRoZSByZWN1cnNpb24gaXMgcmVtb3ZlZCB0aGUgaW52YWxpZCByZWdpb25zIHdpbGwgYmUgcmVj
b3ZlcmVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3cu
aHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjpkZXBlbmRzT24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6YWRkUmVnaW9uVG9UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93
VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
b3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6cmVtb3ZlRGVwZW5kZW5jeU9uRmxvd1RocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0YW5nbGVJblJlZ2lvbnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RD
aGlsZExpc3Q6OnJlbW92ZUNoaWxkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246On5SZW5kZXJSZWdpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjphdHRhY2hSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
OjpkZXRhY2hSZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6cGFyZW50Rmxvd1RocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjpzZXRJc1ZhbGlkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlckZsb3dUaHJlYWRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpyZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVmlldzo6bGF5b3V0UmVuZGVyRmxvd1RocmVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpoYXNSZW5kZXJG
bG93VGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojppc1JlbmRlckZsb3dU
aHJlYWRPcmRlckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldElzUmVu
ZGVyRmxvd1RocmVhZE9yZGVyRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6
cmVuZGVyRmxvd1RocmVhZExpc3QpOgorCiAyMDExLTA4LTE2ICBBZGFtIFJvYmVuICA8YXJvYmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHBsYWNlaG9sZGVyIHRleHQgcmVtYWluIHZpc2li
bGUgdW50aWwgYSBjaGFyYWN0ZXIgaXMgdHlwZWQgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggYTQwNDFhNC4uZWJhZTY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMTQxLDYgKzMxNDEsOSBAQCBM
YXlvdXRVbml0IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVy
QmxvY2sqIHJvb3RCbG9jaywgTGF5bwogCiB2b2lkIFJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlv
bmVkT2JqZWN0KFJlbmRlckJveCogbykKIHsKKyAgICBpZiAoby0+aXNSZW5kZXJGbG93VGhyZWFk
KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICAvLyBDcmVhdGUgdGhlIGxpc3Qgb2Ygc3Bl
Y2lhbCBvYmplY3RzIGlmIHdlIGRvbid0IGFsZWFkeSBoYXZlIG9uZQogICAgIGlmICghbV9wb3Np
dGlvbmVkT2JqZWN0cykKICAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cyA9IGFkb3B0UHRyKG5l
dyBQb3NpdGlvbmVkT2JqZWN0c0xpc3RIYXNoU2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCAyZGNhNjM3Li5kOWI4ZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ4LDYgKzE0OSwyMyBAQCBzdGF0aWMgYm9vbCBjb21w
YXJlUmVuZGVyUmVnaW9ucyhjb25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBjb25zdCBS
ZW5kZXJSZQogICAgIHJldHVybiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9G
T0xMT1dJTkcpOwogfQogCitib29sIFJlbmRlckZsb3dUaHJlYWQ6OmRlcGVuZHNPbihSZW5kZXJG
bG93VGhyZWFkKiBvdGhlclJlbmRlckZsb3dUaHJlYWQpIGNvbnN0Cit7CisgICAgaWYgKG1fbGF5
b3V0QmVmb3JlVGhyZWFkc1NldC5jb250YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIHRoZSBtX2xh
eW91dEJlZm9yZVRocmVhZHNTZXQuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXJhdG9yID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCk7
CisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
bGF5b3V0QmVmb3JlVGhyZWFkc1NldC5lbmQoKTsKKyAgICBmb3IgKDsgaXRlcmF0b3IgIT0gZW5k
OyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIGJlZm9yZUZs
b3dUaHJlYWQgPSAoKml0ZXJhdG9yKS5maXJzdDsKKyAgICAgICAgaWYgKGJlZm9yZUZsb3dUaHJl
YWQtPmRlcGVuZHNPbihvdGhlclJlbmRlckZsb3dUaHJlYWQpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQogewog
ICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwpAQCAtMTYxLDYgKzE3OSwxOSBAQCB2b2lkIFJlbmRl
ckZsb3dUaHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9u
KQogICAgICAgICBtX3JlZ2lvbkxpc3QuaW5zZXJ0QmVmb3JlKGl0LCByZW5kZXJSZWdpb24pOwog
ICAgIH0KIAorICAgIEFTU0VSVCghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkpOworICAgIGlmIChy
ZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSkgeworICAgICAgICBpZiAocmVuZGVyUmVn
aW9uLT5wYXJlbnRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgeworICAgICAgICAgICAg
Ly8gUmVnaXN0ZXIgb3Vyc2VsZiB0byBnZXQgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc3RhdGUg
Y2hhbmdlcy4KKyAgICAgICAgICAgIHJlbmRlclJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5t
X29ic2VydmVyVGhyZWFkc1NldC5hZGQodGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlclJlZ2lvbi0+
cGFyZW50Rmxvd1RocmVhZCgpKTsKKyAgICB9CisKKyAgICByZW5kZXJSZWdpb24tPnNldElzVmFs
aWQodHJ1ZSk7CisKICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOwogfQogCkBAIC0xNjgsMTAgKzE5
OSw3OCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQoUmVu
ZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCiB7CiAgICAgQVNTRVJUKHJlbmRlclJlZ2lvbik7CiAg
ICAgbV9yZWdpb25MaXN0LnJlbW92ZShyZW5kZXJSZWdpb24pOworICAgIGlmIChyZW5kZXJSZWdp
b24tPnBhcmVudEZsb3dUaHJlYWQoKSkgeworICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNW
YWxpZCgpKSB7CisgICAgICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+
bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgLy8gTm8gbmVl
ZCB0byBpbnZhbGlkYXRlIHRoZSByZWdpb25zIHJlY3RhbmdsZXMuIFRoZSByZW1vdmVkIHJlZ2lv
bgorICAgICAgICAgICAgLy8gd2FzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuIEp1c3QgcmV0dXJu
IGhlcmUuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlRGVw
ZW5kZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7Cisg
ICAgfQogCiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIAordm9pZCBSZW5kZXJGbG93VGhy
ZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKCkKK3sKKyAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6
Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxp
c3QuZW5kKCk7ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVy
OworICAgICAgICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBp
cyBiZWNhdXNlIGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KKyAgICAgICAgQVNTRVJUKHJl
Z2lvbi0+aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpKTsKKyAgICAgICAg
aWYgKHJlZ2lvbi0+aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5kZXBl
bmRzT24odGhpcykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByZWdpb24tPnBh
cmVudEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAg
ICAgICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgp
KTsKKyAgICAgICAgcmVnaW9uLT5zZXRJc1ZhbGlkKHRydWUpOworICAgICAgICBpbnZhbGlkYXRl
UmVnaW9ucygpOworICAgIH0KKworICAgIGlmIChtX29ic2VydmVyVGhyZWFkc1NldC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGlmeSBhbGwgdGhlIGZsb3cgdGhyZWFk
cyB0aGF0IHdlcmUgZGVwZW5kZW50IG9uIHRoaXMgZmxvdy4KKworICAgIC8vIENyZWF0ZSBhIGNv
cHkgb2YgdGhlIGxpc3QgZmlyc3QuIFRoYXQncyBiZWNhdXNlIG9ic2VydmVycyBtaWdodCBjaGFu
Z2UgdGhlIGxpc3Qgd2hlbiBjYWxsaW5nIGNoZWNrSW52YWxpZFJlZ2lvbnMuCisgICAgVmVjdG9y
PFJlbmRlckZsb3dUaHJlYWQqPiBvYnNlcnZlcnM7CisgICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2
ZXJUaHJlYWRzU2V0LCBvYnNlcnZlcnMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
YnNlcnZlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IG9ic2VydmVycy5hdChpKTsKKyAgICAgICAgZmxvd1RocmVhZC0+Y2hlY2tJbnZhbGlk
UmVnaW9ucygpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGREZXBlbmRl
bmN5T25GbG93VGhyZWFkKFJlbmRlckZsb3dUaHJlYWQqIG90aGVyRmxvd1RocmVhZCkKK3sKKyAg
ICBzdGQ6OnBhaXI8UmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7Cisg
ICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGlt
ZSB3ZSBzZWUgdGhpcyBkZXBlbmRlbmN5LiBNYWtlIHN1cmUgd2UgcmVjYWxjdWxhdGUgYWxsIHRo
ZSBkZXBlbmRlbmNpZXMuCisgICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhyZWFkT3Jk
ZXJEaXJ0eSh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVtb3Zl
RGVwZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQp
Cit7CisgICAgYm9vbCByZW1vdmVkID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LnJlbW92ZShv
dGhlckZsb3dUaHJlYWQpOworICAgIGlmIChyZW1vdmVkKSB7CisgICAgICAgIGNoZWNrSW52YWxp
ZFJlZ2lvbnMoKTsKKyAgICAgICAgdmlldygpLT5zZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRp
cnR5KHRydWUpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpwdXNoRGVwZW5k
ZW5jaWVzKFJlbmRlckZsb3dUaHJlYWRMaXN0JiBsaXN0KQoreworICAgIGZvciAoUmVuZGVyRmxv
d1RocmVhZENvdW50ZWRTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX2xheW91dEJlZm9yZVRocmVhZHNT
ZXQuYmVnaW4oKTsgaXRlciAhPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuZW5kKCk7ICsraXRl
cikgeworICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gKCppdGVyKS5maXJz
dDsKKyAgICAgICAgaWYgKGxpc3QuY29udGFpbnMoZmxvd1RocmVhZCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgZmxvd1RocmVhZC0+cHVzaERlcGVuZGVuY2llcyhsaXN0KTsKKyAg
ICAgICAgbGlzdC5hZGQoZmxvd1RocmVhZCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OmxheW91dCgpCiB7CiAgICAgaWYgKG1fcmVnaW9uc0ludmFsaWRhdGVkKSB7CkBAIC0x
ODEsNiArMjgwLDkgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAg
ICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJl
Z2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAg
ICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogCisgICAgICAgICAgICAgICAgaWYg
KCFyZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAg
ICAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHJlZ2lvblJlY3Q7CkBAIC0xOTIsNyArMjk0LDcgQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0
ICs9IHJlZ2lvblJlY3Qud2lkdGgoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICByZWdpb24tPnNldFJlZ2lvblJlY3QocmVnaW9uUmVjdCk7ICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0UmVnaW9uUmVjdChyZWdpb25SZWN0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIwNiw2ICszMDgsOCBAQCB2b2lkIFJlbmRl
ckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogCiAgICAgZm9yIChSZW5kZXJSZWdp
b25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9y
ZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24g
PSAqaXRlcjsKKyAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAg
IGxvZ2ljYWxXaWR0aCA9IG1heChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5j
b250ZW50V2lkdGgoKSA6IHJlZ2lvbi0+Y29udGVudEhlaWdodCgpLCBsb2dpY2FsV2lkdGgpOwog
ICAgIH0KQEAgLTIxOSw2ICszMjMsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVM
b2dpY2FsSGVpZ2h0KCkKIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRl
ciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytp
dGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgICAgIGlm
ICghcmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQVNT
RVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmNvbnRlbnRIZWlnaHQoKSA6IHJlZ2lv
bi0+Y29udGVudFdpZHRoKCk7CiAgICAgfQpAQCAtMjk5LDYgKzQwNSw4IEBAIHZvaWQgUmVuZGVy
Rmxvd1RocmVhZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhjb25zdCBMYXlvdXRSZWN0JiBy
ZXBhaW50UmVjdCwKIHsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRl
cikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBpZiAo
IXJlZ2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8g
V2Ugb25seSBoYXZlIHRvIGlzc3VlIGEgcmVwYWludCBpbiB0aGlzIHJlZ2lvbiBpZiB0aGUgcmVn
aW9uIHJlY3QgaW50ZXJzZWN0cyB0aGUgcmVwYWludCByZWN0LgogICAgICAgICBMYXlvdXRSZWN0
IGZsaXBwZWRSZWdpb25SZWN0KHJlZ2lvbi0+cmVnaW9uUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCmluZGV4IDA3ZmZjZDEuLmUxMWIxZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAtMzIsNiAr
MzIsNyBAQAogCiAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0zOSw5ICs0
MCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7
CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIAordHlwZWRlZiBMaXN0
SGFzaFNldDxSZW5kZXJGbG93VGhyZWFkKj4gUmVuZGVyRmxvd1RocmVhZExpc3Q7Cit0eXBlZGVm
IEhhc2hDb3VudGVkU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5kZXJGbG93VGhyZWFkQ291bnRl
ZFNldDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyUmVnaW9uKj4gUmVuZGVyUmVnaW9uTGlz
dDsKIAogLy8gUmVuZGVyRmxvd1RocmVhZCBpcyB1c2VkIHRvIGNvbGxlY3QgYWxsIHRoZSByZW5k
ZXIgb2JqZWN0cyB0aGF0IHBhcnRpY2lwYXRlIGluIGEKQEAgLTg4LDE2ICs5MiwzNCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAorICAgIHZvaWQgcHVzaERlcGVuZGVuY2llcyhSZW5kZXJG
bG93VGhyZWFkTGlzdCYpOworCiAgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlSW5SZWdpb25zKGNv
bnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZsb3dUaHJl
YWQiOyB9CiAKKyAgICBib29sIGRlcGVuZHNPbihSZW5kZXJGbG93VGhyZWFkKiBvdGhlclJlbmRl
ckZsb3dUaHJlYWQpIGNvbnN0OworICAgIHZvaWQgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChS
ZW5kZXJGbG93VGhyZWFkKik7CisgICAgdm9pZCByZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFk
KFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICB2b2lkIGNoZWNrSW52YWxpZFJlZ2lvbnMoKTsKKwog
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gRmxvd1RocmVhZENoaWxkTGlz
dDsKICAgICBGbG93VGhyZWFkQ2hpbGRMaXN0IG1fZmxvd1RocmVhZENoaWxkTGlzdDsKIAogICAg
IEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CiAgICAgUmVuZGVyUmVnaW9uTGlzdCBtX3JlZ2lv
bkxpc3Q7CisKKyAgICAvLyBPYnNlcnZlciBmbG93IHRocmVhZHMgaGF2ZSBpbnZhbGlkIHJlZ2lv
bnMgdGhhdCBkZXBlbmQgb24gdGhlIHN0YXRlIG9mIHRoaXMgdGhyZWFkCisgICAgLy8gdG8gcmUt
dmFsaWRhdGUgdGhlaXIgcmVnaW9ucy4gS2VlcGluZyBhIHNldCBvZiBvYnNlcnZlciB0aHJlYWRz
IG1ha2UgaXQgZWFzeQorICAgIC8vIHRvIG5vdGlmeSB0aGVtIHdoZW4gYSByZWdpb24gd2FzIHJl
bW92ZWQgZnJvbSB0aGlzIGZsb3cuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQgbV9v
YnNlcnZlclRocmVhZHNTZXQ7CisKKyAgICAvLyBTb21lIHRocmVhZHMgbmVlZCB0byBoYXZlIGEg
Y29tcGxldGUgbGF5b3V0IGJlZm9yZSB3ZSBsYXlvdXQgdGhpcyBmbG93LgorICAgIC8vIFRoYXQn
cyBiZWNhdXNlIHRoZXkgY29udGFpbiBhIFJlbmRlclJlZ2lvbiB0aGF0IHNob3VsZCBkaXNwbGF5
IHRoaXMgdGhyZWFkLiBUaGUgc2V0IG1ha2VzIGl0CisgICAgLy8gZWFzeSB0byBzb3J0IHRoZSBv
cmRlciBvZiB0aHJlYWRzIGxheW91dC4KKyAgICBSZW5kZXJGbG93VGhyZWFkQ291bnRlZFNldCBt
X2xheW91dEJlZm9yZVRocmVhZHNTZXQ7CisKICAgICBib29sIG1fcmVnaW9uc0ludmFsaWRhdGVk
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0LmNwcAppbmRleCBlNjcyOWZhLi40ZjJmZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIK
ICNpbmNsdWRlICJSZW5kZXJRdW90ZS5oIgorI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMTAxLDYgKzEwMiw5IEBAIFJlbmRlck9iamVjdCog
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25l
ciwgUmVuZGVyCiAgICAgICAgIGlmIChvbGRDaGlsZC0+aXNQb3NpdGlvbmVkKCkgJiYgb3duZXIt
PmNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgICAgICBvd25lci0+ZGlydHlMaW5lc0Zyb21DaGFu
Z2VkQ2hpbGQob2xkQ2hpbGQpOwogCisgICAgICAgIGlmIChvbGRDaGlsZC0+aXNSZW5kZXJSZWdp
b24oKSkKKyAgICAgICAgICAgIHRvUmVuZGVyUmVnaW9uKG9sZENoaWxkKS0+ZGV0YWNoUmVnaW9u
KCk7CisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAvLyBVcGRhdGUgY2FjaGVkIGJvdW5kYXJp
ZXMgaW4gU1ZHIHJlbmRlcmVycywgaWYgYSBjaGlsZCBpcyByZW1vdmVkLgogICAgICAgICBvd25l
ci0+c2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7CkBAIC0xNzcsNiArMTgxLDkgQEAgdm9pZCBS
ZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZShSZW5kZXJPYmplY3QqIG93bmVy
LCBSZW5kZXJPYmplY3QqIG4KIAogICAgICAgICBpZiAoIW5ld0NoaWxkLT5pc0Zsb2F0aW5nT3JQ
b3NpdGlvbmVkKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgICAgICBvd25l
ci0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQobmV3Q2hpbGQpOworCisgICAgICAgIGlmIChu
ZXdDaGlsZC0+aXNSZW5kZXJSZWdpb24oKSkKKyAgICAgICAgICAgIHRvUmVuZGVyUmVnaW9uKG5l
d0NoaWxkKS0+YXR0YWNoUmVnaW9uKCk7CiAgICAgfQogICAgIFJlbmRlckNvdW50ZXI6OnJlbmRl
cmVyU3VidHJlZUF0dGFjaGVkKG5ld0NoaWxkKTsKICAgICBSZW5kZXJRdW90ZTo6cmVuZGVyZXJT
dWJ0cmVlQXR0YWNoZWQobmV3Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmNwcAppbmRleCA3MzM3NjU3Li43Yzk3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDIsMjAgKzQyLDE5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKE5vZGUqIG5vZGUsIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChub2RlLCBJbnRTaXplKCkp
CiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKKyAgICAsIG1fcGFyZW50Rmxvd1RocmVh
ZCgwKQorICAgICwgbV9pc1ZhbGlkKGZhbHNlKQogewogfQogCiBSZW5kZXJSZWdpb246On5SZW5k
ZXJSZWdpb24oKQogewotICAgIGlmIChtX2Zsb3dUaHJlYWQgJiYgdmlldygpKQotICAgICAgICBt
X2Zsb3dUaHJlYWQtPnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQodGhpcyk7Ci0gICAgbV9mbG93VGhy
ZWFkID0gMDsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICAvLyBE
ZWxlZ2F0ZSBwYWludGluZyBvZiBjb250ZW50IGluIHJlZ2lvbiB0byBSZW5kZXJGbG93VGhyZWFk
LgotICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgIGlmICghbV9mbG93VGhyZWFkIHx8ICFpc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Zsb3dUaHJlYWQtPnBhaW50SW50b1JlZ2lv
bihwYWludEluZm8sIHJlZ2lvblJlY3QoKSwgTGF5b3V0UG9pbnQocGFpbnRPZmZzZXQueCgpICsg
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkpKTsKIH0KQEAgLTYzLDYgKzYyLDkgQEAgdm9pZCBSZW5kZXJSZWdp
b246OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE8KIC8vIEhpdCBUZXN0aW5nCiBib29sIFJlbmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCiB7CisgICAgaWYgKCFpc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIExheW91dFBvaW50IGFkanVzdGVkTG9j
YXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7CiAKICAgICAvLyBDaGVjayBv
dXIgYm91bmRzIG5leHQuIEZvciB0aGlzIHB1cnBvc2UgYWx3YXlzIGFzc3VtZSB0aGF0IHdlIGNh
biBvbmx5IGJlIGhpdCBpbiB0aGUKQEAgLTgwLDE0ICs4MiwzNiBAQCBib29sIFJlbmRlclJlZ2lv
bjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJSZWdpb246OnN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpCit2b2lkIFJlbmRlclJlZ2lvbjo6YXR0YWNoUmVnaW9uKCkKIHsKLSAgICBSZW5k
ZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZmVyZW5jZSwgb2xkU3R5bGUpOworICAgIGlm
ICghbV9mbG93VGhyZWFkKQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGlzIG5lZWRzIHRv
IGJlIGRvbmUgaGVyZSBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3RvciwgYmVjYXVzZSBSZW5kZXJG
bG93VGhyZWFkIAotICAgIC8vIHVzZXMgdGhlIHN0eWxlKCkgcHJvcGVydHkgd2hpY2ggaXMgbm90
IHlldCBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgaWYgKCFvbGRTdHlsZSAm
JiBtX2Zsb3dUaHJlYWQpCi0gICAgICAgIG1fZmxvd1RocmVhZC0+YWRkUmVnaW9uVG9UaHJlYWQo
dGhpcyk7CisgICAgLy8gQnkgbm93IHRoZSBmbG93IHRocmVhZCBzaG91bGQgYWxyZWFkeSBiZSBh
ZGRlZCB0byB0aGUgcmVuZGVyaW5nIHRyZWUsCisgICAgLy8gc28gd2UgZ28gdXAgdGhlIHJlbmRl
cmluZyBwYXJlbnRzIGFuZCBjaGVjayB0aGF0IHRoaXMgcmVnaW9uIGlzIG5vdCBwYXJ0IG9mIHRo
ZSBzYW1lCisgICAgLy8gZmxvdyB0aGF0IGl0IGFjdHVhbGx5IG5lZWRzIHRvIGRpc3BsYXkuIEl0
IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIHJlZmVyZW5jZS4KKyAgICBSZW5kZXJPYmplY3QqIHBh
cmVudE9iamVjdCA9IHBhcmVudCgpOworICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IDA7CisgICAg
Zm9yICggOyBwYXJlbnRPYmplY3Q7IHBhcmVudE9iamVjdCA9IHBhcmVudE9iamVjdC0+cGFyZW50
KCkpIHsKKyAgICAgICAgaWYgKHBhcmVudE9iamVjdC0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsK
KyAgICAgICAgICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChwYXJl
bnRPYmplY3QpOworICAgICAgICAgICAgLy8gRG8gbm90IHRha2UgaW50byBhY2NvdW50IGEgcmVn
aW9uIHRoYXQgbGlua3MgYSBmbG93IHdpdGggaXRzZWxmLiBUaGUgZGVwZW5kZW5jeQorICAgICAg
ICAgICAgLy8gY2Fubm90IGNoYW5nZSwgc28gaXQgaXMgbm90IHdvcnRoIGFkZGluZyBpdCB0byB0
aGUgbGlzdC4KKyAgICAgICAgICAgIGlmIChtX2Zsb3dUaHJlYWQgPT0gbV9wYXJlbnRGbG93VGhy
ZWFkKSB7CisgICAgICAgICAgICAgICAgbV9mbG93VGhyZWFkID0gMDsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIG1fZmxvd1RocmVhZC0+YWRkUmVnaW9uVG9UaHJlYWQodGhpcyk7Cit9CisK
K3ZvaWQgUmVuZGVyUmVnaW9uOjpkZXRhY2hSZWdpb24oKQoreworICAgIGlmIChtX2Zsb3dUaHJl
YWQpCisgICAgICAgIG1fZmxvd1RocmVhZC0+cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCh0aGlzKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oCmluZGV4IGZjZThmYTguLmM0NjUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmgKQEAgLTQ5LDEzICs0OSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRSZWdpb25SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9yZWdpb25SZWN0ID0gcmVjdDsg
fQogICAgIEludFJlY3QgcmVnaW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uUmVjdDsg
fQogCisgICAgdm9pZCBhdHRhY2hSZWdpb24oKTsKKyAgICB2b2lkIGRldGFjaFJlZ2lvbigpOwor
CisgICAgUmVuZGVyRmxvd1RocmVhZCogcGFyZW50Rmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyZW50Rmxvd1RocmVhZDsgfQorCisgICAgLy8gVmFsaWQgcmVnaW9ucyBkbyBub3QgY3Jl
YXRlIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIG90aGVyIGZsb3dzLgorICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQorICAgIHZvaWQgc2V0SXNWYWxpZChi
b29sIHZhbGlkKSB7IG1faXNWYWxpZCA9IHZhbGlkOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7
IH0KIAotICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpOwotCiAgICAgUmVuZGVyRmxvd1RocmVhZCogbV9mbG93VGhyZWFk
OworCisgICAgLy8gSWYgdGhpcyBSZW5kZXJSZWdpb24gaXMgZGlzcGxheWVkIGFzIHBhcnQgb2Yg
YW5vdGhlciBmbG93LAorICAgIC8vIHdlIG5lZWQgdG8gY3JlYXRlIGEgZGVwZW5kZW5jeSB0cmVl
LCBzbyB0aGF0IGxheW91dCBvZiB0aGUKKyAgICAvLyByZWdpb25zIGlzIGFsd2F5cyBkb25lIGJl
Zm9yZSB0aGUgcmVnaW9ucyB0aGVtc2VsdmVzLgorICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFy
ZW50Rmxvd1RocmVhZDsKICAgICBJbnRSZWN0IG1fcmVnaW9uUmVjdDsKKworICAgIGJvb2wgbV9p
c1ZhbGlkOwogfTsKIAogaW5saW5lIFJlbmRlclJlZ2lvbiogdG9SZW5kZXJSZWdpb24oUmVuZGVy
T2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggZmRkNzk0Yi4uNWIyOWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNjQ3LDYgKzY0Nyw1MSBAQCBzdGF0aWMg
dm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgUmVuZGVyTGF5ZXImIGwsCiAgICAgICAgIHdyaXRl
KHRzLCAqbC5yZW5kZXJlcigpLCBpbmRlbnQgKyAxLCBiZWhhdmlvcik7CiB9CiAKK3N0YXRpYyB2
b2lkIHdyaXRlUmVuZGVyRmxvd1RocmVhZHMoVGV4dFN0cmVhbSYgdHMsIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbnRSZWN0JiBwYWludFJlY3QsIGludCBpbmRlbnQsIFJlbmRlckFzVGV4
dEJlaGF2aW9yIGJlaGF2aW9yKQoreworICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWRMaXN0KiBs
aXN0ID0gcmVuZGVyVmlldy0+cmVuZGVyRmxvd1RocmVhZExpc3QoKTsKKyAgICBpZiAoIWxpc3Qg
fHwgbGlzdC0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB3cml0ZUluZGVudCh0
cywgaW5kZW50KTsKKyAgICB0cyA8PCAiRmxvdyBUaHJlYWRzXG4iOworCisgICAgZm9yIChSZW5k
ZXJGbG93VGhyZWFkTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxpc3QtPmJlZ2luKCk7IGl0
ZXIgIT0gbGlzdC0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhy
ZWFkKiByZW5kZXJGbG93VGhyZWFkID0gKml0ZXI7CisKKyAgICAgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCArIDEpOworICAgICAgICB0cyA8PCAiVGhyZWFkIHdpdGggZmxvdy1uYW1lICciIDw8
IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xuIjsKKworICAgICAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSByZW5kZXJGbG93VGhyZWFkLT5sYXllcigpOworICAgICAgICB3cml0
ZUxheWVycyh0cywgcm9vdExheWVyLCBsYXllciwgcGFpbnRSZWN0LCBpbmRlbnQgKyAyLCBiZWhh
dmlvcik7CisKKyAgICAgICAgLy8gRGlzcGxheSB0aGUgcmVuZGVyIHJlZ2lvbnMgYXR0YWNoZWQg
dG8gdGhpcyBmbG93IHRocmVhZAorICAgICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiBmbG93
VGhyZWFkUmVnaW9uTGlzdCA9IHJlbmRlckZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsK
KyAgICAgICAgaWYgKCFmbG93VGhyZWFkUmVnaW9uTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgICAgIHRzIDw8ICJSZWdp
b25zIGZvciBmbG93ICciPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZCgpIDw8ICInXG4i
OworICAgICAgICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdFJS
ID0gZmxvd1RocmVhZFJlZ2lvbkxpc3QuYmVnaW4oKTsgaXRSUiAhPSBmbG93VGhyZWFkUmVnaW9u
TGlzdC5lbmQoKTsgKytpdFJSKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiByZW5k
ZXJSZWdpb24gPSAqaXRSUjsKKyAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50
ICsgMik7CisgICAgICAgICAgICAgICAgdHMgPDwgIlJlbmRlclJlZ2lvbiI7CisgICAgICAgICAg
ICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0
cmluZyB0YWdOYW1lID0gZ2V0VGFnTmFtZShyZW5kZXJSZWdpb24tPm5vZGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwgIn0iOworICAgICAgICAgICAgICAgICAgICBp
ZiAocmVuZGVyUmVnaW9uLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJSZWdpb24t
Pm5vZGUoKS0+aGFzSUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJSZWdpb24tPm5vZGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNv
bHV0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgdHMgPDwgIiBpbnZhbGlkIjsKKyAgICAgICAgICAgICAgICB0cyA8PCAiIHdpdGggaW5k
ZXggIiA8PCByZW5kZXJSZWdpb24tPnN0eWxlKCktPnJlZ2lvbkluZGV4KCkgPDwgIlxuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogc3RhdGljIHZvaWQgd3JpdGVMYXll
cnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxh
eWVyKiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0
LCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvcikKIHsKQEAgLTcxMCw0
MiArNzU1LDkgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAKICAgICAvLyBBbHRvdWdo
IHRoZSBSZW5kZXJGbG93VGhyZWFkIHJlcXVpcmVzIGEgbGF5ZXIsIGl0IGlzIG5vdCBjb2xsZWN0
ZWQgYnkgaXRzIHBhcmVudCwKICAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyZWF0IGl0IGFzIGEgc3Bl
Y2lhbCBjYXNlLgotICAgIGJvb2wgZmlyc3RSZW5kZXJGbG93VGhyZWFkID0gdHJ1ZTsKLSAgICBm
b3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsLT5yZW5kZXJlcigpLT5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+
aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGlmIChmaXJzdFJlbmRlckZsb3dU
aHJlYWQpIHsKLSAgICAgICAgICAgICAgICBmaXJzdFJlbmRlckZsb3dUaHJlYWQgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKLSAgICAgICAgICAgICAg
ICB0cyA8PCAiRmxvdyBUaHJlYWRzXG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29u
c3QgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVh
ZChjaGlsZCk7Ci0gICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAg
ICAgICAgICB0cyA8PCAiVGhyZWFkIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJl
YWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xuIjsKLSAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IHJlbmRlckZsb3dUaHJlYWQtPmxheWVyKCk7Ci0gICAgICAgICAgICB3cml0ZUxheWVycyh0
cywgcm9vdExheWVyLCBsYXllciwgcGFpbnREaXJ0eVJlY3QsIGluZGVudCArIDIsIGJlaGF2aW9y
KTsKLQotICAgICAgICAgICAgLy8gRGlzcGxheSB0aGUgcmVuZGVyIHJlZ2lvbnMgYXR0YWNoZWQg
dG8gdGhpcyBmbG93IHRocmVhZAotICAgICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYg
Zmxvd1RocmVhZFJlZ2lvbkxpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0
KCk7Ci0gICAgICAgICAgICBpZiAoIWZsb3dUaHJlYWRSZWdpb25MaXN0LmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgICAg
ICAgICB0cyA8PCAiUmVnaW9ucyBmb3IgZmxvdyAnIjw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dU
aHJlYWQoKSA8PCAiJ1xuIjsKLSAgICAgICAgICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6
OmNvbnN0X2l0ZXJhdG9yIGl0UlIgPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5iZWdpbigpOyBpdFJS
ICE9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmVuZCgpOyArK2l0UlIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSAqaXRSUjsKLSAgICAgICAgICAgICAg
ICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDIpOwotICAgICAgICAgICAgICAgICAgICB0
cyA8PCAiUmVuZGVyUmVnaW9uIjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lv
bi0+bm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdl
dFRhZ05hbWUocmVuZGVyUmVnaW9uLT5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cyA8
PCAiIHsiIDw8IHRhZ05hbWUgPDwgIn0iOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
bmRlclJlZ2lvbi0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5ub2Rl
KCktPmhhc0lEKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+bm9kZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVS
ZXNvbHV0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiB3aXRoIGluZGV4ICIgPDwgcmVuZGVy
UmVnaW9uLT5zdHlsZSgpLT5yZWdpb25JbmRleCgpIDw8ICJcbiI7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaWYgKGwtPnJlbmRlcmVyKCktPmlzUmVu
ZGVyVmlldygpKSB7CisgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0b1JlbmRlclZp
ZXcobC0+cmVuZGVyZXIoKSk7CisgICAgICAgIHdyaXRlUmVuZGVyRmxvd1RocmVhZHModHMsIHJl
bmRlclZpZXcsIHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3QsIGluZGVudCwgYmVoYXZpb3IpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDEz
NzQ5ZmIuLmFjYWNlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
QEAgLTUyLDcgKzUyLDcgQEAgUmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBub2RlLCBGcmFt
ZVZpZXcqIHZpZXcpCiAgICAgLCBtX21heGltYWxPdXRsaW5lU2l6ZSgwKQogICAgICwgbV9wYWdl
TG9naWNhbEhlaWdodCgwKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2Up
Ci0gICAgLCBtX2hhc1JlbmRlckZsb3dUaHJlYWRzKGZhbHNlKQorICAgICwgbV9pc1JlbmRlckZs
b3dUaHJlYWRPcmRlckRpcnR5KGZhbHNlKQogICAgICwgbV9sYXlvdXRTdGF0ZSgwKQogICAgICwg
bV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCgwKQogewpAQCAtMTI4LDggKzEyOCwxMSBAQCB2b2lk
IFJlbmRlclZpZXc6OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBm
YWxzZTsKICAgICBtX2xheW91dFN0YXRlID0gJnN0YXRlOwogCi0gICAgaWYgKG5lZWRzTGF5b3V0
KCkpCisgICAgaWYgKG5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91
dCgpOworICAgICAgICBpZiAoaGFzUmVuZGVyRmxvd1RocmVhZHMoKSkKKyAgICAgICAgICAgIGxh
eW91dFJlbmRlckZsb3dUaHJlYWRzKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGxheW91dERlbHRh
KCkgPT0gTGF5b3V0U2l6ZSgpKTsKICAgICBBU1NFUlQobV9sYXlvdXRTdGF0ZURpc2FibGVDb3Vu
dCA9PSAwKTsKQEAgLTgwOCw5ICs4MTEsMTEgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIAog
UmVuZGVyRmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCkKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFk
KCkpIHsKLSAgICAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVu
ZGVyRmxvd1RocmVhZChyZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlckZsb3dUaHJlYWRMaXN0
KQorICAgICAgICBtX3JlbmRlckZsb3dUaHJlYWRMaXN0ID0gYWRvcHRQdHIobmV3IFJlbmRlckZs
b3dUaHJlYWRMaXN0KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKFJlbmRlckZsb3dUaHJl
YWRMaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsg
aXRlciAhPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAg
ICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKICAgICAgICAgICAg
IGlmIChmbG93UmVuZGVyZXItPmZsb3dUaHJlYWQoKSA9PSBmbG93VGhyZWFkKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmbG93UmVuZGVyZXI7CiAgICAgICAgIH0KQEAgLTgxOSw4ICs4MjQsMzUg
QEAgUmVuZGVyRmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1QKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVu
ZGVyZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQoKSwg
Zmxvd1RocmVhZCk7CiAgICAgZmxvd1JlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGbG93VGhyZWFk
OjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoc3R5bGUoKSkpOwogICAgIGFkZENoaWxkKGZsb3dSZW5k
ZXJlcik7Ci0gICAgbV9oYXNSZW5kZXJGbG93VGhyZWFkcyA9IHRydWU7CisgICAgCisgICAgbV9y
ZW5kZXJGbG93VGhyZWFkTGlzdC0+YWRkKGZsb3dSZW5kZXJlcik7CisgICAgc2V0SXNSZW5kZXJG
bG93VGhyZWFkT3JkZXJEaXJ0eSh0cnVlKTsKKwogICAgIHJldHVybiBmbG93UmVuZGVyZXI7CiB9
CiAKK3ZvaWQgUmVuZGVyVmlldzo6bGF5b3V0UmVuZGVyRmxvd1RocmVhZHMoKQoreworICAgIEFT
U0VSVChtX3JlbmRlckZsb3dUaHJlYWRMaXN0KTsKKworICAgIGlmIChpc1JlbmRlckZsb3dUaHJl
YWRPcmRlckRpcnR5KCkpIHsKKyAgICAgICAgLy8gQXJyYW5nZSB0aGUgdGhyZWFkIGxpc3QgYWNj
b3JkaW5nIHRvIGRlcGVuZGVuY2llcy4KKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZExpc3Qgc29y
dGVkTGlzdDsKKyAgICAgICAgZm9yIChSZW5kZXJGbG93VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRl
ciA9IG1fcmVuZGVyRmxvd1RocmVhZExpc3QtPmJlZ2luKCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93
VGhyZWFkTGlzdC0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1JlbmRlcmVyID0gKml0ZXI7CisgICAgICAgICAgICBpZiAoc29ydGVkTGlzdC5jb250
YWlucyhmbG93UmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgZmxvd1JlbmRlcmVyLT5wdXNoRGVwZW5kZW5jaWVzKHNvcnRlZExpc3QpOworICAgICAgICAg
ICAgc29ydGVkTGlzdC5hZGQoZmxvd1JlbmRlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBtX3Jl
bmRlckZsb3dUaHJlYWRMaXN0LT5zd2FwKHNvcnRlZExpc3QpOworICAgICAgICBzZXRJc1JlbmRl
ckZsb3dUaHJlYWRPcmRlckRpcnR5KGZhbHNlKTsKKyAgICB9CisKKyAgICBmb3IgKFJlbmRlckZs
b3dUaHJlYWRMaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVn
aW4oKTsgaXRlciAhPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9ICppdGVyOworICAgICAgICBm
bG93UmVuZGVyZXItPmxheW91dElmTmVlZGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA3ZDg0ODhj
Li43NWM2YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2
ICszNyw4IEBAIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRv
cjsKICNlbmRpZgogCit0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5k
ZXJGbG93VGhyZWFkTGlzdDsKKwogY2xhc3MgUmVuZGVyVmlldyA6IHB1YmxpYyBSZW5kZXJCbG9j
ayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhOb2RlKiwgRnJhbWVWaWV3Kik7CkBAIC0xNjcs
NyArMTcwLDE2IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0Owog
CiAgICAgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgZmxvd1RocmVhZCk7Ci0gICAgYm9vbCBoYXNSZW5kZXJGbG93VGhyZWFkcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUmVuZGVyRmxvd1RocmVhZHM7IH0KKyAgICBib29sIGhhc1Jl
bmRlckZsb3dUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJGbG93VGhyZWFkTGlzdCAm
JiAhbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+aXNFbXB0eSgpOyB9CisgICAgdm9pZCBsYXlvdXRS
ZW5kZXJGbG93VGhyZWFkcygpOworICAgIGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eTsgfQorICAg
IHZvaWQgc2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eShib29sIGRpcnR5KQorICAgIHsK
KyAgICAgICAgbV9pc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5ID0gZGlydHk7CisgICAgICAg
IGlmIChkaXJ0eSkKKyAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIH0KKyAg
ICBjb25zdCBSZW5kZXJGbG93VGhyZWFkTGlzdCogcmVuZGVyRmxvd1RocmVhZExpc3QoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LmdldCgpOyB9CiAKICAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKICAgICAKQEAgLTI0NiwxMiArMjU4LDEzIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9wYWdlTG9naWNhbEhlaWdodDsKICAgICBib29sIG1fcGFnZUxvZ2ljYWxIZWln
aHRDaGFuZ2VkOwotICAgIGJvb2wgbV9oYXNSZW5kZXJGbG93VGhyZWFkczsKKyAgICBib29sIG1f
aXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eTsKICAgICBMYXlvdXRTdGF0ZSogbV9sYXlvdXRT
dGF0ZTsKICAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50OwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9y
PiBtX2NvbXBvc2l0b3I7CiAjZW5kaWYKKyAgICBPd25QdHI8UmVuZGVyRmxvd1RocmVhZExpc3Q+
IG1fcmVuZGVyRmxvd1RocmVhZExpc3Q7CiB9OwogCiBpbmxpbmUgUmVuZGVyVmlldyogdG9SZW5k
ZXJWaWV3KFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104147</attachid>
            <date>2011-08-16 22:02:01 -0700</date>
            <delta_ts>2011-08-16 22:07:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66142-20110817080158.patch</filename>
            <type>text/plain</type>
            <size>36113</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2N2EwOTRjZWU5YzBiZmU1ZWFkMDBj
YzAxZmRiOGY2Y2ZiZDdlM2EzLi4wZDJlZjkzM2YxMTYzZTZlNGRjODZjYTIzNGM4ZmZhYmQzMTI1
Zjg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMTYgIEFsZXhhbmRydSBDaGljdWxp
dGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXSBSZW5kZXJSZWdp
b24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVuZGVyRmxvd1RocmVhZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9m
bG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktc2FtZS1mbG93Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTE2ICBUb255IENoYW5nICA8
dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBmYXN0L2Nzcy9jdXN0b20t
Zm9udC14aGVpZ2h0Lmh0bWwgaXMgYXNzZXJ0aW5nIG9uIGFsbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1p
Yy1yZW1vdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDAyY2MzNzM4NTI0YzZmNWY3ZGU2
OTlmMjJhOWUzMTRiNTI2OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6
ZSAweDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dDJworICBU
aHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QScK
KyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAxCisgICAgUmVuZGVyUmVnaW9uIHtE
SVZ9IHdpdGggaW5kZXggMgorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJworICBSZWdp
b25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1k
eW5hbWljLXJlbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWU2ZjBhMGM0Y2RiMzVlNzQ5
NTZkYWJjYzEwZGNiYWY4ZThiNTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbApAQCAtMCwwICsx
LDM3IEBACis8IURPQ1RZUEUgSFRNTD4KKworPHN0eWxlPgorLmZsb3dBIHsgLXdlYmtpdC1mbG93
OiAnZmxvd0EnOyB9CisuZmxvd0IgeyAtd2Via2l0LWZsb3c6ICdmbG93Qic7IH0KKy5mbG93QyB7
IC13ZWJraXQtZmxvdzogJ2Zsb3dDJzsgfQorCisucmVnaW9uRmxvd0EgeyBjb250ZW50OiAtd2Vi
a2l0LWZyb20tZmxvdygnZmxvd0EnKTsgfQorLnJlZ2lvbkZsb3dCIHsgY29udGVudDogLXdlYmtp
dC1mcm9tLWZsb3coJ2Zsb3dCJyk7IH0KKy5yZWdpb25GbG93QyB7IGNvbnRlbnQ6IC13ZWJraXQt
ZnJvbS1mbG93KCdmbG93QycpOyB9CisKKy5pbmRleDEgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6
IDE7IH0KKy5pbmRleDIgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDI7IH0KKy5pbmRleDMgeyAt
d2Via2l0LWNvbnRlbnQtb3JkZXI6IDM7IH0KKzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9ImZsb3dB
Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisK
KzxkaXYgY2xhc3M9ImZsb3dCIj4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QyBpbmRleDEi
PjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImZsb3dDIj4KKyAgICA8IS0tIFRoZSBmb2xs
b3dpbmcgcmVnaW9uIHdpbGwgaW5pdGlhbGx5IGJlIGludmFsaWQuIFJlbW92aW5nIHJlZ2lvbkZs
b3dDIHNob3VsZCBtYWtlIGl0IHZhbGlkIGFnYWluLiAtLT4KKyAgICA8ZGl2IGNsYXNzPSJyZWdp
b25GbG93QSBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzwhLS0gRm9yY2UgdGhlIGNyZWF0aW9u
IG9mIHRoZSBmbG93cy4gSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBhdm9pZCBjcmVhdGluZyBmbG93
cyBpZiB0aGVyZSBhcmUgbm8gcmVhY2hhYmxlIHJlZ2lvbnMuIC0tPgorPGRpdiBjbGFzcz0icmVn
aW9uRmxvd0EgaW5kZXgyIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkb2N1bWVudC5ib2R5Lm9m
ZnNldFRvcDsgICAgLy8gZm9yY2UgbGF5b3V0CisgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgicmVnaW9uRmxvd0MiKVswXTsKKyAgICBlbC5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGVsKTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUt
Zmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5k
ZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNTQ4NmJlYmUzMzliZjI4
OTA0NTA5NGE0Mjg1YzJmZWU2OWU1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
IFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorRmxvdyBUaHJlYWRzCisgIFRo
cmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJwor
ICAgIFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkIHdpdGggaW5kZXggMQorICAgIFJlbmRlclJl
Z2lvbiB7RElWfSB3aXRoIGluZGV4IDIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycK
KyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGgg
aW5kZXggMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4IDMKKyAgVGhyZWFkIHdp
dGggZmxvdy1uYW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCisgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRo
IGluZGV4IDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBl
bmRlbmN5LXNhbWUtZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRl
cGVuZGVuY3ktc2FtZS1mbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYyOTIyNDMyMTA3NzNiODI1YTNh
OTc0ZTM5ZjJkNjQ2M2IwZTkzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCkBAIC0wLDAgKzEsMzggQEAK
KzwhRE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisuZmxvd0EgeyAtd2Via2l0LWZsb3c6ICdmbG93
QSc7IH0KKy5mbG93QiB7IC13ZWJraXQtZmxvdzogJ2Zsb3dCJzsgfQorLmZsb3dDIHsgLXdlYmtp
dC1mbG93OiAnZmxvd0MnOyB9CisKKy5yZWdpb25GbG93QSB7IGNvbnRlbnQ6IC13ZWJraXQtZnJv
bS1mbG93KCdmbG93QScpOyB9CisucmVnaW9uRmxvd0IgeyBjb250ZW50OiAtd2Via2l0LWZyb20t
ZmxvdygnZmxvd0InKTsgfQorLnJlZ2lvbkZsb3dDIHsgY29udGVudDogLXdlYmtpdC1mcm9tLWZs
b3coJ2Zsb3dDJyk7IH0KKworLmluZGV4MSB7IC13ZWJraXQtY29udGVudC1vcmRlcjogMTsgfQor
LmluZGV4MiB7IC13ZWJraXQtY29udGVudC1vcmRlcjogMjsgfQorLmluZGV4MyB7IC13ZWJraXQt
Y29udGVudC1vcmRlcjogMzsgfQorPC9zdHlsZT4KKworPGRpdiBjbGFzcz0iZmxvd0EiPgorICAg
IDwhLS0gVGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQuIERpcmVjdCBjaXJj
dWxhciByZWZlcmVuY2UuIC0tPgorICAgIDxkaXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MSI+
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxvd0IiPgorICAgIDxkaXYgY2xhc3M9InJl
Z2lvbkZsb3dDIGluZGV4MSI+PC9kaXY+CisgICAgPCEtLSBUaGUgZm9sbG93aW5nIHJlZ2lvbiBz
aG91bGQgYmUgaWdub3JlZC4gRGlyZWN0IGNpcmN1bGFyIHJlZmVyZW5jZS4gLS0+CisgICAgPGRp
diBjbGFzcz0iZmxvd0MgcmVnaW9uRmxvd0MgaW5kZXgyIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGNsYXNzPSJmbG93QyI+CisgICAgPCEtLSBUaGUgZm9sbG93aW5nIHJlZ2lvbiBzaG91bGQgYmUg
aW52YWxpZC4gQ2lyY3VsYXIgcmVmZXJlbmNlIHRocm91Z2ggZmxvd0Igd2hpY2ggYWxyZWFkeSBo
YXMgY3JlYXRlZCBhIGxpbmsgdG8gdGhpcyBmbG93CisgICAgICAgICB0aHJvdWdoIHRoZSAicmVn
aW9uRmxvd0MgaW5kZXgxIiByZWdpb24uIC0tPgorICAgIDxkaXYgY2xhc3M9InJlZ2lvbkZsb3dC
IGluZGV4MSI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0EgaW5kZXgyIj48L2Rp
dj4KKzwvZGl2PgorCis8IS0tIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmxvd3MuIEluIHRo
ZSBmdXR1cmUgd2UgbWlnaHQgYXZvaWQgY3JlYXRpbmcgZmxvd3MgaWYgdGhlcmUgYXJlIG5vIHJl
YWNoYWJsZSByZWdpb25zLiAtLT4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MyI+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDIiPjwvZGl2PgorPGRpdiBjbGFzcz0i
cmVnaW9uRmxvd0MgaW5kZXgzIj48L2Rpdj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhODI4Y2VjMDAzMjMxNzQ3
MWE3YThiMTg3MWU1M2JlMWM1ZmIxNjNmLi5mOWU3NjYyYWI1YzgwZDRjY2Q1NmZlODY2MjE4NWM3
NGNjYWEwNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTEtMDgtMTYgIEFsZXhh
bmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XSBSZW5kZXJSZWdpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVuZGVyRmxvd1Ro
cmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYx
NDIKKworICAgICAgICBBZGRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZSBwYXJlbnQgUmVuZGVyRmxv
d1RocmVhZCBvZiBhIFJlbmRlclJlZ2lvbiBhbmQgY3JlYXRlcworICAgICAgICBhIGRlcGVuZGVu
Y3kgZm9yIGl0cyByZWZlcmVuY2VkIFJlbmRlckZsb3dUaHJlYWQgKGZyb20gQ1NTIHN0eWxlKS4K
KworICAgICAgICBUaGVyZSBhcmUgdHdvIGNhc2VzOgorICAgICAgICAxLiBBIFJlbmRlclJlZ2lv
biB0cmllcyB0byBkaXNwbGF5IHRoZSBmbG93IHRocmVhZCB0aGF0IGxhaWQgaXQgb3V0LiBJbiB0
aGlzIGNhc2UKKyAgICAgICAgdGhlIHJlZ2lvbiB3aWxsIGJlIGlnbm9yZWQgYW5kIHdpbGwgbm90
IHBhcnRpY2lwYXRlIGluIHRoZSBmbG93IHRocmVhZHMgcmVnaW9ucyBsaXN0LgorICAgICAgICAy
LiBBIFJlbmRlclJlZ2lvbiB0cmllcyB0byBkaXNwbGF5IGEgZmxvdyB0aHJlYWQgdGhhdCBjb250
YWlucyBhbm90aGVyIHJlZ2lvbiB0aGF0CisgICAgICAgIHRyaWVzIHRvIGRpc3BsYXkgdGhlIGZp
cnN0IHJlZ2lvbidzIGZsb3cgdGhyZWFkLiBUaGlzIG9uZSBjYW4gYmUgZ2VuZXJhbGl6ZWQgd2l0
aCBhbnkKKyAgICAgICAgbnVtYmVyIG9mIGludGVybWVkaWF0ZSBmbG93IHRocmVhZHMuIEluIHRo
aXMgY2FzZSB0aGUgcmVjdXJzaW9uIGlzIGRldGVjdGVkIGFuZCBvbmx5IHRoZQorICAgICAgICBm
aXJzdCBhZGRlZCByZWdpb24gd2lsbCBhY3R1YWxseSBiZSBzZWxlY3RlZC4gVGhlIG90aGVyIHJl
Z2lvbiB3aWxsIGJlIGlnbm9yZWQuIEhvd2V2ZXIsCisgICAgICAgIHdoZW4gdGhlIHJlY3Vyc2lv
biBpcyByZW1vdmVkIHRoZSBpbnZhbGlkIHJlZ2lvbnMgd2lsbCBiZSByZWNvdmVyZWQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
cmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6Omluc2VydFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmRl
cGVuZHNPbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25U
b1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZWdp
b25Gcm9tVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNoZWNr
SW52YWxpZFJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRk
RGVwZW5kZW5jeU9uRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjpyZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsb3dUaHJlYWQ6OnB1c2hEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJl
YWQ6OmNvbXB1dGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1Ro
cmVhZDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVt
b3ZlQ2hpbGROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6
YXBwZW5kQ2hpbGROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6flJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uOjpub2RlQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmF0
dGFjaFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmRldGFjaFJlZ2lv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUmVnaW9uOjpwYXJlbnRGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlZ2lvbjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnNl
dElzVmFsaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlUmVuZGVyRmxvd1RocmVhZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJl
bmRlckZsb3dUaHJlYWRXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojps
YXlvdXRSZW5kZXJGbG93VGhyZWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Omhhc1JlbmRlckZsb3dUaHJlYWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmlzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGly
dHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0SXNSZW5kZXJGbG93VGhyZWFk
T3JkZXJEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZW5kZXJGbG93VGhy
ZWFkTGlzdCk6CisKIDIwMTEtMDgtMTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIFdpbmRvd3MgYnVpbGQgZml4IGFm
dGVyIHI5MzE0MC4gVGFrZSA0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggYTQwNDFhNGM3NWE1OGFmNjQ1NzEwODMwYzdjMWZhZjBjYjVjZGFlNy4uZWJhZTY5
ODJhZDM3ZDk3MWExNjUyNjNmMDJkMjdkZTBlMjNmMDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMTQxLDYgKzMxNDEsOSBAQCBMYXlvdXRVbml0IFJl
bmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgTGF5bwogCiB2b2lkIFJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJl
bmRlckJveCogbykKIHsKKyAgICBpZiAoby0+aXNSZW5kZXJGbG93VGhyZWFkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKICAgICAvLyBDcmVhdGUgdGhlIGxpc3Qgb2Ygc3BlY2lhbCBvYmplY3Rz
IGlmIHdlIGRvbid0IGFsZWFkeSBoYXZlIG9uZQogICAgIGlmICghbV9wb3NpdGlvbmVkT2JqZWN0
cykKICAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cyA9IGFkb3B0UHRyKG5ldyBQb3NpdGlvbmVk
T2JqZWN0c0xpc3RIYXNoU2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcAppbmRleCAyZGNhNjM3ZTE1ODY1YzdlNTNmN2QyNzE2YjI4YTg5YWNmODZj
ZjE2Li5kOWI4ZDk1NTRlMjA0MWE3OTA0YjNkODA2MWViNjg3OGQwNjEwMzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ4LDYgKzE0OSwyMyBAQCBzdGF0aWMgYm9vbCBjb21wYXJl
UmVuZGVyUmVnaW9ucyhjb25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBjb25zdCBSZW5k
ZXJSZQogICAgIHJldHVybiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xM
T1dJTkcpOwogfQogCitib29sIFJlbmRlckZsb3dUaHJlYWQ6OmRlcGVuZHNPbihSZW5kZXJGbG93
VGhyZWFkKiBvdGhlclJlbmRlckZsb3dUaHJlYWQpIGNvbnN0Cit7CisgICAgaWYgKG1fbGF5b3V0
QmVmb3JlVGhyZWFkc1NldC5jb250YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIHRoZSBtX2xheW91
dEJlZm9yZVRocmVhZHNTZXQuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXJhdG9yID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCk7Cisg
ICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbGF5
b3V0QmVmb3JlVGhyZWFkc1NldC5lbmQoKTsKKyAgICBmb3IgKDsgaXRlcmF0b3IgIT0gZW5kOyAr
K2l0ZXJhdG9yKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIGJlZm9yZUZsb3dU
aHJlYWQgPSAoKml0ZXJhdG9yKS5maXJzdDsKKyAgICAgICAgaWYgKGJlZm9yZUZsb3dUaHJlYWQt
PmRlcGVuZHNPbihvdGhlclJlbmRlckZsb3dUaHJlYWQpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQogewogICAg
IEFTU0VSVChyZW5kZXJSZWdpb24pOwpAQCAtMTYxLDYgKzE3OSwxOSBAQCB2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQog
ICAgICAgICBtX3JlZ2lvbkxpc3QuaW5zZXJ0QmVmb3JlKGl0LCByZW5kZXJSZWdpb24pOwogICAg
IH0KIAorICAgIEFTU0VSVCghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkpOworICAgIGlmIChyZW5k
ZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSkgeworICAgICAgICBpZiAocmVuZGVyUmVnaW9u
LT5wYXJlbnRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgeworICAgICAgICAgICAgLy8g
UmVnaXN0ZXIgb3Vyc2VsZiB0byBnZXQgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc3RhdGUgY2hh
bmdlcy4KKyAgICAgICAgICAgIHJlbmRlclJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5tX29i
c2VydmVyVGhyZWFkc1NldC5hZGQodGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlclJlZ2lvbi0+cGFy
ZW50Rmxvd1RocmVhZCgpKTsKKyAgICB9CisKKyAgICByZW5kZXJSZWdpb24tPnNldElzVmFsaWQo
dHJ1ZSk7CisKICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOwogfQogCkBAIC0xNjgsMTAgKzE5OSw3
OCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQoUmVuZGVy
UmVnaW9uKiByZW5kZXJSZWdpb24pCiB7CiAgICAgQVNTRVJUKHJlbmRlclJlZ2lvbik7CiAgICAg
bV9yZWdpb25MaXN0LnJlbW92ZShyZW5kZXJSZWdpb24pOworICAgIGlmIChyZW5kZXJSZWdpb24t
PnBhcmVudEZsb3dUaHJlYWQoKSkgeworICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxp
ZCgpKSB7CisgICAgICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+bV9v
YnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0
byBpbnZhbGlkYXRlIHRoZSByZWdpb25zIHJlY3RhbmdsZXMuIFRoZSByZW1vdmVkIHJlZ2lvbgor
ICAgICAgICAgICAgLy8gd2FzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuIEp1c3QgcmV0dXJuIGhl
cmUuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlRGVwZW5k
ZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAg
fQogCiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIAordm9pZCBSZW5kZXJGbG93VGhyZWFk
OjpjaGVja0ludmFsaWRSZWdpb25zKCkKK3sKKyAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0
ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3Qu
ZW5kKCk7ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwor
ICAgICAgICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBi
ZWNhdXNlIGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KKyAgICAgICAgQVNTRVJUKHJlZ2lv
bi0+aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpKTsKKyAgICAgICAgaWYg
KHJlZ2lvbi0+aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5kZXBlbmRz
T24odGhpcykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByZWdpb24tPnBhcmVu
dEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAgICAg
ICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpKTsK
KyAgICAgICAgcmVnaW9uLT5zZXRJc1ZhbGlkKHRydWUpOworICAgICAgICBpbnZhbGlkYXRlUmVn
aW9ucygpOworICAgIH0KKworICAgIGlmIChtX29ic2VydmVyVGhyZWFkc1NldC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGlmeSBhbGwgdGhlIGZsb3cgdGhyZWFkcyB0
aGF0IHdlcmUgZGVwZW5kZW50IG9uIHRoaXMgZmxvdy4KKworICAgIC8vIENyZWF0ZSBhIGNvcHkg
b2YgdGhlIGxpc3QgZmlyc3QuIFRoYXQncyBiZWNhdXNlIG9ic2VydmVycyBtaWdodCBjaGFuZ2Ug
dGhlIGxpc3Qgd2hlbiBjYWxsaW5nIGNoZWNrSW52YWxpZFJlZ2lvbnMuCisgICAgVmVjdG9yPFJl
bmRlckZsb3dUaHJlYWQqPiBvYnNlcnZlcnM7CisgICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJU
aHJlYWRzU2V0LCBvYnNlcnZlcnMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYnNl
cnZlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVh
ZCA9IG9ic2VydmVycy5hdChpKTsKKyAgICAgICAgZmxvd1RocmVhZC0+Y2hlY2tJbnZhbGlkUmVn
aW9ucygpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5
T25GbG93VGhyZWFkKFJlbmRlckZsb3dUaHJlYWQqIG90aGVyRmxvd1RocmVhZCkKK3sKKyAgICBz
dGQ6OnBhaXI8UmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7CisgICAg
aWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3
ZSBzZWUgdGhpcyBkZXBlbmRlbmN5LiBNYWtlIHN1cmUgd2UgcmVjYWxjdWxhdGUgYWxsIHRoZSBk
ZXBlbmRlbmNpZXMuCisgICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVtb3ZlRGVw
ZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCit7
CisgICAgYm9vbCByZW1vdmVkID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LnJlbW92ZShvdGhl
ckZsb3dUaHJlYWQpOworICAgIGlmIChyZW1vdmVkKSB7CisgICAgICAgIGNoZWNrSW52YWxpZFJl
Z2lvbnMoKTsKKyAgICAgICAgdmlldygpLT5zZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5
KHRydWUpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5j
aWVzKFJlbmRlckZsb3dUaHJlYWRMaXN0JiBsaXN0KQoreworICAgIGZvciAoUmVuZGVyRmxvd1Ro
cmVhZENvdW50ZWRTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQu
YmVnaW4oKTsgaXRlciAhPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuZW5kKCk7ICsraXRlcikg
eworICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gKCppdGVyKS5maXJzdDsK
KyAgICAgICAgaWYgKGxpc3QuY29udGFpbnMoZmxvd1RocmVhZCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgZmxvd1RocmVhZC0+cHVzaERlcGVuZGVuY2llcyhsaXN0KTsKKyAgICAg
ICAgbGlzdC5hZGQoZmxvd1RocmVhZCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmxheW91dCgpCiB7CiAgICAgaWYgKG1fcmVnaW9uc0ludmFsaWRhdGVkKSB7CkBAIC0xODEs
NiArMjgwLDkgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAg
Zm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2lu
KCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAg
ICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogCisgICAgICAgICAgICAgICAgaWYgKCFy
ZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAgICAgICAg
ICAgICBJbnRSZWN0IHJlZ2lvblJlY3Q7CkBAIC0xOTIsNyArMjk0LDcgQEAgdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9
IHJlZ2lvblJlY3Qud2lkdGgoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICByZWdpb24tPnNldFJlZ2lvblJlY3QocmVnaW9uUmVjdCk7ICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIHJlZ2lvbi0+c2V0UmVnaW9uUmVjdChyZWdpb25SZWN0KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIwNiw2ICszMDgsOCBAQCB2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogCiAgICAgZm9yIChSZW5kZXJSZWdpb25M
aXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdp
b25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAq
aXRlcjsKKyAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAgIGxv
Z2ljYWxXaWR0aCA9IG1heChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5jb250
ZW50V2lkdGgoKSA6IHJlZ2lvbi0+Y29udGVudEhlaWdodCgpLCBsb2dpY2FsV2lkdGgpOwogICAg
IH0KQEAgLTIxOSw2ICszMjMsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KCkKIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9
IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVy
KSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgICAgIGlmICgh
cmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQVNTRVJU
KCFyZWdpb24tPm5lZWRzTGF5b3V0KCkpOwogICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmNvbnRlbnRIZWlnaHQoKSA6IHJlZ2lvbi0+
Y29udGVudFdpZHRoKCk7CiAgICAgfQpAQCAtMjk5LDYgKzQwNSw4IEBAIHZvaWQgUmVuZGVyRmxv
d1RocmVhZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhjb25zdCBMYXlvdXRSZWN0JiByZXBh
aW50UmVjdCwKIHsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBt
X3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikg
ewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBpZiAoIXJl
Z2lvbi0+aXNWYWxpZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gV2Ug
b25seSBoYXZlIHRvIGlzc3VlIGEgcmVwYWludCBpbiB0aGlzIHJlZ2lvbiBpZiB0aGUgcmVnaW9u
IHJlY3QgaW50ZXJzZWN0cyB0aGUgcmVwYWludCByZWN0LgogICAgICAgICBMYXlvdXRSZWN0IGZs
aXBwZWRSZWdpb25SZWN0KHJlZ2lvbi0+cmVnaW9uUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCmluZGV4IDA3ZmZjZDFiNzg0MDc4ZWYwMTgzNmY4
N2UyYjE4YTNhNzU2OWYyY2QuLmUxMWIxZmE3MWUwMThmYTg3MjJlMGQyZDhhNWFkNDVkOTMxZmVl
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAt
MzIsNiArMzIsNyBAQAogCiAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0z
OSw5ICs0MCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckZsb3dU
aHJlYWQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIAordHlwZWRl
ZiBMaXN0SGFzaFNldDxSZW5kZXJGbG93VGhyZWFkKj4gUmVuZGVyRmxvd1RocmVhZExpc3Q7Cit0
eXBlZGVmIEhhc2hDb3VudGVkU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5kZXJGbG93VGhyZWFk
Q291bnRlZFNldDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyUmVnaW9uKj4gUmVuZGVyUmVn
aW9uTGlzdDsKIAogLy8gUmVuZGVyRmxvd1RocmVhZCBpcyB1c2VkIHRvIGNvbGxlY3QgYWxsIHRo
ZSByZW5kZXIgb2JqZWN0cyB0aGF0IHBhcnRpY2lwYXRlIGluIGEKQEAgLTg4LDE2ICs5MiwzNCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAorICAgIHZvaWQgcHVzaERlcGVuZGVuY2llcyhS
ZW5kZXJGbG93VGhyZWFkTGlzdCYpOworCiAgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlSW5SZWdp
b25zKGNvbnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSk7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZs
b3dUaHJlYWQiOyB9CiAKKyAgICBib29sIGRlcGVuZHNPbihSZW5kZXJGbG93VGhyZWFkKiBvdGhl
clJlbmRlckZsb3dUaHJlYWQpIGNvbnN0OworICAgIHZvaWQgYWRkRGVwZW5kZW5jeU9uRmxvd1Ro
cmVhZChSZW5kZXJGbG93VGhyZWFkKik7CisgICAgdm9pZCByZW1vdmVEZXBlbmRlbmN5T25GbG93
VGhyZWFkKFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICB2b2lkIGNoZWNrSW52YWxpZFJlZ2lvbnMo
KTsKKwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gRmxvd1RocmVhZENo
aWxkTGlzdDsKICAgICBGbG93VGhyZWFkQ2hpbGRMaXN0IG1fZmxvd1RocmVhZENoaWxkTGlzdDsK
IAogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CiAgICAgUmVuZGVyUmVnaW9uTGlzdCBt
X3JlZ2lvbkxpc3Q7CisKKyAgICAvLyBPYnNlcnZlciBmbG93IHRocmVhZHMgaGF2ZSBpbnZhbGlk
IHJlZ2lvbnMgdGhhdCBkZXBlbmQgb24gdGhlIHN0YXRlIG9mIHRoaXMgdGhyZWFkCisgICAgLy8g
dG8gcmUtdmFsaWRhdGUgdGhlaXIgcmVnaW9ucy4gS2VlcGluZyBhIHNldCBvZiBvYnNlcnZlciB0
aHJlYWRzIG1ha2UgaXQgZWFzeQorICAgIC8vIHRvIG5vdGlmeSB0aGVtIHdoZW4gYSByZWdpb24g
d2FzIHJlbW92ZWQgZnJvbSB0aGlzIGZsb3cuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRT
ZXQgbV9vYnNlcnZlclRocmVhZHNTZXQ7CisKKyAgICAvLyBTb21lIHRocmVhZHMgbmVlZCB0byBo
YXZlIGEgY29tcGxldGUgbGF5b3V0IGJlZm9yZSB3ZSBsYXlvdXQgdGhpcyBmbG93LgorICAgIC8v
IFRoYXQncyBiZWNhdXNlIHRoZXkgY29udGFpbiBhIFJlbmRlclJlZ2lvbiB0aGF0IHNob3VsZCBk
aXNwbGF5IHRoaXMgdGhyZWFkLiBUaGUgc2V0IG1ha2VzIGl0CisgICAgLy8gZWFzeSB0byBzb3J0
IHRoZSBvcmRlciBvZiB0aHJlYWRzIGxheW91dC4KKyAgICBSZW5kZXJGbG93VGhyZWFkQ291bnRl
ZFNldCBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQ7CisKICAgICBib29sIG1fcmVnaW9uc0ludmFs
aWRhdGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0LmNwcAppbmRleCBlNjcyOWZhNTgxZWVlMjU0YWI4NmI3MjI3ZDRkNjBmODY0
OTIwNzA2Li40ZjJmZDZiOWQwMGVmZjFjNDAzMjkxNzlmY2I3NTQ4MWM1OWUyMjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJRdW90ZS5oIgorI2luY2x1ZGUgIlJlbmRl
clJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMTAxLDYgKzEwMiw5IEBA
IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUoUmVu
ZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyCiAgICAgICAgIGlmIChvbGRDaGlsZC0+aXNQb3NpdGlv
bmVkKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgICAgICBvd25lci0+ZGly
dHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQob2xkQ2hpbGQpOwogCisgICAgICAgIGlmIChvbGRDaGls
ZC0+aXNSZW5kZXJSZWdpb24oKSkKKyAgICAgICAgICAgIHRvUmVuZGVyUmVnaW9uKG9sZENoaWxk
KS0+ZGV0YWNoUmVnaW9uKCk7CisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAvLyBVcGRhdGUg
Y2FjaGVkIGJvdW5kYXJpZXMgaW4gU1ZHIHJlbmRlcmVycywgaWYgYSBjaGlsZCBpcyByZW1vdmVk
LgogICAgICAgICBvd25lci0+c2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7CkBAIC0xNzcsNiAr
MTgxLDkgQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZShSZW5k
ZXJPYmplY3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIG4KIAogICAgICAgICBpZiAoIW5ld0NoaWxk
LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCiAg
ICAgICAgICAgICBvd25lci0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQobmV3Q2hpbGQpOwor
CisgICAgICAgIGlmIChuZXdDaGlsZC0+aXNSZW5kZXJSZWdpb24oKSkKKyAgICAgICAgICAgIHRv
UmVuZGVyUmVnaW9uKG5ld0NoaWxkKS0+YXR0YWNoUmVnaW9uKCk7CiAgICAgfQogICAgIFJlbmRl
ckNvdW50ZXI6OnJlbmRlcmVyU3VidHJlZUF0dGFjaGVkKG5ld0NoaWxkKTsKICAgICBSZW5kZXJR
dW90ZTo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQobmV3Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCA3MzM3NjU3ZjBmNzgxNTk5NmMzZmU2MTk4
Y2RjMDk3OWMwYTE3MDBmLi43Yzk3Y2Y3YjZiYWZkY2NmMzZhMTlkYThlMTBhZjgzZGNlN2U2NGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDIsMjAg
KzQyLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9u
KE5vZGUqIG5vZGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJS
ZXBsYWNlZChub2RlLCBJbnRTaXplKCkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkK
KyAgICAsIG1fcGFyZW50Rmxvd1RocmVhZCgwKQorICAgICwgbV9pc1ZhbGlkKGZhbHNlKQogewog
fQogCiBSZW5kZXJSZWdpb246On5SZW5kZXJSZWdpb24oKQogewotICAgIGlmIChtX2Zsb3dUaHJl
YWQgJiYgdmlldygpKQotICAgICAgICBtX2Zsb3dUaHJlYWQtPnJlbW92ZVJlZ2lvbkZyb21UaHJl
YWQodGhpcyk7Ci0gICAgbV9mbG93VGhyZWFkID0gMDsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKIHsKICAgICAvLyBEZWxlZ2F0ZSBwYWludGluZyBvZiBjb250ZW50IGluIHJl
Z2lvbiB0byBSZW5kZXJGbG93VGhyZWFkLgotICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgIGlm
ICghbV9mbG93VGhyZWFkIHx8ICFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Zs
b3dUaHJlYWQtPnBhaW50SW50b1JlZ2lvbihwYWludEluZm8sIHJlZ2lvblJlY3QoKSwgTGF5b3V0
UG9pbnQocGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgcGFp
bnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKTsKIH0KQEAgLTYzLDYg
KzYyLDkgQEAgdm9pZCBSZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KIC8vIEhpdCBUZXN0aW5nCiBib29sIFJl
bmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rp
b24pCiB7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0
aW9uKCk7CiAKICAgICAvLyBDaGVjayBvdXIgYm91bmRzIG5leHQuIEZvciB0aGlzIHB1cnBvc2Ug
YWx3YXlzIGFzc3VtZSB0aGF0IHdlIGNhbiBvbmx5IGJlIGhpdCBpbiB0aGUKQEAgLTgwLDE0ICs4
MiwzNiBAQCBib29sIFJlbmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJSZWdpb246OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit2b2lkIFJlbmRlclJlZ2lvbjo6YXR0
YWNoUmVnaW9uKCkKIHsKLSAgICBSZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZmVy
ZW5jZSwgb2xkU3R5bGUpOworICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgaGVyZSBhbmQgbm90IGluIHRoZSBjb25z
dHJ1Y3RvciwgYmVjYXVzZSBSZW5kZXJGbG93VGhyZWFkIAotICAgIC8vIHVzZXMgdGhlIHN0eWxl
KCkgcHJvcGVydHkgd2hpY2ggaXMgbm90IHlldCBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0
b3IuCi0gICAgaWYgKCFvbGRTdHlsZSAmJiBtX2Zsb3dUaHJlYWQpCi0gICAgICAgIG1fZmxvd1Ro
cmVhZC0+YWRkUmVnaW9uVG9UaHJlYWQodGhpcyk7CisgICAgLy8gQnkgbm93IHRoZSBmbG93IHRo
cmVhZCBzaG91bGQgYWxyZWFkeSBiZSBhZGRlZCB0byB0aGUgcmVuZGVyaW5nIHRyZWUsCisgICAg
Ly8gc28gd2UgZ28gdXAgdGhlIHJlbmRlcmluZyBwYXJlbnRzIGFuZCBjaGVjayB0aGF0IHRoaXMg
cmVnaW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBzYW1lCisgICAgLy8gZmxvdyB0aGF0IGl0IGFjdHVh
bGx5IG5lZWRzIHRvIGRpc3BsYXkuIEl0IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIHJlZmVyZW5j
ZS4KKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudE9iamVjdCA9IHBhcmVudCgpOworICAgIG1fcGFy
ZW50Rmxvd1RocmVhZCA9IDA7CisgICAgZm9yICggOyBwYXJlbnRPYmplY3Q7IHBhcmVudE9iamVj
dCA9IHBhcmVudE9iamVjdC0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKHBhcmVudE9iamVjdC0+
aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9
IHRvUmVuZGVyRmxvd1RocmVhZChwYXJlbnRPYmplY3QpOworICAgICAgICAgICAgLy8gRG8gbm90
IHRha2UgaW50byBhY2NvdW50IGEgcmVnaW9uIHRoYXQgbGlua3MgYSBmbG93IHdpdGggaXRzZWxm
LiBUaGUgZGVwZW5kZW5jeQorICAgICAgICAgICAgLy8gY2Fubm90IGNoYW5nZSwgc28gaXQgaXMg
bm90IHdvcnRoIGFkZGluZyBpdCB0byB0aGUgbGlzdC4KKyAgICAgICAgICAgIGlmIChtX2Zsb3dU
aHJlYWQgPT0gbV9wYXJlbnRGbG93VGhyZWFkKSB7CisgICAgICAgICAgICAgICAgbV9mbG93VGhy
ZWFkID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fZmxvd1RocmVhZC0+YWRkUmVn
aW9uVG9UaHJlYWQodGhpcyk7Cit9CisKK3ZvaWQgUmVuZGVyUmVnaW9uOjpkZXRhY2hSZWdpb24o
KQoreworICAgIGlmIChtX2Zsb3dUaHJlYWQpCisgICAgICAgIG1fZmxvd1RocmVhZC0+cmVtb3Zl
UmVnaW9uRnJvbVRocmVhZCh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IGZjZThmYThiZmJhOGJjNTUz
ZDc5ZmQ5MGRkZDM2ODJlYjYwYzc3MWYuLmM0NjUwYjUxNDk3YzQwZDJkMWVkODQ5MGY3M2Y1ZTg3
NDc2ZDA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTQ5
LDEzICs0OSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWdpb25SZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpIHsgbV9yZWdpb25SZWN0ID0gcmVjdDsgfQogICAgIEludFJlY3QgcmVnaW9uUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uUmVjdDsgfQogCisgICAgdm9pZCBhdHRhY2hSZWdp
b24oKTsKKyAgICB2b2lkIGRldGFjaFJlZ2lvbigpOworCisgICAgUmVuZGVyRmxvd1RocmVhZCog
cGFyZW50Rmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Rmxvd1RocmVhZDsgfQor
CisgICAgLy8gVmFsaWQgcmVnaW9ucyBkbyBub3QgY3JlYXRlIGNpcmN1bGFyIGRlcGVuZGVuY2ll
cyB3aXRoIG90aGVyIGZsb3dzLgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWYWxpZDsgfQorICAgIHZvaWQgc2V0SXNWYWxpZChib29sIHZhbGlkKSB7IG1faXNWYWxpZCA9
IHZhbGlkOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIAotICAgIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotCiAg
ICAgUmVuZGVyRmxvd1RocmVhZCogbV9mbG93VGhyZWFkOworCisgICAgLy8gSWYgdGhpcyBSZW5k
ZXJSZWdpb24gaXMgZGlzcGxheWVkIGFzIHBhcnQgb2YgYW5vdGhlciBmbG93LAorICAgIC8vIHdl
IG5lZWQgdG8gY3JlYXRlIGEgZGVwZW5kZW5jeSB0cmVlLCBzbyB0aGF0IGxheW91dCBvZiB0aGUK
KyAgICAvLyByZWdpb25zIGlzIGFsd2F5cyBkb25lIGJlZm9yZSB0aGUgcmVnaW9ucyB0aGVtc2Vs
dmVzLgorICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVhZDsKICAgICBJbnRS
ZWN0IG1fcmVnaW9uUmVjdDsKKworICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsKIAogaW5saW5lIFJl
bmRlclJlZ2lvbiogdG9SZW5kZXJSZWdpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZmRkNzk0YjU5
ZGM1YTJiMzZlNmZlNDEwNTkzNTRmNDY3ZWNmMjIxZC4uNWIyOWJiNTFjNDIwODc2Y2VhNzZmMDA2
ZTBkMmVjMjRlOGZjZmZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcApAQCAtNjQ3LDYgKzY0Nyw1MSBAQCBzdGF0aWMgdm9pZCB3cml0ZShUZXh0
U3RyZWFtJiB0cywgUmVuZGVyTGF5ZXImIGwsCiAgICAgICAgIHdyaXRlKHRzLCAqbC5yZW5kZXJl
cigpLCBpbmRlbnQgKyAxLCBiZWhhdmlvcik7CiB9CiAKK3N0YXRpYyB2b2lkIHdyaXRlUmVuZGVy
Rmxvd1RocmVhZHMoVGV4dFN0cmVhbSYgdHMsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGNvbnN0
IFJlbmRlckxheWVyKiByb290TGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bnRSZWN0JiBwYWludFJlY3QsIGludCBpbmRlbnQsIFJlbmRlckFzVGV4dEJlaGF2aW9yIGJlaGF2
aW9yKQoreworICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWRMaXN0KiBsaXN0ID0gcmVuZGVyVmll
dy0+cmVuZGVyRmxvd1RocmVhZExpc3QoKTsKKyAgICBpZiAoIWxpc3QgfHwgbGlzdC0+aXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAg
ICB0cyA8PCAiRmxvdyBUaHJlYWRzXG4iOworCisgICAgZm9yIChSZW5kZXJGbG93VGhyZWFkTGlz
dDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxpc3QtPmJlZ2luKCk7IGl0ZXIgIT0gbGlzdC0+ZW5k
KCk7ICsraXRlcikgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiByZW5kZXJGbG93
VGhyZWFkID0gKml0ZXI7CisKKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwor
ICAgICAgICB0cyA8PCAiVGhyZWFkIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJl
YWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xuIjsKKworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIg
PSByZW5kZXJGbG93VGhyZWFkLT5sYXllcigpOworICAgICAgICB3cml0ZUxheWVycyh0cywgcm9v
dExheWVyLCBsYXllciwgcGFpbnRSZWN0LCBpbmRlbnQgKyAyLCBiZWhhdmlvcik7CisKKyAgICAg
ICAgLy8gRGlzcGxheSB0aGUgcmVuZGVyIHJlZ2lvbnMgYXR0YWNoZWQgdG8gdGhpcyBmbG93IHRo
cmVhZAorICAgICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiBmbG93VGhyZWFkUmVnaW9uTGlz
dCA9IHJlbmRlckZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKKyAgICAgICAgaWYgKCFm
bG93VGhyZWFkUmVnaW9uTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHdyaXRlSW5kZW50
KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgICAgIHRzIDw8ICJSZWdpb25zIGZvciBmbG93ICci
PDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZCgpIDw8ICInXG4iOworICAgICAgICAgICAg
Zm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdFJSID0gZmxvd1RocmVhZFJl
Z2lvbkxpc3QuYmVnaW4oKTsgaXRSUiAhPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5lbmQoKTsgKytp
dFJSKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSAqaXRS
UjsKKyAgICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMik7CisgICAgICAg
ICAgICAgICAgdHMgPDwgIlJlbmRlclJlZ2lvbiI7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRl
clJlZ2lvbi0+bm9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YWdOYW1lID0g
Z2V0VGFnTmFtZShyZW5kZXJSZWdpb24tPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghdGFnTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsi
IDw8IHRhZ05hbWUgPDwgIn0iOworICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9u
LT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJSZWdpb24tPm5vZGUoKS0+aGFzSUQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihyZW5kZXJSZWdpb24tPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KCFyZW5kZXJSZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiBp
bnZhbGlkIjsKKyAgICAgICAgICAgICAgICB0cyA8PCAiIHdpdGggaW5kZXggIiA8PCByZW5kZXJS
ZWdpb24tPnN0eWxlKCktPnJlZ2lvbkluZGV4KCkgPDwgIlxuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwogc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0LCBpbnQgaW5kZW50LCBS
ZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvcikKIHsKQEAgLTcxMCw0MiArNzU1LDkgQEAgc3Rh
dGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIFJlbmRlckxheWUKICAgICAKICAgICAvLyBBbHRvdWdoIHRoZSBSZW5kZXJGbG93
VGhyZWFkIHJlcXVpcmVzIGEgbGF5ZXIsIGl0IGlzIG5vdCBjb2xsZWN0ZWQgYnkgaXRzIHBhcmVu
dCwKICAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyZWF0IGl0IGFzIGEgc3BlY2lhbCBjYXNlLgotICAg
IGJvb2wgZmlyc3RSZW5kZXJGbG93VGhyZWFkID0gdHJ1ZTsKLSAgICBmb3IgKFJlbmRlck9iamVj
dCogY2hpbGQgPSBsLT5yZW5kZXJlcigpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJGbG93VGhy
ZWFkKCkpIHsKLSAgICAgICAgICAgIGlmIChmaXJzdFJlbmRlckZsb3dUaHJlYWQpIHsKLSAgICAg
ICAgICAgICAgICBmaXJzdFJlbmRlckZsb3dUaHJlYWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKLSAgICAgICAgICAgICAgICB0cyA8PCAiRmxvdyBU
aHJlYWRzXG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3QgUmVuZGVyRmxvd1Ro
cmVhZCogcmVuZGVyRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChjaGlsZCk7Ci0gICAg
ICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgICAgICB0cyA8PCAi
VGhyZWFkIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQo
KSA8PCAiJ1xuIjsKLSAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlckZsb3dU
aHJlYWQtPmxheWVyKCk7Ci0gICAgICAgICAgICB3cml0ZUxheWVycyh0cywgcm9vdExheWVyLCBs
YXllciwgcGFpbnREaXJ0eVJlY3QsIGluZGVudCArIDIsIGJlaGF2aW9yKTsKLQotICAgICAgICAg
ICAgLy8gRGlzcGxheSB0aGUgcmVuZGVyIHJlZ2lvbnMgYXR0YWNoZWQgdG8gdGhpcyBmbG93IHRo
cmVhZAotICAgICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVhZFJlZ2lv
bkxpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgICAgICAg
ICBpZiAoIWZsb3dUaHJlYWRSZWdpb25MaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
IHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgICAgICAgICB0cyA8PCAiUmVn
aW9ucyBmb3IgZmxvdyAnIjw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xu
IjsKLSAgICAgICAgICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9y
IGl0UlIgPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5iZWdpbigpOyBpdFJSICE9IGZsb3dUaHJlYWRS
ZWdpb25MaXN0LmVuZCgpOyArK2l0UlIpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyUmVn
aW9uKiByZW5kZXJSZWdpb24gPSAqaXRSUjsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVJbmRl
bnQodHMsIGluZGVudCArIDIpOwotICAgICAgICAgICAgICAgICAgICB0cyA8PCAiUmVuZGVyUmVn
aW9uIjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9kZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVuZGVy
UmVnaW9uLT5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YWdOYW1lLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05h
bWUgPDwgIn0iOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9k
ZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5ub2RlKCktPmhhc0lEKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+bm9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgdHMgPDwgIiB3aXRoIGluZGV4ICIgPDwgcmVuZGVyUmVnaW9uLT5zdHlsZSgp
LT5yZWdpb25JbmRleCgpIDw8ICJcbiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgaWYgKGwtPnJlbmRlcmVyKCktPmlzUmVuZGVyVmlldygpKSB7Cisg
ICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0b1JlbmRlclZpZXcobC0+cmVuZGVyZXIo
KSk7CisgICAgICAgIHdyaXRlUmVuZGVyRmxvd1RocmVhZHModHMsIHJlbmRlclZpZXcsIHJvb3RM
YXllciwgcGFpbnREaXJ0eVJlY3QsIGluZGVudCwgYmVoYXZpb3IpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDEzNzQ5ZmI3YzVkODNhMDQ0
NGQ1MjRhOTBiOTdjZWUyY2IwN2M1YWEuLmFjYWNlNTZhMTM2NmZkMzhjYmJmMGVhMWI4MWJmNDgx
OGQ2MjQ5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgUmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBub2RlLCBGcmFtZVZpZXcq
IHZpZXcpCiAgICAgLCBtX21heGltYWxPdXRsaW5lU2l6ZSgwKQogICAgICwgbV9wYWdlTG9naWNh
bEhlaWdodCgwKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCi0gICAg
LCBtX2hhc1JlbmRlckZsb3dUaHJlYWRzKGZhbHNlKQorICAgICwgbV9pc1JlbmRlckZsb3dUaHJl
YWRPcmRlckRpcnR5KGZhbHNlKQogICAgICwgbV9sYXlvdXRTdGF0ZSgwKQogICAgICwgbV9sYXlv
dXRTdGF0ZURpc2FibGVDb3VudCgwKQogewpAQCAtMTI4LDggKzEyOCwxMSBAQCB2b2lkIFJlbmRl
clZpZXc6OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBmYWxzZTsK
ICAgICBtX2xheW91dFN0YXRlID0gJnN0YXRlOwogCi0gICAgaWYgKG5lZWRzTGF5b3V0KCkpCisg
ICAgaWYgKG5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOwor
ICAgICAgICBpZiAoaGFzUmVuZGVyRmxvd1RocmVhZHMoKSkKKyAgICAgICAgICAgIGxheW91dFJl
bmRlckZsb3dUaHJlYWRzKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGxheW91dERlbHRhKCkgPT0g
TGF5b3V0U2l6ZSgpKTsKICAgICBBU1NFUlQobV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCA9PSAw
KTsKQEAgLTgwOCw5ICs4MTEsMTEgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIAogUmVuZGVy
Rmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgZmxvd1RocmVhZCkKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBmaXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsK
LSAgICAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVuZGVyRmxv
d1RocmVhZChyZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlckZsb3dUaHJlYWRMaXN0KQorICAg
ICAgICBtX3JlbmRlckZsb3dUaHJlYWRMaXN0ID0gYWRvcHRQdHIobmV3IFJlbmRlckZsb3dUaHJl
YWRMaXN0KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKFJlbmRlckZsb3dUaHJlYWRMaXN0
OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsgaXRlciAh
PSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBS
ZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKICAgICAgICAgICAgIGlmIChm
bG93UmVuZGVyZXItPmZsb3dUaHJlYWQoKSA9PSBmbG93VGhyZWFkKQogICAgICAgICAgICAgICAg
IHJldHVybiBmbG93UmVuZGVyZXI7CiAgICAgICAgIH0KQEAgLTgxOSw4ICs4MjQsMzUgQEAgUmVu
ZGVyRmxvd1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgZmxvd1QKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIg
PSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQoKSwgZmxvd1Ro
cmVhZCk7CiAgICAgZmxvd1JlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGbG93VGhyZWFkOjpjcmVh
dGVGbG93VGhyZWFkU3R5bGUoc3R5bGUoKSkpOwogICAgIGFkZENoaWxkKGZsb3dSZW5kZXJlcik7
Ci0gICAgbV9oYXNSZW5kZXJGbG93VGhyZWFkcyA9IHRydWU7CisgICAgCisgICAgbV9yZW5kZXJG
bG93VGhyZWFkTGlzdC0+YWRkKGZsb3dSZW5kZXJlcik7CisgICAgc2V0SXNSZW5kZXJGbG93VGhy
ZWFkT3JkZXJEaXJ0eSh0cnVlKTsKKwogICAgIHJldHVybiBmbG93UmVuZGVyZXI7CiB9CiAKK3Zv
aWQgUmVuZGVyVmlldzo6bGF5b3V0UmVuZGVyRmxvd1RocmVhZHMoKQoreworICAgIEFTU0VSVCht
X3JlbmRlckZsb3dUaHJlYWRMaXN0KTsKKworICAgIGlmIChpc1JlbmRlckZsb3dUaHJlYWRPcmRl
ckRpcnR5KCkpIHsKKyAgICAgICAgLy8gQXJyYW5nZSB0aGUgdGhyZWFkIGxpc3QgYWNjb3JkaW5n
IHRvIGRlcGVuZGVuY2llcy4KKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZExpc3Qgc29ydGVkTGlz
dDsKKyAgICAgICAgZm9yIChSZW5kZXJGbG93VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1f
cmVuZGVyRmxvd1RocmVhZExpc3QtPmJlZ2luKCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93VGhyZWFk
TGlzdC0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxv
d1JlbmRlcmVyID0gKml0ZXI7CisgICAgICAgICAgICBpZiAoc29ydGVkTGlzdC5jb250YWlucyhm
bG93UmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZmxv
d1JlbmRlcmVyLT5wdXNoRGVwZW5kZW5jaWVzKHNvcnRlZExpc3QpOworICAgICAgICAgICAgc29y
dGVkTGlzdC5hZGQoZmxvd1JlbmRlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBtX3JlbmRlckZs
b3dUaHJlYWRMaXN0LT5zd2FwKHNvcnRlZExpc3QpOworICAgICAgICBzZXRJc1JlbmRlckZsb3dU
aHJlYWRPcmRlckRpcnR5KGZhbHNlKTsKKyAgICB9CisKKyAgICBmb3IgKFJlbmRlckZsb3dUaHJl
YWRMaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsg
aXRlciAhPSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAg
IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9ICppdGVyOworICAgICAgICBmbG93UmVu
ZGVyZXItPmxheW91dElmTmVlZGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA3ZDg0ODhjODRjYTU4
NzMzYjljZWZiZGU1MTUwMzZjNzZmYjhkMjE0Li43NWM2YjI3MTQyYjFiOWUzMWUwNDIxZGNkYTBl
OWRkYjRkOTM3ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
Niw2ICszNyw4IEBAIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFJlbmRlckxheWVyQ29tcG9z
aXRvcjsKICNlbmRpZgogCit0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBS
ZW5kZXJGbG93VGhyZWFkTGlzdDsKKwogY2xhc3MgUmVuZGVyVmlldyA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhOb2RlKiwgRnJhbWVWaWV3Kik7CkBAIC0x
NjcsNyArMTcwLDE2IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0
OwogCiAgICAgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCk7Ci0gICAgYm9vbCBoYXNSZW5kZXJGbG93VGhyZWFk
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVuZGVyRmxvd1RocmVhZHM7IH0KKyAgICBib29sIGhh
c1JlbmRlckZsb3dUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJGbG93VGhyZWFkTGlz
dCAmJiAhbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+aXNFbXB0eSgpOyB9CisgICAgdm9pZCBsYXlv
dXRSZW5kZXJGbG93VGhyZWFkcygpOworICAgIGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eTsgfQor
ICAgIHZvaWQgc2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eShib29sIGRpcnR5KQorICAg
IHsKKyAgICAgICAgbV9pc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5ID0gZGlydHk7CisgICAg
ICAgIGlmIChkaXJ0eSkKKyAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIH0K
KyAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkTGlzdCogcmVuZGVyRmxvd1RocmVhZExpc3QoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LmdldCgpOyB9CiAKICAgICB2b2lk
IHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKTsKICAgICAKQEAgLTI0NiwxMiArMjU4LDEzIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9wYWdlTG9naWNhbEhlaWdodDsKICAgICBib29sIG1fcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkOwotICAgIGJvb2wgbV9oYXNSZW5kZXJGbG93VGhyZWFkczsKKyAgICBib29s
IG1faXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eTsKICAgICBMYXlvdXRTdGF0ZSogbV9sYXlv
dXRTdGF0ZTsKICAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50OwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJDb21wb3Np
dG9yPiBtX2NvbXBvc2l0b3I7CiAjZW5kaWYKKyAgICBPd25QdHI8UmVuZGVyRmxvd1RocmVhZExp
c3Q+IG1fcmVuZGVyRmxvd1RocmVhZExpc3Q7CiB9OwogCiBpbmxpbmUgUmVuZGVyVmlldyogdG9S
ZW5kZXJWaWV3KFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104149</attachid>
            <date>2011-08-16 22:07:24 -0700</date>
            <delta_ts>2011-08-18 07:36:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66142-20110817080721.patch</filename>
            <type>text/plain</type>
            <size>36107</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2N2EwOTRjZWU5YzBiZmU1ZWFkMDBj
YzAxZmRiOGY2Y2ZiZDdlM2EzLi41NzBlYjA4MTAxNzUwZDg5ZTYwYTk0OGM0MzEwMTQzZTNmMTE2
ZTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMTYgIEFsZXhhbmRydSBDaGljdWxp
dGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXSBSZW5kZXJSZWdp
b24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVuZGVyRmxvd1RocmVhZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93
cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktc2FtZS1mbG93Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTE2ICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBmYXN0L2Nzcy9jdXN0b20tZm9u
dC14aGVpZ2h0Lmh0bWwgaXMgYXNzZXJ0aW5nIG9uIGFsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1y
ZW1vdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDAyY2MzNzM4NTI0YzZmNWY3ZGU2OTlm
MjJhOWUzMTRiNTI2OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAw
eDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dDJworICBUaHJl
YWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QScKKyAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAxCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9
IHdpdGggaW5kZXggMgorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJworICBSZWdpb25z
IGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gd2l0aCBpbmRleCAxCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5h
bWljLXJlbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktZHluYW1pYy1yZW1vdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWU2ZjBhMGM0Y2RiMzVlNzQ5NTZk
YWJjYzEwZGNiYWY4ZThiNTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbApAQCAtMCwwICsxLDM3
IEBACis8IURPQ1RZUEUgSFRNTD4KKworPHN0eWxlPgorLmZsb3dBIHsgLXdlYmtpdC1mbG93OiAn
Zmxvd0EnOyB9CisuZmxvd0IgeyAtd2Via2l0LWZsb3c6ICdmbG93Qic7IH0KKy5mbG93QyB7IC13
ZWJraXQtZmxvdzogJ2Zsb3dDJzsgfQorCisucmVnaW9uRmxvd0EgeyBjb250ZW50OiAtd2Via2l0
LWZyb20tZmxvdygnZmxvd0EnKTsgfQorLnJlZ2lvbkZsb3dCIHsgY29udGVudDogLXdlYmtpdC1m
cm9tLWZsb3coJ2Zsb3dCJyk7IH0KKy5yZWdpb25GbG93QyB7IGNvbnRlbnQ6IC13ZWJraXQtZnJv
bS1mbG93KCdmbG93QycpOyB9CisKKy5pbmRleDEgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDE7
IH0KKy5pbmRleDIgeyAtd2Via2l0LWNvbnRlbnQtb3JkZXI6IDI7IH0KKy5pbmRleDMgeyAtd2Vi
a2l0LWNvbnRlbnQtb3JkZXI6IDM7IH0KKzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9ImZsb3dBIj4K
KyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzxk
aXYgY2xhc3M9ImZsb3dCIj4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25GbG93QyBpbmRleDEiPjwv
ZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImZsb3dDIj4KKyAgICA8IS0tIFRoZSBmb2xsb3dp
bmcgcmVnaW9uIHdpbGwgaW5pdGlhbGx5IGJlIGludmFsaWQuIFJlbW92aW5nIHJlZ2lvbkZsb3dD
IHNob3VsZCBtYWtlIGl0IHZhbGlkIGFnYWluLiAtLT4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb25G
bG93QSBpbmRleDEiPjwvZGl2PgorPC9kaXY+CisKKzwhLS0gRm9yY2UgdGhlIGNyZWF0aW9uIG9m
IHRoZSBmbG93cy4gSW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBhdm9pZCBjcmVhdGluZyBmbG93cyBp
ZiB0aGVyZSBhcmUgbm8gcmVhY2hhYmxlIHJlZ2lvbnMuIC0tPgorPGRpdiBjbGFzcz0icmVnaW9u
Rmxvd0EgaW5kZXgyIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNl
dFRvcDsgICAgLy8gZm9yY2UgbGF5b3V0CisgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgicmVnaW9uRmxvd0MiKVswXTsKKyAgICBlbC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGVsKTsKKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNTQ4NmJlYmUzMzliZjI4OTA0
NTA5NGE0Mjg1YzJmZWU2OWU1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJl
bmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorRmxvdyBUaHJlYWRzCisgIFRocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJworICAg
IFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkIHdpdGggaW5kZXggMQorICAgIFJlbmRlclJlZ2lv
biB7RElWfSB3aXRoIGluZGV4IDIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycKKyAg
UmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IHdpdGggaW5k
ZXggMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGluZGV4IDMKKyAgVGhyZWFkIHdpdGgg
Zmxvdy1uYW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCisgICAgUmVuZGVy
UmVnaW9uIHtESVZ9IHdpdGggaW5kZXggMgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSB3aXRoIGlu
ZGV4IDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LXNhbWUtZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktc2FtZS1mbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYyOTIyNDMyMTA3NzNiODI1YTNhOTc0
ZTM5ZjJkNjQ2M2IwZTkzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
RE9DVFlQRSBIVE1MPgorCis8c3R5bGU+CisuZmxvd0EgeyAtd2Via2l0LWZsb3c6ICdmbG93QSc7
IH0KKy5mbG93QiB7IC13ZWJraXQtZmxvdzogJ2Zsb3dCJzsgfQorLmZsb3dDIHsgLXdlYmtpdC1m
bG93OiAnZmxvd0MnOyB9CisKKy5yZWdpb25GbG93QSB7IGNvbnRlbnQ6IC13ZWJraXQtZnJvbS1m
bG93KCdmbG93QScpOyB9CisucmVnaW9uRmxvd0IgeyBjb250ZW50OiAtd2Via2l0LWZyb20tZmxv
dygnZmxvd0InKTsgfQorLnJlZ2lvbkZsb3dDIHsgY29udGVudDogLXdlYmtpdC1mcm9tLWZsb3co
J2Zsb3dDJyk7IH0KKworLmluZGV4MSB7IC13ZWJraXQtY29udGVudC1vcmRlcjogMTsgfQorLmlu
ZGV4MiB7IC13ZWJraXQtY29udGVudC1vcmRlcjogMjsgfQorLmluZGV4MyB7IC13ZWJraXQtY29u
dGVudC1vcmRlcjogMzsgfQorPC9zdHlsZT4KKworPGRpdiBjbGFzcz0iZmxvd0EiPgorICAgIDwh
LS0gVGhlIGZvbGxvd2luZyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQuIERpcmVjdCBjaXJjdWxh
ciByZWZlcmVuY2UuIC0tPgorICAgIDxkaXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MSI+PC9k
aXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxvd0IiPgorICAgIDxkaXYgY2xhc3M9InJlZ2lv
bkZsb3dDIGluZGV4MSI+PC9kaXY+CisgICAgPCEtLSBUaGUgZm9sbG93aW5nIHJlZ2lvbiBzaG91
bGQgYmUgaWdub3JlZC4gRGlyZWN0IGNpcmN1bGFyIHJlZmVyZW5jZS4gLS0+CisgICAgPGRpdiBj
bGFzcz0iZmxvd0MgcmVnaW9uRmxvd0MgaW5kZXgyIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNs
YXNzPSJmbG93QyI+CisgICAgPCEtLSBUaGUgZm9sbG93aW5nIHJlZ2lvbiBzaG91bGQgYmUgaW52
YWxpZC4gQ2lyY3VsYXIgcmVmZXJlbmNlIHRocm91Z2ggZmxvd0Igd2hpY2ggYWxyZWFkeSBoYXMg
Y3JlYXRlZCBhIGxpbmsgdG8gdGhpcyBmbG93CisgICAgICAgICB0aHJvdWdoIHRoZSAicmVnaW9u
Rmxvd0MgaW5kZXgxIiByZWdpb24uIC0tPgorICAgIDxkaXYgY2xhc3M9InJlZ2lvbkZsb3dCIGlu
ZGV4MSI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uRmxvd0EgaW5kZXgyIj48L2Rpdj4K
KzwvZGl2PgorCis8IS0tIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmxvd3MuIEluIHRoZSBm
dXR1cmUgd2UgbWlnaHQgYXZvaWQgY3JlYXRpbmcgZmxvd3MgaWYgdGhlcmUgYXJlIG5vIHJlYWNo
YWJsZSByZWdpb25zLiAtLT4KKzxkaXYgY2xhc3M9InJlZ2lvbkZsb3dBIGluZGV4MyI+PC9kaXY+
Cis8ZGl2IGNsYXNzPSJyZWdpb25GbG93QiBpbmRleDIiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVn
aW9uRmxvd0MgaW5kZXgzIj48L2Rpdj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhODI4Y2VjMDAzMjMxNzQ3MWE3
YThiMTg3MWU1M2JlMWM1ZmIxNjNmLi41NmQ3ZjQ4MWUzOWE4MmZlNTljMGY5ZmNlNmJjNmY1ZWYw
NjZjMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTEtMDgtMTYgIEFsZXhhbmRy
dSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXSBS
ZW5kZXJSZWdpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYSBwYXJlbnQgUmVuZGVyRmxvd1RocmVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNDIK
KworICAgICAgICBBZGRlZCBjb2RlIHRoYXQgY2hlY2tzIHRoZSBwYXJlbnQgUmVuZGVyRmxvd1Ro
cmVhZCBvZiBhIFJlbmRlclJlZ2lvbiBhbmQgY3JlYXRlcworICAgICAgICBhIGRlcGVuZGVuY3kg
Zm9yIGl0cyByZWZlcmVuY2VkIFJlbmRlckZsb3dUaHJlYWQgKGZyb20gQ1NTIHN0eWxlKS4KKwor
ICAgICAgICBUaGVyZSBhcmUgdHdvIGNhc2VzOgorICAgICAgICAxLiBBIFJlbmRlclJlZ2lvbiB0
cmllcyB0byBkaXNwbGF5IHRoZSBmbG93IHRocmVhZCB0aGF0IGxhaWQgaXQgb3V0LiBJbiB0aGlz
IGNhc2UKKyAgICAgICAgdGhlIHJlZ2lvbiB3aWxsIGJlIGlnbm9yZWQgYW5kIHdpbGwgbm90IHBh
cnRpY2lwYXRlIGluIHRoZSBmbG93IHRocmVhZHMgcmVnaW9ucyBsaXN0LgorICAgICAgICAyLiBB
IFJlbmRlclJlZ2lvbiB0cmllcyB0byBkaXNwbGF5IGEgZmxvdyB0aHJlYWQgdGhhdCBjb250YWlu
cyBhbm90aGVyIHJlZ2lvbiB0aGF0CisgICAgICAgIHRyaWVzIHRvIGRpc3BsYXkgdGhlIGZpcnN0
IHJlZ2lvbidzIGZsb3cgdGhyZWFkLiBUaGlzIG9uZSBjYW4gYmUgZ2VuZXJhbGl6ZWQgd2l0aCBh
bnkKKyAgICAgICAgbnVtYmVyIG9mIGludGVybWVkaWF0ZSBmbG93IHRocmVhZHMuIEluIHRoaXMg
Y2FzZSB0aGUgcmVjdXJzaW9uIGlzIGRldGVjdGVkIGFuZCBvbmx5IHRoZQorICAgICAgICBmaXJz
dCBhZGRlZCByZWdpb24gd2lsbCBhY3R1YWxseSBiZSBzZWxlY3RlZC4gVGhlIG90aGVyIHJlZ2lv
biB3aWxsIGJlIGlnbm9yZWQuIEhvd2V2ZXIsCisgICAgICAgIHdoZW4gdGhlIHJlY3Vyc2lvbiBp
cyByZW1vdmVkIHRoZSBpbnZhbGlkIHJlZ2lvbnMgd2lsbCBiZSByZWNvdmVyZWQuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9u
cy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
Omluc2VydFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmRlcGVuZHNP
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9t
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNoZWNrSW52YWxp
ZFJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5k
ZW5jeU9uRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpy
ZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
b3dUaHJlYWQ6OnB1c2hEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNv
bXB1dGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVtb3ZlQ2hp
bGROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6YXBwZW5k
Q2hpbGROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJlZ2lvbjo6flJlbmRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZWdpb246OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
Ojpub2RlQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmF0dGFjaFJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmRldGFjaFJlZ2lvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjpwYXJlbnRGbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
Z2lvbjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnNldElzVmFs
aWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OndyaXRlUmVuZGVyRmxvd1RocmVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6d3Jp
dGVMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlbmRlckZs
b3dUaHJlYWRXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXRS
ZW5kZXJGbG93VGhyZWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Omhhc1JlbmRlckZsb3dUaHJlYWRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmlzUmVuZGVyRmxvd1RocmVhZE9yZGVyRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJE
aXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZW5kZXJGbG93VGhyZWFkTGlz
dCk6CisKIDIwMTEtMDgtMTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHI5
MzE0MC4gVGFrZSA0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5k
ZXggYTQwNDFhNGM3NWE1OGFmNjQ1NzEwODMwYzdjMWZhZjBjYjVjZGFlNy4uZWJhZTY5ODJhZDM3
ZDk3MWExNjUyNjNmMDJkMjdkZTBlMjNmMDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0zMTQxLDYgKzMxNDEsOSBAQCBMYXlvdXRVbml0IFJlbmRlckJs
b2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywg
TGF5bwogCiB2b2lkIFJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlckJv
eCogbykKIHsKKyAgICBpZiAoby0+aXNSZW5kZXJGbG93VGhyZWFkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKICAgICAvLyBDcmVhdGUgdGhlIGxpc3Qgb2Ygc3BlY2lhbCBvYmplY3RzIGlmIHdl
IGRvbid0IGFsZWFkeSBoYXZlIG9uZQogICAgIGlmICghbV9wb3NpdGlvbmVkT2JqZWN0cykKICAg
ICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cyA9IGFkb3B0UHRyKG5ldyBQb3NpdGlvbmVkT2JqZWN0
c0xpc3RIYXNoU2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcAppbmRleCAyZGNhNjM3ZTE1ODY1YzdlNTNmN2QyNzE2YjI4YTg5YWNmODZjZjE2Li5k
OWI4ZDk1NTRlMjA0MWE3OTA0YjNkODA2MWViNjg3OGQwNjEwMzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTQ4LDYgKzE0OSwyMyBAQCBzdGF0aWMgYm9vbCBjb21wYXJlUmVuZGVy
UmVnaW9ucyhjb25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBjb25zdCBSZW5kZXJSZQog
ICAgIHJldHVybiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcp
OwogfQogCitib29sIFJlbmRlckZsb3dUaHJlYWQ6OmRlcGVuZHNPbihSZW5kZXJGbG93VGhyZWFk
KiBvdGhlclJlbmRlckZsb3dUaHJlYWQpIGNvbnN0Cit7CisgICAgaWYgKG1fbGF5b3V0QmVmb3Jl
VGhyZWFkc1NldC5jb250YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIC8vIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIHRoZSBtX2xheW91dEJlZm9y
ZVRocmVhZHNTZXQuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXJhdG9yID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCk7CisgICAgUmVu
ZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbGF5b3V0QmVm
b3JlVGhyZWFkc1NldC5lbmQoKTsKKyAgICBmb3IgKDsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJh
dG9yKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIGJlZm9yZUZsb3dUaHJlYWQg
PSAoKml0ZXJhdG9yKS5maXJzdDsKKyAgICAgICAgaWYgKGJlZm9yZUZsb3dUaHJlYWQtPmRlcGVu
ZHNPbihvdGhlclJlbmRlckZsb3dUaHJlYWQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFk
ZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VS
VChyZW5kZXJSZWdpb24pOwpAQCAtMTYxLDYgKzE3OSwxOSBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQogICAgICAg
ICBtX3JlZ2lvbkxpc3QuaW5zZXJ0QmVmb3JlKGl0LCByZW5kZXJSZWdpb24pOwogICAgIH0KIAor
ICAgIEFTU0VSVCghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkpOworICAgIGlmIChyZW5kZXJSZWdp
b24tPnBhcmVudEZsb3dUaHJlYWQoKSkgeworICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJl
bnRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgeworICAgICAgICAgICAgLy8gUmVnaXN0
ZXIgb3Vyc2VsZiB0byBnZXQgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc3RhdGUgY2hhbmdlcy4K
KyAgICAgICAgICAgIHJlbmRlclJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5tX29ic2VydmVy
VGhyZWFkc1NldC5hZGQodGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlclJlZ2lvbi0+cGFyZW50Rmxv
d1RocmVhZCgpKTsKKyAgICB9CisKKyAgICByZW5kZXJSZWdpb24tPnNldElzVmFsaWQodHJ1ZSk7
CisKICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOwogfQogCkBAIC0xNjgsMTAgKzE5OSw3OCBAQCB2
b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQoUmVuZGVyUmVnaW9u
KiByZW5kZXJSZWdpb24pCiB7CiAgICAgQVNTRVJUKHJlbmRlclJlZ2lvbik7CiAgICAgbV9yZWdp
b25MaXN0LnJlbW92ZShyZW5kZXJSZWdpb24pOworICAgIGlmIChyZW5kZXJSZWdpb24tPnBhcmVu
dEZsb3dUaHJlYWQoKSkgeworICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKSB7
CisgICAgICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZl
clRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBpbnZh
bGlkYXRlIHRoZSByZWdpb25zIHJlY3RhbmdsZXMuIFRoZSByZW1vdmVkIHJlZ2lvbgorICAgICAg
ICAgICAgLy8gd2FzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuIEp1c3QgcmV0dXJuIGhlcmUuCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlRGVwZW5kZW5jeU9u
Rmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudEZsb3dUaHJlYWQoKSk7CisgICAgfQogCiAg
ICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIAordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjaGVj
a0ludmFsaWRSZWdpb25zKCkKK3sKKyAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7
ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAg
ICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBiZWNhdXNl
IGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KKyAgICAgICAgQVNTRVJUKHJlZ2lvbi0+aXNW
YWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpKTsKKyAgICAgICAgaWYgKHJlZ2lv
bi0+aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpLT5kZXBlbmRzT24odGhp
cykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByZWdpb24tPnBhcmVudEZsb3dU
aHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAgICAgICBhZGRE
ZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlZ2lvbi0+cGFyZW50Rmxvd1RocmVhZCgpKTsKKyAgICAg
ICAgcmVnaW9uLT5zZXRJc1ZhbGlkKHRydWUpOworICAgICAgICBpbnZhbGlkYXRlUmVnaW9ucygp
OworICAgIH0KKworICAgIGlmIChtX29ic2VydmVyVGhyZWFkc1NldC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIE5vdGlmeSBhbGwgdGhlIGZsb3cgdGhyZWFkcyB0aGF0IHdl
cmUgZGVwZW5kZW50IG9uIHRoaXMgZmxvdy4KKworICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhl
IGxpc3QgZmlyc3QuIFRoYXQncyBiZWNhdXNlIG9ic2VydmVycyBtaWdodCBjaGFuZ2UgdGhlIGxp
c3Qgd2hlbiBjYWxsaW5nIGNoZWNrSW52YWxpZFJlZ2lvbnMuCisgICAgVmVjdG9yPFJlbmRlckZs
b3dUaHJlYWQqPiBvYnNlcnZlcnM7CisgICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJUaHJlYWRz
U2V0LCBvYnNlcnZlcnMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYnNlcnZlcnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG9i
c2VydmVycy5hdChpKTsKKyAgICAgICAgZmxvd1RocmVhZC0+Y2hlY2tJbnZhbGlkUmVnaW9ucygp
OworICAgIH0KK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25GbG93
VGhyZWFkKFJlbmRlckZsb3dUaHJlYWQqIG90aGVyRmxvd1RocmVhZCkKK3sKKyAgICBzdGQ6OnBh
aXI8UmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
X2xheW91dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7CisgICAgaWYgKHJl
c3VsdC5zZWNvbmQpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSBzZWUg
dGhpcyBkZXBlbmRlbmN5LiBNYWtlIHN1cmUgd2UgcmVjYWxjdWxhdGUgYWxsIHRoZSBkZXBlbmRl
bmNpZXMuCisgICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eSh0
cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVtb3ZlRGVwZW5kZW5j
eU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCit7CisgICAg
Ym9vbCByZW1vdmVkID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LnJlbW92ZShvdGhlckZsb3dU
aHJlYWQpOworICAgIGlmIChyZW1vdmVkKSB7CisgICAgICAgIGNoZWNrSW52YWxpZFJlZ2lvbnMo
KTsKKyAgICAgICAgdmlldygpLT5zZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5KHRydWUp
OworICAgIH0KK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKFJl
bmRlckZsb3dUaHJlYWRMaXN0JiBsaXN0KQoreworICAgIGZvciAoUmVuZGVyRmxvd1RocmVhZENv
dW50ZWRTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuYmVnaW4o
KTsgaXRlciAhPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuZW5kKCk7ICsraXRlcikgeworICAg
ICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gKCppdGVyKS5maXJzdDsKKyAgICAg
ICAgaWYgKGxpc3QuY29udGFpbnMoZmxvd1RocmVhZCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgZmxvd1RocmVhZC0+cHVzaERlcGVuZGVuY2llcyhsaXN0KTsKKyAgICAgICAgbGlz
dC5hZGQoZmxvd1RocmVhZCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6Omxh
eW91dCgpCiB7CiAgICAgaWYgKG1fcmVnaW9uc0ludmFsaWRhdGVkKSB7CkBAIC0xODEsNiArMjgw
LDkgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAgZm9yIChS
ZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0
ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogCisgICAgICAgICAgICAgICAgaWYgKCFyZWdpb24t
PmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAgICAgICAgICAgICBJ
bnRSZWN0IHJlZ2lvblJlY3Q7CkBAIC0xOTIsNyArMjk0LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhy
ZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IHJlZ2lv
blJlY3Qud2lkdGgoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZWdp
b24tPnNldFJlZ2lvblJlY3QocmVnaW9uUmVjdCk7ICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIHJlZ2lvbi0+c2V0UmVnaW9uUmVjdChyZWdpb25SZWN0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTIwNiw2ICszMDgsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpp
dGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0
LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsK
KyAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAgIGxvZ2ljYWxX
aWR0aCA9IG1heChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5jb250ZW50V2lk
dGgoKSA6IHJlZ2lvbi0+Y29udGVudEhlaWdodCgpLCBsb2dpY2FsV2lkdGgpOwogICAgIH0KQEAg
LTIxOSw2ICszMjMsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KCkKIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVn
aW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAg
ICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgICAgIGlmICghcmVnaW9u
LT5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQVNTRVJUKCFyZWdp
b24tPm5lZWRzTGF5b3V0KCkpOwogICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmNvbnRlbnRIZWlnaHQoKSA6IHJlZ2lvbi0+Y29udGVu
dFdpZHRoKCk7CiAgICAgfQpAQCAtMjk5LDYgKzQwNSw4IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVh
ZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50UmVj
dCwKIHsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lv
bkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAg
ICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBpZiAoIXJlZ2lvbi0+
aXNWYWxpZCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gV2Ugb25seSBo
YXZlIHRvIGlzc3VlIGEgcmVwYWludCBpbiB0aGlzIHJlZ2lvbiBpZiB0aGUgcmVnaW9uIHJlY3Qg
aW50ZXJzZWN0cyB0aGUgcmVwYWludCByZWN0LgogICAgICAgICBMYXlvdXRSZWN0IGZsaXBwZWRS
ZWdpb25SZWN0KHJlZ2lvbi0+cmVnaW9uUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5oCmluZGV4IDA3ZmZjZDFiNzg0MDc4ZWYwMTgzNmY4N2UyYjE4
YTNhNzU2OWYyY2QuLmUxMWIxZmE3MWUwMThmYTg3MjJlMGQyZDhhNWFkNDVkOTMxZmVlZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAtMzIsNiAr
MzIsNyBAQAogCiAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0zOSw5ICs0
MCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckZsb3dUaHJlYWQ7
CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIAordHlwZWRlZiBMaXN0
SGFzaFNldDxSZW5kZXJGbG93VGhyZWFkKj4gUmVuZGVyRmxvd1RocmVhZExpc3Q7Cit0eXBlZGVm
IEhhc2hDb3VudGVkU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5kZXJGbG93VGhyZWFkQ291bnRl
ZFNldDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyUmVnaW9uKj4gUmVuZGVyUmVnaW9uTGlz
dDsKIAogLy8gUmVuZGVyRmxvd1RocmVhZCBpcyB1c2VkIHRvIGNvbGxlY3QgYWxsIHRoZSByZW5k
ZXIgb2JqZWN0cyB0aGF0IHBhcnRpY2lwYXRlIGluIGEKQEAgLTg4LDE2ICs5MiwzNCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAorICAgIHZvaWQgcHVzaERlcGVuZGVuY2llcyhSZW5kZXJG
bG93VGhyZWFkTGlzdCYpOworCiAgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlSW5SZWdpb25zKGNv
bnN0IExheW91dFJlY3QmLCBib29sIGltbWVkaWF0ZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZsb3dUaHJl
YWQiOyB9CiAKKyAgICBib29sIGRlcGVuZHNPbihSZW5kZXJGbG93VGhyZWFkKiBvdGhlclJlbmRl
ckZsb3dUaHJlYWQpIGNvbnN0OworICAgIHZvaWQgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChS
ZW5kZXJGbG93VGhyZWFkKik7CisgICAgdm9pZCByZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFk
KFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICB2b2lkIGNoZWNrSW52YWxpZFJlZ2lvbnMoKTsKKwog
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gRmxvd1RocmVhZENoaWxkTGlz
dDsKICAgICBGbG93VGhyZWFkQ2hpbGRMaXN0IG1fZmxvd1RocmVhZENoaWxkTGlzdDsKIAogICAg
IEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CiAgICAgUmVuZGVyUmVnaW9uTGlzdCBtX3JlZ2lv
bkxpc3Q7CisKKyAgICAvLyBPYnNlcnZlciBmbG93IHRocmVhZHMgaGF2ZSBpbnZhbGlkIHJlZ2lv
bnMgdGhhdCBkZXBlbmQgb24gdGhlIHN0YXRlIG9mIHRoaXMgdGhyZWFkCisgICAgLy8gdG8gcmUt
dmFsaWRhdGUgdGhlaXIgcmVnaW9ucy4gS2VlcGluZyBhIHNldCBvZiBvYnNlcnZlciB0aHJlYWRz
IG1ha2UgaXQgZWFzeQorICAgIC8vIHRvIG5vdGlmeSB0aGVtIHdoZW4gYSByZWdpb24gd2FzIHJl
bW92ZWQgZnJvbSB0aGlzIGZsb3cuCisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQgbV9v
YnNlcnZlclRocmVhZHNTZXQ7CisKKyAgICAvLyBTb21lIHRocmVhZHMgbmVlZCB0byBoYXZlIGEg
Y29tcGxldGUgbGF5b3V0IGJlZm9yZSB3ZSBsYXlvdXQgdGhpcyBmbG93LgorICAgIC8vIFRoYXQn
cyBiZWNhdXNlIHRoZXkgY29udGFpbiBhIFJlbmRlclJlZ2lvbiB0aGF0IHNob3VsZCBkaXNwbGF5
IHRoaXMgdGhyZWFkLiBUaGUgc2V0IG1ha2VzIGl0CisgICAgLy8gZWFzeSB0byBzb3J0IHRoZSBv
cmRlciBvZiB0aHJlYWRzIGxheW91dC4KKyAgICBSZW5kZXJGbG93VGhyZWFkQ291bnRlZFNldCBt
X2xheW91dEJlZm9yZVRocmVhZHNTZXQ7CisKICAgICBib29sIG1fcmVnaW9uc0ludmFsaWRhdGVk
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dENoaWxkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hp
bGRMaXN0LmNwcAppbmRleCBlNjcyOWZhNTgxZWVlMjU0YWI4NmI3MjI3ZDRkNjBmODY0OTIwNzA2
Li40ZjJmZDZiOWQwMGVmZjFjNDAzMjkxNzlmY2I3NTQ4MWM1OWUyMjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlz
dEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJRdW90ZS5oIgorI2luY2x1ZGUgIlJlbmRlclJlZ2lv
bi5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdt
ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMTAxLDYgKzEwMiw5IEBAIFJlbmRl
ck9iamVjdCogUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUoUmVuZGVyT2Jq
ZWN0KiBvd25lciwgUmVuZGVyCiAgICAgICAgIGlmIChvbGRDaGlsZC0+aXNQb3NpdGlvbmVkKCkg
JiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgICAgICBvd25lci0+ZGlydHlMaW5l
c0Zyb21DaGFuZ2VkQ2hpbGQob2xkQ2hpbGQpOwogCisgICAgICAgIGlmIChvbGRDaGlsZC0+aXNS
ZW5kZXJSZWdpb24oKSkKKyAgICAgICAgICAgIHRvUmVuZGVyUmVnaW9uKG9sZENoaWxkKS0+ZGV0
YWNoUmVnaW9uKCk7CisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAvLyBVcGRhdGUgY2FjaGVk
IGJvdW5kYXJpZXMgaW4gU1ZHIHJlbmRlcmVycywgaWYgYSBjaGlsZCBpcyByZW1vdmVkLgogICAg
ICAgICBvd25lci0+c2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7CkBAIC0xNzcsNiArMTgxLDkg
QEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmFwcGVuZENoaWxkTm9kZShSZW5kZXJPYmpl
Y3QqIG93bmVyLCBSZW5kZXJPYmplY3QqIG4KIAogICAgICAgICBpZiAoIW5ld0NoaWxkLT5pc0Zs
b2F0aW5nT3JQb3NpdGlvbmVkKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAg
ICAgICBvd25lci0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQobmV3Q2hpbGQpOworCisgICAg
ICAgIGlmIChuZXdDaGlsZC0+aXNSZW5kZXJSZWdpb24oKSkKKyAgICAgICAgICAgIHRvUmVuZGVy
UmVnaW9uKG5ld0NoaWxkKS0+YXR0YWNoUmVnaW9uKCk7CiAgICAgfQogICAgIFJlbmRlckNvdW50
ZXI6OnJlbmRlcmVyU3VidHJlZUF0dGFjaGVkKG5ld0NoaWxkKTsKICAgICBSZW5kZXJRdW90ZTo6
cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQobmV3Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCA3MzM3NjU3ZjBmNzgxNTk5NmMzZmU2MTk4Y2RjMDk3
OWMwYTE3MDBmLi43Yzk3Y2Y3YjZiYWZkY2NmMzZhMTlkYThlMTBhZjgzZGNlN2U2NGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDIsMjAgKzQyLDE5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKE5vZGUq
IG5vZGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJSZXBsYWNl
ZChub2RlLCBJbnRTaXplKCkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKKyAgICAs
IG1fcGFyZW50Rmxvd1RocmVhZCgwKQorICAgICwgbV9pc1ZhbGlkKGZhbHNlKQogewogfQogCiBS
ZW5kZXJSZWdpb246On5SZW5kZXJSZWdpb24oKQogewotICAgIGlmIChtX2Zsb3dUaHJlYWQgJiYg
dmlldygpKQotICAgICAgICBtX2Zsb3dUaHJlYWQtPnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQodGhp
cyk7Ci0gICAgbV9mbG93VGhyZWFkID0gMDsKIH0KIAogdm9pZCBSZW5kZXJSZWdpb246OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKIHsKICAgICAvLyBEZWxlZ2F0ZSBwYWludGluZyBvZiBjb250ZW50IGluIHJlZ2lvbiB0
byBSZW5kZXJGbG93VGhyZWFkLgotICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgIGlmICghbV9m
bG93VGhyZWFkIHx8ICFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Zsb3dUaHJl
YWQtPnBhaW50SW50b1JlZ2lvbihwYWludEluZm8sIHJlZ2lvblJlY3QoKSwgTGF5b3V0UG9pbnQo
cGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgcGFpbnRPZmZz
ZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKTsKIH0KQEAgLTYzLDYgKzYyLDkg
QEAgdm9pZCBSZW5kZXJSZWdpb246OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE8KIC8vIEhpdCBUZXN0aW5nCiBib29sIFJlbmRlclJl
Z2lvbjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCiB7
CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIExheW91
dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7
CiAKICAgICAvLyBDaGVjayBvdXIgYm91bmRzIG5leHQuIEZvciB0aGlzIHB1cnBvc2UgYWx3YXlz
IGFzc3VtZSB0aGF0IHdlIGNhbiBvbmx5IGJlIGhpdCBpbiB0aGUKQEAgLTgwLDE0ICs4MiwzNiBA
QCBib29sIFJlbmRlclJlZ2lvbjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBS
ZW5kZXJSZWdpb246OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCit2b2lkIFJlbmRlclJlZ2lvbjo6YXR0YWNoUmVn
aW9uKCkKIHsKLSAgICBSZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZmVyZW5jZSwg
b2xkU3R5bGUpOworICAgIGlmICghbV9mbG93VGhyZWFkKQorICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgaGVyZSBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rv
ciwgYmVjYXVzZSBSZW5kZXJGbG93VGhyZWFkIAotICAgIC8vIHVzZXMgdGhlIHN0eWxlKCkgcHJv
cGVydHkgd2hpY2ggaXMgbm90IHlldCBpbml0aWFsaXplZCBpbiB0aGUgY29uc3RydWN0b3IuCi0g
ICAgaWYgKCFvbGRTdHlsZSAmJiBtX2Zsb3dUaHJlYWQpCi0gICAgICAgIG1fZmxvd1RocmVhZC0+
YWRkUmVnaW9uVG9UaHJlYWQodGhpcyk7CisgICAgLy8gQnkgbm93IHRoZSBmbG93IHRocmVhZCBz
aG91bGQgYWxyZWFkeSBiZSBhZGRlZCB0byB0aGUgcmVuZGVyaW5nIHRyZWUsCisgICAgLy8gc28g
d2UgZ28gdXAgdGhlIHJlbmRlcmluZyBwYXJlbnRzIGFuZCBjaGVjayB0aGF0IHRoaXMgcmVnaW9u
IGlzIG5vdCBwYXJ0IG9mIHRoZSBzYW1lCisgICAgLy8gZmxvdyB0aGF0IGl0IGFjdHVhbGx5IG5l
ZWRzIHRvIGRpc3BsYXkuIEl0IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIHJlZmVyZW5jZS4KKyAg
ICBSZW5kZXJPYmplY3QqIHBhcmVudE9iamVjdCA9IHBhcmVudCgpOworICAgIG1fcGFyZW50Rmxv
d1RocmVhZCA9IDA7CisgICAgZm9yICggOyBwYXJlbnRPYmplY3Q7IHBhcmVudE9iamVjdCA9IHBh
cmVudE9iamVjdC0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKHBhcmVudE9iamVjdC0+aXNSZW5k
ZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IHRvUmVu
ZGVyRmxvd1RocmVhZChwYXJlbnRPYmplY3QpOworICAgICAgICAgICAgLy8gRG8gbm90IHRha2Ug
aW50byBhY2NvdW50IGEgcmVnaW9uIHRoYXQgbGlua3MgYSBmbG93IHdpdGggaXRzZWxmLiBUaGUg
ZGVwZW5kZW5jeQorICAgICAgICAgICAgLy8gY2Fubm90IGNoYW5nZSwgc28gaXQgaXMgbm90IHdv
cnRoIGFkZGluZyBpdCB0byB0aGUgbGlzdC4KKyAgICAgICAgICAgIGlmIChtX2Zsb3dUaHJlYWQg
PT0gbV9wYXJlbnRGbG93VGhyZWFkKSB7CisgICAgICAgICAgICAgICAgbV9mbG93VGhyZWFkID0g
MDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fZmxvd1RocmVhZC0+YWRkUmVnaW9uVG9U
aHJlYWQodGhpcyk7Cit9CisKK3ZvaWQgUmVuZGVyUmVnaW9uOjpkZXRhY2hSZWdpb24oKQorewor
ICAgIGlmIChtX2Zsb3dUaHJlYWQpCisgICAgICAgIG1fZmxvd1RocmVhZC0+cmVtb3ZlUmVnaW9u
RnJvbVRocmVhZCh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IGZjZThmYThiZmJhOGJjNTUzZDc5ZmQ5
MGRkZDM2ODJlYjYwYzc3MWYuLmM0NjUwYjUxNDk3YzQwZDJkMWVkODQ5MGY3M2Y1ZTg3NDc2ZDA0
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTQ5LDEzICs0
OSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWdpb25SZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpIHsgbV9yZWdpb25SZWN0ID0gcmVjdDsgfQogICAgIEludFJlY3QgcmVnaW9uUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaW9uUmVjdDsgfQogCisgICAgdm9pZCBhdHRhY2hSZWdpb24oKTsK
KyAgICB2b2lkIGRldGFjaFJlZ2lvbigpOworCisgICAgUmVuZGVyRmxvd1RocmVhZCogcGFyZW50
Rmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Rmxvd1RocmVhZDsgfQorCisgICAg
Ly8gVmFsaWQgcmVnaW9ucyBkbyBub3QgY3JlYXRlIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRo
IG90aGVyIGZsb3dzLgorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxp
ZDsgfQorICAgIHZvaWQgc2V0SXNWYWxpZChib29sIHZhbGlkKSB7IG1faXNWYWxpZCA9IHZhbGlk
OyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIAotICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwotCiAgICAgUmVu
ZGVyRmxvd1RocmVhZCogbV9mbG93VGhyZWFkOworCisgICAgLy8gSWYgdGhpcyBSZW5kZXJSZWdp
b24gaXMgZGlzcGxheWVkIGFzIHBhcnQgb2YgYW5vdGhlciBmbG93LAorICAgIC8vIHdlIG5lZWQg
dG8gY3JlYXRlIGEgZGVwZW5kZW5jeSB0cmVlLCBzbyB0aGF0IGxheW91dCBvZiB0aGUKKyAgICAv
LyByZWdpb25zIGlzIGFsd2F5cyBkb25lIGJlZm9yZSB0aGUgcmVnaW9ucyB0aGVtc2VsdmVzLgor
ICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVhZDsKICAgICBJbnRSZWN0IG1f
cmVnaW9uUmVjdDsKKworICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsKIAogaW5saW5lIFJlbmRlclJl
Z2lvbiogdG9SZW5kZXJSZWdpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZmRkNzk0YjU5ZGM1YTJi
MzZlNmZlNDEwNTkzNTRmNDY3ZWNmMjIxZC4uNWIyOWJiNTFjNDIwODc2Y2VhNzZmMDA2ZTBkMmVj
MjRlOGZjZmZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcApAQCAtNjQ3LDYgKzY0Nyw1MSBAQCBzdGF0aWMgdm9pZCB3cml0ZShUZXh0U3RyZWFt
JiB0cywgUmVuZGVyTGF5ZXImIGwsCiAgICAgICAgIHdyaXRlKHRzLCAqbC5yZW5kZXJlcigpLCBp
bmRlbnQgKyAxLCBiZWhhdmlvcik7CiB9CiAKK3N0YXRpYyB2b2lkIHdyaXRlUmVuZGVyRmxvd1Ro
cmVhZHMoVGV4dFN0cmVhbSYgdHMsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGNvbnN0IFJlbmRl
ckxheWVyKiByb290TGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0
JiBwYWludFJlY3QsIGludCBpbmRlbnQsIFJlbmRlckFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKQor
eworICAgIGNvbnN0IFJlbmRlckZsb3dUaHJlYWRMaXN0KiBsaXN0ID0gcmVuZGVyVmlldy0+cmVu
ZGVyRmxvd1RocmVhZExpc3QoKTsKKyAgICBpZiAoIWxpc3QgfHwgbGlzdC0+aXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICB0cyA8
PCAiRmxvdyBUaHJlYWRzXG4iOworCisgICAgZm9yIChSZW5kZXJGbG93VGhyZWFkTGlzdDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IGxpc3QtPmJlZ2luKCk7IGl0ZXIgIT0gbGlzdC0+ZW5kKCk7ICsr
aXRlcikgeworICAgICAgICBjb25zdCBSZW5kZXJGbG93VGhyZWFkKiByZW5kZXJGbG93VGhyZWFk
ID0gKml0ZXI7CisKKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOworICAgICAg
ICB0cyA8PCAiVGhyZWFkIHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJlYWQtPmZs
b3dUaHJlYWQoKSA8PCAiJ1xuIjsKKworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSByZW5k
ZXJGbG93VGhyZWFkLT5sYXllcigpOworICAgICAgICB3cml0ZUxheWVycyh0cywgcm9vdExheWVy
LCBsYXllciwgcGFpbnRSZWN0LCBpbmRlbnQgKyAyLCBiZWhhdmlvcik7CisKKyAgICAgICAgLy8g
RGlzcGxheSB0aGUgcmVuZGVyIHJlZ2lvbnMgYXR0YWNoZWQgdG8gdGhpcyBmbG93IHRocmVhZAor
ICAgICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiBmbG93VGhyZWFkUmVnaW9uTGlzdCA9IHJl
bmRlckZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKKyAgICAgICAgaWYgKCFmbG93VGhy
ZWFkUmVnaW9uTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBp
bmRlbnQgKyAxKTsKKyAgICAgICAgICAgIHRzIDw8ICJSZWdpb25zIGZvciBmbG93ICciPDwgcmVu
ZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZCgpIDw8ICInXG4iOworICAgICAgICAgICAgZm9yIChS
ZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdFJSID0gZmxvd1RocmVhZFJlZ2lvbkxp
c3QuYmVnaW4oKTsgaXRSUiAhPSBmbG93VGhyZWFkUmVnaW9uTGlzdC5lbmQoKTsgKytpdFJSKSB7
CisgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSAqaXRSUjsKKyAg
ICAgICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMik7CisgICAgICAgICAgICAg
ICAgdHMgPDwgIlJlbmRlclJlZ2lvbiI7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lv
bi0+bm9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YWdOYW1lID0gZ2V0VGFn
TmFtZShyZW5kZXJSZWdpb24tPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGFn
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRh
Z05hbWUgPDwgIn0iOworICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5ub2Rl
KCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJSZWdpb24tPm5vZGUoKS0+aGFzSUQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihyZW5kZXJSZWdpb24tPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0
cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFyZW5k
ZXJSZWdpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiBpbnZhbGlk
IjsKKyAgICAgICAgICAgICAgICB0cyA8PCAiIHdpdGggaW5kZXggIiA8PCByZW5kZXJSZWdpb24t
PnN0eWxlKCktPnJlZ2lvbkluZGV4KCkgPDwgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKwogc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0LCBpbnQgaW5kZW50LCBSZW5kZXJB
c1RleHRCZWhhdmlvciBiZWhhdmlvcikKIHsKQEAgLTcxMCw0MiArNzU1LDkgQEAgc3RhdGljIHZv
aWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5
ZXIsIFJlbmRlckxheWUKICAgICAKICAgICAvLyBBbHRvdWdoIHRoZSBSZW5kZXJGbG93VGhyZWFk
IHJlcXVpcmVzIGEgbGF5ZXIsIGl0IGlzIG5vdCBjb2xsZWN0ZWQgYnkgaXRzIHBhcmVudCwKICAg
ICAvLyBzbyB3ZSBoYXZlIHRvIHRyZWF0IGl0IGFzIGEgc3BlY2lhbCBjYXNlLgotICAgIGJvb2wg
Zmlyc3RSZW5kZXJGbG93VGhyZWFkID0gdHJ1ZTsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogY2hp
bGQgPSBsLT5yZW5kZXJlcigpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJGbG93VGhyZWFkKCkp
IHsKLSAgICAgICAgICAgIGlmIChmaXJzdFJlbmRlckZsb3dUaHJlYWQpIHsKLSAgICAgICAgICAg
ICAgICBmaXJzdFJlbmRlckZsb3dUaHJlYWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB3cml0
ZUluZGVudCh0cywgaW5kZW50KTsKLSAgICAgICAgICAgICAgICB0cyA8PCAiRmxvdyBUaHJlYWRz
XG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3QgUmVuZGVyRmxvd1RocmVhZCog
cmVuZGVyRmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChjaGlsZCk7Ci0gICAgICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgICAgICB0cyA8PCAiVGhyZWFk
IHdpdGggZmxvdy1uYW1lICciIDw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAi
J1xuIjsKLSAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlckZsb3dUaHJlYWQt
PmxheWVyKCk7Ci0gICAgICAgICAgICB3cml0ZUxheWVycyh0cywgcm9vdExheWVyLCBsYXllciwg
cGFpbnREaXJ0eVJlY3QsIGluZGVudCArIDIsIGJlaGF2aW9yKTsKLQotICAgICAgICAgICAgLy8g
RGlzcGxheSB0aGUgcmVuZGVyIHJlZ2lvbnMgYXR0YWNoZWQgdG8gdGhpcyBmbG93IHRocmVhZAot
ICAgICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVhZFJlZ2lvbkxpc3Qg
PSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgICAgICAgICBpZiAo
IWZsb3dUaHJlYWRSZWdpb25MaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHdyaXRl
SW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgICAgICAgICB0cyA8PCAiUmVnaW9ucyBm
b3IgZmxvdyAnIjw8IHJlbmRlckZsb3dUaHJlYWQtPmZsb3dUaHJlYWQoKSA8PCAiJ1xuIjsKLSAg
ICAgICAgICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0UlIg
PSBmbG93VGhyZWFkUmVnaW9uTGlzdC5iZWdpbigpOyBpdFJSICE9IGZsb3dUaHJlYWRSZWdpb25M
aXN0LmVuZCgpOyArK2l0UlIpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBy
ZW5kZXJSZWdpb24gPSAqaXRSUjsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCArIDIpOwotICAgICAgICAgICAgICAgICAgICB0cyA8PCAiUmVuZGVyUmVnaW9uIjsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9kZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVuZGVyUmVnaW9u
LT5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwg
In0iOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+bm9kZSgpLT5p
c0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5ub2RlKCktPmhhc0lEKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHJlbmRlclJlZ2lvbi0+bm9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgdHMgPDwgIiB3aXRoIGluZGV4ICIgPDwgcmVuZGVyUmVnaW9uLT5zdHlsZSgpLT5yZWdp
b25JbmRleCgpIDw8ICJcbiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9CisgICAgaWYgKGwtPnJlbmRlcmVyKCktPmlzUmVuZGVyVmlldygpKSB7CisgICAgICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0b1JlbmRlclZpZXcobC0+cmVuZGVyZXIoKSk7Cisg
ICAgICAgIHdyaXRlUmVuZGVyRmxvd1RocmVhZHModHMsIHJlbmRlclZpZXcsIHJvb3RMYXllciwg
cGFpbnREaXJ0eVJlY3QsIGluZGVudCwgYmVoYXZpb3IpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDEzNzQ5ZmI3YzVkODNhMDQ0NGQ1MjRh
OTBiOTdjZWUyY2IwN2M1YWEuLmFjYWNlNTZhMTM2NmZkMzhjYmJmMGVhMWI4MWJmNDgxOGQ2MjQ5
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgUmVuZGVyVmlldzo6UmVuZGVyVmlldyhOb2RlKiBub2RlLCBGcmFtZVZpZXcqIHZpZXcp
CiAgICAgLCBtX21heGltYWxPdXRsaW5lU2l6ZSgwKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdo
dCgwKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCi0gICAgLCBtX2hh
c1JlbmRlckZsb3dUaHJlYWRzKGZhbHNlKQorICAgICwgbV9pc1JlbmRlckZsb3dUaHJlYWRPcmRl
ckRpcnR5KGZhbHNlKQogICAgICwgbV9sYXlvdXRTdGF0ZSgwKQogICAgICwgbV9sYXlvdXRTdGF0
ZURpc2FibGVDb3VudCgwKQogewpAQCAtMTI4LDggKzEyOCwxMSBAQCB2b2lkIFJlbmRlclZpZXc6
OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBmYWxzZTsKICAgICBt
X2xheW91dFN0YXRlID0gJnN0YXRlOwogCi0gICAgaWYgKG5lZWRzTGF5b3V0KCkpCisgICAgaWYg
KG5lZWRzTGF5b3V0KCkpIHsKICAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworICAgICAg
ICBpZiAoaGFzUmVuZGVyRmxvd1RocmVhZHMoKSkKKyAgICAgICAgICAgIGxheW91dFJlbmRlckZs
b3dUaHJlYWRzKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGxheW91dERlbHRhKCkgPT0gTGF5b3V0
U2l6ZSgpKTsKICAgICBBU1NFUlQobV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCA9PSAwKTsKQEAg
LTgwOCw5ICs4MTEsMTEgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIAogUmVuZGVyRmxvd1Ro
cmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgZmxvd1RocmVhZCkKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBm
aXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKLSAgICAg
ICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9IHRvUmVuZGVyRmxvd1RocmVh
ZChyZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlckZsb3dUaHJlYWRMaXN0KQorICAgICAgICBt
X3JlbmRlckZsb3dUaHJlYWRMaXN0ID0gYWRvcHRQdHIobmV3IFJlbmRlckZsb3dUaHJlYWRMaXN0
KCkpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKFJlbmRlckZsb3dUaHJlYWRMaXN0OjppdGVy
YXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsgaXRlciAhPSBtX3Jl
bmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBSZW5kZXJG
bG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSAqaXRlcjsKICAgICAgICAgICAgIGlmIChmbG93UmVu
ZGVyZXItPmZsb3dUaHJlYWQoKSA9PSBmbG93VGhyZWFkKQogICAgICAgICAgICAgICAgIHJldHVy
biBmbG93UmVuZGVyZXI7CiAgICAgICAgIH0KQEAgLTgxOSw4ICs4MjQsMzUgQEAgUmVuZGVyRmxv
d1RocmVhZCogUmVuZGVyVmlldzo6cmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgZmxvd1QKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93UmVuZGVyZXIgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQoKSwgZmxvd1RocmVhZCk7
CiAgICAgZmxvd1JlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93
VGhyZWFkU3R5bGUoc3R5bGUoKSkpOwogICAgIGFkZENoaWxkKGZsb3dSZW5kZXJlcik7Ci0gICAg
bV9oYXNSZW5kZXJGbG93VGhyZWFkcyA9IHRydWU7CisgICAgCisgICAgbV9yZW5kZXJGbG93VGhy
ZWFkTGlzdC0+YWRkKGZsb3dSZW5kZXJlcik7CisgICAgc2V0SXNSZW5kZXJGbG93VGhyZWFkT3Jk
ZXJEaXJ0eSh0cnVlKTsKKwogICAgIHJldHVybiBmbG93UmVuZGVyZXI7CiB9CiAKK3ZvaWQgUmVu
ZGVyVmlldzo6bGF5b3V0UmVuZGVyRmxvd1RocmVhZHMoKQoreworICAgIEFTU0VSVChtX3JlbmRl
ckZsb3dUaHJlYWRMaXN0KTsKKworICAgIGlmIChpc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5
KCkpIHsKKyAgICAgICAgLy8gQXJyYW5nZSB0aGUgdGhyZWFkIGxpc3QgYWNjb3JkaW5nIHRvIGRl
cGVuZGVuY2llcy4KKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZExpc3Qgc29ydGVkTGlzdDsKKyAg
ICAgICAgZm9yIChSZW5kZXJGbG93VGhyZWFkTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVuZGVy
Rmxvd1RocmVhZExpc3QtPmJlZ2luKCk7IGl0ZXIgIT0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+
ZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1JlbmRl
cmVyID0gKml0ZXI7CisgICAgICAgICAgICBpZiAoc29ydGVkTGlzdC5jb250YWlucyhmbG93UmVu
ZGVyZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZmxvd1JlbmRl
cmVyLT5wdXNoRGVwZW5kZW5jaWVzKHNvcnRlZExpc3QpOworICAgICAgICAgICAgc29ydGVkTGlz
dC5hZGQoZmxvd1JlbmRlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBtX3JlbmRlckZsb3dUaHJl
YWRMaXN0LT5zd2FwKHNvcnRlZExpc3QpOworICAgICAgICBzZXRJc1JlbmRlckZsb3dUaHJlYWRP
cmRlckRpcnR5KGZhbHNlKTsKKyAgICB9CisKKyAgICBmb3IgKFJlbmRlckZsb3dUaHJlYWRMaXN0
OjppdGVyYXRvciBpdGVyID0gbV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+YmVnaW4oKTsgaXRlciAh
PSBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGZsb3dSZW5kZXJlciA9ICppdGVyOworICAgICAgICBmbG93UmVuZGVyZXIt
PmxheW91dElmTmVlZGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA3ZDg0ODhjODRjYTU4NzMzYjlj
ZWZiZGU1MTUwMzZjNzZmYjhkMjE0Li43NWM2YjI3MTQyYjFiOWUzMWUwNDIxZGNkYTBlOWRkYjRk
OTM3ZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgog
I2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2ICsz
Nyw4IEBAIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFJlbmRlckxheWVyQ29tcG9zaXRvcjsK
ICNlbmRpZgogCit0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckZsb3dUaHJlYWQqPiBSZW5kZXJG
bG93VGhyZWFkTGlzdDsKKwogY2xhc3MgUmVuZGVyVmlldyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7
CiBwdWJsaWM6CiAgICAgUmVuZGVyVmlldyhOb2RlKiwgRnJhbWVWaWV3Kik7CkBAIC0xNjcsNyAr
MTcwLDE2IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0OwogCiAg
ICAgUmVuZGVyRmxvd1RocmVhZCogcmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgZmxvd1RocmVhZCk7Ci0gICAgYm9vbCBoYXNSZW5kZXJGbG93VGhyZWFkcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzUmVuZGVyRmxvd1RocmVhZHM7IH0KKyAgICBib29sIGhhc1JlbmRl
ckZsb3dUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJGbG93VGhyZWFkTGlzdCAmJiAh
bV9yZW5kZXJGbG93VGhyZWFkTGlzdC0+aXNFbXB0eSgpOyB9CisgICAgdm9pZCBsYXlvdXRSZW5k
ZXJGbG93VGhyZWFkcygpOworICAgIGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eTsgfQorICAgIHZv
aWQgc2V0SXNSZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eShib29sIGRpcnR5KQorICAgIHsKKyAg
ICAgICAgbV9pc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5ID0gZGlydHk7CisgICAgICAgIGlm
IChkaXJ0eSkKKyAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIH0KKyAgICBj
b25zdCBSZW5kZXJGbG93VGhyZWFkTGlzdCogcmVuZGVyRmxvd1RocmVhZExpc3QoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlckZsb3dUaHJlYWRMaXN0LmdldCgpOyB9CiAKICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsK
ICAgICAKQEAgLTI0NiwxMiArMjU4LDEzIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9wYWdlTG9naWNhbEhlaWdodDsKICAgICBib29sIG1fcGFnZUxvZ2ljYWxIZWlnaHRD
aGFuZ2VkOwotICAgIGJvb2wgbV9oYXNSZW5kZXJGbG93VGhyZWFkczsKKyAgICBib29sIG1faXNS
ZW5kZXJGbG93VGhyZWFkT3JkZXJEaXJ0eTsKICAgICBMYXlvdXRTdGF0ZSogbV9sYXlvdXRTdGF0
ZTsKICAgICB1bnNpZ25lZCBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50OwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPiBt
X2NvbXBvc2l0b3I7CiAjZW5kaWYKKyAgICBPd25QdHI8UmVuZGVyRmxvd1RocmVhZExpc3Q+IG1f
cmVuZGVyRmxvd1RocmVhZExpc3Q7CiB9OwogCiBpbmxpbmUgUmVuZGVyVmlldyogdG9SZW5kZXJW
aWV3KFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>