<?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>137728</bug_id>
          
          <creation_ts>2014-10-14 19:25:10 -0700</creation_ts>
          <short_desc>Have offsetFromContainer() / offsetFromAncestorContainer() take a RenderElement&amp;</short_desc>
          <delta_ts>2014-10-15 20:18:07 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>mihnea</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041765</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 19:25:10 -0700</bug_when>
    <thetext>Have offsetFromContainer() / offsetFromAncestorContainer() take a RenderElement&amp; instead of a RenderObject*. The argument passed is never null and the type should be a RenderElement as the argument is a container.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041766</commentid>
    <comment_count>1</comment_count>
      <attachid>239840</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 19:35:59 -0700</bug_when>
    <thetext>Created attachment 239840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041772</commentid>
    <comment_count>2</comment_count>
      <attachid>239843</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 20:12:33 -0700</bug_when>
    <thetext>Created attachment 239843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041782</commentid>
    <comment_count>3</comment_count>
      <attachid>239843</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-14 21:10:42 -0700</bug_when>
    <thetext>Comment on attachment 239843
Patch

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

rs=me

&gt; Source/WebCore/rendering/RenderBox.cpp:1915
&gt; +    auto* container = this-&gt;container(repaintContainer, &amp;containerSkipped);

IMHO, &quot;auto&quot; is bad here, the type is 100% non obvious.

&gt; Source/WebCore/rendering/RenderBox.cpp:1964
&gt; +    auto* container = this-&gt;container(ancestorToStopAt, &amp;ancestorSkipped);

ditto

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:2640
&gt; +    auto* container = this-&gt;container();

ditto

&gt; Source/WebCore/rendering/RenderObject.cpp:1874
&gt; -        auto nextContainer = currContainer-&gt;container();
&gt; +        auto* nextContainer = currContainer-&gt;container();

gosh I hate auto sometimes... It is just making code hard to follow :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041783</commentid>
    <comment_count>4</comment_count>
      <attachid>239843</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 21:14:47 -0700</bug_when>
    <thetext>Comment on attachment 239843
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1915
&gt;&gt; +    auto* container = this-&gt;container(repaintContainer, &amp;containerSkipped);
&gt; 
&gt; IMHO, &quot;auto&quot; is bad here, the type is 100% non obvious.

I think Darin prefers auto* in this case because this way it always uses the same type returned by container(). For e.g., it is quite common for people to assign to a RenderObject* even though the function returns a RenderElement* nowadays. That said, I don&apos;t feel strongly either way. In this case, I do agree the type is not obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041784</commentid>
    <comment_count>5</comment_count>
      <attachid>239846</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 21:17:36 -0700</bug_when>
    <thetext>Created attachment 239846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041789</commentid>
    <comment_count>6</comment_count>
      <attachid>239846</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 22:01:38 -0700</bug_when>
    <thetext>Comment on attachment 239846
Patch

Clearing flags on attachment: 239846

Committed r174722: &lt;http://trac.webkit.org/changeset/174722&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041790</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 22:01:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041865</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-15 09:22:17 -0700</bug_when>
    <thetext>At some point we should talk this style point. I agree that the type is non-obvious, but I don’t agree that is a problem. Why does the type need to be obvious?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041956</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-15 13:59:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; At some point we should talk this style point. I agree that the type is non-obvious, but I don’t agree that is a problem. Why does the type need to be obvious?

For me it is all about reading/reviewing/understanding code. I would rather spend 5 minutes making the code explicit when writing it than creating cognitive load for anyone reading the code.

I like that &quot;auto&quot; always get the right type even after refactoring of disconnected parts of the code but the code readability suffers so much that the cost far outweigh the gains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042001</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-15 16:21:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; At some point we should talk this style point. I agree that the type is non-obvious, but I don’t agree that is a problem. Why does the type need to be obvious?
&gt; 
&gt; For me it is all about reading/reviewing/understanding code. I would rather spend 5 minutes making the code explicit when writing it than creating cognitive load for anyone reading the code.

What I’m not clear on is whether this cognitive load is an intrinsic result of this coding style, or a result of the fact that we are accustomed to the other style. I often don’t need to know the types of things; the names of the functions we are calling on them seem sufficient. Every time I see an explicit type name such as RenderObject I wonder if the type is correct.

We do not see the type names of function results or data members each time we use them. Is there some reason we need these type names urgently for local variables, but not those other things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042051</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-15 20:18:07 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; At some point we should talk this style point. I agree that the type is non-obvious, but I don’t agree that is a problem. Why does the type need to be obvious?
&gt; &gt; 
&gt; &gt; For me it is all about reading/reviewing/understanding code. I would rather spend 5 minutes making the code explicit when writing it than creating cognitive load for anyone reading the code.
&gt; 
&gt; What I’m not clear on is whether this cognitive load is an intrinsic result of this coding style, or a result of the fact that we are accustomed to the other style. I often don’t need to know the types of things; the names of the functions we are calling on them seem sufficient. Every time I see an explicit type name such as RenderObject I wonder if the type is correct.
&gt; 
&gt; We do not see the type names of function results or data members each time we use them. Is there some reason we need these type names urgently for local variables, but not those other things?

Funny you mention that, you always have me remove my local variables :) I do use local variables to make types explicit whenever I feel that it clarifies the flow.

Let&apos;s talk about this face to face when you have 5 minutes, this is not the best forum.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239840</attachid>
            <date>2014-10-14 19:35:59 -0700</date>
            <delta_ts>2014-10-14 20:12:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137728-20141014193606.patch</filename>
            <type>text/plain</type>
            <size>34303</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc2MDJmZjY0NWQ4MDY4
ZDg0MmNjYzhlNWVhNTNlMmJhYTY4NjI0MC4uY2NhOGU4Y2Y1NjQ0ZDZjMjU2Y2EwZTkyZmQxNTFm
NTU5MDQ4NGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBvZmZzZXRGcm9tQ29u
dGFpbmVyKCkgLyBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKSB0YWtlIGEgUmVuZGVyRWxl
bWVudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhh
dmUgb2Zmc2V0RnJvbUNvbnRhaW5lcigpIC8gb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKCkg
dGFrZSBhIFJlbmRlckVsZW1lbnQmCisgICAgICAgIGluc3RlYWQgb2YgYSBSZW5kZXJPYmplY3Qq
LiBUaGUgYXJndW1lbnQgcGFzc2VkIGlzIG5ldmVyIG51bGwgYW5kIHRoZSB0eXBlCisgICAgICAg
IHNob3VsZCBiZSBhIFJlbmRlckVsZW1lbnQgYXMgdGhlIGFyZ3VtZW50IGlzIGEgY29udGFpbmVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbENhcmV0
UmVjdEluUmVuZGVyZXJGb3JDYXJldFBhaW50aW5nKToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVU
YXBIaWdobGlnaHRlci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1
dGVUb0xvY2FsUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21D
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5j
ZXN0b3JDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjb252ZXJ0VG9QYWludGlu
Z1JlY3QpOgorCiAyMDE0LTEwLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIxNTkyMDgpOiBDcmFzaCB3aGVuIGNsaWNraW5nIHNjcnVi
YmVyIGFmdGVyIG5hdmlnYXRpbmcgYXdheS9iYWNrIHRvIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDQ3YzY1MjhkODI5ZjY0M2Y0OGUwNWRhNWJlOWZiNjJk
ZjkxYjg0NjIuLmZkNWFhODE5ZDkxYzA3YWFmZTVkNTQ1MTAxYjRjNmMyY2NkNjRiMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC0xMjk0LDEwICsxMjk0LDEwIEBA
IExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RJblJlbmRlcmVyRm9yQ2FyZXRQYWludGluZyhjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0CiAKICAgICAvLyBDb21wdXRlIGFuIG9mZnNldCBiZXR3
ZWVuIHRoZSByZW5kZXJlciBhbmQgdGhlIGNhcmV0UGFpbnRlci4KICAgICB3aGlsZSAocmVuZGVy
ZXIgIT0gY2FyZXRQYWludGVyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyT2Jq
ZWN0ID0gcmVuZGVyZXItPmNvbnRhaW5lcigpOworICAgICAgICBSZW5kZXJFbGVtZW50KiBjb250
YWluZXJPYmplY3QgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7CiAgICAgICAgIGlmICghY29udGFp
bmVyT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICAgICAgbG9j
YWxSZWN0Lm1vdmUocmVuZGVyZXItPm9mZnNldEZyb21Db250YWluZXIoY29udGFpbmVyT2JqZWN0
LCBsb2NhbFJlY3QubG9jYXRpb24oKSkpOworICAgICAgICBsb2NhbFJlY3QubW92ZShyZW5kZXJl
ci0+b2Zmc2V0RnJvbUNvbnRhaW5lcigqY29udGFpbmVyT2JqZWN0LCBsb2NhbFJlY3QubG9jYXRp
b24oKSkpOwogICAgICAgICByZW5kZXJlciA9IGNvbnRhaW5lck9iamVjdDsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAppbmRleCBmOGY0
N2UzNDQzZTM0MzFhZDFkMjZiMTVhZDhkYTQ2ZDg0OTIzNDg5Li41MmEwNmVjMTc2ZGFiOGI5MmUy
YWU0YWU1ZTZjY2E5ODgxZjA2MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJl
VGFwSGlnaGxpZ2h0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEFmZmluZVRyYW5zZm9ybSBsb2Nh
bFRvQWJzb2x1dGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyT2JqZWN0KiBvKQogICAgIExheW91dFBv
aW50IHJlZmVyZW5jZVBvaW50OwogCiAgICAgd2hpbGUgKG8pIHsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBuZXh0Q29udGFpbmVyID0gby0+Y29udGFpbmVyKCk7CisgICAgICAgIFJlbmRlckVsZW1l
bnQqIG5leHRDb250YWluZXIgPSBvLT5jb250YWluZXIoKTsKICAgICAgICAgaWYgKCFuZXh0Q29u
dGFpbmVyKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggNTc3NWQ0Y2VhYTQ3YjQwMTJjYzBmZDcwOTg4NDU4ZDJlNWZkY2Q5Ni4u
YzhlZDRjYmYxZDUxZDBmYmViMjYxNWQxNzdmZjU3YWU5ZDM2ZmRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE5MTIsOCArMTkxMiw4IEBAIHZvaWQgUmVuZGVy
Qm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluCiAgICAgfQogCiAgICAgYm9vbCBjb250YWluZXJTa2lwcGVkOwotICAgIGF1
dG8gbyA9IGNvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7Ci0g
ICAgaWYgKCFvKQorICAgIGF1dG8qIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7CisgICAgaWYgKCFjb250YWluZXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGJvb2wgaXNGaXhlZFBvcyA9IHN0eWxlKCkucG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uOwpAQCAtMTkyOCwxMiArMTkyOCwxMiBAQCB2b2lkIFJlbmRlckJveDo6
bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbgogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gbW9kZSAmIElz
Rml4ZWQ7CiAgICAgCi0gICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9t
Q29udGFpbmVyKG8sIExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsK
KyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoKmNv
bnRhaW5lciwgTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOwogICAg
IAotICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChvLT5zdHls
ZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAobW9k
ZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvKSkg
eworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChjb250YWlu
ZXItPnN0eWxlKCkucHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLnByZXNlcnZlczNEKCkpOworICAg
IGlmIChtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFp
bmVyKGNvbnRhaW5lcikpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICAg
ICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOworICAg
ICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5lciwgY29udGFpbmVyT2Zmc2V0
LCB0KTsKICAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2VydmUz
RCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6
OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgIH0gZWxzZQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5t
b3ZlKGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHBy
ZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9y
bVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHZvaWQgUmVu
ZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluCiAgICAgaWYgKGNvbnRhaW5lclNraXBwZWQpIHsKICAgICAgICAgLy8g
VGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2VlbiByZXBhaW50Q29udGFpbmVyIGFuZCBv
LCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRhaW5lcnMsIHNvIGl0IHNob3VsZCBiZSBz
YWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3QgdGhlIGRlbHRhIGJldHdlZW4gdGhlIHJl
cGFpbnRDb250YWluZXIgYW5kIG8uCi0gICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0
ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKG8pOworICAg
ICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29udGFpbmVyKTsKICAgICAgICAgdHJhbnNmb3JtU3Rh
dGUubW92ZSgtY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIC1jb250YWluZXJPZmZzZXQuaGVpZ2h0
KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRy
YW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE5NTAsMTAgKzE5NTAsMTAgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW4KIAogICAgIC8v
IEZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzIGluc2lkZSBvdXQtb2YtZmxvdyBuYW1lZCBm
bG93cywgd2UgZG8gbm90IHdhbnQgdG8KICAgICAvLyBtYXAgdGhlaXIgcG9zaXRpb24gZnVydGhl
ciB0byByZWdpb25zIGJhc2VkIG9uIHRoZWlyIGNvb3JkaW5hdGVzIGluc2lkZSB0aGUgbmFtZWQg
Zmxvd3MuCi0gICAgaWYgKCFvLT5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSB8fCAhZml4
ZWRQb3NpdGlvbmVkV2l0aE5hbWVkRmxvd0NvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBvLT5t
YXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2Rl
LCB3YXNGaXhlZCk7CisgICAgaWYgKCFjb250YWluZXItPmlzT3V0T2ZGbG93UmVuZGVyRmxvd1Ro
cmVhZCgpIHx8ICFmaXhlZFBvc2l0aW9uZWRXaXRoTmFtZWRGbG93Q29udGFpbmluZ0Jsb2NrKCkp
CisgICAgICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogICAgIGVsc2UKLSAgICAgICAgby0+
bWFwTG9jYWxUb0NvbnRhaW5lcih0b1JlbmRlckxheWVyTW9kZWxPYmplY3QobyksIHRyYW5zZm9y
bVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CisgICAgICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0Nv
bnRhaW5lcih0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY29udGFpbmVyKSwgdHJhbnNmb3JtU3Rh
dGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAogY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdApAQCAt
MTk2MSw5ICsxOTYxLDkgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAgICBBU1NFUlQoYW5j
ZXN0b3JUb1N0b3BBdCAhPSB0aGlzKTsKIAogICAgIGJvb2wgYW5jZXN0b3JTa2lwcGVkOwotICAg
IGF1dG8gY29udGFpbmVyID0gdGhpcy0+Y29udGFpbmVyKGFuY2VzdG9yVG9TdG9wQXQsICZhbmNl
c3RvclNraXBwZWQpOworICAgIGF1dG8qIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcihhbmNl
c3RvclRvU3RvcEF0LCAmYW5jZXN0b3JTa2lwcGVkKTsKICAgICBpZiAoIWNvbnRhaW5lcikKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBpc0Zp
eGVkUG9zID0gc3R5bGUoKS5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247CiAgICAgYm9vbCBo
YXNUcmFuc2Zvcm0gPSBoYXNMYXllcigpICYmIGxheWVyKCktPnRyYW5zZm9ybSgpOwpAQCAtMTk3
MiwxMSArMTk3MiwxMSBAQCBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZQogICAgIGlmIChhbmNlc3Rv
clNraXBwZWQpIHsKICAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2Vl
biByZXBhaW50Q29udGFpbmVyIGFuZCBvLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRh
aW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3Qg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIGFuY2VzdG9yIGFuZCBvLgotICAgICAgICBhZGp1c3RtZW50
Rm9yU2tpcHBlZEFuY2VzdG9yID0gLWFuY2VzdG9yVG9TdG9wQXQtPm9mZnNldEZyb21BbmNlc3Rv
ckNvbnRhaW5lcihjb250YWluZXIpOworICAgICAgICBhZGp1c3RtZW50Rm9yU2tpcHBlZEFuY2Vz
dG9yID0gLWFuY2VzdG9yVG9TdG9wQXQtPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29u
dGFpbmVyKTsKICAgICB9CiAKICAgICBib29sIG9mZnNldERlcGVuZHNPblBvaW50ID0gZmFsc2U7
Ci0gICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKGNv
bnRhaW5lciwgTGF5b3V0UG9pbnQoKSwgJm9mZnNldERlcGVuZHNPblBvaW50KTsKKyAgICBMYXlv
dXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwg
TGF5b3V0UG9pbnQoKSwgJm9mZnNldERlcGVuZHNPblBvaW50KTsKIAogICAgIGJvb2wgcHJlc2Vy
dmUzRCA9IGNvbnRhaW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2Vy
dmVzM0QoKTsKICAgICBpZiAoc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWlu
ZXIpKSB7CkBAIC0yMDA3LDEwICsyMDA3LDEwIEBAIHZvaWQgUmVuZGVyQm94OjptYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIFRyYW5zZm9ybVN0YXRlCiAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUsIHRy
YW5zZm9ybVN0YXRlKTsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBv
ZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKK0xheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRQb2ludCYs
IGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAogewogICAgIC8vIEEgcmVnaW9uICJo
YXMiIGJveGVzIGluc2lkZSBpdCB3aXRob3V0IGJlaW5nIHRoZWlyIGNvbnRhaW5lci4gCi0gICAg
QVNTRVJUKHJlbmRlcmVyID09IGNvbnRhaW5lcigpIHx8IGlzPFJlbmRlclJlZ2lvbj4oKnJlbmRl
cmVyKSk7CisgICAgQVNTRVJUKCZyZW5kZXJlciA9PSBjb250YWluZXIoKSB8fCBpczxSZW5kZXJS
ZWdpb24+KHJlbmRlcmVyKSk7CiAKICAgICBMYXlvdXRTaXplIG9mZnNldDsgICAgCiAgICAgaWYg
KGlzSW5GbG93UG9zaXRpb25lZCgpKQpAQCAtMjAxOSwxNCArMjAxOSwxNCBAQCBMYXlvdXRTaXpl
IFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBMYXlvdXRQbwogICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpCiAgICAg
ICAgIG9mZnNldCArPSB0b3BMZWZ0TG9jYXRpb25PZmZzZXQoKTsKIAotICAgIGlmIChpczxSZW5k
ZXJCb3g+KCpyZW5kZXJlcikpCi0gICAgICAgIG9mZnNldCAtPSBkb3duY2FzdDxSZW5kZXJCb3g+
KCpyZW5kZXJlcikuc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CisgICAgaWYgKGlzPFJlbmRlckJv
eD4ocmVuZGVyZXIpKQorICAgICAgICBvZmZzZXQgLT0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcikuc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAKLSAgICBpZiAoc3R5bGUoKS5wb3NpdGlv
bigpID09IEFic29sdXRlUG9zaXRpb24gJiYgcmVuZGVyZXItPmlzSW5GbG93UG9zaXRpb25lZCgp
ICYmIGlzPFJlbmRlcklubGluZT4oKnJlbmRlcmVyKSkKLSAgICAgICAgb2Zmc2V0ICs9IGRvd25j
YXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5s
aW5lKHRoaXMpOworICAgIGlmIChzdHlsZSgpLnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlv
biAmJiByZW5kZXJlci5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBpczxSZW5kZXJJbmxpbmU+KHJl
bmRlcmVyKSkKKyAgICAgICAgb2Zmc2V0ICs9IGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVy
ZXIpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUodGhpcyk7CiAKICAgICBpZiAob2Zm
c2V0RGVwZW5kc09uUG9pbnQpCi0gICAgICAgICpvZmZzZXREZXBlbmRzT25Qb2ludCB8PSBpczxS
ZW5kZXJGbG93VGhyZWFkPigqcmVuZGVyZXIpOworICAgICAgICAqb2Zmc2V0RGVwZW5kc09uUG9p
bnQgfD0gaXM8UmVuZGVyRmxvd1RocmVhZD4ocmVuZGVyZXIpOwogCiAgICAgcmV0dXJuIG9mZnNl
dDsKIH0KQEAgLTIyMjUsNyArMjIyNSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAKICAg
ICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAgICAvLyBJZiB0aGUgcmVwYWludENvbnRh
aW5lciBpcyBiZWxvdyBvLCB0aGVuIHdlIG5lZWQgdG8gbWFwIHRoZSByZWN0IGludG8gcmVwYWlu
dENvbnRhaW5lcidzIGNvb3JkaW5hdGVzLgotICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9m
ZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihyZW5k
ZXJlcik7CisgICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRh
aW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKCpyZW5kZXJlcik7CiAgICAgICAgIHJl
Y3QubW92ZSgtY29udGFpbmVyT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA5Yzc1NDYyZWY2N2ZhOGRjNWUzMTFlNzMw
ZTFjMjI0NjJjZjZlM2I3Li42NTI3YTBjNGU1MmNiMmI1NjhjYTcyNTUxOWM0N2ZjMDY3YjBjMTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0zMzUsNyArMzM1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
Q29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0
RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFNp
emUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIAog
ICAgIExheW91dFVuaXQgYWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExh
eW91dFVuaXQgd2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgYWRqdXN0Qm9yZGVyQm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdodCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1
MDllOTg2ZTM2MTFiODBmYTUzYzI3MDlhMzNkYjUxMmIyMDdlMDcwLi43ZGRhOGZiZjIyYTczZThm
OGEyYmU3N2U2MzM3MTg4NTVlYjRiY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI2MzcsOCArMjYzNyw4IEBAIGJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xv
Y2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNm
b3JtU3RhdGUpIGNvbnN0CiB7Ci0gICAgYXV0byBvID0gY29udGFpbmVyKCk7Ci0gICAgaWYgKCFv
KQorICAgIGF1dG8qIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcigpOworICAgIGlmICghY29u
dGFpbmVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBp
cyB3cm9uZyBmb3IgbmFtZWQgZmxvdyB0aHJlYWRzIHNpbmNlIGl0IG9ubHkgd29ya3MgZm9yIGNv
bnRlbnQgaW4gdGhlIGZpcnN0IHJlZ2lvbi4KQEAgLTI2NDYsMjEgKzI2NDYsMjEgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0
ZXNGbGFncyBtb2RlLCBUcmEKICAgICAvLyBnZW9tZXRyeSB0byBhY3R1YWxseSBnZXQgYSBiZXR0
ZXIgcmVzdWx0LgogICAgIC8vIFRoZSBwb2ludCBpbnNpZGUgYSBib3ggdGhhdCdzIGluc2lkZSBh
IHJlZ2lvbiBoYXMgaXRzIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSByZWdpb24sCiAgICAg
Ly8gbm90IHRoZSBGbG93VGhyZWFkIHRoYXQgaXMgaXRzIGNvbnRhaW5lciBpbiB0aGUgUmVuZGVy
T2JqZWN0IHRyZWUuCi0gICAgaWYgKGlzQm94KCkgJiYgby0+aXNPdXRPZkZsb3dSZW5kZXJGbG93
VGhyZWFkKCkpIHsKKyAgICBpZiAoaXM8UmVuZGVyQm94PigqdGhpcykgJiYgY29udGFpbmVyLT5p
c091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkgewogICAgICAgICBSZW5kZXJSZWdpb24qIHN0
YXJ0UmVnaW9uID0gbnVsbHB0cjsKICAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBu
dWxscHRyOwotICAgICAgICBpZiAodG9SZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5n
ZUZvckJveCh0b1JlbmRlckJveCh0aGlzKSwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCi0gICAg
ICAgICAgICBvID0gc3RhcnRSZWdpb247CisgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJGbG93
VGhyZWFkPigqY29udGFpbmVyKS5nZXRSZWdpb25SYW5nZUZvckJveChkb3duY2FzdDxSZW5kZXJC
b3g+KHRoaXMpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAgICAgIGNvbnRhaW5l
ciA9IHN0YXJ0UmVnaW9uOwogICAgIH0KIAotICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50
KG1vZGUsIHRyYW5zZm9ybVN0YXRlKTsKKyAgICBjb250YWluZXItPm1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KG1vZGUsIHRyYW5zZm9ybVN0YXRlKTsKIAotICAgIExheW91dFNpemUgY29udGFpbmVy
T2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKKyAgICBMYXlv
dXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwg
TGF5b3V0UG9pbnQoKSk7CiAKLSAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNm
b3JtcyAmJiAoby0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0Qo
KSk7Ci0gICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZy
b21Db250YWluZXIobykpIHsKKyAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNm
b3JtcyAmJiAoY29udGFpbmVyLT5zdHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVz
ZXJ2ZXMzRCgpKTsKKyAgICBpZiAobW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHQ7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVy
T2Zmc2V0LCB0KTsKKyAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIs
IGNvbnRhaW5lck9mZnNldCwgdCk7CiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNm
b3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6
IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICB9IGVsc2UKICAgICAgICAg
dHJhbnNmb3JtU3RhdGUubW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zm
c2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFu
c2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDQ2NWJhOTA1N2FhNjBmMTQ4ODA2MzI3
NzYxM2Q3ZDAxODRkZGIyNDQuLjZlNDQwZTc0MDY2MmU5Njc4OTk2NzM3OGFlMDFkNTVlNDNjYTUw
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTY3
LDggKzExNjcsOCBAQCB2b2lkIFJlbmRlcklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDbwogICAgICAgICByZXR1cm47CiAK
ICAgICBib29sIGNvbnRhaW5lclNraXBwZWQ7Ci0gICAgUmVuZGVyRWxlbWVudCogbyA9IGNvbnRh
aW5lcihyZXBhaW50Q29udGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7Ci0gICAgaWYgKCFvKQor
ICAgIFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcihyZXBhaW50Q29u
dGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7CisgICAgaWYgKCFjb250YWluZXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIExheW91dFBvaW50IHRvcExlZnQgPSByZWN0LmxvY2F0aW9uKCk7CkBA
IC0xMTg0LDM2ICsxMTg0LDM1IEBAIHZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvCiAgICAgLy8gRklY
TUU6IFdlIGlnbm9yZSB0aGUgbGlnaHR3ZWlnaHQgY2xpcHBpbmcgcmVjdCB0aGF0IGNvbnRyb2xz
IHVzZSwgc2luY2UgaWYgfG98IGlzIGluIG1pZC1sYXlvdXQsCiAgICAgLy8gaXRzIGNvbnRyb2xD
bGlwUmVjdCB3aWxsIGJlIHdyb25nLiBGb3Igb3ZlcmZsb3cgY2xpcCB3ZSB1c2UgdGhlIHZhbHVl
cyBjYWNoZWQgYnkgdGhlIGxheWVyLgogICAgIHJlY3Quc2V0TG9jYXRpb24odG9wTGVmdCk7Ci0g
ICAgaWYgKG8tPmhhc092ZXJmbG93Q2xpcCgpKSB7Ci0gICAgICAgIFJlbmRlckJveCogY29udGFp
bmVyQm94ID0gdG9SZW5kZXJCb3gobyk7Ci0gICAgICAgIGNvbnRhaW5lckJveC0+YXBwbHlDYWNo
ZWRDbGlwQW5kU2Nyb2xsT2Zmc2V0Rm9yUmVwYWludChyZWN0KTsKKyAgICBpZiAoY29udGFpbmVy
LT5oYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3g+KCpjb250
YWluZXIpLmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQocmVjdCk7CiAg
ICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAgICAvLyBJZiB0aGUgcmVwYWludENv
bnRhaW5lciBpcyBiZWxvdyBvLCB0aGVuIHdlIG5lZWQgdG8gbWFwIHRoZSByZWN0IGludG8gcmVw
YWludENvbnRhaW5lcidzIGNvb3JkaW5hdGVzLgotICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5l
ck9mZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihv
KTsKKyAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVy
LT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CiAgICAgICAgIHJlY3Qu
bW92ZSgtY29udGFpbmVyT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBvLT5jb21wdXRlUmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVjdCwgZml4ZWQp
OworICAgIGNvbnRhaW5lci0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIs
IHJlY3QsIGZpeGVkKTsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21D
b250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiwgYm9v
bCogb2Zmc2V0RGVwZW5kc09uUG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlcklubGluZTo6
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KGNvbnRhaW5lciA9PSB0aGlzLT5jb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZjb250YWluZXIg
PT0gdGhpcy0+Y29udGFpbmVyKCkpOwogICAgIAogICAgIExheW91dFNpemUgb2Zmc2V0OyAgICAK
ICAgICBpZiAoaXNJbkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIG9mZnNldCArPSBvZmZzZXRG
b3JJbkZsb3dQb3NpdGlvbigpOwogCi0gICAgaWYgKGNvbnRhaW5lci0+aXNCb3goKSkKLSAgICAg
ICAgb2Zmc2V0IC09IHRvUmVuZGVyQm94KGNvbnRhaW5lciktPnNjcm9sbGVkQ29udGVudE9mZnNl
dCgpOworICAgIGlmIChpczxSZW5kZXJCb3g+KGNvbnRhaW5lcikpCisgICAgICAgIG9mZnNldCAt
PSBkb3duY2FzdDxSZW5kZXJCb3g+KGNvbnRhaW5lcikuc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7
CiAKICAgICBpZiAob2Zmc2V0RGVwZW5kc09uUG9pbnQpCi0gICAgICAgICpvZmZzZXREZXBlbmRz
T25Qb2ludCA9IChjb250YWluZXItPmlzQm94KCkgJiYgY29udGFpbmVyLT5zdHlsZSgpLmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIHx8IGNvbnRhaW5lci0+aXNSZW5kZXJGbG93VGhyZWFk
KCk7CisgICAgICAgICpvZmZzZXREZXBlbmRzT25Qb2ludCA9IChpczxSZW5kZXJCb3g+KGNvbnRh
aW5lcikgJiYgY29udGFpbmVyLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkg
fHwgaXM8UmVuZGVyRmxvd1RocmVhZD4oY29udGFpbmVyKTsKIAogICAgIHJldHVybiBvZmZzZXQ7
CiB9CkBAIC0xMjMzLDI0ICsxMjMyLDI0IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAgICAg
fQogCiAgICAgYm9vbCBjb250YWluZXJTa2lwcGVkOwotICAgIFJlbmRlckVsZW1lbnQqIG8gPSBj
b250YWluZXIocmVwYWludENvbnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOwotICAgIGlmICgh
bykKKyAgICBSZW5kZXJFbGVtZW50KiBjb250YWluZXIgPSB0aGlzLT5jb250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOworICAgIGlmICghY29udGFpbmVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobW9kZSAmIEFwcGx5Q29udGFpbmVyRmxpcCAmJiBvLT5p
c0JveCgpKSB7Ci0gICAgICAgIGlmIChvLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKCkpIHsKKyAgICBpZiAobW9kZSAmIEFwcGx5Q29udGFpbmVyRmxpcCAmJiBpczxSZW5kZXJC
b3g+KCpjb250YWluZXIpKSB7CisgICAgICAgIGlmIChjb250YWluZXItPnN0eWxlKCkuaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgTGF5b3V0UG9pbnQgY2VudGVy
UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2Zv
cm1TdGF0ZS5tb3ZlKHRvUmVuZGVyQm94KG8pLT5mbGlwRm9yV3JpdGluZ01vZGUoY2VudGVyUG9p
bnQpIC0gY2VudGVyUG9pbnQpOworICAgICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShkb3du
Y2FzdDxSZW5kZXJCb3g+KCpjb250YWluZXIpLmZsaXBGb3JXcml0aW5nTW9kZShjZW50ZXJQb2lu
dCkgLSBjZW50ZXJQb2ludCk7CiAgICAgICAgIH0KICAgICAgICAgbW9kZSAmPSB+QXBwbHlDb250
YWluZXJGbGlwOwogICAgIH0KIAotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zm
c2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2lu
dCgpKSk7CisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFp
bmVyKCpjb250YWluZXIsIExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkp
KTsKIAotICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChvLT5z
dHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAo
bW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihv
KSkgeworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChjb250
YWluZXItPnN0eWxlKCkucHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLnByZXNlcnZlczNEKCkpOwor
ICAgIGlmIChtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKGNvbnRhaW5lcikpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKLSAg
ICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOwor
ICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5lciwgY29udGFpbmVyT2Zm
c2V0LCB0KTsKICAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2Vy
dmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3Rh
dGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgIH0gZWxzZQogICAgICAgICB0cmFuc2Zvcm1TdGF0
ZS5tb3ZlKGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCks
IHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5z
Zm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKQEAgLTEyNTgsMTIgKzEyNTcsMTIgQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnQKICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAg
ICAvLyBUaGVyZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIg
YW5kIG8sIGJlY2F1c2UgdHJhbnNmb3JtcyBjcmVhdGUgY29udGFpbmVycywgc28gaXQgc2hvdWxk
IGJlIHNhZmUKICAgICAgICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0aGUgZGVsdGEgYmV0d2VlbiB0
aGUgcmVwYWludENvbnRhaW5lciBhbmQgby4KLSAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJP
ZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIobyk7
CisgICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+
b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKCpjb250YWluZXIpOwogICAgICAgICB0cmFuc2Zv
cm1TdGF0ZS5tb3ZlKC1jb250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5o
ZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3Jt
IDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFu
c2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOworICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQp
OwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CkBAIC0xMjczLDE3ICsxMjcyLDE3
IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPCiAgICAgYm9vbCBhbmNlc3RvclNraXBwZWQ7CiAg
ICAgUmVuZGVyRWxlbWVudCogY29udGFpbmVyID0gdGhpcy0+Y29udGFpbmVyKGFuY2VzdG9yVG9T
dG9wQXQsICZhbmNlc3RvclNraXBwZWQpOwogICAgIGlmICghY29udGFpbmVyKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBMYXlvdXRTaXplIGFkanVz
dG1lbnRGb3JTa2lwcGVkQW5jZXN0b3I7CiAgICAgaWYgKGFuY2VzdG9yU2tpcHBlZCkgewogICAg
ICAgICAvLyBUaGVyZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWlu
ZXIgYW5kIG8sIGJlY2F1c2UgdHJhbnNmb3JtcyBjcmVhdGUgY29udGFpbmVycywgc28gaXQgc2hv
dWxkIGJlIHNhZmUKICAgICAgICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0aGUgZGVsdGEgYmV0d2Vl
biB0aGUgYW5jZXN0b3IgYW5kIG8uCi0gICAgICAgIGFkanVzdG1lbnRGb3JTa2lwcGVkQW5jZXN0
b3IgPSAtYW5jZXN0b3JUb1N0b3BBdC0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnRh
aW5lcik7CisgICAgICAgIGFkanVzdG1lbnRGb3JTa2lwcGVkQW5jZXN0b3IgPSAtYW5jZXN0b3JU
b1N0b3BBdC0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKCpjb250YWluZXIpOwogICAgIH0K
IAogICAgIGJvb2wgb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBmYWxzZTsKLSAgICBMYXlvdXRTaXpl
IGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoY29udGFpbmVyLCBMYXlvdXRQ
b2ludCgpLCAmb2Zmc2V0RGVwZW5kc09uUG9pbnQpOworICAgIExheW91dFNpemUgY29udGFpbmVy
T2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcigqY29udGFpbmVyLCBMYXlvdXRQb2ludCgpLCAm
b2Zmc2V0RGVwZW5kc09uUG9pbnQpOwogCiAgICAgYm9vbCBwcmVzZXJ2ZTNEID0gY29udGFpbmVy
LT5zdHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpOwogICAgIGlm
IChzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5lcikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAxMzQ2ZGUwNmJhN2Y1MjNhMjA5MGUx
NTBmN2MyZDFhN2ZkZDc3MWEyLi5hNGZlYmQwMTZjM2QzOWRmZDIxMDE0NDM2NzdiOTFlNWFkZGVh
NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBMYXlv
dXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1l
bnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVs
bHB0cikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVy
Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAK
aW5kZXggODUzNWY2NmVhZGM0YTJmNDU1NzVhZmFjOGViNzQxZjkyZTkyOGQ0Yi4uNTdmNDFiNTlj
MzQxMDkzYmJkY2NkNjFmNTk2MWRhOGFiYjJlYzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKQEAgLTYw
OCwyMSArNjA4LDIwIEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpjb21wdXRl
TGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luKExheW91dFN0YXRlJiBsCiAgICAgfQogfQogCi1MYXlv
dXRTaXplIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihS
ZW5kZXJPYmplY3QqIGVuY2xvc2luZ0NvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIHBoeXNp
Y2FsUG9pbnQsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxl
bWVudCYgZW5jbG9zaW5nQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcGh5c2ljYWxQb2lu
dCwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVuY2xv
c2luZ0NvbnRhaW5lciA9PSBjb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZlbmNsb3NpbmdDb250
YWluZXIgPT0gY29udGFpbmVyKCkpOwogCiAgICAgaWYgKG9mZnNldERlcGVuZHNPblBvaW50KQog
ICAgICAgICAqb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSB0cnVlOwogICAgIAogICAgIExheW91dFBv
aW50IHRyYW5zbGF0ZWRQaHlzaWNhbFBvaW50KHBoeXNpY2FsUG9pbnQpOwotICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gcGh5c2ljYWxUcmFuc2xhdGlvbkZyb21GbG93VG9SZWdpb24odHJhbnNs
YXRlZFBoeXNpY2FsUG9pbnQpOwotICAgIGlmIChyZWdpb24pCisgICAgaWYgKFJlbmRlclJlZ2lv
biogcmVnaW9uID0gcGh5c2ljYWxUcmFuc2xhdGlvbkZyb21GbG93VG9SZWdpb24odHJhbnNsYXRl
ZFBoeXNpY2FsUG9pbnQpKQogICAgICAgICB0cmFuc2xhdGVkUGh5c2ljYWxQb2ludC5tb3ZlQnko
cmVnaW9uLT50b3BMZWZ0TG9jYXRpb24oKSk7CiAgICAgCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQo
dHJhbnNsYXRlZFBoeXNpY2FsUG9pbnQueCgpLCB0cmFuc2xhdGVkUGh5c2ljYWxQb2ludC55KCkp
OwotICAgIGlmIChlbmNsb3NpbmdDb250YWluZXItPmlzQm94KCkpCi0gICAgICAgIG9mZnNldCAt
PSB0b1JlbmRlckJveChlbmNsb3NpbmdDb250YWluZXIpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQo
KTsKKyAgICBpZiAoaXM8UmVuZGVyQm94PihlbmNsb3NpbmdDb250YWluZXIpKQorICAgICAgICBv
ZmZzZXQgLT0gZG93bmNhc3Q8UmVuZGVyQm94PihlbmNsb3NpbmdDb250YWluZXIpLnNjcm9sbGVk
Q29udGVudE9mZnNldCgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAgICAgCkBAIC02MzgsNyAr
NjM3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6Om1hcEFic29sdXRlVG9M
b2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW8KICAgICBMYXlvdXRTaXplIGNhbmRpZGF0
ZUNvbnRhaW5lck9mZnNldDsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbHVtblNldCA6
IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck11bHRpQ29sdW1uU2V0PigqcGFyZW50KCkpKSB7Ci0gICAg
ICAgIGNhbmRpZGF0ZUNvbnRhaW5lck9mZnNldCA9IGNvbHVtblNldC5vZmZzZXRGcm9tQ29udGFp
bmVyKHBhcmVudCgpLCBMYXlvdXRQb2ludCgpKTsKKyAgICAgICAgY2FuZGlkYXRlQ29udGFpbmVy
T2Zmc2V0ID0gY29sdW1uU2V0Lm9mZnNldEZyb21Db250YWluZXIoKnBhcmVudCgpLCBMYXlvdXRQ
b2ludCgpKTsKICAgICAgICAgCiAgICAgICAgIGNhbmRpZGF0ZVBvaW50ID0gdHJhbnNmb3JtUG9p
bnQgLSBjYW5kaWRhdGVDb250YWluZXJPZmZzZXQ7CiAgICAgICAgIGNhbmRpZGF0ZUNvbHVtblNl
dCA9ICZjb2x1bW5TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggNDY5Y2Q1ZDZlZDVkNWY0OTZhYjhkY2Vh
YjY3MTlhNDY5Yzk2N2NkNC4uNTEzZDMxZDkyN2YwNzFlYzhhYzVkYTk4ZDU1NzVlMDA3MmFlNjVk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0Zs
YWdzLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0
U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50
JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IG51bGxw
dHIpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IGFzIGNv
bHVtbiBhbmQgcmVnaW9uIGZsb3cgdGhyZWFkcyBzdGFydCBuZXN0aW5nLCB0aGlzIHdpbGwgZW5k
IHVwIGNoYW5naW5nLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGVja0NvbHVtbkJyZWFrcygp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKaW5kZXggNzY5OTUxZWQxZmUwYjI4YmU5NTI1YTM2ODli
NGQyODExOTdlZjNlYS4uZDJmZjg4NTYxNTg0ZTE5NjA5MmVjNjI4NmFkMmU0ZDJhNjVlNzM2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuY3BwCkBAIC0yNDksMTEgKzI0OSwxMCBAQCBib29sIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50OjpzaG91bGRDbGlwRmxvd1RocmVhZENvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBpc0xh
c3RSZWdpb24oKSAmJiAoc3R5bGUoKS5yZWdpb25GcmFnbWVudCgpID09IEJyZWFrUmVnaW9uRnJh
Z21lbnQpOwogfQogICAgIAotTGF5b3V0U2l6ZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6b2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiwgYm9v
bCopIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpvZmZzZXRGcm9t
Q29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmLCBi
b29sKikgY29uc3QKIHsKLSAgICBBU1NFUlQoJmZyYWdtZW50Q29udGFpbmVyKCkgPT0gbyk7Ci0g
ICAgQVNTRVJUKGNvbnRhaW5lcigpID09IG8pOwotICAgIFVOVVNFRF9QQVJBTShvKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGNvbnRhaW5lciwgJmZyYWdtZW50Q29udGFpbmVyKCkgPT0gJmNvbnRhaW5l
cik7CisgICAgQVNTRVJUX1VOVVNFRChjb250YWluZXIsIHRoaXMtPmNvbnRhaW5lcigpID09ICZj
b250YWluZXIpOwogICAgIHJldHVybiB0b3BMZWZ0TG9jYXRpb25PZmZzZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaApp
bmRleCA0ZjE2ZTYwNTY1MWVmNmY2YjFhNjc2OWI1NmFmMTE3ZDQwNTIwNzA2Li4zMzBmMzBjYWU0
OGZmZGI3N2MyNTRmMDgyYTlmYWJiY2IxZGExMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaApAQCAtNjksNyArNjksNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNob3VsZENsaXBGbG93VGhyZWFkQ29udGVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zm
c2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91
dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgYm9vbCBpc1BzZXVkb0VsZW1lbnRSZWdpb24oKSBjb25zdCB7IHJldHVybiBwYXJl
bnQoKSAmJiBwYXJlbnQoKS0+aXNQc2V1ZG9FbGVtZW50KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBiMjdkOTEwZjBiZDVlMGE4YjM2YTAyMDY3
OWQyYWZlYWMxZGMyYmY0Li5lMDRlNDM1MDZlNjU1N2U3MmMzOGZlNWM5YTY3NzYxZGE3YjBlZDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg1MSwz
NiArMTg1MSwzNiBAQCBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBv
aW50KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIGNvbgogICAgIHJldHVybiB0cmFuc2Zv
cm1TdGF0ZS5sYXN0UGxhbmFyUG9pbnQoKTsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6
Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2ludCYs
IGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJPYmpl
Y3Q6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAogewotICAgIEFT
U0VSVChvID09IGNvbnRhaW5lcigpKTsKKyAgICBBU1NFUlQoJmNvbnRhaW5lciA9PSB0aGlzLT5j
b250YWluZXIoKSk7CiAKICAgICBMYXlvdXRTaXplIG9mZnNldDsKLSAgICBpZiAoby0+aXNCb3go
KSkKLSAgICAgICAgb2Zmc2V0IC09IHRvUmVuZGVyQm94KG8pLT5zY3JvbGxlZENvbnRlbnRPZmZz
ZXQoKTsKKyAgICBpZiAoaXM8UmVuZGVyQm94Pihjb250YWluZXIpKQorICAgICAgICBvZmZzZXQg
LT0gZG93bmNhc3Q8UmVuZGVyQm94Pihjb250YWluZXIpLnNjcm9sbGVkQ29udGVudE9mZnNldCgp
OwogCiAgICAgaWYgKG9mZnNldERlcGVuZHNPblBvaW50KQotICAgICAgICAqb2Zmc2V0RGVwZW5k
c09uUG9pbnQgPSBvLT5pc1JlbmRlckZsb3dUaHJlYWQoKTsKKyAgICAgICAgKm9mZnNldERlcGVu
ZHNPblBvaW50ID0gaXM8UmVuZGVyRmxvd1RocmVhZD4oY29udGFpbmVyKTsKIAogICAgIHJldHVy
biBvZmZzZXQ7CiB9CiAKLUxheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0
b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0CitMYXlvdXRTaXplIFJl
bmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNv
bnRhaW5lcikgY29uc3QKIHsKICAgICBMYXlvdXRTaXplIG9mZnNldDsKICAgICBMYXlvdXRQb2lu
dCByZWZlcmVuY2VQb2ludDsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnJDb250YWluZXIg
PSB0aGlzOwogICAgIGRvIHsKLSAgICAgICAgYXV0byBuZXh0Q29udGFpbmVyID0gY3VyckNvbnRh
aW5lci0+Y29udGFpbmVyKCk7CisgICAgICAgIGF1dG8qIG5leHRDb250YWluZXIgPSBjdXJyQ29u
dGFpbmVyLT5jb250YWluZXIoKTsKICAgICAgICAgQVNTRVJUKG5leHRDb250YWluZXIpOyAgLy8g
VGhpcyBtZWFucyB3ZSByZWFjaGVkIHRoZSB0b3Agd2l0aG91dCBmaW5kaW5nIGNvbnRhaW5lci4K
ICAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IEFTU0VSVCghY3VyckNvbnRhaW5lci0+aGFzVHJhbnNmb3JtKCkpOwotICAgICAgICBMYXlvdXRT
aXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyQ29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKG5l
eHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKKyAgICAgICAgTGF5b3V0U2l6ZSBjdXJyZW50
T2Zmc2V0ID0gY3VyckNvbnRhaW5lci0+b2Zmc2V0RnJvbUNvbnRhaW5lcigqbmV4dENvbnRhaW5l
ciwgcmVmZXJlbmNlUG9pbnQpOwogICAgICAgICBvZmZzZXQgKz0gY3VycmVudE9mZnNldDsKICAg
ICAgICAgcmVmZXJlbmNlUG9pbnQubW92ZShjdXJyZW50T2Zmc2V0KTsKICAgICAgICAgY3VyckNv
bnRhaW5lciA9IG5leHRDb250YWluZXI7Ci0gICAgfSB3aGlsZSAoY3VyckNvbnRhaW5lciAhPSBj
b250YWluZXIpOworICAgIH0gd2hpbGUgKGN1cnJDb250YWluZXIgIT0gJmNvbnRhaW5lcik7CiAK
ICAgICByZXR1cm4gb2Zmc2V0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCmluZGV4IDQ0MjMyZmEzNjRiZTkzNzJiYjI4NTkwNzE3MWFjYjA3NTJkOTA5NjkuLjVlNTQ0
MzQwMzc2NjMzMGZhYjBhYjJmY2RlYjEzMTZlNTU1YmYzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTY4NCw5ICs2ODQsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVk
aW5nIHRyYW5zZm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVu
dCBvZmZzZXRzIGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0
IHRoYXQgYXBwbGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCi0gICAgdmlydHVhbCBMYXlvdXRTaXpl
IG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBi
b29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0
U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Q7CiAgICAgLy8gUmV0dXJu
IHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3Nl
cnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1z
LgotICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVj
dCopIGNvbnN0OworICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJl
bmRlckVsZW1lbnQmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZv
aWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAKaW5kZXggOTJhZWU5MGEzMDEwNWUyNTMzMTAxOGRlMDcwYzkyYTVhMmEyM2Q0
Mi4uMTI4MjA4OWE4YzdlNDY1NDRiMTAwMWI1M2QxMTY4MzYzNDM3YWEzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTMxOSwxMSArMzE5LDEx
IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0
RnJvbVJvd0hlaWdodChMYXlvdXRVbml0IHJvCiAgICAgc2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVu
dEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCByb3dIZWlnaHQgLSBib3JkZXJBbmRQYWRk
aW5nTG9naWNhbEhlaWdodCgpKSk7CiB9CiAKLUxheW91dFNpemUgUmVuZGVyVGFibGVDZWxsOjpv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50LCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKK0xheW91dFNpemUgUmVuZGVy
VGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZjb250YWlu
ZXIgPT0gdGhpcy0+Y29udGFpbmVyKCkpOwogCi0gICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBSZW5k
ZXJCbG9ja0Zsb3c6Om9mZnNldEZyb21Db250YWluZXIobywgcG9pbnQsIG9mZnNldERlcGVuZHNP
blBvaW50KTsKKyAgICBMYXlvdXRTaXplIG9mZnNldCA9IFJlbmRlckJsb2NrRmxvdzo6b2Zmc2V0
RnJvbUNvbnRhaW5lcihjb250YWluZXIsIHBvaW50LCBvZmZzZXREZXBlbmRzT25Qb2ludCk7CiAg
ICAgaWYgKHBhcmVudCgpKQogICAgICAgICBvZmZzZXQgLT0gcGFyZW50Qm94KCktPmxvY2F0aW9u
T2Zmc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApp
bmRleCAyMmY4NmRjOWEwMmU4Y2Q5NjU3OTk3NWI0NmRkODU3OWVhZWI1MWM3Li41NWMyZTA2YzZk
NDRmOTY5ODFiNDdkNjYzN2M4NjVlODcwYjRiMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBj
b25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9p
bnQgPSAwKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92
ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDZmZDU2NmE4OTU5
NTJiZDE3ZWQ3MmQ1YzhlNDk3NmY5YjlhNTkxN2EuLjY3NzMxYjRmZjc2NWQ1M2YwYzBmMTk4ZjVh
YjBjMTNmMmRhZDI1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KQEAgLTY4MSw3ICs2ODEsOCBAQCBGbG9hdFJlY3QgUmVuZGVyVGhlbWVNYWM6OmNvbnZl
cnRUb1BhaW50aW5nUmVjdChjb25zdCBSZW5kZXJPYmplY3QmIGlucHV0UmVuZGVyZQogICAgIGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmcGFydFJlbmRlcmVyOwogICAgIHdoaWxlIChy
ZW5kZXJlciAmJiByZW5kZXJlciAhPSAmaW5wdXRSZW5kZXJlcikgewogICAgICAgICBSZW5kZXJF
bGVtZW50KiBjb250YWluaW5nUmVuZGVyZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7Ci0gICAg
ICAgIG9mZnNldEZyb21JbnB1dFJlbmRlcmVyIC09IHJvdW5kZWRJbnRTaXplKHJlbmRlcmVyLT5v
ZmZzZXRGcm9tQ29udGFpbmVyKGNvbnRhaW5pbmdSZW5kZXJlciwgTGF5b3V0UG9pbnQoKSkpOwor
ICAgICAgICBBU1NFUlQoY29udGFpbmluZ1JlbmRlcmVyKTsKKyAgICAgICAgb2Zmc2V0RnJvbUlu
cHV0UmVuZGVyZXIgLT0gcm91bmRlZEludFNpemUocmVuZGVyZXItPm9mZnNldEZyb21Db250YWlu
ZXIoKmNvbnRhaW5pbmdSZW5kZXJlciwgTGF5b3V0UG9pbnQoKSkpOwogICAgICAgICByZW5kZXJl
ciA9IGNvbnRhaW5pbmdSZW5kZXJlcjsKICAgICB9CiAgICAgLy8gSWYgdGhlIGlucHV0IHJlbmRl
cmVyIHdhcyBub3QgYSBjb250YWluZXIsIHNvbWV0aGluZyB3ZW50IHdyb25nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239843</attachid>
            <date>2014-10-14 20:12:33 -0700</date>
            <delta_ts>2014-10-14 21:17:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137728-20141014201240.patch</filename>
            <type>text/plain</type>
            <size>34601</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc2MDJmZjY0NWQ4MDY4
ZDg0MmNjYzhlNWVhNTNlMmJhYTY4NjI0MC4uY2NhOGU4Y2Y1NjQ0ZDZjMjU2Y2EwZTkyZmQxNTFm
NTU5MDQ4NGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBvZmZzZXRGcm9tQ29u
dGFpbmVyKCkgLyBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKSB0YWtlIGEgUmVuZGVyRWxl
bWVudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhh
dmUgb2Zmc2V0RnJvbUNvbnRhaW5lcigpIC8gb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKCkg
dGFrZSBhIFJlbmRlckVsZW1lbnQmCisgICAgICAgIGluc3RlYWQgb2YgYSBSZW5kZXJPYmplY3Qq
LiBUaGUgYXJndW1lbnQgcGFzc2VkIGlzIG5ldmVyIG51bGwgYW5kIHRoZSB0eXBlCisgICAgICAg
IHNob3VsZCBiZSBhIFJlbmRlckVsZW1lbnQgYXMgdGhlIGFyZ3VtZW50IGlzIGEgY29udGFpbmVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbENhcmV0
UmVjdEluUmVuZGVyZXJGb3JDYXJldFBhaW50aW5nKToKKyAgICAgICAgKiBwYWdlL0dlc3R1cmVU
YXBIaWdobGlnaHRlci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1
dGVUb0xvY2FsUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21D
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5j
ZXN0b3JDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjb252ZXJ0VG9QYWludGlu
Z1JlY3QpOgorCiAyMDE0LTEwLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIxNTkyMDgpOiBDcmFzaCB3aGVuIGNsaWNraW5nIHNjcnVi
YmVyIGFmdGVyIG5hdmlnYXRpbmcgYXdheS9iYWNrIHRvIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDQ3YzY1MjhkODI5ZjY0M2Y0OGUwNWRhNWJlOWZiNjJk
ZjkxYjg0NjIuLmZkNWFhODE5ZDkxYzA3YWFmZTVkNTQ1MTAxYjRjNmMyY2NkNjRiMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC0xMjk0LDEwICsxMjk0LDEwIEBA
IExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RJblJlbmRlcmVyRm9yQ2FyZXRQYWludGluZyhjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0CiAKICAgICAvLyBDb21wdXRlIGFuIG9mZnNldCBiZXR3
ZWVuIHRoZSByZW5kZXJlciBhbmQgdGhlIGNhcmV0UGFpbnRlci4KICAgICB3aGlsZSAocmVuZGVy
ZXIgIT0gY2FyZXRQYWludGVyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyT2Jq
ZWN0ID0gcmVuZGVyZXItPmNvbnRhaW5lcigpOworICAgICAgICBSZW5kZXJFbGVtZW50KiBjb250
YWluZXJPYmplY3QgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7CiAgICAgICAgIGlmICghY29udGFp
bmVyT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICAgICAgbG9j
YWxSZWN0Lm1vdmUocmVuZGVyZXItPm9mZnNldEZyb21Db250YWluZXIoY29udGFpbmVyT2JqZWN0
LCBsb2NhbFJlY3QubG9jYXRpb24oKSkpOworICAgICAgICBsb2NhbFJlY3QubW92ZShyZW5kZXJl
ci0+b2Zmc2V0RnJvbUNvbnRhaW5lcigqY29udGFpbmVyT2JqZWN0LCBsb2NhbFJlY3QubG9jYXRp
b24oKSkpOwogICAgICAgICByZW5kZXJlciA9IGNvbnRhaW5lck9iamVjdDsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAppbmRleCBmOGY0
N2UzNDQzZTM0MzFhZDFkMjZiMTVhZDhkYTQ2ZDg0OTIzNDg5Li41NmNiYmQ5NDUwYjQ3NmUxY2Vk
MmNmZTUwNjE0ZGQ0MGFiMDE5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dl
c3R1cmVUYXBIaWdobGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJl
VGFwSGlnaGxpZ2h0ZXIuY3BwCkBAIC02NCwxMSArNjQsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIGxv
Y2FsVG9BYnNvbHV0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJPYmplY3QqIG8pCiAgICAgTGF5b3V0
UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CiAKICAgICB3aGlsZSAobykgewotICAgICAgICBSZW5kZXJP
YmplY3QqIG5leHRDb250YWluZXIgPSBvLT5jb250YWluZXIoKTsKKyAgICAgICAgUmVuZGVyRWxl
bWVudCogbmV4dENvbnRhaW5lciA9IG8tPmNvbnRhaW5lcigpOwogICAgICAgICBpZiAoIW5leHRD
b250YWluZXIpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBMYXlvdXRTaXplIGNvbnRh
aW5lck9mZnNldCA9IG8tPm9mZnNldEZyb21Db250YWluZXIobmV4dENvbnRhaW5lciwgcmVmZXJl
bmNlUG9pbnQpOworICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG8tPm9mZnNl
dEZyb21Db250YWluZXIoKm5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKICAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAgICAgICAgby0+Z2V0VHJhbnNmb3JtRnJvbUNvbnRh
aW5lcihuZXh0Q29udGFpbmVyLCBjb250YWluZXJPZmZzZXQsIHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDU3NzVkNGNlYWE0N2I0MDEyY2MwZmQ3MDk4ODQ1
OGQyZTVmZGNkOTYuLmM4ZWQ0Y2JmMWQ1MWQwZmJlYjI2MTVkMTc3ZmY1N2FlOWQzNmZkZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xOTEyLDggKzE5MTIsOCBA
QCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbgogICAgIH0KIAogICAgIGJvb2wgY29udGFpbmVyU2tp
cHBlZDsKLSAgICBhdXRvIG8gPSBjb250YWluZXIocmVwYWludENvbnRhaW5lciwgJmNvbnRhaW5l
clNraXBwZWQpOwotICAgIGlmICghbykKKyAgICBhdXRvKiBjb250YWluZXIgPSB0aGlzLT5jb250
YWluZXIocmVwYWludENvbnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOworICAgIGlmICghY29u
dGFpbmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGlzRml4ZWRQb3MgPSBzdHlsZSgp
LnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsKQEAgLTE5MjgsMTIgKzE5MjgsMTIgQEAgdm9p
ZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW4KICAgICBpZiAod2FzRml4ZWQpCiAgICAgICAgICp3YXNGaXhl
ZCA9IG1vZGUgJiBJc0ZpeGVkOwogICAgIAotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0
ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBw
ZWRQb2ludCgpKSk7CisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9t
Q29udGFpbmVyKCpjb250YWluZXIsIExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBv
aW50KCkpKTsKICAgICAKLSAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNmb3Jt
cyAmJiAoby0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7
Ci0gICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21D
b250YWluZXIobykpIHsKKyAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNmb3Jt
cyAmJiAoY29udGFpbmVyLT5zdHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2
ZXMzRCgpKTsKKyAgICBpZiAobW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNm
b3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHQ7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVyT2Zm
c2V0LCB0KTsKKyAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIsIGNv
bnRhaW5lck9mZnNldCwgdCk7CiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3Jt
KHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRy
YW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICB9IGVsc2UKICAgICAgICAgdHJh
bnNmb3JtU3RhdGUubW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0
LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zv
cm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CkBAIC0xOTQxLDcgKzE5NDEs
NyBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbgogICAgIGlmIChjb250YWluZXJTa2lwcGVkKSB7
CiAgICAgICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgdHJhbnNmb3JtIGJldHdlZW4gcmVwYWludENv
bnRhaW5lciBhbmQgbywgYmVjYXVzZSB0cmFuc2Zvcm1zIGNyZWF0ZSBjb250YWluZXJzLCBzbyBp
dCBzaG91bGQgYmUgc2FmZQogICAgICAgICAvLyB0byBqdXN0IHN1YnRyYWN0IHRoZSBkZWx0YSBi
ZXR3ZWVuIHRoZSByZXBhaW50Q29udGFpbmVyIGFuZCBvLgotICAgICAgICBMYXlvdXRTaXplIGNv
bnRhaW5lck9mZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRh
aW5lcihvKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29u
dGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CiAgICAgICAg
IHRyYW5zZm9ybVN0YXRlLm1vdmUoLWNvbnRhaW5lck9mZnNldC53aWR0aCgpLCAtY29udGFpbmVy
T2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVU
cmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xOTUwLDEwICsxOTUwLDEwIEBAIHZvaWQgUmVuZGVyQm94OjptYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluCiAKICAgICAvLyBGb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBpbnNpZGUgb3V0LW9m
LWZsb3cgbmFtZWQgZmxvd3MsIHdlIGRvIG5vdCB3YW50IHRvCiAgICAgLy8gbWFwIHRoZWlyIHBv
c2l0aW9uIGZ1cnRoZXIgdG8gcmVnaW9ucyBiYXNlZCBvbiB0aGVpciBjb29yZGluYXRlcyBpbnNp
ZGUgdGhlIG5hbWVkIGZsb3dzLgotICAgIGlmICghby0+aXNPdXRPZkZsb3dSZW5kZXJGbG93VGhy
ZWFkKCkgfHwgIWZpeGVkUG9zaXRpb25lZFdpdGhOYW1lZEZsb3dDb250YWluaW5nQmxvY2soKSkK
LSAgICAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zv
cm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOworICAgIGlmICghY29udGFpbmVyLT5pc091dE9mRmxv
d1JlbmRlckZsb3dUaHJlYWQoKSB8fCAhZml4ZWRQb3NpdGlvbmVkV2l0aE5hbWVkRmxvd0NvbnRh
aW5pbmdCbG9jaygpKQorICAgICAgICBjb250YWluZXItPm1hcExvY2FsVG9Db250YWluZXIocmVw
YWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKICAgICBlbHNl
Ci0gICAgICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIodG9SZW5kZXJMYXllck1vZGVsT2JqZWN0
KG8pLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOworICAgICAgICBjb250YWluZXIt
Pm1hcExvY2FsVG9Db250YWluZXIodG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KGNvbnRhaW5lciks
IHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKIGNvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1h
cCkgY29uc3QKQEAgLTE5NjEsOSArMTk2MSw5IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
Qm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplCiAg
ICAgQVNTRVJUKGFuY2VzdG9yVG9TdG9wQXQgIT0gdGhpcyk7CiAKICAgICBib29sIGFuY2VzdG9y
U2tpcHBlZDsKLSAgICBhdXRvIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcihhbmNlc3RvclRv
U3RvcEF0LCAmYW5jZXN0b3JTa2lwcGVkKTsKKyAgICBhdXRvKiBjb250YWluZXIgPSB0aGlzLT5j
b250YWluZXIoYW5jZXN0b3JUb1N0b3BBdCwgJmFuY2VzdG9yU2tpcHBlZCk7CiAgICAgaWYgKCFj
b250YWluZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGJvb2wgaXNGaXhlZFBvcyA9IHN0eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9u
OwogICAgIGJvb2wgaGFzVHJhbnNmb3JtID0gaGFzTGF5ZXIoKSAmJiBsYXllcigpLT50cmFuc2Zv
cm0oKTsKQEAgLTE5NzIsMTEgKzE5NzIsMTEgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJC
b3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAg
ICBpZiAoYW5jZXN0b3JTa2lwcGVkKSB7CiAgICAgICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgdHJh
bnNmb3JtIGJldHdlZW4gcmVwYWludENvbnRhaW5lciBhbmQgbywgYmVjYXVzZSB0cmFuc2Zvcm1z
IGNyZWF0ZSBjb250YWluZXJzLCBzbyBpdCBzaG91bGQgYmUgc2FmZQogICAgICAgICAvLyB0byBq
dXN0IHN1YnRyYWN0IHRoZSBkZWx0YSBiZXR3ZWVuIHRoZSBhbmNlc3RvciBhbmQgby4KLSAgICAg
ICAgYWRqdXN0bWVudEZvclNraXBwZWRBbmNlc3RvciA9IC1hbmNlc3RvclRvU3RvcEF0LT5vZmZz
ZXRGcm9tQW5jZXN0b3JDb250YWluZXIoY29udGFpbmVyKTsKKyAgICAgICAgYWRqdXN0bWVudEZv
clNraXBwZWRBbmNlc3RvciA9IC1hbmNlc3RvclRvU3RvcEF0LT5vZmZzZXRGcm9tQW5jZXN0b3JD
b250YWluZXIoKmNvbnRhaW5lcik7CiAgICAgfQogCiAgICAgYm9vbCBvZmZzZXREZXBlbmRzT25Q
b2ludCA9IGZhbHNlOwotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJv
bUNvbnRhaW5lcihjb250YWluZXIsIExheW91dFBvaW50KCksICZvZmZzZXREZXBlbmRzT25Qb2lu
dCk7CisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVy
KCpjb250YWluZXIsIExheW91dFBvaW50KCksICZvZmZzZXREZXBlbmRzT25Qb2ludCk7CiAKICAg
ICBib29sIHByZXNlcnZlM0QgPSBjb250YWluZXItPnN0eWxlKCkucHJlc2VydmVzM0QoKSB8fCBz
dHlsZSgpLnByZXNlcnZlczNEKCk7CiAgICAgaWYgKHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250
YWluZXIoY29udGFpbmVyKSkgewpAQCAtMjAwNywxMCArMjAwNywxMCBAQCB2b2lkIFJlbmRlckJv
eDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFu
c2Zvcm1TdGF0ZQogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQ
b2ludChtb2RlLCB0cmFuc2Zvcm1TdGF0ZSk7CiB9CiAKLUxheW91dFNpemUgUmVuZGVyQm94Ojpv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IExheW91dFBv
aW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRl
ckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKIHsKICAgICAv
LyBBIHJlZ2lvbiAiaGFzIiBib3hlcyBpbnNpZGUgaXQgd2l0aG91dCBiZWluZyB0aGVpciBjb250
YWluZXIuIAotICAgIEFTU0VSVChyZW5kZXJlciA9PSBjb250YWluZXIoKSB8fCBpczxSZW5kZXJS
ZWdpb24+KCpyZW5kZXJlcikpOworICAgIEFTU0VSVCgmcmVuZGVyZXIgPT0gY29udGFpbmVyKCkg
fHwgaXM8UmVuZGVyUmVnaW9uPihyZW5kZXJlcikpOwogCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7
ICAgIAogICAgIGlmIChpc0luRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTIwMTksMTQgKzIwMTksMTQg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBs
YWNlZCgpKQogICAgICAgICBvZmZzZXQgKz0gdG9wTGVmdExvY2F0aW9uT2Zmc2V0KCk7CiAKLSAg
ICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKQotICAgICAgICBvZmZzZXQgLT0gZG93bmNh
c3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpLnNjcm9sbGVkQ29udGVudE9mZnNldCgpOworICAgIGlm
IChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkKKyAgICAgICAgb2Zmc2V0IC09IGRvd25jYXN0PFJl
bmRlckJveD4ocmVuZGVyZXIpLnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwogCi0gICAgaWYgKHN0
eWxlKCkucG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uICYmIHJlbmRlcmVyLT5pc0luRmxv
d1Bvc2l0aW9uZWQoKSAmJiBpczxSZW5kZXJJbmxpbmU+KCpyZW5kZXJlcikpCi0gICAgICAgIG9m
ZnNldCArPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpyZW5kZXJlcikub2Zmc2V0Rm9ySW5GbG93
UG9zaXRpb25lZElubGluZSh0aGlzKTsKKyAgICBpZiAoc3R5bGUoKS5wb3NpdGlvbigpID09IEFi
c29sdXRlUG9zaXRpb24gJiYgcmVuZGVyZXIuaXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgaXM8UmVu
ZGVySW5saW5lPihyZW5kZXJlcikpCisgICAgICAgIG9mZnNldCArPSBkb3duY2FzdDxSZW5kZXJJ
bmxpbmU+KHJlbmRlcmVyKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKHRoaXMpOwog
CiAgICAgaWYgKG9mZnNldERlcGVuZHNPblBvaW50KQotICAgICAgICAqb2Zmc2V0RGVwZW5kc09u
UG9pbnQgfD0gaXM8UmVuZGVyRmxvd1RocmVhZD4oKnJlbmRlcmVyKTsKKyAgICAgICAgKm9mZnNl
dERlcGVuZHNPblBvaW50IHw9IGlzPFJlbmRlckZsb3dUaHJlYWQ+KHJlbmRlcmVyKTsKIAogICAg
IHJldHVybiBvZmZzZXQ7CiB9CkBAIC0yMjI1LDcgKzIyMjUsNyBAQCB2b2lkIFJlbmRlckJveDo6
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YQogCiAgICAgaWYgKGNvbnRhaW5lclNraXBwZWQpIHsKICAgICAgICAgLy8gSWYgdGhl
IHJlcGFpbnRDb250YWluZXIgaXMgYmVsb3cgbywgdGhlbiB3ZSBuZWVkIHRvIG1hcCB0aGUgcmVj
dCBpbnRvIHJlcGFpbnRDb250YWluZXIncyBjb29yZGluYXRlcy4KLSAgICAgICAgTGF5b3V0U2l6
ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JD
b250YWluZXIocmVuZGVyZXIpOworICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9
IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcigqcmVuZGVyZXIp
OwogICAgICAgICByZWN0Lm1vdmUoLWNvbnRhaW5lck9mZnNldCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggOWM3NTQ2MmVmNjdm
YThkYzVlMzExZTczMGUxYzIyNDYyY2Y2ZTNiNy4uNjUyN2EwYzRlNTJjYjJiNTY4Y2E3MjU1MTlj
NDdmYzA2N2IwYzE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMzM1
LDcgKzMzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT3ZlcnJpZGVDb250YWluaW5nQmxv
Y2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIExheW91dFNp
emUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYs
IGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0
IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdCBvdmVy
cmlkZTsKICAgICAKICAgICBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZv
ckJveFNpemluZyhMYXlvdXRVbml0IHdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGFkanVz
dEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnaHQpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKaW5kZXggNTA5ZTk4NmUzNjExYjgwZmE1M2MyNzA5YTMzZGI1MTJiMjA3ZTA3MC4uN2Rk
YThmYmYyMmE3M2U4ZjhhMmJlNzdlNjMzNzE4ODU1ZWI0YmNlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNjM3LDggKzI2
MzcsOCBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5lcyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1h
cEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgVHJhbnNmb3Jt
U3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAogewotICAgIGF1dG8gbyA9IGNvbnRhaW5lcigp
OwotICAgIGlmICghbykKKyAgICBhdXRvKiBjb250YWluZXIgPSB0aGlzLT5jb250YWluZXIoKTsK
KyAgICBpZiAoIWNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIEZJWE1F
OiBUaGlzIGNvZGUgaXMgd3JvbmcgZm9yIG5hbWVkIGZsb3cgdGhyZWFkcyBzaW5jZSBpdCBvbmx5
IHdvcmtzIGZvciBjb250ZW50IGluIHRoZSBmaXJzdCByZWdpb24uCkBAIC0yNjQ2LDIxICsyNjQ2
LDIxIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50
KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgVHJhCiAgICAgLy8gZ2VvbWV0cnkgdG8gYWN0dWFs
bHkgZ2V0IGEgYmV0dGVyIHJlc3VsdC4KICAgICAvLyBUaGUgcG9pbnQgaW5zaWRlIGEgYm94IHRo
YXQncyBpbnNpZGUgYSByZWdpb24gaGFzIGl0cyBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUg
cmVnaW9uLAogICAgIC8vIG5vdCB0aGUgRmxvd1RocmVhZCB0aGF0IGlzIGl0cyBjb250YWluZXIg
aW4gdGhlIFJlbmRlck9iamVjdCB0cmVlLgotICAgIGlmIChpc0JveCgpICYmIG8tPmlzT3V0T2ZG
bG93UmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgaWYgKGlzPFJlbmRlckJveD4oKnRoaXMpICYm
IGNvbnRhaW5lci0+aXNPdXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkpIHsKICAgICAgICAgUmVu
ZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgICAgIFJlbmRlclJlZ2lvbiog
ZW5kUmVnaW9uID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKHRvUmVuZGVyRmxvd1RocmVhZChvKS0+
Z2V0UmVnaW9uUmFuZ2VGb3JCb3godG9SZW5kZXJCb3godGhpcyksIHN0YXJ0UmVnaW9uLCBlbmRS
ZWdpb24pKQotICAgICAgICAgICAgbyA9IHN0YXJ0UmVnaW9uOworICAgICAgICBpZiAoZG93bmNh
c3Q8UmVuZGVyRmxvd1RocmVhZD4oKmNvbnRhaW5lcikuZ2V0UmVnaW9uUmFuZ2VGb3JCb3goZG93
bmNhc3Q8UmVuZGVyQm94Pih0aGlzKSwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAg
ICAgICBjb250YWluZXIgPSBzdGFydFJlZ2lvbjsKICAgICB9CiAKLSAgICBvLT5tYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChtb2RlLCB0cmFuc2Zvcm1TdGF0ZSk7CisgICAgY29udGFpbmVyLT5tYXBB
YnNvbHV0ZVRvTG9jYWxQb2ludChtb2RlLCB0cmFuc2Zvcm1TdGF0ZSk7CiAKLSAgICBMYXlvdXRT
aXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQo
KSk7CisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVy
KCpjb250YWluZXIsIExheW91dFBvaW50KCkpOwogCi0gICAgYm9vbCBwcmVzZXJ2ZTNEID0gbW9k
ZSAmIFVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCkucHJlc2VydmVzM0QoKSB8fCBzdHlsZSgp
LnByZXNlcnZlczNEKCkpOwotICAgIGlmIChtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRV
c2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CisgICAgYm9vbCBwcmVzZXJ2ZTNEID0gbW9k
ZSAmIFVzZVRyYW5zZm9ybXMgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8
IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7CisgICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYm
IHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgewogICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KG8sIGNvbnRhaW5lck9mZnNldCwgdCk7CisgICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWlu
ZXIoY29udGFpbmVyLCBjb250YWluZXJPZmZzZXQsIHQpOwogICAgICAgICB0cmFuc2Zvcm1TdGF0
ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxh
dGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoY29udGFpbmVyT2Zmc2V0LndpZHRoKCks
IGNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA0NjViYTkwNTdh
YTYwZjE0ODgwNjMyNzc2MTNkN2QwMTg0ZGRiMjQ0Li42ZTQ0MGU3NDA2NjJlOTY3ODk5NjczNzhh
ZTAxZDU1ZTQzY2E1MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcApAQCAtMTE2Nyw4ICsxMTY3LDggQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q28KICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYm9vbCBjb250YWluZXJTa2lwcGVkOwotICAgIFJlbmRlckVsZW1l
bnQqIG8gPSBjb250YWluZXIocmVwYWludENvbnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOwot
ICAgIGlmICghbykKKyAgICBSZW5kZXJFbGVtZW50KiBjb250YWluZXIgPSB0aGlzLT5jb250YWlu
ZXIocmVwYWludENvbnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOworICAgIGlmICghY29udGFp
bmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRQb2ludCB0b3BMZWZ0ID0gcmVjdC5s
b2NhdGlvbigpOwpAQCAtMTE4NCwzNiArMTE4NCwzNSBAQCB2b2lkIFJlbmRlcklubGluZTo6Y29t
cHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
bwogICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgdGhlIGxpZ2h0d2VpZ2h0IGNsaXBwaW5nIHJlY3Qg
dGhhdCBjb250cm9scyB1c2UsIHNpbmNlIGlmIHxvfCBpcyBpbiBtaWQtbGF5b3V0LAogICAgIC8v
IGl0cyBjb250cm9sQ2xpcFJlY3Qgd2lsbCBiZSB3cm9uZy4gRm9yIG92ZXJmbG93IGNsaXAgd2Ug
dXNlIHRoZSB2YWx1ZXMgY2FjaGVkIGJ5IHRoZSBsYXllci4KICAgICByZWN0LnNldExvY2F0aW9u
KHRvcExlZnQpOwotICAgIGlmIChvLT5oYXNPdmVyZmxvd0NsaXAoKSkgewotICAgICAgICBSZW5k
ZXJCb3gqIGNvbnRhaW5lckJveCA9IHRvUmVuZGVyQm94KG8pOwotICAgICAgICBjb250YWluZXJC
b3gtPmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQocmVjdCk7CisgICAg
aWYgKGNvbnRhaW5lci0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKKyAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyQm94PigqY29udGFpbmVyKS5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxPZmZzZXRGb3JSZXBh
aW50KHJlY3QpOwogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKGNvbnRhaW5lclNraXBwZWQpIHsKICAgICAgICAgLy8gSWYg
dGhlIHJlcGFpbnRDb250YWluZXIgaXMgYmVsb3cgbywgdGhlbiB3ZSBuZWVkIHRvIG1hcCB0aGUg
cmVjdCBpbnRvIHJlcGFpbnRDb250YWluZXIncyBjb29yZGluYXRlcy4KLSAgICAgICAgTGF5b3V0
U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0
b3JDb250YWluZXIobyk7CisgICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVw
YWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKCpjb250YWluZXIpOwog
ICAgICAgICByZWN0Lm1vdmUoLWNvbnRhaW5lck9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgby0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIs
IHJlY3QsIGZpeGVkKTsKKyAgICBjb250YWluZXItPmNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBh
aW50Q29udGFpbmVyLCByZWN0LCBmaXhlZCk7CiB9CiAKLUxheW91dFNpemUgUmVuZGVySW5saW5l
OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBS
ZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAog
ewotICAgIEFTU0VSVChjb250YWluZXIgPT0gdGhpcy0+Y29udGFpbmVyKCkpOworICAgIEFTU0VS
VCgmY29udGFpbmVyID09IHRoaXMtPmNvbnRhaW5lcigpKTsKICAgICAKICAgICBMYXlvdXRTaXpl
IG9mZnNldDsgICAgCiAgICAgaWYgKGlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICBvZmZz
ZXQgKz0gb2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKIAotICAgIGlmIChjb250YWluZXItPmlz
Qm94KCkpCi0gICAgICAgIG9mZnNldCAtPSB0b1JlbmRlckJveChjb250YWluZXIpLT5zY3JvbGxl
ZENvbnRlbnRPZmZzZXQoKTsKKyAgICBpZiAoaXM8UmVuZGVyQm94Pihjb250YWluZXIpKQorICAg
ICAgICBvZmZzZXQgLT0gZG93bmNhc3Q8UmVuZGVyQm94Pihjb250YWluZXIpLnNjcm9sbGVkQ29u
dGVudE9mZnNldCgpOwogCiAgICAgaWYgKG9mZnNldERlcGVuZHNPblBvaW50KQotICAgICAgICAq
b2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAoY29udGFpbmVyLT5pc0JveCgpICYmIGNvbnRhaW5lci0+
c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSB8fCBjb250YWluZXItPmlzUmVu
ZGVyRmxvd1RocmVhZCgpOworICAgICAgICAqb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAoaXM8UmVu
ZGVyQm94Pihjb250YWluZXIpICYmIGNvbnRhaW5lci5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkpIHx8IGlzPFJlbmRlckZsb3dUaHJlYWQ+KGNvbnRhaW5lcik7CiAKICAgICBy
ZXR1cm4gb2Zmc2V0OwogfQpAQCAtMTIzMywyNCArMTIzMiwyNCBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udAogICAgIH0KIAogICAgIGJvb2wgY29udGFpbmVyU2tpcHBlZDsKLSAgICBSZW5kZXJF
bGVtZW50KiBvID0gY29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsICZjb250YWluZXJTa2lwcGVk
KTsKLSAgICBpZiAoIW8pCisgICAgUmVuZGVyRWxlbWVudCogY29udGFpbmVyID0gdGhpcy0+Y29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsICZjb250YWluZXJTa2lwcGVkKTsKKyAgICBpZiAoIWNv
bnRhaW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1vZGUgJiBBcHBseUNvbnRhaW5l
ckZsaXAgJiYgby0+aXNCb3goKSkgewotICAgICAgICBpZiAoby0+c3R5bGUoKS5pc0ZsaXBwZWRC
bG9ja3NXcml0aW5nTW9kZSgpKSB7CisgICAgaWYgKG1vZGUgJiBBcHBseUNvbnRhaW5lckZsaXAg
JiYgaXM8UmVuZGVyQm94PigqY29udGFpbmVyKSkgeworICAgICAgICBpZiAoY29udGFpbmVyLT5z
dHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgICAgIExheW91
dFBvaW50IGNlbnRlclBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpOwotICAgICAg
ICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSh0b1JlbmRlckJveChvKS0+ZmxpcEZvcldyaXRpbmdN
b2RlKGNlbnRlclBvaW50KSAtIGNlbnRlclBvaW50KTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVN0
YXRlLm1vdmUoZG93bmNhc3Q8UmVuZGVyQm94PigqY29udGFpbmVyKS5mbGlwRm9yV3JpdGluZ01v
ZGUoY2VudGVyUG9pbnQpIC0gY2VudGVyUG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIG1vZGUg
Jj0gfkFwcGx5Q29udGFpbmVyRmxpcDsKICAgICB9CiAKLSAgICBMYXlvdXRTaXplIGNvbnRhaW5l
ck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQodHJhbnNmb3JtU3Rh
dGUubWFwcGVkUG9pbnQoKSkpOworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zm
c2V0RnJvbUNvbnRhaW5lcigqY29udGFpbmVyLCBMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5t
YXBwZWRQb2ludCgpKSk7CiAKLSAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNm
b3JtcyAmJiAoby0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0Qo
KSk7Ci0gICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZy
b21Db250YWluZXIobykpIHsKKyAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNm
b3JtcyAmJiAoY29udGFpbmVyLT5zdHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVz
ZXJ2ZXMzRCgpKTsKKyAgICBpZiAobW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHQ7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVy
T2Zmc2V0LCB0KTsKKyAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIs
IGNvbnRhaW5lck9mZnNldCwgdCk7CiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNm
b3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6
IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICB9IGVsc2UKICAgICAgICAg
dHJhbnNmb3JtU3RhdGUubW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zm
c2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFu
c2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CkBAIC0xMjU4LDEyICsx
MjU3LDEyIEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAgICAgaWYgKGNvbnRhaW5lclNraXBw
ZWQpIHsKICAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2VlbiByZXBh
aW50Q29udGFpbmVyIGFuZCBvLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRhaW5lcnMs
IHNvIGl0IHNob3VsZCBiZSBzYWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3QgdGhlIGRl
bHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIG8uCi0gICAgICAgIExheW91dFNp
emUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9y
Q29udGFpbmVyKG8pOworICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlcGFp
bnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29udGFpbmVyKTsKICAg
ICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIC1jb250
YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11
bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENv
bnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKKyAgICBjb250YWluZXIt
Pm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1v
ZGUsIHdhc0ZpeGVkKTsKIH0KIAogY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJJbmxpbmU6OnB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdApAQCAtMTI3
MywxNyArMTI3MiwxNyBAQCBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsTwogICAgIGJvb2wgYW5jZXN0
b3JTa2lwcGVkOwogICAgIFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5l
cihhbmNlc3RvclRvU3RvcEF0LCAmYW5jZXN0b3JTa2lwcGVkKTsKICAgICBpZiAoIWNvbnRhaW5l
cikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgTGF5
b3V0U2l6ZSBhZGp1c3RtZW50Rm9yU2tpcHBlZEFuY2VzdG9yOwogICAgIGlmIChhbmNlc3RvclNr
aXBwZWQpIHsKICAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2VlbiBy
ZXBhaW50Q29udGFpbmVyIGFuZCBvLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRhaW5l
cnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3QgdGhl
IGRlbHRhIGJldHdlZW4gdGhlIGFuY2VzdG9yIGFuZCBvLgotICAgICAgICBhZGp1c3RtZW50Rm9y
U2tpcHBlZEFuY2VzdG9yID0gLWFuY2VzdG9yVG9TdG9wQXQtPm9mZnNldEZyb21BbmNlc3RvckNv
bnRhaW5lcihjb250YWluZXIpOworICAgICAgICBhZGp1c3RtZW50Rm9yU2tpcHBlZEFuY2VzdG9y
ID0gLWFuY2VzdG9yVG9TdG9wQXQtPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29udGFp
bmVyKTsKICAgICB9CiAKICAgICBib29sIG9mZnNldERlcGVuZHNPblBvaW50ID0gZmFsc2U7Ci0g
ICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKGNvbnRh
aW5lciwgTGF5b3V0UG9pbnQoKSwgJm9mZnNldERlcGVuZHNPblBvaW50KTsKKyAgICBMYXlvdXRT
aXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwgTGF5
b3V0UG9pbnQoKSwgJm9mZnNldERlcGVuZHNPblBvaW50KTsKIAogICAgIGJvb2wgcHJlc2VydmUz
RCA9IGNvbnRhaW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVz
M0QoKTsKICAgICBpZiAoc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggMTM0NmRlMDZi
YTdmNTIzYTIwOTBlMTUwZjdjMmQxYTdmZGQ3NzFhMi4uYTRmZWJkMDE2YzNkMzlkZmQyMTAxNDQz
Njc3YjkxZTVhZGRlYTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNv
bnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRz
T25Qb2ludCA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBJ
bnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZs
b3dUaHJlYWQuY3BwCmluZGV4IDg1MzVmNjZlYWRjNGEyZjQ1NTc1YWZhYzhlYjc0MWY5MmU5Mjhk
NGIuLjU3ZjQxYjU5YzM0MTA5M2JiZGNjZDYxZjU5NjFkYThhYmIyZWMxNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQuY3BwCkBAIC02MDgsMjEgKzYwOCwyMCBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZDo6Y29tcHV0ZUxpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbihMYXlvdXRTdGF0ZSYgbAogICAg
IH0KIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6Om9mZnNldEZy
b21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBlbmNsb3NpbmdDb250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBwaHlzaWNhbFBvaW50LCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QK
K0xheW91dFNpemUgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlckVsZW1lbnQmIGVuY2xvc2luZ0NvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IHBoeXNpY2FsUG9pbnQsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAogewotICAg
IEFTU0VSVChlbmNsb3NpbmdDb250YWluZXIgPT0gY29udGFpbmVyKCkpOworICAgIEFTU0VSVCgm
ZW5jbG9zaW5nQ29udGFpbmVyID09IGNvbnRhaW5lcigpKTsKIAogICAgIGlmIChvZmZzZXREZXBl
bmRzT25Qb2ludCkKICAgICAgICAgKm9mZnNldERlcGVuZHNPblBvaW50ID0gdHJ1ZTsKICAgICAK
ICAgICBMYXlvdXRQb2ludCB0cmFuc2xhdGVkUGh5c2ljYWxQb2ludChwaHlzaWNhbFBvaW50KTsK
LSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHBoeXNpY2FsVHJhbnNsYXRpb25Gcm9tRmxvd1Rv
UmVnaW9uKHRyYW5zbGF0ZWRQaHlzaWNhbFBvaW50KTsKLSAgICBpZiAocmVnaW9uKQorICAgIGlm
IChSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHBoeXNpY2FsVHJhbnNsYXRpb25Gcm9tRmxvd1RvUmVn
aW9uKHRyYW5zbGF0ZWRQaHlzaWNhbFBvaW50KSkKICAgICAgICAgdHJhbnNsYXRlZFBoeXNpY2Fs
UG9pbnQubW92ZUJ5KHJlZ2lvbi0+dG9wTGVmdExvY2F0aW9uKCkpOwogICAgIAogICAgIExheW91
dFNpemUgb2Zmc2V0KHRyYW5zbGF0ZWRQaHlzaWNhbFBvaW50LngoKSwgdHJhbnNsYXRlZFBoeXNp
Y2FsUG9pbnQueSgpKTsKLSAgICBpZiAoZW5jbG9zaW5nQ29udGFpbmVyLT5pc0JveCgpKQotICAg
ICAgICBvZmZzZXQgLT0gdG9SZW5kZXJCb3goZW5jbG9zaW5nQ29udGFpbmVyKS0+c2Nyb2xsZWRD
b250ZW50T2Zmc2V0KCk7CisgICAgaWYgKGlzPFJlbmRlckJveD4oZW5jbG9zaW5nQ29udGFpbmVy
KSkKKyAgICAgICAgb2Zmc2V0IC09IGRvd25jYXN0PFJlbmRlckJveD4oZW5jbG9zaW5nQ29udGFp
bmVyKS5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogICAg
IApAQCAtNjM4LDcgKzYzNyw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpt
YXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vCiAgICAgTGF5b3V0
U2l6ZSBjYW5kaWRhdGVDb250YWluZXJPZmZzZXQ7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRv
JiBjb2x1bW5TZXQgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJNdWx0aUNvbHVtblNldD4oKnBhcmVu
dCgpKSkgewotICAgICAgICBjYW5kaWRhdGVDb250YWluZXJPZmZzZXQgPSBjb2x1bW5TZXQub2Zm
c2V0RnJvbUNvbnRhaW5lcihwYXJlbnQoKSwgTGF5b3V0UG9pbnQoKSk7CisgICAgICAgIGNhbmRp
ZGF0ZUNvbnRhaW5lck9mZnNldCA9IGNvbHVtblNldC5vZmZzZXRGcm9tQ29udGFpbmVyKCpwYXJl
bnQoKSwgTGF5b3V0UG9pbnQoKSk7CiAgICAgICAgIAogICAgICAgICBjYW5kaWRhdGVQb2ludCA9
IHRyYW5zZm9ybVBvaW50IC0gY2FuZGlkYXRlQ29udGFpbmVyT2Zmc2V0OwogICAgICAgICBjYW5k
aWRhdGVDb2x1bW5TZXQgPSAmY29sdW1uU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCmluZGV4IDQ2OWNkNWQ2ZWQ1
ZDVmNDk2YWI4ZGNlYWI2NzE5YTQ2OWM5NjdjZDQuLjUxM2QzMWQ5MjdmMDcxZWM4YWM1ZGE5OGQ1
NTc1ZTAwNzJhZTY1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVy
cmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFw
Q29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIo
UmVuZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09u
UG9pbnQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICAvLyBGSVhNRTogRXZl
bnR1YWxseSBhcyBjb2x1bW4gYW5kIHJlZ2lvbiBmbG93IHRocmVhZHMgc3RhcnQgbmVzdGluZywg
dGhpcyB3aWxsIGVuZCB1cCBjaGFuZ2luZy4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hlY2tD
b2x1bW5CcmVha3MoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IDc2OTk1MWVkMWZlMGIy
OGJlOTUyNWEzNjg5YjRkMjgxMTk3ZWYzZWEuLmQyZmY4ODU2MTU4NGUxOTYwOTJlYzYyODZhZDJl
NGQyYTY1ZTczNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmNwcApAQCAtMjQ5LDExICsyNDksMTAgQEAgYm9vbCBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6c2hvdWxkQ2xpcEZsb3dUaHJlYWRDb250ZW50KCkgY29uc3QKICAg
ICByZXR1cm4gaXNMYXN0UmVnaW9uKCkgJiYgKHN0eWxlKCkucmVnaW9uRnJhZ21lbnQoKSA9PSBC
cmVha1JlZ2lvbkZyYWdtZW50KTsKIH0KICAgICAKLUxheW91dFNpemUgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlv
dXRQb2ludCYsIGJvb2wqKSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiwgYm9vbCopIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCZmcmFnbWVudENvbnRhaW5l
cigpID09IG8pOwotICAgIEFTU0VSVChjb250YWluZXIoKSA9PSBvKTsKLSAgICBVTlVTRURfUEFS
QU0obyk7CisgICAgQVNTRVJUX1VOVVNFRChjb250YWluZXIsICZmcmFnbWVudENvbnRhaW5lcigp
ID09ICZjb250YWluZXIpOworICAgIEFTU0VSVF9VTlVTRUQoY29udGFpbmVyLCB0aGlzLT5jb250
YWluZXIoKSA9PSAmY29udGFpbmVyKTsKICAgICByZXR1cm4gdG9wTGVmdExvY2F0aW9uT2Zmc2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmgKaW5kZXggNGYxNmU2MDU2NTFlZjZmNmIxYTY3NjliNTZhZjExN2Q0MDUyMDcw
Ni4uMzMwZjMwY2FlNDhmZmRiNzdjMjU0ZjA4MmE5ZmFiYmNiMWRhMTI3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGlwRmxv
d1RocmVhZENvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIExheW91
dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYsIGNv
bnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBudWxscHRyKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkgY29uc3Qg
eyByZXR1cm4gcGFyZW50KCkgJiYgcGFyZW50KCktPmlzUHNldWRvRWxlbWVudCgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjI3ZDkxMGYwYmQ1
ZTBhOGIzNmEwMjA2NzlkMmFmZWFjMWRjMmJmNC4uZTA0ZTQzNTA2ZTY1NTdlNzJjMzhmZTVjOWE2
Nzc2MWRhN2IwZWQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKQEAgLTE4NTEsMzYgKzE4NTEsMzYgQEAgRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2Fs
VG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBsb2NhbFBvaW50LCBjb24KICAgICBy
ZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CiB9CiAKLUxheW91dFNpemUg
UmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3Qg
TGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKK0xheW91dFNp
emUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZjb250YWlu
ZXIgPT0gdGhpcy0+Y29udGFpbmVyKCkpOwogCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7Ci0gICAg
aWYgKG8tPmlzQm94KCkpCi0gICAgICAgIG9mZnNldCAtPSB0b1JlbmRlckJveChvKS0+c2Nyb2xs
ZWRDb250ZW50T2Zmc2V0KCk7CisgICAgaWYgKGlzPFJlbmRlckJveD4oY29udGFpbmVyKSkKKyAg
ICAgICAgb2Zmc2V0IC09IGRvd25jYXN0PFJlbmRlckJveD4oY29udGFpbmVyKS5zY3JvbGxlZENv
bnRlbnRPZmZzZXQoKTsKIAogICAgIGlmIChvZmZzZXREZXBlbmRzT25Qb2ludCkKLSAgICAgICAg
Km9mZnNldERlcGVuZHNPblBvaW50ID0gby0+aXNSZW5kZXJGbG93VGhyZWFkKCk7CisgICAgICAg
ICpvZmZzZXREZXBlbmRzT25Qb2ludCA9IGlzPFJlbmRlckZsb3dUaHJlYWQ+KGNvbnRhaW5lcik7
CiAKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlvdXRTaXplIFJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyKSBjb25zdAor
TGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5k
ZXJFbGVtZW50JiBjb250YWluZXIpIGNvbnN0CiB7CiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7CiAg
ICAgTGF5b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBj
dXJyQ29udGFpbmVyID0gdGhpczsKICAgICBkbyB7Ci0gICAgICAgIGF1dG8gbmV4dENvbnRhaW5l
ciA9IGN1cnJDb250YWluZXItPmNvbnRhaW5lcigpOworICAgICAgICBhdXRvKiBuZXh0Q29udGFp
bmVyID0gY3VyckNvbnRhaW5lci0+Y29udGFpbmVyKCk7CiAgICAgICAgIEFTU0VSVChuZXh0Q29u
dGFpbmVyKTsgIC8vIFRoaXMgbWVhbnMgd2UgcmVhY2hlZCB0aGUgdG9wIHdpdGhvdXQgZmluZGlu
ZyBjb250YWluZXIuCiAgICAgICAgIGlmICghbmV4dENvbnRhaW5lcikKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBBU1NFUlQoIWN1cnJDb250YWluZXItPmhhc1RyYW5zZm9ybSgpKTsKLSAg
ICAgICAgTGF5b3V0U2l6ZSBjdXJyZW50T2Zmc2V0ID0gY3VyckNvbnRhaW5lci0+b2Zmc2V0RnJv
bUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQb2ludCk7CisgICAgICAgIExheW91
dFNpemUgY3VycmVudE9mZnNldCA9IGN1cnJDb250YWluZXItPm9mZnNldEZyb21Db250YWluZXIo
Km5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKICAgICAgICAgb2Zmc2V0ICs9IGN1cnJl
bnRPZmZzZXQ7CiAgICAgICAgIHJlZmVyZW5jZVBvaW50Lm1vdmUoY3VycmVudE9mZnNldCk7CiAg
ICAgICAgIGN1cnJDb250YWluZXIgPSBuZXh0Q29udGFpbmVyOwotICAgIH0gd2hpbGUgKGN1cnJD
b250YWluZXIgIT0gY29udGFpbmVyKTsKKyAgICB9IHdoaWxlIChjdXJyQ29udGFpbmVyICE9ICZj
b250YWluZXIpOwogCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAppbmRleCA0NDIzMmZhMzY0YmU5MzcyYmIyODU5MDcxNzFhY2IwNzUy
ZDkwOTY5Li41ZTU0NDM0MDM3NjYzMzBmYWIwYWIyZmNkZWIxMzE2ZTU1NWJmMzkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02ODQsOSArNjg0LDkgQEAgcHVi
bGljOgogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFpbmVyKCkgcmVu
ZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxheW91dCwKICAg
ICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRzLCBzbyByZXR1
cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50LgotICAgIHZpcnR1
YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExh
eW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKKyAgICB2
aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0Owog
ICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIo
KSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhh
dmUgdHJhbnNmb3Jtcy4KLSAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5l
cihSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3Rv
ckNvbnRhaW5lcihSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVj
dD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDkyYWVlOTBhMzAxMDVlMjUzMzEwMThkZTA3
MGM5MmE1YTJhMjNkNDIuLjEyODIwODlhOGM3ZTQ2NTQ0YjEwMDFiNTNkMTE2ODM2MzQzN2FhMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0z
MTksMTEgKzMxOSwxMSBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2V0T3ZlcnJpZGVMb2dpY2Fs
Q29udGVudEhlaWdodEZyb21Sb3dIZWlnaHQoTGF5b3V0VW5pdCBybwogICAgIHNldE92ZXJyaWRl
TG9naWNhbENvbnRlbnRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgcm93SGVpZ2h0IC0g
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSkpOwogfQogCi1MYXlvdXRTaXplIFJlbmRl
clRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQpIGNvbnN0CitMYXlv
dXRTaXplIFJlbmRlclRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50
JiBjb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbCogb2Zmc2V0RGVwZW5k
c09uUG9pbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG8gPT0gY29udGFpbmVyKCkpOworICAgIEFT
U0VSVCgmY29udGFpbmVyID09IHRoaXMtPmNvbnRhaW5lcigpKTsKIAotICAgIExheW91dFNpemUg
b2Zmc2V0ID0gUmVuZGVyQmxvY2tGbG93OjpvZmZzZXRGcm9tQ29udGFpbmVyKG8sIHBvaW50LCBv
ZmZzZXREZXBlbmRzT25Qb2ludCk7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBSZW5kZXJCbG9j
a0Zsb3c6Om9mZnNldEZyb21Db250YWluZXIoY29udGFpbmVyLCBwb2ludCwgb2Zmc2V0RGVwZW5k
c09uUG9pbnQpOwogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAgb2Zmc2V0IC09IHBhcmVudEJv
eCgpLT5sb2NhdGlvbk9mZnNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmgKaW5kZXggMjJmODZkYzlhMDJlOGNkOTY1Nzk5NzViNDZkZDg1NzllYWViNTFj
Ny4uNTVjMmUwNmM2ZDQ0Zjk2OTgxYjQ3ZDY2MzdjODY1ZTg3MGI0YjIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMjM0LDcgKzIzNCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNr
Z3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2lu
dCA9IDApIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
Q29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNl
dERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCA2ZmQ1NjZhODk1OTUyYmQxN2VkNzJkNWM4ZTQ5NzZmOWI5YTU5MTdhLi42NzczMWI0ZmY3NjVk
NTNmMGMwZjE5OGY1YWIwYzEzZjJkYWQyNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCkBAIC02ODEsNyArNjgxLDggQEAgRmxvYXRSZWN0IFJlbmRlclRo
ZW1lTWFjOjpjb252ZXJ0VG9QYWludGluZ1JlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiBpbnB1dFJl
bmRlcmUKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJnBhcnRSZW5kZXJlcjsK
ICAgICB3aGlsZSAocmVuZGVyZXIgJiYgcmVuZGVyZXIgIT0gJmlucHV0UmVuZGVyZXIpIHsKICAg
ICAgICAgUmVuZGVyRWxlbWVudCogY29udGFpbmluZ1JlbmRlcmVyID0gcmVuZGVyZXItPmNvbnRh
aW5lcigpOwotICAgICAgICBvZmZzZXRGcm9tSW5wdXRSZW5kZXJlciAtPSByb3VuZGVkSW50U2l6
ZShyZW5kZXJlci0+b2Zmc2V0RnJvbUNvbnRhaW5lcihjb250YWluaW5nUmVuZGVyZXIsIExheW91
dFBvaW50KCkpKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5pbmdSZW5kZXJlcik7CisgICAgICAg
IG9mZnNldEZyb21JbnB1dFJlbmRlcmVyIC09IHJvdW5kZWRJbnRTaXplKHJlbmRlcmVyLT5vZmZz
ZXRGcm9tQ29udGFpbmVyKCpjb250YWluaW5nUmVuZGVyZXIsIExheW91dFBvaW50KCkpKTsKICAg
ICAgICAgcmVuZGVyZXIgPSBjb250YWluaW5nUmVuZGVyZXI7CiAgICAgfQogICAgIC8vIElmIHRo
ZSBpbnB1dCByZW5kZXJlciB3YXMgbm90IGEgY29udGFpbmVyLCBzb21ldGhpbmcgd2VudCB3cm9u
Zwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239846</attachid>
            <date>2014-10-14 21:17:36 -0700</date>
            <delta_ts>2014-10-14 22:01:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137728-20141014211743.patch</filename>
            <type>text/plain</type>
            <size>34639</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc2MDJmZjY0NWQ4MDY4
ZDg0MmNjYzhlNWVhNTNlMmJhYTY4NjI0MC4uMjJjNGI1YzM0MGM5ODQ2MDI4OGNlYjcyZDUwYzE3
NjQzOTM5Y2UyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBvZmZzZXRGcm9tQ29u
dGFpbmVyKCkgLyBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKSB0YWtlIGEgUmVuZGVyRWxl
bWVudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAg
SGF2ZSBvZmZzZXRGcm9tQ29udGFpbmVyKCkgLyBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIo
KSB0YWtlIGEgUmVuZGVyRWxlbWVudCYKKyAgICAgICAgaW5zdGVhZCBvZiBhIFJlbmRlck9iamVj
dCouIFRoZSBhcmd1bWVudCBwYXNzZWQgaXMgbmV2ZXIgbnVsbCBhbmQgdGhlIHR5cGUKKyAgICAg
ICAgc2hvdWxkIGJlIGEgUmVuZGVyRWxlbWVudCBhcyB0aGUgYXJndW1lbnQgaXMgYSBjb250YWlu
ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsQ2Fy
ZXRSZWN0SW5SZW5kZXJlckZvckNhcmV0UGFpbnRpbmcpOgorICAgICAgICAqIHBhZ2UvR2VzdHVy
ZVRhcEhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNv
bHV0ZVRvTG9jYWxQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0RnJv
bUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21B
bmNlc3RvckNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRUb1BhaW50
aW5nUmVjdCk6CisKIDIwMTQtMTAtMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE1OTIwOCk6IENyYXNoIHdoZW4gY2xpY2tpbmcgc2Ny
dWJiZXIgYWZ0ZXIgbmF2aWdhdGluZyBhd2F5L2JhY2sgdG8gdmlkZW8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggNDdjNjUyOGQ4MjlmNjQzZjQ4ZTA1ZGE1YmU5ZmI2
MmRmOTFiODQ2Mi4uZmQ1YWE4MTlkOTFjMDdhYWZlNWQ1NDUxMDFiNGM2YzJjY2Q2NGIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTEyOTQsMTAgKzEyOTQsMTAg
QEAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEluUmVuZGVyZXJGb3JDYXJldFBhaW50aW5nKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgY2FyZXQKIAogICAgIC8vIENvbXB1dGUgYW4gb2Zmc2V0IGJl
dHdlZW4gdGhlIHJlbmRlcmVyIGFuZCB0aGUgY2FyZXRQYWludGVyLgogICAgIHdoaWxlIChyZW5k
ZXJlciAhPSBjYXJldFBhaW50ZXIpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXJP
YmplY3QgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIGNv
bnRhaW5lck9iamVjdCA9IHJlbmRlcmVyLT5jb250YWluZXIoKTsKICAgICAgICAgaWYgKCFjb250
YWluZXJPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgICAgICBs
b2NhbFJlY3QubW92ZShyZW5kZXJlci0+b2Zmc2V0RnJvbUNvbnRhaW5lcihjb250YWluZXJPYmpl
Y3QsIGxvY2FsUmVjdC5sb2NhdGlvbigpKSk7CisgICAgICAgIGxvY2FsUmVjdC5tb3ZlKHJlbmRl
cmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKCpjb250YWluZXJPYmplY3QsIGxvY2FsUmVjdC5sb2Nh
dGlvbigpKSk7CiAgICAgICAgIHJlbmRlcmVyID0gY29udGFpbmVyT2JqZWN0OwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9HZXN0dXJlVGFwSGlnaGxpZ2h0ZXIuY3BwCmluZGV4IGY4
ZjQ3ZTM0NDNlMzQzMWFkMWQyNmIxNWFkOGRhNDZkODQ5MjM0ODkuLjU2Y2JiZDk0NTBiNDc2ZTFj
ZWQyY2ZlNTA2MTRkZDQwYWIwMTk2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2VzdHVyZVRhcEhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dlc3R1
cmVUYXBIaWdobGlnaHRlci5jcHAKQEAgLTY0LDExICs2NCwxMSBAQCBBZmZpbmVUcmFuc2Zvcm0g
bG9jYWxUb0Fic29sdXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlck9iamVjdCogbykKICAgICBMYXlv
dXRQb2ludCByZWZlcmVuY2VQb2ludDsKIAogICAgIHdoaWxlIChvKSB7Ci0gICAgICAgIFJlbmRl
ck9iamVjdCogbmV4dENvbnRhaW5lciA9IG8tPmNvbnRhaW5lcigpOworICAgICAgICBSZW5kZXJF
bGVtZW50KiBuZXh0Q29udGFpbmVyID0gby0+Y29udGFpbmVyKCk7CiAgICAgICAgIGlmICghbmV4
dENvbnRhaW5lcikKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIExheW91dFNpemUgY29u
dGFpbmVyT2Zmc2V0ID0gby0+b2Zmc2V0RnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCByZWZl
cmVuY2VQb2ludCk7CisgICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gby0+b2Zm
c2V0RnJvbUNvbnRhaW5lcigqbmV4dENvbnRhaW5lciwgcmVmZXJlbmNlUG9pbnQpOwogICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwogICAgICAgICBvLT5nZXRUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKG5leHRDb250YWluZXIsIGNvbnRhaW5lck9mZnNldCwgdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNTc3NWQ0Y2VhYTQ3YjQwMTJjYzBmZDcwOTg4
NDU4ZDJlNWZkY2Q5Ni4uMWMyN2ExOWFlMWRiMzkwODQwNzc1NDhiMTkwMTY2ODZmYWI0NWYxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE5MTIsOCArMTkxMiw4
IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluCiAgICAgfQogCiAgICAgYm9vbCBjb250YWluZXJT
a2lwcGVkOwotICAgIGF1dG8gbyA9IGNvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCAmY29udGFp
bmVyU2tpcHBlZCk7Ci0gICAgaWYgKCFvKQorICAgIFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciA9
IHRoaXMtPmNvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7Cisg
ICAgaWYgKCFjb250YWluZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaXNGaXhlZFBv
cyA9IHN0eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uOwpAQCAtMTkyOCwxMiArMTky
OCwxMiBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbgogICAgIGlmICh3YXNGaXhlZCkKICAgICAg
ICAgKndhc0ZpeGVkID0gbW9kZSAmIElzRml4ZWQ7CiAgICAgCi0gICAgTGF5b3V0U2l6ZSBjb250
YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIExheW91dFBvaW50KHRyYW5zZm9y
bVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9
IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwgTGF5b3V0UG9pbnQodHJhbnNmb3JtU3Rh
dGUubWFwcGVkUG9pbnQoKSkpOwogICAgIAotICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBV
c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVz
ZXJ2ZXMzRCgpKTsKLSAgICBpZiAobW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgeworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBV
c2VUcmFuc2Zvcm1zICYmIChjb250YWluZXItPnN0eWxlKCkucHJlc2VydmVzM0QoKSB8fCBzdHls
ZSgpLnByZXNlcnZlczNEKCkpOworICAgIGlmIChtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5lcikpIHsKICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdDsKLSAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBj
b250YWluZXJPZmZzZXQsIHQpOworICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnRhaW5lciwgY29udGFpbmVyT2Zmc2V0LCB0KTsKICAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBw
bHlUcmFuc2Zvcm0odCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJh
bnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgIH0gZWxzZQog
ICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKGNvbnRhaW5lck9mZnNldC53aWR0aCgpLCBjb250
YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11
bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKQEAgLTE5
NDEsNyArMTk0MSw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluCiAgICAgaWYgKGNvbnRhaW5l
clNraXBwZWQpIHsKICAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2Vl
biByZXBhaW50Q29udGFpbmVyIGFuZCBvLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRh
aW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3Qg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIG8uCi0gICAgICAgIExh
eW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFu
Y2VzdG9yQ29udGFpbmVyKG8pOworICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9
IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29udGFpbmVy
KTsKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtY29udGFpbmVyT2Zmc2V0LndpZHRoKCks
IC1jb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6
QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5NTAsMTAgKzE5NTAsMTAgQEAgdm9pZCBSZW5k
ZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW4KIAogICAgIC8vIEZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzIGlu
c2lkZSBvdXQtb2YtZmxvdyBuYW1lZCBmbG93cywgd2UgZG8gbm90IHdhbnQgdG8KICAgICAvLyBt
YXAgdGhlaXIgcG9zaXRpb24gZnVydGhlciB0byByZWdpb25zIGJhc2VkIG9uIHRoZWlyIGNvb3Jk
aW5hdGVzIGluc2lkZSB0aGUgbmFtZWQgZmxvd3MuCi0gICAgaWYgKCFvLT5pc091dE9mRmxvd1Jl
bmRlckZsb3dUaHJlYWQoKSB8fCAhZml4ZWRQb3NpdGlvbmVkV2l0aE5hbWVkRmxvd0NvbnRhaW5p
bmdCbG9jaygpKQotICAgICAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWlu
ZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CisgICAgaWYgKCFjb250YWluZXIt
PmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVhZCgpIHx8ICFmaXhlZFBvc2l0aW9uZWRXaXRoTmFt
ZWRGbG93Q29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQp
OwogICAgIGVsc2UKLSAgICAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcih0b1JlbmRlckxheWVy
TW9kZWxPYmplY3QobyksIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CisgICAgICAg
IGNvbnRhaW5lci0+bWFwTG9jYWxUb0NvbnRhaW5lcih0b1JlbmRlckxheWVyTW9kZWxPYmplY3Qo
Y29udGFpbmVyKSwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAogY29uc3Qg
UmVuZGVyT2JqZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAm
IGdlb21ldHJ5TWFwKSBjb25zdApAQCAtMTk2MSw5ICsxOTYxLDkgQEAgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJCb3g6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamUKICAgICBBU1NFUlQoYW5jZXN0b3JUb1N0b3BBdCAhPSB0aGlzKTsKIAogICAgIGJv
b2wgYW5jZXN0b3JTa2lwcGVkOwotICAgIGF1dG8gY29udGFpbmVyID0gdGhpcy0+Y29udGFpbmVy
KGFuY2VzdG9yVG9TdG9wQXQsICZhbmNlc3RvclNraXBwZWQpOworICAgIFJlbmRlckVsZW1lbnQq
IGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcihhbmNlc3RvclRvU3RvcEF0LCAmYW5jZXN0b3JT
a2lwcGVkKTsKICAgICBpZiAoIWNvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBpc0ZpeGVkUG9zID0gc3R5bGUoKS5wb3NpdGlv
bigpID09IEZpeGVkUG9zaXRpb247CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm0gPSBoYXNMYXllcigp
ICYmIGxheWVyKCktPnRyYW5zZm9ybSgpOwpAQCAtMTk3MiwxMSArMTk3MiwxMSBAQCBjb25zdCBS
ZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZQogICAgIGlmIChhbmNlc3RvclNraXBwZWQpIHsKICAgICAgICAgLy8g
VGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2VlbiByZXBhaW50Q29udGFpbmVyIGFuZCBv
LCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRhaW5lcnMsIHNvIGl0IHNob3VsZCBiZSBz
YWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3QgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGFu
Y2VzdG9yIGFuZCBvLgotICAgICAgICBhZGp1c3RtZW50Rm9yU2tpcHBlZEFuY2VzdG9yID0gLWFu
Y2VzdG9yVG9TdG9wQXQtPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihjb250YWluZXIpOwor
ICAgICAgICBhZGp1c3RtZW50Rm9yU2tpcHBlZEFuY2VzdG9yID0gLWFuY2VzdG9yVG9TdG9wQXQt
Pm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29udGFpbmVyKTsKICAgICB9CiAKICAgICBi
b29sIG9mZnNldERlcGVuZHNPblBvaW50ID0gZmFsc2U7Ci0gICAgTGF5b3V0U2l6ZSBjb250YWlu
ZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwgTGF5b3V0UG9pbnQoKSwg
Jm9mZnNldERlcGVuZHNPblBvaW50KTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9
IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwgTGF5b3V0UG9pbnQoKSwgJm9mZnNldERl
cGVuZHNPblBvaW50KTsKIAogICAgIGJvb2wgcHJlc2VydmUzRCA9IGNvbnRhaW5lci0+c3R5bGUo
KS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKTsKICAgICBpZiAoc2hvdWxk
VXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7CkBAIC0yMDA3LDEwICsyMDA3
LDEwIEBAIHZvaWQgUmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGlu
YXRlc0ZsYWdzIG1vZGUsIFRyYW5zZm9ybVN0YXRlCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6
Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUsIHRyYW5zZm9ybVN0YXRlKTsKIH0KIAotTGF5
b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29u
c3QKK0xheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBv
aW50KSBjb25zdAogewogICAgIC8vIEEgcmVnaW9uICJoYXMiIGJveGVzIGluc2lkZSBpdCB3aXRo
b3V0IGJlaW5nIHRoZWlyIGNvbnRhaW5lci4gCi0gICAgQVNTRVJUKHJlbmRlcmVyID09IGNvbnRh
aW5lcigpIHx8IGlzPFJlbmRlclJlZ2lvbj4oKnJlbmRlcmVyKSk7CisgICAgQVNTRVJUKCZyZW5k
ZXJlciA9PSBjb250YWluZXIoKSB8fCBpczxSZW5kZXJSZWdpb24+KHJlbmRlcmVyKSk7CiAKICAg
ICBMYXlvdXRTaXplIG9mZnNldDsgICAgCiAgICAgaWYgKGlzSW5GbG93UG9zaXRpb25lZCgpKQpA
QCAtMjAxOSwxNCArMjAxOSwxNCBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNv
bnRhaW5lcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRQbwogICAgIGlmICgh
aXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpCiAgICAgICAgIG9mZnNldCArPSB0b3BMZWZ0TG9j
YXRpb25PZmZzZXQoKTsKIAotICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpCi0gICAg
ICAgIG9mZnNldCAtPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikuc2Nyb2xsZWRDb250
ZW50T2Zmc2V0KCk7CisgICAgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKQorICAgICAgICBv
ZmZzZXQgLT0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikuc2Nyb2xsZWRDb250ZW50T2Zm
c2V0KCk7CiAKLSAgICBpZiAoc3R5bGUoKS5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24g
JiYgcmVuZGVyZXItPmlzSW5GbG93UG9zaXRpb25lZCgpICYmIGlzPFJlbmRlcklubGluZT4oKnJl
bmRlcmVyKSkKLSAgICAgICAgb2Zmc2V0ICs9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRl
cmVyKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKHRoaXMpOworICAgIGlmIChzdHls
ZSgpLnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiByZW5kZXJlci5pc0luRmxvd1Bv
c2l0aW9uZWQoKSAmJiBpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSkKKyAgICAgICAgb2Zmc2V0
ICs9IGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpLm9mZnNldEZvckluRmxvd1Bvc2l0
aW9uZWRJbmxpbmUodGhpcyk7CiAKICAgICBpZiAob2Zmc2V0RGVwZW5kc09uUG9pbnQpCi0gICAg
ICAgICpvZmZzZXREZXBlbmRzT25Qb2ludCB8PSBpczxSZW5kZXJGbG93VGhyZWFkPigqcmVuZGVy
ZXIpOworICAgICAgICAqb2Zmc2V0RGVwZW5kc09uUG9pbnQgfD0gaXM8UmVuZGVyRmxvd1RocmVh
ZD4ocmVuZGVyZXIpOwogCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KQEAgLTIyMjUsNyArMjIyNSw3
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAKICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkg
ewogICAgICAgICAvLyBJZiB0aGUgcmVwYWludENvbnRhaW5lciBpcyBiZWxvdyBvLCB0aGVuIHdl
IG5lZWQgdG8gbWFwIHRoZSByZWN0IGludG8gcmVwYWludENvbnRhaW5lcidzIGNvb3JkaW5hdGVz
LgotICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlcGFpbnRDb250YWluZXIt
Pm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihyZW5kZXJlcik7CisgICAgICAgIExheW91dFNp
emUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9y
Q29udGFpbmVyKCpyZW5kZXJlcik7CiAgICAgICAgIHJlY3QubW92ZSgtY29udGFpbmVyT2Zmc2V0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAppbmRleCA5Yzc1NDYyZWY2N2ZhOGRjNWUzMTFlNzMwZTFjMjI0NjJjZjZlM2I3Li42NTI3YTBj
NGU1MmNiMmI1NjhjYTcyNTUxOWM0N2ZjMDY3YjBjMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJP
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAjZW5kaWYKIAot
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCos
IGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihS
ZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Q
b2ludCA9IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIExheW91dFVuaXQgYWRqdXN0Qm9y
ZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExheW91dFVuaXQgd2lkdGgpIGNvbnN0Owog
ICAgIExheW91dFVuaXQgYWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhM
YXlvdXRVbml0IGhlaWdodCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1MDllOTg2ZTM2MTFiODBmYTUzYzI3MDlh
MzNkYjUxMmIyMDdlMDcwLi5lNjVjNGJlN2U3ZmE5ZTFkNzE1ZGYwMmE5M2FiZjA0NmExYzZiMjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKQEAgLTI2MzcsOCArMjYzNyw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNo
b3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIAogdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNG
bGFncyBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7Ci0gICAg
YXV0byBvID0gY29udGFpbmVyKCk7Ci0gICAgaWYgKCFvKQorICAgIFJlbmRlckVsZW1lbnQqIGNv
bnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcigpOworICAgIGlmICghY29udGFpbmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZyBmb3IgbmFt
ZWQgZmxvdyB0aHJlYWRzIHNpbmNlIGl0IG9ubHkgd29ya3MgZm9yIGNvbnRlbnQgaW4gdGhlIGZp
cnN0IHJlZ2lvbi4KQEAgLTI2NDYsMjEgKzI2NDYsMjEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBU
cmEKICAgICAvLyBnZW9tZXRyeSB0byBhY3R1YWxseSBnZXQgYSBiZXR0ZXIgcmVzdWx0LgogICAg
IC8vIFRoZSBwb2ludCBpbnNpZGUgYSBib3ggdGhhdCdzIGluc2lkZSBhIHJlZ2lvbiBoYXMgaXRz
IGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSByZWdpb24sCiAgICAgLy8gbm90IHRoZSBGbG93
VGhyZWFkIHRoYXQgaXMgaXRzIGNvbnRhaW5lciBpbiB0aGUgUmVuZGVyT2JqZWN0IHRyZWUuCi0g
ICAgaWYgKGlzQm94KCkgJiYgby0+aXNPdXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAg
ICBpZiAoaXM8UmVuZGVyQm94PigqdGhpcykgJiYgY29udGFpbmVyLT5pc091dE9mRmxvd1JlbmRl
ckZsb3dUaHJlYWQoKSkgewogICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVs
bHB0cjsKICAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwotICAgICAg
ICBpZiAodG9SZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5nZUZvckJveCh0b1JlbmRl
ckJveCh0aGlzKSwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCi0gICAgICAgICAgICBvID0gc3Rh
cnRSZWdpb247CisgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJGbG93VGhyZWFkPigqY29udGFp
bmVyKS5nZXRSZWdpb25SYW5nZUZvckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHRoaXMpLCBzdGFy
dFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAgICAgIGNvbnRhaW5lciA9IHN0YXJ0UmVnaW9u
OwogICAgIH0KIAotICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUsIHRyYW5zZm9y
bVN0YXRlKTsKKyAgICBjb250YWluZXItPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUsIHRy
YW5zZm9ybVN0YXRlKTsKIAotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0
RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5l
ck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwgTGF5b3V0UG9pbnQoKSk7
CiAKLSAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5
bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKG1v
ZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykp
IHsKKyAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiAoY29udGFp
bmVyLT5zdHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpKTsKKyAg
ICBpZiAobW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRh
aW5lcihjb250YWluZXIpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7Ci0gICAg
ICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVyT2Zmc2V0LCB0KTsKKyAg
ICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIsIGNvbnRhaW5lck9mZnNl
dCwgdCk7CiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZl
M0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRl
OjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICB9IGVsc2UKICAgICAgICAgdHJhbnNmb3JtU3RhdGUu
bW92ZShjb250YWluZXJPZmZzZXQud2lkdGgoKSwgY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBw
cmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zv
cm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCmluZGV4IDQ2NWJhOTA1N2FhNjBmMTQ4ODA2MzI3NzYxM2Q3ZDAxODRkZGIy
NDQuLjZlNDQwZTc0MDY2MmU5Njc4OTk2NzM3OGFlMDFkNTVlNDNjYTUwYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTY3LDggKzExNjcsOCBAQCB2
b2lkIFJlbmRlcklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDbwogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGNvbnRh
aW5lclNraXBwZWQ7Ci0gICAgUmVuZGVyRWxlbWVudCogbyA9IGNvbnRhaW5lcihyZXBhaW50Q29u
dGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7Ci0gICAgaWYgKCFvKQorICAgIFJlbmRlckVsZW1l
bnQqIGNvbnRhaW5lciA9IHRoaXMtPmNvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCAmY29udGFp
bmVyU2tpcHBlZCk7CisgICAgaWYgKCFjb250YWluZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IExheW91dFBvaW50IHRvcExlZnQgPSByZWN0LmxvY2F0aW9uKCk7CkBAIC0xMTg0LDM2ICsxMTg0
LDM1IEBAIHZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvCiAgICAgLy8gRklYTUU6IFdlIGlnbm9yZSB0
aGUgbGlnaHR3ZWlnaHQgY2xpcHBpbmcgcmVjdCB0aGF0IGNvbnRyb2xzIHVzZSwgc2luY2UgaWYg
fG98IGlzIGluIG1pZC1sYXlvdXQsCiAgICAgLy8gaXRzIGNvbnRyb2xDbGlwUmVjdCB3aWxsIGJl
IHdyb25nLiBGb3Igb3ZlcmZsb3cgY2xpcCB3ZSB1c2UgdGhlIHZhbHVlcyBjYWNoZWQgYnkgdGhl
IGxheWVyLgogICAgIHJlY3Quc2V0TG9jYXRpb24odG9wTGVmdCk7Ci0gICAgaWYgKG8tPmhhc092
ZXJmbG93Q2xpcCgpKSB7Ci0gICAgICAgIFJlbmRlckJveCogY29udGFpbmVyQm94ID0gdG9SZW5k
ZXJCb3gobyk7Ci0gICAgICAgIGNvbnRhaW5lckJveC0+YXBwbHlDYWNoZWRDbGlwQW5kU2Nyb2xs
T2Zmc2V0Rm9yUmVwYWludChyZWN0KTsKKyAgICBpZiAoY29udGFpbmVyLT5oYXNPdmVyZmxvd0Ns
aXAoKSkgeworICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3g+KCpjb250YWluZXIpLmFwcGx5Q2Fj
aGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQocmVjdCk7CiAgICAgICAgIGlmIChyZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoY29udGFp
bmVyU2tpcHBlZCkgewogICAgICAgICAvLyBJZiB0aGUgcmVwYWludENvbnRhaW5lciBpcyBiZWxv
dyBvLCB0aGVuIHdlIG5lZWQgdG8gbWFwIHRoZSByZWN0IGludG8gcmVwYWludENvbnRhaW5lcidz
IGNvb3JkaW5hdGVzLgotICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlcGFp
bnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihvKTsKKyAgICAgICAgTGF5
b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5j
ZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CiAgICAgICAgIHJlY3QubW92ZSgtY29udGFpbmVy
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBvLT5jb21wdXRlUmVj
dEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVjdCwgZml4ZWQpOworICAgIGNvbnRhaW5l
ci0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlY3QsIGZpeGVkKTsK
IH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
T2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5k
c09uUG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlcklubGluZTo6b2Zmc2V0RnJvbUNvbnRh
aW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCog
b2Zmc2V0RGVwZW5kc09uUG9pbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGNvbnRhaW5lciA9PSB0
aGlzLT5jb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZjb250YWluZXIgPT0gdGhpcy0+Y29udGFp
bmVyKCkpOwogICAgIAogICAgIExheW91dFNpemUgb2Zmc2V0OyAgICAKICAgICBpZiAoaXNJbkZs
b3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIG9mZnNldCArPSBvZmZzZXRGb3JJbkZsb3dQb3NpdGlv
bigpOwogCi0gICAgaWYgKGNvbnRhaW5lci0+aXNCb3goKSkKLSAgICAgICAgb2Zmc2V0IC09IHRv
UmVuZGVyQm94KGNvbnRhaW5lciktPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOworICAgIGlmIChp
czxSZW5kZXJCb3g+KGNvbnRhaW5lcikpCisgICAgICAgIG9mZnNldCAtPSBkb3duY2FzdDxSZW5k
ZXJCb3g+KGNvbnRhaW5lcikuc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAKICAgICBpZiAob2Zm
c2V0RGVwZW5kc09uUG9pbnQpCi0gICAgICAgICpvZmZzZXREZXBlbmRzT25Qb2ludCA9IChjb250
YWluZXItPmlzQm94KCkgJiYgY29udGFpbmVyLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKCkpIHx8IGNvbnRhaW5lci0+aXNSZW5kZXJGbG93VGhyZWFkKCk7CisgICAgICAgICpv
ZmZzZXREZXBlbmRzT25Qb2ludCA9IChpczxSZW5kZXJCb3g+KGNvbnRhaW5lcikgJiYgY29udGFp
bmVyLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgfHwgaXM8UmVuZGVyRmxv
d1RocmVhZD4oY29udGFpbmVyKTsKIAogICAgIHJldHVybiBvZmZzZXQ7CiB9CkBAIC0xMjMzLDI0
ICsxMjMyLDI0IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250CiAgICAgfQogCiAgICAgYm9vbCBj
b250YWluZXJTa2lwcGVkOwotICAgIFJlbmRlckVsZW1lbnQqIG8gPSBjb250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOwotICAgIGlmICghbykKKyAgICBSZW5kZXJF
bGVtZW50KiBjb250YWluZXIgPSB0aGlzLT5jb250YWluZXIocmVwYWludENvbnRhaW5lciwgJmNv
bnRhaW5lclNraXBwZWQpOworICAgIGlmICghY29udGFpbmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobW9kZSAmIEFwcGx5Q29udGFpbmVyRmxpcCAmJiBvLT5pc0JveCgpKSB7Ci0gICAg
ICAgIGlmIChvLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIHsKKyAgICBp
ZiAobW9kZSAmIEFwcGx5Q29udGFpbmVyRmxpcCAmJiBpczxSZW5kZXJCb3g+KCpjb250YWluZXIp
KSB7CisgICAgICAgIGlmIChjb250YWluZXItPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGlu
Z01vZGUoKSkgewogICAgICAgICAgICAgTGF5b3V0UG9pbnQgY2VudGVyUG9pbnQodHJhbnNmb3Jt
U3RhdGUubWFwcGVkUG9pbnQoKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKHRv
UmVuZGVyQm94KG8pLT5mbGlwRm9yV3JpdGluZ01vZGUoY2VudGVyUG9pbnQpIC0gY2VudGVyUG9p
bnQpOworICAgICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShkb3duY2FzdDxSZW5kZXJCb3g+
KCpjb250YWluZXIpLmZsaXBGb3JXcml0aW5nTW9kZShjZW50ZXJQb2ludCkgLSBjZW50ZXJQb2lu
dCk7CiAgICAgICAgIH0KICAgICAgICAgbW9kZSAmPSB+QXBwbHlDb250YWluZXJGbGlwOwogICAg
IH0KIAotICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5l
cihvLCBMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7CisgICAgTGF5
b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKCpjb250YWluZXIs
IExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKIAotICAgIGJvb2wg
cHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLnByZXNlcnZl
czNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAobW9kZSAmIFVzZVRyYW5z
Zm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgeworICAgIGJvb2wg
cHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChjb250YWluZXItPnN0eWxlKCku
cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLnByZXNlcnZlczNEKCkpOworICAgIGlmIChtb2RlICYg
VXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5l
cikpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICAgICAgZ2V0VHJhbnNm
b3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOworICAgICAgICBnZXRUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5lciwgY29udGFpbmVyT2Zmc2V0LCB0KTsKICAgICAg
ICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2VydmUzRCA/IFRyYW5zZm9y
bVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFu
c2Zvcm0pOwogICAgIH0gZWxzZQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKGNvbnRhaW5l
ck9mZnNldC53aWR0aCgpLCBjb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBU
cmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0
dGVuVHJhbnNmb3JtKTsKQEAgLTEyNTgsMTIgKzEyNTcsMTIgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnQKICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAgICAvLyBUaGVyZSBjYW4n
dCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIG8sIGJlY2F1c2Ug
dHJhbnNmb3JtcyBjcmVhdGUgY29udGFpbmVycywgc28gaXQgc2hvdWxkIGJlIHNhZmUKICAgICAg
ICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgcmVwYWludENvbnRh
aW5lciBhbmQgby4KLSAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50
Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIobyk7CisgICAgICAgIExheW91
dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2Vz
dG9yQ29udGFpbmVyKCpjb250YWluZXIpOwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1j
b250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2Vy
dmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3Rh
dGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgby0+
bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9k
ZSwgd2FzRml4ZWQpOworICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCiBjb25zdCBS
ZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYgZ2VvbWV0cnlNYXApIGNvbnN0CkBAIC0xMjczLDE3ICsxMjcyLDE3IEBAIGNvbnN0IFJlbmRl
ck9iamVjdCogUmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPCiAgICAgYm9vbCBhbmNlc3RvclNraXBwZWQ7CiAgICAgUmVuZGVyRWxlbWVu
dCogY29udGFpbmVyID0gdGhpcy0+Y29udGFpbmVyKGFuY2VzdG9yVG9TdG9wQXQsICZhbmNlc3Rv
clNraXBwZWQpOwogICAgIGlmICghY29udGFpbmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBMYXlvdXRTaXplIGFkanVzdG1lbnRGb3JTa2lwcGVk
QW5jZXN0b3I7CiAgICAgaWYgKGFuY2VzdG9yU2tpcHBlZCkgewogICAgICAgICAvLyBUaGVyZSBj
YW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIG8sIGJlY2F1
c2UgdHJhbnNmb3JtcyBjcmVhdGUgY29udGFpbmVycywgc28gaXQgc2hvdWxkIGJlIHNhZmUKICAg
ICAgICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgYW5jZXN0b3Ig
YW5kIG8uCi0gICAgICAgIGFkanVzdG1lbnRGb3JTa2lwcGVkQW5jZXN0b3IgPSAtYW5jZXN0b3JU
b1N0b3BBdC0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnRhaW5lcik7CisgICAgICAg
IGFkanVzdG1lbnRGb3JTa2lwcGVkQW5jZXN0b3IgPSAtYW5jZXN0b3JUb1N0b3BBdC0+b2Zmc2V0
RnJvbUFuY2VzdG9yQ29udGFpbmVyKCpjb250YWluZXIpOwogICAgIH0KIAogICAgIGJvb2wgb2Zm
c2V0RGVwZW5kc09uUG9pbnQgPSBmYWxzZTsKLSAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNl
dCA9IG9mZnNldEZyb21Db250YWluZXIoY29udGFpbmVyLCBMYXlvdXRQb2ludCgpLCAmb2Zmc2V0
RGVwZW5kc09uUG9pbnQpOworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0
RnJvbUNvbnRhaW5lcigqY29udGFpbmVyLCBMYXlvdXRQb2ludCgpLCAmb2Zmc2V0RGVwZW5kc09u
UG9pbnQpOwogCiAgICAgYm9vbCBwcmVzZXJ2ZTNEID0gY29udGFpbmVyLT5zdHlsZSgpLnByZXNl
cnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpOwogICAgIGlmIChzaG91bGRVc2VUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnRhaW5lcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaAppbmRleCAxMzQ2ZGUwNmJhN2Y1MjNhMjA5MGUxNTBmN2MyZDFhN2ZkZDc3
MWEyLi5hNGZlYmQwMTZjM2QzOWRmZDIxMDE0NDM2NzdiOTFlNWFkZGVhNGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZy
b21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZz
ZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
TGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlv
dXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBj
b25zdCBvdmVycmlkZSBmaW5hbAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKaW5kZXggODUzNWY2NmVh
ZGM0YTJmNDU1NzVhZmFjOGViNzQxZjkyZTkyOGQ0Yi4uNTdmNDFiNTljMzQxMDkzYmJkY2NkNjFm
NTk2MWRhOGFiYjJlYzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKQEAgLTYwOCwyMSArNjA4LDIwIEBA
IHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpjb21wdXRlTGluZUdyaWRQYWdpbmF0
aW9uT3JpZ2luKExheW91dFN0YXRlJiBsCiAgICAgfQogfQogCi1MYXlvdXRTaXplIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGVu
Y2xvc2luZ0NvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIHBoeXNpY2FsUG9pbnQsIGJvb2wq
IG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQ6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYgZW5jbG9zaW5n
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcGh5c2ljYWxQb2ludCwgYm9vbCogb2Zmc2V0
RGVwZW5kc09uUG9pbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVuY2xvc2luZ0NvbnRhaW5lciA9
PSBjb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZlbmNsb3NpbmdDb250YWluZXIgPT0gY29udGFp
bmVyKCkpOwogCiAgICAgaWYgKG9mZnNldERlcGVuZHNPblBvaW50KQogICAgICAgICAqb2Zmc2V0
RGVwZW5kc09uUG9pbnQgPSB0cnVlOwogICAgIAogICAgIExheW91dFBvaW50IHRyYW5zbGF0ZWRQ
aHlzaWNhbFBvaW50KHBoeXNpY2FsUG9pbnQpOwotICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0g
cGh5c2ljYWxUcmFuc2xhdGlvbkZyb21GbG93VG9SZWdpb24odHJhbnNsYXRlZFBoeXNpY2FsUG9p
bnQpOwotICAgIGlmIChyZWdpb24pCisgICAgaWYgKFJlbmRlclJlZ2lvbiogcmVnaW9uID0gcGh5
c2ljYWxUcmFuc2xhdGlvbkZyb21GbG93VG9SZWdpb24odHJhbnNsYXRlZFBoeXNpY2FsUG9pbnQp
KQogICAgICAgICB0cmFuc2xhdGVkUGh5c2ljYWxQb2ludC5tb3ZlQnkocmVnaW9uLT50b3BMZWZ0
TG9jYXRpb24oKSk7CiAgICAgCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQodHJhbnNsYXRlZFBoeXNp
Y2FsUG9pbnQueCgpLCB0cmFuc2xhdGVkUGh5c2ljYWxQb2ludC55KCkpOwotICAgIGlmIChlbmNs
b3NpbmdDb250YWluZXItPmlzQm94KCkpCi0gICAgICAgIG9mZnNldCAtPSB0b1JlbmRlckJveChl
bmNsb3NpbmdDb250YWluZXIpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKKyAgICBpZiAoaXM8
UmVuZGVyQm94PihlbmNsb3NpbmdDb250YWluZXIpKQorICAgICAgICBvZmZzZXQgLT0gZG93bmNh
c3Q8UmVuZGVyQm94PihlbmNsb3NpbmdDb250YWluZXIpLnNjcm9sbGVkQ29udGVudE9mZnNldCgp
OwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAgICAgCkBAIC02MzgsNyArNjM3LDcgQEAgdm9pZCBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENv
b3JkaW5hdGVzRmxhZ3MgbW8KICAgICBMYXlvdXRTaXplIGNhbmRpZGF0ZUNvbnRhaW5lck9mZnNl
dDsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbHVtblNldCA6IGNoaWxkcmVuT2ZUeXBl
PFJlbmRlck11bHRpQ29sdW1uU2V0PigqcGFyZW50KCkpKSB7Ci0gICAgICAgIGNhbmRpZGF0ZUNv
bnRhaW5lck9mZnNldCA9IGNvbHVtblNldC5vZmZzZXRGcm9tQ29udGFpbmVyKHBhcmVudCgpLCBM
YXlvdXRQb2ludCgpKTsKKyAgICAgICAgY2FuZGlkYXRlQ29udGFpbmVyT2Zmc2V0ID0gY29sdW1u
U2V0Lm9mZnNldEZyb21Db250YWluZXIoKnBhcmVudCgpLCBMYXlvdXRQb2ludCgpKTsKICAgICAg
ICAgCiAgICAgICAgIGNhbmRpZGF0ZVBvaW50ID0gdHJhbnNmb3JtUG9pbnQgLSBjYW5kaWRhdGVD
b250YWluZXJPZmZzZXQ7CiAgICAgICAgIGNhbmRpZGF0ZUNvbHVtblNldCA9ICZjb2x1bW5TZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkLmgKaW5kZXggNDY5Y2Q1ZDZlZDVkNWY0OTZhYjhkY2VhYjY3MTlhNDY5Yzk2N2Nk
NC4uNTEzZDMxZDkyN2YwNzFlYzhhYzVkYTk4ZDU1NzVlMDA3MmFlNjVkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
aApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1T
dGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
Q29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0
RGVwZW5kc09uUG9pbnQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExh
eW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0IG92ZXJy
aWRlOwogICAgIAogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IGFzIGNvbHVtbiBhbmQgcmVnaW9u
IGZsb3cgdGhyZWFkcyBzdGFydCBuZXN0aW5nLCB0aGlzIHdpbGwgZW5kIHVwIGNoYW5naW5nLgog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGVja0NvbHVtbkJyZWFrcygpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFn
bWVudC5jcHAKaW5kZXggNzY5OTUxZWQxZmUwYjI4YmU5NTI1YTM2ODliNGQyODExOTdlZjNlYS4u
ZDJmZjg4NTYxNTg0ZTE5NjA5MmVjNjI4NmFkMmU0ZDJhNjVlNzM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCkBAIC0y
NDksMTEgKzI0OSwxMCBAQCBib29sIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzaG91bGRDbGlw
Rmxvd1RocmVhZENvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBpc0xhc3RSZWdpb24oKSAmJiAo
c3R5bGUoKS5yZWdpb25GcmFnbWVudCgpID09IEJyZWFrUmVnaW9uRnJhZ21lbnQpOwogfQogICAg
IAotTGF5b3V0U2l6ZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6b2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCopIGNvbnN0CitMYXlv
dXRTaXplIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRl
ckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKikgY29uc3QKIHsK
LSAgICBBU1NFUlQoJmZyYWdtZW50Q29udGFpbmVyKCkgPT0gbyk7Ci0gICAgQVNTRVJUKGNvbnRh
aW5lcigpID09IG8pOwotICAgIFVOVVNFRF9QQVJBTShvKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNv
bnRhaW5lciwgJmZyYWdtZW50Q29udGFpbmVyKCkgPT0gJmNvbnRhaW5lcik7CisgICAgQVNTRVJU
X1VOVVNFRChjb250YWluZXIsIHRoaXMtPmNvbnRhaW5lcigpID09ICZjb250YWluZXIpOwogICAg
IHJldHVybiB0b3BMZWZ0TG9jYXRpb25PZmZzZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCA0ZjE2ZTYwNTY1
MWVmNmY2YjFhNjc2OWI1NmFmMTE3ZDQwNTIwNzA2Li4zMzBmMzBjYWU0OGZmZGI3N2MyNTRmMDgy
YTlmYWJiY2IxZGExMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIHNob3VsZENsaXBGbG93VGhyZWFkQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIAotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9p
bnQgPSAwKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJv
bUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZz
ZXREZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBp
c1BzZXVkb0VsZW1lbnRSZWdpb24oKSBjb25zdCB7IHJldHVybiBwYXJlbnQoKSAmJiBwYXJlbnQo
KS0+aXNQc2V1ZG9FbGVtZW50KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAppbmRleCBiMjdkOTEwZjBiZDVlMGE4YjM2YTAyMDY3OWQyYWZlYWMxZGMyYmY0
Li5mYjlmZThmYTNkNDA2ZDk0Y2QyNDFmMDFjNTkyMDRjOTFkMjVjOTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg1MSwzNiArMTg1MSwzNiBAQCBG
bG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmIGxvY2FsUG9pbnQsIGNvbgogICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxh
bmFyUG9pbnQoKTsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERl
cGVuZHNPblBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21D
b250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYsIGJv
b2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAogewotICAgIEFTU0VSVChvID09IGNvbnRh
aW5lcigpKTsKKyAgICBBU1NFUlQoJmNvbnRhaW5lciA9PSB0aGlzLT5jb250YWluZXIoKSk7CiAK
ICAgICBMYXlvdXRTaXplIG9mZnNldDsKLSAgICBpZiAoby0+aXNCb3goKSkKLSAgICAgICAgb2Zm
c2V0IC09IHRvUmVuZGVyQm94KG8pLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKKyAgICBpZiAo
aXM8UmVuZGVyQm94Pihjb250YWluZXIpKQorICAgICAgICBvZmZzZXQgLT0gZG93bmNhc3Q8UmVu
ZGVyQm94Pihjb250YWluZXIpLnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwogCiAgICAgaWYgKG9m
ZnNldERlcGVuZHNPblBvaW50KQotICAgICAgICAqb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBvLT5p
c1JlbmRlckZsb3dUaHJlYWQoKTsKKyAgICAgICAgKm9mZnNldERlcGVuZHNPblBvaW50ID0gaXM8
UmVuZGVyRmxvd1RocmVhZD4oY29udGFpbmVyKTsKIAogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAK
LUxheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoUmVu
ZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lcikgY29uc3QK
IHsKICAgICBMYXlvdXRTaXplIG9mZnNldDsKICAgICBMYXlvdXRQb2ludCByZWZlcmVuY2VQb2lu
dDsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnJDb250YWluZXIgPSB0aGlzOwogICAgIGRv
IHsKLSAgICAgICAgYXV0byBuZXh0Q29udGFpbmVyID0gY3VyckNvbnRhaW5lci0+Y29udGFpbmVy
KCk7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIG5leHRDb250YWluZXIgPSBjdXJyQ29udGFpbmVy
LT5jb250YWluZXIoKTsKICAgICAgICAgQVNTRVJUKG5leHRDb250YWluZXIpOyAgLy8gVGhpcyBt
ZWFucyB3ZSByZWFjaGVkIHRoZSB0b3Agd2l0aG91dCBmaW5kaW5nIGNvbnRhaW5lci4KICAgICAg
ICAgaWYgKCFuZXh0Q29udGFpbmVyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIEFTU0VS
VCghY3VyckNvbnRhaW5lci0+aGFzVHJhbnNmb3JtKCkpOwotICAgICAgICBMYXlvdXRTaXplIGN1
cnJlbnRPZmZzZXQgPSBjdXJyQ29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250
YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKKyAgICAgICAgTGF5b3V0U2l6ZSBjdXJyZW50T2Zmc2V0
ID0gY3VyckNvbnRhaW5lci0+b2Zmc2V0RnJvbUNvbnRhaW5lcigqbmV4dENvbnRhaW5lciwgcmVm
ZXJlbmNlUG9pbnQpOwogICAgICAgICBvZmZzZXQgKz0gY3VycmVudE9mZnNldDsKICAgICAgICAg
cmVmZXJlbmNlUG9pbnQubW92ZShjdXJyZW50T2Zmc2V0KTsKICAgICAgICAgY3VyckNvbnRhaW5l
ciA9IG5leHRDb250YWluZXI7Ci0gICAgfSB3aGlsZSAoY3VyckNvbnRhaW5lciAhPSBjb250YWlu
ZXIpOworICAgIH0gd2hpbGUgKGN1cnJDb250YWluZXIgIT0gJmNvbnRhaW5lcik7CiAKICAgICBy
ZXR1cm4gb2Zmc2V0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmlu
ZGV4IDQ0MjMyZmEzNjRiZTkzNzJiYjI4NTkwNzE3MWFjYjA3NTJkOTA5NjkuLjVlNTQ0MzQwMzc2
NjMzMGZhYjBhYjJmY2RlYjEzMTZlNTU1YmYzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKQEAgLTY4NCw5ICs2ODQsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1
cm4gdGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRy
YW5zZm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZz
ZXRzIGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQg
YXBwbGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNl
dEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBv
ZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJv
b2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Q7CiAgICAgLy8gUmV0dXJuIHRoZSBv
ZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRo
YXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgotICAg
IExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCopIGNv
bnN0OworICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlckVs
ZW1lbnQmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKaW5kZXggOTJhZWU5MGEzMDEwNWUyNTMzMTAxOGRlMDcwYzkyYTVhMmEyM2Q0Mi4uMTI4
MjA4OWE4YzdlNDY1NDRiMTAwMWI1M2QxMTY4MzYzNDM3YWEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTMxOSwxMSArMzE5LDExIEBAIHZv
aWQgUmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0RnJvbVJv
d0hlaWdodChMYXlvdXRVbml0IHJvCiAgICAgc2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdo
dChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCByb3dIZWlnaHQgLSBib3JkZXJBbmRQYWRkaW5nTG9n
aWNhbEhlaWdodCgpKSk7CiB9CiAKLUxheW91dFNpemUgUmVuZGVyVGFibGVDZWxsOjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBi
b29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKK0xheW91dFNpemUgUmVuZGVyVGFibGVD
ZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKIHsK
LSAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7CisgICAgQVNTRVJUKCZjb250YWluZXIgPT0g
dGhpcy0+Y29udGFpbmVyKCkpOwogCi0gICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBSZW5kZXJCbG9j
a0Zsb3c6Om9mZnNldEZyb21Db250YWluZXIobywgcG9pbnQsIG9mZnNldERlcGVuZHNPblBvaW50
KTsKKyAgICBMYXlvdXRTaXplIG9mZnNldCA9IFJlbmRlckJsb2NrRmxvdzo6b2Zmc2V0RnJvbUNv
bnRhaW5lcihjb250YWluZXIsIHBvaW50LCBvZmZzZXREZXBlbmRzT25Qb2ludCk7CiAgICAgaWYg
KHBhcmVudCgpKQogICAgICAgICBvZmZzZXQgLT0gcGFyZW50Qm94KCktPmxvY2F0aW9uT2Zmc2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCAy
MmY4NmRjOWEwMmU4Y2Q5NjU3OTk3NWI0NmRkODU3OWVhZWI1MWM3Li41NWMyZTA2YzZkNDRmOTY5
ODFiNDdkNjYzN2M4NjVlODcwYjRiMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oCkBAIC0yMzQsNyArMjM0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBM
YXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxl
bWVudCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAw
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDZmZDU2NmE4OTU5NTJiZDE3
ZWQ3MmQ1YzhlNDk3NmY5YjlhNTkxN2EuLjY3NzMxYjRmZjc2NWQ1M2YwYzBmMTk4ZjVhYjBjMTNm
MmRhZDI1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
QEAgLTY4MSw3ICs2ODEsOCBAQCBGbG9hdFJlY3QgUmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRUb1Bh
aW50aW5nUmVjdChjb25zdCBSZW5kZXJPYmplY3QmIGlucHV0UmVuZGVyZQogICAgIGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSAmcGFydFJlbmRlcmVyOwogICAgIHdoaWxlIChyZW5kZXJl
ciAmJiByZW5kZXJlciAhPSAmaW5wdXRSZW5kZXJlcikgewogICAgICAgICBSZW5kZXJFbGVtZW50
KiBjb250YWluaW5nUmVuZGVyZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7Ci0gICAgICAgIG9m
ZnNldEZyb21JbnB1dFJlbmRlcmVyIC09IHJvdW5kZWRJbnRTaXplKHJlbmRlcmVyLT5vZmZzZXRG
cm9tQ29udGFpbmVyKGNvbnRhaW5pbmdSZW5kZXJlciwgTGF5b3V0UG9pbnQoKSkpOworICAgICAg
ICBBU1NFUlQoY29udGFpbmluZ1JlbmRlcmVyKTsKKyAgICAgICAgb2Zmc2V0RnJvbUlucHV0UmVu
ZGVyZXIgLT0gcm91bmRlZEludFNpemUocmVuZGVyZXItPm9mZnNldEZyb21Db250YWluZXIoKmNv
bnRhaW5pbmdSZW5kZXJlciwgTGF5b3V0UG9pbnQoKSkpOwogICAgICAgICByZW5kZXJlciA9IGNv
bnRhaW5pbmdSZW5kZXJlcjsKICAgICB9CiAgICAgLy8gSWYgdGhlIGlucHV0IHJlbmRlcmVyIHdh
cyBub3QgYSBjb250YWluZXIsIHNvbWV0aGluZyB3ZW50IHdyb25nCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>