<?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>164854</bug_id>
          
          <creation_ts>2016-11-16 20:03:31 -0800</creation_ts>
          <short_desc>Add Node::isDescendantOf() overload that takes in a reference</short_desc>
          <delta_ts>2016-11-16 22:24:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit 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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252187</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-16 20:03:31 -0800</bug_when>
    <thetext>Add Node::isDescendantOf() overload that takes in a reference as a lot of call sites have a reference or a pointer they know is not null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252188</commentid>
    <comment_count>1</comment_count>
      <attachid>295021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-16 20:05:57 -0800</bug_when>
    <thetext>Created attachment 295021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252212</commentid>
    <comment_count>2</comment_count>
      <attachid>295021</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-16 22:24:19 -0800</bug_when>
    <thetext>Comment on attachment 295021
Patch

Clearing flags on attachment: 295021

Committed r208839: &lt;http://trac.webkit.org/changeset/208839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252213</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-16 22:24:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295021</attachid>
            <date>2016-11-16 20:05:57 -0800</date>
            <delta_ts>2016-11-16 22:24:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164854-20161116200552.patch</filename>
            <type>text/plain</type>
            <size>35138</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBmZjIyMjk0YjJkMjFm
Yjc3NTBiOTkwYThmN2ZkYjAxOGQ1ZDg5MS4uNTc4MGFkNjM5ZjcyYTcwYmZjMDFmYTBjMmUzMzgy
MmY4NDkyMWYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc2IEBACiAyMDE2LTExLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIE5vZGU6OmlzRGVzY2Vu
ZGFudE9mKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBhIHJlZmVyZW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIE5vZGU6OmlzRGVzY2VuZGFu
dE9mKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBhIHJlZmVyZW5jZSBhcyBhIGxvdAorICAgICAg
ICBvZiBjYWxsIHNpdGVzIGhhdmUgYSByZWZlcmVuY2Ugb3IgYSBwb2ludGVyIHRoZXkga25vdyBp
cyBub3QgbnVsbC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIFdlYi1leHBvc2VkIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmVzcyk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZUluU3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlRnVsbFNjcmVlbkVsZW1l
bnRPZlN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEFuaW1hdGluZ0Z1
bGxTY3JlZW4pOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmlzRGVzY2VuZGFudE9mKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFu
dE9yU2hhZG93RGVzY2VuZGFudE9mKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnRhaW5z
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEZXNj
ZW5kYW50T2YpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbCk6CisgICAgICAgICogZG9t
L1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6
ZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJS
b290QnlJZCk6CisgICAgICAgICogZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRl
cjxFbGVtZW50VHlwZT46OmJlZ2luQXQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1l
bnRUeXBlPjo6YmVnaW5BdCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAg
ICAgICAqIGVkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kOjpjbG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudCk6CisgICAgICAgICogZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlU
YWJsZVJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKToKKyAgICAgICAg
KiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
YXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVy
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAg
ICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVQb3NpdGlvbjo6aG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6aG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQWZ0ZXIp
OgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Zmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpsYXN0RWRpdGFibGVQb3NpdGlvbkJlZm9yZVBvc2l0aW9uSW5Sb290KToKKyAgICAgICAg
KFdlYkNvcmU6OnNlbGVjdGlvbkZvclBhcmFncmFwaEl0ZXJhdGlvbik6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAgKiBodG1sL0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFt
ZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXgpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdENvbnRleHR1YWxXb3JkT3JMaW5rRnJvbU1vdXNlRXZlbnQp
OgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NWR0VsZW1lbnQ6OmdldEVsZW1lbnRCeUlkKToKKworMjAxNi0xMS0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gVHJl
ZVNjb3BlIC8gVHJlZVNjb3BlQWRvcHRlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODM2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDlhNTU1YTQzNGI5ZGVmYjY2
NTc5ZTk1MGNjMmEzNzFlMGE2MjUyMGEuLmE2YWNmNTBmYjZjODdhMjk5ZGM3Mjk0NWNkMjZkYzYw
NGM4NTkwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtOTExLDExICs5MTEsMTIgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpwcmVzcygpCiAgICAgCiAgICAgLy8gUHJlZmVyIHRoZSBhY3Rpb25FbGVtZW50
IGluc3RlYWQgb2YgdGhpcyBub2RlLCBpZiB0aGUgYWN0aW9uRWxlbWVudCBpcyBpbnNpZGUgdGhp
cyBub2RlLgogICAgIEVsZW1lbnQqIHByZXNzRWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKLSAg
ICBpZiAoIXByZXNzRWxlbWVudCB8fCBhY3Rpb25FbGVtLT5pc0Rlc2NlbmRhbnRPZihwcmVzc0Vs
ZW1lbnQpKQorICAgIGlmICghcHJlc3NFbGVtZW50IHx8IGFjdGlvbkVsZW0tPmlzRGVzY2VuZGFu
dE9mKCpwcmVzc0VsZW1lbnQpKQogICAgICAgICBwcmVzc0VsZW1lbnQgPSBhY3Rpb25FbGVtOwog
ICAgIAorICAgIEFTU0VSVChwcmVzc0VsZW1lbnQpOwogICAgIC8vIFByZWZlciB0aGUgaGl0IHRl
c3QgZWxlbWVudCwgaWYgaXQgaXMgaW5zaWRlIHRoZSB0YXJnZXQgZWxlbWVudC4KLSAgICBpZiAo
aGl0VGVzdEVsZW1lbnQgJiYgaGl0VGVzdEVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKHByZXNzRWxl
bWVudCkpCisgICAgaWYgKGhpdFRlc3RFbGVtZW50ICYmIGhpdFRlc3RFbGVtZW50LT5pc0Rlc2Nl
bmRhbnRPZigqcHJlc3NFbGVtZW50KSkKICAgICAgICAgcHJlc3NFbGVtZW50ID0gaGl0VGVzdEVs
ZW1lbnQ7CiAgICAgCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUsIGRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGU3M2MwYmYwMjM4ZjAwNmFmZDMxMmU5YTcyNjNiZWVmOThiZGIyYzMuLmVmMTI2YmM5N2M0
YjAyMzM4ZTY4Njg1ZGI2ZDQwZTA4ZjljYTRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMzUzNCw5ICszNTM0LDkgQEAgdm9pZCBEb2N1bWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKQogc3RhdGljIGJvb2wgaXNOb2RlSW5TdWJ0cmVlKE5vZGUmIG5vZGUsIE5vZGUmIGNvbnRh
aW5lciwgYm9vbCBhbW9uZ0NoaWxkcmVuT25seSkKIHsKICAgICBpZiAoYW1vbmdDaGlsZHJlbk9u
bHkpCi0gICAgICAgIHJldHVybiBub2RlLmlzRGVzY2VuZGFudE9mKCZjb250YWluZXIpOworICAg
ICAgICByZXR1cm4gbm9kZS5pc0Rlc2NlbmRhbnRPZihjb250YWluZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICZub2RlID09ICZjb250YWluZXIgfHwgbm9kZS5pc0Rlc2NlbmRhbnRPZigm
Y29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuICZub2RlID09ICZjb250YWluZXIgfHwgbm9kZS5p
c0Rlc2NlbmRhbnRPZihjb250YWluZXIpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVGb2N1
c2VkTm9kZU9mU3VidHJlZShOb2RlJiBub2RlLCBib29sIGFtb25nQ2hpbGRyZW5Pbmx5KQpAQCAt
NTk2Myw5ICs1OTYzLDkgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRP
ZlN1YnRyZWUoTm9kZSYgbm9kZSwgYm9vbCBhbW9uZ0NoaWxkcmVuT24KICAgICAKICAgICBib29s
IGVsZW1lbnRJblN1YnRyZWUgPSBmYWxzZTsKICAgICBpZiAoYW1vbmdDaGlsZHJlbk9ubHkpCi0g
ICAgICAgIGVsZW1lbnRJblN1YnRyZWUgPSBtX2Z1bGxTY3JlZW5FbGVtZW50LT5pc0Rlc2NlbmRh
bnRPZigmbm9kZSk7CisgICAgICAgIGVsZW1lbnRJblN1YnRyZWUgPSBtX2Z1bGxTY3JlZW5FbGVt
ZW50LT5pc0Rlc2NlbmRhbnRPZihub2RlKTsKICAgICBlbHNlCi0gICAgICAgIGVsZW1lbnRJblN1
YnRyZWUgPSAobV9mdWxsU2NyZWVuRWxlbWVudCA9PSAmbm9kZSkgfHwgbV9mdWxsU2NyZWVuRWxl
bWVudC0+aXNEZXNjZW5kYW50T2YoJm5vZGUpOworICAgICAgICBlbGVtZW50SW5TdWJ0cmVlID0g
KG1fZnVsbFNjcmVlbkVsZW1lbnQgPT0gJm5vZGUpIHx8IG1fZnVsbFNjcmVlbkVsZW1lbnQtPmlz
RGVzY2VuZGFudE9mKG5vZGUpOwogICAgIAogICAgIGlmIChlbGVtZW50SW5TdWJ0cmVlKQogICAg
ICAgICBmdWxsU2NyZWVuRWxlbWVudFJlbW92ZWQoKTsKQEAgLTU5ODIsNyArNTk4Miw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBmbGFnKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9pc0FuaW1hdGluZ0Z1bGxTY3JlZW4gPSBmbGFnOwogCi0gICAgaWYgKG1f
ZnVsbFNjcmVlbkVsZW1lbnQgJiYgbV9mdWxsU2NyZWVuRWxlbWVudC0+aXNEZXNjZW5kYW50T2Yo
dGhpcykpIHsKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCAmJiBtX2Z1bGxTY3JlZW5FbGVt
ZW50LT5pc0Rlc2NlbmRhbnRPZigqdGhpcykpIHsKICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVu
dC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgICAgICBzY2hlZHVsZUZvcmNlZFN0
eWxlUmVjYWxjKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGU0ZTgwZGViNzkyMTNlODA0
NWM4NDNiYmYyZDAyNjU2ZmQ4OTdhYzQuLmMxZGZmM2FkMTExNjU5YmRiYWFlMTQwMWQwYTQyMjQ5
NzAxMTcxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTkxMiwxNSArOTEyLDE1IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE5vZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
KQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgTm9kZTo6aXNEZXNjZW5kYW50T2YoY29uc3Qg
Tm9kZSogb3RoZXIpIGNvbnN0Citib29sIE5vZGU6OmlzRGVzY2VuZGFudE9mKGNvbnN0IE5vZGUm
IG90aGVyKSBjb25zdAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIG90aGVyIGlzIGFuIGFuY2Vz
dG9yIG9mIHRoaXMsIG90aGVyd2lzZSBmYWxzZQotICAgIGlmICghb3RoZXIgfHwgIW90aGVyLT5o
YXNDaGlsZE5vZGVzKCkgfHwgaW5Eb2N1bWVudCgpICE9IG90aGVyLT5pbkRvY3VtZW50KCkpCisg
ICAgaWYgKCFvdGhlci5oYXNDaGlsZE5vZGVzKCkgfHwgaW5Eb2N1bWVudCgpICE9IG90aGVyLmlu
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChvdGhlci0+aXNEb2N1
bWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuICZkb2N1bWVudCgpID09IG90aGVyICYmICFpc0Rv
Y3VtZW50Tm9kZSgpICYmIGluRG9jdW1lbnQoKTsKLSAgICBmb3IgKGNvbnN0IENvbnRhaW5lck5v
ZGUqIG4gPSBwYXJlbnROb2RlKCk7IG47IG4gPSBuLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAg
aWYgKG4gPT0gb3RoZXIpCisgICAgaWYgKG90aGVyLmlzRG9jdW1lbnROb2RlKCkpCisgICAgICAg
IHJldHVybiAmZG9jdW1lbnQoKSA9PSAmb3RoZXIgJiYgIWlzRG9jdW1lbnROb2RlKCkgJiYgaW5E
b2N1bWVudCgpOworICAgIGZvciAoY29uc3QgYXV0byogYW5jZXN0b3IgPSBwYXJlbnROb2RlKCk7
IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAg
aWYgKGFuY2VzdG9yID09ICZvdGhlcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CkBAIC05MzAsMTkgKzkzMCwxOSBAQCBib29sIE5vZGU6OmlzRGVz
Y2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKGNvbnN0IE5vZGUqIG90aGVyKSBjb25zdAogewog
ICAgIGlmICghb3RoZXIpIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGlzRGVzY2Vu
ZGFudE9mKG90aGVyKSkKKyAgICBpZiAoaXNEZXNjZW5kYW50T2YoKm90aGVyKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgY29uc3QgTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlID0gZGVwcmVj
YXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIGlmICghc2hhZG93QW5jZXN0b3JOb2RlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHNoYWRvd0FuY2VzdG9yTm9kZSA9PSBv
dGhlciB8fCBzaGFkb3dBbmNlc3Rvck5vZGUtPmlzRGVzY2VuZGFudE9mKG90aGVyKTsKKyAgICBy
ZXR1cm4gc2hhZG93QW5jZXN0b3JOb2RlID09IG90aGVyIHx8IHNoYWRvd0FuY2VzdG9yTm9kZS0+
aXNEZXNjZW5kYW50T2YoKm90aGVyKTsKIH0KIAogYm9vbCBOb2RlOjpjb250YWlucyhjb25zdCBO
b2RlKiBub2RlKSBjb25zdAogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiB0aGlzID09IG5vZGUgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2YodGhpcyk7
CisgICAgcmV0dXJuIHRoaXMgPT0gbm9kZSB8fCBub2RlLT5pc0Rlc2NlbmRhbnRPZigqdGhpcyk7
CiB9CiAKIGJvb2wgTm9kZTo6Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29uc3QgTm9kZSog
bm9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGQzMTEyZjU3NjY5OGQ4ODZhMGI0ZTllMTg4NjY3
OTE4MTk3OThhMzQuLmU2ZTQ5NGI4MzIxZTk2ZTBhNmEzZTg4YmVmMWVlYWI4YmQyYWNkNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMzg2LDcgKzM4Niw5IEBAIHB1YmxpYzoKIAogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSopIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSogb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyICYmIGlzRGVzY2VuZGFudE9mKCpvdGhlcik7IH0KKwog
ICAgIGJvb2wgaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoY29uc3QgTm9kZSopIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0
OwogICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29uc3QgTm9kZSopIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAppbmRleCA1ZTdhNGIzNTdjOTczMWZlODI2
NWMwNGE0M2RkZTAxODI0YjdkMTg3Li5jZDY5NTdhMWUwMTI4MTFiM2NhMjk3MzYxMDc2ZDc5Y2Jl
M2ZiMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcApAQCAtMTQzLDEwICsxNDMs
MTAgQEAgdm9pZCBOb2RlSXRlcmF0b3I6OnVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIHJlbW92
ZWROb2RlLCBOb2RlUG9pbnRlciYgcmVmZXJlbmMKIAogICAgIC8vIEl0ZXJhdG9yIGlzIG5vdCBh
ZmZlY3RlZCBpZiB0aGUgcmVtb3ZlZCBub2RlIGlzIHRoZSByZWZlcmVuY2Ugbm9kZSBhbmQgaXMg
dGhlIHJvb3QuCiAgICAgLy8gb3IgaWYgcmVtb3ZlZCBub2RlIGlzIG5vdCB0aGUgcmVmZXJlbmNl
IG5vZGUsIG9yIHRoZSBhbmNlc3RvciBvZiB0aGUgcmVmZXJlbmNlIG5vZGUuCi0gICAgaWYgKCFy
ZW1vdmVkTm9kZS5pc0Rlc2NlbmRhbnRPZigmcm9vdCgpKSkKKyAgICBpZiAoIXJlbW92ZWROb2Rl
LmlzRGVzY2VuZGFudE9mKHJvb3QoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBib29sIHdpbGxS
ZW1vdmVSZWZlcmVuY2VOb2RlID0gJnJlbW92ZWROb2RlID09IHJlZmVyZW5jZU5vZGUubm9kZTsK
LSAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IgPSByZWZlcmVuY2VOb2Rl
Lm5vZGUgJiYgcmVmZXJlbmNlTm9kZS5ub2RlLT5pc0Rlc2NlbmRhbnRPZigmcmVtb3ZlZE5vZGUp
OworICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGVBbmNlc3RvciA9IHJlZmVyZW5jZU5v
ZGUubm9kZSAmJiByZWZlcmVuY2VOb2RlLm5vZGUtPmlzRGVzY2VuZGFudE9mKHJlbW92ZWROb2Rl
KTsKICAgICBpZiAoIXdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlICYmICF3aWxsUmVtb3ZlUmVmZXJl
bmNlTm9kZUFuY2VzdG9yKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2
b2lkIE5vZGVJdGVyYXRvcjo6dXBkYXRlRm9yTm9kZVJlbW92YWwoTm9kZSYgcmVtb3ZlZE5vZGUs
IE5vZGVQb2ludGVyJiByZWZlcmVuYwogICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAg
Ly8gTW92ZSBvdXQgZnJvbSB1bmRlciB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGlmIHRoZSBuZXcg
cmVmZXJlbmNlCiAgICAgICAgICAgICAvLyBub2RlIGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgbm9k
ZSBiZWluZyByZW1vdmVkLgotICAgICAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNEZXNj
ZW5kYW50T2YoJnJlbW92ZWROb2RlKSkKKyAgICAgICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUt
PmlzRGVzY2VuZGFudE9mKHJlbW92ZWROb2RlKSkKICAgICAgICAgICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgJnJvb3QoKSk7CiAgICAgICAgICAgICBpZiAobm9kZSkK
ICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLm5vZGUgPSBub2RlOwpAQCAtMTgzLDcgKzE4
Myw3IEBAIHZvaWQgTm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChOb2RlJiByZW1v
dmVkTm9kZSwgTm9kZVBvaW50ZXImIHJlZmVyZW5jCiAgICAgICAgICAgICAvLyBNb3ZlIG91dCBm
cm9tIHVuZGVyIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQgaWYgdGhlIHJlZmVyZW5jZSBub2RlIGlz
CiAgICAgICAgICAgICAvLyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZC4K
ICAgICAgICAgICAgIGlmICh3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9yKSB7Ci0gICAg
ICAgICAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNEZXNjZW5kYW50T2YoJnJlbW92ZWRO
b2RlKSkKKyAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0Rlc2NlbmRhbnRP
ZihyZW1vdmVkTm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpwcmV2aW91cygqbm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZSkK
QEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIE5vZGVJdGVyYXRvcjo6dXBkYXRlRm9yTm9kZVJlbW92
YWwoTm9kZSYgcmVtb3ZlZE5vZGUsIE5vZGVQb2ludGVyJiByZWZlcmVuYwogICAgICAgICAgICAg
Ly8gTW92ZSBvdXQgZnJvbSB1bmRlciB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGlmIHRoZSByZWZl
cmVuY2Ugbm9kZSBpcwogICAgICAgICAgICAgLy8gYSBkZXNjZW5kYW50IG9mIHRoZSBub2RlIGJl
aW5nIHJlbW92ZWQuCiAgICAgICAgICAgICBpZiAod2lsbFJlbW92ZVJlZmVyZW5jZU5vZGVBbmNl
c3RvcikgewotICAgICAgICAgICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUtPmlzRGVzY2VuZGFu
dE9mKCZyZW1vdmVkTm9kZSkpCisgICAgICAgICAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+
aXNEZXNjZW5kYW50T2YocmVtb3ZlZE5vZGUpKQogICAgICAgICAgICAgICAgICAgICBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoKm5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMWQ4NzM1
ZGFiYTJjMWFjOWNmMGI0NzE4NTBjY2Q1MzRiNzIwMzBjOC4uNDhhOTdjNmJjOTdhNmU3NTAyNTEy
ODQ1MGRmODUwNTNmYjdjYzQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApA
QCAtMjI4LDcgKzIyOCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0Ojpl
eGVjdXRlRmFzdFBhdGhGb3JJZFNlbGVjdG9yKGNvbnN0IENvbnRhaW5lCiAgICAgICAgIEFTU0VS
VChlbGVtZW50cyk7CiAgICAgICAgIGJvb2wgcm9vdE5vZGVJc1RyZWVTY29wZVJvb3QgPSBpc1Ry
ZWVTY29wZVJvb3Qocm9vdE5vZGUpOwogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiAqZWxl
bWVudHMpIHsKLSAgICAgICAgICAgIGlmICgocm9vdE5vZGVJc1RyZWVTY29wZVJvb3QgfHwgZWxl
bWVudC0+aXNEZXNjZW5kYW50T2YoJnJvb3ROb2RlKSkgJiYgc2VsZWN0b3JNYXRjaGVzKHNlbGVj
dG9yRGF0YSwgKmVsZW1lbnQsIHJvb3ROb2RlKSkgeworICAgICAgICAgICAgaWYgKChyb290Tm9k
ZUlzVHJlZVNjb3BlUm9vdCB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihyb290Tm9kZSkpICYm
IHNlbGVjdG9yTWF0Y2hlcyhzZWxlY3RvckRhdGEsICplbGVtZW50LCByb290Tm9kZSkpIHsKICAg
ICAgICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQo
b3V0cHV0LCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0
OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTIzOCw3ICsyMzgsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlz
dDo6ZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxlY3Rvcihjb25zdCBDb250YWluZQogICAgIH0KIAog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByb290Tm9kZS50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJ
ZChpZFRvTWF0Y2gpOwotICAgIGlmICghZWxlbWVudCB8fCAhKGlzVHJlZVNjb3BlUm9vdChyb290
Tm9kZSkgfHwgZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoJnJvb3ROb2RlKSkpCisgICAgaWYgKCFl
bGVtZW50IHx8ICEoaXNUcmVlU2NvcGVSb290KHJvb3ROb2RlKSB8fCBlbGVtZW50LT5pc0Rlc2Nl
bmRhbnRPZihyb290Tm9kZSkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHNlbGVjdG9yTWF0
Y2hlcyhzZWxlY3RvckRhdGEsICplbGVtZW50LCByb290Tm9kZSkpCiAgICAgICAgIFNlbGVjdG9y
UXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsIGVsZW1lbnQpOwpAQCAt
MjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBDb250YWluZXJOb2RlJiBmaWx0ZXJSb290QnlJZChDb250
YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3ImCiAgICAgICAgICAgICAgICAg
aWYgKExJS0VMWSghcm9vdE5vZGUudHJlZVNjb3BlKCkuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRz
V2l0aElkKGlkVG9NYXRjaCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbkFkamFjZW50
Q2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hSb290ID0gc2VhcmNoUm9vdC0+
cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoUm9vdCAmJiAoaXNU
cmVlU2NvcGVSb290KHJvb3ROb2RlKSB8fCBzZWFyY2hSb290ID09ICZyb290Tm9kZSB8fCBzZWFy
Y2hSb290LT5pc0Rlc2NlbmRhbnRPZigmcm9vdE5vZGUpKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHNlYXJjaFJvb3QgJiYgKGlzVHJlZVNjb3BlUm9vdChyb290Tm9kZSkgfHwgc2VhcmNoUm9v
dCA9PSAmcm9vdE5vZGUgfHwgc2VhcmNoUm9vdC0+aXNEZXNjZW5kYW50T2Yocm9vdE5vZGUpKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAqc2VhcmNoUm9vdDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggODUzYWYyYjkxMDMzYzNiNmM3YmNmYmVk
ZjIwODJlOTFiOWU4MDg1NC4uOWYzNTkzNWQ5NmM3OWU3NWI2OGQzMGMyOGNiZTNjNWEwNDNmMDMz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IuaApAQCAtMTc4LDE0ICsxNzgsMTQgQEAgaW5saW5lIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG8K
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbkF0KEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KQog
ewotICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKKyAgICBB
U1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKICAgICByZXR1cm4gVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsICZkZXNjZW5k
YW50KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFu
dCkKIHsKLSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZigmbV9yb290KSk7Cisg
ICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9yb290KSk7CiAgICAgaWYgKGlz
PEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKICAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlw
ZT4oJmRlc2NlbmRhbnQpKTsKICAgICBFbGVtZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHQoZGVzY2VuZGFudCwgJm1fcm9vdCk7CkBAIC0yMjcsMTQgKzIyNywxNCBA
QCBpbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRDbwogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgogaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
OjpiZWdpbkF0KGNvbnN0IEVsZW1lbnRUeXBlJiBkZXNjZW5kYW50KSBjb25zdAogewotICAgIEFT
U0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKKyAgICBBU1NFUlQoZGVz
Y2VuZGFudC5pc0Rlc2NlbmRhbnRPZihtX3Jvb3QpKTsKICAgICByZXR1cm4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgJmRlc2NlbmRhbnQp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgVHlwZWRFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oY29uc3QgRWxlbWVu
dCYgZGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRh
bnRPZigmbV9yb290KSk7CisgICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YobV9y
b290KSk7CiAgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKICAgICAgICAgcmV0
dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jv
b3QsIGRvd25jYXN0PEVsZW1lbnRUeXBlPigmZGVzY2VuZGFudCkpOwogICAgIGNvbnN0IEVsZW1l
bnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dChkZXNjZW5kYW50LCAm
bV9yb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggMjY2Y2Y2OTczYTMwM2ZkMWFlZGNhZTA0ZDJiMjgyODE0MzUyNjAzYS4uMzhlOTQwMTJh
NDY0YjExNjY5OTc5ODkxZWExMzBjYWM4Njg0MTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFwcGx5
U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSog
c3R5bGUpCiAgICAgTm9kZSogYmV5b25kRW5kOwogICAgIEFTU0VSVChzdGFydC5kZXByZWNhdGVk
Tm9kZSgpKTsKICAgICBBU1NFUlQoZW5kLmRlcHJlY2F0ZWROb2RlKCkpOwotICAgIGlmIChzdGFy
dC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihlbmQuZGVwcmVjYXRlZE5vZGUoKSkp
CisgICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKCplbmQuZGVw
cmVjYXRlZE5vZGUoKSkpCiAgICAgICAgIGJleW9uZEVuZCA9IE5vZGVUcmF2ZXJzYWw6Om5leHRT
a2lwcGluZ0NoaWxkcmVuKCplbmQuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgZWxzZQogICAgICAg
ICBiZXlvbmRFbmQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCplbmQuZGVwcmVjYXRlZE5vZGUoKSk7
CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVT
dHlsZVRvTm9kZVJhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSBwbGFpbnRleHQtb25seSByZWdpb24uIE9ubHkgcHJvY2VlZCBpZiBpdCdz
IGZ1bGx5IHNlbGVjdGVkLgogICAgICAgICAgICAgLy8gcGFzdEVuZE5vZGUgaXMgdGhlIG5vZGUg
YWZ0ZXIgdGhlIGxhc3QgZnVsbHkgc2VsZWN0ZWQgbm9kZSwgc28gaWYgaXQncyBpbnNpZGUgbm9k
ZSB0aGVuCiAgICAgICAgICAgICAvLyBub2RlIGlzbid0IGZ1bGx5IHNlbGVjdGVkLgotICAgICAg
ICAgICAgaWYgKHBhc3RFbmROb2RlICYmIHBhc3RFbmROb2RlLT5pc0Rlc2NlbmRhbnRPZihub2Rl
LmdldCgpKSkKKyAgICAgICAgICAgIGlmIChwYXN0RW5kTm9kZSAmJiBwYXN0RW5kTm9kZS0+aXNE
ZXNjZW5kYW50T2YoKm5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Ly8gQWRkIHRvIHRoaXMgZWxlbWVudCdzIGlubGluZSBzdHlsZSBhbmQgc2tpcCBvdmVyIGl0cyBj
b250ZW50cy4KICAgICAgICAgICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJl
YWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxv
Y2txdW90ZUNvbW1hbmQuY3BwCmluZGV4IDA5NDQ5N2YzNWYxMTlmYWM5MTAwMWRhYjE3MDc3ZmQy
YmE2NTliY2IuLmYxYWYyMGVmYjFiYWVjZjIzZjA1MTVkMzM1NGU1MjUwZTJiZjlkNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcApA
QCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgfQogICAgIAogICAgIC8vIElmIHRoZXJlJ3Mgbm90aGluZyBpbnNpZGUgdG9wQmxvY2tx
dW90ZSB0byBtb3ZlLCB3ZSdyZSBmaW5pc2hlZC4KLSAgICBpZiAoIXN0YXJ0Tm9kZS0+aXNEZXNj
ZW5kYW50T2YodG9wQmxvY2txdW90ZSkpIHsKKyAgICBpZiAoIXN0YXJ0Tm9kZS0+aXNEZXNjZW5k
YW50T2YoKnRvcEJsb2NrcXVvdGUpKSB7CiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
c3RhcnROb2RlKSksIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAppbmRleCA0ZjZhMzUyMTgyN2RhMWY4ZDg0OGM5Y2I1ODEwZDA3NjQxYjFk
MmZkLi5jZjU5ODA0NGE0M2ViNjI5OGU5YTFmYWNhNjg5YWYzY2Q1NTdmYTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTMwMSw3
ICsxMzAxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVQYXJhZ3JhcGhVbmRl
ck5ld0VsZW1lbnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LAogICAgICAgICAgICAgYXV0byBjbG9u
ZWROb2RlID0gbm9kZS0+Y2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgaW5zZXJ0Tm9kZUFm
dGVyKGNsb25lZE5vZGUucHRyKCksIGxhc3ROb2RlKTsKICAgICAgICAgICAgIGxhc3ROb2RlID0g
V1RGTW92ZShjbG9uZWROb2RlKTsKLSAgICAgICAgICAgIGlmIChub2RlID09IGVuZC5kZXByZWNh
dGVkTm9kZSgpIHx8IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihub2RlLmdl
dCgpKSkKKyAgICAgICAgICAgIGlmIChub2RlID09IGVuZC5kZXByZWNhdGVkTm9kZSgpIHx8IGVu
ZC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqbm9kZSkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA4YzE5NzkyZTE0YTQwYjVlMzhjMDA1
MGVlOTUyMDdiMGI1ZTEwODJiLi42NDNmMGI5ZTNhMzU3ZGI0ZTE5YjY2ODIwYzZkMDg1ZjZlOThj
MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgICAgICAgICAgaWYgKGNvbXBhcmVQb3NpdGlvbnMo
Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUuZ2V0KCkpLCBtX2Rvd25zdHJlYW1FbmQp
ID49IDApIHsKICAgICAgICAgICAgICAgICAvLyBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdD
aGlsZHJlbiBqdXN0IGJsZXcgcGFzdCB0aGUgZW5kIHBvc2l0aW9uLCBzbyBzdG9wIGRlbGV0aW5n
CiAgICAgICAgICAgICAgICAgbm9kZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KCFtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2Yobm9kZS5n
ZXQoKSkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fZG93bnN0cmVhbUVuZC5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqbm9kZSkpIHsKICAgICAgICAgICAgICAgICBSZWZQ
dHI8Tm9kZT4gbmV4dE5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigq
bm9kZSk7CiAgICAgICAgICAgICAgICAgLy8gaWYgd2UganVzdCByZW1vdmVkIGEgbm9kZSBmcm9t
IHRoZSBlbmQgY29udGFpbmVyLCB1cGRhdGUgZW5kIHBvc2l0aW9uIHNvIHRoZQogICAgICAgICAg
ICAgICAgIC8vIGNoZWNrIGFib3ZlIHdpbGwgd29yawpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQg
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlUYWJs
ZVJvd3MoKQogICAgIGlmIChtX2VuZFRhYmxlUm93ICYmIG1fZW5kVGFibGVSb3ctPmluRG9jdW1l
bnQoKSAmJiBtX2VuZFRhYmxlUm93ICE9IG1fc3RhcnRUYWJsZVJvdykKICAgICAgICAgaWYgKGlz
VGFibGVSb3dFbXB0eShtX2VuZFRhYmxlUm93LmdldCgpKSkgewogICAgICAgICAgICAgLy8gRG9u
J3QgcmVtb3ZlIG1fZW5kVGFibGVSb3cgaWYgaXQncyB3aGVyZSB3ZSdyZSBwdXR0aW5nIHRoZSBl
bmRpbmcgc2VsZWN0aW9uLgotICAgICAgICAgICAgaWYgKCFtX2VuZGluZ1Bvc2l0aW9uLmRlcHJl
Y2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKG1fZW5kVGFibGVSb3cuZ2V0KCkpKSB7CisgICAg
ICAgICAgICBpZiAoIW1fZW5kaW5nUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5k
YW50T2YoKm1fZW5kVGFibGVSb3cpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHBy
b2JhYmx5IHNob3VsZG4ndCByZW1vdmUgbV9lbmRUYWJsZVJvdyB1bmxlc3MgaXQncyBmdWxseSBz
ZWxlY3RlZCwgZXZlbiBpZiBpdCBpcyBlbXB0eS4KICAgICAgICAgICAgICAgICAvLyBXZSdsbCBu
ZWVkIHRvIHN0YXJ0IGFkanVzdGluZyB0aGUgc2VsZWN0aW9uIGVuZHBvaW50cyBkdXJpbmcgZGVs
ZXRpb24gdG8ga25vdyB3aGV0aGVyIG9yIG5vdCBtX2VuZFRhYmxlUm93CiAgICAgICAgICAgICAg
ICAgLy8gd2FzIGZ1bGx5IHNlbGVjdGVkIGhlcmUuCkBAIC04MjAsOSArODIwLDEwIEBAIHZvaWQg
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIERvbid0IG5lZWQg
YSBwbGFjZWhvbGRlciB3aGVuIGRlbGV0aW5nIGEgc2VsZWN0aW9uIHRoYXQgc3RhcnRzIGp1c3Qg
YmVmb3JlIGEgdGFibGUKICAgICAgICAgLy8gYW5kIGVuZHMgaW5zaWRlIGl0ICh3ZSBkbyBuZWVk
IHBsYWNlaG9sZGVycyB0byBob2xkIG9wZW4gZW1wdHkgY2VsbHMsIGJ1dCB0aGF0J3MKICAgICAg
ICAgLy8gaGFuZGxlZCBlbHNld2hlcmUpLgotICAgICAgICBpZiAoTm9kZSogdGFibGUgPSBpc0xh
c3RQb3NpdGlvbkJlZm9yZVRhYmxlKG1fc2VsZWN0aW9uVG9EZWxldGUudmlzaWJsZVN0YXJ0KCkp
KQotICAgICAgICAgICAgaWYgKG1fc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkuZGVwcmVjYXRlZE5v
ZGUoKS0+aXNEZXNjZW5kYW50T2YodGFibGUpKQorICAgICAgICBpZiAoYXV0byogdGFibGUgPSBp
c0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKG1fc2VsZWN0aW9uVG9EZWxldGUudmlzaWJsZVN0YXJ0
KCkpKSB7CisgICAgICAgICAgICBpZiAobV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqdGFibGUpKQogICAgICAgICAgICAgICAgIG1fbmVl
ZFBsYWNlaG9sZGVyID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAgICAgICAgIAogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDYyNGYzYWQxMTZjNGZk
M2UzMzRkZmE3NTkzYTg5ZjhiNDg4YmJlOGUuLjQ1MmE5MWE3ZDJmZjc0ODZiN2U3YTMwZmQ4MzQw
NjgxOWFiMTNlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAg
LTE1MzEsNyArMTUzMSw3IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGly
ZWN0aW9uRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgICAgICBy
ZXR1cm4gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb247CiAKICAgICAgICAgLy8gSW4gdGhlIHJhbmdl
IGNhc2UsIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbWJlZGRpbmcgZWxlbWVudCBwZXJzaXN0cyB1bnRp
bCB0aGUgZW5kIG9mIHRoZSByYW5nZS4KLSAgICAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkg
JiYgIWVuZC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihub2RlKSkKKyAgICAgICAg
aWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkgJiYgIWVuZC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2Nl
bmRhbnRPZigqbm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gTmF0dXJhbFdyaXRpbmdEaXJlY3Rp
b247CiAgICAgICAgIAogICAgICAgICBmb3VuZERpcmVjdGlvbiA9IGRpcmVjdGlvblZhbHVlID09
IENTU1ZhbHVlTHRyID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRX
cml0aW5nRGlyZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3Jt
YXRCbG9ja0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCmluZGV4IDdmMTI5OTJhYjc4Yjk2MmIxZTA3Njk5MjJjZTc2ZDkyOTY1YzYzZGIu
LmJiM2E1MWQ2ZWQ1OWJmOThmNGNkNWFmNGZiNGIyMzAzM2JhYzhmOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgUG9zaXRpb24mIGVuZCwKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1l
bnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAmJiBzdGFydCA9PSBzdGFydE9m
QmxvY2soc3RhcnQpCiAgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9k
ZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5nZSkpCi0gICAgICAgICYmIHJl
Zk5vZGUgIT0gcm9vdCAmJiAhcm9vdC0+aXNEZXNjZW5kYW50T2YocmVmTm9kZSkpIHsKKyAgICAg
ICAgJiYgcmVmTm9kZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkp
IHsKICAgICAgICAgLy8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRh
aW5zIHRoZSBjdXJyZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFt
ZSh0YWdOYW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCmluZGV4IDg3ZTQ3MDAyNjRiOWMyZGE5YmM1NTRlZTc1NDRiN2E4NTBi
MmI0ZjcuLmIwNTI2MmEyOThiMzIwOTg5MDdmNmEwMjAwZTEwZTliMTVkM2JkMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICAgICAgYm9vbCBwYXN0RW5kID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dCgqbV9ub2RlKSA9PSBtX3Bhc3RFbmROb2RlOwogICAgICAgICAg
ICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KTsKICAgICAgICAgICAgICAgICB3aGlsZSAoIW5leHQgJiYgcGFyZW50Tm9kZSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoKHBhc3RFbmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRhaW5l
cikgfHwgbV9lbmRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKHBhcmVudE5vZGUpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoKHBhc3RFbmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRhaW5l
cikgfHwgbV9lbmRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKCpwYXJlbnROb2RlKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXZl
UmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbm9k
ZSA9IHBhcmVudE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAKaW5kZXggOTNjNzI1NDI1YjQ2NWFlNGExZWFjZmU2ZWI3OGQ3NDA0ZGNkODYwZC4uODE5YTZk
M2Q3NWFlMWQzNTFiMDgyMThjOWI3YzQyODU2NTk1ODAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIFZpc2libGVQb3Np
dGlvbiBWaXNpYmxlUG9zaXRpb246Omhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShjb25z
dCBWaXNpYmxlUG9zCiAgICAgYXV0byogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290
KGRlZXBFcXVpdmFsZW50KCkpOwogICAgIAogICAgIC8vIFJldHVybiBlbXB0eSBwb3NpdGlvbiBp
ZiBwb3MgaXMgbm90IHNvbWV3aGVyZSBpbnNpZGUgdGhlIGVkaXRhYmxlIHJlZ2lvbiBjb250YWlu
aW5nIHRoaXMgcG9zaXRpb24KLSAgICBpZiAoaGlnaGVzdFJvb3QgJiYgIXBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3Qp
KSB7CisgICAgaWYgKGhpZ2hlc3RSb290ICYmICFwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKCpoaWdoZXN0Um9vdCkpIHsKICAgICAgICAg
aWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSB0cnVl
OwogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC01MDMsNyArNTAzLDcgQEAg
VmlzaWJsZVBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6aG9ub3JFZGl0aW5nQm91bmRhcnlBdE9y
QWZ0ZXIoY29uc3QgVmlzaWJsZVBvc2kKICAgICBhdXRvKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RF
ZGl0YWJsZVJvb3QoZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgCiAgICAgLy8gUmV0dXJuIGVtcHR5
IHBvc2l0aW9uIGlmIHBvcyBpcyBub3Qgc29tZXdoZXJlIGluc2lkZSB0aGUgZWRpdGFibGUgcmVn
aW9uIGNvbnRhaW5pbmcgdGhpcyBwb3NpdGlvbgotICAgIGlmIChoaWdoZXN0Um9vdCAmJiAhcG9z
LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaGlnaGVz
dFJvb3QpKSB7CisgICAgaWYgKGhpZ2hlc3RSb290ICYmICFwb3MuZGVlcEVxdWl2YWxlbnQoKS5k
ZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqaGlnaGVzdFJvb3QpKSB7CiAgICAgICAg
IGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcAppbmRleCAwNTA2ZDg2YzE5ZDU5MTBkMWVjNDBjOWYwMWEwMTA2NGVi
NTk2Mzg1Li41ZDg1NTczYzNkYWJjNDMwNjRmMjUwZTU1MjEyNDlmMGEzYjc4MDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtMjk5LDEwICsyOTksMTAgQEAgUG9z
aXRpb24gZmlyc3RFZGl0YWJsZVBvc2l0aW9uQWZ0ZXJQb3NpdGlvbkluUm9vdChjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24sIENvbnQKICAgICAgICAgY2FuZGlkYXRlID0gcG9zaXRpb25BZnRlck5v
ZGUoc2hhZG93QW5jZXN0b3IpOwogICAgIH0KIAotICAgIHdoaWxlIChjYW5kaWRhdGUuZGVwcmVj
YXRlZE5vZGUoKSAmJiAhaXNFZGl0YWJsZVBvc2l0aW9uKGNhbmRpZGF0ZSkgJiYgY2FuZGlkYXRl
LmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKGhpZ2hlc3RSb290KSkKKyAgICB3aGls
ZSAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgIWlzRWRpdGFibGVQb3NpdGlvbihjYW5k
aWRhdGUpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqaGln
aGVzdFJvb3QpKQogICAgICAgICBjYW5kaWRhdGUgPSBpc0F0b21pY05vZGUoY2FuZGlkYXRlLmRl
cHJlY2F0ZWROb2RlKCkpID8gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShjYW5kaWRhdGUuZGVw
cmVjYXRlZE5vZGUoKSkgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShjYW5kaWRhdGUp
OwogCi0gICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXBy
ZWNhdGVkTm9kZSgpICE9IGhpZ2hlc3RSb290ICYmICFjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUo
KS0+aXNEZXNjZW5kYW50T2YoaGlnaGVzdFJvb3QpKQorICAgIGlmIChjYW5kaWRhdGUuZGVwcmVj
YXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAhPSBoaWdoZXN0Um9vdCAm
JiAhY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKCpoaWdoZXN0Um9v
dCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY2FuZGlkYXRlOwpAQCAtMzI3
LDEwICszMjcsMTAgQEAgUG9zaXRpb24gbGFzdEVkaXRhYmxlUG9zaXRpb25CZWZvcmVQb3NpdGlv
bkluUm9vdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIENvbnQKICAgICAgICAgY2FuZGlkYXRl
ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHNoYWRvd0FuY2VzdG9yKTsKICAgICB9CiAK
LSAgICB3aGlsZSAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgIWlzRWRpdGFibGVQb3Np
dGlvbihjYW5kaWRhdGUpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRh
bnRPZihoaWdoZXN0Um9vdCkpCisgICAgd2hpbGUgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgp
ICYmICFpc0VkaXRhYmxlUG9zaXRpb24oY2FuZGlkYXRlKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRl
ZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoKmhpZ2hlc3RSb290KSkKICAgICAgICAgY2FuZGlkYXRl
ID0gaXNBdG9taWNOb2RlKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpKSA/IHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpKSA6IHByZXZpb3VzVmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAgIAotICAgIGlmIChjYW5kaWRh
dGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAhPSBoaWdo
ZXN0Um9vdCAmJiAhY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKGhp
Z2hlc3RSb290KSkKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlk
YXRlLmRlcHJlY2F0ZWROb2RlKCkgIT0gaGlnaGVzdFJvb3QgJiYgIWNhbmRpZGF0ZS5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqaGlnaGVzdFJvb3QpKQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIAogICAgIHJldHVybiBjYW5kaWRhdGU7CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkZvclBhcmFncmFwaEl0ZXJhdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBvcmlnaW5hbAogICAgIC8vIHRoYXQgd2UnbGwgd2FudCBtb2RpZnkgaXMg
dGhlIGxhc3Qgb25lIGluc2lkZSB0aGUgdGFibGUsIG5vdCB0aGUgdGFibGUgaXRzZWxmCiAgICAg
Ly8gKGEgdGFibGUgaXMgaXRzZWxmIGEgcGFyYWdyYXBoKS4KICAgICBpZiAoYXV0byogdGFibGUg
PSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZE9mU2VsZWN0aW9uKSkgewotICAgICAgICBp
ZiAoc3RhcnRPZlNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlz
RGVzY2VuZGFudE9mKHRhYmxlKSkKKyAgICAgICAgaWYgKHN0YXJ0T2ZTZWxlY3Rpb24uZGVlcEVx
dWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZigqdGFibGUpKQogICAg
ICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VsZWN0aW9u
LCBlbmRPZlNlbGVjdGlvbi5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwog
ICAgIH0KICAgICAKQEAgLTEwNjksNyArMTA2OSw3IEBAIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uRm9yUGFyYWdyYXBoSXRlcmF0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9yaWdpbmFs
CiAgICAgLy8gd2UnbGwgd2FudCB0byBtb2RpZnkgaXMgdGhlIGZpcnN0IG9uZSBpbnNpZGUgdGhl
IHRhYmxlLCBub3QgdGhlIHBhcmFncmFwaAogICAgIC8vIGNvbnRhaW5pbmcgdGhlIHRhYmxlIGl0
c2VsZi4KICAgICBpZiAoYXV0byogdGFibGUgPSBpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHN0
YXJ0T2ZTZWxlY3Rpb24pKSB7Ci0gICAgICAgIGlmIChlbmRPZlNlbGVjdGlvbi5kZWVwRXF1aXZh
bGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKHRhYmxlKSkKKyAgICAgICAg
aWYgKGVuZE9mU2VsZWN0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+aXNE
ZXNjZW5kYW50T2YoKnRhYmxlKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVT
ZWxlY3Rpb24oc3RhcnRPZlNlbGVjdGlvbi5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
KSwgZW5kT2ZTZWxlY3Rpb24pOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAppbmRleCBjMjdiMWNhYTMwMjlmZDRkZGMxNzkxODA2ZmJhYzVkNTkyMzQwOGU1Li40N2QyMmMy
ZGU3ZGJiOTZkYmZlYjAwNTI4N2M1MDJlYmNmODU4Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6
OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKE5vZGUqIHN0YXJ0Tm9kZSwgTm8KICAgICAg
ICAgaWYgKCFuLT5yZW5kZXJlcigpICYmICFlbmNsb3NpbmdFbGVtZW50V2l0aFRhZyhmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUobiksIHNlbGVjdFRhZykpIHsKICAgICAgICAgICAgIG5leHQg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbik7CiAgICAgICAgICAgICAv
LyBEb24ndCBza2lwIG92ZXIgcGFzdEVuZC4KLSAgICAgICAgICAgIGlmIChwYXN0RW5kICYmIHBh
c3RFbmQtPmlzRGVzY2VuZGFudE9mKG4pKQorICAgICAgICAgICAgaWYgKHBhc3RFbmQgJiYgcGFz
dEVuZC0+aXNEZXNjZW5kYW50T2YoKm4pKQogICAgICAgICAgICAgICAgIG5leHQgPSBwYXN0RW5k
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBt
YXJrdXAgaWYgd2UncmUgbm90IHNraXBwaW5nIHRoZSBkZXNjZW5kYW50cwpAQCAtNDUyLDcgKzQ1
Miw3IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVyIGVuY291
bnRlcmVkIGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3RhcnROb2Rl
OgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRhbnRPZihw
YXJlbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5k
YW50T2YoKnBhcmVudCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZSgqcGFyZW50KTsKICAgICAgICAgICAg
ICAgICAgICAgbGFzdENsb3NlZCA9IHBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaAppbmRleCBlZWMwNWIwNjdjMTk0MDdhYzNlMDM1ZjI2YTA5YWQ3OGMx
MzllZGQyLi4zZmI0NzUyNzk3NzdkYTg5NGUzZGU5MDkwNGE0MWI1ZTMzODBmMjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0xNDYsNyArMTQ2LDcg
QEAgRWxlbWVudCogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJh
dmVyc2FsVHlwZT46Om5hbWVkSXRlbShjb24KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgY29sbGVjdGlvbigpLmVsZW1lbnRNYXRjaGVzKCpj
YW5kaWRhdGUpKSB7Ci0gICAgICAgICAgICBpZiAodHJhdmVyc2FsVHlwZSA9PSBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5ID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0g
JnJvb3QgOiBjYW5kaWRhdGUtPmlzRGVzY2VuZGFudE9mKCZyb290KSkKKyAgICAgICAgICAgIGlm
ICh0cmF2ZXJzYWxUeXBlID09IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHkg
PyBjYW5kaWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6IGNhbmRpZGF0ZS0+aXNEZXNjZW5k
YW50T2Yocm9vdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAxNGJk
ZWY3NWI2OWY3M2QzZjA3MjkyZTRmZTJmN2Y0M2JiNGM4NjIxLi40MTZhMmQxYTdiOTI1MTM0MTBl
NDA2ZjQzNDVkYzgzY2Y1Y2ZhMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCkBAIC01MzcsNyArNTM3LDcgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3Jt
RWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW0KICAgICB1
bnNpZ25lZCBjdXJyZW50QXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCA9IG1fYXNzb2NpYXRl
ZEVsZW1lbnRzQWZ0ZXJJbmRleDsKICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRl
eDsKIAotICAgIGlmICghYXNzb2NpYXRlZEhUTUxFbGVtZW50LmlzRGVzY2VuZGFudE9mKHRoaXMp
KQorICAgIGlmICghYXNzb2NpYXRlZEhUTUxFbGVtZW50LmlzRGVzY2VuZGFudE9mKCp0aGlzKSkK
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRBc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwogCiAg
ICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGlzIHRo
ZSB2ZXJ5IGxhc3QgdGhpbmcgaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDUxMTk3YThlMzIwYjE0MDg3
ODI2NjI5OWY1NzY4MzkwY2IzZWI1ZGIuLjBiMmIzZjQ2Y2ZhMDgwZjY5ZjhiNGIxODBhY2MyMDIz
YTljZTRlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMjA1MSw3ICsyMDUxLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0
aCYgcGF0aCwgRWxlbWUKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBkcmF3aW5n
Q29udGV4dCgpOwogCi0gICAgaWYgKCFlbGVtZW50LmZvY3VzZWQoKSB8fCAhc3RhdGUoKS5oYXNJ
bnZlcnRpYmxlVHJhbnNmb3JtIHx8IHBhdGguaXNFbXB0eSgpIHx8ICFlbGVtZW50LmlzRGVzY2Vu
ZGFudE9mKCZjYW52YXMoKSkgfHwgIWNvbnRleHQpCisgICAgaWYgKCFlbGVtZW50LmZvY3VzZWQo
KSB8fCAhc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtIHx8IHBhdGguaXNFbXB0eSgpIHx8
ICFlbGVtZW50LmlzRGVzY2VuZGFudE9mKGNhbnZhcygpKSB8fCAhY29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJU
aGVtZTo6Zm9jdXNSaW5nQ29sb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYjRlYTY0N2VhMmExZjEzYjgzOWNmYTY5ZjdhNzc2NGUzNWI4MzA5My4uYTBiYjE5MTk2
YWI3MGZiMDNlYTE4NjZjNTJlYTFhYzQzMzgxZTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RD
bG9zZXN0Q29udGV4dHVhbFdvcmRPckxpbmtGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2CiAg
ICAgaWYgKHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSAmJiBtX21vdXNlRG93
bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9u
OwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBv
c2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwotICAgICAgICBp
ZiAocG9zLmlzTm90TnVsbCgpICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2Rl
KCktPmlzRGVzY2VuZGFudE9mKHVybEVsZW1lbnQpKQorICAgICAgICBpZiAocG9zLmlzTm90TnVs
bCgpICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFu
dE9mKCp1cmxFbGVtZW50KSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxl
Y3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZSh1cmxFbGVtZW50KTsKIAogICAgICAg
ICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdl
dE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXRO
b2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCmluZGV4IGJiOTY2ZDYxYTczM2FiOTg2MjM4ODQwNzRlZGI5YjI0MmU5ZGUw
NjcuLjA3NDEyOTdlMGRhMGUxZjAxNmJkYTJmOGU5ZDg0MjdlZTU3MTAyN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTY5NCwxMSArNjk0LDExIEBAIEVsZW1lbnQqIFNW
R1NWR0VsZW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IHRyZWVTY29wZSgp
LmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0Rlc2Nl
bmRhbnRPZih0aGlzKSkKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0Rlc2NlbmRhbnRP
ZigqdGhpcykpCiAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIGlmICh0cmVlU2NvcGUoKS5j
b250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWQpKSB7CiAgICAgICAgIGZvciAoYXV0byog
ZWxlbWVudCA6ICp0cmVlU2NvcGUoKS5nZXRBbGxFbGVtZW50c0J5SWQoaWQpKSB7Ci0gICAgICAg
ICAgICBpZiAoZWxlbWVudC0+aXNEZXNjZW5kYW50T2YodGhpcykpCisgICAgICAgICAgICBpZiAo
ZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoKnRoaXMpKQogICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtZW50OwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>