<?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>112602</bug_id>
          
          <creation_ts>2013-03-18 11:33:21 -0700</creation_ts>
          <short_desc>[CSS Shaders] Implement a StyleCustomFilterProgram cache</short_desc>
          <delta_ts>2013-03-21 15:20:14 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112844</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mvujovic</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rego+ews</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>857351</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-18 11:33:21 -0700</bug_when>
    <thetext>This is the current state:
- Each time a new custom filter is computed, StyleResolver will create a new StyleCustomFilterProgram. It will later on reference the CachedShaders required to load the shaders.
- CustomFilterOperation references the StyleCustomFilterProgram.
- The RenderLayerFilterInfo will attach itself as a client of the Cached Shaders. That happens through the instance of the StyleCustomFilterProgram.
- Next time the filter is changed, the StyleResolver will create a new StyleCustomFilterProgram.
- The RenderLayerFilterInfo will not attach again as the CustomFilterOperation is equal, as it only compares the cached shaders to be equal. However, the old StyleCustomFilterProgram will be dereferenced, meaning that the only client is now gone.
- RenderLayer will try to draw, but the shaders are sometimes unloaded from memory, meaning that it will just try to draw empty shaders.

This patch will add a HashMap for the StyleCustomFilterPrograms using the KURL of the vertex/fragment shaders as a key. This way we avoid recreating the StyleCustomFilterPrograms all the times. The destructor of the StyleCustomFilterProgram will be responsible to remote itself from the owning HashMap, meaning that we only store StyleCustomFilterPrograms as long as they are used by the elements. The cache will be owned by the StyleResolver.

Also, by having unique StyleCustomFilterPrograms, we can compare StyleCustomFilterPrograms by pointer instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859774</commentid>
    <comment_count>1</comment_count>
      <attachid>194130</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-20 15:09:17 -0700</bug_when>
    <thetext>Created attachment 194130
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859786</commentid>
    <comment_count>2</comment_count>
      <attachid>194130</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-20 15:16:12 -0700</bug_when>
    <thetext>Comment on attachment 194130
Patch V1

Attachment 194130 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17202544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859796</commentid>
    <comment_count>3</comment_count>
      <attachid>194130</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-20 15:25:53 -0700</bug_when>
    <thetext>Comment on attachment 194130
Patch V1

Attachment 194130 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17202550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859800</commentid>
    <comment_count>4</comment_count>
      <attachid>194135</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-20 15:33:23 -0700</bug_when>
    <thetext>Created attachment 194135
Patch V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859865</commentid>
    <comment_count>5</comment_count>
      <attachid>194135</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-20 16:58:10 -0700</bug_when>
    <thetext>Comment on attachment 194135
Patch V2

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

&gt; Source/WebCore/ChangeLog:27
&gt; +        using the pointer value and not the values. However, that will always invalidate the &quot;fitler&quot; property because

typo fitler

&gt; Source/WebCore/ChangeLog:49
&gt; +        (WebCore):

Remove (there are a few of these)

&gt; Source/WebCore/ChangeLog:52
&gt; +        if no program is found. loadPendingShaders is responsible with adding the program in the cache if it is actually going to be used.

s/with/for/

&gt; Source/WebCore/css/StyleResolver.cpp:3941
&gt; +    if (value-&gt;isWebKitCSSShaderValue())
&gt; +        return static_cast&lt;WebKitCSSShaderValue*&gt;(value);

We should probably add a toWebKitCSSShaderValue() method, the way other classes have done.

&gt; Source/WebCore/css/StyleResolver.cpp:3996
&gt; +                    WebKitCSSShaderValue* shaderValue = static_cast&lt;StylePendingShader*&gt;(program-&gt;vertexShader())-&gt;cssShaderValue();

And here for toStylePendingShader, although that could be in a separate patch (where we fix all occurrences)

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:81
&gt; +    // CustomFilterPrograms are unique combinations of shaders and can be 
&gt; +    // compared using just the pointer value instead.
&gt; +    bool operator==(const CustomFilterProgram&amp;) const;
&gt; +    bool operator!=(const CustomFilterProgram&amp;) const;

I suggest mentioning here that you&apos;re trying to catch people comparing directly (the way toWhatever function comments mention catching people doing unnecessary casting).

&gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.cpp:41
&gt; +namespace WebCore {
&gt; +
&gt; +
&gt; +StyleCustomFilterProgram::~StyleCustomFilterProgram()

Nit: extra space

&gt; Source/WebCore/rendering/style/StyleCustomFilterProgramCache.cpp:76
&gt; +    ASSERT(m_cache.find(key) != m_cache.end());

Is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859870</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-20 17:07:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 194135 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194135&amp;action=review
&gt; 
Thanks, that was quick!

&gt; &gt; Source/WebCore/ChangeLog:27
&gt; &gt; +        using the pointer value and not the values. However, that will always invalidate the &quot;fitler&quot; property because
&gt; 
&gt; typo fitler
I always do that. Thanks. :)

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:49
&gt; &gt; +        (WebCore):
&gt; 
&gt; Remove (there are a few of these)
&gt; 
That&apos;s generated automatically by the script. Should I always remove it? Should I log a bug for the script?

&gt; &gt; Source/WebCore/ChangeLog:52
&gt; &gt; +        if no program is found. loadPendingShaders is responsible with adding the program in the cache if it is actually going to be used.
&gt; 
&gt; s/with/for/
&gt; 
Ok.

&gt; &gt; Source/WebCore/css/StyleResolver.cpp:3941
&gt; &gt; +    if (value-&gt;isWebKitCSSShaderValue())
&gt; &gt; +        return static_cast&lt;WebKitCSSShaderValue*&gt;(value);
&gt; 
&gt; We should probably add a toWebKitCSSShaderValue() method, the way other classes have done.
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:3996
&gt; &gt; +                    WebKitCSSShaderValue* shaderValue = static_cast&lt;StylePendingShader*&gt;(program-&gt;vertexShader())-&gt;cssShaderValue();
&gt; 
&gt; And here for toStylePendingShader, although that could be in a separate patch (where we fix all occurrences)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:81
&gt; &gt; +    // CustomFilterPrograms are unique combinations of shaders and can be 
&gt; &gt; +    // compared using just the pointer value instead.
&gt; &gt; +    bool operator==(const CustomFilterProgram&amp;) const;
&gt; &gt; +    bool operator!=(const CustomFilterProgram&amp;) const;
&gt; 
&gt; I suggest mentioning here that you&apos;re trying to catch people comparing directly (the way toWhatever function comments mention catching people doing unnecessary casting).
&gt; 
Ok.

&gt; &gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.cpp:41
&gt; &gt; +namespace WebCore {
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +StyleCustomFilterProgram::~StyleCustomFilterProgram()
&gt; 
&gt; Nit: extra space
&gt; 
&gt; &gt; Source/WebCore/rendering/style/StyleCustomFilterProgramCache.cpp:76
&gt; &gt; +    ASSERT(m_cache.find(key) != m_cache.end());
&gt; 
&gt; Is this necessary?
Not really. I was using it for debugging and figured it might be good to have. It should assert that the hash of the CustomFitlerProgramInfo works correctly. I will remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859871</commentid>
    <comment_count>7</comment_count>
      <attachid>194135</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-20 17:07:59 -0700</bug_when>
    <thetext>Comment on attachment 194135
Patch V2

cq- as I need to include the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860744</commentid>
    <comment_count>8</comment_count>
      <attachid>194351</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-03-21 14:53:34 -0700</bug_when>
    <thetext>Created attachment 194351
Patch for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860785</commentid>
    <comment_count>9</comment_count>
      <attachid>194351</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 15:20:09 -0700</bug_when>
    <thetext>Comment on attachment 194351
Patch for commit

Clearing flags on attachment: 194351

Committed r146529: &lt;http://trac.webkit.org/changeset/146529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860787</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 15:20:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194130</attachid>
            <date>2013-03-20 15:09:17 -0700</date>
            <delta_ts>2013-03-20 15:33:23 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug112602_2.patch</filename>
            <type>text/plain</type>
            <size>48546</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGVhOTJjLi5kZjE0ZDQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDMt
MjAgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IGEgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGNhY2hlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI2MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5l
dyB0ZXN0IHRvIGNoZWNrIGZvciB0aGUgY2FzZSB3aGVuIHRoZSBzdHlsZSBpcyByZWNhbGN1bGF0
ZWQgYnV0IHRoZQorICAgICAgICBmaWx0ZXIgcHJvcGVydHkgaXMgbm90IGNoYW5nZWQuIEFsbCB0
aGUgb3RoZXIgY2FzZXMgZm9yIHRoZSBuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUK
KyAgICAgICAgY2xhc3Mgc2hvdWxkIGJlIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1yZWxvYWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXIt
cmVsb2FkLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHBvcnRzIHNwZWNpZmljIHRleHQgdHJh
Y2sgbWVudQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0
b20tZmlsdGVyLXJlbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJlbG9hZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3Vz
dG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTc5ZDEzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDc1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gCisgICAgVGhpcyB0ZXN0cyB2ZXJpZmllcyB0aGF0IHdl
IGRvbid0IGFzc2VydCB3aGVuIHRoZSBzdHlsZSBpcyByZWNhbGN1bGF0ZWQgYnV0IHRoZSBmaWx0
ZXIgcHJvcGVydHkgZG9lc24ndCBjaGFuZ2UuCistLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0N1c3RvbUZpbHRlckVu
YWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIEZvcmNlIGEgbGF5b3V0LgorICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCIuYm94Iik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGJveGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGJveGVzW2ldLmNsYXNzTGlzdC5h
ZGQoInRyaWdnZXItc3R5bGUtcmVjYWxjIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFN3aXRjaCB0aGUgcGFyZW50IHRvIGNvbXBvc2l0ZWQgbW9kZSwgc28gdGhhdCB3ZSBjYW4gdHJp
Z2dlciAKKyAgICAgICAgICAgIC8vIGEgcmVidWlsZCBvZiB0aGUgY29tcG9zaXRpbmcgbGF5ZXIg
dHJlZS4KKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2Via2l0VHJhbnNmb3JtID0g
InRyYW5zbGF0ZVooMHB4KSIKKworICAgICAgICAgICAgLy8gRm9yY2UgYSBsYXlvdXQuCisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsKKworICAgICAgICAgICAgLy8gSWYg
d2UgZ2V0IHRoaXMgZmFyIHdpdGggbm8gYXNzZXJ0LCB0aGUgdGVzdCBwYXNzZWQuCisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgd2luZG93LnRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxl
PgorICAgICAgICAuYm94IHsKKyAgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgICAg
IHdpZHRoOiA1MHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
ICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC52ZXJ0ZXhfc2hhZGVyCisgICAgICAgIHsKKyAgICAgICAgICAgIC13ZWJraXQtZmls
dGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cycpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC5mcmFnbWVudF9zaGFkZXIKKyAgICAgICAgeworICAgICAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoJy4uL3Jlc291cmNlcy9jb2xvci1v
ZmZzZXQuZnMnKSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICAgICAgfQorCisgICAgICAgIC5i
b3RoX3NoYWRlcnMKKyAgICAgICAgeworICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3Rv
bSh1cmwoJy4uL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzJykgbWl4KHVybCgnLi4vcmVzb3Vy
Y2VzL2NvbG9yLW9mZnNldC5mcycpIG5vcm1hbCBzb3VyY2UtYXRvcCkpOworICAgICAgICB9CisK
KyAgICAgICAgLnRyaWdnZXItc3R5bGUtcmVjYWxjIHsKKyAgICAgICAgICAgIC8qIE5vIGNoYW5n
ZSwgd2UganVzdCBuZWVkIGEgbmV3IHN0eWxlIHJlY2FsY3VsYXRpb24uICovCisgICAgICAgIH0K
KyAgICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgPCEt
LSAKKyAgICAgICAgWW91IHNob3VsZCBzZWUgdGhyZWUgZ3JlZW4gYm94ZXMuIExhc3QgdHdvIGJv
eGVzIGhhdmUgYSBkaWZmZXJlbnQgc2hhZGUgb2YgZ3JlZW4uIExhc3QgYm94IGlzIHNsaWdodGx5
IGJpZ2dlciBvbiB0aGUgbGVmdCBzaWRlLgorICAgICAgICBUaGUgdGVzdCBwYXNzZXMgaWYgdGhl
cmUgaXMgbm8gY3Jhc2ggb3IgYXNzZXJ0LgorICAgIC0tPgorCisgICAgPGRpdiBjbGFzcz0iYm94
IHZlcnRleF9zaGFkZXIiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCBib3RoX3NoYWRlcnMi
PjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCBmcmFnbWVudF9zaGFkZXIiPjwvZGl2PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRkNGY5OS4uNmRhY2ZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wMy0yMCAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFj
aGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQgYSBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0gY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIHN0eWxlIGlzIHJlY2FsY3VsYXRlZCwgdGhlIG5l
dyBjb21wdXRlZCBSZW5kZXJTdHlsZSBpcyBzYXZlZCBhcyB0aGUgbV9zdHlsZSBvZiB0aGUKKyAg
ICAgICAgUmVuZGVyT2JqZWN0LCBldmVuIGlmIHRoZSBzdHlsZSB3YXMgbm90IGRpZmZlcmVudC4K
KworICAgICAgICBJbiB0aGUgY2FzZSBvZiBDdXN0b20gRmlsdGVycywgYSBuZXcgU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtIHdhcyBjcmVhdGVkIGF0IGFsbCB0aW1lcywgYnV0IHRoZQorICAgICAg
ICBhY3R1YWwgZXF1YWxpdHkgY2hlY2sgd2FzIGRvbmUgYnkgY29tcGFyaW5nIHRoZSBwYWlyIG9m
IGNhY2hlZCBzaGFkZXJzIGZyb20gaW5zaWRlIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
CisKKyAgICAgICAgQmVjYXVzZSBvZiB0aGF0IHRoZSBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2Vk
IHdhcyBub3QgY2FsbGVkIHdoZW4gdGhlIG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gd2Fz
IGNyZWF0ZWQsIHNvIGl0CisgICAgICAgIHdpbGwgZW5kIHVwIHN0aWxsIGtub3dpbmcgb25seSBh
Ym91dCB0aGUgcHJldmlvdXMgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLgorCisgICAgICAgIFRo
ZSBSZW5kZXJMYXllciBzZXRzIGl0c2VsZiBhcyBhIGNsaWVudCBvZiB0aGUgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLCBzbyB0aGF0IGl0IGNhbiByZXBhaW50IGl0c2VsZgorICAgICAgICB3aGVu
IHRoZSBwcm9ncmFtIGlzIGxvYWRlZCwgYnV0IGJlY2F1c2UgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hh
bmdlZCBpcyBub3QgY2FsbGVkLCBpdCB3aWxsIG5vdCBhZGQgaXRzZWxmIGFzIGEgY2xpZW50IG9m
IHRoZSBuZXcKKyAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLgorCisgICAgICAgIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB3YWl0cyB1bnRpbCB0aGUgZmlyc3QgY2xpZW50IHRvIGxv
YWQgdGhlIHByb2dyYW1zLCBzbyBpbiB0aGlzIGNhc2UgaXQgd2lsbCBqdXN0IHJlbWFpbiB1bmxv
YWRlZC4KKworICAgICAgICBUaGVyZSB3YXMgbm8gY3Jhc2gsIGJ1dCBqdXN0IGFuIGFzc2VydCBp
biBkZWJ1ZyBtb2RlLiBBbHNvLCBhcyBhIHZpc2libGUgc2lkZS1lZmZlY3Qgc29tZSBmcmFtZXMg
d2VyZSByZW5kZXJlZCB1c2luZyBibGFuayBzaGFkZXJzLCAKKyAgICAgICAgcmVzdWx0aW5nIGlu
IGEgcGFzcy10aHJvdWdoIGZpbHRlci4KKworICAgICAgICBUaGUgZml4IHdvdWxkIGJlIHRvIGFj
dHVhbGx5IG1ha2UgdGhlIFJlbmRlclN0eWxlOjpkaWZmIGRldGVjdCB0aGUgY2hhbmdlIG9mIHRo
ZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0KKyAgICAgICAgdXNpbmcgdGhlIHBvaW50ZXIgdmFs
dWUgYW5kIG5vdCB0aGUgdmFsdWVzLiBIb3dldmVyLCB0aGF0IHdpbGwgYWx3YXlzIGludmFsaWRh
dGUgdGhlICJmaXRsZXIiIHByb3BlcnR5IGJlY2F1c2UKKyAgICAgICAgb2YgdGhlIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSB0aGF0IGFsd2F5cyBnZXRzIGNyZWF0ZWQgZHVyaW5nIHRoZSByZWNh
bGN1bGF0aW9uIHRpbWUuCisKKyAgICAgICAgSSd2ZSBhZGRlZCBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZSB0byBjYWNoZSBhbGwgdGhlIGluc3RhbmNlcyBvZiB0aGUgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtcyB0aGF0IGEKKyAgICAgICAgU3R5bGVSZXNvbHZlciBhbGxvY2F0ZXMuIFRo
aXMgd2F5LCBuZXh0IHRpbWUgaXQgd2lsbCB0cnkgdG8gcmV1c2UgcHJldmlvdXNseSBhbGxvY2F0
ZWQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtcy4gCisgICAgICAgIFRoZSBrZXkgb2YgdGhlIGNh
Y2hlIGlzIHRoZSBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywgdGhhdCBjb21iaW5lcyB0aGUgVVJM
cyB0byB0aGUgc2hhZGVycyBhbmQgYSBjb3VwbGUgb2Ygb3RoZXIgcHJvZ3JhbSBzZXR0aW5ncy4K
KworICAgICAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSBpcyBvd25lZCBieSB0aGUg
U3R5bGVSZXNvdmxlciBhbmQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtcyBhcmUgcmVzcG9uc2li
bGUgd2l0aAorICAgICAgICByZW1vdmluZyB0aGVtc2VsdmVzIGZyb20gdGhlIGNhY2hlIHdoZW4g
dGhlIGxhc3QgcmVmZXJlbmNlIGdvZXMgYXdheS4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtl
cyB0aGUgcHJldmlvdXMgInBsYXRmb3JtIGxldmVsIiBwcm9ncmFtIGNhY2hlIG9ic29sZXRlIGFu
ZCBJIHdpbGwgcmVtb3ZlIHRoYXQgaW4gYSBmdXR1cmUgcGF0Y2guCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4NDQKKworICAgICAgICBUZXN0OiBj
c3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLmh0bWwKKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1NoYWRlclZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9v
a3VwQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6IExvb2t1cCBhbnkgc2ltaWxhciBwcm9ncmFtcyBpbiB0
aGUgY2FjaGUuIEl0IHdpbGwgY3JlYXRlIGEgbmV3IHBlbmRpbmcgCisgICAgICAgIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSBpZiB0aGVyZSBpcyBubyBwcmUtY2FjaGVkIHZlcnNpb24gb2YgdGhl
IHByb2dyYW0uCisgICAgICAgIGlmIG5vIHByb2dyYW0gaXMgZm91bmQuIGxvYWRQZW5kaW5nU2hh
ZGVycyBpcyByZXNwb25zaWJsZSB3aXRoIGFkZGluZyB0aGUgcHJvZ3JhbSBpbiB0aGUgY2FjaGUg
aWYgaXQgaXMgYWN0dWFsbHkgZ29pbmcgdG8gYmUgdXNlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nU2hhZGVycyk6IEF0IHRoaXMgcG9pbnQgdGhlIHByb2dy
YW0gaXMgZmluYWwsIHNvIGl0J3Mgc2FmZSB0byBhZGQgaXQgdG8gdGhlIGNhY2hlLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0
aElubGluZVN5bnRheCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAg
KFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y29tcGxldGVVUkwpOiBG
YWN0b3JlZCBvdXQgdGhlIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIGNvbXBsZXRlIFVSTCBvZiB0
aGUgcmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dENTU1NoYWRlclZhbHVlOjpjYWNoZWRTaGFkZXIpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NT
aGFkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXRDU1NTaGFk
ZXJWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFk
ZXJWYWx1ZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW06On5TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0pOiBEZXN0cnVjdG9y
IHJlbW92ZXMgdGhlIHByb2dyYW0gZnJvbSB0aGUgY2FjaGUuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OnNldFZlcnRleFNoYWRl
cik6IEFkZGVkIGFuIGFzc2VydCB0byBjaGVjayB0aGF0IHRoZSBzaGFkZXIgaXMgbm90IGluIHRo
ZQorICAgICAgICBjYWNoZSB3aGlsZSB0aGUgbXV0YXRpb24gaGFwcGVucy4gT3RoZXJ3aXNlIHRo
ZSBjYWNoZSBtaWdodCBoYXZlIHRoZSB3cm9uZyBrZXkuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW06OnNldEZyYWdtZW50U2hhZGVyKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmlzTG9hZGVkKTogQWRkZWQgbW9y
ZSBhc3NlcnRzIHRvIGNhdGNoIGNhc2VzIHdoZW4gdGhlIHByb2dyYW0gaXMgdXNlZCB3aXRoIG5v
IGNsaWVudHMuCisgICAgICAgIChTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpoYXNQZW5kaW5nU2hhZGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmluQ2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRDYWNoZSk6IEZ1bmN0
aW9uIGNhbGxlZCB3aGVuIGEgcHJvZ3JhbSBpcyBhZGRlZCB0byAvIHJlbW92ZWQgZnJvbSB0aGUg
Y2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OnZlcnRl
eFNoYWRlclVSTCk6IEFkZGVkIG1ldGhvZHMgdG8gc3RvcmUgdGhlIEtVUkwgdGhhdCB3ZSB1c2Vk
IGFzIGtleXMgaW4gdGhlIGNhY2hlLgorICAgICAgICBUaGUgc2FtZSBLVVJMcyB3aWxsIGJlIHVz
ZWQgdG8gbG9va3VwIGFuZCByZW1vdmUgdGhlIGZpbHRlciBhdCB0aGUgZW5kLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRWZXJ0ZXhTaGFkZXJVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpmcmFnbWVudFNoYWRl
clVSTCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OnNldEZy
YWdtZW50U2hhZGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6
OnByb2dyYW1DYWNoZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6On5TdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZSk6IERlc3RydWN0b3IgcmVtb3ZlcyBpdHNlbGYgZnJvbSBhbGwgdGhlCisgICAg
ICAgIHJlZmVyZW5jZWQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtcy4gVGhpcyBpcyB0byBhdm9p
ZCBpc3N1ZXMgd2l0aCBkaWZmZXJlbnQgZGVzdHJ1Y3Rpb24gb3JkZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6Omxvb2t1cCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpyZW1vdmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSk6CisK
IDIwMTMtMDMtMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QXNzZXJ0aW9uIGluIExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpIGluIGVkaXRpbmcgdGVzdHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDRlZDVjNDAuLjdkNDBiZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY2OSw3ICs0NjY5LDEwIEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
U2hhZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
U2hhZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEYXNoYm9hcmRSZWdpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJs
ZUJveERhdGEuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5NjcyOWFmLi43OTJmNWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKQEAgLTEyODYsNiArMTI4Niw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuY3Bw
IFwKKyAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBcCisg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAgXAog
ICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwIFwKICAgICByZW5kZXJpbmcv
c3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwIFwKQEAgLTI1ODQsNiArMjU4Niw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmggXAogICAg
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oIFwKICAgICByZW5kZXJpbmcvc3R5
bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZp
bHRlckRhdGEuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDRlZjVkYTcuLjg4NWRlNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTI2NjAsNiArMjY2MCw5IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2VTZXQuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVD
YWNoZWRTaGFkZXIuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
U2hhZGVyLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbUNhY2hlLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
c3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGI4MjY1ZDkuLmI0MjEwNmQgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00Njk3
Niw2ICs0Njk3NiwxOCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0eWxlXFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxyZW5kZXJpbmdcc3R5bGVcU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmlu
Z1xzdHlsZVxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVc
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkMDVkYzU1Li4wODQwNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTcxLDYgKzE1NzEsOSBA
QAogCQk1MEQ0MDYxMjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0
MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggKi87
IH07CiAJCTUwRDg4Q0I1MTVCREZEQUEwMDE4MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ4
OENCMzE1QkRGREFBMDAxODA5RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwICovOyB9
OwogCQk1MEQ4OENCNjE1QkRGREFBMDAxODA5RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDg4Q0I0
MTVCREZEQUEwMDE4MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oICovOyB9OworCQk1
MEUxOENEODE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRTE4Q0Q1MTZG
OTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwICovOyB9OworCQk1
MEUxOENEOTE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBFMThD
RDYxNkY5Mjg1ODAwQzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCAq
LzsgfTsKKwkJNTBFMThDREExNkY5Mjg1ODAwQzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MEUxOENENzE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2Fj
aGUuaCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIw
ODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OwogCQk1MTBE
NEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJEMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICovOyB9OwpAQCAtOTA0OSw2ICs5
MDUyLDkgQEAKIAkJNTBENDA2MTAxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0uaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwRDg4Q0IzMTVCREZEQUEw
MDE4MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHA7IHBhdGggPSBm
aWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTBEODhDQjQxNUJERkRBQTAwMTgwOUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlclByb2dy
YW1JbmZvLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRTE4Q0Q1MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcDsgcGF0aCA9IHN0eWxlL1N0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRTE4
Q0Q2MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZS5jcHA7IHBhdGggPSBzdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRTE4Q0Q3MTZGOTI4NTgwMEM2
NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oOyBwYXRoID0g
c3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjEzOTksNiArMjE0MDUsOSBAQAogCQkJCTkzOTNFNjAzMTUxQTlBMTgwMDA2NkYw
NiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0LmggKi8sCiAJCQkJNTAzOEJFMkQxNDcyQUQyMzAwOTVF
MEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmNwcCAqLywKIAkJCQk1MDM4QkUyRTE0NzJBRDIzMDA5
NUUwRDEgLyogU3R5bGVDYWNoZWRTaGFkZXIuaCAqLywKKwkJCQk1MEUxOENENjE2RjkyODU4MDBD
NjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwICovLAorCQkJCTUwRTE4
Q0Q3MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oICov
LAorCQkJCTUwRTE4Q0Q1MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uY3BwICovLAogCQkJCTUwM0QwQ0FEMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0uaCAqLywKIAkJCQlCQzVFQjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVE
YXNoYm9hcmRSZWdpb24uaCAqLywKIAkJCQlCQzVFQjhCNjBFODIwMUJEMDBCMjU5NjUgLyogU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCAqLywKQEAgLTI2Nzc3LDYgKzI2Nzg2LDcg
QEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCURBRUQyMDMxMTZGMjQ0NDgwMDcwRUMwRiAvKiBQYWdlQ29uc29sZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ1QkM0MjcxNkY4ODJFRTAwNzA0OEQwIC8qIFNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUwRTE4Q0RBMTZGOTI4NTgwMEM2
NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yOTk4NSw2ICsyOTk5NSw4IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhT
U0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4
MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREFFRDIwMzAxNkYy
NDQyQjAwNzBFQzBGIC8qIFBhZ2VDb25zb2xlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwRTE4
Q0Q4MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTBFMThDRDkxNkY5Mjg1ODAwQzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCmluZGV4IDRkZTM3NjIuLmFjM2Y5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTE2NCw5ICsxNjQsMTEgQEAKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKICNp
bmNsdWRlICJDdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mby5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5o
IgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmgiCisjaW5jbHVkZSAiU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUu
aCIKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdTaGFkZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoYWRl
ci5oIgogI2luY2x1ZGUgIldlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCIKQEAgLTM5MzMsNiAr
MzkzNSwxMyBAQCBTdHlsZVNoYWRlciogU3R5bGVSZXNvbHZlcjo6c3R5bGVTaGFkZXIoQ1NTVmFs
dWUqIHZhbHVlKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgV2ViS2l0Q1NTU2hhZGVyVmFs
dWUqIGNzc1NoYWRlclZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlz
V2ViS2l0Q1NTU2hhZGVyVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktp
dENTU1NoYWRlclZhbHVlKj4odmFsdWUpOworICAgIHJldHVybiAwOworfQorCiBTdHlsZVNoYWRl
ciogU3R5bGVSZXNvbHZlcjo6Y2FjaGVkT3JQZW5kaW5nU3R5bGVTaGFkZXJGcm9tVmFsdWUoV2Vi
S2l0Q1NTU2hhZGVyVmFsdWUqIHZhbHVlKQogewogICAgIFN0eWxlU2hhZGVyKiBzaGFkZXIgPSB2
YWx1ZS0+Y2FjaGVkT3JQZW5kaW5nU2hhZGVyKCk7CkBAIC0zOTQxLDYgKzM5NTAsMjMgQEAgU3R5
bGVTaGFkZXIqIFN0eWxlUmVzb2x2ZXI6OmNhY2hlZE9yUGVuZGluZ1N0eWxlU2hhZGVyRnJvbVZh
bHVlKFdlYktpdENTU1NoYWRlclYKICAgICByZXR1cm4gc2hhZGVyOwogfQogCitQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlclByb2dyYW0+IFN0eWxlUmVzb2x2ZXI6Omxvb2t1cEN1c3RvbUZpbHRlclBy
b2dyYW0oV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHZlcnRleFNoYWRlciwgV2ViS2l0Q1NTU2hhZGVy
VmFsdWUqIGZyYWdtZW50U2hhZGVyLCAKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9n
cmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5n
cywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5cGUpCit7CisgICAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9zdGF0ZS5kb2N1bWVudCgpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpOworICAgIEtVUkwgdmVydGV4U2hhZGVyVVJMID0gdmVydGV4U2hhZGVy
ID8gdmVydGV4U2hhZGVyLT5jb21wbGV0ZVVSTChjYWNoZWRSZXNvdXJjZUxvYWRlcikgOiBLVVJM
KCk7CisgICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCA9IGZyYWdtZW50U2hhZGVyID8gZnJhZ21l
bnRTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IEtVUkwoKTsKKyAg
ICBSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtOworICAgIGlmIChtX2N1
c3RvbUZpbHRlclByb2dyYW1DYWNoZSkKKyAgICAgICAgcHJvZ3JhbSA9IG1fY3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlLT5sb29rdXAoQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVy
VVJMLCBmcmFnbWVudFNoYWRlclVSTCwgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlw
ZSkpOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICAvLyBDcmVhdGUgYSBuZXcgU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtIHRoYXQgd2lsbCBiZSByZXNvbHZlZCBkdXJpbmcgdGhlIGxvYWRQ
ZW5kaW5nU2hhZGVycyBhbmQgYWRkZWQgdG8gdGhlIGNhY2hlLgorICAgICAgICBwcm9ncmFtID0g
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyVVJMLCB2ZXJ0ZXhT
aGFkZXIgPyBzdHlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpIDogMCwgCisgICAgICAgICAgICBmcmFn
bWVudFNoYWRlclVSTCwgZnJhZ21lbnRTaGFkZXIgPyBzdHlsZVNoYWRlcihmcmFnbWVudFNoYWRl
cikgOiAwLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1lc2hUeXBlKTsKKyAgICB9CisgICAg
cmV0dXJuIHByb2dyYW0ucmVsZWFzZSgpOworfQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQ
ZW5kaW5nU2hhZGVycygpCiB7CiAgICAgaWYgKCFtX3N0YXRlLnN0eWxlKCktPmhhc0ZpbHRlcigp
IHx8ICFtX3N0YXRlLmhhc1BlbmRpbmdTaGFkZXJzKCkpCkBAIC0zOTU1LDEzICszOTgxLDI2IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdTaGFkZXJzKCkKICAgICAgICAgICAgIEN1
c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tRmlsdGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uLmdldCgpKTsKICAgICAgICAgICAgIEFTU0VS
VChjdXN0b21GaWx0ZXItPnByb2dyYW0oKSk7CiAgICAgICAgICAgICBTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW0qIHByb2dyYW0gPSBzdGF0aWNfY2FzdDxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0q
PihjdXN0b21GaWx0ZXItPnByb2dyYW0oKSk7Ci0gICAgICAgICAgICBpZiAocHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkgJiYgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCktPmlzUGVuZGluZ1NoYWRlcigp
KSB7Ci0gICAgICAgICAgICAgICAgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHNoYWRlclZhbHVlID0g
c3RhdGljX2Nhc3Q8U3R5bGVQZW5kaW5nU2hhZGVyKj4ocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkp
LT5jc3NTaGFkZXJWYWx1ZSgpOwotICAgICAgICAgICAgICAgIHByb2dyYW0tPnNldFZlcnRleFNo
YWRlcihzaGFkZXJWYWx1ZS0+Y2FjaGVkU2hhZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKSAm
JiBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLT5pc1BlbmRpbmdTaGFkZXIoKSkgewotICAgICAg
ICAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVlKiBzaGFkZXJWYWx1ZSA9IHN0YXRpY19jYXN0
PFN0eWxlUGVuZGluZ1NoYWRlcio+KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkpLT5jc3NTaGFk
ZXJWYWx1ZSgpOwotICAgICAgICAgICAgICAgIHByb2dyYW0tPnNldEZyYWdtZW50U2hhZGVyKHNo
YWRlclZhbHVlLT5jYWNoZWRTaGFkZXIoY2FjaGVkUmVzb3VyY2VMb2FkZXIpKTsKKyAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB0aGUgU3R5bGVQZW5kaW5nU2hhZGVycyBjb3VsZCBiZSBhbHJlYWR5
IHJlc29sdmVkIHRvIFN0eWxlQ2FjaGVkU2hhZGVycy4gVGhhdCdzIGJlY2F1c2UgdGhlIHJ1bGUg
d2FzIG1hdGNoZWQgYmVmb3JlLgorICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSB0aGF0IHdhcyBpbml0aWFsbHkgY3JlYXRlZCBjb3VsZCBoYXZlIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBjYWNoZSBpbiB0aGUgbWVhbndoaWxlLAorICAgICAgICAgICAg
Ly8gbWVhbmluZyB0aGF0IHdlIGdldCBhIG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gaGVy
ZSB0aGF0IGlzIG5vdCB5ZXQgaW4gdGhlIGNhY2hlLCBidXQgYWxyZWFkeSBoYXMgbG9hZGVkIFN0
eWxlU2hhZGVycy4KKyAgICAgICAgICAgIGlmICghcHJvZ3JhbS0+aGFzUGVuZGluZ1NoYWRlcnMo
KSAmJiBwcm9ncmFtLT5pbkNhY2hlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAoIW1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKQorICAgICAgICAgICAgICAg
IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlID0gYWRvcHRQdHIobmV3IFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbUNhY2hlKCkpOworICAgICAgICAgICAgUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbT4gc3R5bGVQcm9ncmFtID0gbV9jdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUtPmxvb2t1
cChwcm9ncmFtKTsKKyAgICAgICAgICAgIGlmIChzdHlsZVByb2dyYW0uZ2V0KCkpCisgICAgICAg
ICAgICAgICAgY3VzdG9tRmlsdGVyLT5zZXRQcm9ncmFtKHN0eWxlUHJvZ3JhbS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHByb2dyYW0tPnZlcnRl
eFNoYWRlcigpICYmIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLT5pc1BlbmRpbmdTaGFkZXIoKSkg
eworICAgICAgICAgICAgICAgICAgICBXZWJLaXRDU1NTaGFkZXJWYWx1ZSogc2hhZGVyVmFsdWUg
PSBzdGF0aWNfY2FzdDxTdHlsZVBlbmRpbmdTaGFkZXIqPihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KSktPmNzc1NoYWRlclZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnNldFZl
cnRleFNoYWRlcihzaGFkZXJWYWx1ZS0+Y2FjaGVkU2hhZGVyKGNhY2hlZFJlc291cmNlTG9hZGVy
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpICYmIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCktPmlzUGVuZGluZ1NoYWRl
cigpKSB7CisgICAgICAgICAgICAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVlKiBzaGFkZXJW
YWx1ZSA9IHN0YXRpY19jYXN0PFN0eWxlUGVuZGluZ1NoYWRlcio+KHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkpLT5jc3NTaGFkZXJWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFt
LT5zZXRGcmFnbWVudFNoYWRlcihzaGFkZXJWYWx1ZS0+Y2FjaGVkU2hhZGVyKGNhY2hlZFJlc291
cmNlTG9hZGVyKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fY3VzdG9t
RmlsdGVyUHJvZ3JhbUNhY2hlLT5hZGQocHJvZ3JhbSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC00MTA1LDIwICs0MTQ0LDE5IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uPiBTdHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb25XaXRo
CiAgICAgdW5zaWduZWQgc2hhZGVyc0xpc3RMZW5ndGggPSBzaGFkZXJzTGlzdC0+bGVuZ3RoKCk7
CiAgICAgQVNTRVJUKHNoYWRlcnNMaXN0TGVuZ3RoKTsKIAotICAgIFJlZlB0cjxTdHlsZVNoYWRl
cj4gdmVydGV4U2hhZGVyID0gc3R5bGVTaGFkZXIoc2hhZGVyc0xpc3QtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMCkpOwotICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXI7Cisg
ICAgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHZlcnRleFNoYWRlciA9IGNzc1NoYWRlclZhbHVlKHNo
YWRlcnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKKyAgICBXZWJLaXRDU1NTaGFk
ZXJWYWx1ZSogZnJhZ21lbnRTaGFkZXIgPSAwOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBl
IHByb2dyYW1UeXBlID0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkU7CiAgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzOwogCiAgICAgaWYgKHNo
YWRlcnNMaXN0TGVuZ3RoID4gMSkgewogICAgICAgICBDU1NWYWx1ZSogZnJhZ21lbnRTaGFkZXJP
ck1peEZ1bmN0aW9uID0gc2hhZGVyc0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSk7Ci0K
ICAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbi0+aXNXZWJLaXRDU1NNaXhG
dW5jdGlvblZhbHVlKCkpIHsKICAgICAgICAgICAgIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUq
IG1peEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSo+KGZy
YWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbik7CiAgICAgICAgICAgICBDU1NWYWx1ZUxpc3RJdGVy
YXRvciBpdGVyYXRvcihtaXhGdW5jdGlvbik7CiAKICAgICAgICAgICAgIEFTU0VSVChtaXhGdW5j
dGlvbi0+bGVuZ3RoKCkpOwotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBzdHlsZVNoYWRl
cihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gY3NzU2hh
ZGVyVmFsdWUoaXRlcmF0b3IudmFsdWUoKSk7CiAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNl
KCk7CiAKICAgICAgICAgICAgIEFTU0VSVChtaXhGdW5jdGlvbi0+bGVuZ3RoKCkgPD0gMyk7CkBA
IC00MTM0LDkgKzQxNzIsMTIgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0
eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGgKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByb2dyYW1UeXBlID0gUFJPR1JBTV9U
WVBFX05PX0VMRU1FTlRfVEVYVFVSRTsKLSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gc3R5
bGVTaGFkZXIoZnJhZ21lbnRTaGFkZXJPck1peEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGZyYWdt
ZW50U2hhZGVyID0gY3NzU2hhZGVyVmFsdWUoZnJhZ21lbnRTaGFkZXJPck1peEZ1bmN0aW9uKTsK
ICAgICAgICAgfQogICAgIH0KKworICAgIGlmICghdmVydGV4U2hhZGVyICYmICFmcmFnbWVudFNo
YWRlcikKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgdW5zaWduZWQgbWVzaFJvd3MgPSAx
OwogICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5zID0gMTsKQEAgLTQxOTIsOCArNDIzMyw4IEBAIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBTdHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0
b21GaWx0ZXJPcGVyYXRpb25XaXRoCiAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBwYXJh
bWV0ZXJMaXN0OwogICAgIGlmIChwYXJhbWV0ZXJzVmFsdWUgJiYgIXBhcnNlQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdChwYXJhbWV0ZXJzVmFsdWUsIHBhcmFtZXRlckxpc3QpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9n
cmFtID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyLnJlbGVh
c2UoKSwgZnJhZ21lbnRTaGFkZXIucmVsZWFzZSgpLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3Ms
IG1lc2hUeXBlKTsKKworICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0g
bG9va3VwQ3VzdG9tRmlsdGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCBw
cm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1lc2hUeXBlKTsKICAgICByZXR1cm4gQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbS5yZWxlYXNlKCksIHBhcmFtZXRlckxpc3QsIG1l
c2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaFR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAppbmRleCA2MzRlNmU0Li45YzQ4MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKQEAgLTQzLDYgKzQzLDkgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJM
RShTVkcpCiAjaW5jbHVkZSAiV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oIgogI2VuZGlmCisj
aWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkN1c3RvbUZpbHRlckNvbnN0YW50cy5o
IgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTcyLDYgKzc1LDggQEAgY2xhc3MgQ29u
dGFpbmVyTm9kZTsKIGNsYXNzIEN1c3RvbUZpbHRlck9wZXJhdGlvbjsKIGNsYXNzIEN1c3RvbUZp
bHRlclBhcmFtZXRlcjsKIGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q7CitjbGFzcyBD
dXN0b21GaWx0ZXJQcm9ncmFtOworc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
czsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtODcs
NiArOTIsNyBAQCBjbGFzcyBSdWxlRGF0YTsKIGNsYXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZXR0aW5n
czsKIGNsYXNzIFN0YXRpY0NTU1J1bGVMaXN0OworY2xhc3MgU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtQ2FjaGU7CiBjbGFzcyBTdHlsZUJ1aWxkZXI7CiBjbGFzcyBTdHlsZVNjb3BlUmVzb2x2ZXI7
CiBjbGFzcyBTdHlsZUltYWdlOwpAQCAtMzE3LDYgKzMyMyw4IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
V2l0aElubGluZVN5bnRheChXZWJLaXRDU1NGaWx0ZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb24oV2ViS2l0
Q1NTRmlsdGVyVmFsdWUqKTsKICAgICB2b2lkIGxvYWRQZW5kaW5nU2hhZGVycygpOworICAgIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gbG9va3VwQ3VzdG9tRmlsdGVyUHJvZ3JhbShX
ZWJLaXRDU1NTaGFkZXJWYWx1ZSogdmVydGV4U2hhZGVyLCBXZWJLaXRDU1NTaGFkZXJWYWx1ZSog
ZnJhZ21lbnRTaGFkZXIsIAorICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSwgY29uc3Qg
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiwgQ3VzdG9tRmlsdGVyTWVzaFR5cGUpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICB2b2lkIGxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRz
KCk7CkBAIC02MzEsNiArNjM5LDggQEAgcHJpdmF0ZToKIAogICAgIFN0YXRlIG1fc3RhdGU7CiAK
KyAgICBPd25QdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU+IG1fY3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlOworCiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsKICAgICBmcmll
bmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hl
ZFByb3BlcnRpZXMmKTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdGNoZWRQ
cm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCmluZGV4IGZiMGIxYjEuLjJkZjA1MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZFNoYWRlci5oIgogI2luY2x1ZGUg
IlN0eWxlUGVuZGluZ1NoYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKQEAgLTU0LDYgKzU1LDExIEBAIFdlYktpdENTU1NoYWRlclZhbHVlOjp+V2ViS2l0
Q1NTU2hhZGVyVmFsdWUoKQogewogfQogCitLVVJMIFdlYktpdENTU1NoYWRlclZhbHVlOjpjb21w
bGV0ZVVSTChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAoreworICAgIHJldHVy
biBsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKTsKK30KKwogU3R5bGVDYWNo
ZWRTaGFkZXIqIFdlYktpdENTU1NoYWRlclZhbHVlOjpjYWNoZWRTaGFkZXIoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlcikKIHsKICAgICBBU1NFUlQobG9hZGVyKTsKQEAgLTYxLDcgKzY3LDcg
QEAgU3R5bGVDYWNoZWRTaGFkZXIqIFdlYktpdENTU1NoYWRlclZhbHVlOjpjYWNoZWRTaGFkZXIo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWQKICAgICBpZiAoIW1fYWNjZXNzZWRTaGFkZXIpIHsK
ICAgICAgICAgbV9hY2Nlc3NlZFNoYWRlciA9IHRydWU7CiAKLSAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwobV91cmwpKSk7CisgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KFJlc291cmNlUmVxdWVzdChjb21wbGV0ZVVSTChsb2FkZXIpKSk7CiAgICAgICAgIHJlcXVlc3Qu
c2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5jc3MpOwogICAg
ICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2hhZGVyPiBjYWNoZWRTaGFkZXIg
PSBsb2FkZXItPnJlcXVlc3RTaGFkZXIocmVxdWVzdCkpCiAgICAgICAgICAgICBtX3NoYWRlciA9
IFN0eWxlQ2FjaGVkU2hhZGVyOjpjcmVhdGUoY2FjaGVkU2hhZGVyLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggNGE5ODI1ZS4uMDI5YjY4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKQEAgLTM3LDYgKzM3
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CitjbGFzcyBLVVJMOwogY2xhc3MgU3R5bGVDYWNoZWRTaGFkZXI7CiBjbGFzcyBTdHlsZVNoYWRl
cjsKIApAQCAtNDgsNiArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBmb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIHZvaWQgc2V0Rm9ybWF0KGNvbnN0IFN0
cmluZyYgZm9ybWF0KSB7IG1fZm9ybWF0ID0gZm9ybWF0OyB9CiAKKyAgICBLVVJMIGNvbXBsZXRl
VVJMKENhY2hlZFJlc291cmNlTG9hZGVyKikgY29uc3Q7CiAgICAgU3R5bGVDYWNoZWRTaGFkZXIq
IGNhY2hlZFNoYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogICAgIFN0eWxlU2hhZGVyKiBj
YWNoZWRPclBlbmRpbmdTaGFkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24u
Y3BwCmluZGV4IDkyNTJmNDcuLmNkZTM1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1
c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKgogICAgICAg
ICByZXR1cm4gdGhpczsKICAgICAKICAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGZy
b21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZyb20pOwot
ICAgIGlmICgqbV9wcm9ncmFtLmdldCgpICE9ICpmcm9tT3AtPm1fcHJvZ3JhbS5nZXQoKQorICAg
IGlmIChtX3Byb2dyYW0uZ2V0KCkgIT0gZnJvbU9wLT5tX3Byb2dyYW0uZ2V0KCkKICAgICAgICAg
fHwgbV9tZXNoUm93cyAhPSBmcm9tT3AtPm1fbWVzaFJvd3MKICAgICAgICAgfHwgbV9tZXNoQ29s
dW1ucyAhPSBmcm9tT3AtPm1fbWVzaENvbHVtbnMKICAgICAgICAgfHwgbV9tZXNoVHlwZSAhPSBm
cm9tT3AtPm1fbWVzaFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCAw
ZjkyYmQ5Li42ODFjNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oJm8pOwotICAgICAgICByZXR1cm4gKm1fcHJvZ3JhbS5n
ZXQoKSA9PSAqb3RoZXItPm1fcHJvZ3JhbS5nZXQoKQorICAgICAgICByZXR1cm4gbV9wcm9ncmFt
LmdldCgpID09IG90aGVyLT5tX3Byb2dyYW0uZ2V0KCkKICAgICAgICAgICAgICYmIG1fbWVzaFJv
d3MgPT0gb3RoZXItPm1fbWVzaFJvd3MKICAgICAgICAgICAgICYmIG1fbWVzaENvbHVtbnMgPT0g
b3RoZXItPm1fbWVzaENvbHVtbnMKICAgICAgICAgICAgICYmIG1fbWVzaFR5cGUgPT0gb3RoZXIt
Pm1fbWVzaFR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCmluZGV4IDJhOGZjZTAu
LmUwNmJiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApAQCAtODYsMTIgKzg2
LDUgQEAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6cHJvZ3Jh
bUluZm8oKSBjb25zdAogICAgIHJldHVybiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhT
aGFkZXJTdHJpbmcoKSwgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgbV9wcm9ncmFtVHlwZSwgbV9t
aXhTZXR0aW5ncywgbV9tZXNoVHlwZSk7CiB9CiAKLWJvb2wgQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6
b3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBjb25zdAotewotICAgIHJl
dHVybiBtX3Byb2dyYW1UeXBlID09IG8ubV9wcm9ncmFtVHlwZQotICAgICAgICAmJiAobV9wcm9n
cmFtVHlwZSAhPSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSB8fCBtX21peFNl
dHRpbmdzID09IG8ubV9taXhTZXR0aW5ncykKLSAgICAgICAgJiYgbV9tZXNoVHlwZSA9PSBvLm1f
bWVzaFR5cGU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBFTkFCTEUo
Q1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IGI3NTViYjcuLjE1
NDUwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC02Myw4ICs2Myw2IEBAIHB1
YmxpYzoKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MoKSBj
b25zdCB7IHJldHVybiBtX21peFNldHRpbmdzOyB9CiAgICAgQ3VzdG9tRmlsdGVyTWVzaFR5cGUg
bWVzaFR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lc2hUeXBlOyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoKICAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0gY2FuIG5vdGlmeSB0aGUgY2xpZW50cyB0aGF0IHRoZSBjYWNoZWQgcmVzb3VyY2VzIGFy
ZQogICAgIC8vIGxvYWRlZCBhbmQgaXQgaXMgcmVhZHkgdG8gY3JlYXRlIEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbSBvYmplY3RzLgpAQCAtNzcsNiArNzUsMTEgQEAgcHJvdGVjdGVkOgogICAg
IEN1c3RvbUZpbHRlclByb2dyYW0oQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYsIEN1c3RvbUZpbHRlck1lc2hUeXBlKTsKIAogcHJp
dmF0ZToKKyAgICAvLyBDdXN0b21GaWx0ZXJQcm9ncmFtcyBhcmUgdW5pcXVlIGNvbWJpbmF0aW9u
cyBvZiBzaGFkZXJzIGFuZCBjYW4gYmUgCisgICAgLy8gY29tcGFyZWQgdXNpbmcganVzdCB0aGUg
cG9pbnRlciB2YWx1ZSBpbnN0ZWFkLgorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21G
aWx0ZXJQcm9ncmFtJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1c3RvbUZp
bHRlclByb2dyYW0mKSBjb25zdDsKKwogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8Q3VzdG9t
RmlsdGVyUHJvZ3JhbUNsaWVudCo+IEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnRMaXN0OwogICAg
IEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnRMaXN0IG1fY2xpZW50czsKICAgICBDdXN0b21GaWx0
ZXJQcm9ncmFtVHlwZSBtX3Byb2dyYW1UeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQ3MWVhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5j
cHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAi
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisKKyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKworU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtOjp+U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKCkKK3sKKyAgICBpZiAobV9j
YWNoZSkKKyAgICAgICAgbV9jYWNoZS0+cmVtb3ZlKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uaAppbmRleCBhZTY4ZDk1Li4yNmFjMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJD
YWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisjaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIlN0eWxlU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4KIApAQCAtNDIsMTggKzQzLDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gQ1NTIFNoYWRlcnMKIAorY2xhc3MgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU7CisK
IGNsYXNzIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9n
cmFtLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFz
c1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1U
eXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1p
eFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShLVVJMIHZlcnRleFNoYWRl
clVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCAKKyAgICAgICAgS1VS
TCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFk
ZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAorICAgICAgICBjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJN
ZXNoVHlwZSBtZXNoVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIHByb2dy
YW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyVVJMLCB2ZXJ0ZXhTaGFk
ZXIsIGZyYWdtZW50U2hhZGVyVVJMLCBmcmFnbWVudFNoYWRlciwgcHJvZ3JhbVR5cGUsIG1peFNl
dHRpbmdzLCBtZXNoVHlwZSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldFZlcnRleFNoYWRl
cihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV92ZXJ0ZXhTaGFkZXIgPSBzaGFk
ZXI7IH0KKyAgICB2b2lkIHNldFZlcnRleFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBz
aGFkZXIpCisgICAgeworICAgICAgICAvLyBUaGUgc2hhZGVyIGlzIGltbXV0YWJsZSB3aGlsZSBp
biB0aGUgY2FjaGUuCisgICAgICAgIEFTU0VSVCghbV9jYWNoZSk7CisgICAgICAgIG1fdmVydGV4
U2hhZGVyID0gc2hhZGVyOyAKKyAgICB9CiAgICAgU3R5bGVTaGFkZXIqIHZlcnRleFNoYWRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyLmdldCgpOyB9CiAgICAgCi0gICAgdm9pZCBz
ZXRGcmFnbWVudFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV9mcmFn
bWVudFNoYWRlciA9IHNoYWRlcjsgfQorICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIoUGFzc1Jl
ZlB0cjxTdHlsZVNoYWRlcj4gc2hhZGVyKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHNoYWRlciBp
cyBpbW11dGFibGUgd2hpbGUgaW4gdGhlIGNhY2hlLgorICAgICAgICBBU1NFUlQoIW1fY2FjaGUp
OworICAgICAgICBtX2ZyYWdtZW50U2hhZGVyID0gc2hhZGVyOyAKKyAgICB9CiAgICAgU3R5bGVT
aGFkZXIqIGZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlci5n
ZXQoKTsgfQogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNv
bnN0CkBAIC03Miw2ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIERvIG5vdCB1
c2UgdGhlIENhY2hlZFJlc291cmNlOmlzTG9hZGVkIG1ldGhvZCBoZXJlLCBiZWNhdXNlIGl0IGFj
dHVhbGx5IG1lYW5zICFpc0xvYWRpbmcoKSwKICAgICAgICAgLy8gc28gbWlzc2luZyBhbmQgY2Fu
Y2VsZWQgcmVzb3VyY2VzIHdpbGwgaGF2ZSBpc0xvYWRlZCBzZXQgdG8gdHJ1ZSwgZXZlbiBpZiB0
aGV5IGFyZSBub3QgbG9hZGVkIHlldC4KKyAgICAgICAgQVNTRVJUKCFtX3ZlcnRleFNoYWRlciB8
fCBtX3ZlcnRleFNoYWRlci0+aXNDYWNoZWRTaGFkZXIoKSk7CisgICAgICAgIEFTU0VSVCghbV9m
cmFnbWVudFNoYWRlciB8fCBtX2ZyYWdtZW50U2hhZGVyLT5pc0NhY2hlZFNoYWRlcigpKTsKKyAg
ICAgICAgQVNTRVJUKG1fY2FjaGVkVmVydGV4U2hhZGVyLmdldCgpIHx8IG1fY2FjaGVkRnJhZ21l
bnRTaGFkZXIuZ2V0KCkpOwogICAgICAgICByZXR1cm4gKCFtX2NhY2hlZFZlcnRleFNoYWRlci5n
ZXQoKSB8fCBtX2lzVmVydGV4U2hhZGVyTG9hZGVkKQogICAgICAgICAgICAgJiYgKCFtX2NhY2hl
ZEZyYWdtZW50U2hhZGVyLmdldCgpIHx8IG1faXNGcmFnbWVudFNoYWRlckxvYWRlZCk7CiAgICAg
fQpAQCAtMTE0LDM2ICsxMzIsNDkgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNMb2FkZWQoKSkK
ICAgICAgICAgICAgIG5vdGlmeUNsaWVudHMoKTsKICAgICB9Ci0gICAgCi0gICAgQ2FjaGVkU2hh
ZGVyKiBjYWNoZWRWZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlciA/
IG1fdmVydGV4U2hhZGVyLT5jYWNoZWRTaGFkZXIoKSA6IDA7IH0KLSAgICBDYWNoZWRTaGFkZXIq
IGNhY2hlZEZyYWdtZW50U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlciA/
IG1fZnJhZ21lbnRTaGFkZXItPmNhY2hlZFNoYWRlcigpIDogMDsgfQotICAgIAotICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IAot
ICAgIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgdXNlIHRoZSAhPSBvcGVyYXRvciBiZWNhdXNlIHRo
YXQgd291bGQgcmVjdXJzaXZlbHkgY2FsbCB0aGlzIG1ldGhvZC4KLSAgICAgICAgaWYgKCFDdXN0
b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzdCBpcyB1Z2x5LCBidXQgU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUgaW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmls
dGVyUHJvZ3JhbS4KLSAgICAgICAgY29uc3QgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhl
ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSo+KCZvKTsKLSAg
ICAgICAgcmV0dXJuIGNhY2hlZFZlcnRleFNoYWRlcigpID09IG90aGVyLT5jYWNoZWRWZXJ0ZXhT
aGFkZXIoKSAmJiBjYWNoZWRGcmFnbWVudFNoYWRlcigpID09IG90aGVyLT5jYWNoZWRGcmFnbWVu
dFNoYWRlcigpOworICAgIGJvb2wgaGFzUGVuZGluZ1NoYWRlcnMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIChtX3ZlcnRleFNoYWRlciAmJiBtX3ZlcnRleFNoYWRlci0+aXNQZW5kaW5n
U2hhZGVyKCkpIAorICAgICAgICAgICAgfHwgKG1fZnJhZ21lbnRTaGFkZXIgJiYgbV9mcmFnbWVu
dFNoYWRlci0+aXNQZW5kaW5nU2hhZGVyKCkpOwogICAgIH0KIAorICAgIC8vIFN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbUNhY2hlIGlzIHJlc3BvbnNpYmxlIHdpdGggdXBkYXRpbmcgdGhlIHJlZmVy
ZW5jZSB0byB0aGUgY2FjaGUuCisgICAgdm9pZCBzZXRDYWNoZShTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZSogY2FjaGUpIHsgbV9jYWNoZSA9IGNhY2hlOyB9CisgICAgYm9vbCBpbkNhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZTsgfQorICAgIAorICAgIEtVUkwgdmVydGV4U2hhZGVy
VVJMKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJVUkw7IH0KKyAgICBLVVJMIGZyYWdt
ZW50U2hhZGVyVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclVSTDsgfQorCiBw
cml2YXRlOgotICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShQYXNzUmVmUHRyPFN0eWxlU2hh
ZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVy
LCBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVz
aFR5cGUpCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKEtVUkwgdmVydGV4U2hhZGVyVVJM
LCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIEtVUkwgZnJhZ21lbnRTaGFk
ZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCAKKyAgICAgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hU
eXBlKQogICAgICAgICA6IEN1c3RvbUZpbHRlclByb2dyYW0ocHJvZ3JhbVR5cGUsIG1peFNldHRp
bmdzLCBtZXNoVHlwZSkKICAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCiAg
ICAgICAgICwgbV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKKyAgICAgICAgLCBtX3Zl
cnRleFNoYWRlclVSTCh2ZXJ0ZXhTaGFkZXJVUkwpCisgICAgICAgICwgbV9mcmFnbWVudFNoYWRl
clVSTChmcmFnbWVudFNoYWRlclVSTCkKKyAgICAgICAgLCBtX2NhY2hlKDApCiAgICAgICAgICwg
bV9pc1ZlcnRleFNoYWRlckxvYWRlZChmYWxzZSkKICAgICAgICAgLCBtX2lzRnJhZ21lbnRTaGFk
ZXJMb2FkZWQoZmFsc2UpCiAgICAgewogICAgIH0KKworICAgIH5TdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0oKTsKICAgICAKICAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IG1fdmVydGV4U2hhZGVyOwog
ICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gbV9mcmFnbWVudFNoYWRlcjsKLSAgICAKKwogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNoYWRlcj4gbV9jYWNoZWRWZXJ0ZXhTaGFkZXI7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2hhZGVyPiBtX2NhY2hlZEZyYWdtZW50U2hh
ZGVyOworCisgICAgLy8gVGhlIFVSTHMgZm9ybSB0aGUga2V5IG9mIHRoZSBTdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0gaW4gdGhlIGNhY2hlIGFuZCBhcmUgdXNlZAorICAgIC8vIHRvIGxvb2t1cCB0
aGUgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIHdoZW4gaXQncyByZW1vdmVkIGZyb20gdGhlIGNh
Y2hlLgorICAgIEtVUkwgbV92ZXJ0ZXhTaGFkZXJVUkw7CisgICAgS1VSTCBtX2ZyYWdtZW50U2hh
ZGVyVVJMOworCisgICAgLy8gVGhlIENhY2hlIGlzIHJlc3BvbnNpYmxlIG9mIGludmFsaWRhdGlu
ZyB0aGlzIHJlZmVyZW5jZS4KKyAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSogbV9j
YWNoZTsKICAgICAKICAgICBib29sIG1faXNWZXJ0ZXhTaGFkZXJMb2FkZWQ7CiAgICAgYm9vbCBt
X2lzRnJhZ21lbnRTaGFkZXJMb2FkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGExMTE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbUNhY2hlLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisK
KyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIgorCisjaW5jbHVkZSAi
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKKyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8gcHJvZ3JhbUNhY2hlS2V5KFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3Jh
bSkgCit7CisgICAgQVNTRVJUKHByb2dyYW0tPnZlcnRleFNoYWRlclVSTCgpLmlzVmFsaWQoKSB8
fCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlclVSTCgpLmlzVmFsaWQoKSk7CisgICAgcmV0dXJuIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvKHByb2dyYW0tPnZlcnRleFNoYWRlclVSTCgpLCBwcm9ncmFt
LT5mcmFnbWVudFNoYWRlclVSTCgpLCAKKyAgICAgICAgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSwg
cHJvZ3JhbS0+bWl4U2V0dGluZ3MoKSwgcHJvZ3JhbS0+bWVzaFR5cGUoKSk7Cit9CisKK1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgp
Cit7Cit9CisKK1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjp+U3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtQ2FjaGUoKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvZ3JhbXMgYXJlIG5v
dCBjYWxsaW5nIGJhY2sgaW50byB0aGlzIG9iamVjdC4KKyAgICBmb3IgKENhY2hlTWFwOjppdGVy
YXRvciBpdGVyID0gbV9jYWNoZS5iZWdpbigpLCBlbmQgPSBtX2NhY2hlLmVuZCgpOyBpdGVyICE9
IGVuZDsgKytpdGVyKQorICAgICAgICBpdGVyLT52YWx1ZS0+c2V0Q2FjaGUoMCk7Cit9CisKK1N0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6Omxv
b2t1cChjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pIGNvbnN0Cit7
CisgICAgQ2FjaGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2NhY2hlLmZpbmQocHJvZ3Jh
bUluZm8pOworICAgIHJldHVybiBpdGVyICE9IG1fY2FjaGUuZW5kKCkgPyBpdGVyLT52YWx1ZSA6
IDA7Cit9CisKK1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtQ2FjaGU6Omxvb2t1cChTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qIHByb2dyYW0pIGNvbnN0
Cit7CisgICAgcmV0dXJuIGxvb2t1cChwcm9ncmFtQ2FjaGVLZXkocHJvZ3JhbSkpOworfQorCit2
b2lkIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjphZGQoU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKiBwcm9ncmFtKQoreworICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIGtleSA9IHBy
b2dyYW1DYWNoZUtleShwcm9ncmFtKTsKKyAgICBBU1NFUlQobV9jYWNoZS5maW5kKGtleSkgPT0g
bV9jYWNoZS5lbmQoKSk7CisgICAgbV9jYWNoZS5zZXQoa2V5LCBwcm9ncmFtKTsKKyAgICBwcm9n
cmFtLT5zZXRDYWNoZSh0aGlzKTsKKyAgICBBU1NFUlQobV9jYWNoZS5maW5kKGtleSkgIT0gbV9j
YWNoZS5lbmQoKSk7Cit9CisKK3ZvaWQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6OnJl
bW92ZShTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qIHByb2dyYW0pCit7CisgICAgQ2FjaGVNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhY2hlLmZpbmQocHJvZ3JhbUNhY2hlS2V5KHByb2dyYW0pKTsK
KyAgICBBU1NFUlQoaXRlciAhPSBtX2NhY2hlLmVuZCgpKTsKKyAgICBtX2NhY2hlLnJlbW92ZShp
dGVyKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q1NTX1NIQURFUlMpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1MTgzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGVfaAorI2RlZmluZSBTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZV9oCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87
CisKK2NsYXNzIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZSgpOworICAgIH5TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgpOworCisgICAgLy8gTG9v
a3VwcyBhIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB0aGF0IGhhcyBzaW1pbGFyIHBhcmFtZXRl
cnMgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2dyYW0uCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtKiBsb29rdXAoU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKikgY29uc3Q7CisgICAgU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtKiBsb29rdXAoY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8m
KSBjb25zdDsKKworICAgIHZvaWQgYWRkKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOworICAg
IHZvaWQgcmVtb3ZlKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOworCitwcml2YXRlOgorICAg
IHR5cGVkZWYgSGFzaE1hcDxDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywgU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtKj4gQ2FjaGVNYXA7CisgICAgQ2FjaGVNYXAgbV9jYWNoZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2Vu
ZGlmIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlX2gK
</data>
<flag name="commit-queue"
          id="215851"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194135</attachid>
            <date>2013-03-20 15:33:23 -0700</date>
            <delta_ts>2013-03-21 14:53:34 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug112602_3.patch</filename>
            <type>text/plain</type>
            <size>50229</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZGVhOTJjLi5kZjE0ZDQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDMt
MjAgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IGEgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGNhY2hlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI2MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5l
dyB0ZXN0IHRvIGNoZWNrIGZvciB0aGUgY2FzZSB3aGVuIHRoZSBzdHlsZSBpcyByZWNhbGN1bGF0
ZWQgYnV0IHRoZQorICAgICAgICBmaWx0ZXIgcHJvcGVydHkgaXMgbm90IGNoYW5nZWQuIEFsbCB0
aGUgb3RoZXIgY2FzZXMgZm9yIHRoZSBuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUK
KyAgICAgICAgY2xhc3Mgc2hvdWxkIGJlIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1yZWxvYWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXIt
cmVsb2FkLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHBvcnRzIHNwZWNpZmljIHRleHQgdHJh
Y2sgbWVudQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0
b20tZmlsdGVyLXJlbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJlbG9hZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3Vz
dG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTc5ZDEzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDc1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0gCisgICAgVGhpcyB0ZXN0cyB2ZXJpZmllcyB0aGF0IHdl
IGRvbid0IGFzc2VydCB3aGVuIHRoZSBzdHlsZSBpcyByZWNhbGN1bGF0ZWQgYnV0IHRoZSBmaWx0
ZXIgcHJvcGVydHkgZG9lc24ndCBjaGFuZ2UuCistLT4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU0N1c3RvbUZpbHRlckVu
YWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgICAgICAgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIEZvcmNlIGEgbGF5b3V0LgorICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICB2YXIgYm94ZXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCIuYm94Iik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGJveGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGJveGVzW2ldLmNsYXNzTGlzdC5h
ZGQoInRyaWdnZXItc3R5bGUtcmVjYWxjIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFN3aXRjaCB0aGUgcGFyZW50IHRvIGNvbXBvc2l0ZWQgbW9kZSwgc28gdGhhdCB3ZSBjYW4gdHJp
Z2dlciAKKyAgICAgICAgICAgIC8vIGEgcmVidWlsZCBvZiB0aGUgY29tcG9zaXRpbmcgbGF5ZXIg
dHJlZS4KKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2Via2l0VHJhbnNmb3JtID0g
InRyYW5zbGF0ZVooMHB4KSIKKworICAgICAgICAgICAgLy8gRm9yY2UgYSBsYXlvdXQuCisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsKKworICAgICAgICAgICAgLy8gSWYg
d2UgZ2V0IHRoaXMgZmFyIHdpdGggbm8gYXNzZXJ0LCB0aGUgdGVzdCBwYXNzZWQuCisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgd2luZG93LnRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxl
PgorICAgICAgICAuYm94IHsKKyAgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgICAg
IHdpZHRoOiA1MHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
ICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC52ZXJ0ZXhfc2hhZGVyCisgICAgICAgIHsKKyAgICAgICAgICAgIC13ZWJraXQtZmls
dGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvdmVydGV4LW9mZnNldC52cycpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC5mcmFnbWVudF9zaGFkZXIKKyAgICAgICAgeworICAgICAgICAgICAg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoJy4uL3Jlc291cmNlcy9jb2xvci1v
ZmZzZXQuZnMnKSBub3JtYWwgc291cmNlLWF0b3ApKTsKKyAgICAgICAgfQorCisgICAgICAgIC5i
b3RoX3NoYWRlcnMKKyAgICAgICAgeworICAgICAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3Rv
bSh1cmwoJy4uL3Jlc291cmNlcy92ZXJ0ZXgtb2Zmc2V0LnZzJykgbWl4KHVybCgnLi4vcmVzb3Vy
Y2VzL2NvbG9yLW9mZnNldC5mcycpIG5vcm1hbCBzb3VyY2UtYXRvcCkpOworICAgICAgICB9CisK
KyAgICAgICAgLnRyaWdnZXItc3R5bGUtcmVjYWxjIHsKKyAgICAgICAgICAgIC8qIE5vIGNoYW5n
ZSwgd2UganVzdCBuZWVkIGEgbmV3IHN0eWxlIHJlY2FsY3VsYXRpb24uICovCisgICAgICAgIH0K
KyAgICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgPCEt
LSAKKyAgICAgICAgWW91IHNob3VsZCBzZWUgdGhyZWUgZ3JlZW4gYm94ZXMuIExhc3QgdHdvIGJv
eGVzIGhhdmUgYSBkaWZmZXJlbnQgc2hhZGUgb2YgZ3JlZW4uIExhc3QgYm94IGlzIHNsaWdodGx5
IGJpZ2dlciBvbiB0aGUgbGVmdCBzaWRlLgorICAgICAgICBUaGUgdGVzdCBwYXNzZXMgaWYgdGhl
cmUgaXMgbm8gY3Jhc2ggb3IgYXNzZXJ0LgorICAgIC0tPgorCisgICAgPGRpdiBjbGFzcz0iYm94
IHZlcnRleF9zaGFkZXIiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCBib3RoX3NoYWRlcnMi
PjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCBmcmFnbWVudF9zaGFkZXIiPjwvZGl2PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRkNGY5OS4uZWJjMzBjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0wMy0yMCAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFj
aGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQgYSBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0gY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMjYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIHN0eWxlIGlzIHJlY2FsY3VsYXRlZCwgdGhlIG5l
dyBjb21wdXRlZCBSZW5kZXJTdHlsZSBpcyBzYXZlZCBhcyB0aGUgbV9zdHlsZSBvZiB0aGUKKyAg
ICAgICAgUmVuZGVyT2JqZWN0LCBldmVuIGlmIHRoZSBzdHlsZSB3YXMgbm90IGRpZmZlcmVudC4K
KworICAgICAgICBJbiB0aGUgY2FzZSBvZiBDdXN0b20gRmlsdGVycywgYSBuZXcgU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtIHdhcyBjcmVhdGVkIGF0IGFsbCB0aW1lcywgYnV0IHRoZQorICAgICAg
ICBhY3R1YWwgZXF1YWxpdHkgY2hlY2sgd2FzIGRvbmUgYnkgY29tcGFyaW5nIHRoZSBwYWlyIG9m
IGNhY2hlZCBzaGFkZXJzIGZyb20gaW5zaWRlIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
CisKKyAgICAgICAgQmVjYXVzZSBvZiB0aGF0IHRoZSBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2Vk
IHdhcyBub3QgY2FsbGVkIHdoZW4gdGhlIG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gd2Fz
IGNyZWF0ZWQsIHNvIGl0CisgICAgICAgIHdpbGwgZW5kIHVwIHN0aWxsIGtub3dpbmcgb25seSBh
Ym91dCB0aGUgcHJldmlvdXMgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLgorCisgICAgICAgIFRo
ZSBSZW5kZXJMYXllciBzZXRzIGl0c2VsZiBhcyBhIGNsaWVudCBvZiB0aGUgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLCBzbyB0aGF0IGl0IGNhbiByZXBhaW50IGl0c2VsZgorICAgICAgICB3aGVu
IHRoZSBwcm9ncmFtIGlzIGxvYWRlZCwgYnV0IGJlY2F1c2UgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hh
bmdlZCBpcyBub3QgY2FsbGVkLCBpdCB3aWxsIG5vdCBhZGQgaXRzZWxmIGFzIGEgY2xpZW50IG9m
IHRoZSBuZXcKKyAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLgorCisgICAgICAgIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB3YWl0cyB1bnRpbCB0aGUgZmlyc3QgY2xpZW50IHRvIGxv
YWQgdGhlIHByb2dyYW1zLCBzbyBpbiB0aGlzIGNhc2UgaXQgd2lsbCBqdXN0IHJlbWFpbiB1bmxv
YWRlZC4KKworICAgICAgICBUaGVyZSB3YXMgbm8gY3Jhc2gsIGJ1dCBqdXN0IGFuIGFzc2VydCBp
biBkZWJ1ZyBtb2RlLiBBbHNvLCBhcyBhIHZpc2libGUgc2lkZS1lZmZlY3Qgc29tZSBmcmFtZXMg
d2VyZSByZW5kZXJlZCB1c2luZyBibGFuayBzaGFkZXJzLCAKKyAgICAgICAgcmVzdWx0aW5nIGlu
IGEgcGFzcy10aHJvdWdoIGZpbHRlci4KKworICAgICAgICBUaGUgZml4IHdvdWxkIGJlIHRvIGFj
dHVhbGx5IG1ha2UgdGhlIFJlbmRlclN0eWxlOjpkaWZmIGRldGVjdCB0aGUgY2hhbmdlIG9mIHRo
ZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0KKyAgICAgICAgdXNpbmcgdGhlIHBvaW50ZXIgdmFs
dWUgYW5kIG5vdCB0aGUgdmFsdWVzLiBIb3dldmVyLCB0aGF0IHdpbGwgYWx3YXlzIGludmFsaWRh
dGUgdGhlICJmaXRsZXIiIHByb3BlcnR5IGJlY2F1c2UKKyAgICAgICAgb2YgdGhlIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSB0aGF0IGFsd2F5cyBnZXRzIGNyZWF0ZWQgZHVyaW5nIHRoZSByZWNh
bGN1bGF0aW9uIHRpbWUuCisKKyAgICAgICAgSSd2ZSBhZGRlZCBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZSB0byBjYWNoZSBhbGwgdGhlIGluc3RhbmNlcyBvZiB0aGUgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtcyB0aGF0IGEKKyAgICAgICAgU3R5bGVSZXNvbHZlciBhbGxvY2F0ZXMuIFRo
aXMgd2F5LCBuZXh0IHRpbWUgaXQgd2lsbCB0cnkgdG8gcmV1c2UgcHJldmlvdXNseSBhbGxvY2F0
ZWQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtcy4gCisgICAgICAgIFRoZSBrZXkgb2YgdGhlIGNh
Y2hlIGlzIHRoZSBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbywgdGhhdCBjb21iaW5lcyB0aGUgVVJM
cyB0byB0aGUgc2hhZGVycyBhbmQgYSBjb3VwbGUgb2Ygb3RoZXIgcHJvZ3JhbSBzZXR0aW5ncy4K
KworICAgICAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSBpcyBvd25lZCBieSB0aGUg
U3R5bGVSZXNvdmxlciBhbmQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtcyBhcmUgcmVzcG9uc2li
bGUgd2l0aAorICAgICAgICByZW1vdmluZyB0aGVtc2VsdmVzIGZyb20gdGhlIGNhY2hlIHdoZW4g
dGhlIGxhc3QgcmVmZXJlbmNlIGdvZXMgYXdheS4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtl
cyB0aGUgcHJldmlvdXMgInBsYXRmb3JtIGxldmVsIiBwcm9ncmFtIGNhY2hlIG9ic29sZXRlIGFu
ZCBJIHdpbGwgcmVtb3ZlIHRoYXQgaW4gYSBmdXR1cmUgcGF0Y2guCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4NDQKKworICAgICAgICBUZXN0OiBj
c3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLmh0bWwKKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1NoYWRlclZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9v
a3VwQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6IExvb2t1cCBhbnkgc2ltaWxhciBwcm9ncmFtcyBpbiB0
aGUgY2FjaGUuIEl0IHdpbGwgY3JlYXRlIGEgbmV3IHBlbmRpbmcgCisgICAgICAgIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSBpZiB0aGVyZSBpcyBubyBwcmUtY2FjaGVkIHZlcnNpb24gb2YgdGhl
IHByb2dyYW0uCisgICAgICAgIGlmIG5vIHByb2dyYW0gaXMgZm91bmQuIGxvYWRQZW5kaW5nU2hh
ZGVycyBpcyByZXNwb25zaWJsZSB3aXRoIGFkZGluZyB0aGUgcHJvZ3JhbSBpbiB0aGUgY2FjaGUg
aWYgaXQgaXMgYWN0dWFsbHkgZ29pbmcgdG8gYmUgdXNlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nU2hhZGVycyk6IEF0IHRoaXMgcG9pbnQgdGhlIHByb2dy
YW0gaXMgZmluYWwsIHNvIGl0J3Mgc2FmZSB0byBhZGQgaXQgdG8gdGhlIGNhY2hlLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0
aElubGluZVN5bnRheCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAg
KFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y29tcGxldGVVUkwpOiBG
YWN0b3JlZCBvdXQgdGhlIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIGNvbXBsZXRlIFVSTCBvZiB0
aGUgcmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dENTU1NoYWRlclZhbHVlOjpjYWNoZWRTaGFkZXIpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NT
aGFkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXRDU1NTaGFk
ZXJWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
b3BlcmF0b3I9PSk6IFJlbW92ZWQuIFByb2dyYW1zIHNob3VsZCBub3cgY29tcGFyZSBieSBwb2lu
dGVyLiBLZXB0IGl0IGFzCisgICAgICAgIHByaXZhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCB1
c2Ugb2YgaXQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJW
YWx1ZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW06On5TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0pOiBEZXN0cnVjdG9yIHJl
bW92ZXMgdGhlIHByb2dyYW0gZnJvbSB0aGUgY2FjaGUuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OnNldFZlcnRleFNoYWRlcik6
IEFkZGVkIGFuIGFzc2VydCB0byBjaGVjayB0aGF0IHRoZSBzaGFkZXIgaXMgbm90IGluIHRoZQor
ICAgICAgICBjYWNoZSB3aGlsZSB0aGUgbXV0YXRpb24gaGFwcGVucy4gT3RoZXJ3aXNlIHRoZSBj
YWNoZSBtaWdodCBoYXZlIHRoZSB3cm9uZyBrZXkuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW06OnNldEZyYWdtZW50U2hhZGVyKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmlzTG9hZGVkKTogQWRkZWQgbW9yZSBh
c3NlcnRzIHRvIGNhdGNoIGNhc2VzIHdoZW4gdGhlIHByb2dyYW0gaXMgdXNlZCB3aXRoIG5vIGNs
aWVudHMuCisgICAgICAgIChTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpoYXNQZW5kaW5nU2hhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmluQ2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRDYWNoZSk6IEZ1bmN0aW9u
IGNhbGxlZCB3aGVuIGEgcHJvZ3JhbSBpcyBhZGRlZCB0byAvIHJlbW92ZWQgZnJvbSB0aGUgY2Fj
aGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OnZlcnRleFNo
YWRlclVSTCk6IEFkZGVkIG1ldGhvZHMgdG8gc3RvcmUgdGhlIEtVUkwgdGhhdCB3ZSB1c2VkIGFz
IGtleXMgaW4gdGhlIGNhY2hlLgorICAgICAgICBUaGUgc2FtZSBLVVJMcyB3aWxsIGJlIHVzZWQg
dG8gbG9va3VwIGFuZCByZW1vdmUgdGhlIGZpbHRlciBhdCB0aGUgZW5kLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRWZXJ0ZXhTaGFkZXJVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpmcmFnbWVudFNoYWRlclVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OnNldEZyYWdt
ZW50U2hhZGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6OnBy
b2dyYW1DYWNoZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW1DYWNoZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6On5TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW1DYWNoZSk6IERlc3RydWN0b3IgcmVtb3ZlcyBpdHNlbGYgZnJvbSBhbGwgdGhlCisgICAgICAg
IHJlZmVyZW5jZWQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtcy4gVGhpcyBpcyB0byBhdm9pZCBp
c3N1ZXMgd2l0aCBkaWZmZXJlbnQgZGVzdHJ1Y3Rpb24gb3JkZXJzLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6Omxvb2t1cCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpyZW1vdmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEN1c3RvbUZpbHRlclByb2dyYW06Om9wZXJhdG9yPT06IFJlbW92ZWQuIFBy
b2dyYW1zIHNob3VsZCBub3cgY29tcGFyZSBieSBwb2ludGVyLgorCiAyMDEzLTAzLTIwICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFzc2VydGlvbiBpbiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKSBpbiBlZGl0aW5nIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA0ZWQ1YzQwLi43ZDQwYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTQ2NjksNyArNDY2OSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmggXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtQ2FjaGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlRGFzaGJvYXJkUmVnaW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggOTY3MjlhZi4uNzkyZjVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMjg2LDYgKzEy
ODYsOCBAQCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFn
ZS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmNwcCBcCisgICAgcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgXAorICAgIHJlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHls
ZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5
bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGli
bGVCb3hEYXRhLmNwcCBcCkBAIC0yNTg0LDYgKzI1ODYsNyBAQCBIRUFERVJTICs9IFwKICAgICBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRTaGFkZXIuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtQ2FjaGUuaCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxl
Qm94RGF0YS5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmggXAogICAg
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA0ZWY1ZGE3Li44ODVkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjYwLDYgKzI2NjAs
OSBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmgnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5jcHAnLAorICAg
ICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5j
cHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW1DYWNoZS5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N0eWxl
L1N0eWxlRmlsdGVyRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCBiODI2NWQ5Li5iNDIxMDZkIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDY5NzYsNiArNDY5NzYsMTggQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJl
bmRlcmluZ1xzdHlsZVxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0eWxl
XFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0eWxlXFN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZDA1ZGM1NS4uMDg0MDc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU3MSw2ICsxNTcxLDkgQEAKIAkJNTBENDA2MTIxNDdE
NDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA2MTAxNDdENDlERTAwRDMw
QkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oICovOyB9OwogCQk1MEQ4OENCNTE1
QkRGREFBMDAxODA5RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBEODhDQjMxNUJERkRBQTAwMTgw
OUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcCAqLzsgfTsKIAkJNTBEODhDQjYxNUJE
RkRBQTAwMTgwOUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ4OENCNDE1QkRGREFBMDAxODA5RjQg
LyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCAqLzsgfTsKKwkJNTBFMThDRDgxNkY5Mjg1ODAw
QzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEUxOENENTE2RjkyODU4MDBDNjU0ODYgLyog
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCAqLzsgfTsKKwkJNTBFMThDRDkxNkY5Mjg1ODAw
QzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRTE4Q0Q2MTZGOTI4NTgwMEM2NTQ4
NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAgKi87IH07CisJCTUwRTE4Q0RB
MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBFMThDRDcxNkY5Mjg1
ODAwQzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmggKi87IH07CiAJCTUx
MDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzMxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtRXJyb3JCYXNlLmNwcCAqLzsgfTsKQEAgLTkwNDksNiArOTA1Miw5IEBACiAJCTUwRDQw
NjEwMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
Lmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MEQ4OENCMzE1QkRGREFBMDAxODA5RjQgLyogQ3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwRDg4Q0I0
MTVCREZEQUEwMDE4MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oOyBwYXRoID0g
ZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MEUxOENENTE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5jcHA7IHBhdGggPSBzdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MEUxOENENjE2RjkyODU4MDBDNjU0
ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwOyBw
YXRoID0gc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MEUxOENENzE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaDsgcGF0aCA9IHN0eWxlL1N0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4
NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJv
ckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMzk5LDYg
KzIxNDA1LDkgQEAKIAkJCQk5MzkzRTYwMzE1MUE5QTE4MDAwNjZGMDYgLyogU3R5bGVDYWNoZWRJ
bWFnZVNldC5oICovLAogCQkJCTUwMzhCRTJEMTQ3MkFEMjMwMDk1RTBEMSAvKiBTdHlsZUNhY2hl
ZFNoYWRlci5jcHAgKi8sCiAJCQkJNTAzOEJFMkUxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxlQ2Fj
aGVkU2hhZGVyLmggKi8sCisJCQkJNTBFMThDRDYxNkY5Mjg1ODAwQzY1NDg2IC8qIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCAqLywKKwkJCQk1MEUxOENENzE2RjkyODU4MDBDNjU0
ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCAqLywKKwkJCQk1MEUxOENENTE2
RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCAqLywKIAkJCQk1
MDNEMENBRDE0QjVCMEJBMDBGMzJGNTcgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmggKi8s
CiAJCQkJQkM1RUI2N0UwRTgxRDRBNzAwQjI1OTY1IC8qIFN0eWxlRGFzaGJvYXJkUmVnaW9uLmgg
Ki8sCiAJCQkJQkM1RUI4QjYwRTgyMDFCRDAwQjI1OTY1IC8qIFN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YS5jcHAgKi8sCkBAIC0yNjc3Nyw2ICsyNjc4Niw3IEBACiAJCQkJRkQ1MzczNTMx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQUVEMjAz
MTE2RjI0NDQ4MDA3MEVDMEYgLyogUGFnZUNvbnNvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
NUJDNDI3MTZGODgyRUUwMDcwNDhEMCAvKiBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MEUxOENEQTE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjk5ODUsNiArMjk5OTUs
OCBAQAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Q
b2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQ
YWdlQ29uc29sZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MEUxOENEODE2RjkyODU4MDBDNjU0
ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUw
RTE4Q0Q5MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA0
ZGUzNzYyLi5hYzNmOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0x
NjQsOSArMTY0LDExIEBACiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyUGFyYW1ldGVyLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKICNp
bmNsdWRlICJDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCIKICNpbmNsdWRlICJTdHls
ZUNhY2hlZFNoYWRlci5oIgogI2luY2x1ZGUgIlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgor
I2luY2x1ZGUgIlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmgiCiAjaW5jbHVkZSAiU3R5
bGVQZW5kaW5nU2hhZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGFkZXIuaCIKICNpbmNsdWRlICJX
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgiCkBAIC0zOTMzLDYgKzM5MzUsMTMgQEAgU3R5bGVT
aGFkZXIqIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhZGVyKENTU1ZhbHVlKiB2YWx1ZSkKICAgICBy
ZXR1cm4gMDsKIH0KIAorc3RhdGljIFdlYktpdENTU1NoYWRlclZhbHVlKiBjc3NTaGFkZXJWYWx1
ZShDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc1dlYktpdENTU1NoYWRlclZh
bHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRDU1NTaGFkZXJWYWx1ZSo+
KHZhbHVlKTsKKyAgICByZXR1cm4gMDsKK30KKwogU3R5bGVTaGFkZXIqIFN0eWxlUmVzb2x2ZXI6
OmNhY2hlZE9yUGVuZGluZ1N0eWxlU2hhZGVyRnJvbVZhbHVlKFdlYktpdENTU1NoYWRlclZhbHVl
KiB2YWx1ZSkKIHsKICAgICBTdHlsZVNoYWRlciogc2hhZGVyID0gdmFsdWUtPmNhY2hlZE9yUGVu
ZGluZ1NoYWRlcigpOwpAQCAtMzk0MSw2ICszOTUwLDIzIEBAIFN0eWxlU2hhZGVyKiBTdHlsZVJl
c29sdmVyOjpjYWNoZWRPclBlbmRpbmdTdHlsZVNoYWRlckZyb21WYWx1ZShXZWJLaXRDU1NTaGFk
ZXJWCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAorUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9n
cmFtPiBTdHlsZVJlc29sdmVyOjpsb29rdXBDdXN0b21GaWx0ZXJQcm9ncmFtKFdlYktpdENTU1No
YWRlclZhbHVlKiB2ZXJ0ZXhTaGFkZXIsIFdlYktpdENTU1NoYWRlclZhbHVlKiBmcmFnbWVudFNo
YWRlciwgCisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1
c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MsIEN1c3RvbUZpbHRlck1l
c2hUeXBlIG1lc2hUeXBlKQoreworICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNv
dXJjZUxvYWRlciA9IG1fc3RhdGUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsK
KyAgICBLVVJMIHZlcnRleFNoYWRlclVSTCA9IHZlcnRleFNoYWRlciA/IHZlcnRleFNoYWRlci0+
Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogS1VSTCgpOworICAgIEtVUkwgZnJh
Z21lbnRTaGFkZXJVUkwgPSBmcmFnbWVudFNoYWRlciA/IGZyYWdtZW50U2hhZGVyLT5jb21wbGV0
ZVVSTChjYWNoZWRSZXNvdXJjZUxvYWRlcikgOiBLVVJMKCk7CisgICAgUmVmUHRyPFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbTsKKyAgICBpZiAobV9jdXN0b21GaWx0ZXJQcm9ncmFt
Q2FjaGUpCisgICAgICAgIHByb2dyYW0gPSBtX2N1c3RvbUZpbHRlclByb2dyYW1DYWNoZS0+bG9v
a3VwKEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclVSTCwgZnJhZ21lbnRTaGFk
ZXJVUkwsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKKyAgICBpZiAoIXBy
b2dyYW0pIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSB0aGF0IHdpbGwgYmUgcmVzb2x2ZWQgZHVyaW5nIHRoZSBsb2FkUGVuZGluZ1NoYWRlcnMgYW5k
IGFkZGVkIHRvIHRoZSBjYWNoZS4KKyAgICAgICAgcHJvZ3JhbSA9IFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlclVSTCwgdmVydGV4U2hhZGVyID8gc3R5bGVTaGFk
ZXIodmVydGV4U2hhZGVyKSA6IDAsIAorICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJVUkwsIGZy
YWdtZW50U2hhZGVyID8gc3R5bGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpIDogMCwgcHJvZ3JhbVR5
cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSk7CisgICAgfQorICAgIHJldHVybiBwcm9ncmFtLnJl
bGVhc2UoKTsKK30KKwogdm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NoYWRlcnMoKQog
ewogICAgIGlmICghbV9zdGF0ZS5zdHlsZSgpLT5oYXNGaWx0ZXIoKSB8fCAhbV9zdGF0ZS5oYXNQ
ZW5kaW5nU2hhZGVycygpKQpAQCAtMzk1NSwxMyArMzk4MSwyNiBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmxvYWRQZW5kaW5nU2hhZGVycygpCiAgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRp
b24qIGN1c3RvbUZpbHRlciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZp
bHRlck9wZXJhdGlvbi5nZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoY3VzdG9tRmlsdGVyLT5w
cm9ncmFtKCkpOwogICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFt
ID0gc3RhdGljX2Nhc3Q8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKj4oY3VzdG9tRmlsdGVyLT5w
cm9ncmFtKCkpOwotICAgICAgICAgICAgaWYgKHByb2dyYW0tPnZlcnRleFNoYWRlcigpICYmIHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLT5pc1BlbmRpbmdTaGFkZXIoKSkgewotICAgICAgICAgICAg
ICAgIFdlYktpdENTU1NoYWRlclZhbHVlKiBzaGFkZXJWYWx1ZSA9IHN0YXRpY19jYXN0PFN0eWxl
UGVuZGluZ1NoYWRlcio+KHByb2dyYW0tPnZlcnRleFNoYWRlcigpKS0+Y3NzU2hhZGVyVmFsdWUo
KTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtLT5zZXRWZXJ0ZXhTaGFkZXIoc2hhZGVyVmFsdWUt
PmNhY2hlZFNoYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkgJiYgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS0+aXNQZW5kaW5nU2hhZGVyKCkpIHsKLSAgICAgICAgICAgICAgICBXZWJLaXRD
U1NTaGFkZXJWYWx1ZSogc2hhZGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxTdHlsZVBlbmRpbmdTaGFk
ZXIqPihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpKS0+Y3NzU2hhZGVyVmFsdWUoKTsKLSAgICAg
ICAgICAgICAgICBwcm9ncmFtLT5zZXRGcmFnbWVudFNoYWRlcihzaGFkZXJWYWx1ZS0+Y2FjaGVk
U2hhZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKSk7CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
dGhlIFN0eWxlUGVuZGluZ1NoYWRlcnMgY291bGQgYmUgYWxyZWFkeSByZXNvbHZlZCB0byBTdHls
ZUNhY2hlZFNoYWRlcnMuIFRoYXQncyBiZWNhdXNlIHRoZSBydWxlIHdhcyBtYXRjaGVkIGJlZm9y
ZS4KKyAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0g
dGhhdCB3YXMgaW5pdGlhbGx5IGNyZWF0ZWQgY291bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0
aGUgY2FjaGUgaW4gdGhlIG1lYW53aGlsZSwKKyAgICAgICAgICAgIC8vIG1lYW5pbmcgdGhhdCB3
ZSBnZXQgYSBuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGhlcmUgdGhhdCBpcyBub3QgeWV0
IGluIHRoZSBjYWNoZSwgYnV0IGFscmVhZHkgaGFzIGxvYWRlZCBTdHlsZVNoYWRlcnMuCisgICAg
ICAgICAgICBpZiAoIXByb2dyYW0tPmhhc1BlbmRpbmdTaGFkZXJzKCkgJiYgcHJvZ3JhbS0+aW5D
YWNoZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFtX2N1
c3RvbUZpbHRlclByb2dyYW1DYWNoZSkKKyAgICAgICAgICAgICAgICBtX2N1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZSA9IGFkb3B0UHRyKG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgp
KTsKKyAgICAgICAgICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IHN0eWxlUHJv
Z3JhbSA9IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLT5sb29rdXAocHJvZ3JhbSk7CisgICAg
ICAgICAgICBpZiAoc3R5bGVQcm9ncmFtLmdldCgpKQorICAgICAgICAgICAgICAgIGN1c3RvbUZp
bHRlci0+c2V0UHJvZ3JhbShzdHlsZVByb2dyYW0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKSAmJiBwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS0+aXNQZW5kaW5nU2hhZGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHNoYWRlclZhbHVlID0gc3RhdGljX2Nhc3Q8U3R5
bGVQZW5kaW5nU2hhZGVyKj4ocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkpLT5jc3NTaGFkZXJWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5zZXRWZXJ0ZXhTaGFkZXIoc2hhZGVy
VmFsdWUtPmNhY2hlZFNoYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKSAmJiBw
cm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLT5pc1BlbmRpbmdTaGFkZXIoKSkgeworICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRDU1NTaGFkZXJWYWx1ZSogc2hhZGVyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxTdHlsZVBlbmRpbmdTaGFkZXIqPihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpKS0+Y3NzU2hh
ZGVyVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+c2V0RnJhZ21lbnRTaGFk
ZXIoc2hhZGVyVmFsdWUtPmNhY2hlZFNoYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZS0+YWRkKHByb2dyYW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDEw
NSwyMCArNDE0NCwxOSBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVS
ZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgIHVuc2lnbmVkIHNo
YWRlcnNMaXN0TGVuZ3RoID0gc2hhZGVyc0xpc3QtPmxlbmd0aCgpOwogICAgIEFTU0VSVChzaGFk
ZXJzTGlzdExlbmd0aCk7CiAKLSAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciA9
IHN0eWxlU2hhZGVyKHNoYWRlcnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKLSAg
ICBSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyOworICAgIFdlYktpdENTU1NoYWRl
clZhbHVlKiB2ZXJ0ZXhTaGFkZXIgPSBjc3NTaGFkZXJWYWx1ZShzaGFkZXJzTGlzdC0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygwKSk7CisgICAgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIGZyYWdtZW50
U2hhZGVyID0gMDsKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSA9IFBS
T0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFOwogICAgIEN1c3RvbUZpbHRlclByb2dy
YW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsKIAogICAgIGlmIChzaGFkZXJzTGlzdExlbmd0aCA+
IDEpIHsKICAgICAgICAgQ1NTVmFsdWUqIGZyYWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbiA9IHNo
YWRlcnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpOwotCiAgICAgICAgIGlmIChmcmFn
bWVudFNoYWRlck9yTWl4RnVuY3Rpb24tPmlzV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSgpKSB7
CiAgICAgICAgICAgICBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlKiBtaXhGdW5jdGlvbiA9IHN0
YXRpY19jYXN0PFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUqPihmcmFnbWVudFNoYWRlck9yTWl4
RnVuY3Rpb24pOwogICAgICAgICAgICAgQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaXRlcmF0b3IobWl4
RnVuY3Rpb24pOwogCiAgICAgICAgICAgICBBU1NFUlQobWl4RnVuY3Rpb24tPmxlbmd0aCgpKTsK
LSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gc3R5bGVTaGFkZXIoaXRlcmF0b3IudmFsdWUo
KSk7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNzc1NoYWRlclZhbHVlKGl0ZXJhdG9y
LnZhbHVlKCkpOwogICAgICAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgpOwogCiAgICAgICAgICAg
ICBBU1NFUlQobWl4RnVuY3Rpb24tPmxlbmd0aCgpIDw9IDMpOwpAQCAtNDEzNCw5ICs0MTcyLDEy
IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBTdHlsZVJlc29sdmVyOjpjcmVh
dGVDdXN0b21GaWx0ZXJPcGVyYXRpb25XaXRoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwcm9ncmFtVHlwZSA9IFBST0dSQU1fVFlQRV9OT19FTEVNRU5UX1RF
WFRVUkU7Ci0gICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IHN0eWxlU2hhZGVyKGZyYWdtZW50
U2hhZGVyT3JNaXhGdW5jdGlvbik7CisgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGNzc1No
YWRlclZhbHVlKGZyYWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9
CisKKyAgICBpZiAoIXZlcnRleFNoYWRlciAmJiAhZnJhZ21lbnRTaGFkZXIpCisgICAgICAgIHJl
dHVybiAwOwogICAgIAogICAgIHVuc2lnbmVkIG1lc2hSb3dzID0gMTsKICAgICB1bnNpZ25lZCBt
ZXNoQ29sdW1ucyA9IDE7CkBAIC00MTkyLDggKzQyMzMsOCBAQCBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
V2l0aAogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVyTGlzdDsKICAgICBp
ZiAocGFyYW1ldGVyc1ZhbHVlICYmICFwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QocGFy
YW1ldGVyc1ZhbHVlLCBwYXJhbWV0ZXJMaXN0KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IFN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlci5yZWxlYXNlKCksIGZyYWdtZW50U2hh
ZGVyLnJlbGVhc2UoKSwgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSk7CisKKyAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGxvb2t1cEN1c3RvbUZpbHRl
clByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgcHJvZ3JhbVR5cGUsIG1peFNl
dHRpbmdzLCBtZXNoVHlwZSk7CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKHByb2dyYW0ucmVsZWFzZSgpLCBwYXJhbWV0ZXJMaXN0LCBtZXNoUm93cywgbWVzaENvbHVt
bnMsIG1lc2hUeXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNjM0
ZTZlNC4uMTBhNDIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC00Myw2ICs0
Myw5IEBACiAjaWYgRU5BQkxFKENTU19GSUxURVJTKSAmJiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUg
IldlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCIKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJDb25zdGFudHMuaCIKKyNlbmRpZgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC03Miw2ICs3NSw4IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFz
cyBDdXN0b21GaWx0ZXJPcGVyYXRpb247CiBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7CiBj
bGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0OworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTsKK3N0cnVjdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3M7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTg3LDYgKzkyLDcgQEAgY2xhc3Mg
UnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWND
U1NSdWxlTGlzdDsKK2NsYXNzIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOwogY2xhc3Mg
U3R5bGVCdWlsZGVyOwogY2xhc3MgU3R5bGVTY29wZVJlc29sdmVyOwogY2xhc3MgU3R5bGVJbWFn
ZTsKQEAgLTMxNyw2ICszMjMsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0
ZXJPcGVyYXRpb24+IGNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGhJbmxpbmVTeW50YXgo
V2ViS2l0Q1NTRmlsdGVyVmFsdWUqKTsKICAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJh
dGlvbj4gY3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFdlYktpdENTU0ZpbHRlclZhbHVlKik7
CiAgICAgdm9pZCBsb2FkUGVuZGluZ1NoYWRlcnMoKTsKKyAgICBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclByb2dyYW0+IGxvb2t1cEN1c3RvbUZpbHRlclByb2dyYW0oV2ViS2l0Q1NTU2hhZGVyVmFs
dWUqIHZlcnRleFNoYWRlciwgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIGZyYWdtZW50U2hhZGVyLCAK
KyAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dy
YW1NaXhTZXR0aW5ncyYsIEN1c3RvbUZpbHRlck1lc2hUeXBlKTsKICNlbmRpZgogI2lmIEVOQUJM
RShTVkcpCiAgICAgdm9pZCBsb2FkUGVuZGluZ1NWR0RvY3VtZW50cygpOwpAQCAtNjMxLDYgKzYz
OSwxMCBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUgbV9zdGF0ZTsKIAorI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKKyAgICBPd25QdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU+IG1fY3Vz
dG9tRmlsdGVyUHJvZ3JhbUNhY2hlOworI2VuZGlmCisKICAgICBmcmllbmQgY2xhc3MgU3R5bGVC
dWlsZGVyOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hlZFByb3BlcnRp
ZXMmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYpOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKaW5kZXggZmIwYjFi
MS4uMmRmMDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hh
ZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5kaW5nU2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpAQCAtNTQsNiArNTUsMTEgQEAgV2ViS2l0Q1NTU2hh
ZGVyVmFsdWU6On5XZWJLaXRDU1NTaGFkZXJWYWx1ZSgpCiB7CiB9CiAKK0tVUkwgV2ViS2l0Q1NT
U2hhZGVyVmFsdWU6OmNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwp
OworfQorCiBTdHlsZUNhY2hlZFNoYWRlciogV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNo
YWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKQogewogICAgIEFTU0VSVChsb2FkZXIp
OwpAQCAtNjEsNyArNjcsNyBAQCBTdHlsZUNhY2hlZFNoYWRlciogV2ViS2l0Q1NTU2hhZGVyVmFs
dWU6OmNhY2hlZFNoYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZAogICAgIGlmICghbV9h
Y2Nlc3NlZFNoYWRlcikgewogICAgICAgICBtX2FjY2Vzc2VkU2hhZGVyID0gdHJ1ZTsKIAotICAg
ICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCkpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGNvbXBsZXRlVVJMKGxvYWRlcikpKTsK
ICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycygpLmNzcyk7CiAgICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFk
ZXI+IGNhY2hlZFNoYWRlciA9IGxvYWRlci0+cmVxdWVzdFNoYWRlcihyZXF1ZXN0KSkKICAgICAg
ICAgICAgIG1fc2hhZGVyID0gU3R5bGVDYWNoZWRTaGFkZXI6OmNyZWF0ZShjYWNoZWRTaGFkZXIu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCA0
YTk4MjVlLi4wMjliNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFs
dWUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIEtVUkw7CiBjbGFzcyBTdHlsZUNhY2hlZFNoYWRlcjsK
IGNsYXNzIFN0eWxlU2hhZGVyOwogCkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgdm9pZCBz
ZXRGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpIHsgbV9mb3JtYXQgPSBmb3JtYXQ7IH0KIAor
ICAgIEtVUkwgY29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICAgICBT
dHlsZUNhY2hlZFNoYWRlciogY2FjaGVkU2hhZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAg
ICAgU3R5bGVTaGFkZXIqIGNhY2hlZE9yUGVuZGluZ1NoYWRlcigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggOTI1MmY0Ny4uY2RlMzU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJP
cGVyYXRpb24qCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIAogICAgIGNvbnN0IEN1c3RvbUZp
bHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uKj4oZnJvbSk7Ci0gICAgaWYgKCptX3Byb2dyYW0uZ2V0KCkgIT0gKmZyb21PcC0+bV9w
cm9ncmFtLmdldCgpCisgICAgaWYgKG1fcHJvZ3JhbS5nZXQoKSAhPSBmcm9tT3AtPm1fcHJvZ3Jh
bS5nZXQoKQogICAgICAgICB8fCBtX21lc2hSb3dzICE9IGZyb21PcC0+bV9tZXNoUm93cwogICAg
ICAgICB8fCBtX21lc2hDb2x1bW5zICE9IGZyb21PcC0+bV9tZXNoQ29sdW1ucwogICAgICAgICB8
fCBtX21lc2hUeXBlICE9IGZyb21PcC0+bV9tZXNoVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oCmluZGV4IDBmOTJiZDkuLjY4MWM2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogb3RoZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAgIHJl
dHVybiAqbV9wcm9ncmFtLmdldCgpID09ICpvdGhlci0+bV9wcm9ncmFtLmdldCgpCisgICAgICAg
IHJldHVybiBtX3Byb2dyYW0uZ2V0KCkgPT0gb3RoZXItPm1fcHJvZ3JhbS5nZXQoKQogICAgICAg
ICAgICAgJiYgbV9tZXNoUm93cyA9PSBvdGhlci0+bV9tZXNoUm93cwogICAgICAgICAgICAgJiYg
bV9tZXNoQ29sdW1ucyA9PSBvdGhlci0+bV9tZXNoQ29sdW1ucwogICAgICAgICAgICAgJiYgbV9t
ZXNoVHlwZSA9PSBvdGhlci0+bV9tZXNoVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5j
cHAKaW5kZXggMmE4ZmNlMC4uZTA2YmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0u
Y3BwCkBAIC04NiwxMiArODYsNSBAQCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0
ZXJQcm9ncmFtOjpwcm9ncmFtSW5mbygpIGNvbnN0CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0cmluZygpLCBt
X3Byb2dyYW1UeXBlLCBtX21peFNldHRpbmdzLCBtX21lc2hUeXBlKTsKIH0KIAotYm9vbCBDdXN0
b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8p
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJvZ3JhbVR5cGUgPT0gby5tX3Byb2dyYW1UeXBlCi0g
ICAgICAgICYmIChtX3Byb2dyYW1UeXBlICE9IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9U
RVhUVVJFIHx8IG1fbWl4U2V0dGluZ3MgPT0gby5tX21peFNldHRpbmdzKQotICAgICAgICAmJiBt
X21lc2hUeXBlID09IG8ubV9tZXNoVHlwZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
I2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgK
aW5kZXggYjc1NWJiNy4uMTU0NTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAg
LTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
cyBtaXhTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fbWl4U2V0dGluZ3M7IH0KICAgICBDdXN0
b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFR5cGU7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0m
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYg
bykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogcHJvdGVjdGVkOgogICAgIC8vIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBjYW4gbm90aWZ5IHRoZSBjbGllbnRzIHRoYXQgdGhlIGNh
Y2hlZCByZXNvdXJjZXMgYXJlCiAgICAgLy8gbG9hZGVkIGFuZCBpdCBpcyByZWFkeSB0byBjcmVh
dGUgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtIG9iamVjdHMuCkBAIC03Nyw2ICs3NSwxMSBA
QCBwcm90ZWN0ZWQ6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFt
VHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiwgQ3VzdG9tRmlsdGVy
TWVzaFR5cGUpOwogCiBwcml2YXRlOgorICAgIC8vIEN1c3RvbUZpbHRlclByb2dyYW1zIGFyZSB1
bmlxdWUgY29tYmluYXRpb25zIG9mIHNoYWRlcnMgYW5kIGNhbiBiZSAKKyAgICAvLyBjb21wYXJl
ZCB1c2luZyBqdXN0IHRoZSBwb2ludGVyIHZhbHVlIGluc3RlYWQuCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYpIGNvbnN0OworCiAgICAgdHlwZWRlZiBIYXNo
Q291bnRlZFNldDxDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Kj4gQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUNsaWVudExpc3Q7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudExpc3QgbV9jbGllbnRz
OwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIG1fcHJvZ3JhbVR5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRDdXN0b21GaWx0ZXJQcm9ncmFt
LmgKaW5kZXggNmE0OWIxYi4uN2Y0ZjE1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEN1c3RvbUZpbHRl
clByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRDdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTQxLDE3ICs0
MSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IE9WRVJSSURFCi0gICAgewotICAgICAgICAv
LyBXZSBkb24ndCB1c2UgdGhlICE9IG9wZXJhdG9yIGJlY2F1c2UgdGhhdCB3b3VsZCByZWN1cnNp
dmVseSBjYWxsIHRoaXMgbWV0aG9kLgotICAgICAgICBpZiAoIUN1c3RvbUZpbHRlclByb2dyYW06
Om9wZXJhdG9yPT0obykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgLy8g
VGhlIGZvbGxvd2luZyBjYXN0IGlzIHVnbHksIGJ1dCBDb29yZGluYXRlZEN1c3RvbUZpbHRlclBy
b2dyYW0gaXMgdGhlIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBvZiBDdXN0b21GaWx0ZXJQcm9ncmFt
IG9uIFVJIFByb2Nlc3MuCi0gICAgICAgIGNvbnN0IENvb3JkaW5hdGVkQ3VzdG9tRmlsdGVyUHJv
Z3JhbSogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDb29yZGluYXRlZEN1c3RvbUZpbHRlclBy
b2dyYW0qPigmbyk7Ci0gICAgICAgIHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZyA9PSBvdGhl
ci0+dmVydGV4U2hhZGVyU3RyaW5nKCkgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBvdGhl
ci0+ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKLSAgICB9Ci0KIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3ZlcnRleFNoYWRlclN0cmluZzsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGZyYWdtZW50U2hhZGVy
U3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0cmluZzsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wYmQ3MWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgi
CisKKyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKworU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjp+U3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtKCkKK3sKKyAgICBpZiAobV9jYWNoZSkKKyAgICAgICAgbV9jYWNoZS0+cmVt
b3ZlKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQ1NTX1NIQURFUlMpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCBhZTY4ZDk1Li4yNmFjMDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJD
dXN0b21GaWx0ZXJQcm9ncmFtLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlN0eWxl
U2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIApAQCAtNDIsMTggKzQz
LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ1NTIFNoYWRlcnMKIAorY2xhc3MgU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU7CisKIGNsYXNzIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8
U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21l
bnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNo
VHlwZSBtZXNoVHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0+IGNyZWF0ZShLVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRl
cj4gdmVydGV4U2hhZGVyLCAKKyAgICAgICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1Jl
ZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBl
IHByb2dyYW1UeXBlLAorICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGlu
Z3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRl
eFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5
cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0odmVydGV4U2hhZGVyVVJMLCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyVVJMLCBmcmFn
bWVudFNoYWRlciwgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSkpOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIHNldFZlcnRleFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBz
aGFkZXIpIHsgbV92ZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7IH0KKyAgICB2b2lkIHNldFZlcnRleFNo
YWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpCisgICAgeworICAgICAgICAvLyBU
aGUgc2hhZGVyIGlzIGltbXV0YWJsZSB3aGlsZSBpbiB0aGUgY2FjaGUuCisgICAgICAgIEFTU0VS
VCghbV9jYWNoZSk7CisgICAgICAgIG1fdmVydGV4U2hhZGVyID0gc2hhZGVyOyAKKyAgICB9CiAg
ICAgU3R5bGVTaGFkZXIqIHZlcnRleFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hh
ZGVyLmdldCgpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRGcmFnbWVudFNoYWRlcihQYXNzUmVmUHRy
PFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV9mcmFnbWVudFNoYWRlciA9IHNoYWRlcjsgfQorICAg
IHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gc2hhZGVyKQor
ICAgIHsKKyAgICAgICAgLy8gVGhlIHNoYWRlciBpcyBpbW11dGFibGUgd2hpbGUgaW4gdGhlIGNh
Y2hlLgorICAgICAgICBBU1NFUlQoIW1fY2FjaGUpOworICAgICAgICBtX2ZyYWdtZW50U2hhZGVy
ID0gc2hhZGVyOyAKKyAgICB9CiAgICAgU3R5bGVTaGFkZXIqIGZyYWdtZW50U2hhZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlci5nZXQoKTsgfQogICAgIAogICAgIHZpcnR1YWwg
U3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0CkBAIC03Miw2ICs4Nyw5IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIC8vIERvIG5vdCB1c2UgdGhlIENhY2hlZFJlc291cmNlOmlzTG9h
ZGVkIG1ldGhvZCBoZXJlLCBiZWNhdXNlIGl0IGFjdHVhbGx5IG1lYW5zICFpc0xvYWRpbmcoKSwK
ICAgICAgICAgLy8gc28gbWlzc2luZyBhbmQgY2FuY2VsZWQgcmVzb3VyY2VzIHdpbGwgaGF2ZSBp
c0xvYWRlZCBzZXQgdG8gdHJ1ZSwgZXZlbiBpZiB0aGV5IGFyZSBub3QgbG9hZGVkIHlldC4KKyAg
ICAgICAgQVNTRVJUKCFtX3ZlcnRleFNoYWRlciB8fCBtX3ZlcnRleFNoYWRlci0+aXNDYWNoZWRT
aGFkZXIoKSk7CisgICAgICAgIEFTU0VSVCghbV9mcmFnbWVudFNoYWRlciB8fCBtX2ZyYWdtZW50
U2hhZGVyLT5pc0NhY2hlZFNoYWRlcigpKTsKKyAgICAgICAgQVNTRVJUKG1fY2FjaGVkVmVydGV4
U2hhZGVyLmdldCgpIHx8IG1fY2FjaGVkRnJhZ21lbnRTaGFkZXIuZ2V0KCkpOwogICAgICAgICBy
ZXR1cm4gKCFtX2NhY2hlZFZlcnRleFNoYWRlci5nZXQoKSB8fCBtX2lzVmVydGV4U2hhZGVyTG9h
ZGVkKQogICAgICAgICAgICAgJiYgKCFtX2NhY2hlZEZyYWdtZW50U2hhZGVyLmdldCgpIHx8IG1f
aXNGcmFnbWVudFNoYWRlckxvYWRlZCk7CiAgICAgfQpAQCAtMTE0LDM2ICsxMzIsNDkgQEAgcHVi
bGljOgogICAgICAgICBpZiAoaXNMb2FkZWQoKSkKICAgICAgICAgICAgIG5vdGlmeUNsaWVudHMo
KTsKICAgICB9Ci0gICAgCi0gICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRWZXJ0ZXhTaGFkZXIoKSBj
b25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlciA/IG1fdmVydGV4U2hhZGVyLT5jYWNoZWRTaGFk
ZXIoKSA6IDA7IH0KLSAgICBDYWNoZWRTaGFkZXIqIGNhY2hlZEZyYWdtZW50U2hhZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlciA/IG1fZnJhZ21lbnRTaGFkZXItPmNhY2hlZFNo
YWRlcigpIDogMDsgfQotICAgIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1
c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IAotICAgIHsKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
dXNlIHRoZSAhPSBvcGVyYXRvciBiZWNhdXNlIHRoYXQgd291bGQgcmVjdXJzaXZlbHkgY2FsbCB0
aGlzIG1ldGhvZC4KLSAgICAgICAgaWYgKCFDdXN0b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09
KG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIFRoZSBmb2xsb3dp
bmcgY2FzdCBpcyB1Z2x5LCBidXQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5n
bGUgaW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KLSAgICAgICAgY29uc3Qg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbSo+KCZvKTsKLSAgICAgICAgcmV0dXJuIGNhY2hlZFZlcnRleFNo
YWRlcigpID09IG90aGVyLT5jYWNoZWRWZXJ0ZXhTaGFkZXIoKSAmJiBjYWNoZWRGcmFnbWVudFNo
YWRlcigpID09IG90aGVyLT5jYWNoZWRGcmFnbWVudFNoYWRlcigpOworICAgIGJvb2wgaGFzUGVu
ZGluZ1NoYWRlcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX3ZlcnRleFNoYWRl
ciAmJiBtX3ZlcnRleFNoYWRlci0+aXNQZW5kaW5nU2hhZGVyKCkpIAorICAgICAgICAgICAgfHwg
KG1fZnJhZ21lbnRTaGFkZXIgJiYgbV9mcmFnbWVudFNoYWRlci0+aXNQZW5kaW5nU2hhZGVyKCkp
OwogICAgIH0KIAorICAgIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlIGlzIHJlc3Bv
bnNpYmxlIHdpdGggdXBkYXRpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGUgY2FjaGUuCisgICAgdm9p
ZCBzZXRDYWNoZShTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSogY2FjaGUpIHsgbV9jYWNo
ZSA9IGNhY2hlOyB9CisgICAgYm9vbCBpbkNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZTsg
fQorICAgIAorICAgIEtVUkwgdmVydGV4U2hhZGVyVVJMKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0
ZXhTaGFkZXJVUkw7IH0KKyAgICBLVVJMIGZyYWdtZW50U2hhZGVyVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFnbWVudFNoYWRlclVSTDsgfQorCiBwcml2YXRlOgotICAgIFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbShQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQ
dHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBw
cm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0
aW5ncywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5cGUpCisgICAgU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtKEtVUkwgdmVydGV4U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2
ZXJ0ZXhTaGFkZXIsIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFk
ZXI+IGZyYWdtZW50U2hhZGVyLCAKKyAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJv
Z3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGlu
Z3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQogICAgICAgICA6IEN1c3RvbUZpbHRl
clByb2dyYW0ocHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSkKICAgICAgICAgLCBt
X3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCiAgICAgICAgICwgbV9mcmFnbWVudFNoYWRlcihm
cmFnbWVudFNoYWRlcikKKyAgICAgICAgLCBtX3ZlcnRleFNoYWRlclVSTCh2ZXJ0ZXhTaGFkZXJV
UkwpCisgICAgICAgICwgbV9mcmFnbWVudFNoYWRlclVSTChmcmFnbWVudFNoYWRlclVSTCkKKyAg
ICAgICAgLCBtX2NhY2hlKDApCiAgICAgICAgICwgbV9pc1ZlcnRleFNoYWRlckxvYWRlZChmYWxz
ZSkKICAgICAgICAgLCBtX2lzRnJhZ21lbnRTaGFkZXJMb2FkZWQoZmFsc2UpCiAgICAgewogICAg
IH0KKworICAgIH5TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0oKTsKICAgICAKICAgICBSZWZQdHI8
U3R5bGVTaGFkZXI+IG1fdmVydGV4U2hhZGVyOwogICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gbV9m
cmFnbWVudFNoYWRlcjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNo
YWRlcj4gbV9jYWNoZWRWZXJ0ZXhTaGFkZXI7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkU2hhZGVyPiBtX2NhY2hlZEZyYWdtZW50U2hhZGVyOworCisgICAgLy8gVGhlIFVSTHMgZm9y
bSB0aGUga2V5IG9mIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gaW4gdGhlIGNhY2hlIGFu
ZCBhcmUgdXNlZAorICAgIC8vIHRvIGxvb2t1cCB0aGUgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
IHdoZW4gaXQncyByZW1vdmVkIGZyb20gdGhlIGNhY2hlLgorICAgIEtVUkwgbV92ZXJ0ZXhTaGFk
ZXJVUkw7CisgICAgS1VSTCBtX2ZyYWdtZW50U2hhZGVyVVJMOworCisgICAgLy8gVGhlIENhY2hl
IGlzIHJlc3BvbnNpYmxlIG9mIGludmFsaWRhdGluZyB0aGlzIHJlZmVyZW5jZS4KKyAgICBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSogbV9jYWNoZTsKICAgICAKICAgICBib29sIG1faXNW
ZXJ0ZXhTaGFkZXJMb2FkZWQ7CiAgICAgYm9vbCBtX2lzRnJhZ21lbnRTaGFkZXJMb2FkZWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43MGExMTE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcApAQCAtMCwwICsxLDkw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMg
SVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZS5oIgorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIK
KyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3JhbUNhY2hlS2V5KFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3JhbSkgCit7CisgICAgQVNTRVJUKHByb2dyYW0t
PnZlcnRleFNoYWRlclVSTCgpLmlzVmFsaWQoKSB8fCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlclVS
TCgpLmlzVmFsaWQoKSk7CisgICAgcmV0dXJuIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHByb2dy
YW0tPnZlcnRleFNoYWRlclVSTCgpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlclVSTCgpLCAKKyAg
ICAgICAgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSwgcHJvZ3JhbS0+bWl4U2V0dGluZ3MoKSwgcHJv
Z3JhbS0+bWVzaFR5cGUoKSk7Cit9CisKK1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgpCit7Cit9CisKK1N0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlOjp+U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUoKQoreworICAgIC8v
IE1ha2Ugc3VyZSB0aGUgcHJvZ3JhbXMgYXJlIG5vdCBjYWxsaW5nIGJhY2sgaW50byB0aGlzIG9i
amVjdC4KKyAgICBmb3IgKENhY2hlTWFwOjppdGVyYXRvciBpdGVyID0gbV9jYWNoZS5iZWdpbigp
LCBlbmQgPSBtX2NhY2hlLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBpdGVy
LT52YWx1ZS0+c2V0Q2FjaGUoMCk7Cit9CisKK1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6Omxvb2t1cChjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyYgcHJvZ3JhbUluZm8pIGNvbnN0Cit7CisgICAgQ2FjaGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX2NhY2hlLmZpbmQocHJvZ3JhbUluZm8pOworICAgIHJldHVybiBpdGVyICE9
IG1fY2FjaGUuZW5kKCkgPyBpdGVyLT52YWx1ZSA6IDA7Cit9CisKK1N0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbSogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6Omxvb2t1cChTdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0qIHByb2dyYW0pIGNvbnN0Cit7CisgICAgcmV0dXJuIGxvb2t1cChwcm9n
cmFtQ2FjaGVLZXkocHJvZ3JhbSkpOworfQorCit2b2lkIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUNhY2hlOjphZGQoU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKQoreworICAgIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvIGtleSA9IHByb2dyYW1DYWNoZUtleShwcm9ncmFtKTsKKyAg
ICBBU1NFUlQobV9jYWNoZS5maW5kKGtleSkgPT0gbV9jYWNoZS5lbmQoKSk7CisgICAgbV9jYWNo
ZS5zZXQoa2V5LCBwcm9ncmFtKTsKKyAgICBwcm9ncmFtLT5zZXRDYWNoZSh0aGlzKTsKKyAgICBB
U1NFUlQobV9jYWNoZS5maW5kKGtleSkgIT0gbV9jYWNoZS5lbmQoKSk7Cit9CisKK3ZvaWQgU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6OnJlbW92ZShTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0qIHByb2dyYW0pCit7CisgICAgQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhY2hlLmZp
bmQocHJvZ3JhbUNhY2hlS2V5KHByb2dyYW0pKTsKKyAgICBBU1NFUlQoaXRlciAhPSBtX2NhY2hl
LmVuZCgpKTsKKyAgICBtX2NhY2hlLnJlbW92ZShpdGVyKTsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1D
YWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1MTgz
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2Fj
aGVfaAorI2RlZmluZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZV9oCisKKyNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOwor
Y2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87CisKK2NsYXNzIFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgpOworICAgIH5TdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZSgpOworCisgICAgLy8gTG9va3VwcyBhIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbSB0aGF0IGhhcyBzaW1pbGFyIHBhcmFtZXRlcnMgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2dy
YW0uCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBsb29rdXAoU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtKikgY29uc3Q7CisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBsb29rdXAo
Y29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKSBjb25zdDsKKworICAgIHZvaWQgYWRkKFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOworICAgIHZvaWQgcmVtb3ZlKFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbSopOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbywgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKj4gQ2FjaGVNYXA7CisgICAg
Q2FjaGVNYXAgbV9jYWNoZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbUNhY2hlX2gK
</data>
<flag name="review"
          id="215862"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="215863"
          type_id="3"
          status="-"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194351</attachid>
            <date>2013-03-21 14:53:34 -0700</date>
            <delta_ts>2013-03-21 15:20:09 -0700</delta_ts>
            <desc>Patch for commit</desc>
            <filename>bug112602_4.patch</filename>
            <type>text/plain</type>
            <size>50124</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMWJkMWQwLi5kZmY1MzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDMt
MjEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IGEgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGNhY2hlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI2MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgQWRkZWQgYSBuZXcg
dGVzdCB0byBjaGVjayBmb3IgdGhlIGNhc2Ugd2hlbiB0aGUgc3R5bGUgaXMgcmVjYWxjdWxhdGVk
IGJ1dCB0aGUKKyAgICAgICAgZmlsdGVyIHByb3BlcnR5IGlzIG5vdCBjaGFuZ2VkLiBBbGwgdGhl
IG90aGVyIGNhc2VzIGZvciB0aGUgbmV3IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlCisg
ICAgICAgIGNsYXNzIHNob3VsZCBiZSB0ZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2FkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJl
bG9hZC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0yMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIENTUCAxLjE6IEZpcmUgYSBTZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50IHdoZW4gdmlvbGF0aW9ucyBvY2N1ci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJlbG9hZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1yZWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJlbG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJlbG9hZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWQxM2UKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItcmVsb2Fk
Lmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tIAorICAgIFRoaXMg
dGVzdHMgdmVyaWZpZXMgdGhhdCB3ZSBkb24ndCBhc3NlcnQgd2hlbiB0aGUgc3R5bGUgaXMgcmVj
YWxjdWxhdGVkIGJ1dCB0aGUgZmlsdGVyIHByb3BlcnR5IGRvZXNuJ3QgY2hhbmdlLgorLS0+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsK
KyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGb3JjZSBhIGxheW91
dC4KKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
dmFyIGJveGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmJveCIpOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3hlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAg
ICBib3hlc1tpXS5jbGFzc0xpc3QuYWRkKCJ0cmlnZ2VyLXN0eWxlLXJlY2FsYyIpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBTd2l0Y2ggdGhlIHBhcmVudCB0byBjb21wb3NpdGVkIG1v
ZGUsIHNvIHRoYXQgd2UgY2FuIHRyaWdnZXIgCisgICAgICAgICAgICAvLyBhIHJlYnVpbGQgb2Yg
dGhlIGNvbXBvc2l0aW5nIGxheWVyIHRyZWUuCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0
eWxlLndlYmtpdFRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVaKDBweCkiCisKKyAgICAgICAgICAgIC8v
IEZvcmNlIGEgbGF5b3V0LgorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7
CisKKyAgICAgICAgICAgIC8vIElmIHdlIGdldCB0aGlzIGZhciB3aXRoIG5vIGFzc2VydCwgdGhl
IHRlc3QgcGFzc2VkLgorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgLmJveCB7CisgICAgICAgICAgICBoZWln
aHQ6IDUwcHg7CisgICAgICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0
ZVooMCk7CisgICAgICAgIH0KKworICAgICAgICAudmVydGV4X3NoYWRlcgorICAgICAgICB7Cisg
ICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCgnLi4vcmVzb3VyY2VzL3ZlcnRl
eC1vZmZzZXQudnMnKSk7CisgICAgICAgIH0KKworICAgICAgICAuZnJhZ21lbnRfc2hhZGVyCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSBtaXgodXJs
KCcuLi9yZXNvdXJjZXMvY29sb3Itb2Zmc2V0LmZzJykgbm9ybWFsIHNvdXJjZS1hdG9wKSk7Cisg
ICAgICAgIH0KKworICAgICAgICAuYm90aF9zaGFkZXJzCisgICAgICAgIHsKKyAgICAgICAgICAg
IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKCcuLi9yZXNvdXJjZXMvdmVydGV4LW9mZnNldC52
cycpIG1peCh1cmwoJy4uL3Jlc291cmNlcy9jb2xvci1vZmZzZXQuZnMnKSBub3JtYWwgc291cmNl
LWF0b3ApKTsKKyAgICAgICAgfQorCisgICAgICAgIC50cmlnZ2VyLXN0eWxlLXJlY2FsYyB7Cisg
ICAgICAgICAgICAvKiBObyBjaGFuZ2UsIHdlIGp1c3QgbmVlZCBhIG5ldyBzdHlsZSByZWNhbGN1
bGF0aW9uLiAqLworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgb25s
b2FkPSJ0ZXN0KCkiPgorICAgIDwhLS0gCisgICAgICAgIFlvdSBzaG91bGQgc2VlIHRocmVlIGdy
ZWVuIGJveGVzLiBMYXN0IHR3byBib3hlcyBoYXZlIGEgZGlmZmVyZW50IHNoYWRlIG9mIGdyZWVu
LiBMYXN0IGJveCBpcyBzbGlnaHRseSBiaWdnZXIgb24gdGhlIGxlZnQgc2lkZS4KKyAgICAgICAg
VGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIG5vIGNyYXNoIG9yIGFzc2VydC4KKyAgICAtLT4K
KworICAgIDxkaXYgY2xhc3M9ImJveCB2ZXJ0ZXhfc2hhZGVyIj48L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJib3ggYm90aF9zaGFkZXJzIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3ggZnJhZ21l
bnRfc2hhZGVyIj48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY0Zjg5
ZTcuLjI5YWU5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAxMy0wMy0yMSAgQWxl
eGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFk
ZXJzXSBJbXBsZW1lbnQgYSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjYwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBXaGVuIHRoZSBzdHlsZSBpcyBy
ZWNhbGN1bGF0ZWQsIHRoZSBuZXcgY29tcHV0ZWQgUmVuZGVyU3R5bGUgaXMgc2F2ZWQgYXMgdGhl
IG1fc3R5bGUgb2YgdGhlCisgICAgICAgIFJlbmRlck9iamVjdCwgZXZlbiBpZiB0aGUgc3R5bGUg
d2FzIG5vdCBkaWZmZXJlbnQuCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2YgQ3VzdG9tIEZpbHRl
cnMsIGEgbmV3IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB3YXMgY3JlYXRlZCBhdCBhbGwgdGlt
ZXMsIGJ1dCB0aGUKKyAgICAgICAgYWN0dWFsIGVxdWFsaXR5IGNoZWNrIHdhcyBkb25lIGJ5IGNv
bXBhcmluZyB0aGUgcGFpciBvZiBjYWNoZWQgc2hhZGVycyBmcm9tIGluc2lkZSB0aGUgU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtLgorCisgICAgICAgIEJlY2F1c2Ugb2YgdGhhdCB0aGUgUmVuZGVy
TGF5ZXI6OnN0eWxlQ2hhbmdlZCB3YXMgbm90IGNhbGxlZCB3aGVuIHRoZSBuZXcgU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtIHdhcyBjcmVhdGVkLCBzbyBpdAorICAgICAgICB3aWxsIGVuZCB1cCBz
dGlsbCBrbm93aW5nIG9ubHkgYWJvdXQgdGhlIHByZXZpb3VzIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbS4KKworICAgICAgICBUaGUgUmVuZGVyTGF5ZXIgc2V0cyBpdHNlbGYgYXMgYSBjbGllbnQg
b2YgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgc28gdGhhdCBpdCBjYW4gcmVwYWludCBp
dHNlbGYKKyAgICAgICAgd2hlbiB0aGUgcHJvZ3JhbSBpcyBsb2FkZWQsIGJ1dCBiZWNhdXNlIFJl
bmRlckxheWVyOjpzdHlsZUNoYW5nZWQgaXMgbm90IGNhbGxlZCwgaXQgd2lsbCBub3QgYWRkIGl0
c2VsZiBhcyBhIGNsaWVudCBvZiB0aGUgbmV3CisgICAgICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbS4KKworICAgICAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gd2FpdHMgdW50aWwgdGhl
IGZpcnN0IGNsaWVudCB0byBsb2FkIHRoZSBwcm9ncmFtcywgc28gaW4gdGhpcyBjYXNlIGl0IHdp
bGwganVzdCByZW1haW4gdW5sb2FkZWQuCisKKyAgICAgICAgVGhlcmUgd2FzIG5vIGNyYXNoLCBi
dXQganVzdCBhbiBhc3NlcnQgaW4gZGVidWcgbW9kZS4gQWxzbywgYXMgYSB2aXNpYmxlIHNpZGUt
ZWZmZWN0IHNvbWUgZnJhbWVzIHdlcmUgcmVuZGVyZWQgdXNpbmcgYmxhbmsgc2hhZGVycywgCisg
ICAgICAgIHJlc3VsdGluZyBpbiBhIHBhc3MtdGhyb3VnaCBmaWx0ZXIuCisKKyAgICAgICAgVGhl
IGZpeCB3b3VsZCBiZSB0byBhY3R1YWxseSBtYWtlIHRoZSBSZW5kZXJTdHlsZTo6ZGlmZiBkZXRl
Y3QgdGhlIGNoYW5nZSBvZiB0aGUgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtCisgICAgICAgIHVz
aW5nIHRoZSBwb2ludGVyIHZhbHVlIGFuZCBub3QgdGhlIHZhbHVlcy4gSG93ZXZlciwgdGhhdCB3
aWxsIGFsd2F5cyBpbnZhbGlkYXRlIHRoZSAiZmlsdGVyIiBwcm9wZXJ0eSBiZWNhdXNlCisgICAg
ICAgIG9mIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gdGhhdCBhbHdheXMgZ2V0cyBjcmVh
dGVkIGR1cmluZyB0aGUgcmVjYWxjdWxhdGlvbiB0aW1lLgorCisgICAgICAgIEkndmUgYWRkZWQg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUgdG8gY2FjaGUgYWxsIHRoZSBpbnN0YW5jZXMg
b2YgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbXMgdGhhdCBhCisgICAgICAgIFN0eWxlUmVz
b2x2ZXIgYWxsb2NhdGVzLiBUaGlzIHdheSwgbmV4dCB0aW1lIGl0IHdpbGwgdHJ5IHRvIHJldXNl
IHByZXZpb3VzbHkgYWxsb2NhdGVkIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbXMuIAorICAgICAg
ICBUaGUga2V5IG9mIHRoZSBjYWNoZSBpcyB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8sIHRo
YXQgY29tYmluZXMgdGhlIFVSTHMgdG8gdGhlIHNoYWRlcnMgYW5kIGEgY291cGxlIG9mIG90aGVy
IHByb2dyYW0gc2V0dGluZ3MuCisKKyAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2Fj
aGUgaXMgb3duZWQgYnkgdGhlIFN0eWxlUmVzb3ZsZXIgYW5kIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbXMgYXJlIHJlc3BvbnNpYmxlIHdpdGgKKyAgICAgICAgcmVtb3ZpbmcgdGhlbXNlbHZlcyBm
cm9tIHRoZSBjYWNoZSB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSBnb2VzIGF3YXkuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIHByZXZpb3VzICJwbGF0Zm9ybSBsZXZlbCIgcHJvZ3Jh
bSBjYWNoZSBvYnNvbGV0ZSBhbmQgSSB3aWxsIHJlbW92ZSB0aGF0IGluIGEgZnV0dXJlIHBhdGNo
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyODQ0
CisKKyAgICAgICAgVGVzdDogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXJlbG9h
ZC5odG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpsb29rdXBDdXN0b21GaWx0ZXJQcm9ncmFtKTogTG9va3VwIGFueSBz
aW1pbGFyIHByb2dyYW1zIGluIHRoZSBjYWNoZS4gSXQgd2lsbCBjcmVhdGUgYSBuZXcgcGVuZGlu
ZyAKKyAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGlmIHRoZXJlIGlzIG5vIHByZS1j
YWNoZWQgdmVyc2lvbiBvZiB0aGUgcHJvZ3JhbS4KKyAgICAgICAgaWYgbm8gcHJvZ3JhbSBpcyBm
b3VuZC4gbG9hZFBlbmRpbmdTaGFkZXJzIGlzIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcgdGhlIHBy
b2dyYW0gaW4gdGhlIGNhY2hlIGlmIGl0IGlzIGFjdHVhbGx5IGdvaW5nIHRvIGJlIHVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NoYWRlcnMpOiBBdCB0
aGlzIHBvaW50IHRoZSBwcm9ncmFtIGlzIGZpbmFsLCBzbyBpdCdzIHNhZmUgdG8gYWRkIGl0IHRv
IHRoZSBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3Rv
bUZpbHRlck9wZXJhdGlvbldpdGhJbmxpbmVTeW50YXgpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBjc3MvV2ViS2l0
Q1NTU2hhZGVyVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTU2hhZGVyVmFs
dWU6OmNvbXBsZXRlVVJMKTogRmFjdG9yZWQgb3V0IHRoZSBmdW5jdGlvbiB0byBjb21wdXRlIHRo
ZSBjb21wbGV0ZSBVUkwgb2YgdGhlIHJlc291cmNlLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNoYWRlcik6CisgICAgICAgICogY3NzL1dlYktpdENTU1No
YWRlclZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYktpdENTU1NoYWRlclZhbHVlKToK
KyAgICAgICAgKFdlYktpdENTU1NoYWRlclZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KTogUmVtb3ZlZC4gUHJvZ3JhbXMgc2hv
dWxkIG5vdyBjb21wYXJlIGJ5IHBvaW50ZXIuIEtlcHQgaXQgYXMKKyAgICAgICAgcHJpdmF0ZSB0
byBjYXRjaCBhbnkgcG90ZW50aWFsIHVzZSBvZiBpdC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW06On5TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0pOiBEZXN0cnVjdG9y
IHJlbW92ZXMgdGhlIHByb2dyYW0gZnJvbSB0aGUgY2FjaGUuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRWZXJ0ZXhTaGFkZXIpOiBBZGRlZCBhbiBhc3NlcnQg
dG8gY2hlY2sgdGhhdCB0aGUgc2hhZGVyIGlzIG5vdCBpbiB0aGUKKyAgICAgICAgY2FjaGUgd2hp
bGUgdGhlIG11dGF0aW9uIGhhcHBlbnMuIE90aGVyd2lzZSB0aGUgY2FjaGUgbWlnaHQgaGF2ZSB0
aGUgd3Jvbmcga2V5LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
OjpzZXRGcmFnbWVudFNoYWRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtOjppc0xvYWRlZCk6IEFkZGVkIG1vcmUgYXNzZXJ0cyB0byBjYXRjaCBj
YXNlcyB3aGVuIHRoZSBwcm9ncmFtIGlzIHVzZWQgd2l0aCBubyBjbGllbnRzLgorICAgICAgICAo
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6aGFzUGVuZGluZ1NoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjppbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6c2V0Q2FjaGUpOiBGdW5jdGlvbiBjYWxsZWQgd2hlbiBhIHBy
b2dyYW0gaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIGNhY2hlLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjp2ZXJ0ZXhTaGFkZXJVUkwpOiBBZGRlZCBt
ZXRob2RzIHRvIHN0b3JlIHRoZSBLVVJMIHRoYXQgd2UgdXNlZCBhcyBrZXlzIGluIHRoZSBjYWNo
ZS4KKyAgICAgICAgVGhlIHNhbWUgS1VSTHMgd2lsbCBiZSB1c2VkIHRvIGxvb2t1cCBhbmQgcmVt
b3ZlIHRoZSBmaWx0ZXIgYXQgdGhlIGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6c2V0VmVydGV4U2hhZGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6ZnJhZ21lbnRTaGFkZXJVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpzZXRGcmFnbWVudFNoYWRlclVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OlN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZp
bHRlclByb2dyYW1DYWNoZTo6cHJvZ3JhbUNhY2hlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTo6flN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKTogRGVzdHJ1Y3RvciByZW1vdmVzIGl0c2VsZiBm
cm9tIGFsbCB0aGUKKyAgICAgICAgcmVmZXJlbmNlZCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1z
LiBUaGlzIGlzIHRvIGF2b2lkIGlzc3VlcyB3aXRoIGRpZmZlcmVudCBkZXN0cnVjdGlvbiBvcmRl
cnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTo6bG9v
a3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6OnJl
bW92ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUNhY2hlLmg6CisgICAgICAgIChTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRDdXN0b21G
aWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09OiBSZW1vdmVkLiBQcm9ncmFtcyBzaG91bGQgbm93IGNv
bXBhcmUgYnkgcG9pbnRlci4KKwogMjAxMy0wMy0yMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIENTUCAxLjE6IEZpcmUgYSBTZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50IHdoZW4gdmlvbGF0aW9ucyBvY2N1ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IGEzYTFkMmYuLmIzOTZkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNDY2Myw3ICs0NjYzLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmggXAorCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVE
YXNoYm9hcmRSZWdpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCBjNGI0MGU5Li4zOWQ1MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyODYsNiArMTI4Niw4IEBAIFNP
VVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwIFwKICAgICByZW5kZXJp
bmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuY3BwIFwKKyAgICByZW5kZXJpbmcvc3R5bGUvU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBcCisgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZp
bHRlckRhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEu
Y3BwIFwKQEAgLTI1ODMsNiArMjU4NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmggXAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZFNoYWRlci5oIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
LmggXAorICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5o
IFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgg
XAogICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaCBcCiAgICAgcmVuZGVyaW5n
L3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJlMTA5
NzUuLmU2NjY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI2NTYsNiArMjY1Niw5IEBACiAgICAg
ICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRTaGFkZXIuaCcsCiAgICAgICAgICAg
ICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmNwcCcsCisgICAgICAgICAgICAn
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCcsCisgICAg
ICAgICAgICAncmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmgn
LAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
Y3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0
ZXJEYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDhkYjI1ZjYuLmUwYmYwNjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00Njk2OCw2ICs0Njk2OCwxOCBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN0
eWxlXFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3R5bGVcU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYzVlNzNjLi45
YWViNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNTcxLDYgKzE1NzEsOSBAQAogCQk1MEQ0MDYxMjE0N0Q0OURFMDBEMzBC
QjUgLyogQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDYxMDE0N0Q0OURFMDBEMzBCQjUgLyogQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggKi87IH07CiAJCTUwRDg4Q0I1MTVCREZEQUEwMDE4
MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ4OENCMzE1QkRGREFBMDAxODA5RjQgLyogQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwICovOyB9OwogCQk1MEQ4OENCNjE1QkRGREFBMDAxODA5
RjQgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDg4Q0I0MTVCREZEQUEwMDE4MDlGNCAvKiBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mby5oICovOyB9OworCQk1MEUxOENEODE2RjkyODU4MDBDNjU0ODYgLyog
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwRTE4Q0Q1MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0uY3BwICovOyB9OworCQk1MEUxOENEOTE2RjkyODU4MDBDNjU0ODYgLyog
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBFMThDRDYxNkY5Mjg1ODAwQzY1NDg2IC8qIFN0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmNwcCAqLzsgfTsKKwkJNTBFMThDREExNkY5Mjg1ODAw
QzY1NDg2IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEUxOENENzE2RjkyODU4MDBDNjU0ODYg
LyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuaCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4
NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEw
MTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8q
IENhY2hlZFBhZ2UuY3BwICovOyB9OwogCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJv
ckJhc2UuY3BwICovOyB9OwpAQCAtOTA0NCw2ICs5MDQ3LDkgQEAKIAkJNTBENDA2MTAxNDdENDlE
RTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUwRDg4Q0IzMTVCREZEQUEwMDE4MDlGNCAvKiBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mby5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1J
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBEODhDQjQxNUJERkRBQTAw
MTgwOUY0IC8qIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmg7IHBhdGggPSBmaWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUw
RTE4Q0Q1MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmNwcDsgcGF0aCA9IHN0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRTE4Q0Q2MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHA7IHBhdGggPSBzdHls
ZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUwRTE4Q0Q3MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW1DYWNoZS5oOyBwYXRoID0gc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAy
QTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBC
MDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzODgsNiArMjEzOTQsOSBA
QAogCQkJCTkzOTNFNjAzMTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0Lmgg
Ki8sCiAJCQkJNTAzOEJFMkQxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxlQ2FjaGVkU2hhZGVyLmNw
cCAqLywKIAkJCQk1MDM4QkUyRTE0NzJBRDIzMDA5NUUwRDEgLyogU3R5bGVDYWNoZWRTaGFkZXIu
aCAqLywKKwkJCQk1MEUxOENENjE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtQ2FjaGUuY3BwICovLAorCQkJCTUwRTE4Q0Q3MTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oICovLAorCQkJCTUwRTE4Q0Q1MTZGOTI4NTgwMEM2
NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uY3BwICovLAogCQkJCTUwM0QwQ0FEMTRC
NUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLywKIAkJCQlCQzVF
QjY3RTBFODFENEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRSZWdpb24uaCAqLywKIAkJCQlC
QzVFQjhCNjBFODIwMUJEMDBCMjU5NjUgLyogU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRh
LmNwcCAqLywKQEAgLTI2NzU3LDYgKzI2NzY2LDcgQEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCURBRUQyMDMxMTZGMjQ0NDgw
MDcwRUMwRiAvKiBQYWdlQ29uc29sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QkM0MjcxNkY4
ODJFRTAwNzA0OEQwIC8qIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUwRTE4Q0RBMTZGOTI4NTgwMEM2NTQ4NiAvKiBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW1DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTk2Myw2ICsyOTk3Myw4IEBACiAJCQkJ
RkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29uc29sZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUJBMDAzMTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTBFMThDRDgxNkY5Mjg1ODAwQzY1NDg2IC8qIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MEUxOENEOTE2
RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNGRlMzc2Mi4u
Yjg4NzQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTY0LDkgKzE2
NCwxMSBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oIgogI2luY2x1
ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclBhcmFt
ZXRlci5oIgorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCiAjaW5jbHVkZSAi
Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRT
aGFkZXIuaCIKICNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRl
ICJTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIgogI2luY2x1ZGUgIlN0eWxlUGVuZGlu
Z1NoYWRlci5oIgogI2luY2x1ZGUgIlN0eWxlU2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZS5oIgpAQCAtMzk0MSw2ICszOTQzLDIzIEBAIFN0eWxlU2hhZGVyKiBT
dHlsZVJlc29sdmVyOjpjYWNoZWRPclBlbmRpbmdTdHlsZVNoYWRlckZyb21WYWx1ZShXZWJLaXRD
U1NTaGFkZXJWCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAorUGFzc1JlZlB0cjxDdXN0b21GaWx0
ZXJQcm9ncmFtPiBTdHlsZVJlc29sdmVyOjpsb29rdXBDdXN0b21GaWx0ZXJQcm9ncmFtKFdlYktp
dENTU1NoYWRlclZhbHVlKiB2ZXJ0ZXhTaGFkZXIsIFdlYktpdENTU1NoYWRlclZhbHVlKiBmcmFn
bWVudFNoYWRlciwgCisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNv
bnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MsIEN1c3RvbUZp
bHRlck1lc2hUeXBlIG1lc2hUeXBlKQoreworICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlciA9IG1fc3RhdGUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKTsKKyAgICBLVVJMIHZlcnRleFNoYWRlclVSTCA9IHZlcnRleFNoYWRlciA/IHZlcnRleFNo
YWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogS1VSTCgpOworICAgIEtV
UkwgZnJhZ21lbnRTaGFkZXJVUkwgPSBmcmFnbWVudFNoYWRlciA/IGZyYWdtZW50U2hhZGVyLT5j
b21wbGV0ZVVSTChjYWNoZWRSZXNvdXJjZUxvYWRlcikgOiBLVVJMKCk7CisgICAgUmVmUHRyPFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbTsKKyAgICBpZiAobV9jdXN0b21GaWx0ZXJQ
cm9ncmFtQ2FjaGUpCisgICAgICAgIHByb2dyYW0gPSBtX2N1c3RvbUZpbHRlclByb2dyYW1DYWNo
ZS0+bG9va3VwKEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclVSTCwgZnJhZ21l
bnRTaGFkZXJVUkwsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKKyAgICBp
ZiAoIXByb2dyYW0pIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbSB0aGF0IHdpbGwgYmUgcmVzb2x2ZWQgZHVyaW5nIHRoZSBsb2FkUGVuZGluZ1NoYWRl
cnMgYW5kIGFkZGVkIHRvIHRoZSBjYWNoZS4KKyAgICAgICAgcHJvZ3JhbSA9IFN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlclVSTCwgdmVydGV4U2hhZGVyID8gc3R5
bGVTaGFkZXIodmVydGV4U2hhZGVyKSA6IDAsIAorICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJV
UkwsIGZyYWdtZW50U2hhZGVyID8gc3R5bGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpIDogMCwgcHJv
Z3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSk7CisgICAgfQorICAgIHJldHVybiBwcm9n
cmFtLnJlbGVhc2UoKTsKK30KKwogdm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NoYWRl
cnMoKQogewogICAgIGlmICghbV9zdGF0ZS5zdHlsZSgpLT5oYXNGaWx0ZXIoKSB8fCAhbV9zdGF0
ZS5oYXNQZW5kaW5nU2hhZGVycygpKQpAQCAtMzk1NSwxMyArMzk3NCwyNiBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmxvYWRQZW5kaW5nU2hhZGVycygpCiAgICAgICAgICAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb24qIGN1c3RvbUZpbHRlciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9wZXJhdGlv
bio+KGZpbHRlck9wZXJhdGlvbi5nZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoY3VzdG9tRmls
dGVyLT5wcm9ncmFtKCkpOwogICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBw
cm9ncmFtID0gc3RhdGljX2Nhc3Q8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKj4oY3VzdG9tRmls
dGVyLT5wcm9ncmFtKCkpOwotICAgICAgICAgICAgaWYgKHByb2dyYW0tPnZlcnRleFNoYWRlcigp
ICYmIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLT5pc1BlbmRpbmdTaGFkZXIoKSkgewotICAgICAg
ICAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVlKiBzaGFkZXJWYWx1ZSA9IHN0YXRpY19jYXN0
PFN0eWxlUGVuZGluZ1NoYWRlcio+KHByb2dyYW0tPnZlcnRleFNoYWRlcigpKS0+Y3NzU2hhZGVy
VmFsdWUoKTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtLT5zZXRWZXJ0ZXhTaGFkZXIoc2hhZGVy
VmFsdWUtPmNhY2hlZFNoYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkgJiYgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS0+aXNQZW5kaW5nU2hhZGVyKCkpIHsKLSAgICAgICAgICAgICAgICBX
ZWJLaXRDU1NTaGFkZXJWYWx1ZSogc2hhZGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxTdHlsZVBlbmRp
bmdTaGFkZXIqPihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpKS0+Y3NzU2hhZGVyVmFsdWUoKTsK
LSAgICAgICAgICAgICAgICBwcm9ncmFtLT5zZXRGcmFnbWVudFNoYWRlcihzaGFkZXJWYWx1ZS0+
Y2FjaGVkU2hhZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKSk7CisgICAgICAgICAgICAvLyBOb3Rl
IHRoYXQgdGhlIFN0eWxlUGVuZGluZ1NoYWRlcnMgY291bGQgYmUgYWxyZWFkeSByZXNvbHZlZCB0
byBTdHlsZUNhY2hlZFNoYWRlcnMuIFRoYXQncyBiZWNhdXNlIHRoZSBydWxlIHdhcyBtYXRjaGVk
IGJlZm9yZS4KKyAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHRoZSBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0gdGhhdCB3YXMgaW5pdGlhbGx5IGNyZWF0ZWQgY291bGQgaGF2ZSBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgY2FjaGUgaW4gdGhlIG1lYW53aGlsZSwKKyAgICAgICAgICAgIC8vIG1lYW5pbmcg
dGhhdCB3ZSBnZXQgYSBuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGhlcmUgdGhhdCBpcyBu
b3QgeWV0IGluIHRoZSBjYWNoZSwgYnV0IGFscmVhZHkgaGFzIGxvYWRlZCBTdHlsZVNoYWRlcnMu
CisgICAgICAgICAgICBpZiAoIXByb2dyYW0tPmhhc1BlbmRpbmdTaGFkZXJzKCkgJiYgcHJvZ3Jh
bS0+aW5DYWNoZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KCFtX2N1c3RvbUZpbHRlclByb2dyYW1DYWNoZSkKKyAgICAgICAgICAgICAgICBtX2N1c3RvbUZp
bHRlclByb2dyYW1DYWNoZSA9IGFkb3B0UHRyKG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1D
YWNoZSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IHN0
eWxlUHJvZ3JhbSA9IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlLT5sb29rdXAocHJvZ3JhbSk7
CisgICAgICAgICAgICBpZiAoc3R5bGVQcm9ncmFtLmdldCgpKQorICAgICAgICAgICAgICAgIGN1
c3RvbUZpbHRlci0+c2V0UHJvZ3JhbShzdHlsZVByb2dyYW0ucmVsZWFzZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKSAm
JiBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS0+aXNQZW5kaW5nU2hhZGVyKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHNoYWRlclZhbHVlID0gc3RhdGljX2Nh
c3Q8U3R5bGVQZW5kaW5nU2hhZGVyKj4ocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkpLT5jc3NTaGFk
ZXJWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5zZXRWZXJ0ZXhTaGFkZXIo
c2hhZGVyVmFsdWUtPmNhY2hlZFNoYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KSAmJiBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLT5pc1BlbmRpbmdTaGFkZXIoKSkgeworICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRDU1NTaGFkZXJWYWx1ZSogc2hhZGVyVmFsdWUgPSBzdGF0
aWNfY2FzdDxTdHlsZVBlbmRpbmdTaGFkZXIqPihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpKS0+
Y3NzU2hhZGVyVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+c2V0RnJhZ21l
bnRTaGFkZXIoc2hhZGVyVmFsdWUtPmNhY2hlZFNoYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2N1c3RvbUZpbHRlclByb2dy
YW1DYWNoZS0+YWRkKHByb2dyYW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtNDEwNSwyMCArNDEzNywxOSBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4g
U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgIHVuc2ln
bmVkIHNoYWRlcnNMaXN0TGVuZ3RoID0gc2hhZGVyc0xpc3QtPmxlbmd0aCgpOwogICAgIEFTU0VS
VChzaGFkZXJzTGlzdExlbmd0aCk7CiAKLSAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNo
YWRlciA9IHN0eWxlU2hhZGVyKHNoYWRlcnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDAp
KTsKLSAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyOworICAgIFdlYktpdENT
U1NoYWRlclZhbHVlKiB2ZXJ0ZXhTaGFkZXIgPSB0b1dlYktpdENTU1NoYWRlclZhbHVlKHNoYWRl
cnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKKyAgICBXZWJLaXRDU1NTaGFkZXJW
YWx1ZSogZnJhZ21lbnRTaGFkZXIgPSAwOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHBy
b2dyYW1UeXBlID0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkU7CiAgICAgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzOwogCiAgICAgaWYgKHNoYWRl
cnNMaXN0TGVuZ3RoID4gMSkgewogICAgICAgICBDU1NWYWx1ZSogZnJhZ21lbnRTaGFkZXJPck1p
eEZ1bmN0aW9uID0gc2hhZGVyc0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSk7Ci0KICAg
ICAgICAgaWYgKGZyYWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbi0+aXNXZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlKCkpIHsKICAgICAgICAgICAgIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUqIG1p
eEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSo+KGZyYWdt
ZW50U2hhZGVyT3JNaXhGdW5jdGlvbik7CiAgICAgICAgICAgICBDU1NWYWx1ZUxpc3RJdGVyYXRv
ciBpdGVyYXRvcihtaXhGdW5jdGlvbik7CiAKICAgICAgICAgICAgIEFTU0VSVChtaXhGdW5jdGlv
bi0+bGVuZ3RoKCkpOwotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBzdHlsZVNoYWRlcihp
dGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gdG9XZWJLaXRD
U1NTaGFkZXJWYWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgICAgIGl0ZXJhdG9yLmFk
dmFuY2UoKTsKIAogICAgICAgICAgICAgQVNTRVJUKG1peEZ1bmN0aW9uLT5sZW5ndGgoKSA8PSAz
KTsKQEAgLTQxMzQsOSArNDE2NSwxMiBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlv
bj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJvZ3JhbVR5cGUgPSBQUk9H
UkFNX1RZUEVfTk9fRUxFTUVOVF9URVhUVVJFOwotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIg
PSBzdHlsZVNoYWRlcihmcmFnbWVudFNoYWRlck9yTWl4RnVuY3Rpb24pOworICAgICAgICAgICAg
ZnJhZ21lbnRTaGFkZXIgPSB0b1dlYktpdENTU1NoYWRlclZhbHVlKGZyYWdtZW50U2hhZGVyT3JN
aXhGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoIXZlcnRleFNoYWRlciAm
JiAhZnJhZ21lbnRTaGFkZXIpCisgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIHVuc2lnbmVk
IG1lc2hSb3dzID0gMTsKICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucyA9IDE7CkBAIC00MTkyLDgg
KzQyMjYsOCBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZl
cjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QgcGFyYW1ldGVyTGlzdDsKICAgICBpZiAocGFyYW1ldGVyc1ZhbHVlICYmICFwYXJz
ZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QocGFyYW1ldGVyc1ZhbHVlLCBwYXJhbWV0ZXJMaXN0
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbT4gcHJvZ3JhbSA9IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKHZlcnRl
eFNoYWRlci5yZWxlYXNlKCksIGZyYWdtZW50U2hhZGVyLnJlbGVhc2UoKSwgcHJvZ3JhbVR5cGUs
IG1peFNldHRpbmdzLCBtZXNoVHlwZSk7CisKKyAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3Jh
bT4gcHJvZ3JhbSA9IGxvb2t1cEN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFn
bWVudFNoYWRlciwgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSk7CiAgICAgcmV0
dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHByb2dyYW0ucmVsZWFzZSgpLCBwYXJh
bWV0ZXJMaXN0LCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hUeXBlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNjM0ZTZlNC4uMTBhNDIxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCkBAIC00Myw2ICs0Myw5IEBACiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKSAmJiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIldlYktpdENTU1NWR0RvY3VtZW50VmFsdWUu
aCIKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0
ZXJDb25zdGFudHMuaCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC03Miw2ICs3NSw4
IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBDdXN0b21GaWx0ZXJPcGVyYXRpb247CiBj
bGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7CiBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0OworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKK3N0cnVjdCBDdXN0b21GaWx0ZXJQcm9n
cmFtTWl4U2V0dGluZ3M7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBG
cmFtZTsKQEAgLTg3LDYgKzkyLDcgQEAgY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0Owog
Y2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdGF0aWNDU1NSdWxlTGlzdDsKK2NsYXNzIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNhY2hlOwogY2xhc3MgU3R5bGVCdWlsZGVyOwogY2xhc3MgU3R5bGVT
Y29wZVJlc29sdmVyOwogY2xhc3MgU3R5bGVJbWFnZTsKQEAgLTMxNyw2ICszMjMsOCBAQCBwdWJs
aWM6CiAgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZUN1c3RvbUZp
bHRlck9wZXJhdGlvbldpdGhJbmxpbmVTeW50YXgoV2ViS2l0Q1NTRmlsdGVyVmFsdWUqKTsKICAg
ICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uKFdlYktpdENTU0ZpbHRlclZhbHVlKik7CiAgICAgdm9pZCBsb2FkUGVuZGluZ1NoYWRl
cnMoKTsKKyAgICBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IGxvb2t1cEN1c3RvbUZp
bHRlclByb2dyYW0oV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHZlcnRleFNoYWRlciwgV2ViS2l0Q1NT
U2hhZGVyVmFsdWUqIGZyYWdtZW50U2hhZGVyLCAKKyAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYsIEN1c3RvbUZpbHRl
ck1lc2hUeXBlKTsKICNlbmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgdm9pZCBsb2FkUGVuZGlu
Z1NWR0RvY3VtZW50cygpOwpAQCAtNjMxLDYgKzYzOSwxMCBAQCBwcml2YXRlOgogCiAgICAgU3Rh
dGUgbV9zdGF0ZTsKIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBPd25QdHI8U3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU+IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOworI2Vu
ZGlmCisKICAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyOwogICAgIGZyaWVuZCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaGVkUHJvcGVydGll
cyYpOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMm
LCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NTaGFkZXJWYWx1ZS5jcHAKaW5kZXggZmIwYjFiMS4uMmRmMDUyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5k
aW5nU2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpA
QCAtNTQsNiArNTUsMTEgQEAgV2ViS2l0Q1NTU2hhZGVyVmFsdWU6On5XZWJLaXRDU1NTaGFkZXJW
YWx1ZSgpCiB7CiB9CiAKK0tVUkwgV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNvbXBsZXRlVVJMKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxvYWRlci0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpOworfQorCiBTdHlsZUNhY2hlZFNoYWRlciog
V2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNoYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciog
bG9hZGVyKQogewogICAgIEFTU0VSVChsb2FkZXIpOwpAQCAtNjEsNyArNjcsNyBAQCBTdHlsZUNh
Y2hlZFNoYWRlciogV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZFNoYWRlcihDYWNoZWRSZXNv
dXJjZUxvYWRlciogbG9hZAogICAgIGlmICghbV9hY2Nlc3NlZFNoYWRlcikgewogICAgICAgICBt
X2FjY2Vzc2VkU2hhZGVyID0gdHJ1ZTsKIAotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCht
X3VybCkpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KGNvbXBsZXRlVVJMKGxvYWRlcikpKTsKICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0
b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgICAgIGlmIChD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTaGFkZXI+IGNhY2hlZFNoYWRlciA9IGxvYWRlci0+
cmVxdWVzdFNoYWRlcihyZXF1ZXN0KSkKICAgICAgICAgICAgIG1fc2hhZGVyID0gU3R5bGVDYWNo
ZWRTaGFkZXI6OmNyZWF0ZShjYWNoZWRTaGFkZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCA0YTk4MjVlLi40NTZiNWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIEtV
Ukw7CiBjbGFzcyBTdHlsZUNhY2hlZFNoYWRlcjsKIGNsYXNzIFN0eWxlU2hhZGVyOwogCkBAIC00
OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgdm9pZCBzZXRGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3Jt
YXQpIHsgbV9mb3JtYXQgPSBmb3JtYXQ7IH0KIAorICAgIEtVUkwgY29tcGxldGVVUkwoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICAgICBTdHlsZUNhY2hlZFNoYWRlciogY2FjaGVkU2hh
ZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAgICAgU3R5bGVTaGFkZXIqIGNhY2hlZE9yUGVu
ZGluZ1NoYWRlcigpOwogCkBAIC02Niw2ICs2OCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9h
Y2Nlc3NlZFNoYWRlcjsKIH07CiAKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4g
dW5uZWNlc3NhcnkgY2FzdC4KK1dlYktpdENTU1NoYWRlclZhbHVlKiB0b1dlYktpdENTU1NoYWRl
clZhbHVlKGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlKik7CisKK2lubGluZSBXZWJLaXRDU1NT
aGFkZXJWYWx1ZSogdG9XZWJLaXRDU1NTaGFkZXJWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlLT5pc1dlYktpdENTU1NoYWRlclZhbHVlKCkgPyBzdGF0aWNfY2FzdDxX
ZWJLaXRDU1NTaGFkZXJWYWx1ZSo+KHZhbHVlKSA6IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmNwcAppbmRleCA5MjUyZjQ3Li5jZGUzNThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbioKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgY29uc3QgQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRp
b24qPihmcm9tKTsKLSAgICBpZiAoKm1fcHJvZ3JhbS5nZXQoKSAhPSAqZnJvbU9wLT5tX3Byb2dy
YW0uZ2V0KCkKKyAgICBpZiAobV9wcm9ncmFtLmdldCgpICE9IGZyb21PcC0+bV9wcm9ncmFtLmdl
dCgpCiAgICAgICAgIHx8IG1fbWVzaFJvd3MgIT0gZnJvbU9wLT5tX21lc2hSb3dzCiAgICAgICAg
IHx8IG1fbWVzaENvbHVtbnMgIT0gZnJvbU9wLT5tX21lc2hDb2x1bW5zCiAgICAgICAgIHx8IG1f
bWVzaFR5cGUgIT0gZnJvbU9wLT5tX21lc2hUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgKaW5kZXggMGY5MmJkOS4uNjgxYzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRp
Y19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJu
ICptX3Byb2dyYW0uZ2V0KCkgPT0gKm90aGVyLT5tX3Byb2dyYW0uZ2V0KCkKKyAgICAgICAgcmV0
dXJuIG1fcHJvZ3JhbS5nZXQoKSA9PSBvdGhlci0+bV9wcm9ncmFtLmdldCgpCiAgICAgICAgICAg
ICAmJiBtX21lc2hSb3dzID09IG90aGVyLT5tX21lc2hSb3dzCiAgICAgICAgICAgICAmJiBtX21l
c2hDb2x1bW5zID09IG90aGVyLT5tX21lc2hDb2x1bW5zCiAgICAgICAgICAgICAmJiBtX21lc2hU
eXBlID09IG90aGVyLT5tX21lc2hUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApp
bmRleCAyYThmY2UwLi5lMDZiYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAK
QEAgLTg2LDEyICs4Niw1IEBAIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclBy
b2dyYW06OnByb2dyYW1JbmZvKCkgY29uc3QKICAgICByZXR1cm4gQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8odmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdtZW50U2hhZGVyU3RyaW5nKCksIG1fcHJv
Z3JhbVR5cGUsIG1fbWl4U2V0dGluZ3MsIG1fbWVzaFR5cGUpOwogfQogCi1ib29sIEN1c3RvbUZp
bHRlclByb2dyYW06Om9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYgbykgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcm9ncmFtVHlwZSA9PSBvLm1fcHJvZ3JhbVR5cGUKLSAgICAg
ICAgJiYgKG1fcHJvZ3JhbVR5cGUgIT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRV
UkUgfHwgbV9taXhTZXR0aW5ncyA9PSBvLm1fbWl4U2V0dGluZ3MpCi0gICAgICAgICYmIG1fbWVz
aFR5cGUgPT0gby5tX21lc2hUeXBlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5k
aWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAppbmRl
eCBiNzU1YmI3Li5kYTM3ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtNjMs
OCArNjMsNiBAQCBwdWJsaWM6CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1p
eFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9taXhTZXR0aW5nczsgfQogICAgIEN1c3RvbUZp
bHRlck1lc2hUeXBlIG1lc2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoVHlwZTsgfQogCi0g
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYpIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiBwcm90ZWN0ZWQ6CiAgICAgLy8gU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtIGNhbiBub3RpZnkgdGhlIGNsaWVudHMgdGhhdCB0aGUgY2FjaGVk
IHJlc291cmNlcyBhcmUKICAgICAvLyBsb2FkZWQgYW5kIGl0IGlzIHJlYWR5IHRvIGNyZWF0ZSBD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0gb2JqZWN0cy4KQEAgLTc3LDYgKzc1LDEyIEBAIHBy
b3RlY3RlZDoKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKEN1c3RvbUZpbHRlclByb2dyYW1UeXBl
LCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmLCBDdXN0b21GaWx0ZXJNZXNo
VHlwZSk7CiAKIHByaXZhdGU6CisgICAgLy8gQ3VzdG9tRmlsdGVyUHJvZ3JhbXMgYXJlIHVuaXF1
ZSBjb21iaW5hdGlvbnMgb2Ygc2hhZGVycyBhbmQgY2FuIGJlIAorICAgIC8vIGNvbXBhcmVkIHVz
aW5nIGp1c3QgdGhlIHBvaW50ZXIgdmFsdWUgaW5zdGVhZC4KKyAgICAvLyBUaGVzZSB3aWxsIGNh
dGNoIGFueW9uZSBkb2luZyBhIHZhbHVlIGVxdWFsIGNvbXBhcmlzb24uCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mKSBjb25zdDsKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYpIGNvbnN0OworCiAgICAgdHlwZWRlZiBI
YXNoQ291bnRlZFNldDxDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Kj4gQ3VzdG9tRmlsdGVyUHJv
Z3JhbUNsaWVudExpc3Q7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudExpc3QgbV9jbGll
bnRzOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIG1fcHJvZ3JhbVR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKaW5kZXggNmE0OWIxYi4uN2Y0ZjE1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEN1c3RvbUZp
bHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRDdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTQxLDE3
ICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IE9WRVJSSURFCi0gICAgewotICAgICAg
ICAvLyBXZSBkb24ndCB1c2UgdGhlICE9IG9wZXJhdG9yIGJlY2F1c2UgdGhhdCB3b3VsZCByZWN1
cnNpdmVseSBjYWxsIHRoaXMgbWV0aG9kLgotICAgICAgICBpZiAoIUN1c3RvbUZpbHRlclByb2dy
YW06Om9wZXJhdG9yPT0obykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBjYXN0IGlzIHVnbHksIGJ1dCBDb29yZGluYXRlZEN1c3RvbUZpbHRl
clByb2dyYW0gaXMgdGhlIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBvZiBDdXN0b21GaWx0ZXJQcm9n
cmFtIG9uIFVJIFByb2Nlc3MuCi0gICAgICAgIGNvbnN0IENvb3JkaW5hdGVkQ3VzdG9tRmlsdGVy
UHJvZ3JhbSogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDb29yZGluYXRlZEN1c3RvbUZpbHRl
clByb2dyYW0qPigmbyk7Ci0gICAgICAgIHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZyA9PSBv
dGhlci0+dmVydGV4U2hhZGVyU3RyaW5nKCkgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBv
dGhlci0+ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKLSAgICB9Ci0KIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX3ZlcnRleFNoYWRlclN0cmluZzsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0cmlu
ZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41ZjQwMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
CisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
LmgiCisKKyNpbmNsdWRlICJTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6flN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbSgpCit7CisgICAgaWYgKG1fY2FjaGUpCisgICAgICAgIG1fY2FjaGUtPnJl
bW92ZSh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKENTU19TSEFERVJTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggYWU2OGQ5NS4uMjZhYzAy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAi
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTdHls
ZVNoYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAKQEAgLTQyLDE4ICs0
MywzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENTUyBTaGFkZXJzCiAKK2NsYXNzIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOworCiBjbGFzcyBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShQYXNzUmVmUHRy
PFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdt
ZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncywgQ3VzdG9tRmlsdGVyTWVz
aFR5cGUgbWVzaFR5cGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtPiBjcmVhdGUoS1VSTCB2ZXJ0ZXhTaGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFk
ZXI+IHZlcnRleFNoYWRlciwgCisgICAgICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwsIFBhc3NS
ZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtVHlw
ZSBwcm9ncmFtVHlwZSwKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzJiBtaXhTZXR0aW5ncywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVzaFR5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSh2ZXJ0
ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1lc2hU
eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtKHZlcnRleFNoYWRlclVSTCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlclVSTCwgZnJh
Z21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBzZXRWZXJ0ZXhTaGFkZXIoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4g
c2hhZGVyKSB7IG1fdmVydGV4U2hhZGVyID0gc2hhZGVyOyB9CisgICAgdm9pZCBzZXRWZXJ0ZXhT
aGFkZXIoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gc2hhZGVyKQorICAgIHsKKyAgICAgICAgLy8g
VGhlIHNoYWRlciBpcyBpbW11dGFibGUgd2hpbGUgaW4gdGhlIGNhY2hlLgorICAgICAgICBBU1NF
UlQoIW1fY2FjaGUpOworICAgICAgICBtX3ZlcnRleFNoYWRlciA9IHNoYWRlcjsgCisgICAgfQog
ICAgIFN0eWxlU2hhZGVyKiB2ZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNo
YWRlci5nZXQoKTsgfQogICAgIAotICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIoUGFzc1JlZlB0
cjxTdHlsZVNoYWRlcj4gc2hhZGVyKSB7IG1fZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXI7IH0KKyAg
ICB2b2lkIHNldEZyYWdtZW50U2hhZGVyKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRlcikK
KyAgICB7CisgICAgICAgIC8vIFRoZSBzaGFkZXIgaXMgaW1tdXRhYmxlIHdoaWxlIGluIHRoZSBj
YWNoZS4KKyAgICAgICAgQVNTRVJUKCFtX2NhY2hlKTsKKyAgICAgICAgbV9mcmFnbWVudFNoYWRl
ciA9IHNoYWRlcjsgCisgICAgfQogICAgIFN0eWxlU2hhZGVyKiBmcmFnbWVudFNoYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXIuZ2V0KCk7IH0KICAgICAKICAgICB2aXJ0dWFs
IFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdApAQCAtNzIsNiArODcsOSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICAvLyBEbyBub3QgdXNlIHRoZSBDYWNoZWRSZXNvdXJjZTppc0xv
YWRlZCBtZXRob2QgaGVyZSwgYmVjYXVzZSBpdCBhY3R1YWxseSBtZWFucyAhaXNMb2FkaW5nKCks
CiAgICAgICAgIC8vIHNvIG1pc3NpbmcgYW5kIGNhbmNlbGVkIHJlc291cmNlcyB3aWxsIGhhdmUg
aXNMb2FkZWQgc2V0IHRvIHRydWUsIGV2ZW4gaWYgdGhleSBhcmUgbm90IGxvYWRlZCB5ZXQuCisg
ICAgICAgIEFTU0VSVCghbV92ZXJ0ZXhTaGFkZXIgfHwgbV92ZXJ0ZXhTaGFkZXItPmlzQ2FjaGVk
U2hhZGVyKCkpOworICAgICAgICBBU1NFUlQoIW1fZnJhZ21lbnRTaGFkZXIgfHwgbV9mcmFnbWVu
dFNoYWRlci0+aXNDYWNoZWRTaGFkZXIoKSk7CisgICAgICAgIEFTU0VSVChtX2NhY2hlZFZlcnRl
eFNoYWRlci5nZXQoKSB8fCBtX2NhY2hlZEZyYWdtZW50U2hhZGVyLmdldCgpKTsKICAgICAgICAg
cmV0dXJuICghbV9jYWNoZWRWZXJ0ZXhTaGFkZXIuZ2V0KCkgfHwgbV9pc1ZlcnRleFNoYWRlckxv
YWRlZCkKICAgICAgICAgICAgICYmICghbV9jYWNoZWRGcmFnbWVudFNoYWRlci5nZXQoKSB8fCBt
X2lzRnJhZ21lbnRTaGFkZXJMb2FkZWQpOwogICAgIH0KQEAgLTExNCwzNiArMTMyLDQ5IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKGlzTG9hZGVkKCkpCiAgICAgICAgICAgICBub3RpZnlDbGllbnRz
KCk7CiAgICAgfQotICAgIAotICAgIENhY2hlZFNoYWRlciogY2FjaGVkVmVydGV4U2hhZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXIgPyBtX3ZlcnRleFNoYWRlci0+Y2FjaGVkU2hh
ZGVyKCkgOiAwOyB9Ci0gICAgQ2FjaGVkU2hhZGVyKiBjYWNoZWRGcmFnbWVudFNoYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXIgPyBtX2ZyYWdtZW50U2hhZGVyLT5jYWNoZWRT
aGFkZXIoKSA6IDA7IH0KLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIC8vIFdlIGRvbid0
IHVzZSB0aGUgIT0gb3BlcmF0b3IgYmVjYXVzZSB0aGF0IHdvdWxkIHJlY3Vyc2l2ZWx5IGNhbGwg
dGhpcyBtZXRob2QuCi0gICAgICAgIGlmICghQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6b3BlcmF0b3I9
PShvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBUaGUgZm9sbG93
aW5nIGNhc3QgaXMgdWdseSwgYnV0IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyB0aGUgc2lu
Z2xlIGltcGxlbWVudGF0aW9uIG9mIEN1c3RvbUZpbHRlclByb2dyYW0uCi0gICAgICAgIGNvbnN0
IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7Ci0gICAgICAgIHJldHVybiBjYWNoZWRWZXJ0ZXhT
aGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkVmVydGV4U2hhZGVyKCkgJiYgY2FjaGVkRnJhZ21lbnRT
aGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKyAgICBib29sIGhhc1Bl
bmRpbmdTaGFkZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAobV92ZXJ0ZXhTaGFk
ZXIgJiYgbV92ZXJ0ZXhTaGFkZXItPmlzUGVuZGluZ1NoYWRlcigpKSAKKyAgICAgICAgICAgIHx8
IChtX2ZyYWdtZW50U2hhZGVyICYmIG1fZnJhZ21lbnRTaGFkZXItPmlzUGVuZGluZ1NoYWRlcigp
KTsKICAgICB9CiAKKyAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSBpcyByZXNw
b25zaWJsZSB3aXRoIHVwZGF0aW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlIGNhY2hlLgorICAgIHZv
aWQgc2V0Q2FjaGUoU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUqIGNhY2hlKSB7IG1fY2Fj
aGUgPSBjYWNoZTsgfQorICAgIGJvb2wgaW5DYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGU7
IH0KKyAgICAKKyAgICBLVVJMIHZlcnRleFNoYWRlclVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
dGV4U2hhZGVyVVJMOyB9CisgICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhZ21lbnRTaGFkZXJVUkw7IH0KKwogcHJpdmF0ZToKLSAgICBTdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0oUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUg
cHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0
dGluZ3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQorICAgIFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbShLVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4g
dmVydGV4U2hhZGVyLCBLVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hh
ZGVyPiBmcmFnbWVudFNoYWRlciwgCisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHBy
b2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRp
bmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICAgICAgOiBDdXN0b21GaWx0
ZXJQcm9ncmFtKHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpCiAgICAgICAgICwg
bV92ZXJ0ZXhTaGFkZXIodmVydGV4U2hhZGVyKQogICAgICAgICAsIG1fZnJhZ21lbnRTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpCisgICAgICAgICwgbV92ZXJ0ZXhTaGFkZXJVUkwodmVydGV4U2hhZGVy
VVJMKQorICAgICAgICAsIG1fZnJhZ21lbnRTaGFkZXJVUkwoZnJhZ21lbnRTaGFkZXJVUkwpCisg
ICAgICAgICwgbV9jYWNoZSgwKQogICAgICAgICAsIG1faXNWZXJ0ZXhTaGFkZXJMb2FkZWQoZmFs
c2UpCiAgICAgICAgICwgbV9pc0ZyYWdtZW50U2hhZGVyTG9hZGVkKGZhbHNlKQogICAgIHsKICAg
ICB9CisKKyAgICB+U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKCk7CiAgICAgCiAgICAgUmVmUHRy
PFN0eWxlU2hhZGVyPiBtX3ZlcnRleFNoYWRlcjsKICAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IG1f
ZnJhZ21lbnRTaGFkZXI7Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
aGFkZXI+IG1fY2FjaGVkVmVydGV4U2hhZGVyOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFNoYWRlcj4gbV9jYWNoZWRGcmFnbWVudFNoYWRlcjsKKworICAgIC8vIFRoZSBVUkxzIGZv
cm0gdGhlIGtleSBvZiB0aGUgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGluIHRoZSBjYWNoZSBh
bmQgYXJlIHVzZWQKKyAgICAvLyB0byBsb29rdXAgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSB3aGVuIGl0J3MgcmVtb3ZlZCBmcm9tIHRoZSBjYWNoZS4KKyAgICBLVVJMIG1fdmVydGV4U2hh
ZGVyVVJMOworICAgIEtVUkwgbV9mcmFnbWVudFNoYWRlclVSTDsKKworICAgIC8vIFRoZSBDYWNo
ZSBpcyByZXNwb25zaWJsZSBvZiBpbnZhbGlkYXRpbmcgdGhpcyByZWZlcmVuY2UuCisgICAgU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUqIG1fY2FjaGU7CiAgICAgCiAgICAgYm9vbCBtX2lz
VmVydGV4U2hhZGVyTG9hZGVkOwogICAgIGJvb2wgbV9pc0ZyYWdtZW50U2hhZGVyTG9hZGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTZiNTc5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAKQEAgLTAsMCArMSw4
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFT
IElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtQ2FjaGUuaCIKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgi
CisjaW5jbHVkZSAiU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1DYWNoZUtleShT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0qIHByb2dyYW0pIAoreworICAgIEFTU0VSVChwcm9ncmFt
LT52ZXJ0ZXhTaGFkZXJVUkwoKS5pc1ZhbGlkKCkgfHwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXJV
UkwoKS5pc1ZhbGlkKCkpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXJVUkwoKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXJVUkwoKSwgCisg
ICAgICAgIHByb2dyYW0tPnByb2dyYW1UeXBlKCksIHByb2dyYW0tPm1peFNldHRpbmdzKCksIHBy
b2dyYW0tPm1lc2hUeXBlKCkpOworfQorCitTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTo6
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUoKQoreworfQorCitTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZTo6flN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKCkKK3sKKyAgICAv
LyBNYWtlIHN1cmUgdGhlIHByb2dyYW1zIGFyZSBub3QgY2FsbGluZyBiYWNrIGludG8gdGhpcyBv
YmplY3QuCisgICAgZm9yIChDYWNoZU1hcDo6aXRlcmF0b3IgaXRlciA9IG1fY2FjaGUuYmVnaW4o
KSwgZW5kID0gbV9jYWNoZS5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgaXRl
ci0+dmFsdWUtPnNldENhY2hlKDApOworfQorCitTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpsb29rdXAoY29uc3QgQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8mIHByb2dyYW1JbmZvKSBjb25zdAoreworICAgIENhY2hlTWFwOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbV9jYWNoZS5maW5kKHByb2dyYW1JbmZvKTsKKyAgICByZXR1cm4gaXRlciAh
PSBtX2NhY2hlLmVuZCgpID8gaXRlci0+dmFsdWUgOiAwOworfQorCitTdHlsZUN1c3RvbUZpbHRl
clByb2dyYW0qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlOjpsb29rdXAoU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKSBjb25zdAoreworICAgIHJldHVybiBsb29rdXAocHJv
Z3JhbUNhY2hlS2V5KHByb2dyYW0pKTsKK30KKwordm9pZCBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW1DYWNoZTo6YWRkKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogcHJvZ3JhbSkKK3sKKyAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBrZXkgPSBwcm9ncmFtQ2FjaGVLZXkocHJvZ3JhbSk7Cisg
ICAgQVNTRVJUKG1fY2FjaGUuZmluZChrZXkpID09IG1fY2FjaGUuZW5kKCkpOworICAgIG1fY2Fj
aGUuc2V0KGtleSwgcHJvZ3JhbSk7CisgICAgcHJvZ3JhbS0+c2V0Q2FjaGUodGhpcyk7Cit9CisK
K3ZvaWQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU6OnJlbW92ZShTdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0qIHByb2dyYW0pCit7CisgICAgQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBt
X2NhY2hlLmZpbmQocHJvZ3JhbUNhY2hlS2V5KHByb2dyYW0pKTsKKyAgICBBU1NFUlQoaXRlciAh
PSBtX2NhY2hlLmVuZCgpKTsKKyAgICBtX2NhY2hlLnJlbW92ZShpdGVyKTsKK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRl
clByb2dyYW1DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZTE1MTgzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtQ2FjaGVfaAorI2RlZmluZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZV9oCisK
KyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8uaCIKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtOworY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87CisKK2NsYXNzIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUNhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSgpOworICAgIH5TdHlsZUN1
c3RvbUZpbHRlclByb2dyYW1DYWNoZSgpOworCisgICAgLy8gTG9va3VwcyBhIFN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbSB0aGF0IGhhcyBzaW1pbGFyIHBhcmFtZXRlcnMgd2l0aCB0aGUgc3BlY2lm
aWVkIHByb2dyYW0uCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBsb29rdXAoU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtKikgY29uc3Q7CisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
KiBsb29rdXAoY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKSBjb25zdDsKKworICAgIHZv
aWQgYWRkKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSopOworICAgIHZvaWQgcmVtb3ZlKFN0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbSopOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbywgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKj4gQ2FjaGVN
YXA7CisgICAgQ2FjaGVNYXAgbV9jYWNoZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbUNhY2hlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>