<?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>215434</bug_id>
          
          <creation_ts>2020-08-12 17:30:17 -0700</creation_ts>
          <short_desc>OSRAvailabilityAnalysis shouldn&apos;t mark GetStack nodes directly as valid places for recovery</short_desc>
          <delta_ts>2020-08-14 11:43:32 -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>New Bugs</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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>ews-watchlist</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>1679886</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-12 17:30:17 -0700</bug_when>
    <thetext>OSRAvailabilityAnalysis shouldn&apos;t mark GetStack nodes directly as valid places for recovery</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679887</commentid>
    <comment_count>1</comment_count>
      <attachid>406484</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-12 17:30:35 -0700</bug_when>
    <thetext>Created attachment 406484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679888</commentid>
    <comment_count>2</comment_count>
      <attachid>406485</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-12 17:44:33 -0700</bug_when>
    <thetext>Created attachment 406485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679900</commentid>
    <comment_count>3</comment_count>
      <attachid>406485</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-12 19:42:33 -0700</bug_when>
    <thetext>Comment on attachment 406485
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        It&apos;s somewhat subtle that we cannot mark the node in Availability
&gt; +        for GetStack. The reason is that if we did we would need to make

nit: this first sentence could use a touch of clarification around the GetStack itself being the availability&apos;s node field

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        if you had a graph like (after PutStack sinking):

FWIW, this graph would be valid even if it happened without put stack sinking. Not sure if it needs specification.

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:136
&gt; +                    // FIXME: The mayExit status of a node doesn&apos;t seem like it should mean we don&apos;t need to have everything available.

It doesn&apos;t. I wouldn&apos;t write &quot;seem like&quot; here

Please file a bug and link to it here

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:137
&gt; +                    if (mayExit(m_graph, node) != DoesNotExit &amp;&amp; node-&gt;origin.exitOK) {

nit: Not sure you need exitOK here. Probably can be an assert I&apos;m guessing. 

Might not matter much, given the above fixme is to remove this mayExit call

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:167
&gt; +                        // FIXME: It seems like we should be able to do at least some validation when OSR entering.

Why can&apos;t we?
Also, link to a bug here please.

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:197
&gt; +void validateOSRExitAvailability(Graph&amp; graph)

nice!

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:236
&gt; +    // It&apos;s somewhat subtle that we cannot use node for GetStack. The reason is that if we did we would need to make any phase that converts

&quot;use the node for GetStack&quot; is kinda not detailed enough here. I&apos;d say something along the lines of &quot;We cannot use the node of the GetStack itself in the availability&apos;s node field&quot;

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.h:44
&gt; +// Unlike the phase above this function doesn&apos;t mutate the graph&apos;s BasicBlock SSA metadata. Also, does nothing if !validationEnabled()

nice

&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.h:-50
&gt; -    

revert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680024</commentid>
    <comment_count>4</comment_count>
      <attachid>406485</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-13 11:18:42 -0700</bug_when>
    <thetext>Comment on attachment 406485
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        for GetStack. The reason is that if we did we would need to make
&gt; 
&gt; nit: this first sentence could use a touch of clarification around the GetStack itself being the availability&apos;s node field

Yeah, I wasn&apos;t sure how to phrase that better. It&apos;s kinda hard to describe...

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +        if you had a graph like (after PutStack sinking):
&gt; 
&gt; FWIW, this graph would be valid even if it happened without put stack sinking. Not sure if it needs specification.

Oh, I added that to explain how we could end up with this graph. Not that it&apos;s the only way.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:136
&gt;&gt; +                    // FIXME: The mayExit status of a node doesn&apos;t seem like it should mean we don&apos;t need to have everything available.
&gt; 
&gt; It doesn&apos;t. I wouldn&apos;t write &quot;seem like&quot; here
&gt; 
&gt; Please file a bug and link to it here

Done.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:137
&gt;&gt; +                    if (mayExit(m_graph, node) != DoesNotExit &amp;&amp; node-&gt;origin.exitOK) {
&gt; 
&gt; nit: Not sure you need exitOK here. Probably can be an assert I&apos;m guessing. 
&gt; 
&gt; Might not matter much, given the above fixme is to remove this mayExit call

You could have a node where mayExit says it could exit but exitOK is false. We probably shouldn&apos;t say it mayExit but that&apos;s the current semantics.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:167
&gt;&gt; +                        // FIXME: It seems like we should be able to do at least some validation when OSR entering.
&gt; 
&gt; Why can&apos;t we?
&gt; Also, link to a bug here please.

I just copied that from the FTL lowering code. I didn&apos;t bother to figure out why that was the case.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp:236
&gt;&gt; +    // It&apos;s somewhat subtle that we cannot use node for GetStack. The reason is that if we did we would need to make any phase that converts
&gt; 
&gt; &quot;use the node for GetStack&quot; is kinda not detailed enough here. I&apos;d say something along the lines of &quot;We cannot use the node of the GetStack itself in the availability&apos;s node field&quot;

Sure, I&apos;ll change this and the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680372</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-14 11:27:21 -0700</bug_when>
    <thetext>rdar://65218346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680380</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-08-14 11:43:32 -0700</bug_when>
    <thetext>Landed in r265685</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406484</attachid>
            <date>2020-08-12 17:30:35 -0700</date>
            <delta_ts>2020-08-12 17:44:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215434-20200812173034.patch</filename>
            <type>text/plain</type>
            <size>17100</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDE0MTc4ZTVmNGFjYWZkY2Y0YjFlOWUyNTJhOGY1ODRkNDNkNGM3Li4yNmJhMGQyNDhjOWJjZmQx
MTNiY2EyYzA0Yzc0MmY3MzEzZTllZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOC0xMiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBPU1JBdmFpbGFiaWxpdHlBbmFseXNpcyBzaG91bGRuJ3QgbWFyayBH
ZXRTdGFjayBub2RlcyBkaXJlY3RseSBhcyB2YWxpZCBwbGFjZXMgZm9yIHJlY292ZXJ5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU0MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdHcmFw
aC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlOjpPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1PU1JBdmFp
bGFiaWxpdHlBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsaWRhdGVPU1JFeGl0QXZh
aWxhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1
bGF0b3I6OmV4ZWN1dGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXNQaGFzZS5oOgorICAgICAgICAqIGRmZy9ERkdQaGFzZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OnJ1blBoYXNlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorCiAyMDIwLTA4
LTA1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRo
ZSB2YXJpb3VzIEFsbG93TGlzdCBvcHRpb25zIHNob3VsZCBiZSBhYmxlIHRvIHRha2UgdGhlIGZ1
bmN0aW9uIG5hbWUgaW5saW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXgg
ODYzNjIyN2YzOTQ4MzM1ZGIzZDg0MGU4MWQzZmEwYzVjYmJhN2Y5Zi4uYjNhOWJmZjVjZDJhYWU3
OTIxNDdkZThmMmNiYTViNGQ2MTdhYWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaApAQCAtNjg2LDcgKzY4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBOYXR1cmFsQmxvY2tJdGVyYWJsZShHcmFwaCYgZ3JhcGgpCisgICAg
ICAgIE5hdHVyYWxCbG9ja0l0ZXJhYmxlKGNvbnN0IEdyYXBoJiBncmFwaCkKICAgICAgICAgICAg
IDogbV9ncmFwaCgmZ3JhcGgpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNjk5LDcgKzY5OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaXRlcmF0b3IoR3JhcGgmIGdyYXBoLCBCbG9ja0luZGV4IGluZGV4KQorICAg
ICAgICAgICAgaXRlcmF0b3IoY29uc3QgR3JhcGgmIGdyYXBoLCBCbG9ja0luZGV4IGluZGV4KQog
ICAgICAgICAgICAgICAgIDogbV9ncmFwaCgmZ3JhcGgpCiAgICAgICAgICAgICAgICAgLCBtX2lu
ZGV4KGZpbmROZXh0KGluZGV4KSkKICAgICAgICAgICAgIHsKQEAgLTczNCw3ICs3MzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBHcmFwaCogbV9ncmFwaDsKKyAgICAgICAgICAgIGNvbnN0
IEdyYXBoKiBtX2dyYXBoOwogICAgICAgICAgICAgQmxvY2tJbmRleCBtX2luZGV4OwogICAgICAg
ICB9OwogICAgICAgICAKQEAgLTc0OSwxMCArNzQ5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBHcmFwaCogbV9ncmFwaDsKKyAgICAgICAg
Y29uc3QgR3JhcGgqIG1fZ3JhcGg7CiAgICAgfTsKICAgICAKLSAgICBOYXR1cmFsQmxvY2tJdGVy
YWJsZSBibG9ja3NJbk5hdHVyYWxPcmRlcigpCisgICAgTmF0dXJhbEJsb2NrSXRlcmFibGUgYmxv
Y2tzSW5OYXR1cmFsT3JkZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIE5hdHVyYWxC
bG9ja0l0ZXJhYmxlKCp0aGlzKTsKICAgICB9CkBAIC0xMTcyLDYgKzExNzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzVmFsaWRhdGluZyB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8dWlu
dDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dN
YXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lz
UGhhc2UuY3BwCmluZGV4IGVkODc5ODU1NTZjMWQ1MzRhMGFjZDQzMGU2YTAyMTg1M2RjYmFiMjEu
LjE4ZGEwYTU1YmUzN2EyNTVhODI2MDZmOTc0MjdlYmIzNmQyNTNkMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcApAQCAtMjgsMTcgKzI4LDIxIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgi
CisjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkRnVuY3RvciwgdHlwZW5hbWUgVGFpbEZ1bmN0b3I+
CiBjbGFzcyBPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogcHVibGljOgotICAgIE9T
UkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UoR3JhcGgmIGdyYXBoKQorICAgIE9TUkF2YWlsYWJp
bGl0eUFuYWx5c2lzUGhhc2UoR3JhcGgmIGdyYXBoLCBIZWFkRnVuY3RvciYgYXZhaWxhYmlsaXR5
QXRIZWFkLCBUYWlsRnVuY3RvciYgYXZhaWxhYmlsaXR5QXRUYWlsKQogICAgICAgICA6IFBoYXNl
KGdyYXBoLCAiT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyIpCisgICAgICAgICwgYXZhaWxhYmls
aXR5QXRIZWFkKGF2YWlsYWJpbGl0eUF0SGVhZCkKKyAgICAgICAgLCBhdmFpbGFiaWxpdHlBdFRh
aWwoYXZhaWxhYmlsaXR5QXRUYWlsKQogICAgIHsKICAgICB9CiAgICAgCkBAIC01MCwyMSArNTQs
MjEgQEAgcHVibGljOgogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5j
bGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRUYWlsLmNsZWFy
KCk7CisgICAgICAgICAgICBhdmFpbGFiaWxpdHlBdEhlYWQoYmxvY2spLmNsZWFyKCk7CisgICAg
ICAgICAgICBhdmFpbGFiaWxpdHlBdFRhaWwoYmxvY2spLmNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAg
ICAgICByb290LT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5maWxsKEF2YWlsYWJp
bGl0eTo6dW5hdmFpbGFibGUoKSk7CisgICAgICAgIGF2YWlsYWJpbGl0eUF0SGVhZChyb290KS5t
X2xvY2Fscy5maWxsKEF2YWlsYWJpbGl0eTo6dW5hdmFpbGFibGUoKSk7CiAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9ncmFwaC5ibG9jaygwKS0+dmFs
dWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpCi0gICAgICAgICAgICBy
b290LT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5hcmd1bWVudChhcmd1bWVudCkg
PSBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlKCk7CisgICAgICAgICAgICBhdmFpbGFiaWxpdHlB
dEhlYWQocm9vdCkubV9sb2NhbHMuYXJndW1lbnQoYXJndW1lbnQpID0gQXZhaWxhYmlsaXR5KEZs
dXNoZWRBdChGbHVzaGVkSlNWYWx1ZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKGFyZ3VtZW50KSkpOwogCiAgICAgICAgIC8vIFRoaXMgY291bGQgYmUgbWFkZSBtb3Jl
IGVmZmljaWVudCBieSBwcm9jZXNzaW5nIGJsb2NrcyBpbiByZXZlcnNlIHBvc3RvcmRlci4KICAg
ICAgICAgCi0gICAgICAgIGF1dG8gZHVtcEF2YWlsYWJpbGl0eSA9IFtdIChCYXNpY0Jsb2NrKiBi
bG9jaykgewotICAgICAgICAgICAgZGF0YUxvZ0xuKGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0
SGVhZCk7Ci0gICAgICAgICAgICBkYXRhTG9nTG4oYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRU
YWlsKTsKKyAgICAgICAgYXV0byBkdW1wQXZhaWxhYmlsaXR5ID0gWyZdIChCYXNpY0Jsb2NrKiBi
bG9jaykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJIZWFkOiAiLCBhdmFpbGFiaWxpdHlBdEhl
YWQoYmxvY2spKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiVGFpbDogIiwgYXZhaWxhYmlsaXR5
QXRUYWlsKGJsb2NrKSk7CiAgICAgICAgIH07CiAKICAgICAgICAgYXV0byBkdW1wQnl0ZWNvZGVM
aXZlbmVzc0F0SGVhZCA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2spIHsKQEAgLTgyLDI0ICs4Niwy
MSBAQCBwdWJsaWM6CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAw
OyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OwotICAgICAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiQmVmb3JlIGNoYW5n
aW5nIEJsb2NrICMiLCBibG9jay0+aW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBkdW1wQXZh
aWxhYmlsaXR5KGJsb2NrKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2Fs
Y3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKworICAgICAgICAgICAgICAgIGNhbGN1bGF0b3Iu
bV9hdmFpbGFiaWxpdHkgPSBhdmFpbGFiaWxpdHlBdEhlYWQoYmxvY2spOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNh
bGN1bGF0b3IuZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGlmIChjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5ID09IGJs
b2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0VGFpbCkKKyAgICAgICAgICAgICAgICBpZiAoY2FsY3Vs
YXRvci5tX2F2YWlsYWJpbGl0eSA9PSBhdmFpbGFiaWxpdHlBdFRhaWwoYmxvY2spKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdFRhaWwgPSBjYWxjdWxhdG9yLm1fYXZhaWxhYmls
aXR5OworICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUF0VGFpbChibG9jaykgPSBjYWxjdWxh
dG9yLm1fYXZhaWxhYmlsaXR5OwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogCiAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTEwOSwxMiArMTEwLDEyIEBAIHB1Ymxp
YzoKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VjY2Vzc29ySW5kZXggPSBibG9j
ay0+bnVtU3VjY2Vzc29ycygpOyBzdWNjZXNzb3JJbmRleC0tOykgewogICAgICAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29yKHN1Y2Nlc3Nvcklu
ZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yLT5zc2EtPmF2YWlsYWJpbGl0eUF0
SGVhZC5tZXJnZShjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5KTsKKyAgICAgICAgICAgICAgICAg
ICAgYXZhaWxhYmlsaXR5QXRIZWFkKHN1Y2Nlc3NvcikubWVyZ2UoY2FsY3VsYXRvci5tX2F2YWls
YWJpbGl0eSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBzdWNjZXNzb3JJbmRleCA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IHN1Y2Nlc3Nvcklu
ZGV4LS07KSB7CiAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJs
b2NrLT5zdWNjZXNzb3Ioc3VjY2Vzc29ySW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBzdWNj
ZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkLnBydW5lQnlMaXZlbmVzcygKKyAgICAgICAg
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5QXRIZWFkKHN1Y2Nlc3NvcikucHJ1bmVCeUxpdmVuZXNz
KAogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgc3VjY2Vzc29yLT5hdCgwKS0+b3Jp
Z2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZnRlciBwcnVuaW5nIEJsb2NrICMiLCBzdWNj
ZXNzb3ItPmluZGV4KTsKQEAgLTEyNywyMyArMTI4LDIyIEBAIHB1YmxpYzoKIAogICAgICAgICBp
ZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogCi0gICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2Nr
SW5kZXgpIHsKLSAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2Fs
Y3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICBjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5ID0gYXZhaWxhYmlsaXR5QXRIZWFkKGJsb2NrKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRl
eCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+YXQobm9kZUluZGV4KS0+b3JpZ2luLmV4aXRPSykgewor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgbWF5RXhpdCBzdGF0dXMgb2YgYSBub2Rl
IGRvZXNuJ3Qgc2VlbSBsaWtlIGl0IHNob3VsZCBtZWFuIHdlIGRvbid0IG5lZWQgdG8gaGF2ZSBl
dmVyeXRoaW5nIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heUV4aXQobV9n
cmFwaCwgbm9kZSkgIT0gRG9lc05vdEV4aXQgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgYWxsb3dlZCB0byBleGl0IGhlcmUsIHRo
ZSBoZWFwIG11c3QgYmUgaW4gYSBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hl
cmUgZXhpdGluZyB3b3VsZG4ndCBjcmFzaC4gVGhlc2UgcGFydGljdWxhciBmaWVsZHMgYXJlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgY29ycmVjdG5lc3MgYmVjYXVz
ZSB3ZSB1c2UgdGhlbSBkdXJpbmcgT1NSIGV4aXQKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRvIGRvIG1lYW5pbmdmdWwgdGhpbmdzLiBJdCB3b3VsZCBiZSB3cm9uZyBmb3IgYW55IG9mIHRo
ZW0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIGRlYWQuCiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEF2YWlsYWJpbGl0eU1hcCBhdmFpbGFiaWxpdHlNYXAgPSBjYWxjdWxhdG9y
Lm1fYXZhaWxhYmlsaXR5OwotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFw
LnBydW5lQnlMaXZlbmVzcyhtX2dyYXBoLCBibG9jay0+YXQobm9kZUluZGV4KS0+b3JpZ2luLmZv
ckV4aXQpOworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBleGl0T3JpZ2luID0g
bm9kZS0+b3JpZ2luLmZvckV4aXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxp
dHlNYXAmIGF2YWlsYWJpbGl0eU1hcCA9IGNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAucHJ1bmVCeUxpdmVuZXNzKG1fZ3Jh
cGgsIGV4aXRPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gaGVh
cFBhaXIgOiBhdmFpbGFiaWxpdHlNYXAubV9oZWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChoZWFwUGFpci5rZXkua2luZCgpKSB7CkBAIC0xNjMsNiArMTYzLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQgc2VlbXMgbGlrZSB3ZSBzaG91bGQgYmUg
YWJsZSB0byBkbyBhdCBsZWFzdCBzb21lIHZhbGlkYXRpb24gd2hlbiBPU1IgZW50ZXJpbmcuCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3BsYW4ubW9kZSgpICE9IEZUTEZv
ck9TUkVudHJ5TW9kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5TWFwLm1fbG9jYWxzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IGF2YWlsYWJpbGl0
eU1hcC5tX2xvY2Fscy5vcGVyYW5kRm9ySW5kZXgoaSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkgPSBhdmFpbGFiaWxpdHlNYXAubV9s
b2NhbHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxp
dHkuaXNEZWFkKCkgJiYgbV9ncmFwaC5pc0xpdmVJbkJ5dGVjb2RlKG9wZXJhbmQsIGV4aXRPcmln
aW4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG5vZGUsIHRvQ1N0cmluZygiTGl2ZSBieXRlY29kZSBsb2NhbCBub3QgYXZhaWxhYmxlOiBv
cGVyYW5kID0gIiwgb3BlcmFuZCwgIiwgYXZhaWxhYmlsaXR5TWFwID0gIiwgYXZhaWxhYmlsaXR5
TWFwLCAiLCBvcmlnaW4gPSAiLCBleGl0T3JpZ2luKS5kYXRhKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0b3IuZXhlY3V0ZU5vZGUoYmxv
Y2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTczLDExICsxODMsMzEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBIZWFkRnVuY3RvciYgYXZhaWxhYmlsaXR5QXRI
ZWFkOworICAgIFRhaWxGdW5jdG9yJiBhdmFpbGFiaWxpdHlBdFRhaWw7CiB9OwogCiBib29sIHBl
cmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJu
IHJ1blBoYXNlPE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U+KGdyYXBoKTsKKyAgICBhdXRv
IGF2YWlsYWJpbGl0eUF0SGVhZCA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IEF2YWlsYWJp
bGl0eU1hcCYgeyByZXR1cm4gYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkOyB9OworICAg
IGF1dG8gYXZhaWxhYmlsaXR5QXRUYWlsID0gWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gQXZh
aWxhYmlsaXR5TWFwJiB7IHJldHVybiBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdFRhaWw7IH07
CisgICAgcmV0dXJuIHJ1blBoYXNlPE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U8ZGVjbHR5
cGUoYXZhaWxhYmlsaXR5QXRIZWFkKSwgZGVjbHR5cGUoYXZhaWxhYmlsaXR5QXRUYWlsKT4+KGdy
YXBoLCBhdmFpbGFiaWxpdHlBdEhlYWQsIGF2YWlsYWJpbGl0eUF0VGFpbCk7Cit9CisKK3ZvaWQg
dmFsaWRhdGVPU1JFeGl0QXZhaWxhYmlsaXR5KEdyYXBoJiBncmFwaCkKK3sKKyAgICBCbG9ja01h
cDxBdmFpbGFiaWxpdHlNYXA+IGF2YWlsYWJpbGl0eU1hcEF0SGVhZChncmFwaCk7CisgICAgQmxv
Y2tNYXA8QXZhaWxhYmlsaXR5TWFwPiBhdmFpbGFiaWxpdHlNYXBBdFRhaWwoZ3JhcGgpOworCisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGdyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKKyAgICAgICAgYXZhaWxhYmlsaXR5TWFwQXRIZWFkW2Jsb2NrXSA9IEF2YWlsYWJpbGl0eU1h
cChibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQpOworICAgICAgICBhdmFpbGFiaWxpdHlN
YXBBdFRhaWxbYmxvY2tdID0gQXZhaWxhYmlsaXR5TWFwKGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0
eUF0VGFpbCk7CisgICAgfQorCisgICAgYXV0byBhdmFpbGFiaWxpdHlBdEhlYWQgPSBbJl0gKEJh
c2ljQmxvY2sqIGJsb2NrKSAtPiBBdmFpbGFiaWxpdHlNYXAmIHsgcmV0dXJuIGF2YWlsYWJpbGl0
eU1hcEF0SGVhZFtibG9ja107IH07CisgICAgYXV0byBhdmFpbGFiaWxpdHlBdFRhaWwgPSBbJl0g
KEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBBdmFpbGFiaWxpdHlNYXAmIHsgcmV0dXJuIGF2YWlsYWJp
bGl0eU1hcEF0VGFpbFtibG9ja107IH07CisgICAgT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZSBwaGFzZShncmFwaCwgYXZhaWxhYmlsaXR5QXRIZWFkLCBhdmFpbGFiaWxpdHlBdFRhaWwpOwor
ICAgIHBoYXNlLnJ1bigpOwogfQogCiBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6Okxv
Y2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcihHcmFwaCYgZ3JhcGgpCkBAIC0yMDIsNiArMjMy
LDI1IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjplbmRCbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaykKIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVj
dXRlTm9kZShOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworCisgICAg
Ly8gSXQncyBzb21ld2hhdCBzdWJ0bGUgdGhhdCB3ZSBjYW5ub3QgdXNlIG5vZGUgZm9yIEdldFN0
YWNrLiBUaGUgcmVhc29uIGlzIHRoYXQgaWYgd2UgZGlkIHdlIHdvdWxkIG5lZWQgdG8gbWFrZSBh
bnkgcGhhc2UgdGhhdCBjb252ZXJ0cworICAgIC8vIG5vZGVzIHRvIEdldFN0YWNrIGF2YWlsYWJp
bGl0eSBhd2FyZS4gRm9yIGluc3RhbmNlIGEgcGxhY2Ugd2hlcmUgdGhpcyBjb3VsZCBjb21lIHVw
IGlzIGlmIHlvdSBoYWQgYSBncmFwaCBsaWtlIChhZnRlciBQdXRTdGFjayBzaW5raW5nKToKKyAg
ICAvLworICAgIC8vIEJCIzE6CisgICAgLy8gQDE6IE5ld09iamVjdCgpCisgICAgLy8gQDI6IE1v
dkhpbnQoQDEsIGlubGluZS1hcmcxKQorICAgIC8vIEAzOiBKdW1wKCMyLCAjMykKKyAgICAvLwor
ICAgIC8vIEJCIzI6CisgICAgLy8gQDQ6IFB1dFN0YWNrKEAxLCBpbmxpbmUtYXJnMSkKKyAgICAv
LyBANTogR2V0TXlBcmd1bWVudEJ5VmFsKGlubGluZS1hcmcxKQorICAgIC8vIEA2OiBKdW1wKCMz
KQorICAgIC8vCisgICAgLy8gQkIjMzoKKyAgICAvLyBANzogSW52YWxpZGF0aW9uUG9pbnQoKQor
ICAgIC8vCisgICAgLy8gSWYgY29uc3RhbnQgZm9sZGluZyBjb252ZXJ0cyBANSB0byBhIEdldFN0
YWNrIHRoZW4gYXQgQDcgaW5saW5lLWFyZzEgd29uJ3QgYmUgYXZhaWxhYmxlIHNpbmNlIGF0IHRo
ZSBlbmQgb2YgQkIjMSBvdXIgYXZhaWxhYmlsaXR5IGlzIChAMSwgRGVhZEZsdXNoKSBhbmQgKEA1
LCBGbHVzaGVkQXQoaW5saW5lLWFyZzEpKS4gV2hlbiB0aGF0IGdldHMgbWVyZ2VkIGF0IEJCIzMg
dGhlbiB0aGUgYXZhaWxhYmlsaXR5IHdpbGwgYmUgKG51bGxwdHIsIENvbmZsaWN0aW5nRmx1c2gp
LgorICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBQdXRTdGFjazogewogICAgICAgICBTdGFj
a0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAgbV9h
dmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChkYXRhLT5vcGVyYW5kKS5zZXRGbHVzaChkYXRh
LT5mbHVzaGVkQXQoKSk7CkBAIC0yMTMsMTIgKzI2Miw2IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFi
aWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBjYXNlIEdldFN0YWNrOiB7Ci0gICAgICAgIFN0YWNrQWNjZXNzRGF0YSog
ZGF0YSA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpOwotICAgICAgICBtX2F2YWlsYWJpbGl0eS5t
X2xvY2Fscy5vcGVyYW5kKGRhdGEtPm9wZXJhbmQpID0gQXZhaWxhYmlsaXR5KG5vZGUsIGRhdGEt
PmZsdXNoZWRBdCgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBNb3ZIaW50
OiB7CiAgICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+dW5saW5r
ZWRPcGVyYW5kKCkpLnNldE5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJp
bGl0eUFuYWx5c2lzUGhhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZh
aWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oCmluZGV4IDY5ZThiNzU1MGM4ZDBjNzk1N2QzOTlkNzkw
YmRhODE2NGM3ZDRlYjguLjU0NmE0Y2M3ZGFjZjU1NDMyN2I5Njg0MGM0MmIzZmJjOGU4Njc0NjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZh
aWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oCkBAIC00MSwxMyArNDEsMTYgQEAgY2xhc3MgR3JhcGg7
CiAKIGJvb2wgcGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzKEdyYXBoJik7CiAKKy8vIFVu
bGlrZSB0aGUgcGhhc2UgYWJvdmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IG11dGF0ZSB0aGUgZ3Jh
cGgncyBCYXNpY0Jsb2NrIFNTQSBtZXRhZGF0YS4gQWxzbywgZG9lcyBub3RoaW5nIGlmICF2YWxp
ZGF0aW9uRW5hYmxlZCgpCit2b2lkIHZhbGlkYXRlT1NSRXhpdEF2YWlsYWJpbGl0eShHcmFwaCYp
OworCiAvLyBMb2NhbCBjYWxjdWxhdG9yIGZvciBmaWd1cmluZyBvdXQgdGhlIGF2YWlsYWJpbGl0
eSBhdCBhbnkgbm9kZSBpbiBhIGJhc2ljIGJsb2NrLiBSZXF1aXJlcwogLy8gaGF2aW5nIHJ1biB0
aGUgYXZhaWxhYmlsaXR5IGFuYWx5c2lzLgogY2xhc3MgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxj
dWxhdG9yIHsKIHB1YmxpYzoKICAgICBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3IoR3Jh
cGgmKTsKICAgICB+TG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yKCk7Ci0gICAgCisKICAg
ICB2b2lkIGJlZ2luQmxvY2soQmFzaWNCbG9jayopOwogICAgIHZvaWQgZW5kQmxvY2soQmFzaWNC
bG9jayopOyAvLyBVc2VmdWwgaWYgeW91IHdhbnQgdG8gZ2V0IGRhdGEgZm9yIHRoZSBlbmQgb2Yg
dGhlIGJsb2NrLiBZb3UgZG9uJ3QgbmVlZCB0byBjYWxsIHRoaXMgaWYgeW91IGRpZCBiZWdpbkJs
b2NrKCkgYW5kIHRoZW4gZXhlY3V0ZU5vZGUoKSBmb3IgZXZlcnkgbm9kZS4KICAgICB2b2lkIGV4
ZWN1dGVOb2RlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuaAppbmRleCAx
OTNkM2M5ZmVlY2Q1OTk4ZjM3ZjIwNjI0ODYzNTE0NWMyMzc0MWYwLi5mOTVmMzNhODE0MGFhODE3
NWQwOTU0Mjk3MDJmYjYwZTdhMjc4ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFz
ZS5oCkBAIC04OCwxMCArODgsMTAgQEAgYm9vbCBydW5BbmRMb2coUGhhc2VUeXBlJiBwaGFzZSkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQaGFzZVR5cGU+Ci1i
b29sIHJ1blBoYXNlKEdyYXBoJiBncmFwaCkKK3RlbXBsYXRlPHR5cGVuYW1lIFBoYXNlVHlwZSwg
dHlwZW5hbWUuLi4gQXJncz4KK2Jvb2wgcnVuUGhhc2UoR3JhcGgmIGdyYXBoLCBBcmdzLi4uIGFy
Z3MpCiB7Ci0gICAgUGhhc2VUeXBlIHBoYXNlKGdyYXBoKTsKKyAgICBQaGFzZVR5cGUgcGhhc2Uo
Z3JhcGgsIGFyZ3MuLi4pOwogICAgIHJldHVybiBydW5BbmRMb2cocGhhc2UpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDQ3OTRhNjBmMjBkYTQ4
YjhlYWFkZjYwNDBjYzk4MmFhYjVjYTgzY2UuLjhlYjQ2MzNjOGI5ZmU5NDdjNGIzZDU4YmZkNjIx
NjFhYTkyMDBkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
aWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNp
bmNsdWRlICJERkdEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgorI2luY2x1
ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC04Miw2ICs4
MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKQogICAgIHsKKyAg
ICAgICAgaWYgKG1fZ3JhcGgubV9pc1ZhbGlkYXRpbmcpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgYXV0byBpc1ZhbGlkYXRpbmcgPSBTZXRGb3JTY29wZShtX2dyYXBoLm1faXNWYWxp
ZGF0aW5nLCB0cnVlKTsKKwogICAgICAgICAvLyBOQi4gVGhpcyBjb2RlIGlzIG5vdCB3cml0dGVu
IGZvciBwZXJmb3JtYW5jZSwgc2luY2UgaXQgaXMgbm90IGludGVuZGVkIHRvIHJ1bgogICAgICAg
ICAvLyBpbiByZWxlYXNlIGJ1aWxkcy4KIApAQCAtODAxLDE0ICs4MDcsMTIgQEAgcHJpdmF0ZToK
IAogICAgICAgICBhdXRvJiBkb21pbmF0b3JzID0gbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3Jz
KCk7CiAKKyAgICAgICAgdmFsaWRhdGVPU1JFeGl0QXZhaWxhYmlsaXR5KG1fZ3JhcGgpOworCiAg
ICAgICAgIGZvciAodW5zaWduZWQgZW50cnlwb2ludEluZGV4IDogbV9ncmFwaC5tX2VudHJ5cG9p
bnRJbmRleFRvQ2F0Y2hCeXRlY29kZUluZGV4LmtleXMoKSkKICAgICAgICAgICAgIFZBTElEQVRF
KCgpLCBlbnRyeXBvaW50SW5kZXggPiAwKTsgLy8gQnkgY29udmVudGlvbiwgMCBpcyB0aGUgZW50
cnlwb2ludCBpbmRleCBmb3IgdGhlIG9wX2VudGVyIGVudHJ5cG9pbnQsIHdoaWNoIGNhbiBub3Qg
YmUgaW4gYSBjYXRjaC4KIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7
IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAg
ICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgVkFMSURBVEUoKGJsb2NrKSwgYmxvY2stPnBo
aXMuaXNFbXB0eSgpKTsKIAogICAgICAgICAgICAgYm9vbCBkaWRTZWVFeGl0T0sgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406485</attachid>
            <date>2020-08-12 17:44:33 -0700</date>
            <delta_ts>2020-08-12 19:42:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215434-20200812174433.patch</filename>
            <type>text/plain</type>
            <size>20234</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDE0MTc4ZTVmNGFjYWZkY2Y0YjFlOWUyNTJhOGY1ODRkNDNkNGM3Li5iZTc4ZDk2ZGNlMjE1N2Iy
ZDdiMDFmY2FmNjE3MTFhNDQxZjg4YTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorIDA7OTU7MGMyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3VsZG4n
dCBtYXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVjb3Zl
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQz
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3Mg
c29tZXdoYXQgc3VidGxlIHRoYXQgd2UgY2Fubm90IG1hcmsgdGhlIG5vZGUgaW4gQXZhaWxhYmls
aXR5CisgICAgICAgIGZvciBHZXRTdGFjay4gVGhlIHJlYXNvbiBpcyB0aGF0IGlmIHdlIGRpZCB3
ZSB3b3VsZCBuZWVkIHRvIG1ha2UKKyAgICAgICAgYW55IHBoYXNlIHRoYXQgY29udmVydHMgbm9k
ZXMgdG8gR2V0U3RhY2sgYXZhaWxhYmlsaXR5IGF3YXJlLiBGb3IKKyAgICAgICAgaW5zdGFuY2Us
IGEgcGxhY2Ugd2hlcmUgdGhpcyBjb3VsZCBjb21lIHVwIGlzIGluIGNvbnN0YW50IGZvbGRpbmcK
KyAgICAgICAgaWYgeW91IGhhZCBhIGdyYXBoIGxpa2UgKGFmdGVyIFB1dFN0YWNrIHNpbmtpbmcp
OgorCisgICAgICAgIEJCIzE6CisgICAgICAgIEAxOiBOZXdPYmplY3QoKQorICAgICAgICBAMjog
TW92SGludChAMSwgaW5saW5lLWFyZzEpCisgICAgICAgIEAzOiBKdW1wKCMyLCAjMykKKworICAg
ICAgICBCQiMyOgorICAgICAgICBANDogUHV0U3RhY2soQDEsIGlubGluZS1hcmcxKQorICAgICAg
ICBANTogR2V0TXlBcmd1bWVudEJ5VmFsKGlubGluZS1hcmcxKQorICAgICAgICBANjogSnVtcCgj
MykKKworICAgICAgICBCQiMzOgorICAgICAgICBANzogSW52YWxpZGF0aW9uUG9pbnQoKQorCisg
ICAgICAgIElmIGNvbnN0YW50IGZvbGRpbmcgY29udmVydHMgQDUgdG8gYSBHZXRTdGFjayB0aGVu
IGF0IEA3CisgICAgICAgIGlubGluZS1hcmcxIHdvbid0IGJlIGF2YWlsYWJsZSBzaW5jZSBhdCB0
aGUgZW5kIG9mIEJCIzEgb3VyCisgICAgICAgIGF2YWlsYWJpbGl0eSBpcyAoQDEsIERlYWRGbHVz
aCkgYW5kIChANSwKKyAgICAgICAgRmx1c2hlZEF0KGlubGluZS1hcmcxKSkuIFdoZW4gdGhhdCBn
ZXRzIG1lcmdlZCBhdCBCQiMzIHRoZW4gdGhlCisgICAgICAgIGF2YWlsYWJpbGl0eSB3aWxsIGJl
IChudWxscHRyLCBDb25mbGljdGluZ0ZsdXNoKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
bWFrZXMgdmFsaWRhdGlvbiBjaGVjayB0aGF0IGF2YWlsYWJpbGl0eSBpcyBzYW5lCisgICAgICAg
IGF0IGVhY2ggcG9udGVudGlhbCBleGl0IHNpdGUgaWYKKyAgICAgICAgT3B0aW9uczo6dmFsaWRh
dGVGVExPU1JFeGl0TGl2ZW5lc3MoKSBpcyBzZXQuIFNpbmNlIHRoaXMgaXMKKyAgICAgICAgYWN0
dWFsbHkgYSBQaGFzZSB3ZSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgaW5m
aW5pdGUKKyAgICAgICAgbG9vcCwgc28gdGhlcmUgaXMgbm93IGEgbV9pc1ZhbGlkYXRpbmcgZmll
bGQgb24gbV9ncmFwaC4gVGhlCisgICAgICAgIHZhbGlkYXRlT1NSRXhpdEF2YWlsYWJpbGl0eSBw
aGFzZSBpcyBhbHNvIGNhcmVmdWwgbm90IHRvIG1vZGlmeQorICAgICAgICB0aGUgR3JhcGgsIGlu
IG9yZGVyIHRvIGF2b2lkIG1hc2tpbmcgYnVncyB3aGVuIHZhbGlkYXRpbmcuCisKKyAgICAgICAg
SW4gYSBmb2xsb3d1cCBwYXRjaCBJIGludGVuZCB0byBsb29rIGludG8gd2h5IE1vdkhpbnQgZWxp
bWluYXRpb24KKyAgICAgICAgd2lsbCBjb252ZXJ0OgorCisgICAgICAgIEAyOiBNb3ZIaW50KEAw
LCBsb2MxLCBiYyMxLCBFeGl0SW52YWxpZCkKKyAgICAgICAgQDM6IEtpbGxTdGFjayhsb2MxLCBi
YyMyLCBFeGl0VmFsaWQpCisgICAgICAgIEA0OiBNb3ZIaW50KEAxIGxvYzEsIGJjIzIsIEV4aXRJ
bnZhbGlkKQorCisgICAgICAgIGludG8KKworICAgICAgICBAMjogWm9tYmllSGludChAMCwgbG9j
MSwgYmMjMSwgRXhpdEludmFsaWQpCisgICAgICAgIEAzOiBLaWxsU3RhY2sobG9jMSwgYmMjMiwg
RXhpdFZhbGlkKQorICAgICAgICBANDogTW92SGludChAMSBsb2MxLCBiYyMyLCBFeGl0SW52YWxp
ZCkKKworICAgICAgICB3aGVuIGxvYzEgaXMgbGl2ZSBpbiB0aGUgYnl0ZWNvZGUgYXQgYmMjMi4g
QnV0IGZvciBub3csIHRoZQorICAgICAgICB2YWxpZGF0aW9uIHJ1bGUgd29ya3MgYXJvdW5kIHRo
aXMgYnkgb25seSBjaGVja2luZyB3aGVuIG1heUV4aXQKKyAgICAgICAgYW5kIHRoZSBub2RlcyBl
eGl0T0sgYWdyZWUgZXhpdGluZyBpcyBwb3NzaWJsZS4KKworICAgICAgICAqIGRmZy9ERkdHcmFw
aC5oOgorICAgICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlOjpPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1PU1JBdmFp
bGFiaWxpdHlBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsaWRhdGVPU1JFeGl0QXZh
aWxhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1
bGF0b3I6OmV4ZWN1dGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXNQaGFzZS5oOgorICAgICAgICAqIGRmZy9ERkdQaGFzZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OnJ1blBoYXNlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorCiAyMDIwLTA4
LTA1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRo
ZSB2YXJpb3VzIEFsbG93TGlzdCBvcHRpb25zIHNob3VsZCBiZSBhYmxlIHRvIHRha2UgdGhlIGZ1
bmN0aW9uIG5hbWUgaW5saW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXgg
ODYzNjIyN2YzOTQ4MzM1ZGIzZDg0MGU4MWQzZmEwYzVjYmJhN2Y5Zi4uYjNhOWJmZjVjZDJhYWU3
OTIxNDdkZThmMmNiYTViNGQ2MTdhYWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaApAQCAtNjg2LDcgKzY4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBOYXR1cmFsQmxvY2tJdGVyYWJsZShHcmFwaCYgZ3JhcGgpCisgICAg
ICAgIE5hdHVyYWxCbG9ja0l0ZXJhYmxlKGNvbnN0IEdyYXBoJiBncmFwaCkKICAgICAgICAgICAg
IDogbV9ncmFwaCgmZ3JhcGgpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNjk5LDcgKzY5OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaXRlcmF0b3IoR3JhcGgmIGdyYXBoLCBCbG9ja0luZGV4IGluZGV4KQorICAg
ICAgICAgICAgaXRlcmF0b3IoY29uc3QgR3JhcGgmIGdyYXBoLCBCbG9ja0luZGV4IGluZGV4KQog
ICAgICAgICAgICAgICAgIDogbV9ncmFwaCgmZ3JhcGgpCiAgICAgICAgICAgICAgICAgLCBtX2lu
ZGV4KGZpbmROZXh0KGluZGV4KSkKICAgICAgICAgICAgIHsKQEAgLTczNCw3ICs3MzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBHcmFwaCogbV9ncmFwaDsKKyAgICAgICAgICAgIGNvbnN0
IEdyYXBoKiBtX2dyYXBoOwogICAgICAgICAgICAgQmxvY2tJbmRleCBtX2luZGV4OwogICAgICAg
ICB9OwogICAgICAgICAKQEAgLTc0OSwxMCArNzQ5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBHcmFwaCogbV9ncmFwaDsKKyAgICAgICAg
Y29uc3QgR3JhcGgqIG1fZ3JhcGg7CiAgICAgfTsKICAgICAKLSAgICBOYXR1cmFsQmxvY2tJdGVy
YWJsZSBibG9ja3NJbk5hdHVyYWxPcmRlcigpCisgICAgTmF0dXJhbEJsb2NrSXRlcmFibGUgYmxv
Y2tzSW5OYXR1cmFsT3JkZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIE5hdHVyYWxC
bG9ja0l0ZXJhYmxlKCp0aGlzKTsKICAgICB9CkBAIC0xMTcyLDYgKzExNzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzVmFsaWRhdGluZyB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8dWlu
dDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dN
YXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lz
UGhhc2UuY3BwCmluZGV4IGVkODc5ODU1NTZjMWQ1MzRhMGFjZDQzMGU2YTAyMTg1M2RjYmFiMjEu
LmU4MjI5MjA3MzBkN2YzOWVhZTBhMWY3YzQ4OGFkZGFmYjk2NzQxYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpc1BoYXNlLmNwcApAQCAtMjgsMTcgKzI4LDIxIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgi
CisjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkRnVuY3RvciwgdHlwZW5hbWUgVGFpbEZ1bmN0b3I+
CiBjbGFzcyBPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogcHVibGljOgotICAgIE9T
UkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UoR3JhcGgmIGdyYXBoKQorICAgIE9TUkF2YWlsYWJp
bGl0eUFuYWx5c2lzUGhhc2UoR3JhcGgmIGdyYXBoLCBIZWFkRnVuY3RvciYgYXZhaWxhYmlsaXR5
QXRIZWFkLCBUYWlsRnVuY3RvciYgYXZhaWxhYmlsaXR5QXRUYWlsKQogICAgICAgICA6IFBoYXNl
KGdyYXBoLCAiT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyIpCisgICAgICAgICwgYXZhaWxhYmls
aXR5QXRIZWFkKGF2YWlsYWJpbGl0eUF0SGVhZCkKKyAgICAgICAgLCBhdmFpbGFiaWxpdHlBdFRh
aWwoYXZhaWxhYmlsaXR5QXRUYWlsKQogICAgIHsKICAgICB9CiAgICAgCkBAIC01MCwyMSArNTQs
MjEgQEAgcHVibGljOgogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5j
bGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRUYWlsLmNsZWFy
KCk7CisgICAgICAgICAgICBhdmFpbGFiaWxpdHlBdEhlYWQoYmxvY2spLmNsZWFyKCk7CisgICAg
ICAgICAgICBhdmFpbGFiaWxpdHlBdFRhaWwoYmxvY2spLmNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAg
ICAgICByb290LT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5maWxsKEF2YWlsYWJp
bGl0eTo6dW5hdmFpbGFibGUoKSk7CisgICAgICAgIGF2YWlsYWJpbGl0eUF0SGVhZChyb290KS5t
X2xvY2Fscy5maWxsKEF2YWlsYWJpbGl0eTo6dW5hdmFpbGFibGUoKSk7CiAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9ncmFwaC5ibG9jaygwKS0+dmFs
dWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpCi0gICAgICAgICAgICBy
b290LT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5hcmd1bWVudChhcmd1bWVudCkg
PSBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlKCk7CisgICAgICAgICAgICBhdmFpbGFiaWxpdHlB
dEhlYWQocm9vdCkubV9sb2NhbHMuYXJndW1lbnQoYXJndW1lbnQpID0gQXZhaWxhYmlsaXR5KEZs
dXNoZWRBdChGbHVzaGVkSlNWYWx1ZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKGFyZ3VtZW50KSkpOwogCiAgICAgICAgIC8vIFRoaXMgY291bGQgYmUgbWFkZSBtb3Jl
IGVmZmljaWVudCBieSBwcm9jZXNzaW5nIGJsb2NrcyBpbiByZXZlcnNlIHBvc3RvcmRlci4KICAg
ICAgICAgCi0gICAgICAgIGF1dG8gZHVtcEF2YWlsYWJpbGl0eSA9IFtdIChCYXNpY0Jsb2NrKiBi
bG9jaykgewotICAgICAgICAgICAgZGF0YUxvZ0xuKGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0
SGVhZCk7Ci0gICAgICAgICAgICBkYXRhTG9nTG4oYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRU
YWlsKTsKKyAgICAgICAgYXV0byBkdW1wQXZhaWxhYmlsaXR5ID0gWyZdIChCYXNpY0Jsb2NrKiBi
bG9jaykgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJIZWFkOiAiLCBhdmFpbGFiaWxpdHlBdEhl
YWQoYmxvY2spKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiVGFpbDogIiwgYXZhaWxhYmlsaXR5
QXRUYWlsKGJsb2NrKSk7CiAgICAgICAgIH07CiAKICAgICAgICAgYXV0byBkdW1wQnl0ZWNvZGVM
aXZlbmVzc0F0SGVhZCA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2spIHsKQEAgLTgyLDI0ICs4Niwy
MSBAQCBwdWJsaWM6CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAw
OyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OwotICAgICAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiQmVmb3JlIGNoYW5n
aW5nIEJsb2NrICMiLCBibG9jay0+aW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBkdW1wQXZh
aWxhYmlsaXR5KGJsb2NrKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2Fs
Y3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKworICAgICAgICAgICAgICAgIGNhbGN1bGF0b3Iu
bV9hdmFpbGFiaWxpdHkgPSBhdmFpbGFiaWxpdHlBdEhlYWQoYmxvY2spOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNh
bGN1bGF0b3IuZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGlmIChjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5ID09IGJs
b2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0VGFpbCkKKyAgICAgICAgICAgICAgICBpZiAoY2FsY3Vs
YXRvci5tX2F2YWlsYWJpbGl0eSA9PSBhdmFpbGFiaWxpdHlBdFRhaWwoYmxvY2spKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdFRhaWwgPSBjYWxjdWxhdG9yLm1fYXZhaWxhYmls
aXR5OworICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUF0VGFpbChibG9jaykgPSBjYWxjdWxh
dG9yLm1fYXZhaWxhYmlsaXR5OwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogCiAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTEwOSwxMiArMTEwLDEyIEBAIHB1Ymxp
YzoKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VjY2Vzc29ySW5kZXggPSBibG9j
ay0+bnVtU3VjY2Vzc29ycygpOyBzdWNjZXNzb3JJbmRleC0tOykgewogICAgICAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29yKHN1Y2Nlc3Nvcklu
ZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yLT5zc2EtPmF2YWlsYWJpbGl0eUF0
SGVhZC5tZXJnZShjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5KTsKKyAgICAgICAgICAgICAgICAg
ICAgYXZhaWxhYmlsaXR5QXRIZWFkKHN1Y2Nlc3NvcikubWVyZ2UoY2FsY3VsYXRvci5tX2F2YWls
YWJpbGl0eSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBzdWNjZXNzb3JJbmRleCA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IHN1Y2Nlc3Nvcklu
ZGV4LS07KSB7CiAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJs
b2NrLT5zdWNjZXNzb3Ioc3VjY2Vzc29ySW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBzdWNj
ZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkLnBydW5lQnlMaXZlbmVzcygKKyAgICAgICAg
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5QXRIZWFkKHN1Y2Nlc3NvcikucHJ1bmVCeUxpdmVuZXNz
KAogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgc3VjY2Vzc29yLT5hdCgwKS0+b3Jp
Z2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZnRlciBwcnVuaW5nIEJsb2NrICMiLCBzdWNj
ZXNzb3ItPmluZGV4KTsKQEAgLTEyNywyMyArMTI4LDIyIEBAIHB1YmxpYzoKIAogICAgICAgICBp
ZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogCi0gICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2Nr
SW5kZXgpIHsKLSAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9jaykKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2Fs
Y3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICBjYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5ID0gYXZhaWxhYmlsaXR5QXRIZWFkKGJsb2NrKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRl
eCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+YXQobm9kZUluZGV4KS0+b3JpZ2luLmV4aXRPSykgewor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgbWF5RXhpdCBzdGF0dXMgb2YgYSBub2Rl
IGRvZXNuJ3Qgc2VlbSBsaWtlIGl0IHNob3VsZCBtZWFuIHdlIGRvbid0IG5lZWQgdG8gaGF2ZSBl
dmVyeXRoaW5nIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heUV4aXQobV9n
cmFwaCwgbm9kZSkgIT0gRG9lc05vdEV4aXQgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgYWxsb3dlZCB0byBleGl0IGhlcmUsIHRo
ZSBoZWFwIG11c3QgYmUgaW4gYSBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hl
cmUgZXhpdGluZyB3b3VsZG4ndCBjcmFzaC4gVGhlc2UgcGFydGljdWxhciBmaWVsZHMgYXJlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgY29ycmVjdG5lc3MgYmVjYXVz
ZSB3ZSB1c2UgdGhlbSBkdXJpbmcgT1NSIGV4aXQKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRvIGRvIG1lYW5pbmdmdWwgdGhpbmdzLiBJdCB3b3VsZCBiZSB3cm9uZyBmb3IgYW55IG9mIHRo
ZW0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIGRlYWQuCiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEF2YWlsYWJpbGl0eU1hcCBhdmFpbGFiaWxpdHlNYXAgPSBjYWxjdWxhdG9y
Lm1fYXZhaWxhYmlsaXR5OwotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFw
LnBydW5lQnlMaXZlbmVzcyhtX2dyYXBoLCBibG9jay0+YXQobm9kZUluZGV4KS0+b3JpZ2luLmZv
ckV4aXQpOworICAgICAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBleGl0T3JpZ2luID0g
bm9kZS0+b3JpZ2luLmZvckV4aXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxp
dHlNYXAmIGF2YWlsYWJpbGl0eU1hcCA9IGNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAucHJ1bmVCeUxpdmVuZXNzKG1fZ3Jh
cGgsIGV4aXRPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gaGVh
cFBhaXIgOiBhdmFpbGFiaWxpdHlNYXAubV9oZWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChoZWFwUGFpci5rZXkua2luZCgpKSB7CkBAIC0xNjMsNiArMTYzLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQgc2VlbXMgbGlrZSB3ZSBzaG91bGQgYmUg
YWJsZSB0byBkbyBhdCBsZWFzdCBzb21lIHZhbGlkYXRpb24gd2hlbiBPU1IgZW50ZXJpbmcuCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3BsYW4ubW9kZSgpICE9IEZUTEZv
ck9TUkVudHJ5TW9kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5TWFwLm1fbG9jYWxzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IGF2YWlsYWJpbGl0
eU1hcC5tX2xvY2Fscy5vcGVyYW5kRm9ySW5kZXgoaSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkgPSBhdmFpbGFiaWxpdHlNYXAubV9s
b2NhbHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxp
dHkuaXNEZWFkKCkgJiYgbV9ncmFwaC5pc0xpdmVJbkJ5dGVjb2RlKG9wZXJhbmQsIGV4aXRPcmln
aW4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG5vZGUsIHRvQ1N0cmluZygiTGl2ZSBieXRlY29kZSBsb2NhbCBub3QgYXZhaWxhYmxlOiBv
cGVyYW5kID0gIiwgb3BlcmFuZCwgIiwgYXZhaWxhYmlsaXR5TWFwID0gIiwgYXZhaWxhYmlsaXR5
TWFwLCAiLCBvcmlnaW4gPSAiLCBleGl0T3JpZ2luKS5kYXRhKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0b3IuZXhlY3V0ZU5vZGUoYmxv
Y2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTczLDExICsxODMsMzEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBIZWFkRnVuY3RvciYgYXZhaWxhYmlsaXR5QXRI
ZWFkOworICAgIFRhaWxGdW5jdG9yJiBhdmFpbGFiaWxpdHlBdFRhaWw7CiB9OwogCiBib29sIHBl
cmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJu
IHJ1blBoYXNlPE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U+KGdyYXBoKTsKKyAgICBhdXRv
IGF2YWlsYWJpbGl0eUF0SGVhZCA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IEF2YWlsYWJp
bGl0eU1hcCYgeyByZXR1cm4gYmxvY2stPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkOyB9OworICAg
IGF1dG8gYXZhaWxhYmlsaXR5QXRUYWlsID0gWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gQXZh
aWxhYmlsaXR5TWFwJiB7IHJldHVybiBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdFRhaWw7IH07
CisgICAgcmV0dXJuIHJ1blBoYXNlPE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U8ZGVjbHR5
cGUoYXZhaWxhYmlsaXR5QXRIZWFkKSwgZGVjbHR5cGUoYXZhaWxhYmlsaXR5QXRUYWlsKT4+KGdy
YXBoLCBhdmFpbGFiaWxpdHlBdEhlYWQsIGF2YWlsYWJpbGl0eUF0VGFpbCk7Cit9CisKK3ZvaWQg
dmFsaWRhdGVPU1JFeGl0QXZhaWxhYmlsaXR5KEdyYXBoJiBncmFwaCkKK3sKKyAgICBCbG9ja01h
cDxBdmFpbGFiaWxpdHlNYXA+IGF2YWlsYWJpbGl0eU1hcEF0SGVhZChncmFwaCk7CisgICAgQmxv
Y2tNYXA8QXZhaWxhYmlsaXR5TWFwPiBhdmFpbGFiaWxpdHlNYXBBdFRhaWwoZ3JhcGgpOworCisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGdyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKKyAgICAgICAgYXZhaWxhYmlsaXR5TWFwQXRIZWFkW2Jsb2NrXSA9IEF2YWlsYWJpbGl0eU1h
cChibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQpOworICAgICAgICBhdmFpbGFiaWxpdHlN
YXBBdFRhaWxbYmxvY2tdID0gQXZhaWxhYmlsaXR5TWFwKGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0
eUF0VGFpbCk7CisgICAgfQorCisgICAgYXV0byBhdmFpbGFiaWxpdHlBdEhlYWQgPSBbJl0gKEJh
c2ljQmxvY2sqIGJsb2NrKSAtPiBBdmFpbGFiaWxpdHlNYXAmIHsgcmV0dXJuIGF2YWlsYWJpbGl0
eU1hcEF0SGVhZFtibG9ja107IH07CisgICAgYXV0byBhdmFpbGFiaWxpdHlBdFRhaWwgPSBbJl0g
KEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBBdmFpbGFiaWxpdHlNYXAmIHsgcmV0dXJuIGF2YWlsYWJp
bGl0eU1hcEF0VGFpbFtibG9ja107IH07CisgICAgT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZSBwaGFzZShncmFwaCwgYXZhaWxhYmlsaXR5QXRIZWFkLCBhdmFpbGFiaWxpdHlBdFRhaWwpOwor
ICAgIHBoYXNlLnJ1bigpOwogfQogCiBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6Okxv
Y2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcihHcmFwaCYgZ3JhcGgpCkBAIC0yMDIsNiArMjMy
LDI1IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjplbmRCbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaykKIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVj
dXRlTm9kZShOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworCisgICAg
Ly8gSXQncyBzb21ld2hhdCBzdWJ0bGUgdGhhdCB3ZSBjYW5ub3QgdXNlIG5vZGUgZm9yIEdldFN0
YWNrLiBUaGUgcmVhc29uIGlzIHRoYXQgaWYgd2UgZGlkIHdlIHdvdWxkIG5lZWQgdG8gbWFrZSBh
bnkgcGhhc2UgdGhhdCBjb252ZXJ0cworICAgIC8vIG5vZGVzIHRvIEdldFN0YWNrIGF2YWlsYWJp
bGl0eSBhd2FyZS4gRm9yIGluc3RhbmNlIGEgcGxhY2Ugd2hlcmUgdGhpcyBjb3VsZCBjb21lIHVw
IGlzIGlmIHlvdSBoYWQgYSBncmFwaCBsaWtlIChhZnRlciBQdXRTdGFjayBzaW5raW5nKToKKwor
ICAgIC8vIEJCIzE6CisgICAgLy8gQDE6IE5ld09iamVjdCgpCisgICAgLy8gQDI6IE1vdkhpbnQo
QDEsIGlubGluZS1hcmcxKQorICAgIC8vIEAzOiBKdW1wKCMyLCAjMykKKworICAgIC8vIEJCIzI6
CisgICAgLy8gQDQ6IFB1dFN0YWNrKEAxLCBpbmxpbmUtYXJnMSkKKyAgICAvLyBANTogR2V0TXlB
cmd1bWVudEJ5VmFsKGlubGluZS1hcmcxKQorICAgIC8vIEA2OiBKdW1wKCMzKQorCisgICAgLy8g
QkIjMzoKKyAgICAvLyBANzogSW52YWxpZGF0aW9uUG9pbnQoKQorCisgICAgLy8gSWYgY29uc3Rh
bnQgZm9sZGluZyBjb252ZXJ0cyBANSB0byBhIEdldFN0YWNrIHRoZW4gYXQgQDcgaW5saW5lLWFy
ZzEgd29uJ3QgYmUgYXZhaWxhYmxlIHNpbmNlIGF0IHRoZSBlbmQgb2YgQkIjMSBvdXIgYXZhaWxh
YmlsaXR5IGlzIChAMSwgRGVhZEZsdXNoKSBhbmQgKEA1LCBGbHVzaGVkQXQoaW5saW5lLWFyZzEp
KS4gV2hlbiB0aGF0IGdldHMgbWVyZ2VkIGF0IEJCIzMgdGhlbiB0aGUgYXZhaWxhYmlsaXR5IHdp
bGwgYmUgKG51bGxwdHIsIENvbmZsaWN0aW5nRmx1c2gpLgorICAgIGNhc2UgR2V0U3RhY2s6CiAg
ICAgY2FzZSBQdXRTdGFjazogewogICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2Rl
LT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3Bl
cmFuZChkYXRhLT5vcGVyYW5kKS5zZXRGbHVzaChkYXRhLT5mbHVzaGVkQXQoKSk7CkBAIC0yMTMs
MTIgKzI2Miw2IEBAIHZvaWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRl
Tm9kZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEdldFN0
YWNrOiB7Ci0gICAgICAgIFN0YWNrQWNjZXNzRGF0YSogZGF0YSA9IG5vZGUtPnN0YWNrQWNjZXNz
RGF0YSgpOwotICAgICAgICBtX2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKGRhdGEtPm9w
ZXJhbmQpID0gQXZhaWxhYmlsaXR5KG5vZGUsIGRhdGEtPmZsdXNoZWRBdCgpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBNb3ZIaW50OiB7CiAgICAgICAgIG1fYXZhaWxhYmls
aXR5Lm1fbG9jYWxzLm9wZXJhbmQobm9kZS0+dW5saW5rZWRPcGVyYW5kKCkpLnNldE5vZGUobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5o
CmluZGV4IDY5ZThiNzU1MGM4ZDBjNzk1N2QzOTlkNzkwYmRhODE2NGM3ZDRlYjguLjU0NmE0Y2M3
ZGFjZjU1NDMyN2I5Njg0MGM0MmIzZmJjOGU4Njc0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5o
CkBAIC00MSwxMyArNDEsMTYgQEAgY2xhc3MgR3JhcGg7CiAKIGJvb2wgcGVyZm9ybU9TUkF2YWls
YWJpbGl0eUFuYWx5c2lzKEdyYXBoJik7CiAKKy8vIFVubGlrZSB0aGUgcGhhc2UgYWJvdmUgdGhp
cyBmdW5jdGlvbiBkb2Vzbid0IG11dGF0ZSB0aGUgZ3JhcGgncyBCYXNpY0Jsb2NrIFNTQSBtZXRh
ZGF0YS4gQWxzbywgZG9lcyBub3RoaW5nIGlmICF2YWxpZGF0aW9uRW5hYmxlZCgpCit2b2lkIHZh
bGlkYXRlT1NSRXhpdEF2YWlsYWJpbGl0eShHcmFwaCYpOworCiAvLyBMb2NhbCBjYWxjdWxhdG9y
IGZvciBmaWd1cmluZyBvdXQgdGhlIGF2YWlsYWJpbGl0eSBhdCBhbnkgbm9kZSBpbiBhIGJhc2lj
IGJsb2NrLiBSZXF1aXJlcwogLy8gaGF2aW5nIHJ1biB0aGUgYXZhaWxhYmlsaXR5IGFuYWx5c2lz
LgogY2xhc3MgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yIHsKIHB1YmxpYzoKICAgICBM
b2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3IoR3JhcGgmKTsKICAgICB+TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yKCk7Ci0gICAgCisKICAgICB2b2lkIGJlZ2luQmxvY2soQmFzaWNC
bG9jayopOwogICAgIHZvaWQgZW5kQmxvY2soQmFzaWNCbG9jayopOyAvLyBVc2VmdWwgaWYgeW91
IHdhbnQgdG8gZ2V0IGRhdGEgZm9yIHRoZSBlbmQgb2YgdGhlIGJsb2NrLiBZb3UgZG9uJ3QgbmVl
ZCB0byBjYWxsIHRoaXMgaWYgeW91IGRpZCBiZWdpbkJsb2NrKCkgYW5kIHRoZW4gZXhlY3V0ZU5v
ZGUoKSBmb3IgZXZlcnkgbm9kZS4KICAgICB2b2lkIGV4ZWN1dGVOb2RlKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuaAppbmRleCAxOTNkM2M5ZmVlY2Q1OTk4ZjM3ZjIwNjI0
ODYzNTE0NWMyMzc0MWYwLi5mOTVmMzNhODE0MGFhODE3NWQwOTU0Mjk3MDJmYjYwZTdhMjc4ZmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYXNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5oCkBAIC04OCwxMCArODgsMTAgQEAg
Ym9vbCBydW5BbmRMb2coUGhhc2VUeXBlJiBwaGFzZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBQaGFzZVR5cGU+Ci1ib29sIHJ1blBoYXNlKEdyYXBoJiBncmFw
aCkKK3RlbXBsYXRlPHR5cGVuYW1lIFBoYXNlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KK2Jvb2wg
cnVuUGhhc2UoR3JhcGgmIGdyYXBoLCBBcmdzLi4uIGFyZ3MpCiB7Ci0gICAgUGhhc2VUeXBlIHBo
YXNlKGdyYXBoKTsKKyAgICBQaGFzZVR5cGUgcGhhc2UoZ3JhcGgsIGFyZ3MuLi4pOwogICAgIHJl
dHVybiBydW5BbmRMb2cocGhhc2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCmluZGV4IDQ3OTRhNjBmMjBkYTQ4YjhlYWFkZjYwNDBjYzk4MmFhYjVjYTgz
Y2UuLjUxNGZmZTY4YzVmNGRmZTE5MjhlMGIzNGY4MGZlMjljMjVjZDhjMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdEb21pbmF0b3JzLmgi
CiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgorI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJpbGl0eUFu
YWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC04Miw2ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgIHZvaWQgdmFsaWRhdGUoKQogICAgIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9pc1Zh
bGlkYXRpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBpc1ZhbGlkYXRp
bmcgPSBTZXRGb3JTY29wZShtX2dyYXBoLm1faXNWYWxpZGF0aW5nLCB0cnVlKTsKKwogICAgICAg
ICAvLyBOQi4gVGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBwZXJmb3JtYW5jZSwgc2luY2Ug
aXQgaXMgbm90IGludGVuZGVkIHRvIHJ1bgogICAgICAgICAvLyBpbiByZWxlYXNlIGJ1aWxkcy4K
IApAQCAtODAxLDE0ICs4MDcsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICBhdXRvJiBkb21pbmF0
b3JzID0gbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzKCkpCisgICAgICAgICAgICB2YWxpZGF0ZU9T
UkV4aXRBdmFpbGFiaWxpdHkobV9ncmFwaCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBlbnRy
eXBvaW50SW5kZXggOiBtX2dyYXBoLm1fZW50cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlSW5k
ZXgua2V5cygpKQogICAgICAgICAgICAgVkFMSURBVEUoKCksIGVudHJ5cG9pbnRJbmRleCA+IDAp
OyAvLyBCeSBjb252ZW50aW9uLCAwIGlzIHRoZSBlbnRyeXBvaW50IGluZGV4IGZvciB0aGUgb3Bf
ZW50ZXIgZW50cnlwb2ludCwgd2hpY2ggY2FuIG5vdCBiZSBpbiBhIGNhdGNoLgogCi0gICAgICAg
IGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVt
QmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAorICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAg
ICAgICBWQUxJREFURSgoYmxvY2spLCBibG9jay0+cGhpcy5pc0VtcHR5KCkpOwogCiAgICAgICAg
ICAgICBib29sIGRpZFNlZUV4aXRPSyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzZjk5MWUzMDM4N2Y0ZTYwNjk0ODE3NzE0
OTBiYmVkYTM0OGVhNTcwLi42MWQwZmEwMjk1Zjg2NWNmZjdmNGYzMDdjYjJhMjQ0ZjIyNWU4OTVi
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgorCisgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3VsZG4ndCBt
YXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVjb3ZlcnkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNz
L2Zvci1vZi1wb3N0LXNpbmtpbmctb3NyLWF2YWlsYWJpbGl0eS5qczogQWRkZWQuCisgICAgICAg
IChmb28pOgorCiAyMDIwLTA4LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc2tpcCBwcml2YXRlIGZpZWxkIHRlc3QKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1wb3N0LXNpbmtpbmctb3NyLWF2YWlsYWJpbGl0eS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1wb3N0LXNpbmtpbmctb3NyLWF2YWlsYWJpbGl0eS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNDQ1MTE5Mzg3ZjQ5ZWRjZjgwY2NkMjE0Y2JkMDdiMDYzNjZjNDA2Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLXBvc3Qtc2lua2luZy1vc3It
YXZhaWxhYmlsaXR5LmpzCkBAIC0wLDAgKzEsNyBAQAorZnVuY3Rpb24gZm9vKCkgeworICBBcnJh
eS5vZih7fSk7Cit9CisKK2ZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSB7CisgIGZvbygpOworfQo=
</data>
<flag name="review"
          id="421879"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>