<?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>152203</bug_id>
          
          <creation_ts>2015-12-11 16:52:27 -0800</creation_ts>
          <short_desc>CachedScript could have a copy-free path for all-ASCII scripts.</short_desc>
          <delta_ts>2015-12-13 13:31:17 -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>WebCore JavaScript</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>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148610</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-12-11 16:52:27 -0800</bug_when>
    <thetext>If a script resource consists of nothing but ASCII characters, we could have CachedScript::script() return a String that just wraps the internal SharedBuffer&apos;s contents instead of dragging the data through TextDecoder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148735</commentid>
    <comment_count>1</comment_count>
      <attachid>267242</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-12-12 13:58:02 -0800</bug_when>
    <thetext>Created attachment 267242
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148784</commentid>
    <comment_count>2</comment_count>
      <attachid>267254</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-12-12 22:17:50 -0800</bug_when>
    <thetext>Created attachment 267254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148796</commentid>
    <comment_count>3</comment_count>
      <attachid>267256</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-12-13 01:26:51 -0800</bug_when>
    <thetext>Created attachment 267256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148797</commentid>
    <comment_count>4</comment_count>
      <attachid>267256</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-12-13 01:45:01 -0800</bug_when>
    <thetext>Comment on attachment 267256
Patch

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

Nice, r=me

&gt; Source/WebCore/loader/cache/CachedScript.h:65
&gt; +    enum ASCIIResourceOptimizationState { Unknown, Optimized, NotOptimized };
&gt; +    ASCIIResourceOptimizationState m_ASCIIOptimizationState { Unknown };

Maybe this could be more explicit about what &quot;Optimized&quot; means? Something along the lines of DataAndDecodedStringHaveSameBytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148821</commentid>
    <comment_count>5</comment_count>
      <attachid>267265</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-12-13 11:09:10 -0800</bug_when>
    <thetext>Created attachment 267265
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148828</commentid>
    <comment_count>6</comment_count>
      <attachid>267265</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-13 12:03:49 -0800</bug_when>
    <thetext>Comment on attachment 267265
Patch for landing

Clearing flags on attachment: 267265

Committed r194017: &lt;http://trac.webkit.org/changeset/194017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148829</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-13 12:03:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148842</commentid>
    <comment_count>8</comment_count>
      <attachid>267256</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-13 13:31:17 -0800</bug_when>
    <thetext>Comment on attachment 267256
Patch

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

&gt; Source/WebCore/loader/cache/CachedScript.cpp:74
&gt; +    return encoding == &quot;UTF-8&quot; || encoding == &quot;ISO-8859-1&quot; || encoding == &quot;ASCII&quot;;

This seems to be way too conservative. Almost all encodings would answer yes for this. Pretty much everything except for UTF-16 and UTF-32, and I think TextEncoding can answer this question. It&apos;s strange to be asking this given just a string rather than TextEncoding.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267242</attachid>
            <date>2015-12-12 13:58:02 -0800</date>
            <delta_ts>2015-12-12 22:17:50 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>ews-152203.diff</filename>
            <type>text/plain</type>
            <size>32562</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXggMmYzNzQyMy4u
ZTY1MDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAg
LTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURjo6YWRvcHRSZWYoKm5l
dyBPcGFxdWVKU1NjcmlwdCh2bSwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZSkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlk
ZQorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc291cmNlLmltcGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIFN0cmluZ1ZpZXcgc291
cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3ZWViY2JjLi4yYjdlY2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxNS0xMi0xMiAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVkU2NyaXB0IGNvdWxkIGhh
dmUgYSBjb3B5LWZyZWUgcGF0aCBmb3IgYWxsLUFTQ0lJIHNjcmlwdHMuCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xNTIyMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBTb3VyY2VQcm92aWRlciB2ZW5kIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nLgorICAgICAgICBUaGlzIHJlbGF4ZXMgdGhlIHByb21pc2VzIHRo
YXQgcHJvdmlkZXJzIGhhdmUgdG8gbWFrZSBhYm91dCBzdHJpbmcgbGlmZXRpbWVzLgorCisgICAg
ICAgIFRoaXMgbWVhbnMgdGhhdCBvbiB0aGUgV2ViQ29yZSBzaWRlLCBDYWNoZWRTY3JpcHQgaXMg
ZnJlZSB0byBjYWNoZSBhIFN0cmluZworICAgICAgICBpbnRlcm5hbGx5LCB3aGlsZSBvbmx5IGV2
ZXIgZXhwb3NpbmcgaXQgYXMgYSB0ZW1wb3JhcnkgU3RyaW5nVmlldy4KKworICAgICAgICBBIGZl
dyBleHRyYSBjb3BpZXMgKENQVSwgbm90IG1lbW9yeSkgYXJlIGludHJvZHVjZWQsIG5vbmUgb2Yg
dGhlbSBvbiBob3QgcGF0aHMuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c291cmNlQ29kZUZvclRvb2xzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZhaWxlZFRvUGFy
c2VTb3VyY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChmdW5jdGlvbkhh
c0Jhc2ljQmxvY2tFeGVjdXRlZCk6CisgICAgICAgIChmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRp
b25Db3VudCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4
ZXI8VD46OnNldENvZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlND
OjpMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydCk6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6c2V0Q29kZVN0YXJ0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlBhcnNlcjo6Z2V0VG9rZW4pOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6dG9VVEY4KToKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZTo6dmlldyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldFJhbmdlKToKKyAgICAgICAgKiBydW50aW1l
L0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90
b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplT3ZlcnJpZGVJbmZvKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcik6CisKIDIwMTUtMTItMTEgIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtKU0NdIExp
dHRsZSBjbGVhbnVwIG9mIEZUTE91dHB1dCB0eXBlIGNhc3RzIGFuZCBjb252ZXJzaW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhMmYzMjZi
Li5hNDc5OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIENTdHJpbmcgQ29kZUJsb2NrOjpzb3VyY2VDb2RlRm9y
VG9vbHMoKSBjb25zdAogICAgIHVuc2lnbmVkIHJhbmdlRW5kID0gZGVsdGEgKyB1bmxpbmtlZC0+
c3RhcnRPZmZzZXQoKSArIHVubGlua2VkLT5zb3VyY2VMZW5ndGgoKTsKICAgICByZXR1cm4gdG9D
U3RyaW5nKAogICAgICAgICAiZnVuY3Rpb24gIiwKLSAgICAgICAgcHJvdmlkZXItPnNvdXJjZSgp
LmltcGwoKS0+dXRmOEZvclJhbmdlKHJhbmdlU3RhcnQsIHJhbmdlRW5kIC0gcmFuZ2VTdGFydCkp
OworICAgICAgICBwcm92aWRlci0+c291cmNlKCkuc3Vic3RyaW5nKHJhbmdlU3RhcnQsIHJhbmdl
RW5kIC0gcmFuZ2VTdGFydCkudXRmOCgpKTsKIH0KIAogQ1N0cmluZyBDb2RlQmxvY2s6OnNvdXJj
ZUNvZGVPbk9uZUxpbmUoKSBjb25zdApAQCAtNTU0LDE0ICs1NTQsMTQgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBTb3VyY2UoUHJpbnRTdHJlYW0mIG91dCkKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7CiAgICAgaWYgKGV4ZWN1dGFibGUt
PmlzRnVuY3Rpb25FeGVjdXRhYmxlKCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOwotICAgICAgICBTdHJpbmcgc291cmNlID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgKKyAgICAgICAgU3RyaW5nVmlldyBzb3Vy
Y2UgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAog
ICAgICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwK
ICAgICAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgp
ICsgMSk7IC8vIFR5cGUgcHJvZmlsaW5nIGVuZCBvZmZzZXQgaXMgdGhlIGNoYXJhY3RlciBiZWZv
cmUgdGhlICd9Jy4KICAgICAgICAgCiAgICAgICAgIG91dC5wcmludCgiZnVuY3Rpb24gIiwgaW5m
ZXJyZWROYW1lKCksIHNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgb3V0LnBy
aW50KGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCkpOworICAgIG91dC5wcmludChleGVj
dXRhYmxlLT5zb3VyY2UoKS52aWV3KCkpOwogfQogCiB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggODk4OTFiZC4uOThjNjVkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhcnNlU291
cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdQogCiAgICAgU2NyaXB0RGVidWdM
aXN0ZW5lcjo6U2NyaXB0IHNjcmlwdDsKICAgICBzY3JpcHQudXJsID0gc291cmNlUHJvdmlkZXIt
PnVybCgpOwotICAgIHNjcmlwdC5zb3VyY2UgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCk7Cisg
ICAgc2NyaXB0LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwog
ICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1f
bGluZS56ZXJvQmFzZWRJbnQoKTsKICAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92
aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwogICAgIHNjcmlw
dC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQ7CkBAIC0yMzEsNyArMjMxLDcgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0
ZW5lclNldCYgbGlzdGVuZXJzLCBTb3UKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNo
RmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQ
cm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQogewogICAgIFN0cmluZyB1cmwgPSBzb3VyY2VQcm92aWRlci0+dXJsKCk7Ci0g
ICAgY29uc3QgU3RyaW5nJiBkYXRhID0gc291cmNlUHJvdmlkZXItPnNvdXJjZSgpOworICAgIFN0
cmluZyBkYXRhID0gc291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAgaW50
IGZpcnN0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9uZUJh
c2VkSW50KCk7CiAKICAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGNvcHk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRl
eCA3OGZmZDkxLi5mZTAyYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTg0OSw3ICs4NDksNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSgogCiAgICAgVmVjdG9yPEpTT05QRGF0YT4gSlNPTlBEYXRhOwogICAgIGJvb2wg
cGFyc2VSZXN1bHQ7Ci0gICAgY29uc3QgU3RyaW5nIHByb2dyYW1Tb3VyY2UgPSBwcm9ncmFtLT5z
b3VyY2UoKS50b1N0cmluZygpOworICAgIFN0cmluZ1ZpZXcgcHJvZ3JhbVNvdXJjZSA9IHByb2dy
YW0tPnNvdXJjZSgpLnZpZXcoKTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMmU5MTRhYi4uY2ZjZWMzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24oRXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CiAgICAgU3Ry
aW5nIHN1YnN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjKTsKLSAgICBT
dHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwor
ICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50
b1N0cmluZygpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
b3VyY2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFy
dE9mZnNldCgpKTsKICAgICAKICAgICBTdHJpbmcganNvblN0cmluZyA9IGV4ZWMtPnZtKCkudHlw
ZVByb2ZpbGVyKCktPnR5cGVJbmZvcm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldChUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsLCBvZmZzZXQsIGV4ZWN1dGFibGUtPnNvdXJjZUlE
KCksIGV4ZWMtPnZtKCkpOwpAQCAtMTUwMiw3ICsxNTAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZWMp
CiAKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKICAg
ICBTdHJpbmcgc3Vic3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWMpOwot
ICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5n
KCk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmll
dygpLnRvU3RyaW5nKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQuY29udGFp
bnMoc3Vic3RyaW5nKSk7CiAgICAgaW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vi
c3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC0x
NTIwLDcgKzE1MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQmFz
aWNCbG9ja0V4ZWN1dGlvbkNvdW50KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBzdWJzdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgc291
cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhzdWJzdHJpbmcpKTsKICAg
ICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJs
ZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKaW5kZXggNzYzYmRmMS4uNzY0ZWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKQEAgLTU0MywxMCArNTQzLDEwIEBAIHZvaWQgTGV4ZXI8VD46OnNl
dENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJlbmEpCiAgICAg
bV9saW5lTnVtYmVyID0gc291cmNlLmZpcnN0TGluZSgpOwogICAgIG1fbGFzdFRva2VuID0gLTE7
CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcgPSBzb3VyY2UucHJvdmlkZXIo
KS0+c291cmNlKCk7CisgICAgU3RyaW5nVmlldyBzb3VyY2VTdHJpbmcgPSBzb3VyY2UucHJvdmlk
ZXIoKS0+c291cmNlKCk7CiAKICAgICBpZiAoIXNvdXJjZVN0cmluZy5pc051bGwoKSkKLSAgICAg
ICAgc2V0Q29kZVN0YXJ0KHNvdXJjZVN0cmluZy5pbXBsKCkpOworICAgICAgICBzZXRDb2RlU3Rh
cnQoc291cmNlU3RyaW5nKTsKICAgICBlbHNlCiAgICAgICAgIG1fY29kZVN0YXJ0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDE4NjJkNzcuLmM3YjYzYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2
YXRlOgogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCogY3VycmVudFNvdXJjZVB0cigpIGNvbnN0
OwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGNvbnN0IFQq
IHNvdXJjZVB0ciwgdW5zaWduZWQgbGluZVN0YXJ0T2Zmc2V0KSB7IHNldE9mZnNldChvZmZzZXRG
cm9tU291cmNlUHRyKHNvdXJjZVB0ciksIGxpbmVTdGFydE9mZnNldCk7IH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nSW1wbCopOworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nVmlldyYpOwogCiAgICAgQUxX
QVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBtYWtlSWRlbnRpZmllcihjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVu
dGlmaWVyKiBtYWtlSWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCk7CkBAIC0yODksMTcgKzI4OSwxNyBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZp
ZXIqIExleGVyPFQ+OjptYWtlRW1wdHlJZGVudGlmaWVyKCkKIH0KIAogdGVtcGxhdGUgPD4KLUFM
V0FZU19JTkxJTkUgdm9pZCBMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydChjb25zdCBTdHJpbmdJ
bXBsKiBzb3VyY2VTdHJpbmcpCitBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8TENoYXI+OjpzZXRD
b2RlU3RhcnQoY29uc3QgU3RyaW5nVmlldyYgc291cmNlU3RyaW5nKQogewotICAgIEFTU0VSVChz
b3VyY2VTdHJpbmctPmlzOEJpdCgpKTsKLSAgICBtX2NvZGVTdGFydCA9IHNvdXJjZVN0cmluZy0+
Y2hhcmFjdGVyczgoKTsKKyAgICBBU1NFUlQoc291cmNlU3RyaW5nLmlzOEJpdCgpKTsKKyAgICBt
X2NvZGVTdGFydCA9IHNvdXJjZVN0cmluZy5jaGFyYWN0ZXJzOCgpOwogfQogCiB0ZW1wbGF0ZSA8
PgotQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFVDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0IFN0
cmluZ0ltcGwqIHNvdXJjZVN0cmluZykKK0FMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxVQ2hhcj46
OnNldENvZGVTdGFydChjb25zdCBTdHJpbmdWaWV3JiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgQVNT
RVJUKCFzb3VyY2VTdHJpbmctPmlzOEJpdCgpKTsKLSAgICBtX2NvZGVTdGFydCA9IHNvdXJjZVN0
cmluZy0+Y2hhcmFjdGVyczE2KCk7CisgICAgQVNTRVJUKCFzb3VyY2VTdHJpbmcuaXM4Qml0KCkp
OworICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLmNoYXJhY3RlcnMxNigpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmlu
ZGV4IDI2MmZmOTYuLmU1YjYyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtOTkwLDcgKzk5MCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBwcmludFVu
ZXhwZWN0ZWRUb2tlblRleHQoV1RGOjpQcmludFN0cmVhbSYpOwotICAgIEFMV0FZU19JTkxJTkUg
U3RyaW5nIGdldFRva2VuKCkgeworICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBnZXRUb2tl
bigpIHsKICAgICAgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyID0gbV9zb3VyY2Ut
PnByb3ZpZGVyKCk7CiAgICAgICAgIHJldHVybiBzb3VyY2VQcm92aWRlci0+Z2V0UmFuZ2UodG9r
ZW5TdGFydCgpLCB0b2tlbkVuZFBvc2l0aW9uKCkub2Zmc2V0KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcAppbmRleCA4ZWYxNjhkLi5jNDMwZTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgQ1N0cmluZyBTb3VyY2VDb2RlOjp0b1VURjgoKSBjb25zdAogICAgIGlmICgh
bV9wcm92aWRlcikKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwogICAgIAotICAgIHJl
dHVybiBtX3Byb3ZpZGVyLT5zb3VyY2UoKS5pbXBsKCktPnV0ZjhGb3JSYW5nZShtX3N0YXJ0Q2hh
ciwgbV9lbmRDaGFyIC0gbV9zdGFydENoYXIpOworICAgIHJldHVybiBtX3Byb3ZpZGVyLT5zb3Vy
Y2UoKS5zdWJzdHJpbmcobV9zdGFydENoYXIsIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyKS51dGY4
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuaAppbmRleCA3ZjM3ZWNmLi43M2Q2YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtNzksMTAgKzc5LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3ZpZGVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAotICAgICAgICBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdAorICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fcHJvdmlkZXIpOworICAgICAgICAgICAgcmV0
dXJuIG1fcHJvdmlkZXItPmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZ1ZpZXcg
dmlldygpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm92aWRlcikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ1ZpZXcoKTsKICAgICAgICAgICAgIHJldHVybiBtX3Byb3ZpZGVyLT5nZXRSYW5nZShtX3N0
YXJ0Q2hhciwgbV9lbmRDaGFyKTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKaW5kZXggOGQ0OWE3ZS4uMDlmOGY5MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQog
ICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fZmxhZ3MoKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2RlVHlwZSkgPDwgMykgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1aWx0aW5N
b2RlKSA8PCAyKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaWN0TW9kZSkgPDwgMSkgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc1REWk1vZGUpKQotICAgICAgICAsIG1faGFzaChzdHJp
bmcoKS5pbXBsKCktPmhhc2goKSkKKyAgICAgICAgLCBtX2hhc2goc291cmNlQ29kZS5oYXNoKCkp
CiAgICAgewogICAgIH0KIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUbyBz
YXZlIG1lbW9yeSwgd2UgY29tcHV0ZSBvdXIgc3RyaW5nIG9uIGRlbWFuZC4gSXQncyBleHBlY3Rl
ZCB0aGF0IHNvdXJjZQogICAgIC8vIHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1h
a2UgdGhpcyBlZmZpY2llbnQuCi0gICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQ29kZS50b1N0cmluZygpOyB9CisgICAgU3RyaW5nVmlldyBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUNvZGUudmlldygpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU291cmNlQ29kZUtleSYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDRmOTg0ZWIuLjZiNDc4ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKQEAgLTQz
LDEwICs0MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIH5Tb3VyY2VQcm92aWRlcigpOwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgICAgIFN0cmluZyBnZXRSYW5nZShpbnQgc3Rh
cnQsIGludCBlbmQpIGNvbnN0CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpIGNvbnN0
ID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAg
ICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzb3VyY2UoKS5zdWJzdHJpbmdTaGFyaW5nSW1wbChz
dGFydCwgZW5kIC0gc3RhcnQpOworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSgpLnN1YnN0cmlu
ZyhzdGFydCwgZW5kIC0gc3RhcnQpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU3RyaW5n
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAtODYsOCArODcsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
cmluZ1NvdXJjZVByb3ZpZGVyKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSk7CiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9zb3VyY2UuaW1wbCgpLT5oYXNoKCk7CisgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICAgICAgdmlydHVhbCBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAgICAgICAgfQpAQCAt
MTEwLDcgKzExNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoZGF0YSwgdXJsKSk7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX3NvdXJjZS5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbV9zb3VyY2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggMDJmMzk1Yy4uMTU1MDU4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cgogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAKICAgICAv
LyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1bGVMb2FkZXIgcmVnaXN0
cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCi0gICAgZ2xvYmFsT2JqZWN0LT5tb2R1
bGVMb2FkZXIoKS0+cHJvdmlkZShleGVjLCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVz
OjpGZXRjaCwgc291cmNlLnRvU3RyaW5nKCkpOworICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9h
ZGVyKCktPnByb3ZpZGUoZXhlYywga2V5LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0
Y2gsIHNvdXJjZS52aWV3KCkudG9TdHJpbmcoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZShleGVjLCBnbG9iYWxPYmplY3QpOwog
CkBAIC0yMDQsNyArMjA0LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAogICAgIC8vIElu
c2VydCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3RyeSBh
cyB0aGUgZmV0Y2hlZCByZWdpc3RyeSBlbnRyeS4KLSAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxv
YWRlcigpLT5wcm92aWRlKGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZl
dGNoLCBzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIo
KS0+cHJvdmlkZShleGVjLCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpGZXRjaCwg
c291cmNlLnZpZXcoKS50b1N0cmluZygpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXgg
YzA1NDlkOC4uNGYxNGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291
cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9u
LAogICAgIGludCBleHByZXNzaW9uU3RhcnQgPSBkaXZvdFBvaW50IC0gc3RhcnRPZmZzZXQ7CiAg
ICAgaW50IGV4cHJlc3Npb25TdG9wID0gZGl2b3RQb2ludCArIGVuZE9mZnNldDsKIAotICAgIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nID0gY29kZUJsb2NrLT5zb3VyY2UoKS0+c291cmNlKCk7
CisgICAgU3RyaW5nVmlldyBzb3VyY2VTdHJpbmcgPSBjb2RlQmxvY2stPnNvdXJjZSgpLT5zb3Vy
Y2UoKTsKICAgICBpZiAoIWV4cHJlc3Npb25TdG9wIHx8IGV4cHJlc3Npb25TdGFydCA+IHN0YXRp
Y19jYXN0PGludD4oc291cmNlU3RyaW5nLmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogICAg
IApAQCAtNzEsMjQgKzcxLDIzIEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAKICAgICBT
dHJpbmcgbWVzc2FnZSA9IGFzU3RyaW5nKGpzTWVzc2FnZSktPnZhbHVlKGNhbGxGcmFtZSk7CiAg
ICAgaWYgKGV4cHJlc3Npb25TdGFydCA8IGV4cHJlc3Npb25TdG9wKQotICAgICAgICBtZXNzYWdl
ID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2UoZXhwcmVz
c2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCkgLCB0eXBlLCBFcnJvckluc3RhbmNlOjpGb3VuZEV4
YWN0U291cmNlKTsKKyAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9j
ay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvblN0b3ApLnRv
U3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOwogICAgIGVs
c2UgewogICAgICAgICAvLyBObyByYW5nZSBpbmZvcm1hdGlvbiwgc28gZ2l2ZSBhIGZldyBjaGFy
YWN0ZXJzIG9mIGNvbnRleHQuCi0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRhdGEgPSBzb3Vy
Y2VTdHJpbmcuaW1wbCgpOwogICAgICAgICBpbnQgZGF0YUxlbmd0aCA9IHNvdXJjZVN0cmluZy5s
ZW5ndGgoKTsKICAgICAgICAgaW50IHN0YXJ0ID0gZXhwcmVzc2lvblN0YXJ0OwogICAgICAgICBp
bnQgc3RvcCA9IGV4cHJlc3Npb25TdGFydDsKICAgICAgICAgLy8gR2V0IHVwIHRvIDIwIGNoYXJh
Y3RlcnMgb2YgY29udGV4dCB0byB0aGUgbGVmdCBhbmQgcmlnaHQgb2YgdGhlIGRpdm90LCBjbGFt
cGluZyB0byB0aGUgbGluZS4KICAgICAgICAgLy8gVGhlbiBzdHJpcCB3aGl0ZXNwYWNlLgotICAg
ICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIChleHByZXNzaW9uU3RhcnQgLSBzdGFydCA8IDIwKSAm
JiAoKmRhdGEpW3N0YXJ0IC0gMV0gIT0gJ1xuJykKKyAgICAgICAgd2hpbGUgKHN0YXJ0ID4gMCAm
JiAoZXhwcmVzc2lvblN0YXJ0IC0gc3RhcnQgPCAyMCkgJiYgc291cmNlU3RyaW5nW3N0YXJ0IC0g
MV0gIT0gJ1xuJykKICAgICAgICAgICAgIHN0YXJ0LS07Ci0gICAgICAgIHdoaWxlIChzdGFydCA8
IChleHByZXNzaW9uU3RhcnQgLSAxKSAmJiBpc1N0cldoaXRlU3BhY2UoKCpkYXRhKVtzdGFydF0p
KQorICAgICAgICB3aGlsZSAoc3RhcnQgPCAoZXhwcmVzc2lvblN0YXJ0IC0gMSkgJiYgaXNTdHJX
aGl0ZVNwYWNlKHNvdXJjZVN0cmluZ1tzdGFydF0pKQogICAgICAgICAgICAgc3RhcnQrKzsKLSAg
ICAgICAgd2hpbGUgKHN0b3AgPCBkYXRhTGVuZ3RoICYmIChzdG9wIC0gZXhwcmVzc2lvblN0YXJ0
IDwgMjApICYmICgqZGF0YSlbc3RvcF0gIT0gJ1xuJykKKyAgICAgICAgd2hpbGUgKHN0b3AgPCBk
YXRhTGVuZ3RoICYmIChzdG9wIC0gZXhwcmVzc2lvblN0YXJ0IDwgMjApICYmIHNvdXJjZVN0cmlu
Z1tzdG9wXSAhPSAnXG4nKQogICAgICAgICAgICAgc3RvcCsrOwotICAgICAgICB3aGlsZSAoc3Rv
cCA+IGV4cHJlc3Npb25TdGFydCAmJiBpc1N0cldoaXRlU3BhY2UoKCpkYXRhKVtzdG9wIC0gMV0p
KQorICAgICAgICB3aGlsZSAoc3RvcCA+IGV4cHJlc3Npb25TdGFydCAmJiBpc1N0cldoaXRlU3Bh
Y2Uoc291cmNlU3RyaW5nW3N0b3AgLSAxXSkpCiAgICAgICAgICAgICBzdG9wLS07Ci0gICAgICAg
IG1lc3NhZ2UgPSBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5n
ZShzdGFydCwgc3RvcCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3Vy
Y2UpOworICAgICAgICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3Vy
Y2UoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFu
Y2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpOwogICAgIH0KICAgICBleGNlcHRpb24tPnB1dERp
cmVjdCgqdm0sIHZtLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyh2bSwgbWVzc2Fn
ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKaW5kZXggOTcwZDAxMi4uMjIzNzVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtOTEsNyArOTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAKICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVh
ZGVyID0gZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkgPyAiIiA6ICJmdW5jdGlvbiAiOwog
ICAgICAgICAKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnBy
b3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAogICAgICAgICAgICAgZXhlY3V0YWJs
ZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQoKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLmxlbmd0aCgpKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMs
IGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgc291cmNlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCAy
MDM0ZDYwLi4yZTMyOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
RnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9G
dW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBGdW5jdGlvbk92ZXJyaWRl
czo6RnVuY3Rpb25PdmVycmlkZXMoY29uc3QgY2hhciogb3ZlcnJpZGVzRmlsZU5hbWUpCiAKIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0Nv
ZGUsIGNvbnN0IFN0cmluZyYgbmV3Qm9keSwgRnVuY3Rpb25PdmVycmlkZXM6Ok92ZXJyaWRlSW5m
byYgaW5mbykKIHsKLSAgICBTdHJpbmcgb3JpZ1Byb3ZpZGVyU3RyID0gb3JpZ0NvZGUucHJvdmlk
ZXIoKS0+c291cmNlKCk7CisgICAgU3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9yaWdDb2RlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAgdW5zaWduZWQgb3JpZ0JyYWNlU3Rh
cnQgPSBvcmlnQ29kZS5zdGFydE9mZnNldCgpOwogICAgIHVuc2lnbmVkIG9yaWdGdW5jdGlvblN0
YXJ0ID0gb3JpZ1Byb3ZpZGVyU3RyLnJldmVyc2VGaW5kKCJmdW5jdGlvbiIsIG9yaWdCcmFjZVN0
YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VTdGFydCAtIG9yaWdG
dW5jdGlvblN0YXJ0OwpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgRnVuY3Rpb25PdmVycmlkZXM6
OmluaXRpYWxpemVPdmVycmlkZUZvcihjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgRnVuY3Rp
CiAgICAgQVNTRVJUKE9wdGlvbnM6OmZ1bmN0aW9uT3ZlcnJpZGVzKCkpOwogICAgIEZ1bmN0aW9u
T3ZlcnJpZGVzJiBvdmVycmlkZXMgPSBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCk7CiAK
LSAgICBhdXRvIGl0ID0gb3ZlcnJpZGVzLm1fZW50cmllcy5maW5kKG9yaWdDb2RlLnRvU3RyaW5n
KCkpOworICAgIGF1dG8gaXQgPSBvdmVycmlkZXMubV9lbnRyaWVzLmZpbmQob3JpZ0NvZGUudmll
dygpLnRvU3RyaW5nKCkpOwogICAgIGlmIChpdCA9PSBvdmVycmlkZXMubV9lbnRyaWVzLmVuZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1By
aW50U3RyZWFtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcAppbmRleCAwNjg5
MzFlLi4zMzY0NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCkBAIC01Myw2ICs1MywxMSBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogc3RyaW5nKQog
ICAgIG91dC5wcmludGYoIiVzIiwgc3RyaW5nKTsKIH0KIAordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKK3sKKyAgICBvdXQucHJp
bnQoc3RyaW5nLnV0ZjgoKSk7Cit9CisKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgb3V0LnByaW50KHN0cmluZy5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaCBiL1NvdXJjZS9X
VEYvd3RmL1ByaW50U3RyZWFtLmgKaW5kZXggOTVhY2RmYS4uYTVmNWYwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CiBjbGFzcyBD
U3RyaW5nOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgU3RyaW5nSW1wbDsKK2NsYXNzIFN0cmluZ1Zp
ZXc7CiBjbGFzcyBVbmlxdWVkU3RyaW5nSW1wbDsKIAogY2xhc3MgUHJpbnRTdHJlYW0gewpAQCAt
NzAsNiArNzEsNyBAQCBwdWJsaWM6CiB9OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciopOworV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IFN0cmluZ1ZpZXcmKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBD
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiwgY29uc3QgU3RyaW5nSW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI5ZmRh
NjMuLjQ2MjQwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0xMi0xMSAgQW5k
cmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVkU2NyaXB0IGNv
dWxkIGhhdmUgYSBjb3B5LWZyZWUgcGF0aCBmb3IgYWxsLUFTQ0lJIHNjcmlwdHMuCisgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTIyMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFueSAoaWYgbm90IG1vc3QpIG9mIHNjcmlwdCByZXNv
dXJjZXMgb24gdGhlIHdlYiBjb250YWluIG5vdGhpbmcgYnV0IEFTQ0lJIGNoYXJhY3RlcnMuCisg
ICAgICAgIFN1Y2ggcmVzb3VyY2VzLCB3aGVuIHN0cmVhbWVkIHRocm91Z2ggYSB0ZXh0IGRlY29k
ZXIsIHdpbGwgeWllbGQgdGhlIGV4YWN0IHNhbWUgYnl0ZQorICAgICAgICBzZXF1ZW5jZSwgZXhj
ZXB0IGluIGFub255bW91cyBoZWFwIG1lbW9yeSBpbnN0ZWFkIG9mIGRlbGljaW91cyBmaWxlLWJh
Y2tlZCBwYWdlcy4KKworICAgICAgICBDYXJlIGlzIHRha2VuIHRvIGVuc3VyZSB0aGF0IHRoZSB3
cmFwcGVyIFN0cmluZ0ltcGwgaXMgdXBkYXRlZCB0byB0YXJnZXQgbmV3bHkgY2FjaGVkCisgICAg
ICAgIHJlc291cmNlIGRhdGEgaWYgYW4gYXN5bmNocm9ub3VzIGNhY2hpbmcgbm90aWZpY2F0aW9u
IGNvbWVzIGluLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGluZ01heUJlQWxsQVNDSUkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
OjpzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OnRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcik6CisKIDIwMTUtMTItMTEgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IHN0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwgZmFpbHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRl
eCAyYTIyOGQzLi5mY2NlYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgcHVi
bGljOgogICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0K
IAotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3Jp
cHQtPnNjcmlwdCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHRIYXNoKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJj
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKTsgfQog
CiBwcml2YXRlOgogICAgIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKENhY2hlZFNjcmlwdCog
Y2FjaGVkU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U291cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNl
Q29kZS5oCmluZGV4IDJkM2MxNTkuLjc4NTQzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGU7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm92aWRlci0+c291cmNlKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvdmlkZXItPnNvdXJjZSgpOyB9CiAKICAgICBpbnQgc3RhcnRMaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlLmZpcnN0TGluZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDE3YjU2Mi4uMGUwMDAyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAg
LTE2MSw3ICsxNjEsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VD
b250ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICAgICAgKnJl
c3VsdCA9IGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KCpjYWNoZWRSZXNvdXJjZSkuc2hl
ZXRUZXh0KCk7CiAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdC0+aXNOdWxsKCk7CiAgICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgICAgICpyZXN1bHQgPSBkb3du
Y2FzdDxDYWNoZWRTY3JpcHQ+KCpjYWNoZWRSZXNvdXJjZSkuc2NyaXB0KCk7CisgICAgICAgICAg
ICAqcmVzdWx0ID0gZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PigqY2FjaGVkUmVzb3VyY2UpLnNjcmlw
dCgpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKICAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9
IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggN2ZhMTJlZS4uZTA5NWU4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC03
ODcsNyArNzg3LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAobV9kYXRhLT5zaXplKCkgIT0gbmV3
QnVmZmVyLnNpemUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5ld0J1ZmZlci5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT50cnlSZXBs
YWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKTsKKyAgICBpZiAobV9kYXRh
LT50cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKSkgeworICAg
ICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKKyAgICAgICAgLy8gRklYTUU6
IFNob3VsZCB3ZSBjYWxsIGNoZWNrTm90aWZ5KCkgaGVyZSB0byBtb3ZlIGFscmVhZHktZGVjb2Rl
ZCBpbWFnZXMgdG8gdGhlIG5ldyBkYXRhIHNvdXJjZT8KKyAgICB9CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBiN2JmYTcx
Li5hNDUyM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaApAQCAtMjY3LDYgKzI2Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldERlY29kZWRT
aXplKHVuc2lnbmVkKTsKICAgICB2b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1l
U3RhbXApOwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50
cygpIHsgfQorCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0YSBtZW1i
ZXJzIHByaXZhdGUgYW5kIHVzZSBmdW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGluc3RlYWQu
CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCAyZjhhZTNjLi5jNDU5MDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtNjksMTYg
KzY5LDUyIEBAIFN0cmluZyBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlKCkgY29uc3QKICAgICByZXR1
cm4gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS5sb3dlcigpOwogfQogCi1jb25zdCBTdHJp
bmcmIENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKK3N0YXRpYyBib29sIGVuY29kaW5nTWF5QmVBbGxB
U0NJSShjb25zdCBTdHJpbmcmIGVuY29kaW5nKQoreworICAgIHJldHVybiBlbmNvZGluZyA9PSAi
VVRGLTgiIHx8IGVuY29kaW5nID09ICJJU08tODg1OS0xIiB8fCBlbmNvZGluZyA9PSAiQVNDSUki
OworfQorCitTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKIHsKICAgICBpZiAoIW1f
c2NyaXB0ICYmIG1fZGF0YSkgeworICAgICAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRl
ID09IFVua25vd24KKyAgICAgICAgICAgICYmIGVuY29kaW5nTWF5QmVBbGxBU0NJSShlbmNvZGlu
ZygpKQorICAgICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkKKyAgICAgICAgICAgICYmIGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5k
YXRhKCkpLCBtX2RhdGEtPnNpemUoKSkpIHsKKworICAgICAgICAgICAgbV9zY3JpcHQgPSBTdHJp
bmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBtX0FTQ0lJ
T3B0aW1pemF0aW9uU3RhdGUgPSBPcHRpbWl6ZWQ7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBl
bmNvZGVkIGFuZCBkZWNvZGVkIGRhdGEgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBkZWNvZGVk
IGRhdGEgY29zdCEKKyAgICAgICAgICAgIHNldERlY29kZWRTaXplKDApOworICAgICAgICAgICAg
bV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOworICAgICAgICAgICAgcmV0dXJuIG1f
c2NyaXB0OworICAgICAgICB9CiAgICAgICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fQVNDSUlP
cHRpbWl6YXRpb25TdGF0ZSA9IE5vdE9wdGltaXplZDsKICAgICAgICAgc2V0RGVjb2RlZFNpemUo
bV9zY3JpcHQuc2l6ZUluQnl0ZXMoKSk7CiAgICAgfQotICAgIG1fZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyLnJlc3RhcnQoKTsKKyAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IE5v
dE9wdGltaXplZCkKKyAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIucmVzdGFydCgp
OwogICAgIHJldHVybiBtX3NjcmlwdDsKIH0KIAordW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3Jp
cHRIYXNoKCkKK3sKKyAgICBzY3JpcHQoKTsKKyAgICByZXR1cm4gbV9zY3JpcHQuaW1wbCgpLT5o
YXNoKCk7Cit9CisKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29u
dGVudHMoKQoreworICAgIC8vIFdlIHJlY2VpdmUgdGhpcyBjYWxsYmFjayB3aGVuIHRoZSBDYWNo
ZWRSZXNvdXJjZSdzIGludGVybmFsIFNoYXJlZEJ1ZmZlciBoYXMgaGFkIGl0cyBjb250ZW50cwor
ICAgIC8vIHJlcGxhY2VkIGJ5IHRoZSBtZW1vcnktbWFwcGluZy1vZi1maWxlLWJhY2tlZC1yZXNv
dXJjZXMgb3B0aW1pemF0aW9uLiBJZiBtX3NjcmlwdCBpcyBqdXN0IGEKKyAgICAvLyBub24tY29w
eWluZyB3cmFwcGVyIGFyb3VuZCB0aGUgb2xkIFNoYXJlZEJ1ZmZlciBjb250ZW50cywgd2UgaGF2
ZSB0byByZXRhcmdldCBpdC4KKyAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IE9w
dGltaXplZCkKKyAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBtX2Rh
dGEtPnNpemUoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJD
b250ZW50cygpOworfQorCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MzhlOTE4Li5lMTM4NDNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0zNyw3ICszNyw4IEBAIHB1
YmxpYzoKICAgICBDYWNoZWRTY3JpcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0LCBTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdCgpOwog
Ci0gICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKKyAgICBTdHJpbmdWaWV3IHNjcmlwdCgpOwor
ICAgIHVuc2lnbmVkIHNjcmlwdEhhc2goKTsKIAogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0
OwogCkBAIC00NSw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBib29sIG1pbWVUeXBlQWxsb3dlZEJ5
Tm9zbmlmZigpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZm
ZXJDb250ZW50cygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
QEAgLTU3LDYgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fc2NyaXB0OworCisgICAgZW51bSBB
U0NJSVJlc291cmNlT3B0aW1pemF0aW9uU3RhdGUgeyBVbmtub3duLCBPcHRpbWl6ZWQsIE5vdE9w
dGltaXplZCB9OworICAgIEFTQ0lJUmVzb3VyY2VPcHRpbWl6YXRpb25TdGF0ZSBtX0FTQ0lJT3B0
aW1pemF0aW9uU3RhdGUgeyBVbmtub3duIH07CisKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gbV9kZWNvZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCA0MDMwYmRhLi5hYTQwOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICAvLyAgICAgIH0KICAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5z
aWduZWQgcG9zaXRpb24gPSAwKSBjb25zdDsKIAotICAgIHZvaWQgdHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgdHJ5UmVwbGFjZUNv
bnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgRGF0YUJ1ZmZl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhQnVmZmVyPiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggMmE3NWU1Ni4uYjlm
NmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cApAQCAtOTIsMTMgKzkyLDE0IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0
YSgpCiAgICAgbV9jZkRhdGEgPSAwOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFj
ZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiti
b29sIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiB7CiAgICAgaWYgKCFuZXdDb250ZW50cy5tX2NmRGF0
YSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjbGVhcigp
OwogICAgIG1fY2ZEYXRhID0gbmV3Q29udGVudHMubV9jZkRhdGE7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjptYXliZUFwcGVuZFBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXIqIG5ld0NvbnRlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2Ny
aXB0RGVidWdnZXIubW0KaW5kZXggN2I1YzQ4NC4uNzBiOGUwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC01MSw3ICs1MSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgTlNTdHJpbmcgKnRvTlNTdHJpbmcoU291
cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyKQogewotICAgIGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nID0gc291cmNlUHJvdmlkZXItPnNvdXJjZSgpOworICAgIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nID0gc291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAgaWYg
KHNvdXJjZVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJu
IHNvdXJjZVN0cmluZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267254</attachid>
            <date>2015-12-12 22:17:50 -0800</date>
            <delta_ts>2015-12-13 01:26:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152203.diff</filename>
            <type>text/plain</type>
            <size>33241</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXggMmYzNzQyMy4u
ZTY1MDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAg
LTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURjo6YWRvcHRSZWYoKm5l
dyBPcGFxdWVKU1NjcmlwdCh2bSwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZSkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlk
ZQorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc291cmNlLmltcGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIFN0cmluZ1ZpZXcgc291
cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YTgyOGM3Li44NzNkZDg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxNS0xMi0xMiAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVkU2NyaXB0IGNvdWxkIGhh
dmUgYSBjb3B5LWZyZWUgcGF0aCBmb3IgYWxsLUFTQ0lJIHNjcmlwdHMuCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xNTIyMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBTb3VyY2VQcm92aWRlciB2ZW5kIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nLgorICAgICAgICBUaGlzIHJlbGF4ZXMgdGhlIHByb21pc2VzIHRo
YXQgcHJvdmlkZXJzIGhhdmUgdG8gbWFrZSBhYm91dCBzdHJpbmcgbGlmZXRpbWVzLgorCisgICAg
ICAgIFRoaXMgbWVhbnMgdGhhdCBvbiB0aGUgV2ViQ29yZSBzaWRlLCBDYWNoZWRTY3JpcHQgaXMg
ZnJlZSB0byBjYWNoZSBhIFN0cmluZworICAgICAgICBpbnRlcm5hbGx5LCB3aGlsZSBvbmx5IGV2
ZXIgZXhwb3NpbmcgaXQgYXMgYSB0ZW1wb3JhcnkgU3RyaW5nVmlldy4KKworICAgICAgICBBIGZl
dyBleHRyYSBjb3BpZXMgKENQVSwgbm90IG1lbW9yeSkgYXJlIGludHJvZHVjZWQsIG5vbmUgb2Yg
dGhlbSBvbiBob3QgcGF0aHMuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c291cmNlQ29kZUZvclRvb2xzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZhaWxlZFRvUGFy
c2VTb3VyY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChmdW5jdGlvbkhh
c0Jhc2ljQmxvY2tFeGVjdXRlZCk6CisgICAgICAgIChmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRp
b25Db3VudCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4
ZXI8VD46OnNldENvZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlND
OjpMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydCk6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6c2V0Q29kZVN0YXJ0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlBhcnNlcjo6Z2V0VG9rZW4pOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6dG9VVEY4KToKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZTo6dmlldyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldFJhbmdlKToKKyAgICAgICAgKiBydW50aW1l
L0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90
b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplT3ZlcnJpZGVJbmZvKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcik6CisKIDIwMTUtMTItMTIgIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtKU0NdIEFk
ZCBsb3dlcmluZyBmb3IgQjMncyBTdG9yZTggb3Bjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdiYWY5M2MuLjg3OWU0MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgQ1N0cmluZyBDb2RlQmxvY2s6OnNvdXJjZUNvZGVGb3JUb29scygpIGNvbnN0CiAgICAg
dW5zaWduZWQgcmFuZ2VFbmQgPSBkZWx0YSArIHVubGlua2VkLT5zdGFydE9mZnNldCgpICsgdW5s
aW5rZWQtPnNvdXJjZUxlbmd0aCgpOwogICAgIHJldHVybiB0b0NTdHJpbmcoCiAgICAgICAgICJm
dW5jdGlvbiAiLAotICAgICAgICBwcm92aWRlci0+c291cmNlKCkuaW1wbCgpLT51dGY4Rm9yUmFu
Z2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KSk7CisgICAgICAgIHByb3ZpZGVy
LT5zb3VyY2UoKS5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KS51
dGY4KCkpOwogfQogCiBDU3RyaW5nIENvZGVCbG9jazo6c291cmNlQ29kZU9uT25lTGluZSgpIGNv
bnN0CkBAIC01NTQsMTQgKzU1NCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFNvdXJjZShQcmlu
dFN0cmVhbSYgb3V0KQogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBvd25lclNj
cmlwdEV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFi
bGUoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAg
ICAgIFN0cmluZyBzb3VyY2UgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVy
KCktPmdldFJhbmdlKAorICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBmdW5jdGlv
bkV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAogICAgICAgICAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgKyAxKTsgLy8gVHlwZSBwcm9m
aWxpbmcgZW5kIG9mZnNldCBpcyB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgJ30nLgogICAgICAg
ICAKICAgICAgICAgb3V0LnByaW50KCJmdW5jdGlvbiAiLCBpbmZlcnJlZE5hbWUoKSwgc291cmNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBvdXQucHJpbnQoZXhlY3V0YWJsZS0+c291
cmNlKCkudG9TdHJpbmcoKSk7CisgICAgb3V0LnByaW50KGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZp
ZXcoKSk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRl
eCA4OTg5MWJkLi45OGM2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJT
ZXQmIGxpc3RlbmVycywgU291CiAKICAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2Ny
aXB0OwogICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRlci0+dXJsKCk7Ci0gICAgc2NyaXB0
LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKTsKKyAgICBzY3JpcHQuc291cmNlID0g
c291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAgc2NyaXB0LnN0YXJ0TGlu
ZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgp
OwogICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9u
KCkubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9
IGlzQ29udGVudFNjcmlwdDsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMs
IFNvdQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92
aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAg
U3RyaW5nIHVybCA9IHNvdXJjZVByb3ZpZGVyLT51cmwoKTsKLSAgICBjb25zdCBTdHJpbmcmIGRh
dGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCk7CisgICAgU3RyaW5nIGRhdGEgPSBzb3VyY2VQ
cm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc291cmNl
UHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKIAogICAgIFZl
Y3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gY29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDc4ZmZkOTEuLmZlMDJjNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtODQ5LDcgKzg0OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJv
Z3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKCiAKICAgICBW
ZWN0b3I8SlNPTlBEYXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKLSAgICBj
b25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3RyaW5nKCk7
CisgICAgU3RyaW5nVmlldyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudmlldygp
OwogICAgIGlmIChwcm9ncmFtU291cmNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCAyZTkxNGFiLi5jZmNlYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTQ2
NCw3ICsxNDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRU
eXBlRm9yRXhwcmVzc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBSRUxFQVNFX0FTU0VSVChl
eGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKICAgICBTdHJpbmcgc3Vic3RyaW5nID0gZXhl
Yy0+YXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWMpOwotICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4
dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNvdXJjZUNvZGVUZXh0LmZpbmQo
c3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkpOwogICAgIAog
ICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKS0+dHlwZUlu
Zm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3JOb3JtYWwsIG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZXhlYy0+dm0oKSk7CkBA
IC0xNTAyLDcgKzE1MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBzdWJzdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgc291
cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhzdWJzdHJpbmcpKTsKICAg
ICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJs
ZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTE1MjAsNyArMTUyMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291
bnQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQo
MSkuaXNTdHJpbmcoKSk7CiAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEp
LmdldFN0cmluZyhleGVjKTsKLSAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxl
LT5zb3VyY2UoKS50b1N0cmluZygpOworICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1
dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNv
dXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1YnN0cmluZykpOwogICAgIGludCBvZmZzZXQgPSBzb3Vy
Y2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9m
ZnNldCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA3
NjNiZGYxLi43NjRlZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApA
QCAtNTQzLDEwICs1NDMsMTAgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2xpbmVOdW1iZXIgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCk7CiAgICAgbV9sYXN0VG9rZW4gPSAtMTsKICAgICAKLSAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZVN0cmluZyA9IHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKKyAgICBT
dHJpbmdWaWV3IHNvdXJjZVN0cmluZyA9IHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKIAog
ICAgIGlmICghc291cmNlU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBzZXRDb2RlU3RhcnQoc291
cmNlU3RyaW5nLmltcGwoKSk7CisgICAgICAgIHNldENvZGVTdGFydChzb3VyY2VTdHJpbmcpOwog
ICAgIGVsc2UKICAgICAgICAgbV9jb2RlU3RhcnQgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggMTg2MmQ3Ny4uYzdiNjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lO
TElORSBjb25zdCBUKiBjdXJyZW50U291cmNlUHRyKCkgY29uc3Q7CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoY29uc3QgVCogc291cmNlUHRyLCB1bnNpZ25l
ZCBsaW5lU3RhcnRPZmZzZXQpIHsgc2V0T2Zmc2V0KG9mZnNldEZyb21Tb3VyY2VQdHIoc291cmNl
UHRyKSwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKik7CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdWaWV3Jik7CiAKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElk
ZW50aWZpZXIqIG1ha2VJZGVudGlmaWVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIG1ha2VJZGVudGlm
aWVyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKTsKQEAgLTI4OSwxNyAr
Mjg5LDE3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VF
bXB0eUlkZW50aWZpZXIoKQogfQogCiB0ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSB2b2lkIExl
eGVyPExDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0IFN0cmluZ0ltcGwqIHNvdXJjZVN0cmluZykK
K0FMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydChjb25zdCBTdHJp
bmdWaWV3JiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgQVNTRVJUKHNvdXJjZVN0cmluZy0+aXM4Qml0
KCkpOwotICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLT5jaGFyYWN0ZXJzOCgpOworICAg
IEFTU0VSVChzb3VyY2VTdHJpbmcuaXM4Qml0KCkpOworICAgIG1fY29kZVN0YXJ0ID0gc291cmNl
U3RyaW5nLmNoYXJhY3RlcnM4KCk7CiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZv
aWQgTGV4ZXI8VUNoYXI+OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nSW1wbCogc291cmNlU3Ry
aW5nKQorQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFVDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0
IFN0cmluZ1ZpZXcmIHNvdXJjZVN0cmluZykKIHsKLSAgICBBU1NFUlQoIXNvdXJjZVN0cmluZy0+
aXM4Qml0KCkpOwotICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLT5jaGFyYWN0ZXJzMTYo
KTsKKyAgICBBU1NFUlQoIXNvdXJjZVN0cmluZy5pczhCaXQoKSk7CisgICAgbV9jb2RlU3RhcnQg
PSBzb3VyY2VTdHJpbmcuY2hhcmFjdGVyczE2KCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMjYyZmY5Ni4uZTViNjJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC05OTAsNyArOTkwLDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIHByaW50VW5leHBlY3RlZFRva2VuVGV4dChX
VEY6OlByaW50U3RyZWFtJik7Ci0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgZ2V0VG9rZW4oKSB7
CisgICAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IGdldFRva2VuKCkgewogICAgICAgICBTb3Vy
Y2VQcm92aWRlciogc291cmNlUHJvdmlkZXIgPSBtX3NvdXJjZS0+cHJvdmlkZXIoKTsKICAgICAg
ICAgcmV0dXJuIHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5nZSh0b2tlblN0YXJ0KCksIHRva2VuRW5k
UG9zaXRpb24oKS5vZmZzZXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuY3BwCmluZGV4IDhlZjE2OGQuLmM0MzBlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBDU3RyaW5n
IFNvdXJjZUNvZGU6OnRvVVRGOCgpIGNvbnN0CiAgICAgaWYgKCFtX3Byb3ZpZGVyKQogICAgICAg
ICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CiAgICAgCi0gICAgcmV0dXJuIG1fcHJvdmlkZXItPnNv
dXJjZSgpLmltcGwoKS0+dXRmOEZvclJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIgLSBtX3N0
YXJ0Q2hhcik7CisgICAgcmV0dXJuIG1fcHJvdmlkZXItPnNvdXJjZSgpLnN1YnN0cmluZyhtX3N0
YXJ0Q2hhciwgbV9lbmRDaGFyIC0gbV9zdGFydENoYXIpLnV0ZjgoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCmluZGV4
IDdmMzdlY2YuLjczZDZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCkBAIC03OSwxMCArNzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCi0gICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0CisgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQobV9wcm92aWRlcik7CisgICAgICAgICAgICByZXR1cm4gbV9wcm92aWRlci0+aGFz
aCgpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nVmlldyB2aWV3KCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX3Byb3ZpZGVyKQotICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogICAgICAg
ICAgICAgcmV0dXJuIG1fcHJvdmlkZXItPmdldFJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIp
OwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZUNvZGVLZXkuaAppbmRleCA4ZDQ5YTdlLi4wOWY4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8
PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgp
KQorICAgICAgICAsIG1faGFzaChzb3VyY2VDb2RlLmhhc2goKSkKICAgICB7CiAgICAgfQogCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21w
dXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCiAgICAg
Ly8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4K
LSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5n
KCk7IH0KKyAgICBTdHJpbmdWaWV3IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29k
ZS52aWV3KCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBv
dGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgKaW5kZXggNGY5ODRlYi4uNmI0NzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtNDMsMTAgKzQzLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflNvdXJjZVBy
b3ZpZGVyKCk7CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICAgICAgU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QK
KyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0
dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3QgPSAwOworICAgICAgICBTdHJpbmdWaWV3IGdl
dFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHNvdXJjZSgpLnN1YnN0cmluZ1NoYXJpbmdJbXBsKHN0YXJ0LCBlbmQgLSBzdGFydCk7
CisgICAgICAgICAgICByZXR1cm4gc291cmNlKCkuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFy
dCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC04Niw4ICs4NywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIo
c291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX3NvdXJjZS5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB2aXJ0
dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG1fc291cmNlOwogICAgICAgICB9CkBAIC0xMTAsNyArMTE2LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXNzZW1i
bHlTb3VyY2VQcm92aWRlcihkYXRhLCB1cmwpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1f
c291cmNlLmltcGwoKS0+aGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBTdHJp
bmdWaWV3IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NvdXJjZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAppbmRleCAwMmYzOTVjLi4xNTUwNTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAogICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4g
c291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCBy
ZWdpc3RyeSBlbnRyeS4KLSAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92aWRl
KGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9T
dHJpbmcoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVj
LCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpGZXRjaCwgc291cmNlLnZpZXcoKS50
b1N0cmluZygpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biByZWplY3RQcm9taXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBnaXZlbiBzb3Vy
Y2UgY29kZSB0byB0aGUgTW9kdWxlTG9hZGVyIHJlZ2lzdHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lz
dHJ5IGVudHJ5LgotICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGUoZXhl
Yywga2V5LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0Y2gsIHNvdXJjZS50b1N0cmlu
ZygpKTsKKyAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92aWRlKGV4ZWMsIGtl
eSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudmlldygpLnRvU3Ry
aW5nKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJl
amVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBjMDU0OWQ4Li40ZjE0ZGMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgaW50IGV4cHJlc3Np
b25TdGFydCA9IGRpdm90UG9pbnQgLSBzdGFydE9mZnNldDsKICAgICBpbnQgZXhwcmVzc2lvblN0
b3AgPSBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0OwogCi0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcgPSBjb2RlQmxvY2stPnNvdXJjZSgpLT5zb3VyY2UoKTsKKyAgICBTdHJpbmdWaWV3IHNv
dXJjZVN0cmluZyA9IGNvZGVCbG9jay0+c291cmNlKCktPnNvdXJjZSgpOwogICAgIGlmICghZXhw
cmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VT
dHJpbmcubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC03MSwyNCArNzEsMjMg
QEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
RXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgIAogICAgIFN0cmluZyBtZXNzYWdlID0gYXNT
dHJpbmcoanNNZXNzYWdlKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBpZiAoZXhwcmVzc2lvblN0
YXJ0IDwgZXhwcmVzc2lvblN0b3ApCi0gICAgICAgIG1lc3NhZ2UgPSBhcHBlbmRlcihtZXNzYWdl
LCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25TdG9wKSAsIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOworICAgICAg
ICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFu
Z2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJy
b3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIE5v
IHJhbmdlIGluZm9ybWF0aW9uLCBzbyBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dC4K
LSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSA9IHNvdXJjZVN0cmluZy5pbXBsKCk7CiAg
ICAgICAgIGludCBkYXRhTGVuZ3RoID0gc291cmNlU3RyaW5nLmxlbmd0aCgpOwogICAgICAgICBp
bnQgc3RhcnQgPSBleHByZXNzaW9uU3RhcnQ7CiAgICAgICAgIGludCBzdG9wID0gZXhwcmVzc2lv
blN0YXJ0OwogICAgICAgICAvLyBHZXQgdXAgdG8gMjAgY2hhcmFjdGVycyBvZiBjb250ZXh0IHRv
IHRoZSBsZWZ0IGFuZCByaWdodCBvZiB0aGUgZGl2b3QsIGNsYW1waW5nIHRvIHRoZSBsaW5lLgog
ICAgICAgICAvLyBUaGVuIHN0cmlwIHdoaXRlc3BhY2UuCi0gICAgICAgIHdoaWxlIChzdGFydCA+
IDAgJiYgKGV4cHJlc3Npb25TdGFydCAtIHN0YXJ0IDwgMjApICYmICgqZGF0YSlbc3RhcnQgLSAx
XSAhPSAnXG4nKQorICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIChleHByZXNzaW9uU3RhcnQg
LSBzdGFydCA8IDIwKSAmJiBzb3VyY2VTdHJpbmdbc3RhcnQgLSAxXSAhPSAnXG4nKQogICAgICAg
ICAgICAgc3RhcnQtLTsKLSAgICAgICAgd2hpbGUgKHN0YXJ0IDwgKGV4cHJlc3Npb25TdGFydCAt
IDEpICYmIGlzU3RyV2hpdGVTcGFjZSgoKmRhdGEpW3N0YXJ0XSkpCisgICAgICAgIHdoaWxlIChz
dGFydCA8IChleHByZXNzaW9uU3RhcnQgLSAxKSAmJiBpc1N0cldoaXRlU3BhY2Uoc291cmNlU3Ry
aW5nW3N0YXJ0XSkpCiAgICAgICAgICAgICBzdGFydCsrOwotICAgICAgICB3aGlsZSAoc3RvcCA8
IGRhdGFMZW5ndGggJiYgKHN0b3AgLSBleHByZXNzaW9uU3RhcnQgPCAyMCkgJiYgKCpkYXRhKVtz
dG9wXSAhPSAnXG4nKQorICAgICAgICB3aGlsZSAoc3RvcCA8IGRhdGFMZW5ndGggJiYgKHN0b3Ag
LSBleHByZXNzaW9uU3RhcnQgPCAyMCkgJiYgc291cmNlU3RyaW5nW3N0b3BdICE9ICdcbicpCiAg
ICAgICAgICAgICBzdG9wKys7Ci0gICAgICAgIHdoaWxlIChzdG9wID4gZXhwcmVzc2lvblN0YXJ0
ICYmIGlzU3RyV2hpdGVTcGFjZSgoKmRhdGEpW3N0b3AgLSAxXSkpCisgICAgICAgIHdoaWxlIChz
dG9wID4gZXhwcmVzc2lvblN0YXJ0ICYmIGlzU3RyV2hpdGVTcGFjZShzb3VyY2VTdHJpbmdbc3Rv
cCAtIDFdKSkKICAgICAgICAgICAgIHN0b3AtLTsKLSAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVy
KG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgdHlw
ZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSk7CisgICAgICAgIG1lc3Nh
Z2UgPSBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShzdGFy
dCwgc3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0
ZVNvdXJjZSk7CiAgICAgfQogICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp2bSwgdm0tPnByb3Bl
cnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKHZtLCBtZXNzYWdlKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBh
YTg3NTYxLi42YjdhNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CiAgICAgICAgIAotICAgICAgICBT
dHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uo
CisgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlk
ZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRP
ZmZzZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgp
ICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1
bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmluZGV4IDIwMzRkNjAuLjJlMzI4YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIEZ1bmN0aW9uT3ZlcnJpZGVzOjpGdW5jdGlvbk92ZXJyaWRl
cyhjb25zdCBjaGFyKiBvdmVycmlkZXNGaWxlTmFtZSkKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBu
ZXdCb2R5LCBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvJiBpbmZvKQogewotICAgIFN0
cmluZyBvcmlnUHJvdmlkZXJTdHIgPSBvcmlnQ29kZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKKyAg
ICBTdHJpbmcgb3JpZ1Byb3ZpZGVyU3RyID0gb3JpZ0NvZGUucHJvdmlkZXIoKS0+c291cmNlKCku
dG9TdHJpbmcoKTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdDb2RlLnN0YXJ0
T2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJT
dHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ0JyYWNlU3RhcnQpOwogICAgIHVuc2lnbmVk
IGhlYWRlckxlbmd0aCA9IG9yaWdCcmFjZVN0YXJ0IC0gb3JpZ0Z1bmN0aW9uU3RhcnQ7CkBAIC0x
MzUsNyArMTM1LDcgQEAgYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6ZU92ZXJyaWRl
Rm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGkKICAgICBBU1NFUlQoT3B0aW9u
czo6ZnVuY3Rpb25PdmVycmlkZXMoKSk7CiAgICAgRnVuY3Rpb25PdmVycmlkZXMmIG92ZXJyaWRl
cyA9IEZ1bmN0aW9uT3ZlcnJpZGVzOjpvdmVycmlkZXMoKTsKIAotICAgIGF1dG8gaXQgPSBvdmVy
cmlkZXMubV9lbnRyaWVzLmZpbmQob3JpZ0NvZGUudG9TdHJpbmcoKSk7CisgICAgYXV0byBpdCA9
IG92ZXJyaWRlcy5tX2VudHJpZXMuZmluZChvcmlnQ29kZS52aWV3KCkudG9TdHJpbmcoKSk7CiAg
ICAgaWYgKGl0ID09IG92ZXJyaWRlcy5tX2VudHJpZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwIGIvU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCmluZGV4IDA2ODkzMWUuLjMzNjQ0MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5jcHAKQEAgLTUzLDYgKzUzLDExIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgb3V0LnByaW50ZigiJXMi
LCBzdHJpbmcpOwogfQogCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nKQoreworICAgIG91dC5wcmludChzdHJpbmcudXRmOCgpKTsK
K30KKwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHsKICAgICBvdXQucHJpbnQoc3RyaW5nLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0u
aAppbmRleCA5NWFjZGZhLi5hNWY1ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Qcmlu
dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTQwLDYgKzQw
LDcgQEAgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKIGNsYXNzIENTdHJpbmc7CiBjbGFzcyBTdHJp
bmc7CiBjbGFzcyBTdHJpbmdJbXBsOworY2xhc3MgU3RyaW5nVmlldzsKIGNsYXNzIFVuaXF1ZWRT
dHJpbmdJbXBsOwogCiBjbGFzcyBQcmludFN0cmVhbSB7CkBAIC03MCw2ICs3MSw3IEBAIHB1Ymxp
YzoKIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgY29uc3QgU3RyaW5nVmlldyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBj
b25zdCBTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI1YzVhNC4uODY1NTRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEyLTExICBBbmRyZWFzIEtsaW5nICA8YWtsaW5n
QGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZWRTY3JpcHQgY291bGQgaGF2ZSBhIGNvcHktZnJl
ZSBwYXRoIGZvciBhbGwtQVNDSUkgc2NyaXB0cy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MjIwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYW55IChpZiBub3QgbW9zdCkgb2Ygc2NyaXB0IHJlc291cmNlcyBvbiB0aGUgd2ViIGNv
bnRhaW4gbm90aGluZyBidXQgQVNDSUkgY2hhcmFjdGVycy4KKyAgICAgICAgU3VjaCByZXNvdXJj
ZXMsIHdoZW4gc3RyZWFtZWQgdGhyb3VnaCBhIHRleHQgZGVjb2Rlciwgd2lsbCB5aWVsZCB0aGUg
ZXhhY3Qgc2FtZSBieXRlCisgICAgICAgIHNlcXVlbmNlLCBleGNlcHQgaW4gYW5vbnltb3VzIGhl
YXAgbWVtb3J5IGluc3RlYWQgb2YgZGVsaWNpb3VzIGZpbGUtYmFja2VkIHBhZ2VzLgorCisgICAg
ICAgIENhcmUgaXMgdGFrZW4gdG8gZW5zdXJlIHRoYXQgdGhlIHdyYXBwZXIgU3RyaW5nSW1wbCBp
cyB1cGRhdGVkIHRvIHRhcmdldCBuZXdseSBjYWNoZWQKKyAgICAgICAgcmVzb3VyY2UgZGF0YSBp
ZiBhbiBhc3luY2hyb25vdXMgY2FjaGluZyBub3RpZmljYXRpb24gY29tZXMgaW4uCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kaW5nTWF5QmVBbGxB
U0NJSSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OnNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKToKKwogMjAxNS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtZHVwbGljYXRlLWtleXBhdGhzLmh0bWwgZmFpbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCAyYTIy
OGQzLi5mY2NlYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgog
ICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIAotICAg
IGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNj
cmlwdCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y2FjaGVkU2NyaXB0LT5zY3JpcHRIYXNoKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKTsgfQogCiBwcml2
YXRlOgogICAgIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKENhY2hlZFNjcmlwdCogY2FjaGVk
U2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291
cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5o
CmluZGV4IDJkM2MxNTkuLjc4NTQzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7
IH0KIAotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
ci0+c291cmNlKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdmlkZXItPnNvdXJjZSgpOyB9CiAKICAgICBpbnQgc3RhcnRMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlLmZpcnN0TGluZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDE3YjU2Mi4uMGUwMDAyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTE2MSw3
ICsxNjEsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50
KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICAgICAgKnJlc3VsdCA9
IGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KCpjYWNoZWRSZXNvdXJjZSkuc2hlZXRUZXh0
KCk7CiAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdC0+aXNOdWxsKCk7CiAgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgICAgICpyZXN1bHQgPSBkb3duY2FzdDxD
YWNoZWRTY3JpcHQ+KCpjYWNoZWRSZXNvdXJjZSkuc2NyaXB0KCk7CisgICAgICAgICAgICAqcmVz
dWx0ID0gZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PigqY2FjaGVkUmVzb3VyY2UpLnNjcmlwdCgpLnRv
U3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKICAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGNhY2hl
ZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggN2ZhMTJlZS4uZTA5NWU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC03ODcsNyAr
Nzg3LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAobV9kYXRhLT5zaXplKCkgIT0gbmV3QnVmZmVy
LnNpemUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5ld0J1ZmZlci5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT50cnlSZXBsYWNlQ29u
dGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKTsKKyAgICBpZiAobV9kYXRhLT50cnlS
ZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKSkgeworICAgICAgICBk
aWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBjYWxsIGNoZWNrTm90aWZ5KCkgaGVyZSB0byBtb3ZlIGFscmVhZHktZGVjb2RlZCBpbWFn
ZXMgdG8gdGhlIG5ldyBkYXRhIHNvdXJjZT8KKyAgICB9CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBiN2JmYTcxLi5hNDUy
M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApA
QCAtMjY3LDYgKzI2Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldERlY29kZWRTaXplKHVu
c2lnbmVkKTsKICAgICB2b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3RhbXAp
OwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIHsg
fQorCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0YSBtZW1iZXJzIHBy
aXZhdGUgYW5kIHVzZSBmdW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGluc3RlYWQuCiAgICAg
SGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCAyZjhhZTNjLi5jNDU5MDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtNjksMTYgKzY5LDUy
IEBAIFN0cmluZyBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS5sb3dlcigpOwogfQogCi1jb25zdCBTdHJpbmcmIENh
Y2hlZFNjcmlwdDo6c2NyaXB0KCkKK3N0YXRpYyBib29sIGVuY29kaW5nTWF5QmVBbGxBU0NJSShj
b25zdCBTdHJpbmcmIGVuY29kaW5nKQoreworICAgIHJldHVybiBlbmNvZGluZyA9PSAiVVRGLTgi
IHx8IGVuY29kaW5nID09ICJJU08tODg1OS0xIiB8fCBlbmNvZGluZyA9PSAiQVNDSUkiOworfQor
CitTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKIHsKICAgICBpZiAoIW1fc2NyaXB0
ICYmIG1fZGF0YSkgeworICAgICAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IFVu
a25vd24KKyAgICAgICAgICAgICYmIGVuY29kaW5nTWF5QmVBbGxBU0NJSShlbmNvZGluZygpKQor
ICAgICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkKKyAgICAgICAgICAgICYmIGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkp
LCBtX2RhdGEtPnNpemUoKSkpIHsKKworICAgICAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9k
YXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBtX0FTQ0lJT3B0aW1p
emF0aW9uU3RhdGUgPSBPcHRpbWl6ZWQ7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBlbmNvZGVk
IGFuZCBkZWNvZGVkIGRhdGEgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBkZWNvZGVkIGRhdGEg
Y29zdCEKKyAgICAgICAgICAgIHNldERlY29kZWRTaXplKDApOworICAgICAgICAgICAgbV9kZWNv
ZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOworICAgICAgICAgICAgcmV0dXJuIG1fc2NyaXB0
OworICAgICAgICB9CiAgICAgICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fQVNDSUlPcHRpbWl6
YXRpb25TdGF0ZSA9IE5vdE9wdGltaXplZDsKICAgICAgICAgc2V0RGVjb2RlZFNpemUobV9zY3Jp
cHQuc2l6ZUluQnl0ZXMoKSk7CiAgICAgfQotICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVy
LnJlc3RhcnQoKTsKKyAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IE5vdE9wdGlt
aXplZCkKKyAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIucmVzdGFydCgpOwogICAg
IHJldHVybiBtX3NjcmlwdDsKIH0KIAordW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNo
KCkKK3sKKyAgICBzY3JpcHQoKTsKKyAgICByZXR1cm4gbV9zY3JpcHQuaW1wbCgpLT5oYXNoKCk7
Cit9CisKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMo
KQoreworICAgIC8vIFdlIHJlY2VpdmUgdGhpcyBjYWxsYmFjayB3aGVuIHRoZSBDYWNoZWRSZXNv
dXJjZSdzIGludGVybmFsIFNoYXJlZEJ1ZmZlciBoYXMgaGFkIGl0cyBjb250ZW50cworICAgIC8v
IHJlcGxhY2VkIGJ5IHRoZSBtZW1vcnktbWFwcGluZy1vZi1maWxlLWJhY2tlZC1yZXNvdXJjZXMg
b3B0aW1pemF0aW9uLiBJZiBtX3NjcmlwdCBpcyBqdXN0IGEKKyAgICAvLyBub24tY29weWluZyB3
cmFwcGVyIGFyb3VuZCB0aGUgb2xkIFNoYXJlZEJ1ZmZlciBjb250ZW50cywgd2UgaGF2ZSB0byBy
ZXRhcmdldCBpdC4KKyAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IE9wdGltaXpl
ZCkKKyAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNp
emUoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50
cygpOworfQorCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MzhlOTE4Li5lMTM4NDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0zNyw3ICszNyw4IEBAIHB1YmxpYzoK
ICAgICBDYWNoZWRTY3JpcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0LCBTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdCgpOwogCi0gICAg
Y29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKKyAgICBTdHJpbmdWaWV3IHNjcmlwdCgpOworICAgIHVu
c2lnbmVkIHNjcmlwdEhhc2goKTsKIAogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCkBA
IC00NSw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBib29sIG1pbWVUeXBlQWxsb3dlZEJ5Tm9zbmlm
ZigpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBs
YWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTU3
LDYgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fc2NyaXB0OworCisgICAgZW51bSBBU0NJSVJl
c291cmNlT3B0aW1pemF0aW9uU3RhdGUgeyBVbmtub3duLCBPcHRpbWl6ZWQsIE5vdE9wdGltaXpl
ZCB9OworICAgIEFTQ0lJUmVzb3VyY2VPcHRpbWl6YXRpb25TdGF0ZSBtX0FTQ0lJT3B0aW1pemF0
aW9uU3RhdGUgeyBVbmtub3duIH07CisKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4g
bV9kZWNvZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRl
eCA0MDMwYmRhLi5hYTQwOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICAvLyAgICAgIH0KICAgICBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQg
cG9zaXRpb24gPSAwKSBjb25zdDsKIAotICAgIHZvaWQgdHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBs
YXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgdHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzUGxhdGZvcm1EYXRhKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgRGF0YUJ1ZmZlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhQnVmZmVyPiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggMmE3NWU1Ni4uYjlmNmU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAt
OTIsMTMgKzkyLDE0IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiAg
ICAgbV9jZkRhdGEgPSAwOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRl
bnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCitib29sIFNo
YXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgbmV3Q29udGVudHMpCiB7CiAgICAgaWYgKCFuZXdDb250ZW50cy5tX2NmRGF0YSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjbGVhcigpOwogICAg
IG1fY2ZEYXRhID0gbmV3Q29udGVudHMubV9jZkRhdGE7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjptYXliZUFwcGVuZFBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIq
IG5ld0NvbnRlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9T
aGFyZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVk
QnVmZmVyU291cC5jcHAKaW5kZXggY2JkYjMzNy4uYjIyOTY2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBAIC04MSwxMSArODEs
MTIgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om1heWJlQXBwZW5kUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciopCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3Jt
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiB7CiAgICAgaWYgKCFuZXdDb250ZW50
cy5oYXNQbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBjbGVhcigpOwogICAgIC8vIEZJWE1FOiBVc2UgR1JlZlB0ciBpbnN0ZWFkIG9m
IEdVbmlxdWVQdHIgZm9yIHRoZSBTb3VwQnVmZmVyLgogICAgIG1fc291cEJ1ZmZlci5zd2FwKG5l
d0NvbnRlbnRzLm1fc291cEJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCmluZGV4IDdiNWM0ODQuLjcwYjhlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVBy
b3ZpZGVyKiBzb3VyY2VQcm92aWRlcikKIHsKLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
ZyA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKTsKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0
cmluZyA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgIGlmIChzb3Vy
Y2VTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBzb3Vy
Y2VTdHJpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267256</attachid>
            <date>2015-12-13 01:26:51 -0800</date>
            <delta_ts>2015-12-13 11:09:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152203-2.diff</filename>
            <type>text/plain</type>
            <size>33349</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXggMmYzNzQyMy4u
ZTY1MDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAg
LTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURjo6YWRvcHRSZWYoKm5l
dyBPcGFxdWVKU1NjcmlwdCh2bSwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZSkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlk
ZQorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc291cmNlLmltcGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIFN0cmluZ1ZpZXcgc291
cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YTgyOGM3Li44NzNkZDg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxNS0xMi0xMiAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVkU2NyaXB0IGNvdWxkIGhh
dmUgYSBjb3B5LWZyZWUgcGF0aCBmb3IgYWxsLUFTQ0lJIHNjcmlwdHMuCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xNTIyMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBTb3VyY2VQcm92aWRlciB2ZW5kIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nLgorICAgICAgICBUaGlzIHJlbGF4ZXMgdGhlIHByb21pc2VzIHRo
YXQgcHJvdmlkZXJzIGhhdmUgdG8gbWFrZSBhYm91dCBzdHJpbmcgbGlmZXRpbWVzLgorCisgICAg
ICAgIFRoaXMgbWVhbnMgdGhhdCBvbiB0aGUgV2ViQ29yZSBzaWRlLCBDYWNoZWRTY3JpcHQgaXMg
ZnJlZSB0byBjYWNoZSBhIFN0cmluZworICAgICAgICBpbnRlcm5hbGx5LCB3aGlsZSBvbmx5IGV2
ZXIgZXhwb3NpbmcgaXQgYXMgYSB0ZW1wb3JhcnkgU3RyaW5nVmlldy4KKworICAgICAgICBBIGZl
dyBleHRyYSBjb3BpZXMgKENQVSwgbm90IG1lbW9yeSkgYXJlIGludHJvZHVjZWQsIG5vbmUgb2Yg
dGhlbSBvbiBob3QgcGF0aHMuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c291cmNlQ29kZUZvclRvb2xzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZhaWxlZFRvUGFy
c2VTb3VyY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChmdW5jdGlvbkhh
c0Jhc2ljQmxvY2tFeGVjdXRlZCk6CisgICAgICAgIChmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRp
b25Db3VudCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4
ZXI8VD46OnNldENvZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlND
OjpMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydCk6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6c2V0Q29kZVN0YXJ0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlBhcnNlcjo6Z2V0VG9rZW4pOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6dG9VVEY4KToKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZTo6dmlldyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldFJhbmdlKToKKyAgICAgICAgKiBydW50aW1l
L0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90
b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplT3ZlcnJpZGVJbmZvKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcik6CisKIDIwMTUtMTItMTIgIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtKU0NdIEFk
ZCBsb3dlcmluZyBmb3IgQjMncyBTdG9yZTggb3Bjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdiYWY5M2MuLjg3OWU0MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgQ1N0cmluZyBDb2RlQmxvY2s6OnNvdXJjZUNvZGVGb3JUb29scygpIGNvbnN0CiAgICAg
dW5zaWduZWQgcmFuZ2VFbmQgPSBkZWx0YSArIHVubGlua2VkLT5zdGFydE9mZnNldCgpICsgdW5s
aW5rZWQtPnNvdXJjZUxlbmd0aCgpOwogICAgIHJldHVybiB0b0NTdHJpbmcoCiAgICAgICAgICJm
dW5jdGlvbiAiLAotICAgICAgICBwcm92aWRlci0+c291cmNlKCkuaW1wbCgpLT51dGY4Rm9yUmFu
Z2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KSk7CisgICAgICAgIHByb3ZpZGVy
LT5zb3VyY2UoKS5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KS51
dGY4KCkpOwogfQogCiBDU3RyaW5nIENvZGVCbG9jazo6c291cmNlQ29kZU9uT25lTGluZSgpIGNv
bnN0CkBAIC01NTQsMTQgKzU1NCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFNvdXJjZShQcmlu
dFN0cmVhbSYgb3V0KQogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBvd25lclNj
cmlwdEV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFi
bGUoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAg
ICAgIFN0cmluZyBzb3VyY2UgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVy
KCktPmdldFJhbmdlKAorICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBmdW5jdGlv
bkV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAogICAgICAgICAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgKyAxKTsgLy8gVHlwZSBwcm9m
aWxpbmcgZW5kIG9mZnNldCBpcyB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgJ30nLgogICAgICAg
ICAKICAgICAgICAgb3V0LnByaW50KCJmdW5jdGlvbiAiLCBpbmZlcnJlZE5hbWUoKSwgc291cmNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBvdXQucHJpbnQoZXhlY3V0YWJsZS0+c291
cmNlKCkudG9TdHJpbmcoKSk7CisgICAgb3V0LnByaW50KGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZp
ZXcoKSk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRl
eCA4OTg5MWJkLi45OGM2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJT
ZXQmIGxpc3RlbmVycywgU291CiAKICAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2Ny
aXB0OwogICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRlci0+dXJsKCk7Ci0gICAgc2NyaXB0
LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKTsKKyAgICBzY3JpcHQuc291cmNlID0g
c291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAgc2NyaXB0LnN0YXJ0TGlu
ZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgp
OwogICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9u
KCkubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9
IGlzQ29udGVudFNjcmlwdDsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMs
IFNvdQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92
aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAg
U3RyaW5nIHVybCA9IHNvdXJjZVByb3ZpZGVyLT51cmwoKTsKLSAgICBjb25zdCBTdHJpbmcmIGRh
dGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCk7CisgICAgU3RyaW5nIGRhdGEgPSBzb3VyY2VQ
cm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc291cmNl
UHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKIAogICAgIFZl
Y3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gY29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDc4ZmZkOTEuLmZlMDJjNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtODQ5LDcgKzg0OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJv
Z3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKCiAKICAgICBW
ZWN0b3I8SlNPTlBEYXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKLSAgICBj
b25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3RyaW5nKCk7
CisgICAgU3RyaW5nVmlldyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudmlldygp
OwogICAgIGlmIChwcm9ncmFtU291cmNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCAyZTkxNGFiLi5jZmNlYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTQ2
NCw3ICsxNDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRU
eXBlRm9yRXhwcmVzc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBSRUxFQVNFX0FTU0VSVChl
eGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKICAgICBTdHJpbmcgc3Vic3RyaW5nID0gZXhl
Yy0+YXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWMpOwotICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4
dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNvdXJjZUNvZGVUZXh0LmZpbmQo
c3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkpOwogICAgIAog
ICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKS0+dHlwZUlu
Zm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3JOb3JtYWwsIG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZXhlYy0+dm0oKSk7CkBA
IC0xNTAyLDcgKzE1MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBzdWJzdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgc291
cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhzdWJzdHJpbmcpKTsKICAg
ICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJs
ZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTE1MjAsNyArMTUyMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291
bnQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQo
MSkuaXNTdHJpbmcoKSk7CiAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEp
LmdldFN0cmluZyhleGVjKTsKLSAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxl
LT5zb3VyY2UoKS50b1N0cmluZygpOworICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1
dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNv
dXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1YnN0cmluZykpOwogICAgIGludCBvZmZzZXQgPSBzb3Vy
Y2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9m
ZnNldCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA3
NjNiZGYxLi43NjRlZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApA
QCAtNTQzLDEwICs1NDMsMTAgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2xpbmVOdW1iZXIgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCk7CiAgICAgbV9sYXN0VG9rZW4gPSAtMTsKICAgICAKLSAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZVN0cmluZyA9IHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKKyAgICBT
dHJpbmdWaWV3IHNvdXJjZVN0cmluZyA9IHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKIAog
ICAgIGlmICghc291cmNlU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBzZXRDb2RlU3RhcnQoc291
cmNlU3RyaW5nLmltcGwoKSk7CisgICAgICAgIHNldENvZGVTdGFydChzb3VyY2VTdHJpbmcpOwog
ICAgIGVsc2UKICAgICAgICAgbV9jb2RlU3RhcnQgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggMTg2MmQ3Ny4uYzdiNjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lO
TElORSBjb25zdCBUKiBjdXJyZW50U291cmNlUHRyKCkgY29uc3Q7CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoY29uc3QgVCogc291cmNlUHRyLCB1bnNpZ25l
ZCBsaW5lU3RhcnRPZmZzZXQpIHsgc2V0T2Zmc2V0KG9mZnNldEZyb21Tb3VyY2VQdHIoc291cmNl
UHRyKSwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKik7CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdWaWV3Jik7CiAKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElk
ZW50aWZpZXIqIG1ha2VJZGVudGlmaWVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIG1ha2VJZGVudGlm
aWVyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKTsKQEAgLTI4OSwxNyAr
Mjg5LDE3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VF
bXB0eUlkZW50aWZpZXIoKQogfQogCiB0ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSB2b2lkIExl
eGVyPExDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0IFN0cmluZ0ltcGwqIHNvdXJjZVN0cmluZykK
K0FMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydChjb25zdCBTdHJp
bmdWaWV3JiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgQVNTRVJUKHNvdXJjZVN0cmluZy0+aXM4Qml0
KCkpOwotICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLT5jaGFyYWN0ZXJzOCgpOworICAg
IEFTU0VSVChzb3VyY2VTdHJpbmcuaXM4Qml0KCkpOworICAgIG1fY29kZVN0YXJ0ID0gc291cmNl
U3RyaW5nLmNoYXJhY3RlcnM4KCk7CiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZv
aWQgTGV4ZXI8VUNoYXI+OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nSW1wbCogc291cmNlU3Ry
aW5nKQorQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFVDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0
IFN0cmluZ1ZpZXcmIHNvdXJjZVN0cmluZykKIHsKLSAgICBBU1NFUlQoIXNvdXJjZVN0cmluZy0+
aXM4Qml0KCkpOwotICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLT5jaGFyYWN0ZXJzMTYo
KTsKKyAgICBBU1NFUlQoIXNvdXJjZVN0cmluZy5pczhCaXQoKSk7CisgICAgbV9jb2RlU3RhcnQg
PSBzb3VyY2VTdHJpbmcuY2hhcmFjdGVyczE2KCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMjYyZmY5Ni4uZTViNjJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC05OTAsNyArOTkwLDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIHByaW50VW5leHBlY3RlZFRva2VuVGV4dChX
VEY6OlByaW50U3RyZWFtJik7Ci0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgZ2V0VG9rZW4oKSB7
CisgICAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IGdldFRva2VuKCkgewogICAgICAgICBTb3Vy
Y2VQcm92aWRlciogc291cmNlUHJvdmlkZXIgPSBtX3NvdXJjZS0+cHJvdmlkZXIoKTsKICAgICAg
ICAgcmV0dXJuIHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5nZSh0b2tlblN0YXJ0KCksIHRva2VuRW5k
UG9zaXRpb24oKS5vZmZzZXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuY3BwCmluZGV4IDhlZjE2OGQuLmM0MzBlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBDU3RyaW5n
IFNvdXJjZUNvZGU6OnRvVVRGOCgpIGNvbnN0CiAgICAgaWYgKCFtX3Byb3ZpZGVyKQogICAgICAg
ICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CiAgICAgCi0gICAgcmV0dXJuIG1fcHJvdmlkZXItPnNv
dXJjZSgpLmltcGwoKS0+dXRmOEZvclJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIgLSBtX3N0
YXJ0Q2hhcik7CisgICAgcmV0dXJuIG1fcHJvdmlkZXItPnNvdXJjZSgpLnN1YnN0cmluZyhtX3N0
YXJ0Q2hhciwgbV9lbmRDaGFyIC0gbV9zdGFydENoYXIpLnV0ZjgoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCmluZGV4
IDdmMzdlY2YuLjczZDZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCkBAIC03OSwxMCArNzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCi0gICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0CisgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQobV9wcm92aWRlcik7CisgICAgICAgICAgICByZXR1cm4gbV9wcm92aWRlci0+aGFz
aCgpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nVmlldyB2aWV3KCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX3Byb3ZpZGVyKQotICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogICAgICAg
ICAgICAgcmV0dXJuIG1fcHJvdmlkZXItPmdldFJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIp
OwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZUNvZGVLZXkuaAppbmRleCA4ZDQ5YTdlLi4wOWY4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8
PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgp
KQorICAgICAgICAsIG1faGFzaChzb3VyY2VDb2RlLmhhc2goKSkKICAgICB7CiAgICAgfQogCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21w
dXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCiAgICAg
Ly8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4K
LSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5n
KCk7IH0KKyAgICBTdHJpbmdWaWV3IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29k
ZS52aWV3KCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBv
dGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgKaW5kZXggNGY5ODRlYi4uNmI0NzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtNDMsMTAgKzQzLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflNvdXJjZVBy
b3ZpZGVyKCk7CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICAgICAgU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QK
KyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0
dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3QgPSAwOworICAgICAgICBTdHJpbmdWaWV3IGdl
dFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHNvdXJjZSgpLnN1YnN0cmluZ1NoYXJpbmdJbXBsKHN0YXJ0LCBlbmQgLSBzdGFydCk7
CisgICAgICAgICAgICByZXR1cm4gc291cmNlKCkuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFy
dCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC04Niw4ICs4NywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIo
c291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX3NvdXJjZS5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB2aXJ0
dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG1fc291cmNlOwogICAgICAgICB9CkBAIC0xMTAsNyArMTE2LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXNzZW1i
bHlTb3VyY2VQcm92aWRlcihkYXRhLCB1cmwpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1f
c291cmNlLmltcGwoKS0+aGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBTdHJp
bmdWaWV3IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NvdXJjZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAppbmRleCAwMmYzOTVjLi4xNTUwNTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAogICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4g
c291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCBy
ZWdpc3RyeSBlbnRyeS4KLSAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92aWRl
KGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9T
dHJpbmcoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVj
LCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpGZXRjaCwgc291cmNlLnZpZXcoKS50
b1N0cmluZygpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biByZWplY3RQcm9taXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBnaXZlbiBzb3Vy
Y2UgY29kZSB0byB0aGUgTW9kdWxlTG9hZGVyIHJlZ2lzdHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lz
dHJ5IGVudHJ5LgotICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGUoZXhl
Yywga2V5LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0Y2gsIHNvdXJjZS50b1N0cmlu
ZygpKTsKKyAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92aWRlKGV4ZWMsIGtl
eSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudmlldygpLnRvU3Ry
aW5nKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJl
amVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBjMDU0OWQ4Li40ZjE0ZGMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgaW50IGV4cHJlc3Np
b25TdGFydCA9IGRpdm90UG9pbnQgLSBzdGFydE9mZnNldDsKICAgICBpbnQgZXhwcmVzc2lvblN0
b3AgPSBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0OwogCi0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcgPSBjb2RlQmxvY2stPnNvdXJjZSgpLT5zb3VyY2UoKTsKKyAgICBTdHJpbmdWaWV3IHNv
dXJjZVN0cmluZyA9IGNvZGVCbG9jay0+c291cmNlKCktPnNvdXJjZSgpOwogICAgIGlmICghZXhw
cmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VT
dHJpbmcubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC03MSwyNCArNzEsMjMg
QEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
RXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgIAogICAgIFN0cmluZyBtZXNzYWdlID0gYXNT
dHJpbmcoanNNZXNzYWdlKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBpZiAoZXhwcmVzc2lvblN0
YXJ0IDwgZXhwcmVzc2lvblN0b3ApCi0gICAgICAgIG1lc3NhZ2UgPSBhcHBlbmRlcihtZXNzYWdl
LCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25TdG9wKSAsIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOworICAgICAg
ICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFu
Z2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJy
b3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIE5v
IHJhbmdlIGluZm9ybWF0aW9uLCBzbyBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dC4K
LSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSA9IHNvdXJjZVN0cmluZy5pbXBsKCk7CiAg
ICAgICAgIGludCBkYXRhTGVuZ3RoID0gc291cmNlU3RyaW5nLmxlbmd0aCgpOwogICAgICAgICBp
bnQgc3RhcnQgPSBleHByZXNzaW9uU3RhcnQ7CiAgICAgICAgIGludCBzdG9wID0gZXhwcmVzc2lv
blN0YXJ0OwogICAgICAgICAvLyBHZXQgdXAgdG8gMjAgY2hhcmFjdGVycyBvZiBjb250ZXh0IHRv
IHRoZSBsZWZ0IGFuZCByaWdodCBvZiB0aGUgZGl2b3QsIGNsYW1waW5nIHRvIHRoZSBsaW5lLgog
ICAgICAgICAvLyBUaGVuIHN0cmlwIHdoaXRlc3BhY2UuCi0gICAgICAgIHdoaWxlIChzdGFydCA+
IDAgJiYgKGV4cHJlc3Npb25TdGFydCAtIHN0YXJ0IDwgMjApICYmICgqZGF0YSlbc3RhcnQgLSAx
XSAhPSAnXG4nKQorICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIChleHByZXNzaW9uU3RhcnQg
LSBzdGFydCA8IDIwKSAmJiBzb3VyY2VTdHJpbmdbc3RhcnQgLSAxXSAhPSAnXG4nKQogICAgICAg
ICAgICAgc3RhcnQtLTsKLSAgICAgICAgd2hpbGUgKHN0YXJ0IDwgKGV4cHJlc3Npb25TdGFydCAt
IDEpICYmIGlzU3RyV2hpdGVTcGFjZSgoKmRhdGEpW3N0YXJ0XSkpCisgICAgICAgIHdoaWxlIChz
dGFydCA8IChleHByZXNzaW9uU3RhcnQgLSAxKSAmJiBpc1N0cldoaXRlU3BhY2Uoc291cmNlU3Ry
aW5nW3N0YXJ0XSkpCiAgICAgICAgICAgICBzdGFydCsrOwotICAgICAgICB3aGlsZSAoc3RvcCA8
IGRhdGFMZW5ndGggJiYgKHN0b3AgLSBleHByZXNzaW9uU3RhcnQgPCAyMCkgJiYgKCpkYXRhKVtz
dG9wXSAhPSAnXG4nKQorICAgICAgICB3aGlsZSAoc3RvcCA8IGRhdGFMZW5ndGggJiYgKHN0b3Ag
LSBleHByZXNzaW9uU3RhcnQgPCAyMCkgJiYgc291cmNlU3RyaW5nW3N0b3BdICE9ICdcbicpCiAg
ICAgICAgICAgICBzdG9wKys7Ci0gICAgICAgIHdoaWxlIChzdG9wID4gZXhwcmVzc2lvblN0YXJ0
ICYmIGlzU3RyV2hpdGVTcGFjZSgoKmRhdGEpW3N0b3AgLSAxXSkpCisgICAgICAgIHdoaWxlIChz
dG9wID4gZXhwcmVzc2lvblN0YXJ0ICYmIGlzU3RyV2hpdGVTcGFjZShzb3VyY2VTdHJpbmdbc3Rv
cCAtIDFdKSkKICAgICAgICAgICAgIHN0b3AtLTsKLSAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVy
KG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgdHlw
ZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSk7CisgICAgICAgIG1lc3Nh
Z2UgPSBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShzdGFy
dCwgc3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0
ZVNvdXJjZSk7CiAgICAgfQogICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp2bSwgdm0tPnByb3Bl
cnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKHZtLCBtZXNzYWdlKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBh
YTg3NTYxLi42YjdhNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CiAgICAgICAgIAotICAgICAgICBT
dHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uo
CisgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlk
ZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRP
ZmZzZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgp
ICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1
bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmluZGV4IDIwMzRkNjAuLjJlMzI4YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIEZ1bmN0aW9uT3ZlcnJpZGVzOjpGdW5jdGlvbk92ZXJyaWRl
cyhjb25zdCBjaGFyKiBvdmVycmlkZXNGaWxlTmFtZSkKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBu
ZXdCb2R5LCBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvJiBpbmZvKQogewotICAgIFN0
cmluZyBvcmlnUHJvdmlkZXJTdHIgPSBvcmlnQ29kZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKKyAg
ICBTdHJpbmcgb3JpZ1Byb3ZpZGVyU3RyID0gb3JpZ0NvZGUucHJvdmlkZXIoKS0+c291cmNlKCku
dG9TdHJpbmcoKTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdDb2RlLnN0YXJ0
T2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJT
dHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ0JyYWNlU3RhcnQpOwogICAgIHVuc2lnbmVk
IGhlYWRlckxlbmd0aCA9IG9yaWdCcmFjZVN0YXJ0IC0gb3JpZ0Z1bmN0aW9uU3RhcnQ7CkBAIC0x
MzUsNyArMTM1LDcgQEAgYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6ZU92ZXJyaWRl
Rm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGkKICAgICBBU1NFUlQoT3B0aW9u
czo6ZnVuY3Rpb25PdmVycmlkZXMoKSk7CiAgICAgRnVuY3Rpb25PdmVycmlkZXMmIG92ZXJyaWRl
cyA9IEZ1bmN0aW9uT3ZlcnJpZGVzOjpvdmVycmlkZXMoKTsKIAotICAgIGF1dG8gaXQgPSBvdmVy
cmlkZXMubV9lbnRyaWVzLmZpbmQob3JpZ0NvZGUudG9TdHJpbmcoKSk7CisgICAgYXV0byBpdCA9
IG92ZXJyaWRlcy5tX2VudHJpZXMuZmluZChvcmlnQ29kZS52aWV3KCkudG9TdHJpbmcoKSk7CiAg
ICAgaWYgKGl0ID09IG92ZXJyaWRlcy5tX2VudHJpZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwIGIvU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCmluZGV4IDA2ODkzMWUuLjMzNjQ0MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5jcHAKQEAgLTUzLDYgKzUzLDExIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgb3V0LnByaW50ZigiJXMi
LCBzdHJpbmcpOwogfQogCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nKQoreworICAgIG91dC5wcmludChzdHJpbmcudXRmOCgpKTsK
K30KKwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHsKICAgICBvdXQucHJpbnQoc3RyaW5nLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0u
aAppbmRleCA5NWFjZGZhLi5hNWY1ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Qcmlu
dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTQwLDYgKzQw
LDcgQEAgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKIGNsYXNzIENTdHJpbmc7CiBjbGFzcyBTdHJp
bmc7CiBjbGFzcyBTdHJpbmdJbXBsOworY2xhc3MgU3RyaW5nVmlldzsKIGNsYXNzIFVuaXF1ZWRT
dHJpbmdJbXBsOwogCiBjbGFzcyBQcmludFN0cmVhbSB7CkBAIC03MCw2ICs3MSw3IEBAIHB1Ymxp
YzoKIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgY29uc3QgU3RyaW5nVmlldyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBj
b25zdCBTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI1YzVhNC4uODY1NTRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEyLTExICBBbmRyZWFzIEtsaW5nICA8YWtsaW5n
QGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZWRTY3JpcHQgY291bGQgaGF2ZSBhIGNvcHktZnJl
ZSBwYXRoIGZvciBhbGwtQVNDSUkgc2NyaXB0cy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MjIwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYW55IChpZiBub3QgbW9zdCkgb2Ygc2NyaXB0IHJlc291cmNlcyBvbiB0aGUgd2ViIGNv
bnRhaW4gbm90aGluZyBidXQgQVNDSUkgY2hhcmFjdGVycy4KKyAgICAgICAgU3VjaCByZXNvdXJj
ZXMsIHdoZW4gc3RyZWFtZWQgdGhyb3VnaCBhIHRleHQgZGVjb2Rlciwgd2lsbCB5aWVsZCB0aGUg
ZXhhY3Qgc2FtZSBieXRlCisgICAgICAgIHNlcXVlbmNlLCBleGNlcHQgaW4gYW5vbnltb3VzIGhl
YXAgbWVtb3J5IGluc3RlYWQgb2YgZGVsaWNpb3VzIGZpbGUtYmFja2VkIHBhZ2VzLgorCisgICAg
ICAgIENhcmUgaXMgdGFrZW4gdG8gZW5zdXJlIHRoYXQgdGhlIHdyYXBwZXIgU3RyaW5nSW1wbCBp
cyB1cGRhdGVkIHRvIHRhcmdldCBuZXdseSBjYWNoZWQKKyAgICAgICAgcmVzb3VyY2UgZGF0YSBp
ZiBhbiBhc3luY2hyb25vdXMgY2FjaGluZyBub3RpZmljYXRpb24gY29tZXMgaW4uCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kaW5nTWF5QmVBbGxB
U0NJSSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OnNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKToKKwogMjAxNS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtZHVwbGljYXRlLWtleXBhdGhzLmh0bWwgZmFpbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCAyYTIy
OGQzLi5mY2NlYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgog
ICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIAotICAg
IGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNj
cmlwdCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y2FjaGVkU2NyaXB0LT5zY3JpcHRIYXNoKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKTsgfQogCiBwcml2
YXRlOgogICAgIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKENhY2hlZFNjcmlwdCogY2FjaGVk
U2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291
cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5o
CmluZGV4IDJkM2MxNTkuLjc4NTQzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7
IH0KIAotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
ci0+c291cmNlKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdmlkZXItPnNvdXJjZSgpOyB9CiAKICAgICBpbnQgc3RhcnRMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlLmZpcnN0TGluZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDE3YjU2Mi4uMGUwMDAyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTE2MSw3
ICsxNjEsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50
KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICAgICAgKnJlc3VsdCA9
IGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KCpjYWNoZWRSZXNvdXJjZSkuc2hlZXRUZXh0
KCk7CiAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdC0+aXNOdWxsKCk7CiAgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgICAgICpyZXN1bHQgPSBkb3duY2FzdDxD
YWNoZWRTY3JpcHQ+KCpjYWNoZWRSZXNvdXJjZSkuc2NyaXB0KCk7CisgICAgICAgICAgICAqcmVz
dWx0ID0gZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PigqY2FjaGVkUmVzb3VyY2UpLnNjcmlwdCgpLnRv
U3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKICAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGNhY2hl
ZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggN2ZhMTJlZS4uZTA5NWU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC03ODcsNyAr
Nzg3LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAobV9kYXRhLT5zaXplKCkgIT0gbmV3QnVmZmVy
LnNpemUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5ld0J1ZmZlci5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT50cnlSZXBsYWNlQ29u
dGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKTsKKyAgICBpZiAobV9kYXRhLT50cnlS
ZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKSkgeworICAgICAgICBk
aWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBjYWxsIGNoZWNrTm90aWZ5KCkgaGVyZSB0byBtb3ZlIGFscmVhZHktZGVjb2RlZCBpbWFn
ZXMgdG8gdGhlIG5ldyBkYXRhIHNvdXJjZT8KKyAgICB9CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBiN2JmYTcxLi5hNDUy
M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApA
QCAtMjY3LDYgKzI2Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldERlY29kZWRTaXplKHVu
c2lnbmVkKTsKICAgICB2b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3RhbXAp
OwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIHsg
fQorCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0YSBtZW1iZXJzIHBy
aXZhdGUgYW5kIHVzZSBmdW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGluc3RlYWQuCiAgICAg
SGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCAyZjhhZTNjLi5jNDU5MDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtNjksMTYgKzY5LDUy
IEBAIFN0cmluZyBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS5sb3dlcigpOwogfQogCi1jb25zdCBTdHJpbmcmIENh
Y2hlZFNjcmlwdDo6c2NyaXB0KCkKK3N0YXRpYyBib29sIGVuY29kaW5nTWF5QmVBbGxBU0NJSShj
b25zdCBTdHJpbmcmIGVuY29kaW5nKQoreworICAgIHJldHVybiBlbmNvZGluZyA9PSAiVVRGLTgi
IHx8IGVuY29kaW5nID09ICJJU08tODg1OS0xIiB8fCBlbmNvZGluZyA9PSAiQVNDSUkiOworfQor
CitTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKIHsKICAgICBpZiAoIW1fc2NyaXB0
ICYmIG1fZGF0YSkgeworICAgICAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IFVu
a25vd24KKyAgICAgICAgICAgICYmIGVuY29kaW5nTWF5QmVBbGxBU0NJSShlbmNvZGluZygpKQor
ICAgICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkKKyAgICAgICAgICAgICYmIGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkp
LCBtX2RhdGEtPnNpemUoKSkpIHsKKworICAgICAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9k
YXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBtX0FTQ0lJT3B0aW1p
emF0aW9uU3RhdGUgPSBPcHRpbWl6ZWQ7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBlbmNvZGVk
IGFuZCBkZWNvZGVkIGRhdGEgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBkZWNvZGVkIGRhdGEg
Y29zdCEKKyAgICAgICAgICAgIHNldERlY29kZWRTaXplKDApOworICAgICAgICAgICAgbV9kZWNv
ZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOworICAgICAgICAgICAgcmV0dXJuIG1fc2NyaXB0
OworICAgICAgICB9CiAgICAgICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fQVNDSUlPcHRpbWl6
YXRpb25TdGF0ZSA9IE5vdE9wdGltaXplZDsKICAgICAgICAgc2V0RGVjb2RlZFNpemUobV9zY3Jp
cHQuc2l6ZUluQnl0ZXMoKSk7CiAgICAgfQotICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVy
LnJlc3RhcnQoKTsKKyAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IE5vdE9wdGlt
aXplZCkKKyAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIucmVzdGFydCgpOwogICAg
IHJldHVybiBtX3NjcmlwdDsKIH0KIAordW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNo
KCkKK3sKKyAgICBzY3JpcHQoKTsKKyAgICByZXR1cm4gbV9zY3JpcHQuaW1wbCgpLT5oYXNoKCk7
Cit9CisKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMo
KQoreworICAgIC8vIFdlIHJlY2VpdmUgdGhpcyBjYWxsYmFjayB3aGVuIHRoZSBDYWNoZWRSZXNv
dXJjZSdzIGludGVybmFsIFNoYXJlZEJ1ZmZlciBoYXMgaGFkIGl0cyBjb250ZW50cworICAgIC8v
IHJlcGxhY2VkIGJ5IHRoZSBtZW1vcnktbWFwcGluZy1vZi1maWxlLWJhY2tlZC1yZXNvdXJjZXMg
b3B0aW1pemF0aW9uLiBJZiBtX3NjcmlwdCBpcyBqdXN0IGEKKyAgICAvLyBub24tY29weWluZyB3
cmFwcGVyIGFyb3VuZCB0aGUgb2xkIFNoYXJlZEJ1ZmZlciBjb250ZW50cywgd2UgaGF2ZSB0byBy
ZXRhcmdldCBpdC4KKyAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IE9wdGltaXpl
ZCkKKyAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNp
emUoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50
cygpOworfQorCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MzhlOTE4Li5lMTM4NDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0zNyw3ICszNyw4IEBAIHB1YmxpYzoK
ICAgICBDYWNoZWRTY3JpcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0LCBTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdCgpOwogCi0gICAg
Y29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKKyAgICBTdHJpbmdWaWV3IHNjcmlwdCgpOworICAgIHVu
c2lnbmVkIHNjcmlwdEhhc2goKTsKIAogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCkBA
IC00NSw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBib29sIG1pbWVUeXBlQWxsb3dlZEJ5Tm9zbmlm
ZigpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250
ZW50cygpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBs
YWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTU3
LDYgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fc2NyaXB0OworCisgICAgZW51bSBBU0NJSVJl
c291cmNlT3B0aW1pemF0aW9uU3RhdGUgeyBVbmtub3duLCBPcHRpbWl6ZWQsIE5vdE9wdGltaXpl
ZCB9OworICAgIEFTQ0lJUmVzb3VyY2VPcHRpbWl6YXRpb25TdGF0ZSBtX0FTQ0lJT3B0aW1pemF0
aW9uU3RhdGUgeyBVbmtub3duIH07CisKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4g
bV9kZWNvZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRl
eCA0MDMwYmRhLi5hYTQwOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICAvLyAgICAgIH0KICAgICBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQg
cG9zaXRpb24gPSAwKSBjb25zdDsKIAotICAgIHZvaWQgdHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBs
YXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgdHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzUGxhdGZvcm1EYXRhKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgRGF0YUJ1ZmZlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhQnVmZmVyPiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggMmE3NWU1Ni4uYjlmNmU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAt
OTIsMTMgKzkyLDE0IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiAg
ICAgbV9jZkRhdGEgPSAwOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRl
bnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCitib29sIFNo
YXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgbmV3Q29udGVudHMpCiB7CiAgICAgaWYgKCFuZXdDb250ZW50cy5tX2NmRGF0YSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjbGVhcigpOwogICAg
IG1fY2ZEYXRhID0gbmV3Q29udGVudHMubV9jZkRhdGE7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjptYXliZUFwcGVuZFBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIq
IG5ld0NvbnRlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9T
aGFyZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVk
QnVmZmVyU291cC5jcHAKaW5kZXggY2JkYjMzNy4uZWMxZGViZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBAIC03OCwxNCArNzgs
MTUgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om1heWJlQXBwZW5kUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVw
bGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMp
Citib29sIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiB7CiAgICAgaWYgKCFuZXdDb250ZW50cy5oYXNQ
bGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBjbGVhcigpOwogICAgIC8vIEZJWE1FOiBVc2UgR1JlZlB0ciBpbnN0ZWFkIG9mIEdVbmlx
dWVQdHIgZm9yIHRoZSBTb3VwQnVmZmVyLgogICAgIG1fc291cEJ1ZmZlci5zd2FwKG5ld0NvbnRl
bnRzLm1fc291cEJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2Vy
Lm1tCmluZGV4IDdiNWM0ODQuLjcwYjhlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogc3RhdGljIE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVByb3ZpZGVy
KiBzb3VyY2VQcm92aWRlcikKIHsKLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyA9IHNv
dXJjZVByb3ZpZGVyLT5zb3VyY2UoKTsKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyA9
IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgIGlmIChzb3VyY2VTdHJp
bmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBzb3VyY2VTdHJp
bmc7Cg==
</data>
<flag name="review"
          id="292315"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267265</attachid>
            <date>2015-12-13 11:09:10 -0800</date>
            <delta_ts>2015-12-13 12:03:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-152203.diff</filename>
            <type>text/plain</type>
            <size>33499</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5kZXggMmYzNzQyMy4u
ZTY1MDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAg
LTQ2LDcgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURjo6YWRvcHRSZWYoKm5l
dyBPcGFxdWVKU1NjcmlwdCh2bSwgdXJsLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZSkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlk
ZQorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc291cmNlLmltcGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIFN0cmluZ1ZpZXcgc291
cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0YTgyOGM3Li4xZTk1ZDYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxNS0xMi0xMyAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVkU2NyaXB0IGNvdWxkIGhh
dmUgYSBjb3B5LWZyZWUgcGF0aCBmb3IgYWxsLUFTQ0lJIHNjcmlwdHMuCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xNTIyMDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgTWFrZSBTb3VyY2VQcm92aWRlciB2ZW5kIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nLgorICAgICAgICBUaGlzIHJlbGF4ZXMgdGhlIHByb21pc2VzIHRo
YXQgcHJvdmlkZXJzIGhhdmUgdG8gbWFrZSBhYm91dCBzdHJpbmcgbGlmZXRpbWVzLgorCisgICAg
ICAgIFRoaXMgbWVhbnMgdGhhdCBvbiB0aGUgV2ViQ29yZSBzaWRlLCBDYWNoZWRTY3JpcHQgaXMg
ZnJlZSB0byBjYWNoZSBhIFN0cmluZworICAgICAgICBpbnRlcm5hbGx5LCB3aGlsZSBvbmx5IGV2
ZXIgZXhwb3NpbmcgaXQgYXMgYSB0ZW1wb3JhcnkgU3RyaW5nVmlldy4KKworICAgICAgICBBIGZl
dyBleHRyYSBjb3BpZXMgKENQVSwgbm90IG1lbW9yeSkgYXJlIGludHJvZHVjZWQsIG5vbmUgb2Yg
dGhlbSBvbiBob3QgcGF0aHMuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c291cmNlQ29kZUZvclRvb2xzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZhaWxlZFRvUGFy
c2VTb3VyY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbik6CisgICAgICAgIChmdW5jdGlvbkhh
c0Jhc2ljQmxvY2tFeGVjdXRlZCk6CisgICAgICAgIChmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRp
b25Db3VudCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4
ZXI8VD46OnNldENvZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlND
OjpMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydCk6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6c2V0Q29kZVN0YXJ0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlBhcnNlcjo6Z2V0VG9rZW4pOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6dG9VVEY4KToKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U291cmNlQ29kZTo6dmlldyk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNl
Q29kZUtleTo6c3RyaW5nKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OmdldFJhbmdlKToKKyAgICAgICAgKiBydW50aW1l
L0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90
b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplT3ZlcnJpZGVJbmZvKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcik6CisKIDIwMTUtMTItMTIgIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtKU0NdIEFk
ZCBsb3dlcmluZyBmb3IgQjMncyBTdG9yZTggb3Bjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdiYWY5M2MuLjg3OWU0MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgQ1N0cmluZyBDb2RlQmxvY2s6OnNvdXJjZUNvZGVGb3JUb29scygpIGNvbnN0CiAgICAg
dW5zaWduZWQgcmFuZ2VFbmQgPSBkZWx0YSArIHVubGlua2VkLT5zdGFydE9mZnNldCgpICsgdW5s
aW5rZWQtPnNvdXJjZUxlbmd0aCgpOwogICAgIHJldHVybiB0b0NTdHJpbmcoCiAgICAgICAgICJm
dW5jdGlvbiAiLAotICAgICAgICBwcm92aWRlci0+c291cmNlKCkuaW1wbCgpLT51dGY4Rm9yUmFu
Z2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KSk7CisgICAgICAgIHByb3ZpZGVy
LT5zb3VyY2UoKS5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KS51
dGY4KCkpOwogfQogCiBDU3RyaW5nIENvZGVCbG9jazo6c291cmNlQ29kZU9uT25lTGluZSgpIGNv
bnN0CkBAIC01NTQsMTQgKzU1NCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFNvdXJjZShQcmlu
dFN0cmVhbSYgb3V0KQogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBvd25lclNj
cmlwdEV4ZWN1dGFibGUoKTsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFi
bGUoKSkgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAg
ICAgIFN0cmluZyBzb3VyY2UgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVy
KCktPmdldFJhbmdlKAorICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBmdW5jdGlv
bkV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAogICAgICAgICAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgKyAxKTsgLy8gVHlwZSBwcm9m
aWxpbmcgZW5kIG9mZnNldCBpcyB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgJ30nLgogICAgICAg
ICAKICAgICAgICAgb3V0LnByaW50KCJmdW5jdGlvbiAiLCBpbmZlcnJlZE5hbWUoKSwgc291cmNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBvdXQucHJpbnQoZXhlY3V0YWJsZS0+c291
cmNlKCkudG9TdHJpbmcoKSk7CisgICAgb3V0LnByaW50KGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZp
ZXcoKSk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRl
eCA4OTg5MWJkLi45OGM2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJT
ZXQmIGxpc3RlbmVycywgU291CiAKICAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2Ny
aXB0OwogICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRlci0+dXJsKCk7Ci0gICAgc2NyaXB0
LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKTsKKyAgICBzY3JpcHQuc291cmNlID0g
c291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAgc2NyaXB0LnN0YXJ0TGlu
ZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgp
OwogICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9u
KCkubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9
IGlzQ29udGVudFNjcmlwdDsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMs
IFNvdQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92
aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAg
U3RyaW5nIHVybCA9IHNvdXJjZVByb3ZpZGVyLT51cmwoKTsKLSAgICBjb25zdCBTdHJpbmcmIGRh
dGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCk7CisgICAgU3RyaW5nIGRhdGEgPSBzb3VyY2VQ
cm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc291cmNl
UHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKIAogICAgIFZl
Y3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gY29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDc4ZmZkOTEuLmZlMDJjNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtODQ5LDcgKzg0OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJv
Z3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKCiAKICAgICBW
ZWN0b3I8SlNPTlBEYXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKLSAgICBj
b25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3RyaW5nKCk7
CisgICAgU3RyaW5nVmlldyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudmlldygp
OwogICAgIGlmIChwcm9ncmFtU291cmNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCAyZTkxNGFiLi5jZmNlYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTQ2
NCw3ICsxNDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRU
eXBlRm9yRXhwcmVzc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBSRUxFQVNFX0FTU0VSVChl
eGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKICAgICBTdHJpbmcgc3Vic3RyaW5nID0gZXhl
Yy0+YXJndW1lbnQoMSkuZ2V0U3RyaW5nKGV4ZWMpOwotICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4
dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNvdXJjZUNvZGVUZXh0LmZpbmQo
c3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkpOwogICAgIAog
ICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKS0+dHlwZUlu
Zm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3JOb3JtYWwsIG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZXhlYy0+dm0oKSk7CkBA
IC0xNTAyLDcgKzE1MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
SGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBzdWJzdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nIHNvdXJjZUNv
ZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgc291
cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhzdWJzdHJpbmcpKTsKICAg
ICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJs
ZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTE1MjAsNyArMTUyMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291
bnQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQo
MSkuaXNTdHJpbmcoKSk7CiAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEp
LmdldFN0cmluZyhleGVjKTsKLSAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxl
LT5zb3VyY2UoKS50b1N0cmluZygpOworICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1
dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNv
dXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1YnN0cmluZykpOwogICAgIGludCBvZmZzZXQgPSBzb3Vy
Y2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9m
ZnNldCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA3
NjNiZGYxLi43NjRlZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApA
QCAtNTQzLDEwICs1NDMsMTAgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2xpbmVOdW1iZXIgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCk7CiAgICAgbV9sYXN0VG9rZW4gPSAtMTsKICAgICAKLSAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZVN0cmluZyA9IHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKKyAgICBT
dHJpbmdWaWV3IHNvdXJjZVN0cmluZyA9IHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKIAog
ICAgIGlmICghc291cmNlU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBzZXRDb2RlU3RhcnQoc291
cmNlU3RyaW5nLmltcGwoKSk7CisgICAgICAgIHNldENvZGVTdGFydChzb3VyY2VTdHJpbmcpOwog
ICAgIGVsc2UKICAgICAgICAgbV9jb2RlU3RhcnQgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggMTg2MmQ3Ny4uYzdiNjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lO
TElORSBjb25zdCBUKiBjdXJyZW50U291cmNlUHRyKCkgY29uc3Q7CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoY29uc3QgVCogc291cmNlUHRyLCB1bnNpZ25l
ZCBsaW5lU3RhcnRPZmZzZXQpIHsgc2V0T2Zmc2V0KG9mZnNldEZyb21Tb3VyY2VQdHIoc291cmNl
UHRyKSwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdJbXBsKik7CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldENv
ZGVTdGFydChjb25zdCBTdHJpbmdWaWV3Jik7CiAKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElk
ZW50aWZpZXIqIG1ha2VJZGVudGlmaWVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIG1ha2VJZGVudGlm
aWVyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKTsKQEAgLTI4OSwxNyAr
Mjg5LDE3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VF
bXB0eUlkZW50aWZpZXIoKQogfQogCiB0ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSB2b2lkIExl
eGVyPExDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0IFN0cmluZ0ltcGwqIHNvdXJjZVN0cmluZykK
K0FMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxMQ2hhcj46OnNldENvZGVTdGFydChjb25zdCBTdHJp
bmdWaWV3JiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgQVNTRVJUKHNvdXJjZVN0cmluZy0+aXM4Qml0
KCkpOwotICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLT5jaGFyYWN0ZXJzOCgpOworICAg
IEFTU0VSVChzb3VyY2VTdHJpbmcuaXM4Qml0KCkpOworICAgIG1fY29kZVN0YXJ0ID0gc291cmNl
U3RyaW5nLmNoYXJhY3RlcnM4KCk7CiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZv
aWQgTGV4ZXI8VUNoYXI+OjpzZXRDb2RlU3RhcnQoY29uc3QgU3RyaW5nSW1wbCogc291cmNlU3Ry
aW5nKQorQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFVDaGFyPjo6c2V0Q29kZVN0YXJ0KGNvbnN0
IFN0cmluZ1ZpZXcmIHNvdXJjZVN0cmluZykKIHsKLSAgICBBU1NFUlQoIXNvdXJjZVN0cmluZy0+
aXM4Qml0KCkpOwotICAgIG1fY29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLT5jaGFyYWN0ZXJzMTYo
KTsKKyAgICBBU1NFUlQoIXNvdXJjZVN0cmluZy5pczhCaXQoKSk7CisgICAgbV9jb2RlU3RhcnQg
PSBzb3VyY2VTdHJpbmcuY2hhcmFjdGVyczE2KCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMjYyZmY5Ni4uZTViNjJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC05OTAsNyArOTkwLDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIHByaW50VW5leHBlY3RlZFRva2VuVGV4dChX
VEY6OlByaW50U3RyZWFtJik7Ci0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgZ2V0VG9rZW4oKSB7
CisgICAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IGdldFRva2VuKCkgewogICAgICAgICBTb3Vy
Y2VQcm92aWRlciogc291cmNlUHJvdmlkZXIgPSBtX3NvdXJjZS0+cHJvdmlkZXIoKTsKICAgICAg
ICAgcmV0dXJuIHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5nZSh0b2tlblN0YXJ0KCksIHRva2VuRW5k
UG9zaXRpb24oKS5vZmZzZXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuY3BwCmluZGV4IDhlZjE2OGQuLmM0MzBlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBDU3RyaW5n
IFNvdXJjZUNvZGU6OnRvVVRGOCgpIGNvbnN0CiAgICAgaWYgKCFtX3Byb3ZpZGVyKQogICAgICAg
ICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CiAgICAgCi0gICAgcmV0dXJuIG1fcHJvdmlkZXItPnNv
dXJjZSgpLmltcGwoKS0+dXRmOEZvclJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIgLSBtX3N0
YXJ0Q2hhcik7CisgICAgcmV0dXJuIG1fcHJvdmlkZXItPnNvdXJjZSgpLnN1YnN0cmluZyhtX3N0
YXJ0Q2hhciwgbV9lbmRDaGFyIC0gbV9zdGFydENoYXIpLnV0ZjgoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCmluZGV4
IDdmMzdlY2YuLjczZDZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCkBAIC03OSwxMCArNzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCi0gICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0CisgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQobV9wcm92aWRlcik7CisgICAgICAgICAgICByZXR1cm4gbV9wcm92aWRlci0+aGFz
aCgpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nVmlldyB2aWV3KCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX3Byb3ZpZGVyKQotICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogICAgICAg
ICAgICAgcmV0dXJuIG1fcHJvdmlkZXItPmdldFJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIp
OwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZUNvZGVLZXkuaAppbmRleCA4ZDQ5YTdlLi4wOWY4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgICAgICwgbV9mbGFncygoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVUeXBlKSA8
PCAzKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVpbHRpbk1vZGUpIDw8IDIpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdHJpY3RNb2RlKSA8PCAxKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0aGlzVERaTW9kZSkpCi0gICAgICAgICwgbV9oYXNoKHN0cmluZygpLmltcGwoKS0+aGFzaCgp
KQorICAgICAgICAsIG1faGFzaChzb3VyY2VDb2RlLmhhc2goKSkKICAgICB7CiAgICAgfQogCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRvIHNhdmUgbWVtb3J5LCB3ZSBjb21w
dXRlIG91ciBzdHJpbmcgb24gZGVtYW5kLiBJdCdzIGV4cGVjdGVkIHRoYXQgc291cmNlCiAgICAg
Ly8gcHJvdmlkZXJzIGNhY2hlIHRoZWlyIHN0cmluZ3MgdG8gbWFrZSB0aGlzIGVmZmljaWVudC4K
LSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlLnRvU3RyaW5n
KCk7IH0KKyAgICBTdHJpbmdWaWV3IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29k
ZS52aWV3KCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VDb2RlS2V5JiBv
dGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgKaW5kZXggNGY5ODRlYi4uNmI0NzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtNDMsMTAgKzQzLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflNvdXJjZVBy
b3ZpZGVyKCk7CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICAgICAgU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QK
KyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0
dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3QgPSAwOworICAgICAgICBTdHJpbmdWaWV3IGdl
dFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHNvdXJjZSgpLnN1YnN0cmluZ1NoYXJpbmdJbXBsKHN0YXJ0LCBlbmQgLSBzdGFydCk7
CisgICAgICAgICAgICByZXR1cm4gc291cmNlKCkuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFy
dCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC04Niw4ICs4NywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIo
c291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX3NvdXJjZS5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB2aXJ0
dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG1fc291cmNlOwogICAgICAgICB9CkBAIC0xMTAsNyArMTE2LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXNzZW1i
bHlTb3VyY2VQcm92aWRlcihkYXRhLCB1cmwpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1f
c291cmNlLmltcGwoKS0+aGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBTdHJp
bmdWaWV3IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NvdXJjZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAppbmRleCAwMmYzOTVjLi4xNTUwNTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAogICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4g
c291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCBy
ZWdpc3RyeSBlbnRyeS4KLSAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92aWRl
KGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudG9T
dHJpbmcoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVj
LCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpGZXRjaCwgc291cmNlLnZpZXcoKS50
b1N0cmluZygpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biByZWplY3RQcm9taXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBnaXZlbiBzb3Vy
Y2UgY29kZSB0byB0aGUgTW9kdWxlTG9hZGVyIHJlZ2lzdHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lz
dHJ5IGVudHJ5LgotICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGUoZXhl
Yywga2V5LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0Y2gsIHNvdXJjZS50b1N0cmlu
ZygpKTsKKyAgICBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5wcm92aWRlKGV4ZWMsIGtl
eSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudmlldygpLnRvU3Ry
aW5nKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJl
amVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBjMDU0OWQ4Li40ZjE0ZGMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgaW50IGV4cHJlc3Np
b25TdGFydCA9IGRpdm90UG9pbnQgLSBzdGFydE9mZnNldDsKICAgICBpbnQgZXhwcmVzc2lvblN0
b3AgPSBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0OwogCi0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcgPSBjb2RlQmxvY2stPnNvdXJjZSgpLT5zb3VyY2UoKTsKKyAgICBTdHJpbmdWaWV3IHNv
dXJjZVN0cmluZyA9IGNvZGVCbG9jay0+c291cmNlKCktPnNvdXJjZSgpOwogICAgIGlmICghZXhw
cmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VT
dHJpbmcubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC03MSwyNCArNzEsMjMg
QEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
RXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgIAogICAgIFN0cmluZyBtZXNzYWdlID0gYXNT
dHJpbmcoanNNZXNzYWdlKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICBpZiAoZXhwcmVzc2lvblN0
YXJ0IDwgZXhwcmVzc2lvblN0b3ApCi0gICAgICAgIG1lc3NhZ2UgPSBhcHBlbmRlcihtZXNzYWdl
LCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25TdG9wKSAsIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhhY3RTb3VyY2UpOworICAgICAg
ICBtZXNzYWdlID0gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS0+Z2V0UmFu
Z2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJy
b3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIE5v
IHJhbmdlIGluZm9ybWF0aW9uLCBzbyBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dC4K
LSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSA9IHNvdXJjZVN0cmluZy5pbXBsKCk7CiAg
ICAgICAgIGludCBkYXRhTGVuZ3RoID0gc291cmNlU3RyaW5nLmxlbmd0aCgpOwogICAgICAgICBp
bnQgc3RhcnQgPSBleHByZXNzaW9uU3RhcnQ7CiAgICAgICAgIGludCBzdG9wID0gZXhwcmVzc2lv
blN0YXJ0OwogICAgICAgICAvLyBHZXQgdXAgdG8gMjAgY2hhcmFjdGVycyBvZiBjb250ZXh0IHRv
IHRoZSBsZWZ0IGFuZCByaWdodCBvZiB0aGUgZGl2b3QsIGNsYW1waW5nIHRvIHRoZSBsaW5lLgog
ICAgICAgICAvLyBUaGVuIHN0cmlwIHdoaXRlc3BhY2UuCi0gICAgICAgIHdoaWxlIChzdGFydCA+
IDAgJiYgKGV4cHJlc3Npb25TdGFydCAtIHN0YXJ0IDwgMjApICYmICgqZGF0YSlbc3RhcnQgLSAx
XSAhPSAnXG4nKQorICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIChleHByZXNzaW9uU3RhcnQg
LSBzdGFydCA8IDIwKSAmJiBzb3VyY2VTdHJpbmdbc3RhcnQgLSAxXSAhPSAnXG4nKQogICAgICAg
ICAgICAgc3RhcnQtLTsKLSAgICAgICAgd2hpbGUgKHN0YXJ0IDwgKGV4cHJlc3Npb25TdGFydCAt
IDEpICYmIGlzU3RyV2hpdGVTcGFjZSgoKmRhdGEpW3N0YXJ0XSkpCisgICAgICAgIHdoaWxlIChz
dGFydCA8IChleHByZXNzaW9uU3RhcnQgLSAxKSAmJiBpc1N0cldoaXRlU3BhY2Uoc291cmNlU3Ry
aW5nW3N0YXJ0XSkpCiAgICAgICAgICAgICBzdGFydCsrOwotICAgICAgICB3aGlsZSAoc3RvcCA8
IGRhdGFMZW5ndGggJiYgKHN0b3AgLSBleHByZXNzaW9uU3RhcnQgPCAyMCkgJiYgKCpkYXRhKVtz
dG9wXSAhPSAnXG4nKQorICAgICAgICB3aGlsZSAoc3RvcCA8IGRhdGFMZW5ndGggJiYgKHN0b3Ag
LSBleHByZXNzaW9uU3RhcnQgPCAyMCkgJiYgc291cmNlU3RyaW5nW3N0b3BdICE9ICdcbicpCiAg
ICAgICAgICAgICBzdG9wKys7Ci0gICAgICAgIHdoaWxlIChzdG9wID4gZXhwcmVzc2lvblN0YXJ0
ICYmIGlzU3RyV2hpdGVTcGFjZSgoKmRhdGEpW3N0b3AgLSAxXSkpCisgICAgICAgIHdoaWxlIChz
dG9wID4gZXhwcmVzc2lvblN0YXJ0ICYmIGlzU3RyV2hpdGVTcGFjZShzb3VyY2VTdHJpbmdbc3Rv
cCAtIDFdKSkKICAgICAgICAgICAgIHN0b3AtLTsKLSAgICAgICAgbWVzc2FnZSA9IGFwcGVuZGVy
KG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgdHlw
ZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSk7CisgICAgICAgIG1lc3Nh
Z2UgPSBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShzdGFy
dCwgc3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0
ZVNvdXJjZSk7CiAgICAgfQogICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp2bSwgdm0tPnByb3Bl
cnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKHZtLCBtZXNzYWdlKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBh
YTg3NTYxLi42YjdhNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CiAgICAgICAgIAotICAgICAgICBT
dHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uo
CisgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlk
ZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRP
ZmZzZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgp
ICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1
bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmluZGV4IDIwMzRkNjAuLjJlMzI4YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIEZ1bmN0aW9uT3ZlcnJpZGVzOjpGdW5jdGlvbk92ZXJyaWRl
cyhjb25zdCBjaGFyKiBvdmVycmlkZXNGaWxlTmFtZSkKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBu
ZXdCb2R5LCBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvJiBpbmZvKQogewotICAgIFN0
cmluZyBvcmlnUHJvdmlkZXJTdHIgPSBvcmlnQ29kZS5wcm92aWRlcigpLT5zb3VyY2UoKTsKKyAg
ICBTdHJpbmcgb3JpZ1Byb3ZpZGVyU3RyID0gb3JpZ0NvZGUucHJvdmlkZXIoKS0+c291cmNlKCku
dG9TdHJpbmcoKTsKICAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdDb2RlLnN0YXJ0
T2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJT
dHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ0JyYWNlU3RhcnQpOwogICAgIHVuc2lnbmVk
IGhlYWRlckxlbmd0aCA9IG9yaWdCcmFjZVN0YXJ0IC0gb3JpZ0Z1bmN0aW9uU3RhcnQ7CkBAIC0x
MzUsNyArMTM1LDcgQEAgYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6ZU92ZXJyaWRl
Rm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGkKICAgICBBU1NFUlQoT3B0aW9u
czo6ZnVuY3Rpb25PdmVycmlkZXMoKSk7CiAgICAgRnVuY3Rpb25PdmVycmlkZXMmIG92ZXJyaWRl
cyA9IEZ1bmN0aW9uT3ZlcnJpZGVzOjpvdmVycmlkZXMoKTsKIAotICAgIGF1dG8gaXQgPSBvdmVy
cmlkZXMubV9lbnRyaWVzLmZpbmQob3JpZ0NvZGUudG9TdHJpbmcoKSk7CisgICAgYXV0byBpdCA9
IG92ZXJyaWRlcy5tX2VudHJpZXMuZmluZChvcmlnQ29kZS52aWV3KCkudG9TdHJpbmcoKSk7CiAg
ICAgaWYgKGl0ID09IG92ZXJyaWRlcy5tX2VudHJpZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwIGIvU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCmluZGV4IDA2ODkzMWUuLjMzNjQ0MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5jcHAKQEAgLTUzLDYgKzUzLDExIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgb3V0LnByaW50ZigiJXMi
LCBzdHJpbmcpOwogfQogCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nKQoreworICAgIG91dC5wcmludChzdHJpbmcudXRmOCgpKTsK
K30KKwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHsKICAgICBvdXQucHJpbnQoc3RyaW5nLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0u
aAppbmRleCA5NWFjZGZhLi5hNWY1ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Qcmlu
dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKQEAgLTQwLDYgKzQw
LDcgQEAgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKIGNsYXNzIENTdHJpbmc7CiBjbGFzcyBTdHJp
bmc7CiBjbGFzcyBTdHJpbmdJbXBsOworY2xhc3MgU3RyaW5nVmlldzsKIGNsYXNzIFVuaXF1ZWRT
dHJpbmdJbXBsOwogCiBjbGFzcyBQcmludFN0cmVhbSB7CkBAIC03MCw2ICs3MSw3IEBAIHB1Ymxp
YzoKIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgY29uc3QgU3RyaW5nVmlldyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IENTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBj
b25zdCBTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI1YzVhNC4uODU2ODUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEyLTEzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5n
QGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZWRTY3JpcHQgY291bGQgaGF2ZSBhIGNvcHktZnJl
ZSBwYXRoIGZvciBhbGwtQVNDSUkgc2NyaXB0cy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MjIwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBBTnR0aSBLb2l2aXN0by4KKworICAg
ICAgICBNYW55IChpZiBub3QgbW9zdCkgb2Ygc2NyaXB0IHJlc291cmNlcyBvbiB0aGUgd2ViIGNv
bnRhaW4gbm90aGluZyBidXQgQVNDSUkgY2hhcmFjdGVycy4KKyAgICAgICAgU3VjaCByZXNvdXJj
ZXMsIHdoZW4gc3RyZWFtZWQgdGhyb3VnaCBhIHRleHQgZGVjb2Rlciwgd2lsbCB5aWVsZCB0aGUg
ZXhhY3Qgc2FtZSBieXRlCisgICAgICAgIHNlcXVlbmNlLCBleGNlcHQgaW4gYW5vbnltb3VzIGhl
YXAgbWVtb3J5IGluc3RlYWQgb2YgZGVsaWNpb3VzIGZpbGUtYmFja2VkIHBhZ2VzLgorCisgICAg
ICAgIENhcmUgaXMgdGFrZW4gdG8gZW5zdXJlIHRoYXQgdGhlIHdyYXBwZXIgU3RyaW5nSW1wbCBp
cyB1cGRhdGVkIHRvIHRhcmdldCBuZXdseSBjYWNoZWQKKyAgICAgICAgcmVzb3VyY2UgZGF0YSBp
ZiBhbiBhc3luY2hyb25vdXMgY2FjaGluZyBub3RpZmljYXRpb24gY29tZXMgaW4uCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kaW5nTWF5QmVBbGxB
U0NJSSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OnNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKToKKwogMjAxNS0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtZHVwbGljYXRlLWtleXBhdGhzLmh0bWwgZmFpbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCAyYTIy
OGQzLi5mY2NlYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgog
ICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0KIAotICAg
IGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNj
cmlwdCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y2FjaGVkU2NyaXB0LT5zY3JpcHRIYXNoKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKTsgfQogCiBwcml2
YXRlOgogICAgIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKENhY2hlZFNjcmlwdCogY2FjaGVk
U2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291
cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5o
CmluZGV4IDJkM2MxNTkuLjc4NTQzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgSlNDOjpTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7
IH0KIAotICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
ci0+c291cmNlKCk7IH0KKyAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdmlkZXItPnNvdXJjZSgpOyB9CiAKICAgICBpbnQgc3RhcnRMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlLmZpcnN0TGluZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDE3YjU2Mi4uMGUwMDAyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTE2MSw3
ICsxNjEsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50
KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICAgICAgKnJlc3VsdCA9
IGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KCpjYWNoZWRSZXNvdXJjZSkuc2hlZXRUZXh0
KCk7CiAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdC0+aXNOdWxsKCk7CiAgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgICAgICpyZXN1bHQgPSBkb3duY2FzdDxD
YWNoZWRTY3JpcHQ+KCpjYWNoZWRSZXNvdXJjZSkuc2NyaXB0KCk7CisgICAgICAgICAgICAqcmVz
dWx0ID0gZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PigqY2FjaGVkUmVzb3VyY2UpLnNjcmlwdCgpLnRv
U3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKICAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGNhY2hl
ZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggN2ZhMTJlZS4uZTA5NWU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC03ODcsNyAr
Nzg3LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAobV9kYXRhLT5zaXplKCkgIT0gbmV3QnVmZmVy
LnNpemUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5ld0J1ZmZlci5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT50cnlSZXBsYWNlQ29u
dGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKTsKKyAgICBpZiAobV9kYXRhLT50cnlS
ZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKSkgeworICAgICAgICBk
aWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBjYWxsIGNoZWNrTm90aWZ5KCkgaGVyZSB0byBtb3ZlIGFscmVhZHktZGVjb2RlZCBpbWFn
ZXMgdG8gdGhlIG5ldyBkYXRhIHNvdXJjZT8KKyAgICB9CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBiN2JmYTcxLi5hNDUy
M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApA
QCAtMjY3LDYgKzI2Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldERlY29kZWRTaXplKHVu
c2lnbmVkKTsKICAgICB2b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3RhbXAp
OwogCisgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIHsg
fQorCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0YSBtZW1iZXJzIHBy
aXZhdGUgYW5kIHVzZSBmdW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGluc3RlYWQuCiAgICAg
SGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCAyZjhhZTNjLi5lNTEyMjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtNjksMTYgKzY5LDUy
IEBAIFN0cmluZyBDYWNoZWRTY3JpcHQ6Om1pbWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKS5sb3dlcigpOwogfQogCi1jb25zdCBTdHJpbmcmIENh
Y2hlZFNjcmlwdDo6c2NyaXB0KCkKK3N0YXRpYyBib29sIGVuY29kaW5nTWF5QmVBbGxBU0NJSShj
b25zdCBTdHJpbmcmIGVuY29kaW5nKQoreworICAgIHJldHVybiBlbmNvZGluZyA9PSAiVVRGLTgi
IHx8IGVuY29kaW5nID09ICJJU08tODg1OS0xIiB8fCBlbmNvZGluZyA9PSAiQVNDSUkiOworfQor
CitTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKIHsKICAgICBpZiAoIW1fc2NyaXB0
ICYmIG1fZGF0YSkgeworICAgICAgICBpZiAobV9BU0NJSU9wdGltaXphdGlvblN0YXRlID09IFVu
a25vd24KKyAgICAgICAgICAgICYmIGVuY29kaW5nTWF5QmVBbGxBU0NJSShlbmNvZGluZygpKQor
ICAgICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkKKyAgICAgICAgICAgICYmIGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkp
LCBtX2RhdGEtPnNpemUoKSkpIHsKKworICAgICAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9k
YXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBtX0FTQ0lJT3B0aW1p
emF0aW9uU3RhdGUgPSBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXM7CisKKyAgICAg
ICAgICAgIC8vIElmIHRoZSBlbmNvZGVkIGFuZCBkZWNvZGVkIGRhdGEgYXJlIHRoZSBzYW1lLCB0
aGVyZSBpcyBubyBkZWNvZGVkIGRhdGEgY29zdCEKKyAgICAgICAgICAgIHNldERlY29kZWRTaXpl
KDApOworICAgICAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fc2NyaXB0OworICAgICAgICB9CiAgICAgICAgIG1fc2NyaXB0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7
CisgICAgICAgIG1fQVNDSUlPcHRpbWl6YXRpb25TdGF0ZSA9IERhdGFBbmREZWNvZGVkU3RyaW5n
SGF2ZURpZmZlcmVudEJ5dGVzOwogICAgICAgICBzZXREZWNvZGVkU2l6ZShtX3NjcmlwdC5zaXpl
SW5CeXRlcygpKTsKICAgICB9Ci0gICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIucmVzdGFy
dCgpOworICAgIGlmIChtX0FTQ0lJT3B0aW1pemF0aW9uU3RhdGUgPT0gRGF0YUFuZERlY29kZWRT
dHJpbmdIYXZlRGlmZmVyZW50Qnl0ZXMpCisgICAgICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRp
bWVyLnJlc3RhcnQoKTsKICAgICByZXR1cm4gbV9zY3JpcHQ7CiB9CiAKK3Vuc2lnbmVkIENhY2hl
ZFNjcmlwdDo6c2NyaXB0SGFzaCgpCit7CisgICAgc2NyaXB0KCk7CisgICAgcmV0dXJuIG1fc2Ny
aXB0LmltcGwoKS0+aGFzaCgpOworfQorCit2b2lkIENhY2hlZFNjcmlwdDo6ZGlkUmVwbGFjZVNo
YXJlZEJ1ZmZlckNvbnRlbnRzKCkKK3sKKyAgICAvLyBXZSByZWNlaXZlIHRoaXMgY2FsbGJhY2sg
d2hlbiB0aGUgQ2FjaGVkUmVzb3VyY2UncyBpbnRlcm5hbCBTaGFyZWRCdWZmZXIgaGFzIGhhZCBp
dHMgY29udGVudHMKKyAgICAvLyByZXBsYWNlZCBieSB0aGUgbWVtb3J5LW1hcHBpbmctb2YtZmls
ZS1iYWNrZWQtcmVzb3VyY2VzIG9wdGltaXphdGlvbi4gSWYgbV9zY3JpcHQgaXMganVzdCBhCisg
ICAgLy8gbm9uLWNvcHlpbmcgd3JhcHBlciBhcm91bmQgdGhlIG9sZCBTaGFyZWRCdWZmZXIgY29u
dGVudHMsIHdlIGhhdmUgdG8gcmV0YXJnZXQgaXQuCisgICAgaWYgKG1fQVNDSUlPcHRpbWl6YXRp
b25TdGF0ZSA9PSBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXMpCisgICAgICAgIG1f
c2NyaXB0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5zaXplKCkpOworICAgIENh
Y2hlZFJlc291cmNlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKK30KKwogdm9p
ZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IG1fZGF0YSA9IGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgKaW5kZXggOTM4ZTkxOC4uNGY1MTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaApAQCAtMzcsNyArMzcsOCBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkU2Ny
aXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgU2Vzc2lv
bklEKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKIAotICAgIGNvbnN0IFN0cmluZyYg
c2NyaXB0KCk7CisgICAgU3RyaW5nVmlldyBzY3JpcHQoKTsKKyAgICB1bnNpZ25lZCBzY3JpcHRI
YXNoKCk7CiAKICAgICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdDsKIApAQCAtNDUsNiArNDYsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBtaW1lVHlwZUFsbG93ZWRCeU5vc25pZmYoKSBjb25zdDsKICNl
bmRpZgogCisgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlk
ZTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRh
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC01Nyw2ICs2MCwxMCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAogICAgIFN0cmluZyBtX3NjcmlwdDsKKworICAgIGVudW0gQVNDSUlSZXNvdXJjZU9wdGltaXph
dGlvblN0YXRlIHsgVW5rbm93biwgRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzLCBE
YXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVEaWZmZXJlbnRCeXRlcyB9OworICAgIEFTQ0lJUmVzb3Vy
Y2VPcHRpbWl6YXRpb25TdGF0ZSBtX0FTQ0lJT3B0aW1pemF0aW9uU3RhdGUgeyBVbmtub3duIH07
CisKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA0MDMwYmRhLi5hYTQwOTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTE5LDcgKzExOSw3IEBA
IHB1YmxpYzoKICAgICAvLyAgICAgIH0KICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBnZXRT
b21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRpb24gPSAwKSBjb25zdDsK
IAotICAgIHZvaWQgdHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpOworICAgIGJvb2wgdHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkg
Y29uc3Q7CiAKICAgICBzdHJ1Y3QgRGF0YUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhQnVmZmVyPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKaW5kZXggMmE3NWU1Ni4uYjlmNmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtOTIsMTMgKzkyLDE0IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiAgICAgbV9jZkRhdGEgPSAwOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCitib29sIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFj
ZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiB7
CiAgICAgaWYgKCFuZXdDb250ZW50cy5tX2NmRGF0YSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBjbGVhcigpOwogICAgIG1fY2ZEYXRhID0gbmV3Q29udGVu
dHMubV9jZkRhdGE7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpt
YXliZUFwcGVuZFBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIG5ld0NvbnRlbnRzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKaW5kZXgg
Y2JkYjMzNy4uZWMxZGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291
cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3Vw
L1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBAIC03OCwxNCArNzgsMTUgQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6Om1heWJlQXBwZW5kUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciopCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRm
b3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCitib29sIFNoYXJlZEJ1ZmZlcjo6
dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29u
dGVudHMpCiB7CiAgICAgaWYgKCFuZXdDb250ZW50cy5oYXNQbGF0Zm9ybURhdGEoKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjbGVhcigpOwogICAgIC8v
IEZJWE1FOiBVc2UgR1JlZlB0ciBpbnN0ZWFkIG9mIEdVbmlxdWVQdHIgZm9yIHRoZSBTb3VwQnVm
ZmVyLgogICAgIG1fc291cEJ1ZmZlci5zd2FwKG5ld0NvbnRlbnRzLm1fc291cEJ1ZmZlcik7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDdiNWM0ODQuLjcw
YjhlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQpAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGlj
IE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlcikKIHsK
LSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2Uo
KTsKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyA9IHNvdXJjZVByb3ZpZGVyLT5zb3Vy
Y2UoKS50b1N0cmluZygpOwogICAgIGlmIChzb3VyY2VTdHJpbmcuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIHJldHVybiBzb3VyY2VTdHJpbmc7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>