<?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>208207</bug_id>
          
          <creation_ts>2020-02-25 10:04:38 -0800</creation_ts>
          <short_desc>[JSC] Support delete by val/id IC on 32-bits</short_desc>
          <delta_ts>2020-05-13 05:17:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>jsc32</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1622657</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-25 10:04:38 -0800</bug_when>
    <thetext>We are adding IC to delete_by_val and delete_by_id on https://bugs.webkit.org/show_bug.cgi?id=207522, but it doesn&apos;t include support for 32-bits architectures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649843</commentid>
    <comment_count>1</comment_count>
      <attachid>398672</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-06 15:12:55 -0700</bug_when>
    <thetext>Created attachment 398672
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649845</commentid>
    <comment_count>2</comment_count>
      <attachid>398672</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-06 15:13:23 -0700</bug_when>
    <thetext>Comment on attachment 398672
WIP - Patch

Let&apos;s check EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651357</commentid>
    <comment_count>3</comment_count>
      <attachid>399036</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-11 11:45:57 -0700</bug_when>
    <thetext>Created attachment 399036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651565</commentid>
    <comment_count>4</comment_count>
      <attachid>399036</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-11 18:34:40 -0700</bug_when>
    <thetext>Comment on attachment 399036
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1175
&gt; +        JSValueOperand key(this, node-&gt;child2(), ManualOperandSpeculation);

do we ever pick anything besides UntypedUse? Where is our speculation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651680</commentid>
    <comment_count>5</comment_count>
      <attachid>399036</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-12 04:16:11 -0700</bug_when>
    <thetext>Comment on attachment 399036
Patch

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

Thank you very much for the comments! I&apos;m answering questions below.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1175
&gt;&gt; +        JSValueOperand key(this, node-&gt;child2(), ManualOperandSpeculation);
&gt; 
&gt; do we ever pick anything besides UntypedUse? Where is our speculation?

IIUC, we have rules to fix up to CellUse from fix up phase. The speculation is just above at line 1172.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651822</commentid>
    <comment_count>6</comment_count>
      <attachid>399036</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-12 11:29:21 -0700</bug_when>
    <thetext>Comment on attachment 399036
Patch

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

r=me

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1175
&gt;&gt;&gt; +        JSValueOperand key(this, node-&gt;child2(), ManualOperandSpeculation);
&gt;&gt; 
&gt;&gt; do we ever pick anything besides UntypedUse? Where is our speculation?
&gt; 
&gt; IIUC, we have rules to fix up to CellUse from fix up phase. The speculation is just above at line 1172.

I see. This style is weird, we typically speculate after such a LOC. (I understand you&apos;re just refactoring the code here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651858</commentid>
    <comment_count>7</comment_count>
      <attachid>399153</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-12 12:26:54 -0700</bug_when>
    <thetext>Created attachment 399153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651865</commentid>
    <comment_count>8</comment_count>
      <attachid>399036</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-12 12:34:43 -0700</bug_when>
    <thetext>Comment on attachment 399036
Patch

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

Thank you very much for the review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1175
&gt;&gt;&gt;&gt; +        JSValueOperand key(this, node-&gt;child2(), ManualOperandSpeculation);
&gt;&gt;&gt; 
&gt;&gt;&gt; do we ever pick anything besides UntypedUse? Where is our speculation?
&gt;&gt; 
&gt;&gt; IIUC, we have rules to fix up to CellUse from fix up phase. The speculation is just above at line 1172.
&gt; 
&gt; I see. This style is weird, we typically speculate after such a LOC. (I understand you&apos;re just refactoring the code here)

I agree. I fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652181</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-13 05:16:40 -0700</bug_when>
    <thetext>Committed r261610: &lt;https://trac.webkit.org/changeset/261610&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399153.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652182</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-13 05:17:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/63180603&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398672</attachid>
            <date>2020-05-06 15:12:55 -0700</date>
            <delta_ts>2020-05-11 11:45:51 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>bug-208207-20200506191253.patch</filename>
            <type>text/plain</type>
            <size>29178</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NjY4Yzc2NTQzNjE3MzQ0ZjU0ODVmZTYwZWM5MWM0ZDNhZjM2ZGQ0Li45MDRkNTliZDEzMWRjZTk3
ZjlkYWNmZjBlZjk2NjNhMTU2MGRmZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0wNS0wNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gU3VwcG9ydCBkZWxldGUgYnkgdmFsL2lkIElDIG9uIDMyLWJpdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODIwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaW1wbGVtZW50cyBEZWxldGVCeUlkIGFuZCBEZWxldGVCeVZhbCBJQyBvbiAzMi1iaXRzIEpJ
VC4gSXQKKyAgICAgICAgaW5jbHVkZXMgYm90aCBCYXNlbGluZSBhbmQgREZHIGNoYW5nZXMuCisK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6IERlbGV0
ZWQuCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0
b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lk
KToKKwogMjAyMC0wNS0wNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5Mb2NhbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGEwMWEwNWQ2NTVjOTA2NGY3
ZDdiZjdiZTYwYmQyNmU0MTY1NDM3NzYuLjZhNjQ4NmZiYzA5NWQxZDc3ZjY2OTg0ZDgyZjhmODc1
MDM3NjgxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cApAQCAtMTczMiwyMSArMTczMiwxNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBEZWxldGVCeVZhbDogewotI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQogICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIH0KLSNlbmRp
ZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIERlbGV0ZUJ5
SWQ6IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggZmEyOGYzOTMwZDRkODJlZTY4Y2QwMjg3MGZjMTY4N2QwMmMyNTkyYy4uMjhhMTEyOWRk
NmNjZGNhYTgzZGI0OWExM2E2NmY0ODhiY2QxYTlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDcsNiArMTEwNywxMzEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CisKKyAgICAg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOworICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJl
Z2lzdGVycygpOworCisgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIpOworCisgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworI2Vsc2UKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworI2VuZGlmCisKKyAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRo
LmdldCgpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkp
OworCisgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIElDIGV2
ZW4gaWYgY2hpbGQxIGlzIFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIGVtaXQg
d3JpdGUtYmFycmllciBhZnRlciB0aGUgZmFzdCBwYXRoIG9mIElDLgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKKyAgICBBU1NFUlQobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBi
YXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkpOworICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworCisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
UmVncy5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNo
aWxkMigpLCBTcGVjQ2VsbCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CisKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgICAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQ
Uik7CisKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworI2Vsc2UKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyNlbmRpZgorCisgICAgICAgIG1faml0LmFkZERlbEJ5VmFs
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CisKKyAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB1c2UgSUMgZXZlbiBpZiBjaGlsZDEgaXMgVW50eXBlZFVzZS4gSW4gdGhhdCBjYXNlLCB3
ZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGFmdGVyIHRoZSBmYXN0IHBhdGggb2YgSUMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NworICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEpTVmFsdWVP
cGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5
LmpzVmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSog
bm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IDYwYzk5MWMyMTFmNzEzNWE2ZmU5ZWU4ZTBjMjAyOTg4ZTUyODRi
N2QuLmJjZTk3ZGQ0MjI5YmJhYWU4OTBkYTNhMTA5ZGJjZWNjZjFmNmY4M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtNDI4OCw0NSArNDI4OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJsZXNzQm9vbGVhbihH
UFJSZWcpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5v
ZGUqIG5vZGUpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IGlubGluZSBjYWNo
aW5nIG9uIDMyIGJpdHMuCi0gICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4MjA3Pi4KLSAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotCi0g
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgdmFsdWUudXNlKCk7Ci0KLSAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIHZh
bHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7Ci0KLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVn
cyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKLQotICAgIGJhc2UudXNlKCk7Ci0gICAga2V5LnVzZSgpOwotCi0gICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFz
ZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
LSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogewogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggODhlOGUyMGQ1YTk0NGNhNmFlYTM5
YTNlNGM1NGIzMjQ1NmY5ZjhiMi4uMjc1OWE1MTIyZTY1NGYwYjJmMmJmMTY0ODU1OGUwYmVhZWUy
ZDczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCkBAIC01NzEwLDExNiArNTcxMCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0
KHNjcmF0Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotCi0gICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0KLSAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0g
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAgICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlv
bkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwot
ICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwotCi0gICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
cmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKLQotICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVC
eUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
Ci0KLSAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKLSAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwotCi0gICAgICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIElDIGV2ZW4gaWYgY2hpbGQxIGlz
IFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBh
ZnRlciB0aGUgZmFzdCBwYXRoIG9mIElDLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKLSAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwotICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotCi0gICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBDZWxsVXNlKSB7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDIoKSk7Ci0KLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0KLSAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLQotICAgICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1
ZVJlZ3MoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgICAgIGlmIChuZWVk
c1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQotICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVncykpOwotCi0gICAgICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKLSAgICAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNl
cHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgp
KTsKLSAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3Rl
cnMoKTsKLQotICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0g
ICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSKTsKLQotICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAot
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOwotCi0gICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
Ci0KLSAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSUMgZXZl
biBpZiBjaGlsZDEgaXMgVW50eXBlZFVzZS4gSW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgZW1pdCB3
cml0ZS1iYXJyaWVyIGFmdGVyIHRoZSBmYXN0IHBhdGggb2YgSUMuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NwotICAgIEpTVmFsdWVPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNW
YWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7
Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7Ci0KLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci19Ci0K
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEYXRlR2V0KE5vZGUqIG5vZGUpCiB7CiAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNTJhNjk5ZmZj
OWNlNmI4M2FiMDRmY2JkMzA3NDNmMDQ2NGNhNDIzNC4uMTNiNjMxZTIyMTg1ZDRiOTY1ODY3ZTM3
MjM0OWJmZmM1MTZmNGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtNTQ0MSwxMiArNTQ0MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIsIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJzY3JpcHQsIHJldHVybkdQUiwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIp
LCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAyMjZlNmI3OTg1MWI2MWJjY2JkNTEwN2NmYTVm
Y2MzMDI2MGU3OTViLi5mODc4M2YyM2RkYWZlZmIyN2Q4NmViZjE0NDIwMTMyNzMwZGIyYjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcApAQCAtMTYzLDE3ICsxNjMsMTggQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBK
SVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCi1KSVREZWxCeVZhbEdlbmVyYXRvcjo6
SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERl
bEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQogICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0
ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwot
ICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIEFTU0VSVChiYXNl
LnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0
eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKLSAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9
IHJlc3VsdDsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1
bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigp
OwotICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0
dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52
LnByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CiAjZW5kaWYKICAgICBtX3N0dWJJ
bmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwpAQCAtMTk0LDE3ICsxOTUsMTggQEAg
dm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOwogfQogCi1KSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KQorSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQog
ICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0g
cmVzdWx0KTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRH
UFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgIG1fc3R1
YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVz
dWx0LnBheWxvYWRHUFIoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIEFTU0VSVChiYXNl
LnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQ
UiA9IGJhc2UudGFnR1BSKCk7Ci0gICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwog
ICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogI2VuZGlm
CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRl
eCBmMDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThhNjExMTFmMzM2Nzc1Li45NzZmNzFiYmFhYzkx
ZDkzZTYwNzA2Nzc5NmM2YzUyNGUwNDlkNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNTIsNyArMTUyLDcgQEAg
cHVibGljOgogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7
CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAog
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBh
NDA4MDU5MzY1MGE2ZWM1NjhhYTYxMDY5MTdmZTk3YjM4ZjEzMzhiLi44MmU2MGEwZGNiYzg2NmQ0
YmM5NWY2ZWNiNzE1YmY0NTA1ZmMxY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QwLCByZWdUMik7
CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQ0OSw3ICs0
NDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QwLCByZWdU
Mik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2RlbEJ5VmFscy5h
cHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDQwOTFjNDRmN2Q3MTdmYzJiM2EwMWIyNDExMmVmYThk
MzdhOWY1MDUuLjQxNDM1ZWRlNjU4NzQ2YzM0YzlkZGRjMDM5Mzk1YTcwZGI1ZTdkNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcApAQCAtMTIzLDEwICsxMjMsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIGVt
aXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7Ci0gICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7Ci0gICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIEpTVmFsdWVS
ZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKworICAgIGVtaXRMb2Fk
KGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CisgICAg
SklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksCisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJvb2xlYW4ocmVn
VDAsIHJlc3VsdFJlZ3MpOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3Vs
dFJlZ3MpOworCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0
ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRl
LWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2Ji
ZXJzIHJlZ2lzdGVycy4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdy
aXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
MTM1LDE0ICsxNTMsODQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owot
ICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFN
b2RlLnZhbHVlKCkpKTsKLSAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwg
YmFzZVJlZ3MucGF5bG9hZEdQUigpLCBwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpLCBw
cm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCkpOworCisgICAgSklURGVsQnlW
YWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVn
cywgcmVzdWx0UmVncywgcmVnVDQpOworCisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeVZhbHMu
YXBwZW5kKGdlbik7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1bHRSZWdzKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0UmVncyk7CisKKyAgICAvLyBXZSBzaG91
bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUt
YmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1
Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIEZJ
WE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVs
eSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZp
bHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0KLXZvaWQg
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFs
PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgSklURGVsQnlWYWxHZW5lcmF0
b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisKKyAgICBlbWl0TG9hZDIoYmFzZSwgYmFzZVJlZ3Mu
dGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgcHJvcGVydHksIHByb3BlcnR5UmVncy50
YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisKKyAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdz
KGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBKU1ZhbHVlUmVncyhw
cm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpLCBUcnVzdGVk
SW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIHJl
c3VsdFJlZ3MpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRSZWdzKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVy
IGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisKKyAgICBKSVREZWxCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOworCisgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdH
UFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUu
dmFsdWUoKSkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2Fs
bCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1bHRSZWdzKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0UmVncyk7Cit9CiAKIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399036</attachid>
            <date>2020-05-11 11:45:57 -0700</date>
            <delta_ts>2020-05-12 12:26:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208207-20200511154554.patch</filename>
            <type>text/plain</type>
            <size>29193</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OWNjODYyZWZhNDUyN2VkZjA0ZTM4MDRiYjIxODhjZDU4NTM2OTYyLi5kMTZiMDQ4MmVjOGIyODEw
MDk5MzkyZjQyM2NlMjUzYTkyNTE3MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0wNS0wNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gU3VwcG9ydCBkZWxldGUgYnkgdmFsL2lkIElDIG9uIDMyLWJpdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODIwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaW1wbGVtZW50cyBEZWxldGVCeUlkIGFuZCBEZWxldGVCeVZhbCBJQyBvbiAzMi1iaXRzIEpJ
VC4gSXQKKyAgICAgICAgaW5jbHVkZXMgYm90aCBCYXNlbGluZSBhbmQgREZHIGNoYW5nZXMuCisK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6IERlbGV0
ZWQuCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0
b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lk
KToKKwogMjAyMC0wNS0xMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgW2NsYW5nLXRpZHldIFJ1biBtb2Rlcm5pemUtdXNlLW51bGxwdHIgb3ZlciBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDBm
MGFhNDRkNmQ0OTlkOGY0YjNkMDc0MjU0N2ZhODY0ZDZkZTRjNDAuLmI3YmFiZWQwNTBjNDhmZjE1
NWIwNTNjNjQyNGNkYzYwNjExYzRkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTczNiwyMSArMTczNiwxNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDogewotI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQogICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggODFjZWVmY2Q1MGJiMWNiMDRjMmY3NDMwOTA4MmUyZTNiYWFj
ZDAwZC4uOGQxNDhkMjVkMTAxOTMyOTQ3OWQzNzI5YzhlOTE5NGY2ZDJjY2JlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDcs
NiArMTEwNywxMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChO
b2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQoreworICAgIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCk7CisKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljOworICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJz
ID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3Ig
Z2VuKAorICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hH
UFIpOworCisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OworI2Vsc2UKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOworI2VuZGlmCisKKyAgICAgICAgbV9qaXQuYWRkRGVsQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RG
TW92ZShzbG93UGF0aCkpOworCisgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXNlIElDIGV2ZW4gaWYgY2hpbGQxIGlzIFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwg
d2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhZnRlciB0aGUgZmFzdCBwYXRoIG9mIElDLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKKyAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxw
dHIsIGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkp
OworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygp
OworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgaWYgKG5lZWRzVHlw
ZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCisgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CisKKyAgICAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlv
bkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwor
ICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OworCisgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0
UmVncywgc2NyYXRjaEdQUik7CisKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworI2Vsc2UKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZSwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyNlbmRpZgorCisgICAgICAgIG1f
aml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICAgICAgdW5ibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB1c2UgSUMgZXZlbiBpZiBjaGlsZDEgaXMgVW50eXBlZFVzZS4g
SW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGFmdGVyIHRoZSBmYXN0
IHBhdGggb2YgSUMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTM5NworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVn
cyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOwor
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRy
LCBiYXNlUmVncywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDYwYzk5MWMyMTFmNzEzNWE2ZmU5ZWU4
ZTBjMjAyOTg4ZTUyODRiN2QuLmJjZTk3ZGQ0MjI5YmJhYWU4OTBkYTNhMTA5ZGJjZWNjZjFmNmY4
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtNDI4OCw0NSArNDI4OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmJsZXNzQm9vbGVhbihHUFJSZWcpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBw
b3J0IGlubGluZSBjYWNoaW5nIG9uIDMyIGJpdHMuCi0gICAgLy8gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjA3Pi4KLSAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwotCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgdmFsdWUu
dXNlKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG51bGxwdHIsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwotICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLX0KLQotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQga2V5
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
LSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7Ci0gICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIGJhc2UudXNlKCk7Ci0gICAga2V5LnVz
ZSgpOwotCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotCi0gICAgdW5ibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGlj
aXRseSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShOb2Rl
KiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMWYyNTkw
NTJkODYxNDY0YmFjZjUyMWMwNWIyNDc1YjNkMjdiYzYwZC4uYjMzMGVlZjYzMTc2MjgxOGQ1ZmY5
Mzg0ZWZiNWIzYWZiY2MzNTMxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NzEwLDExNiArNTcxMCw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKiBub2RlKQogICAgIHN0
cmljdEludDMyUmVzdWx0KHNjcmF0Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwot
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0KLSAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNj
cmF0Y2guZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0K
LSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwot
ICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRH
ZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3Ry
ZWFtLT5zaXplKCkpOwotICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+
dXNlZFJlZ2lzdGVycygpOwotCi0gICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKLQotICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKLQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRo
LmdldCgpKTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkp
OwotCi0gICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIElDIGV2
ZW4gaWYgY2hpbGQxIGlzIFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwgd2Ugc2hvdWxkIGVtaXQg
d3JpdGUtYmFycmllciBhZnRlciB0aGUgZmFzdCBwYXRoIG9mIElDLgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKLSAgICBBU1NFUlQobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBi
YXNlLmpzVmFsdWVSZWdzKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLQotICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLX0KLQotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7Ci0gICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBub2RlLT5jaGlsZDIoKSk7Ci0KLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7Ci0KLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLQotICAgICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGtleVJl
Z3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0g
ICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQotICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVncykp
OwotCi0gICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKLSAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRl
QW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBt
X3N0cmVhbS0+c2l6ZSgpKTsKLSAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRo
aXMtPnVzZWRSZWdpc3RlcnMoKTsKLQotICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywg
cmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKLQotICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwotCi0gICAgICAgIG1faml0LmFkZERlbEJ5VmFs
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7Ci0KLSAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB1c2UgSUMgZXZlbiBpZiBjaGlsZDEgaXMgVW50eXBlZFVzZS4gSW4gdGhhdCBjYXNlLCB3
ZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGFmdGVyIHRoZSBmYXN0IHBhdGggb2YgSUMuCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NwotICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVP
cGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5
LmpzVmFsdWVSZWdzKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwotICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEYXRlR2V0KE5vZGUq
IG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggZDQ3MTFhOTlmZTc2YTAxMzNiNzYxM2FhY2RkY2YyMGZiYTczMTAxNy4uYWVlMzY2MGJj
ZjExZDk4MDA1NjVmNmExZmMzZDcxNDhjZGU5ZGYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTQ0MSwxMiArNTQ0MSwxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJh
dG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1
ZSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIsIHBhcmFtcy5n
cFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
dHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVy
YXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIHJldHVybkdQUiwgcGFyYW1zLmdwU2Ny
YXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVl
UmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAyMjZlNmI3OTg1MWI2
MWJjY2JkNTEwN2NmYTVmY2MzMDI2MGU3OTViLi5mODc4M2YyM2RkYWZlZmIyN2Q4NmViZjE0NDIw
MTMyNzMwZGIyYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTYzLDE3ICsxNjMsMTggQEAgVl9KSVRPcGVy
YXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCi1KSVREZWxC
eVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQogICAgIDogQmFzZShj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5
VmFsLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IGZhbHNlOwotICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOwor
ICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAg
ICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5m
by0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKLSAgICBtX3N0dWJJ
bmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3Vs
dC5wYXlsb2FkR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBBU1NFUlQoYmFzZS50
YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIg
PSBiYXNlLnRhZ0dQUigpOwotICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CiAjZW5k
aWYKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwpAQCAtMTk0
LDE3ICsxOTUsMTggQEAgdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAg
ICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9zdGFydCkpOwogfQogCi1KSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlk
R2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBzY3JhdGNoKQorSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzY3JhdGNoKQogICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9z
dHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICBBU1NFUlQoYmFzZS5w
YXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0g
cmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5
bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BS
UmVnOwotICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OworICAgIG1fc3R1YkluZm8t
PnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIEFTU0VSVChiYXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHVi
SW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7Ci0gICAgbV9zdHViSW5mby0+dmFsdWVU
YWdHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVz
dWx0LnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlk
R1BSUmVnOwogI2VuZGlmCiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3Jh
dGNoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAppbmRleCBmMDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThhNjExMTFmMzM2Nzc1
Li45NzZmNzFiYmFhYzkxZDkzZTYwNzA2Nzc5NmM2YzUyNGUwNDlkNWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0x
NTIsNyArMTUyLDcgQEAgcHVibGljOgogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCiAgICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAogICAgIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAKICAgICBKSVREZWxC
eUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmll
ciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0
Y2gpOworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAppbmRleCBhNDA4MDU5MzY1MGE2ZWM1NjhhYTYxMDY5MTdmZTk3YjM4ZjEzMzhiLi44
MmU2MGEwZGNiYzg2NmQ0YmM5NWY2ZWNiNzE1YmY0NTA1ZmMxY2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNDAwLDcgKzQwMCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QwLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2Vu
KTsKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIHJlZ1QwLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDQwOTFjNDRmN2Q3MTdmYzJi
M2EwMWIyNDExMmVmYThkMzdhOWY1MDUuLjQxNDM1ZWRlNjU4NzQ2YzM0YzlkZGRjMDM5Mzk1YTcw
ZGI1ZTdkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTIzLDEwICsxMjMsMjggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKIAotICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSk7Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7Ci0g
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkp
OworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsK
KyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsK
KworICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2Fk
R1BSKCkpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50
YWdHUFIoKSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBy
ZWdUNCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAg
IGJveEJvb2xlYW4ocmVnVDAsIHJlc3VsdFJlZ3MpOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlc3VsdFJlZ3MpOworCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1
cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIFdlIHNo
b3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5jZSB3cml0
ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUg
c2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMTM1LDE0ICsxNTMsODQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OwotICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5
LCByZWdUMywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxH
ZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIFRydXN0ZWRJbW0zMihi
eXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdz
ID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKworICAgIGVtaXRMb2FkMihiYXNlLCBiYXNl
UmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBwcm9wZXJ0eSwgcHJvcGVydHlS
ZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CisgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCkpOwor
CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgcmVnVDQpOworCisgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1
bHRSZWdzKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0UmVncyk7CisK
KyAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVu
Y2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisgICAgLy8gSUMgY2Fu
IHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBj
ZWxsLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNl
bGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVy
KGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKSB7IH0KLXZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcERlbEJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOworICAgIEpTVmFsdWVSZWdzIHBy
b3BlcnR5UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisKKyAgICBlbWl0TG9hZDIo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgcHJvcGVydHks
IHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7CisKKyAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIEpTVmFsdWVSZWdzKGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2Fk
R1BSKCkpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJv
b2xlYW4ocmVnVDAsIHJlc3VsdFJlZ3MpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCByZXN1bHRSZWdzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
JihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisKKyAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisKKyAgICBK
SVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBlbWl0TG9hZChiYXNl
LCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNl
UmVncywgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1bHRSZWdzKTsK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0UmVncyk7Cit9CiAKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399153</attachid>
            <date>2020-05-12 12:26:54 -0700</date>
            <delta_ts>2020-05-13 05:16:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208207-20200512162652.patch</filename>
            <type>text/plain</type>
            <size>29192</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OWNjODYyZWZhNDUyN2VkZjA0ZTM4MDRiYjIxODhjZDU4NTM2OTYyLi4xYTk4YzVhMDBiMzEyNDg5
OTEwYTRkZmFlMTNjN2I0NTY0NTU5YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0wNS0xMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gU3VwcG9ydCBkZWxldGUgYnkgdmFsL2lkIElDIG9uIDMyLWJpdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODIwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wbGVtZW50cyBEZWxldGVCeUlkIGFuZCBEZWxldGVCeVZhbCBJQyBvbiAzMi1iaXRzIEpJVC4g
SXQKKyAgICAgICAgaW5jbHVkZXMgYm90aCBCYXNlbGluZSBhbmQgREZHIGNoYW5nZXMuCisKKyAg
ICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6IERlbGV0ZWQu
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAgICAgICogaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6
OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRv
cjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
ZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToK
KwogMjAyMC0wNS0xMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAK
ICAgICAgICAgW2NsYW5nLXRpZHldIFJ1biBtb2Rlcm5pemUtdXNlLW51bGxwdHIgb3ZlciBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDBmMGFh
NDRkNmQ0OTlkOGY0YjNkMDc0MjU0N2ZhODY0ZDZkZTRjNDAuLmI3YmFiZWQwNTBjNDhmZjE1NWIw
NTNjNjQyNGNkYzYwNjExYzRkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcApAQCAtMTczNiwyMSArMTczNiwxNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDogewotI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQogICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIERlbGV0ZUJ5SWQ6IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggODFjZWVmY2Q1MGJiMWNiMDRjMmY3NDMwOTA4MmUyZTNiYWFjZDAw
ZC4uOGYxMjExOTAzNzFiOTE2MDRmNjJiOWQwNjY4MTU1NDZmNjdmNTNhOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDcsNiAr
MTEwNywxMzIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2Rl
KiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
KworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BS
KCk7CisKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljOworICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4s
IG1fc3RyZWFtLT5zaXplKCkpOworICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2Vu
KAorICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIp
OworCisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwor
I2Vsc2UKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOworI2VuZGlmCisKKyAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOworCisgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgdXNlIElDIGV2ZW4gaWYgY2hpbGQxIGlzIFVudHlwZWRVc2UuIEluIHRoYXQgY2FzZSwgd2Ug
c2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhZnRlciB0aGUgZmFzdCBwYXRoIG9mIElDLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTcKKyAgICBB
U1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOwor
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIs
IGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30K
Kwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworCisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsK
KworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtleSk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOworICAgICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7
CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKKworICAgICAgICBpZiAobmVlZHNUeXBl
Q2hlY2sobm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKKworICAgICAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7Cisg
ICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CisKKyAgICAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRS
ZWdzLCBzY3JhdGNoR1BSKTsKKworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7
CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisjZWxzZQorICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworI2VuZGlmCisKKyAgICAgICAgbV9q
aXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgICAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBJQyBldmVuIGlmIGNoaWxkMSBpcyBVbnR5cGVkVXNlLiBJ
biB0aGF0IGNhc2UsIHdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYWZ0ZXIgdGhlIGZhc3Qg
cGF0aCBvZiBJQy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Mzk3CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEpT
VmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdz
IGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZh
bEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIs
IGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlJZChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNjBjOTkxYzIxMWY3MTM1YTZmZTllZThl
MGMyMDI5ODhlNTI4NGI3ZC4uYmNlOTdkZDQyMjliYmFhZTg5MGRhM2ExMDlkYmNlY2NmMWY2Zjgz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC00Mjg4LDQ1ICs0Mjg4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Ymxlc3NCb29sZWFuKEdQUlJlZykKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBv
cnQgaW5saW5lIGNhY2hpbmcgb24gMzIgYml0cy4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgyMDc+LgotICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVn
cygpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICB2YWx1ZS51
c2UoKTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbnVsbHB0ciwgdmFsdWVSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Ci0gICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BS
LCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotfQotCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKLXsKLSAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBrZXko
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKLQotICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwot
ICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgYmFzZS51c2UoKTsKLSAgICBrZXkudXNl
KCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUmFuZG9tKE5vZGUq
IG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAxZjI1OTA1
MmQ4NjE0NjRiYWNmNTIxYzA1YjI0NzViM2QyN2JjNjBkLi5iMzMwZWVmNjMxNzYyODE4ZDVmZjkz
ODRlZmI1YjNhZmJjYzM1MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTU3MTAsMTE2ICs1NzEwLDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KE5vZGUqIG5vZGUpCiAgICAgc3Ry
aWN0SW50MzJSZXN1bHQoc2NyYXRjaDFHUFIsIG1fY3VycmVudE5vZGUpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQotewotICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0K
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLQotICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQot
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Ci0g
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKLQotICAgICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
Ci0KLSAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSUMgZXZl
biBpZiBjaGlsZDEgaXMgVW50eXBlZFVzZS4gSW4gdGhhdCBjYXNlLCB3ZSBzaG91bGQgZW1pdCB3
cml0ZS1iYXJyaWVyIGFmdGVyIHRoZSBmYXN0IHBhdGggb2YgSUMuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NwotICAgIEFTU0VSVChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJh
c2UuanNWYWx1ZVJlZ3MoKTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotCi0gICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotfQotCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIG5vZGUtPmNoaWxkMigpKTsKLQotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMs
IG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKLQotICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotCi0gICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVn
cyA9IGtleS5qc1ZhbHVlUmVncygpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAg
ICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCi0gICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7
Ci0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwotICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwotICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOwotCi0gICAgICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNl
ZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgbV9qaXQuYWRkRGVsQnlWYWwo
Z2VuLCBzbG93UGF0aC5nZXQoKSk7Ci0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1v
dmUoc2xvd1BhdGgpKTsKLQotICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHVzZSBJQyBldmVuIGlmIGNoaWxkMSBpcyBVbnR5cGVkVXNlLiBJbiB0aGF0IGNhc2UsIHdl
IHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYWZ0ZXIgdGhlIGZhc3QgcGF0aCBvZiBJQy4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk3Ci0gICAg
SlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9w
ZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLQotICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXku
anNWYWx1ZVJlZ3MoKTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlS
ZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Ci0gICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSog
bm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBkNDcxMWE5OWZlNzZhMDEzM2I3NjEzYWFjZGRjZjIwZmJhNzMxMDE3Li5hZWUzNjYwYmNm
MTFkOTgwMDU2NWY2YTFmYzNkNzE0OGNkZTlkZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01NDQxLDEyICs1NDQxLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0
b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVl
LCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybkdQUiwgcGFyYW1zLmdw
U2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0
dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJh
dG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3Jh
dGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVS
ZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDIyNmU2Yjc5ODUxYjYx
YmNjYmQ1MTA3Y2ZhNWZjYzMwMjYwZTc5NWIuLmY4NzgzZjIzZGRhZmVmYjI3ZDg2ZWJmMTQ0MjAx
MzI3MzBkYjJiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjMsMTcgKzE2MywxOCBAQCBWX0pJVE9wZXJh
dGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiB9CiAKLUpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCitKSVREZWxCeVZhbEdl
bmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCiAgICAgOiBCYXNlKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlW
YWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlm
aWVyID0gZmFsc2U7Ci0gICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdCk7Cisg
ICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAg
IG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwotICAgIG1fc3R1Yklu
Zm8tPnZhbHVlR1BSID0gcmVzdWx0OworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0
LnBheWxvYWRHUFIoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIEFTU0VSVChiYXNlLnRh
Z0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7Ci0gICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwogICAg
IG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIoKTsKICNlbmRp
ZgogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CkBAIC0xOTQs
MTcgKzE5NSwxOCBAQCB2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKICAgICAg
ICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIHNjcmF0Y2gpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9y
KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hl
YWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHNjcmF0Y2gpCiAgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0
dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwotICAgIEFTU0VSVChiYXNlLnBh
eWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSBy
ZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXls
b2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJS
ZWc7Ci0gICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CisgICAgbV9zdHViSW5mby0+
dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKLSAgICBtX3N0dWJJbmZvLT52YWx1ZVRh
Z0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1
bHQudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRH
UFJSZWc7CiAjZW5kaWYKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0
Y2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCmluZGV4IGYwM2UwOTI1Mzg1NDFmYjAzNDBmMTJjNmJhOGE2MTExMWYzMzY3NzUu
Ljk3NmY3MWJiYWFjOTFkOTNlNjA3MDY3Nzk2YzZjNTI0ZTA0OWQ1ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE1
Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKICAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgp
IGNvbnN0CiAgICAgewpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKIAogICAgIEpJVERlbEJ5
SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRj
aCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IHNjcmF0Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IGE0MDgwNTkzNjUwYTZlYzU2OGFhNjEwNjkxN2ZlOTdiMzhmMTMzOGIuLjgy
ZTYwYTBkY2JjODY2ZDRiYzk1ZjZlY2I3MTViZjQ1MDVmYzFjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC00MDAsNyArNDAwLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
cmVnVDAsIHJlZ1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4p
OwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDAsIHJlZ1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNDA5MWM0NGY3ZDcxN2ZjMmIz
YTAxYjI0MTEyZWZhOGQzN2E5ZjUwNS4uNDE0MzVlZGU2NTg3NDZjMzRjOWRkZGMwMzkzOTVhNzBk
YjVlN2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMjMsMTAgKzEyMywyOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwogCi0gICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkp
KTsKLSAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKLSAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7
CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwor
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwor
CisgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRH
UFIoKSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpKTsKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwKKyAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJl
Z1Q0KTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAg
Ym94Qm9vbGVhbihyZWdUMCwgcmVzdWx0UmVncyk7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmVzdWx0UmVncyk7CisKKyAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVy
ZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCisgICAgLy8gV2Ugc2hv
dWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRl
LWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRp
b25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBz
aXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkz
OTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xMzUsMTQgKzE1Myw4NCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7Ci0gICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHks
IHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdl
bmVyaWMsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCkpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOworCisgICAgZW1pdExvYWQyKGJhc2UsIGJhc2VS
ZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCksIHByb3BlcnR5LCBwcm9wZXJ0eVJl
Z3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKKyAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSk7CisK
KyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisKKyAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIHJlc3Vs
dFJlZ3MpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRSZWdzKTsKKwor
ICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5j
ZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KKyAgICAvLyBJQyBjYW4g
d3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNl
bGwuCisgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2Vs
aW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQorICAgIGVtaXRXcml0ZUJhcnJpZXIo
YmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpIHsgfQotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVsQnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBKSVRE
ZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKworICAgIGVtaXRMb2FkMihi
YXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBwcm9wZXJ0eSwg
cHJvcGVydHlSZWdzLnRhZ0dQUigpLCBwcm9wZXJ0eVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgSlNWYWx1ZVJlZ3MoYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSks
IEpTVmFsdWVSZWdzKHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRH
UFIoKSksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKKyAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9v
bGVhbihyZWdUMCwgcmVzdWx0UmVncyk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IHJlc3VsdFJlZ3MpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKworICAgIEpT
VmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKworICAgIEpJ
VERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIGVtaXRMb2FkKGJhc2Us
IGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VS
ZWdzLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIHJlc3VsdFJlZ3MpOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRSZWdzKTsKK30KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>