<?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>227530</bug_id>
          
          <creation_ts>2021-06-30 08:26:37 -0700</creation_ts>
          <short_desc>[Model] [macOS] Add support for rendering model resources</short_desc>
          <delta_ts>2021-07-01 10:24: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1773755</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 08:26:37 -0700</bug_when>
    <thetext>[Model] [macOS] Add support for rendering model resources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773760</commentid>
    <comment_count>1</comment_count>
      <attachid>432598</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 08:36:28 -0700</bug_when>
    <thetext>Created attachment 432598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773761</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-30 08:37:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/79968206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773763</commentid>
    <comment_count>3</comment_count>
      <attachid>432599</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 08:42:12 -0700</bug_when>
    <thetext>Created attachment 432599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773808</commentid>
    <comment_count>4</comment_count>
      <attachid>432599</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-30 10:34:34 -0700</bug_when>
    <thetext>Comment on attachment 432599
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.mm:29
&gt; +#if ENABLE(MODEL_ELEMENT)

We shouldn&apos;t use .mm for cross platform code like this. Please keep this a .cpp file and factor out the objective-c bits into their own classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773843</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 11:51:12 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 432599 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432599&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.mm:29
&gt; &gt; +#if ENABLE(MODEL_ELEMENT)
&gt; 
&gt; We shouldn&apos;t use .mm for cross platform code like this. Please keep this a
&gt; .cpp file and factor out the objective-c bits into their own classes.

Right, so add a Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm with these bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773874</commentid>
    <comment_count>6</comment_count>
      <attachid>432623</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 13:48:25 -0700</bug_when>
    <thetext>Created attachment 432623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773956</commentid>
    <comment_count>7</comment_count>
      <attachid>432623</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-30 17:31:20 -0700</bug_when>
    <thetext>Comment on attachment 432623
Patch

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

No test?

&gt; Source/WebCore/ChangeLog:12
&gt; +        &lt;model&gt; element is created and message the UIProcess through the ChromeClient provinding the UUID generated for it. When

Typo provinding

&gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm:43
&gt; +#include &lt;wtf/UUID.h&gt;
&gt; +SOFT_LINK_PRIVATE_FRAMEWORK(AssetViewer);

Add a space between these lines.

&gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm:66
&gt; +    auto fileName = FileSystem::encodeForFileName(createCanonicalUUIDString()) + &quot;.usdz&quot;;

What about if it is a .reality file?

&gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm:74
&gt; +    auto file = FileSystem::openFile(filePath, FileSystem::FileOpenMode::Write);
&gt; +    if (file &lt;= 0)
&gt; +        return;
&gt; +
&gt; +    FileSystem::writeToFile(file, m_data-&gt;data(), m_data-&gt;size());
&gt; +    FileSystem::closeFile(file);
&gt; +    m_filePath = filePath;

Can you put a note in here that this is a temporary solution and we don&apos;t want to write to files?

&gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm:92
&gt; +    FloatSize size;
&gt; +    if (auto* renderer = this-&gt;renderer())
&gt; +        size = renderer-&gt;absoluteBoundingBoxRect(false).size();

If there isn&apos;t a renderer you probably just want to exit.

if (!this-&gt;renderer())
  return;

auto size = this-&gt;renderer()-&gt;aBB...

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:134
&gt; +    else
&gt; +        iterator-&gt;value = preview;

I didn&apos;t know you could do this! Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774008</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 23:25:28 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #7)
&gt; Comment on attachment 432623 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432623&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm:66
&gt; &gt; +    auto fileName = FileSystem::encodeForFileName(createCanonicalUUIDString()) + &quot;.usdz&quot;;
&gt; 
&gt; What about if it is a .reality file?

Filed bug 227568, will add a reference to it in the commit.

&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm:74
&gt; &gt; +    auto file = FileSystem::openFile(filePath, FileSystem::FileOpenMode::Write);
&gt; &gt; +    if (file &lt;= 0)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    FileSystem::writeToFile(file, m_data-&gt;data(), m_data-&gt;size());
&gt; &gt; +    FileSystem::closeFile(file);
&gt; &gt; +    m_filePath = filePath;
&gt; 
&gt; Can you put a note in here that this is a temporary solution and we don&apos;t
&gt; want to write to files?

Filed bug 227567 and adding a reference to it in the commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774009</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 23:32:23 -0700</bug_when>
    <thetext>Committed r279451 (239307@main): &lt;https://commits.webkit.org/239307@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774154</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-07-01 10:24:14 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #5)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; Comment on attachment 432599 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=432599&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.mm:29
&gt; &gt; &gt; +#if ENABLE(MODEL_ELEMENT)
&gt; &gt; 
&gt; &gt; We shouldn&apos;t use .mm for cross platform code like this. Please keep this a
&gt; &gt; .cpp file and factor out the objective-c bits into their own classes.
&gt; 
&gt; Right, so add a
&gt; Source/WebCore/Modules/model-element/HTMLModelElementCocoa.mm with these
&gt; bits?

I usually try to add some c++ wrapper class in its own files instead to avoid having multiple implementation files for the same header which is not something that is very understandable.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432598</attachid>
            <date>2021-06-30 08:36:28 -0700</date>
            <delta_ts>2021-06-30 08:42:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227530-20210630173627.patch</filename>
            <type>text/plain</type>
            <size>65617</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhMDQ1MjlhNjU5YzY0NWVhOTViM2M4
YTIxYWE1YjkyYjc0MjkzMmIuLjYwZDJhNzhiMDkwM2RkNzEzMTc0MjBkMDNjZWY3ZmE5YTNlMGM3
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVsXSBbbWFjT1NdIEFkZCBzdXBwb3J0IGZv
ciByZW5kZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY29tcGlsZS10aW1lIGZsYWcgaW5kaWNhdGlu
ZyB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBBU1ZJbmxpbmVQcmV2aWV3IFNQSSBvbiBtYWNPUy4K
KyAgICAgICAgV2Ugb25seSBkZWZpbmUgaXQgd2hlbiB0aGUgaGVhZGVyIGl0c2VsZiBpcyBwcmVz
ZW50IGZvciBub3cgdG8gYXZvaWQgaXNzdWVzIHdpdGggb2xkZXIgbWFjT1MKKyAgICAgICAgMTIg
U0RLcywgYnV0IHVsdGltYXRlbHkgd2Ugd2lsbCBvbmx5IHVzZSB0aGUgbWFjT1MgdmVyc2lvbiBj
aGVjay4KKwkKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjEtMDYtMzAgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBi
dWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2ODE3MDExNGRhMDgzYjYyMmUxODM5OTNjNDM0NDJhMDY3ZjQ4
MjU0Li43ZTIzYThkZWFhNjgzZTcyMmQxNGYwZWVlMjk5MTQ0OThkNDg0YzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVsXSBbbWFjT1NdIEFkZCBzdXBwb3J0IGZvciByZW5k
ZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjc1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBPbiBtYWNPUywgQVNWSW5saW5lUHJldmlldyByZXF1aXJlcyBhbiBpbnN0
YW5jZSBpbiBib3RoIHRoZSBXZWJQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNzIHRvIGV4aXN0IHdp
dGggYSBtYXRjaGluZyBVVUlELgorCisgICAgICAgIE9uIHRoZSBXZWJDb3JlIHNpZGUsIGluIHRo
ZSBXZWJQcm9jZXNzLCBhZnRlciB3cml0aW5nIHRoZSBtb2RlbCByZXNvdXJjZSBhcyBhIGZpbGUg
dG8gZGlzaywgd2UgY3JlYXRlIGFuIGluc3RhbmNlIHdoZW4gYQorICAgICAgICA8bW9kZWw+IGVs
ZW1lbnQgaXMgY3JlYXRlZCBhbmQgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHRocm91Z2ggdGhlIENo
cm9tZUNsaWVudCBwcm92aW5kaW5nIHRoZSBVVUlEIGdlbmVyYXRlZCBmb3IgaXQuIFdoZW4KKyAg
ICAgICAgdGhlIFVJUHJvY2VzcyBpcyBkb25lIHByb2Nlc3NpbmcgdGhpcyBtZXNzYWdlLCBpdCB3
aWxsIHJlcGx5IHdpdGggYW5vdGhlciBtZXNzYWdlIHdoaWNoIGNhbGxzIGludG8KKyAgICAgICAg
SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHdpdGgg
dGhlIG1hdGNoaW5nIFVVSUQgYW5kIGEgY29udGV4dCBJRCBmb3IgdGhlIHJlbW90ZSBjb250ZXh0
LgorICAgICAgICBXZSBjYW4gdGhlbiBzZXQgdGhhdCByZW1vdGUgY29udGV4dCBJRCBvbiBvdXIg
QVNWSW5saW5lUHJldmlldyBpbnN0YW5jZS4KKworICAgICAgICBXZSBhbHNvIGludHJvZHVjZSBh
IEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBtZXRob2Qgc3VjaCB0aGF0IFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbigpIGNhbiBjYWxsCisgICAgICAgIGl0
IHRvIGhvc3QgdGhlIEFTVklubGluZVByZXZpZXcgbGF5ZXIuCisKKyAgICAgICAgKiBNb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6fkhUTUxNb2RlbEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6Y2xlYXJGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQ6Om1vZGVsRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6
OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJh
dGlvbik6CisKIDIwMjEtMDYtMzAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgPGRpYWxvZz4gZWxlbWVudCBjbG9zZSBldmVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZWY3YmI3MDA3MWZhNjk4MzBkOWVjYmU1OTczNDc3OWE4YzEz
YTdlMS4uN2U0ZmU0ZWMzNWM1YzlhYWM4YWE1MTc5YTNiYjYzOGY0Zjc5NGQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVsXSBbbWFjT1NdIEFkZCBzdXBwb3J0
IGZvciByZW5kZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEZWNsYXJlIHRoZSBBU1ZJbmxpbmVQcmV2aWV3IGNsYXNz
IGZvciBtYWNPUy4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaDogQWRkZWQuCisKIDIwMjEt
MDYtMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01v
ZGVsXSBbaU9TXSBBZGQgc3VwcG9ydCBmb3IgbWFuaXB1bGF0aW5nIDxtb2RlbD4gaW5saW5lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGVlNGUwZjIxYTBlNjY4MzNkZGE4ZDZkNjA1MThiZmYyYjI0NTUxODEuLjQ1OWZm
ZjA2ZWI3MzVkYmU2ZjJiMzYzNGJjNGU1OTA3MDA3YWUxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDMgQEAKKzIwMjEtMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgW01vZGVsXSBbbWFjT1NdIEFkZCBzdXBwb3J0IGZvciByZW5kZXJpbmcgbW9kZWwg
cmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjc1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBPbiBtYWNPUywgQVNWSW5saW5lUHJldmlldyByZXF1aXJlcyBhbiBpbnN0YW5jZSBpbiBib3Ro
IHRoZSBXZWJQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNzIHRvIGV4aXN0IHdpdGggYSBtYXRjaGlu
ZyBVVUlELgorCisgICAgICAgIE9uIHRoZSBXZWJLaXQgc2lkZSwgaW4gdGhlIFVJUHJvY2Vzcywg
d2UgcmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgV2ViUHJvY2VzcyB3aGVuIHRoZSBBU1ZJbmxp
bmVQcmV2aWV3IGluIHRoYXQgcHJvY2VzcworICAgICAgICB3YXMgY3JlYXRlZCB3aXRoIGl0cyBn
ZW5lcmF0ZWQgVVVJRC4gV2UgcHJvdmlkZSB0aGlzIHRvIHRoZSBNb2RlbEVsZW1lbnRDb250cm9s
bGVyLCBzZXQgdGhlIHJlbW90ZSBjb25uZWN0aW9uIHVwIGFuZCBsb2FkCisgICAgICAgIHRoZSBm
aWxlLiBXaGVuIHRob3NlIHRhc2tzIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSB3ZSBtZXNzYWdlIGJh
Y2sgdGhlIFdlYlByb2Nlc3Mgd2l0aCB0aGUgVVVJRCBhbmQgdGhlIHByb3ZpZGVkIEVsZW1lbnRD
b250ZXh0CisgICAgICAgIHRvIHRhbGsgYmFjayB0byB0aGUgSFRNTE1vZGVsRWxlbWVudCBpbnN0
YW5jZSB0aGF0IGluaXRpYXRlZCB0aGUgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNzIGluIHRoZSBm
aXJzdCBwbGFjZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xs
ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xs
ZXI6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9N
b2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vZGVs
RWxlbWVudENvbnRyb2xsZXI6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpwYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0
SWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpt
b2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVt
ZW50RGlkQ3JlYXRlUHJldmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxl
bWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMjEtMDYtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gTWlncmF0ZSBXZWJSVEMgVURQIHNvY2tldCBoYW5kbGluZyB0
byBOVyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMjA3NDgxMDJjMDNkZWI2ZmIxNGI1ZWZh
NDZkMzNhZTE0N2VkMTNjYy4uMDZmOGY5ZmEwOTU1NWQxYzMwMzNhN2I5YzQ2NDFlYjEyYjUyNThh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTEwMTQsNiArMTAxNCwxMCBAQAogI2lmIChQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgIVBMQVRGT1JNKElPU19TSU1V
TEFUT1IpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE1MDAwMAogI2Rl
ZmluZSBIQVZFX0FSS0lUX0lOTElORV9QUkVWSUVXX0lPUyAxCiAjZW5kaWYKKworI2lmIFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNk
ZWZpbmUgSEFWRV9BUktJVF9JTkxJTkVfUFJFVklFV19NQUMgMQorI2VuZGlmCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWVhNTg1YTlmZGQzMGRh
YmYzNzEyZWIzODg4OWRkMGNkNTA4NDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKLQotI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKQotCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJET01Q
cm9taXNlUHJveHkuaCIKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgotI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRl
ICJIVE1MU291cmNlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKLSNpbmNs
dWRlICJKU0hUTUxNb2RlbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJNb2RlbC5oIgotI2luY2x1ZGUg
IlJlbmRlck1vZGVsLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNs
dWRlIDx3dGYvVVJMLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEhUTUxNb2RlbEVsZW1lbnQpOwotCi1IVE1MTW9kZWxFbGVtZW50OjpIVE1M
TW9kZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9yZWFk
eVByb21pc2UgeyBtYWtlVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4oKnRoaXMsICZIVE1MTW9kZWxF
bGVtZW50OjpyZWFkeVByb21pc2VSZXNvbHZlKSB9Ci17Ci19Ci0KLUhUTUxNb2RlbEVsZW1lbnQ6
On5IVE1MTW9kZWxFbGVtZW50KCkKLXsKLSAgICBpZiAobV9yZXNvdXJjZSkgewotICAgICAgICBt
X3Jlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX3Jlc291cmNlID0gbnVs
bHB0cjsKLSAgICB9Ci19Ci0KLVJlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxNb2RlbEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKLX0KLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSFRNTE1vZGVsRWxlbWVudDo6
bW9kZWxEYXRhKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZGF0YUNvbXBsZXRlKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtX2RhdGE7Ci19Ci0KLVJlZlB0cjxNb2RlbD4g
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWwoKSBjb25zdAotewotICAgIGlmICghbV9kYXRhQ29tcGxl
dGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHJldHVybiBtX21vZGVsOwot
fQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNvdXJjZXNDaGFuZ2VkKCkKLXsKLSAgICBpZiAo
IWRvY3VtZW50KCkuaGFzQnJvd3NpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgc2V0U291cmNlVVJM
KFVSTCB7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKSkgewotICAgICAg
ICAvLyBGSVhNRTogZm9yIG5vdyB3ZSB1c2UgdGhlIGZpcnN0IHZhbGlkIFVSTCB3aXRob3V0IGxv
b2tpbmcgYXQgdGhlIG1pbWUtdHlwZS4KLSAgICAgICAgYXV0byB1cmwgPSBlbGVtZW50LmdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cik7Ci0gICAgICAgIGlmICh1cmwu
aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBzZXRTb3VyY2VVUkwodXJsKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNldFNvdXJjZVVSTChVUkwgeyB9KTsK
LX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwp
Ci17Ci0gICAgaWYgKHVybCA9PSBtX3NvdXJjZVVSTCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9zb3VyY2VVUkwgPSB1cmw7Ci0KLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIG1fZGF0YUNv
bXBsZXRlID0gZmFsc2U7Ci0KLSAgICBpZiAobV9yZXNvdXJjZSkgewotICAgICAgICBtX3Jlc291
cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICBpZiAoIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQotICAgICAg
ICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7Ci0KLSAg
ICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVSZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhU
TUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJlc29sdmUpOwotCi0gICAgaWYgKG1fc291cmNl
VVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpOwotICAgIG9wdGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpNb2RlbDsKLSAgICAvLyBGSVhNRTogU2V0IG90aGVyIG9wdGlvbnMuCi0KLSAgICBh
dXRvIGNyb3NzT3JpZ2luQXR0cmlidXRlID0gcGFyc2VDT1JTU2V0dGluZ3NBdHRyaWJ1dGUoYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cikp
OwotICAgIGF1dG8gcmVxdWVzdCA9IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCB7IG1fc291cmNlVVJMIH0sIFdURk1vdmUob3B0aW9ucyksIGRvY3Vt
ZW50KCksIGNyb3NzT3JpZ2luQXR0cmlidXRlKTsKLSAgICByZXF1ZXN0LnNldEluaXRpYXRvcigq
dGhpcyk7Ci0KLSAgICBhdXRvIHJlc291cmNlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RNb2RlbFJlc291cmNlKFdURk1vdmUocmVxdWVzdCkpOwotICAgIGlmICgh
cmVzb3VyY2UuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlamVjdChF
eGNlcHRpb24geyBOZXR3b3JrRXJyb3IgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9yZXNvdXJjZSA9IHJl
c291cmNlLnZhbHVlKCk7Ci0gICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKLX0KLQot
SFRNTE1vZGVsRWxlbWVudCYgSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNlUmVzb2x2ZSgp
Ci17Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1zdGF0aWMgU3RyaW5nJiBzaGFyZWRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAgcmV0dXJuIHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNl
dE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKLX0KLQotY29uc3QgU3Ry
aW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci19Ci0KLS8vIE1B
Uks6IC0gRE9NIG92ZXJyaWRlcy4KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkK
LXsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5l
d0RvY3VtZW50KTsKLSAgICBzb3VyY2VzQ2hhbmdlZCgpOwotfQotCi0vLyBNQVJLOiAtIFJlbmRl
cmluZyBvdmVycmlkZXMuCi0KLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKLXsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTW9k
ZWw+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci19Ci0KLS8vIE1BUks6IC0gQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQKLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQotewotICAgIGF1dG8g
aW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIgPSBbJl0gewotICAgICAg
ICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX3Jlc291cmNlID0g
bnVsbHB0cjsKLQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgfTsKLQot
ICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7Ci0KLSAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKLQotICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7
IE5ldHdvcmtFcnJvciB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fZGF0YUNv
bXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZSgqbV9kYXRhKTsKLQot
ICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7Ci0KLSAgICBt
X3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggNjJjZjYxMTdjMzNmZjY3YjZlZDIx
MmY4MmZhY2JkNDU2OGVhODQ5My4uZTg1MGNkZjI4OGNhNzg4MWQ1Nzg1ZDI1YzNjNmEzZDE5MjUy
Njk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0zMiw5ICszMiwxNCBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
RExUeXBlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKKyNpZiBIQVZFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKK09CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmlldzsKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsOwpAQCAtNTAsNiArNTUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOwogICAgIGNvbnN0IFVSTCYgY3VycmVu
dFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CiAKKyAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisKICAgICB1c2luZyBSZWFkeVByb21pc2UgPSBET01Q
cm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxIVE1MTW9kZWxFbGVt
ZW50Pj47CiAgICAgUmVhZHlQcm9taXNlJiByZWFkeSgpIHsgcmV0dXJuIG1fcmVhZHlQcm9taXNl
LmdldCgpOyB9CiAKQEAgLTU5LDEyICs2NiwyMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5n
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxFbGVtZW50
Q2FjaGVEaXJlY3RvcnkoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5saW5lUHJldmll
d0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJ
ZCk7CisKIHByaXZhdGU6CiAgICAgSFRNTE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgc2V0U291cmNlVVJMKGNvbnN0IFVSTCYpOwogICAg
IEhUTUxNb2RlbEVsZW1lbnQmIHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKIAorI2lmIEhBVkUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIHZvaWQgY2xlYXJGaWxlKCk7CisgICAgdm9pZCBj
cmVhdGVGaWxlKCk7CisgICAgdm9pZCBtb2RlbERpZENoYW5nZSgpOworI2VuZGlmCisKICAgICAv
LyBET00gb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCkBAIC04MSw2ICs5
NiwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRl
IHsgZmFsc2UgfTsKKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIFN0
cmluZyBtX2ZpbGVQYXRoOworICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGlu
ZVByZXZpZXc7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYThkMjY5MDU3NDQ4M2U2MTg2ZmJmYmIzMGNmYzZhODNlZmNiMmUy
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50Lm1tCkBAIC0wLDAgKzEsMzI3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJET01Qcm9taXNlUHJv
eHkuaCIKKyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJIVE1MU291
cmNlRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0hU
TUxNb2RlbEVsZW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTW9kZWwu
aCIKKyNpbmNsdWRlICJSZW5kZXJNb2RlbC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJF
VklFV19NQUMpCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL21hYy9TeXN0ZW1Q
cmV2aWV3U1BJLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CitTT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUksoQXNzZXRWaWV3ZXIpOworU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJ
bmxpbmVQcmV2aWV3KTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChIVE1MTW9kZWxFbGVtZW50KTsKKworSFRNTE1vZGVsRWxlbWVu
dDo6SFRNTE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAs
IG1fcmVhZHlQcm9taXNlIHsgbWFrZVVuaXF1ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmSFRN
TE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNlUmVzb2x2ZSkgfQoreworfQorCitIVE1MTW9kZWxF
bGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCgpCit7CisgICAgaWYgKG1fcmVzb3VyY2UpIHsKKyAg
ICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJj
ZSA9IG51bGxwdHI7CisgICAgfQorCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
CisgICAgY2xlYXJGaWxlKCk7CisjZW5kaWYKK30KKworUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IEhU
TUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTE1vZGVsRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBIVE1M
TW9kZWxFbGVtZW50Ojptb2RlbERhdGEoKSBjb25zdAoreworICAgIGlmICghbV9kYXRhQ29tcGxl
dGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1fZGF0YTsKK30KKwor
UmVmUHRyPE1vZGVsPiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbCgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2RhdGFDb21wbGV0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgcmV0
dXJuIG1fbW9kZWw7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c291cmNlc0NoYW5nZWQo
KQoreworICAgIGlmICghZG9jdW1lbnQoKS5oYXNCcm93c2luZ0NvbnRleHQoKSkgeworICAgICAg
ICBzZXRTb3VyY2VVUkwoVVJMIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4oKnRo
aXMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93IHdlIHVzZSB0aGUgZmlyc3QgdmFsaWQg
VVJMIHdpdGhvdXQgbG9va2luZyBhdCB0aGUgbWltZS10eXBlLgorICAgICAgICBhdXRvIHVybCA9
IGVsZW1lbnQuZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKTsKKyAg
ICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIHNldFNvdXJjZVVSTCh1cmwp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0U291cmNl
VVJMKFVSTCB7IH0pOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsID09IG1fc291cmNlVVJMKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3NvdXJjZVVSTCA9IHVybDsKKworICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgbV9kYXRhQ29tcGxldGUgPSBmYWxzZTsKKworICAgIGlmIChtX3Jlc291cmNlKSB7Cisg
ICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgIG1fcmVzb3Vy
Y2UgPSBudWxscHRyOworICAgIH0KKworICAgIGlmICghbV9yZWFkeVByb21pc2UtPmlzRnVsZmls
bGVkKCkpCisgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRF
cnJvciB9KTsKKworICAgIG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1ZVJlZjxSZWFkeVByb21p
c2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNlUmVzb2x2ZSk7CisKKyAg
ICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKSB7CisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJF
VklFV19NQUMpCisgICAgICAgIGNsZWFyRmlsZSgpOworI2VuZGlmCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291
cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgb3B0aW9ucy5k
ZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246Ok1vZGVsOworICAgIC8vIEZJ
WE1FOiBTZXQgb3RoZXIgb3B0aW9ucy4KKworICAgIGF1dG8gY3Jvc3NPcmlnaW5BdHRyaWJ1dGUg
PSBwYXJzZUNPUlNTZXR0aW5nc0F0dHJpYnV0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSk7CisgICAgYXV0byByZXF1ZXN0ID0gY3Jl
YXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0IHsgbV9zb3Vy
Y2VVUkwgfSwgV1RGTW92ZShvcHRpb25zKSwgZG9jdW1lbnQoKSwgY3Jvc3NPcmlnaW5BdHRyaWJ1
dGUpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsKKworICAgIGF1dG8gcmVzb3Vy
Y2UgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdE1vZGVsUmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgaWYgKCFyZXNvdXJjZS5oYXNfdmFsdWUoKSkgewor
ICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisKKyAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKKyAgICBtX3Jl
c291cmNlLT5hZGRDbGllbnQoKnRoaXMpOworfQorCitIVE1MTW9kZWxFbGVtZW50JiBIVE1MTW9k
ZWxFbGVtZW50OjpyZWFkeVByb21pc2VSZXNvbHZlKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK3N0YXRpYyBTdHJpbmcmIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7
Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KCkgPSBwYXRoOworfQorCitjb25zdCBTdHJpbmcmIEhUTUxNb2RlbEVsZW1lbnQ6Om1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkoKTsKK30KKworLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgorCit2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQoreworICAgIEhUTUxFbGVtZW50OjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgIHNvdXJjZXND
aGFuZ2VkKCk7Cit9CisKKy8vIE1BUks6IC0gUmVuZGVyaW5nIG92ZXJyaWRlcy4KKworUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQoreworICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNb2RlbD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKK30KKworLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAorCit2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoreworICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKyAgICBBU1NFUlQobV9kYXRhKTsKKyAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKK30KKwordm9pZCBIVE1MTW9kZWxF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpCit7CisgICAgYXV0byBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlciA9IFsmXSB7CisgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOworCisgICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJlci0+
dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB9OworCisgICAgaWYgKHJlc291cmNlLmxvYWRGYWls
ZWRPckNhbmNlbGVkKCkpIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKworICAgICAgICBp
bnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOworCisgICAgICAgIG1f
cmVhZHlQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTmV0d29ya0Vycm9yIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOworICAgIG1fbW9k
ZWwgPSBNb2RlbDo6Y3JlYXRlKCptX2RhdGEpOworCisgICAgaW52YWxpZGF0ZVJlc291cmNlSGFu
ZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKKworICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0
aGlzKTsKKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIG1vZGVsRGlk
Q2hhbmdlKCk7CisjZW5kaWYKK30KKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICBjbGVhckZpbGUo
KTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVjdG9yeUV4aXN0
cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVjdG9y
eSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRpcmVjdG9y
eUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVjdG9y
eSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUo
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3Rvcnks
IGZpbGVOYW1lKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmNsZWFyRmlsZSgpCit7CisgICAgaWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwor
ICAgIG1fZmlsZVBhdGggPSBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICBjcmVhdGVGaWxlKCk7CisKKyAgICBGbG9hdFNp
emUgc2l6ZTsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAg
ICAgICBzaXplID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5zaXpl
KCk7CisKKyAgICBtX2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZp
ZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpXSk7CisgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1l
bnQ6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6
ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZyku
dXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIGlmIChh
dXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlE
U3RyaW5nLCBzaXplKTsKK30KKyNlbmRpZgorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGlu
ZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBj
b250ZXh0SWQpCit7CisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgaWYg
KHV1aWQgIT0gKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpIHsKKyAg
ICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdE
aWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0
ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1
aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgW21faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250ZXh0OmNvbnRleHRJZF07CisgICAg
TE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24g
Zm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChhdXRvKiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxl
bWVudCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odXVpZCk7CisgICAgVU5VU0VEX1BBUkFN
KGNvbnRleHRJZCk7CisjZW5kaWYKK30KKworUGxhdGZvcm1MYXllciogSFRNTE1vZGVsRWxlbWVu
dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCisgICAgcmV0dXJuIFttX2lubGluZVByZXZpZXcgbGF5ZXJdOworI2Vsc2UKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTU9ERUxf
RUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlM2UzODE1N2JmN2Q4OWRjMGU2NzJjYzE4NTM2NGY2NjgxYmQ3MGMwLi41
NTMzYThiMGI2YjZiNWM3YzU4NGFkZWFiZWU0MWJkNmU4YmQ2NmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDgsNiArMTQ4
LDcgQEAKIAkJNUM3Qzc4NzQyM0FDM0U3NzAwNjVGNDdFIC8qIE1hbmFnZWRDb25maWd1cmF0aW9u
U29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0TGlu
ay5tbSAqLzsgfTsKIAkJNUM3Qzc4NzYyM0FDM0U4NTAwNjVGNDdFIC8qIE1hbmFnZWRDb25maWd1
cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzdDNzg3NTIzQUMzRTg1MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAq
LzsgfTsKIAkJNjNDN0VEQzcyMUFGQUUwNDAwNkE3Qjk5IC8qIE5TUHJvZ3Jlc3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRTM2OUY5MjFBRkE4
M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJLmggKi87IH07CisJCTcxQjExNDIwMjY4MjNBQ0Qw
MDRENjcwMSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIxMTQxRjI2ODIzQUNEMDA0RDY3MDEgLyogU3lzdGVtUHJl
dmlld1NQSS5oICovOyB9OwogCQk3MkU1QkU5NzI2NzlBODBBMDBBREJGQTkgLyogVmlkZW9Ub29s
Ym94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MkU1QkU5NjI2NzlBODA5MDBBREJGQTkgLyogVmlkZW9Ub29sYm94U1BJLmggKi87IH07CiAJCTdB
MzZEMEY5MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMzZEMEY4MjIzQUQ5QUIwMEIwNTIy
RSAvKiBDb21tb25DcnlwdG9TUEkuaCAqLzsgfTsKIAkJN0EzQTZBODAyMENBREI0NzAwMzE3QUFF
IC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggKi87IH07CkBA
IC0zNjcsNiArMzY4LDcgQEAKIAkJNUM3Qzc4NzIyM0FDM0U3NzAwNjVGNDdFIC8qIE1hbmFnZWRD
b25maWd1cmF0aW9uU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBNYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzdDNzg3NTIzQUMzRTg1MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3Vy
YXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZp
Z3VyYXRpb25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjNFMzY5RjkyMUFG
QTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVz
c1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxMTQxRjI2ODIzQUNEMDA0
RDY3MDEgLyogU3lzdGVtUHJldmlld1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
RTVCRTk2MjY3OUE4MDkwMEFEQkZBOSAvKiBWaWRlb1Rvb2xib3hTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBMzZEMEY4MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBM0E2QTdGMjBDQURCNDYwMDMxN0FBRSAvKiBO
U0ltYWdlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TSW1hZ2VTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyOCw2ICs2MzAsNyBAQAogCQkJCTBD
Nzc4NTg1MUY0NTEzMEYwMEY0RUJCNiAvKiBQSVBTUEkuaCAqLywKIAkJCQkwQzc3ODU4NzFGNDUx
MzBGMDBGNEVCQjYgLyogUXVpY2tMb29rTWFjU1BJLmggKi8sCiAJCQkJQTExNzVCNDgxRjZBRkY4
RTAwQzRCOUYwIC8qIFNwZWVjaFN5bnRoZXNpc1NQSS5oICovLAorCQkJCTcxQjExNDFGMjY4MjNB
Q0QwMDRENjcwMSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8sCiAJCQkJMEM3Nzg1ODgxRjQ1MTMw
RjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBtYWM7CkBAIC05OTAsNiArOTkzLDcgQEAKIAkJCQk5M0IzOEVDMjI1ODIxRDIyMDAxOThFNjMg
LyogU3BlZWNoU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0OTFGNkFGRjhFMDBDNEI5
RjAgLyogU3BlZWNoU3ludGhlc2lzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkyMTFG
NDNBNEM3MDAyRUFDMDIgLyogU1FMaXRlM1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzFCMTE0
MjAyNjgyM0FDRDAwNEQ2NzAxIC8qIFN5c3RlbVByZXZpZXdTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBM0FCNkU1ODFGM0QxRERCMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0
ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNBQjZFNjQxRjNEMjE3RjAwOUMxNEIxIC8qIFN5
c3RlbVNsZWVwTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjNjlm
MjE4Njg4NTQ2YTQwZTk1OTg5MDgwNDlkNTNjM2VhNzc2YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmgKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaWYg
SEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisjaW1wb3J0IDxBc3NldFZpZXdlci9BU1ZJ
bmxpbmVQcmV2aWV3Lmg+CisjZW5kaWYKKworI2Vsc2UKKworI2lmIEhBVkUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQorCitAY2xhc3MgQVNWSW5saW5lUHJldmlldzsKKworQGludGVyZmFjZSBB
U1ZJbmxpbmVQcmV2aWV3IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNVVUlEICp1dWlkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDQUxheWVy
ICpsYXllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgdWludDMyX3QgY29udGV4
dElkOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBVVUlEOihOU1VVSUQgKil1
dWlkOworLSAodm9pZClzZXR1cFJlbW90ZUNvbm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWhhbmRsZXI7CistICh2b2lkKXBy
ZXBhcmVQcmV2aWV3T2ZGaWxlQXRVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSloYW5kbGVyOworLSAodm9pZClzZXRS
ZW1vdGVDb250ZXh0Oih1aW50MzJfdCljb250ZXh0SWQ7CisKK0BlbmQKKworI2VuZGlmCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZWJjMjc5ZTUxYWMwMDk3MDdhMmE3MmNiYjU4M2YzZWFm
YzM0OTM1Li40MDNlNmZlNDg4ODlkMzVmZDc0MjM3MDczOTg2M2RmYzhjZGM4OTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTg5LDcgKzE4OSw2IEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1J0cFJlY2VpdmVyVHJhbnNmb3JtQmFja2VuZC5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlclRyYW5zZm9ybUJhY2tlbmQuY3BwCiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lLmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3Bw
CiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAogTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
ZGVlNzI1ZmFlMzE4NmI2NzI3OTE3N2U2NzI2NGY3MmI3M2U5NTI1MS4uMmIzNDc4OTdkYTMwZWZk
ZWNiNjE3ZTk0MzY4YjM4NjkxMDQ4NmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC05
OSw2ICs5OSw3IEBAIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFn
ZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Q29jb2EuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5tbQogTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3Bl
ZWNoUmVjb2duaXplckNvY29hLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODM3ZjFiMTJjOWY0YmI1M2M2YWFiOTdjM2UwOTVk
NDkyYjk2YWY1NC4uODY5YWJmOWVjZTc3YjIzZTE3NzgwNTFiYjRlY2RkNjliMjE2NGRmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTAxODgsNiArMTAxODgsNyBAQAogCQk3MTNGMUQ1QjIzREYyNTYwMDAzRjVFRkEgLyogSlNH
ZXRBbmltYXRpb25zT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0dldEFuaW1hdGlvbnNPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
M0YxRDVDMjNERjI1NjAwMDNGNUVGQSAvKiBKU0dldEFuaW1hdGlvbnNPcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2V0QW5pbWF0aW9uc09wdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTQxMzE0NzFEQzlENkFGMDAzMzYx
MDcgLyogZnVsbHNjcmVlbi1zdXBwb3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gImZ1bGxzY3JlZW4tc3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcxNDkyNkY2MjYxNzdEREMwMEU0MkMwQSAvKiBIVE1MTW9kZWxFbGVtZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTE1vZGVsRWxlbWVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzE0OTVERDgyMDJCMDZEQzAwQURGRDM0IC8qIEpTRWZmZWN0VGlt
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWZmZWN0VGlt
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE0OTVEREEyMDJCMDZERTAw
QURGRDM0IC8qIEpTRWZmZWN0VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRWZmZWN0VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNEM3
QzYwMUZEQUQyNzkwMEYyQkVFMSAvKiBBbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFuaW1hdGlvblBsYXliYWNrRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAyNzQsNyArMTAyNzUsNiBAQAogCQk3
MUExQjYwNzFERUU1QTgyMDA3M0JDRkIgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBlbjsg
cGF0aCA9ICJlbi5scHJvai9tb2Rlcm4tbWVkaWEtY29udHJvbHMtbG9jYWxpemVkLXN0cmluZ3Mu
anMiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTcxQTNEMTdEMjU2MkI4MjQwMDY0
RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUTUxNb2RlbEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFB
M0QxN0YyNTYyQjgyNDAwNjRFMkE2IC8qIEhUTUxNb2RlbEVsZW1lbnQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEhUTUxNb2RlbEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3MUEzRDE4MDI1NjJCODI1MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTW9kZWxFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBM0QxODIyNTYyQkREQjAwNjRFMkE2
IC8qIEpTSFRNTE1vZGVsRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxNb2RlbEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MUEzRDE4MzI1NjJCRERCMDA2NEUyQTYgLyogSlNIVE1MTW9kZWxFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE1vZGVsRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZH
UGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTE5
LDkgKzIzMTE5LDkgQEAKIAkJNzFGODQ5Q0MyNTY1QUI3RTAwOEMzN0YyIC8qIG1vZGVsLWVsZW1l
bnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTcxQTNE
MTgwMjU2MkI4MjUwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmNwcCAqLywKIAkJCQk3MUEz
RDE3RDI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovLAogCQkJCTcxQTNE
MTdGMjU2MkI4MjQwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmlkbCAqLywKKwkJCQk3MTQ5
MjZGNjI2MTc3RERDMDBFNDJDMEEgLyogSFRNTE1vZGVsRWxlbWVudC5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gIm1vZGVsLWVsZW1lbnQiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMmVjOTkyOGQ0OTRjMTY0MmMw
ZTIxNTYxYWJlNGMzNWUzZDJmYmRmYi4uM2YyMjY0Yjg4MzczMTBkZWFhZjIyNzY0ZDQ2OWJmYTk3
ODlhMWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU3OCw2
ICs1NzgsMTIgQEAgdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c2hvd1NoYXJlU2hlZXQoU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGUKIHsKIH0KIAorI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQordm9pZCBFbXB0eUNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QKK3sKK30KKyNlbmRpZgor
CiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAppbmRleCA2YzcwODllMTgxZDBhODcyYzQ5NmJmZmUxZjUxMjQ3Y2FmMjIzMjRlLi45ZTFkODg5
NDg2OWE5OGYzMDIyOGNmY2U5ZTM0YTBiYTYyODM0Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCkBAIC0yMTcsNiArMjE3LDEwIEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50
IDogcHVibGljIENocm9tZUNsaWVudCB7CiAgICAgYm9vbCBzaG91bGROb3RpZnlPbkZvcm1DaGFu
Z2VzKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwg
eyByZXR1cm4gbnVsbHB0cjsgfQorCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgdm9p
ZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBj
b25zdCBmaW5hbDsKKyNlbmRpZgogfTsKIAogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGVtcHR5
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IGI1NTc3ZWQ5Y2IwODlhN2IyNWMyOGZhNWY5OTRlMGMzM2E3MDk1ODMuLjMwZGMxMGM2MGFk
ODgwZTdlYWZjZDA3MDlkYTc0YzZmYmQxNTU3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtNzgsNiArNzgsMTAgQEAgY2xhc3MgV0FLUmVzcG9uZGVyOwogI2luY2x1ZGUgIk1l
ZGlhVXNhZ2VJbmZvLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorY2xh
c3MgSFRNTE1vZGVsRWxlbWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQlhSKQogI2luY2x1
ZGUgIlBsYXRmb3JtWFIuaCIKICNlbmRpZgpAQCAtNTk2LDYgKzYwMCwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRNb2RlQ2hhbmdlZCgp
IHsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIHZv
aWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikg
Y29uc3QgeyB9OworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGll
bnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDRlOTEz
MmNkMzVkNzA1M2ZkMzA4Mjk2OTliMGU4Y2VhNTgwNGEwMjQuLmQ0OTFjZjI2ODUxMzBlMTMyYzkz
M2ZkN2MzNTAyYjJkNjExNzQ0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTg0
LDYgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oTWVkaWFTb3VyY2VTYW1wbGVz
KSBcCiAgICAgTShNZW1vcnlQcmVzc3VyZSkgXAogICAgIE0oTWVzc2FnZVBvcnRzKSBcCisgICAg
TShNb2RlbEVsZW1lbnQpIFwKICAgICBNKE5ldHdvcmspIFwKICAgICBNKE5vdFlldEltcGxlbWVu
dGVkKSBcCiAgICAgTShPdmVybGF5U2Nyb2xsYmFycykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkZWE1YzE1MzE3OTlhMzUxYjE4
NGE0ZjFmY2NmZDRlYzVmMGIzMGU5Li5iNTk1MWUwOTNmNDIyYmRmMjE0N2M0ZjQ4OGM0YmE5YWJi
NzRlMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtMTA3NSw3ICsxMDc1LDkgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICNp
ZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBlbHNlIGlmIChpczxSZW5kZXJNb2RlbD4ocmVu
ZGVyZXIoKSkpIHsKICAgICAgICAgYXV0byBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTE1vZGVsRWxl
bWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwotICAgICAgICBpZiAoYXV0byBtb2RlbCA9IGVs
ZW1lbnQtPm1vZGVsKCkpCisgICAgICAgIGlmIChhdXRvKiBwbGF0Zm9ybUxheWVyID0gZWxlbWVu
dC0+cGxhdGZvcm1MYXllcigpKQorICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBHcmFwaGljc0xheWVyOjpDb250ZW50
c0xheWVyUHVycG9zZTo6TW9kZWwpOworICAgICAgICBlbHNlIGlmIChhdXRvIG1vZGVsID0gZWxl
bWVudC0+bW9kZWwoKSkKICAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNU
b01vZGVsKFdURk1vdmUobW9kZWwpKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggYTg2NGE0NGM4NTg3OWE1ZDJkNDQ2ZWRhODFlMGFlMTRmNmVl
OTc2My4uZDQ4OGEzZDk2NmVjNjQxZDhkY2Y2NTJmYTM3YjJiNDlkOWNkNDVkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yOTcsNiArMjk3LDcgQEAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAKIFVJUHJvY2Vzcy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAKIFVJUHJv
Y2Vzcy9NZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogVUlQ
cm9jZXNzL01lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKK1VJUHJvY2Vz
cy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcAogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
CiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDBkODIxZTgwZTk0YzY3YzEyMWZmOTE3
NmIxYmNkMTY1YTA2ZTA5YzcuLjQwNTBjNDAzYzQ2ZDU2NGMyZTk4M2M1ZjI2NTU1MWM2OTc1Y2U4
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQwMCw2ICs0MDAsNyBAQCBVSVByb2Nlc3Mv
Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbQogVUlQcm9jZXNzL0NvY29hL01lZGlhVXRpbGl0aWVz
Lm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCitVSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5t
bQogVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2Nv
YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjI2ZTRlODBiMmJlNGMyM2MxY2ZlZjkxY2E0NzVlY2VkYzNmZjA5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxF
bGVtZW50Q29udHJvbGxlckNvY29hLm1tCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1w
b3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOworU09G
VF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50RGlk
Q3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwgY29u
c3QgVVJMJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSkKK3sKKyAgICBhdXRvIHByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGlu
ZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpIFVVSUQ6W1tOU1VVSUQgYWxsb2NdIGluaXRXaXRoVVVJRFN0
cmluZzp1dWlkXV0pOworCisgICAgTE9HKE1vZGVsRWxlbWVudCwgIkNyZWF0ZWQgcmVtb3RlIHBy
ZXZpZXcgd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9pbmxpbmVQcmV2aWV3cy5maW5kKHV1aWQpOworICAgIGlmIChpdGVyYXRvciA9
PSBtX2lubGluZVByZXZpZXdzLmVuZCgpKQorICAgICAgICBtX2lubGluZVByZXZpZXdzLnNldCh1
dWlkLCBwcmV2aWV3KTsKKyAgICBlbHNlCisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZSA9IHByZXZp
ZXc7CisKKyAgICBSRUxFQVNFX0FTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIGF1dG8gd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CisgICAgYXV0byBlbGVtZW50Q29udGV4dENvcHkg
PSBjb250ZXh0OworICAgIGF1dG8gdXVpZENvcHkgPSB1dWlkOworICAgIE5TVVJMICp1cmwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07CisgICAgW3By
ZXZpZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJv
ciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIHsKKyAgICAgICAgaWYgKGNvbnRleHRFcnJvcikg
eworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3Rl
IGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6ICVALiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtj
b250ZXh0RXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJFc3RhYmxpc2hlZCByZW1v
dGUgY29ubmVjdGlvbiB3aXRoIFVVSUQgJXMuIiwgdXVpZENvcHkudXRmOCgpLmRhdGEoKSk7CisK
KyAgICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAgICAgICAg
aWYgKGxvYWRFcnJvcikgeworICAgICAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFi
bGUgdG8gbG9hZCBmaWxlIGZvciB1dWlkICVzOiAlQC4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgp
LCBbbG9hZEVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiTG9h
ZGVkIGZpbGUgd2l0aCBVVUlEICVzLiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCkpOworCisgICAg
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMsIGVsZW1lbnRDb250ZXh0Q29weSwg
dXVpZENvcHksIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF1dKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fd2ViUGFnZVByb3h5Lm1vZGVsRWxlbWVudFByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoZWxlbWVudENvbnRleHRDb3B5LCB1dWlkQ29weSwgY29udGV4
dElkKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9XTsKKyAgICB9XTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJv
bGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRkZmIxMzI3M2Q1NzYzY2Y4NzhkMzI2Yjc4MjIwMWMwYmMw
NTY0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxl
bWVudENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxFbGVtZW50Q29udHJvbGxlci5oIgorCisjaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K01vZGVsRWxlbWVudENvbnRyb2xsZXI6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXIoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCisgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCit7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9N
b2RlbEVsZW1lbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVs
ZW1lbnRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1OTJjODFmNDkyNmJmZjAyZjQ0MDc4M2I0
ZjI4N2JmMzNkOGQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01vZGVsRWxlbWVudENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKworI2luY2x1ZGUgPFdl
YkNvcmUvRWxlbWVudENvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKK09CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmlldzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBNb2RlbEVsZW1lbnRDb250cm9s
bGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1vZGVsRWxlbWVudENvbnRyb2xsZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBNb2RlbEVs
ZW1lbnRDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOworCisgICAgV2ViUGFnZVByb3h5JiBwYWdl
KCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHk7IH0KKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQorICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUGFnZVBy
b3h5JiBtX3dlYlBhZ2VQcm94eTsKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykK
KyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFTVklubGluZVByZXZpZXc+PiBtX2lubGlu
ZVByZXZpZXdzOworI2VuZGlmCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCmluZGV4IDY3MDQxNjRhOTUzZTBlZjQ1ZjRhODI3ODUwM2IwZmI3OGZhNDk2
N2MuLjA2NTBmNjBjYjc5ZWQ5NGU5NmM3MDlhMjZkOTkyZGQ1NGM4NzY0YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEzMiw2ICsxMzIsMTAgQEAgc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm87CiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCiBzdHJ1Y3QgVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm87
CiAjZW5kaWYKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorc3RydWN0IEVsZW1lbnRDb250
ZXh0OworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYThjZDllZjgwZjNiZGJhNmQyNzk4NmNkOWM1Mjg4
MDQ2ODZhNjVkYi4uZTJmYzJhM2YzNWY5YzFlNDI0MWVjYjIwMzE2Y2UyNDVkNzQ0OWZmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDIzLDYgKzEwMjMs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAg
IG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFN5c3RlbVByZXZpZXdDb250
cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAg
IEFTU0VSVCghbV9tb2RlbEVsZW1lbnRDb250cm9sbGVyKTsKKyAgICBtX21vZGVsRWxlbWVudENv
bnRyb2xsZXIgPSBtYWtlVW5pcXVlPE1vZGVsRWxlbWVudENvbnRyb2xsZXI+KCp0aGlzKTsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBBU1NFUlQoIW1fY3JlZGVudGlhbHNN
ZXNzZW5nZXIpOwogICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBtYWtlVW5pcXVlPFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PigqdGhpcyk7CkBAIC03NzcxLDYgKzc3NzYsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0
YXRlUmVhc29uKQogICAgIG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBtX21vZGVsRWxlbWVudENvbnRy
b2xsZXIgPSBudWxscHRyOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1f
Y3JlZGVudGlhbHNNZXNzZW5nZXIgPSBudWxscHRyOwogI2VuZGlmCkBAIC0xMDY3OSw2ICsxMDY4
OCwyMSBAQCBXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0
ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZQogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQordm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVBy
ZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyNpZiBI
QVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVy
KCktPm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29udGV4dCwgdXJsLCB1dWlkLCBzaXpl
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50UHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vZGVsRWxl
bWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29udGV4dCwgdXVpZCwgY29udGV4dElkKSk7
Cit9CisjZW5kaWYKKwogI2lmICFQTEFURk9STShDT0NPQSkKIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0
ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGVjNWQwY2YwNWUzYjQzNTQ3YWY1OTNkZDY1MzdjMDM3ODE3
ZTZhOWUuLjk0MmM3Zjc0OGJlZWZiZmQzZGVhMWM4NDgxNjY4NzQ5MDc0OGQ1OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODksNiArMTg5LDEwIEBAIGludGVy
ZmFjZSBJRDNEMTFEZXZpY2UxOwogI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisjaW5jbHVkZSAiTW9kZWxFbGVtZW50Q29u
dHJvbGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsK
IGNsYXNzIENvbnRlbnRXb3JsZDsKQEAgLTU2OSw2ICs1NzMsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChjb25zdCBXZWJDb3JlOjpTeXN0ZW1QcmV2
aWV3SW5mbyYsIGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKKyAgICBNb2RlbEVsZW1lbnRDb250cm9sbGVyKiBtb2RlbEVsZW1lbnRDb250cm9sbGVy
KCkgeyByZXR1cm4gbV9tb2RlbEVsZW1lbnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgdm9pZCBt
b2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7
CisgICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QpOworI2VuZGlm
CisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBBUEk6OkNvbnRleHRNZW51Q2xpZW50
JiBjb250ZXh0TWVudUNsaWVudCgpIHsgcmV0dXJuICptX2NvbnRleHRNZW51Q2xpZW50OyB9CiAg
ICAgdm9pZCBzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0
TWVudUNsaWVudD4mJik7CkBAIC0yNTk3LDYgKzI2MDcsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+IG1fc3lzdGVtUHJldmlld0NvbnRy
b2xsZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxNb2RlbEVsZW1lbnRDb250cm9sbGVyPiBtX21vZGVsRWxlbWVudENvbnRyb2xsZXI7
CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggYWIzMjQ4MTFlMTY4NjJkNGVhYjFlOGM2ZWZkMDE4M2Y5YzY0YjhkZC4uZDg1
MmE1MTkwYzFlOWNjZmM4ZWY3NTc1YzIzZjQ5NDQzOTA0ZDg0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTkyLDQgKzU5Miw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIENo
YW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhXZWJDb3JlOjpJbnRSZWN0IHZpZXdSZWN0LCBX
ZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVjdCkKICNlbmRpZgorCisjaWYgRU5BQkxFKE1PREVMX0VM
RU1FTlQpCisgICAgTW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhzdHJ1Y3QgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQsIFVSTCB1cmwsIFN0cmluZyB1dWlkLCBXZWJD
b3JlOjpGbG9hdFNpemUgc2l6ZSkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWIxNjc1MmFkNDVlODY3ZjRiNzU3MTBl
Y2I3ODlkMTM4YTdjMWEzNi4uZWFlMGZlZDkwOWE1MGE1OWEwYzNmNDMzNjlhNjg0MmZjYWY3ZDUw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzIyLDYgKzEzMjIsNyBAQAogCQk2RUU4NDlDODEzNjhEOTM5MDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRl
TWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzExNzI1QTkyMjhENTY0MzAwMDE4NTE0IC8qIFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGlu
Z1RvdWNoUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Ny
b2xsaW5nVG91Y2hQb2xpY3kuaCAqLzsgfTsKIAkJNzEzNEEzREEyNjAzQjkyNTAwNjI0QkQzIC8q
IFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0QTNEOTI2MDNCODBFMDA2MjRCRDMgLyog
V0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKKwkJNzEzN0JBODAy
NUYxNTQyMDAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzdCQTdGMjVGMTU0MEMwMDkxNEVF
MyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyLmggKi87IH07CiAJCTcxQTY3NkE2MjJDNjIzMjUw
MDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTY3NkE0MjJDNjIzMTgwMDdENjI5
NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJNzFCQUE3MzMy
NUZGRDA5ODAwRDdDRDVEIC8qIFdLTW9kZWxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUJBQTczMTI1RkZDQ0JBMDBEN0NENUQgLyogV0tNb2Rl
bFZpZXcuaCAqLzsgfTsKIAkJNzFGQjgxMEIyMjYwNjI3RTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11
bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0
ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLzsgfTsKQEAgLTQ1NzUsNiAr
NDU3Niw5IEBACiAJCTcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRlTGVnYWN5T3Zl
cmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJzaXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MTM0QTNEODI2MDNCODBFMDA2MjRCRDMgLyogV0tNb2Rl
bEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsg
cGF0aCA9IGlvcy9XS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNEEzRDkyNjAzQjgwRTAwNjI0QkQzIC8qIFdLTW9k
ZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBp
b3MvV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzEzN0JBN0QyNUYxNTNFOTAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENv
bnRyb2xsZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vZGVsRWxlbWVudENvbnRy
b2xsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzEzN0JBN0UyNUYx
NTQwQjAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWxFbGVtZW50Q29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMzdCQTdGMjVGMTU0MEMwMDkxNEVFMyAvKiBNb2Rl
bEVsZW1lbnRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZGVsRWxlbWVudENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFB
Njc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8q
IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0
aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcxQkFBNzMxMjVGRkNDQkEwMEQ3Q0Q1RCAvKiBXS01vZGVsVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS01vZGVsVmlldy5oOyBwYXRoID0g
aW9zL1dLTW9kZWxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDQ0LDYg
KzcwNDgsNyBAQAogCQkJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Np
b25VdGlsaXRpZXMubW0gKi8sCiAJCQkJNDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlh
VXRpbGl0aWVzLmggKi8sCiAJCQkJNDExMjg2RjAyMUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhVXRp
bGl0aWVzLm1tICovLAorCQkJCTcxMzdCQTdEMjVGMTUzRTkwMDkxNEVFMyAvKiBNb2RlbEVsZW1l
bnRDb250cm9sbGVyQ29jb2EubW0gKi8sCiAJCQkJMUFCQzNERjQxODk5RTQzNzAwNEYwNjI2IC8q
IE5hdmlnYXRpb25TdGF0ZS5oICovLAogCQkJCTFBQkMzREYzMTg5OUU0MzcwMDRGMDYyNiAvKiBO
YXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2Q0U2RDMxRjU5RUEzNTAwMDdDNkNCIC8qIFBh
Z2VDbGllbnRJbXBsQ29jb2EuaCAqLywKQEAgLTk5ODcsNiArOTk5Miw4IEBACiAJCQkJOUFDQzA3
QjIyNUM4MTVGMzAwREM2Mzg2IC8qIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaCAqLywKIAkJCQk5QUNDMDdCNDI1QzgxNjBCMDBEQzYzODYgLyogTWVkaWFLZXlT
eXN0ZW1QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggKi8sCiAJCQkJOTM0MjU4OTgyNTVCNTM0QjAw
NTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovLAorCQkJCTcxMzdCQTdFMjVG
MTU0MEIwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcCAqLywKKwkJCQk3MTM3
QkE3RjI1RjE1NDBDMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxlci5oICovLAogCQkJ
CUJDNkVEQUE1MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi8sCiAJCQkJMUFDNzUz
NzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovLAogCQkJCTFBQzc1MzdB
MTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8sCkBAIC0xMjA4NSw2ICsxMjA5
Miw3IEBACiAJCQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2Nr
TG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJF
QjAgLyogTW9ja05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxMzdCQTgwMjVGMTU0
MjAwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDUwMzY2QjFCQ0RFMTc5MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyNjMxNzJDRjE4QjQ2OTQ5MDA2NUI5QzMgLyogTmF0aXZlV2ViVG91
Y2hFdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDA0NTU3
YTg1ZmM4N2M2NzQ1MWU3MGFlMTdmOWY1MGMwZmZmY2M1M2YuLmE0MDEwOTIzZmE1ZWQ5ZGVkMjhi
MTJjMWJkMWQ0ZjgwZDM3ZDFlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNTE1LDQg
KzE1MTUsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEhhbmRsZU9yUHJldmVudE1vdXNl
RG93bk9yTW91c2VVcEV2ZW50KCkKICAgICBtX3BhZ2UuZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VE
b3duT3JNb3VzZVVwRXZlbnQoKTsKIH0KIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQordm9p
ZCBXZWJDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKSBjb25zdAoreworICAgIG1fcGFn
ZS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGVsZW1lbnQsIHVybCwgdXVpZCwgc2l6ZSk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggODM1YmZkMGNjNDhlMzQzZjFmYjM0OWNjOWVlNDRhZmM0YjE5MTI4Mi4uMmUxNDZjMDdkNDg0
MmYyMDY4MTg3MmNjN2IyNjc0YWEzMDcyMGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDUy
LDYgKzQ1MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRl
dmljZUxpc3QmKT4mJikgZmluYWw7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQorICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJikgY29uc3QgZmluYWw7CisjZW5kaWYKKwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hl
ZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUg
Ym9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0ZTVi
MWU0NWZlMjU3YzMwMTJiYTMzOGYwNWUwMzY4NWFkYTlhMDJlLi41M2RjYmU5ZGQ0NmNiZTcxYzc1
ZGRhYzMxMjJhMDdlMGY2MGMxM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMjY5LDYgKzI2OSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNb2RlbEVsZW1lbnQuaD4KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIK
ICNlbmRpZgpAQCAtNzY2OSw2ICs3NjczLDIxIEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQ29udGV4
dE1lbnVUcmFuc2xhdGlvbihjb25zdCBUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbyYgaW5mCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVDb250ZXh0TWVudVRyYW5z
bGF0aW9uKGluZm8pKTsKIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCit2
b2lkIFdlYlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChhdXRvIGVsZW1lbnRD
b250ZXh0ID0gY29udGV4dEZvckVsZW1lbnQoZWxlbWVudCkpCisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqZWxlbWVudENv
bnRleHQsIHVybCwgdXVpZCwgc2l6ZSkpOworfQorCit2b2lkIFdlYlBhZ2U6Om1vZGVsRWxlbWVu
dFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQm
IGVsZW1lbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkK
K3sKKyAgICBhdXRvIGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChlbGVtZW50Q29udGV4dCk7
CisgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAg
ICBkb3duY2FzdDxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PigqZWxlbWVudCkuaW5saW5lUHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCh1dWlkLCBjb250ZXh0SWQpOworfQogCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ0YzZhYzI5
YjQ5NzM4MTMwNzc0NWQ1OWRhM2M3MWI5NDg2MjVhYTMuLjY3NTg0NTZjZmZiYzQwYzI2ZTgxOTQ2
MzBhODA4NzBjMmI0N2YwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTIxMCw2ICsyMTAsMTAgQEAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFz
cyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCisjaWYgRU5B
QkxFKE1PREVMX0VMRU1FTlQpCitjbGFzcyBIVE1MTW9kZWxFbGVtZW50OworI2VuZGlmCisKIGVu
dW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCA6IGJvb2w7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2Ug
OiB1aW50OF90OwpAQCAtMTQ2MSw2ICsxNDY1LDExIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVhS
U3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCisgICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5D
b250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmLCB1
aW50MzJfdCk7CisjZW5kaWYKKwogICAgIHZvaWQgZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3du
T3JNb3VzZVVwRXZlbnQoKTsKICAgICB2b2lkIHByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERp
YWxvZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA1YmRlM2Y4ZGE5MWM2YzVhNjVjNmZiYTgzOGIxZWQ2NzM4
ZDAyMGRiLi4zMjBhMjdlN2FjNDRjN2QxMDU0YzNkMzMzZDRlNjQ1MWM0M2QxMzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTY0Myw0ICs2NDMsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKICAgICBVcGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KHN0
cnVjdCBXZWJDb3JlOjpUZXh0UmVjb2duaXRpb25SZXN1bHQgcmVzdWx0LCBzdHJ1Y3QgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQgZWxlbWVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikg
LT4gKGVudW06dWludDhfdCBXZWJLaXQ6OlRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdCByZXN1
bHQpIEFzeW5jCiAjZW5kaWYKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIE1vZGVs
RWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0IGVsZW1lbnRDb250ZXh0LCBTdHJpbmcgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQor
I2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432599</attachid>
            <date>2021-06-30 08:42:12 -0700</date>
            <delta_ts>2021-06-30 13:48:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227530-20210630174210.patch</filename>
            <type>text/plain</type>
            <size>65756</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhMDQ1MjlhNjU5YzY0NWVhOTViM2M4
YTIxYWE1YjkyYjc0MjkzMmIuLmMwNmUzNmFmODAzOTg0OTZjNmMxMTc1NzQwZGNhOWZkZTNlZDBk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVsXSBbbWFjT1NdIEFkZCBzdXBwb3J0IGZv
ciByZW5kZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5OTY4
MjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG5ldyBjb21waWxlLXRpbWUgZmxhZyBpbmRpY2F0aW5nIHRoZSBhdmFpbGFiaWxpdHkgb2Yg
dGhlIEFTVklubGluZVByZXZpZXcgU1BJIG9uIG1hY09TLgorICAgICAgICBXZSBvbmx5IGRlZmlu
ZSBpdCB3aGVuIHRoZSBoZWFkZXIgaXRzZWxmIGlzIHByZXNlbnQgZm9yIG5vdyB0byBhdm9pZCBp
c3N1ZXMgd2l0aCBvbGRlciBtYWNPUworICAgICAgICAxMiBTREtzLCBidXQgdWx0aW1hdGVseSB3
ZSB3aWxsIG9ubHkgdXNlIHRoZSBtYWNPUyB2ZXJzaW9uIGNoZWNrLgorCisgICAgICAgICogd3Rm
L1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIxLTA2LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgx
NzAxMTRkYTA4M2I2MjJlMTgzOTkzYzQzNDQyYTA2N2Y0ODI1NC4uM2U2YWE4ZjA1MjBhOWFkZjcy
Y2JhOGRhOWY2MTVjNWY5M2UzZDkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIx
LTA2LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtN
b2RlbF0gW21hY09TXSBBZGQgc3VwcG9ydCBmb3IgcmVuZGVyaW5nIG1vZGVsIHJlc291cmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTMwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTk2ODIwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBtYWNPUywgQVNWSW5saW5lUHJldmlldyByZXF1
aXJlcyBhbiBpbnN0YW5jZSBpbiBib3RoIHRoZSBXZWJQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNz
IHRvIGV4aXN0IHdpdGggYSBtYXRjaGluZyBVVUlELgorCisgICAgICAgIE9uIHRoZSBXZWJDb3Jl
IHNpZGUsIGluIHRoZSBXZWJQcm9jZXNzLCBhZnRlciB3cml0aW5nIHRoZSBtb2RlbCByZXNvdXJj
ZSBhcyBhIGZpbGUgdG8gZGlzaywgd2UgY3JlYXRlIGFuIGluc3RhbmNlIHdoZW4gYQorICAgICAg
ICA8bW9kZWw+IGVsZW1lbnQgaXMgY3JlYXRlZCBhbmQgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHRo
cm91Z2ggdGhlIENocm9tZUNsaWVudCBwcm92aW5kaW5nIHRoZSBVVUlEIGdlbmVyYXRlZCBmb3Ig
aXQuIFdoZW4KKyAgICAgICAgdGhlIFVJUHJvY2VzcyBpcyBkb25lIHByb2Nlc3NpbmcgdGhpcyBt
ZXNzYWdlLCBpdCB3aWxsIHJlcGx5IHdpdGggYW5vdGhlciBtZXNzYWdlIHdoaWNoIGNhbGxzIGlu
dG8KKyAgICAgICAgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCgpIHdpdGggdGhlIG1hdGNoaW5nIFVVSUQgYW5kIGEgY29udGV4dCBJRCBmb3IgdGhlIHJl
bW90ZSBjb250ZXh0LgorICAgICAgICBXZSBjYW4gdGhlbiBzZXQgdGhhdCByZW1vdGUgY29udGV4
dCBJRCBvbiBvdXIgQVNWSW5saW5lUHJldmlldyBpbnN0YW5jZS4KKworICAgICAgICBXZSBhbHNv
IGludHJvZHVjZSBhIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBtZXRob2Qgc3Vj
aCB0aGF0IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbigpIGNhbiBjYWxs
CisgICAgICAgIGl0IHRvIGhvc3QgdGhlIEFTVklubGluZVByZXZpZXcgbGF5ZXIuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6fkhUTUxNb2RlbEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6bW9kZWxF
bGVtZW50RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQ29uZmlndXJhdGlvbik6CisKIDIwMjEtMDYtMzAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgPGRpYWxvZz4gZWxlbWVudCBj
bG9zZSBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWY3YmI3MDA3MWZhNjk4MzBkOWVjYmU1
OTczNDc3OWE4YzEzYTdlMS4uY2FkNTg1Njk2N2RmOTk5NDI3Y2FhYzQwN2Q1ZmJhOTBmMGZiOWMw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYtMzAgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVsXSBbbWFjT1Nd
IEFkZCBzdXBwb3J0IGZvciByZW5kZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc5OTY4MjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERlY2xhcmUgdGhlIEFTVklubGluZVByZXZpZXcgY2xhc3MgZm9yIG1hY09T
LgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oOiBBZGRlZC4KKwogMjAyMS0wNi0yOCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTW9kZWxdIFtpT1Nd
IEFkZCBzdXBwb3J0IGZvciBtYW5pcHVsYXRpbmcgPG1vZGVsPiBpbmxpbmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZWU0ZTBmMjFhMGU2NjgzM2RkYThkNmQ2MDUxOGJmZjJiMjQ1NTE4MS4uM2Y5YThlOWMxMGI1NTI0
ZjAxNTg3MWZiM2U1OWEzYmFlYjk1MWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAy
MS0wNi0zMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBb
TW9kZWxdIFttYWNPU10gQWRkIHN1cHBvcnQgZm9yIHJlbmRlcmluZyBtb2RlbCByZXNvdXJjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUzMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk5NjgyMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gbWFjT1MsIEFTVklubGluZVByZXZpZXcgcmVx
dWlyZXMgYW4gaW5zdGFuY2UgaW4gYm90aCB0aGUgV2ViUHJvY2VzcyBhbmQgdGhlIFVJUHJvY2Vz
cyB0byBleGlzdCB3aXRoIGEgbWF0Y2hpbmcgVVVJRC4KKworICAgICAgICBPbiB0aGUgV2ViS2l0
IHNpZGUsIGluIHRoZSBVSVByb2Nlc3MsIHdlIHJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIFdl
YlByb2Nlc3Mgd2hlbiB0aGUgQVNWSW5saW5lUHJldmlldyBpbiB0aGF0IHByb2Nlc3MKKyAgICAg
ICAgd2FzIGNyZWF0ZWQgd2l0aCBpdHMgZ2VuZXJhdGVkIFVVSUQuIFdlIHByb3ZpZGUgdGhpcyB0
byB0aGUgTW9kZWxFbGVtZW50Q29udHJvbGxlciwgc2V0IHRoZSByZW1vdGUgY29ubmVjdGlvbiB1
cCBhbmQgbG9hZAorICAgICAgICB0aGUgZmlsZS4gV2hlbiB0aG9zZSB0YXNrcyBjb21wbGV0ZSBz
dWNjZXNzZnVsbHkgd2UgbWVzc2FnZSBiYWNrIHRoZSBXZWJQcm9jZXNzIHdpdGggdGhlIFVVSUQg
YW5kIHRoZSBwcm92aWRlZCBFbGVtZW50Q29udGV4dAorICAgICAgICB0byB0YWxrIGJhY2sgdG8g
dGhlIEhUTUxNb2RlbEVsZW1lbnQgaW5zdGFuY2UgdGhhdCBpbml0aWF0ZWQgdGhlIG1lc3NhZ2Ug
dG8gdGhlIFVJUHJvY2VzcyBpbiB0aGUgZmlyc3QgcGxhY2UuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpNb2RlbEVsZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpNb2RlbEVsZW1lbnRD
b250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6cGFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRD
cmVhdGVQcmV2aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1l
bnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA2LTMwICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIE1pZ3JhdGUgV2Vi
UlRDIFVEUCBzb2NrZXQgaGFuZGxpbmcgdG8gTlcgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4
IDIwNzQ4MTAyYzAzZGViNmZiMTRiNWVmYTQ2ZDMzYWUxNDdlZDEzY2MuLjA2ZjhmOWZhMDk1NTVk
MWMzMDMzYTdiOWM0NjQxZWIxMmI1MjU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMDE0
LDYgKzEwMTQsMTAgQEAKICNpZiAoUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxNTAwMDAKICNkZWZpbmUgSEFWRV9BUktJVF9JTkxJTkVfUFJFVklFV19J
T1MgMQogI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjZGVmaW5lIEhBVkVfQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDIDEKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTFlYTU4NWE5ZmRkMzBkYWJmMzcxMmViMzg4ODlkZDBjZDUwODQ5YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MTW9kZWxFbGVtZW50Lmgi
Ci0KLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLQotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCi0jaW5jbHVkZSAiRE9NUHJvbWlzZVByb3h5LmgiCi0jaW5jbHVkZSAiRWxlbWVu
dENoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJKU0V2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiSlNIVE1MTW9kZWxFbGVtZW50LmgiCi0jaW5j
bHVkZSAiTW9kZWwuaCIKLSNpbmNsdWRlICJSZW5kZXJNb2RlbC5oIgotI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1MTW9kZWxFbGVtZW50KTsK
LQotSFRNTE1vZGVsRWxlbWVudDo6SFRNTE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKLSAgICAsIG1fcmVhZHlQcm9taXNlIHsgbWFrZVVuaXF1ZVJlZjxSZWFkeVBy
b21pc2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNlUmVzb2x2ZSkgfQot
ewotfQotCi1IVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCgpCi17Ci0gICAgaWYg
KG1fcmVzb3VyY2UpIHsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
LSAgICAgICAgbV9yZXNvdXJjZSA9IG51bGxwdHI7Ci0gICAgfQotfQotCi1SZWY8SFRNTE1vZGVs
RWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VE1MTW9kZWxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci19Ci0KLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2RhdGFDb21wbGV0ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gbV9k
YXRhOwotfQotCi1SZWZQdHI8TW9kZWw+IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fZGF0YUNvbXBsZXRlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAKLSAgICByZXR1cm4gbV9tb2RlbDsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpzb3Vy
Y2VzQ2hhbmdlZCgpCi17Ci0gICAgaWYgKCFkb2N1bWVudCgpLmhhc0Jyb3dzaW5nQ29udGV4dCgp
KSB7Ci0gICAgICAgIHNldFNvdXJjZVVSTChVUkwgeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxTb3VyY2VF
bGVtZW50PigqdGhpcykpIHsKLSAgICAgICAgLy8gRklYTUU6IGZvciBub3cgd2UgdXNlIHRoZSBm
aXJzdCB2YWxpZCBVUkwgd2l0aG91dCBsb29raW5nIGF0IHRoZSBtaW1lLXR5cGUuCi0gICAgICAg
IGF1dG8gdXJsID0gZWxlbWVudC5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNy
Y0F0dHIpOwotICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgc2V0U291
cmNlVVJMKHVybCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBzZXRTb3VyY2VVUkwoVVJMIHsgfSk7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICh1cmwgPT0gbV9zb3VyY2VVUkwp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fc291cmNlVVJMID0gdXJsOwotCi0gICAgbV9kYXRh
ID0gbnVsbHB0cjsKLSAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwotCi0gICAgaWYgKG1fcmVz
b3VyY2UpIHsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSAgICAg
ICAgbV9yZXNvdXJjZSA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFtX3JlYWR5UHJvbWlz
ZS0+aXNGdWxmaWxsZWQoKSkKLSAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBBYm9ydEVycm9yIH0pOwotCi0gICAgbV9yZWFkeVByb21pc2UgPSBtYWtlVW5pcXVlUmVm
PFJlYWR5UHJvbWlzZT4oKnRoaXMsICZIVE1MTW9kZWxFbGVtZW50OjpyZWFkeVByb21pc2VSZXNv
bHZlKTsKLQotICAgIGlmIChtX3NvdXJjZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmRlc3RpbmF0
aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TW9kZWw7Ci0gICAgLy8gRklYTUU6IFNl
dCBvdGhlciBvcHRpb25zLgotCi0gICAgYXV0byBjcm9zc09yaWdpbkF0dHJpYnV0ZSA9IHBhcnNl
Q09SU1NldHRpbmdzQXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpKTsKLSAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVQb3Rl
bnRpYWxBY2Nlc3NDb250cm9sUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QgeyBtX3NvdXJjZVVSTCB9
LCBXVEZNb3ZlKG9wdGlvbnMpLCBkb2N1bWVudCgpLCBjcm9zc09yaWdpbkF0dHJpYnV0ZSk7Ci0g
ICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoKnRoaXMpOwotCi0gICAgYXV0byByZXNvdXJjZSA9IGRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TW9kZWxSZXNvdXJjZShXVEZN
b3ZlKHJlcXVlc3QpKTsKLSAgICBpZiAoIXJlc291cmNlLmhhc192YWx1ZSgpKSB7Ci0gICAgICAg
IG1fcmVhZHlQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTmV0d29ya0Vycm9yIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLQotICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwotICAgIG1fcmVzb3VyY2Ut
PmFkZENsaWVudCgqdGhpcyk7Ci19Ci0KLUhUTUxNb2RlbEVsZW1lbnQmIEhUTUxNb2RlbEVsZW1l
bnQ6OnJlYWR5UHJvbWlzZVJlc29sdmUoKQotewotICAgIHJldHVybiAqdGhpczsKLX0KLQotc3Rh
dGljIFN0cmluZyYgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0
b3J5OwotICAgIHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKLX0KLQot
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnko
KSA9IHBhdGg7Ci19Ci0KLWNvbnN0IFN0cmluZyYgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSgpOwotfQotCi0vLyBNQVJLOiAtIERPTSBvdmVycmlkZXMuCi0KLXZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50
LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCi17Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Ci0gICAgc291cmNlc0NoYW5nZWQo
KTsKLX0KLQotLy8gTUFSSzogLSBSZW5kZXJpbmcgb3ZlcnJpZGVzLgotCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCi17Ci0gICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1vZGVsPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotfQot
Ci0vLyBNQVJLOiAtIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50Ci0KLXZvaWQgSFRNTE1vZGVsRWxl
bWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
JnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0
YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKLXsKLSAgICBhdXRvIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0
ZVJlbmRlcmVyID0gWyZdIHsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlz
KTsKLSAgICAgICAgbV9yZXNvdXJjZSA9IG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyLT51cGRhdGVG
cm9tRWxlbWVudCgpOwotICAgIH07Ci0KLSAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2Fu
Y2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwotCi0gICAgICAgIGludmFsaWRh
dGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7Ci0KLSAgICAgICAgbV9yZWFkeVBy
b21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IgfSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1v
ZGVsOjpjcmVhdGUoKm1fZGF0YSk7Ci0KLSAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRV
cGRhdGVSZW5kZXJlcigpOwotCi0gICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwot
fQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmlu
ZGV4IDYyY2Y2MTE3YzMzZmY2N2I2ZWQyMTJmODJmYWNiZDQ1NjhlYTg0OTMuLmU4NTBjZGYyODhj
YTc4ODFkNTc4NWQyNWMzYzZhM2QxOTI1MjY5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMzIsOSAr
MzIsMTQgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCitPQkpDX0NMQVNTIEFT
VklubGluZVByZXZpZXc7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
b2RlbDsKQEAgLTUwLDYgKzU1LDggQEAgcHVibGljOgogICAgIHZvaWQgc291cmNlc0NoYW5nZWQo
KTsKICAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVS
TDsgfQogCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OworCiAgICAg
dXNpbmcgUmVhZHlQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazxJ
RExJbnRlcmZhY2U8SFRNTE1vZGVsRWxlbWVudD4+OwogICAgIFJlYWR5UHJvbWlzZSYgcmVhZHko
KSB7IHJldHVybiBtX3JlYWR5UHJvbWlzZS5nZXQoKTsgfQogCkBAIC01OSwxMiArNjYsMjAgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBj
b25zdCBTdHJpbmcmIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7CiAKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgU3RyaW5n
JiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpOworCiBwcml2YXRlOgogICAgIEhUTUxNb2RlbEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2b2lkIHNldFNv
dXJjZVVSTChjb25zdCBVUkwmKTsKICAgICBIVE1MTW9kZWxFbGVtZW50JiByZWFkeVByb21pc2VS
ZXNvbHZlKCk7CiAKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICB2b2lk
IGNsZWFyRmlsZSgpOworICAgIHZvaWQgY3JlYXRlRmlsZSgpOworICAgIHZvaWQgbW9kZWxEaWRD
aGFuZ2UoKTsKKyNlbmRpZgorCiAgICAgLy8gRE9NIG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3Vt
ZW50KSBmaW5hbDsKIApAQCAtODEsNiArOTYsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TW9k
ZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7
CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CisKKyNpZiBIQVZFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKKyAgICBTdHJpbmcgbV9maWxlUGF0aDsKKyAgICBSZXRhaW5QdHI8
QVNWSW5saW5lUHJldmlldz4gbV9pbmxpbmVQcmV2aWV3OworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZDI2OTA1NzQ0ODNl
NjE4NmZiZmJiMzBjZmM2YTgzZWZjYjJlMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5tbQpAQCAtMCwwICsx
LDMyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MTW9kZWxFbGVtZW50LmgiCisKKyNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgi
CisjaW5jbHVkZSAiRE9NUHJvbWlzZVByb3h5LmgiCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCisjaW5jbHVkZSAiSFRNTFNvdXJjZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0V2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNIVE1MTW9kZWxFbGVtZW50LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1vZGVsLmgiCisjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKKyNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKwor
I2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkNocm9tZS5oIgor
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5j
bHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgorU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElO
S19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTE1vZGVsRWxl
bWVudCk7CisKK0hUTUxNb2RlbEVsZW1lbnQ6OkhUTUxNb2RlbEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX3JlYWR5UHJvbWlzZSB7IG1ha2VVbmlxdWVSZWY8
UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJlc29s
dmUpIH0KK3sKK30KKworSFRNTE1vZGVsRWxlbWVudDo6fkhUTUxNb2RlbEVsZW1lbnQoKQorewor
ICAgIGlmIChtX3Jlc291cmNlKSB7CisgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVudCgq
dGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOworICAgIH0KKworI2lmIEhBVkUo
QVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIGNsZWFyRmlsZSgpOworI2VuZGlmCit9CisK
K1JlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhUTUxNb2RlbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKwor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEYXRhKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fZGF0YUNvbXBsZXRlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBtX2RhdGE7Cit9CisKK1JlZlB0cjxNb2RlbD4gSFRNTE1vZGVsRWxlbWVudDo6
bW9kZWwoKSBjb25zdAoreworICAgIGlmICghbV9kYXRhQ29tcGxldGUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIAorICAgIHJldHVybiBtX21vZGVsOworfQorCit2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OnNvdXJjZXNDaGFuZ2VkKCkKK3sKKyAgICBpZiAoIWRvY3VtZW50KCkuaGFzQnJv
d3NpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgc2V0U291cmNlVVJMKFVSTCB7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5
cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAvLyBGSVhNRTogZm9yIG5v
dyB3ZSB1c2UgdGhlIGZpcnN0IHZhbGlkIFVSTCB3aXRob3V0IGxvb2tpbmcgYXQgdGhlIG1pbWUt
dHlwZS4KKyAgICAgICAgYXV0byB1cmwgPSBlbGVtZW50LmdldE5vbkVtcHR5VVJMQXR0cmlidXRl
KEhUTUxOYW1lczo6c3JjQXR0cik7CisgICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBzZXRTb3VyY2VVUkwodXJsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldFNvdXJjZVVSTChVUkwgeyB9KTsKK30KKwordm9pZCBIVE1MTW9k
ZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVybCA9
PSBtX3NvdXJjZVVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zb3VyY2VVUkwgPSB1cmw7
CisKKyAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CisK
KyAgICBpZiAobV9yZXNvdXJjZSkgeworICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQo
KnRoaXMpOworICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAo
IW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQorICAgICAgICBtX3JlYWR5UHJvbWlzZS0+
cmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisKKyAgICBtX3JlYWR5UHJvbWlzZSA9
IG1ha2VVbmlxdWVSZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJl
YWR5UHJvbWlzZVJlc29sdmUpOworCisgICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewor
I2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgICAgICBjbGVhckZpbGUoKTsK
KyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpOworICAgIG9wdGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpNb2RlbDsKKyAgICAvLyBGSVhNRTogU2V0IG90aGVyIG9wdGlvbnMuCisKKyAgICBh
dXRvIGNyb3NzT3JpZ2luQXR0cmlidXRlID0gcGFyc2VDT1JTU2V0dGluZ3NBdHRyaWJ1dGUoYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cikp
OworICAgIGF1dG8gcmVxdWVzdCA9IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCB7IG1fc291cmNlVVJMIH0sIFdURk1vdmUob3B0aW9ucyksIGRvY3Vt
ZW50KCksIGNyb3NzT3JpZ2luQXR0cmlidXRlKTsKKyAgICByZXF1ZXN0LnNldEluaXRpYXRvcigq
dGhpcyk7CisKKyAgICBhdXRvIHJlc291cmNlID0gZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLnJlcXVlc3RNb2RlbFJlc291cmNlKFdURk1vdmUocmVxdWVzdCkpOworICAgIGlmICgh
cmVzb3VyY2UuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlamVjdChF
eGNlcHRpb24geyBOZXR3b3JrRXJyb3IgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgbV9yZXNvdXJjZSA9IHJl
c291cmNlLnZhbHVlKCk7CisgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKK30KKwor
SFRNTE1vZGVsRWxlbWVudCYgSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNlUmVzb2x2ZSgp
Cit7CisgICAgcmV0dXJuICp0aGlzOworfQorCitzdGF0aWMgU3RyaW5nJiBzaGFyZWRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7CisgICAgcmV0dXJuIHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNl
dE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKK30KKworY29uc3QgU3Ry
aW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Cit9CisKKy8vIE1B
Uks6IC0gRE9NIG92ZXJyaWRlcy4KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkK
K3sKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5l
d0RvY3VtZW50KTsKKyAgICBzb3VyY2VzQ2hhbmdlZCgpOworfQorCisvLyBNQVJLOiAtIFJlbmRl
cmluZyBvdmVycmlkZXMuCisKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKK3sKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTW9k
ZWw+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Cit9CisKKy8vIE1BUks6IC0gQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7
CisgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQoreworICAgIGF1dG8g
aW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIgPSBbJl0geworICAgICAg
ICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBtX3Jlc291cmNlID0g
bnVsbHB0cjsKKworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQorICAgICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgfTsKKwor
ICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisKKyAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRl
UmVuZGVyZXIoKTsKKworICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7
IE5ldHdvcmtFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGF0YUNv
bXBsZXRlID0gdHJ1ZTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZSgqbV9kYXRhKTsKKwor
ICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CisKKyAgICBt
X3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CisKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX01BQykKKyAgICBtb2RlbERpZENoYW5nZSgpOworI2VuZGlmCit9CisKKyNpZiBIQVZF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRl
RmlsZSgpCit7CisgICAgY2xlYXJGaWxlKCk7CisKKyAgICBhdXRvIHBhdGhUb0RpcmVjdG9yeSA9
IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7CisgICAgaWYg
KHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
ZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoVG9EaXJlY3Rvcnkp
OworICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dp
bmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJl
Y3RvcnkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBmaWxlTmFtZSA9IEZpbGVT
eXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAi
LnVzZHoiOworICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7CisgICAgYXV0byBmaWxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOworICAgIGlmIChmaWxlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7Cisg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0
aDsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUoKQoreworICAgIGlmICht
X2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmcoKTsK
K30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgpCit7CisgICAgY3Jl
YXRlRmlsZSgpOworCisgICAgRmxvYXRTaXplIHNpemU7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgc2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOworCisgICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRv
cHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV0pOworICAgIExPRyhNb2Rl
bEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgpIGNyZWF0ZWQgcHJl
dmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYgeCAlZi4iLCAoKFN0cmluZylbbV9pbmxpbmVQ
cmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CisKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQor
ICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFtt
X2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZywgc2l6ZSk7Cit9CisjZW5kaWYKKwordm9p
ZCBIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0
IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQoreworI2lmIEhBVkUoQVJLSVRfSU5M
SU5FX1BSRVZJRVdfTUFDKQorICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5lUHJldmll
dyB1dWlkXS5VVUlEU3RyaW5nKSB7CisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9k
ZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBtaXNtYXRj
aCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgKChT
dHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX2lubGluZVByZXZpZXcgc2V0UmVtb3Rl
Q29udGV4dDpjb250ZXh0SWRdOworICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVt
ZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5IGVzdGFi
bGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHV1aWQpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0SWQpOworI2VuZGlmCit9CisKK1BsYXRm
b3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworI2lm
IEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIHJldHVybiBbbV9pbmxpbmVQcmV2
aWV3IGxheWVyXTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTNlMzgxNTdiZjdkODlkYzBl
NjcyY2MxODUzNjRmNjY4MWJkNzBjMC4uNTUzM2E4YjBiNmI2YjVjN2M1ODRhZGVhYmVlNDFiZDZl
OGJkNjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQ4LDYgKzE0OCw3IEBACiAJCTVDN0M3ODc0MjNBQzNFNzcwMDY1RjQ3
RSAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzc4NzIyM0FDM0U3NzAwNjVGNDdFIC8qIE1h
bmFnZWRDb25maWd1cmF0aW9uU29mdExpbmsubW0gKi87IH07CiAJCTVDN0M3ODc2MjNBQzNFODUw
MDY1RjQ3RSAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzc4NzUyM0FDM0U4NTAwNjVGNDdFIC8qIE1h
bmFnZWRDb25maWd1cmF0aW9uU1BJLmggKi87IH07CiAJCTYzQzdFREM3MjFBRkFFMDQwMDZBN0I5
OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9ncmVzc1NQSS5oICov
OyB9OworCQk3MUIxMTQyMDI2ODIzQUNEMDA0RDY3MDEgLyogU3lzdGVtUHJldmlld1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCMTE0MUYyNjgy
M0FDRDAwNEQ2NzAxIC8qIFN5c3RlbVByZXZpZXdTUEkuaCAqLzsgfTsKIAkJNzJFNUJFOTcyNjc5
QTgwQTAwQURCRkE5IC8qIFZpZGVvVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFNUJFOTYyNjc5QTgwOTAwQURCRkE5IC8qIFZpZGVv
VG9vbGJveFNQSS5oICovOyB9OwogCQk3QTM2RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9u
Q3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi87IH07CiAJ
CTdBM0E2QTgwMjBDQURCNDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUg
LyogTlNJbWFnZVNQSS5oICovOyB9OwpAQCAtMzY3LDYgKzM2OCw3IEBACiAJCTVDN0M3ODcyMjNB
QzNFNzcwMDY1RjQ3RSAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0
TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzc4NzUyM0FDM0U4NTAw
NjVGNDdFIC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5TUHJvZ3Jlc3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzFCMTE0MUYyNjgyM0FDRDAwNEQ2NzAxIC8qIFN5c3RlbVByZXZpZXdTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtUHJldmlld1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU1QkU5NjI2NzlBODA5MDBBREJGQTkgLyogVmlkZW9U
b29sYm94U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJv
eFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTM2RDBGODIyM0FEOUFCMDBC
MDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNB
NkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOU0ltYWdlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02MjgsNiArNjMwLDcgQEAKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJ
LmggKi8sCiAJCQkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5o
ICovLAogCQkJCUExMTc1QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEku
aCAqLywKKwkJCQk3MUIxMTQxRjI2ODIzQUNEMDA0RDY3MDEgLyogU3lzdGVtUHJldmlld1NQSS5o
ICovLAogCQkJCTBDNzc4NTg4MUY0NTEzMEYwMEY0RUJCNiAvKiBUZWxlcGhvbnlVdGlsaXRpZXNT
UEkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtOTkwLDYgKzk5Myw3IEBACiAJCQkJ
OTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTExNzVCNDkxRjZBRkY4RTAwQzRCOUYwIC8qIFNwZWVjaFN5bnRoZXNpc1NQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM1QUY5MjExRjQzQTRDNzAwMkVBQzAyIC8qIFNRTGl0ZTNTUEkuaCBp
biBIZWFkZXJzICovLAorCQkJCTcxQjExNDIwMjY4MjNBQ0QwMDRENjcwMSAvKiBTeXN0ZW1QcmV2
aWV3U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5MjkgLyog
U3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNBQjZFNTgxRjNEMUREQjAw
OUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQUI2
RTY0MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9TeXN0ZW1Q
cmV2aWV3U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvU3lzdGVtUHJldmll
d1NQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3YzY5ZjIxODY4ODU0NmE0MGU5NTk4OTA4MDQ5ZDUzYzNlYTc3
NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvU3lz
dGVtUHJldmlld1NQSS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQor
I2ltcG9ydCA8QXNzZXRWaWV3ZXIvQVNWSW5saW5lUHJldmlldy5oPgorI2VuZGlmCisKKyNlbHNl
CisKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworQGNsYXNzIEFTVklubGlu
ZVByZXZpZXc7CisKK0BpbnRlcmZhY2UgQVNWSW5saW5lUHJldmlldyA6IE5TT2JqZWN0CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVVJRCAqdXVpZDsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQ0FMYXllciAqbGF5ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIHVpbnQzMl90IGNvbnRleHRJZDsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RnJhbWU6KENHUmVjdClmcmFtZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgVVVJRDooTlNVVUlEICopdXVpZDsKKy0gKHZvaWQpc2V0dXBSZW1vdGVDb25uZWN0
aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICogX051bGxhYmxlIGVy
cm9yKSloYW5kbGVyOworLSAodm9pZClwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOihOU1VSTCAq
KXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJv
cikpaGFuZGxlcjsKKy0gKHZvaWQpc2V0UmVtb3RlQ29udGV4dDoodWludDMyX3QpY29udGV4dElk
OworCitAZW5kCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMmViYzI3OWU1
MWFjMDA5NzA3YTJhNzJjYmI1ODNmM2VhZmMzNDkzNS4uNDAzZTZmZTQ4ODg5ZDM1ZmQ3NDIzNzA3
Mzk4NjNkZmM4Y2RjODk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4OSw3ICsxODksNiBAQCBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJh
Y2tlbmQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5k
ZXJUcmFuc2Zvcm1CYWNrZW5kLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAKLU1vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAKIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNw
cAogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGRlZTcyNWZhZTMxODZiNjcyNzkxNzdlNjcyNjRmNzJi
NzNlOTUyNTEuLjJiMzQ3ODk3ZGEzMGVmZGVjYjYxN2U5NDM2OGIzODY5MTA0ODZlZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtOTksNiArOTksNyBAQCBNb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
IE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgzN2Yx
YjEyYzlmNGJiNTNjNmFhYjk3YzNlMDk1ZDQ5MmI5NmFmNTQuLjg2OWFiZjllY2U3N2IyM2UxNzc4
MDUxYmI0ZWNkZDY5YjIxNjRkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMTg4LDYgKzEwMTg4LDcgQEAKIAkJNzEzRjFE
NUIyM0RGMjU2MDAwM0Y1RUZBIC8qIEpTR2V0QW5pbWF0aW9uc09wdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZXRBbmltYXRpb25zT3B0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNGMUQ1QzIzREYyNTYwMDAzRjVFRkEgLyogSlNHZXRB
bmltYXRpb25zT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0dldEFuaW1hdGlvbnNPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzE0MTMxNDcxREM5RDZBRjAwMzM2MTA3IC8qIGZ1bGxzY3JlZW4tc3VwcG9ydC5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJmdWxsc2NyZWVuLXN1cHBvcnQu
anMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTQ5MjZGNjI2MTc3RERDMDBFNDJD
MEEgLyogSFRNTE1vZGVsRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhUTUxNb2Rl
bEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNDk1REQ4MjAyQjA2
REMwMEFERkQzNCAvKiBKU0VmZmVjdFRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0VmZmVjdFRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxNDk1RERBMjAyQjA2REUwMEFERkQzNCAvKiBKU0VmZmVjdFRpbWluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VmZmVjdFRpbWluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MTRDN0M2MDFGREFEMjc5MDBGMkJFRTEgLyogQW5pbWF0aW9u
UGxheWJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
bmltYXRpb25QbGF5YmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwMjc0LDcgKzEwMjc1LDYgQEAKIAkJNzFBMUI2MDcxREVFNUE4MjAwNzNCQ0ZCIC8qIGVuICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBuYW1lID0gZW47IHBhdGggPSAiZW4ubHByb2ovbW9kZXJuLW1lZGlhLWNv
bnRyb2xzLWxvY2FsaXplZC1zdHJpbmdzLmpzIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQk3MUEzRDE3RDI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MTW9kZWxFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQTNEMTdGMjU2MkI4MjQwMDY0RTJBNiAvKiBIVE1MTW9k
ZWxFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTW9kZWxFbGVtZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzFBM0QxODAyNTYyQjgyNTAwNjRFMkE2
IC8qIEhUTUxNb2RlbEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTE1vZGVsRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxQTNEMTgyMjU2MkJEREIwMDY0RTJBNiAvKiBKU0hUTUxNb2RlbEVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MTW9kZWxFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBM0QxODMyNTYyQkREQjAwNjRFMkE2IC8q
IEpTSFRNTE1vZGVsRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0hUTUxNb2RlbEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNTdE
RUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzExOSw5ICsyMzExOSw5IEBACiAJCTcxRjg0OUNDMjU2NUFC
N0UwMDhDMzdGMiAvKiBtb2RlbC1lbGVtZW50ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk3MUEzRDE4MDI1NjJCODI1MDA2NEUyQTYgLyogSFRNTE1vZGVs
RWxlbWVudC5jcHAgKi8sCiAJCQkJNzFBM0QxN0QyNTYyQjgyNDAwNjRFMkE2IC8qIEhUTUxNb2Rl
bEVsZW1lbnQuaCAqLywKIAkJCQk3MUEzRDE3RjI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVs
RWxlbWVudC5pZGwgKi8sCisJCQkJNzE0OTI2RjYyNjE3N0REQzAwRTQyQzBBIC8qIEhUTUxNb2Rl
bEVsZW1lbnQubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9ICJtb2RlbC1lbGVtZW50IjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CmluZGV4IDJlYzk5MjhkNDk0YzE2NDJjMGUyMTU2MWFiZTRjMzVlM2QyZmJkZmIuLjNmMjI2NGI4
ODM3MzEwZGVhYWYyMjc2NGQ0NjliZmE5Nzg5YTFjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCkBAIC01NzgsNiArNTc4LDEyIEBAIHZvaWQgRW1wdHlDaHJvbWVDbGll
bnQ6OnNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlCiB7CiB9CiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKK3ZvaWQgRW1wdHlDaHJvbWVD
bGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYpIGNvbnN0Cit7Cit9CisjZW5kaWYKKwogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNmM3MDg5ZTE4MWQwYTg3MmM0OTZiZmZl
MWY1MTI0N2NhZjIyMzI0ZS4uOWUxZDg4OTQ4NjlhOThmMzAyMjhjZmNlOWUzNGEwYmE2MjgzNGI4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjE3LDYgKzIxNywxMCBA
QCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogICAgIGJv
b2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiAvKiBmaWxlbmFtZXMgKi8pIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKworI2lmIEVOQUJM
RShNT0RFTF9FTEVNRU5UKQorICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgZmluYWw7CisjZW5kaWYKIH07CiAKIERpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50JiBlbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBiNTU3N2VkOWNiMDg5YTdiMjVjMjhmYTVmOTk0
ZTBjMzNhNzA5NTgzLi4zMGRjMTBjNjBhZDg4MGU3ZWFmY2QwNzA5ZGE3NGM2ZmJkMTU1NzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTc4LDYgKzc4LDEwIEBAIGNsYXNzIFdB
S1Jlc3BvbmRlcjsKICNpbmNsdWRlICJNZWRpYVVzYWdlSW5mby5oIgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKK2NsYXNzIEhUTUxNb2RlbEVsZW1lbnQ7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjZW5kaWYKQEAgLTU5
Niw2ICs2MDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0QXV0b3NpemluZ1Vz
ZXNJZGVtcG90ZW50TW9kZUNoYW5nZWQoKSB7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXco
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0IHsgfTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgPSBkZWZhdWx0OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaAppbmRleCA0ZTkxMzJjZDM1ZDcwNTNmZDMwODI5Njk5YjBlOGNlYTU4MDRh
MDI0Li5kNDkxY2YyNjg1MTMwZTEzMmM5MzNmZDdjMzUwMmIyZDYxMTc0NDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9nZ2luZy5oCkBAIC04NCw2ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBNKE1lZGlhU291cmNlU2FtcGxlcykgXAogICAgIE0oTWVtb3J5UHJlc3N1cmUpIFwKICAg
ICBNKE1lc3NhZ2VQb3J0cykgXAorICAgIE0oTW9kZWxFbGVtZW50KSBcCiAgICAgTShOZXR3b3Jr
KSBcCiAgICAgTShOb3RZZXRJbXBsZW1lbnRlZCkgXAogICAgIE0oT3ZlcmxheVNjcm9sbGJhcnMp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggZGVhNWMxNTMxNzk5YTM1MWIxODRhNGYxZmNjZmQ0ZWM1ZjBiMzBlOS4uYjU5NTFlMDkz
ZjQyMmJkZjIxNDdjNGY0ODhjNGJhOWFiYjc0ZTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwNzUsNyArMTA3NSw5IEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxh
eWVyKiBjb21wb3NpdGluZ0FuY2VzCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgZWxz
ZSBpZiAoaXM8UmVuZGVyTW9kZWw+KHJlbmRlcmVyKCkpKSB7CiAgICAgICAgIGF1dG8gZWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxNb2RlbEVsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKLSAg
ICAgICAgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50LT5tb2RlbCgpKQorICAgICAgICBpZiAoYXV0
byogcGxhdGZvcm1MYXllciA9IGVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXll
ciwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6Ok1vZGVsKTsKKyAgICAgICAg
ZWxzZSBpZiAoYXV0byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCiAgICAgICAgICAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Nb2RlbChXVEZNb3ZlKG1vZGVsKSk7CiAKICAgICAg
ICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGE4NjRhNDRjODU4
NzlhNWQyZDQ0NmVkYTgxZTBhZTE0ZjZlZTk3NjMuLmQ0ODhhM2Q5NjZlYzY0MWQ4ZGNmNjUyZmEz
N2IyYjQ5ZDljZDQ1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjk3LDYgKzI5Nyw3IEBAIFVJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCiBVSVByb2Nlc3MvTGVnYWN5
R2xvYmFsU2V0dGluZ3MuY3BwCiBVSVByb2Nlc3MvTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9NZWRpYUtleVN5c3RlbVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuY3BwCitVSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5jcHAKIFVJ
UHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3Bw
CiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAwZDgyMWU4MGU5NGM2N2MxMjFmZjkxNzZiMWJjZDE2NWEwNmUwOWM3Li40MDUwYzQwM2M0NmQ1
NjRjMmU5ODNjNWYyNjU1NTFjNjk3NWNlOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00
MDAsNiArNDAwLDcgQEAgVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5tbQorVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVs
ZW1lbnRDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9N
b2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYyNmU0ZTgwYjJiZTRj
MjNjMWNmZWY5MWNhNDc1ZWNlZGMzZmYwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMCww
ICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2Rl
bEVsZW1lbnRDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgSEFW
RShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQ
SS5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJB
TUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5s
aW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIE1vZGVsRWxlbWVudENv
bnRyb2xsZXI6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiB1
dWlkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgYXV0byBwcmV2aWV3
ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSBVVUlEOltbTlNV
VUlEIGFsbG9jXSBpbml0V2l0aFVVSURTdHJpbmc6dXVpZF1dKTsKKworICAgIExPRyhNb2RlbEVs
ZW1lbnQsICJDcmVhdGVkIHJlbW90ZSBwcmV2aWV3IHdpdGggVVVJRCAlcy4iLCB1dWlkLnV0Zjgo
KS5kYXRhKCkpOworCisgICAgYXV0byBpdGVyYXRvciA9IG1faW5saW5lUHJldmlld3MuZmluZCh1
dWlkKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbmxpbmVQcmV2aWV3cy5lbmQoKSkKKyAgICAg
ICAgbV9pbmxpbmVQcmV2aWV3cy5zZXQodXVpZCwgcHJldmlldyk7CisgICAgZWxzZQorICAgICAg
ICBpdGVyYXRvci0+dmFsdWUgPSBwcmV2aWV3OworCisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWlu
UnVuTG9vcCgpKTsKKyAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOworICAg
IGF1dG8gZWxlbWVudENvbnRleHRDb3B5ID0gY29udGV4dDsKKyAgICBhdXRvIHV1aWRDb3B5ID0g
dXVpZDsKKyAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZp
bGVTeXN0ZW1QYXRoKCldOworICAgIFtwcmV2aWV3IHNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhD
b21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgY29udGV4dEVycm9yKSB7Cisg
ICAgICAgIGlmIChjb250ZXh0RXJyb3IpIHsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQs
ICJVbmFibGUgdG8gY3JlYXRlIHJlbW90ZSBjb25uZWN0aW9uIGZvciB1dWlkICVzOiAlQC4iLCB1
dWlkQ29weS51dGY4KCkuZGF0YSgpLCBbY29udGV4dEVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9u
XSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMT0coTW9kZWxF
bGVtZW50LCAiRXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1
aWRDb3B5LnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIFtwcmV2aWV3IHByZXBhcmVQcmV2aWV3
T2ZGaWxlQXRVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBs
b2FkRXJyb3IpIHsKKyAgICAgICAgICAgIGlmIChsb2FkRXJyb3IpIHsKKyAgICAgICAgICAgICAg
ICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGxvYWQgZmlsZSBmb3IgdXVpZCAlczogJUAu
IiwgdXVpZENvcHkudXRmOCgpLmRhdGEoKSwgW2xvYWRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAlcy4iLCB1dWlkQ29w
eS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtU
aGlzLCBlbGVtZW50Q29udGV4dENvcHksIHV1aWRDb3B5LCBjb250ZXh0SWQgPSBbcHJldmlldyBj
b250ZXh0SWRdXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3dlYlBh
Z2VQcm94eS5tb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGVsZW1lbnRDb250
ZXh0Q29weSwgdXVpZENvcHksIGNvbnRleHRJZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fV07CisgICAgfV07Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkZGZiMTMyNzNk
NTc2M2NmODc4ZDMyNmI3ODIyMDFjMGJjMDU2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsRWxl
bWVudENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpNb2RlbEVs
ZW1lbnRDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQorICAgIDogbV93ZWJQ
YWdlUHJveHkod2ViUGFnZVByb3h5KQoreworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIw
NTkyYzgxZjQ5MjZiZmYwMmY0NDA3ODNiNGYyODdiZjMzZDhkNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCisjaWYgSEFW
RShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCitPQkpDX0NMQVNTIEFTVklubGluZVByZXZpZXc7
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwor
Y2xhc3MgTW9kZWxFbGVtZW50Q29udHJvbGxlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2Rl
bEVsZW1lbnRDb250cm9sbGVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgTW9kZWxFbGVtZW50Q29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsK
KworICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFnZVByb3h5OyB9CisK
KyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICB2b2lkIG1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CisjaWYgSEFWRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxB
U1ZJbmxpbmVQcmV2aWV3Pj4gbV9pbmxpbmVQcmV2aWV3czsKKyNlbmRpZgorfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA2NzA0MTY0YTk1M2Uw
ZWY0NWY0YTgyNzg1MDNiMGZiNzhmYTQ5NjdjLi4wNjUwZjYwY2I3OWVkOTRlOTZjNzA5YTI2ZDk5
MmRkNTRjODc2NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMzIs
NiArMTMyLDEwIEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogI2lmIEhBVkUoVFJB
TlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShDT05URVhUX01FTlVTKQogc3RydWN0IFRy
YW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKK3N0cnVjdCBFbGVtZW50Q29udGV4dDsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGE4Y2Q5
ZWY4MGYzYmRiYTZkMjc5ODZjZDljNTI4ODA0Njg2YTY1ZGIuLmUyZmMyYTNmMzVmOWMxZTQyNDFl
Y2IyMDMxNmNlMjQ1ZDc0NDlmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTAyMyw2ICsxMDIzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKCkKICAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFr
ZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBBU1NFUlQoIW1fbW9kZWxFbGVtZW50Q29udHJvbGxl
cik7CisgICAgbV9tb2RlbEVsZW1lbnRDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxNb2RlbEVsZW1l
bnRDb250cm9sbGVyPigqdGhpcyk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAg
ICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKTsKICAgICBtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRo
aXMpOwpAQCAtNzc3MSw2ICs3Nzc2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICAgICBtX3N5c3RlbVByZXZpZXdD
b250cm9sbGVyID0gbnVsbHB0cjsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQp
CisgICAgbV9tb2RlbEVsZW1lbnRDb250cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKICAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbnVsbHB0cjsK
ICNlbmRpZgpAQCAtMTA2NzksNiArMTA2ODgsMjEgQEAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9y
RXJyb3IgV2ViUGFnZVByb3h5OjpjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmUK
IAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBG
bG9hdFNpemUmIHNpemUpCit7CisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisg
ICAgbW9kZWxFbGVtZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KGNvbnRleHQsIHVybCwgdXVpZCwgc2l6ZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29u
dGV4dElkKQoreworICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpNb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNv
bnRleHQsIHV1aWQsIGNvbnRleHRJZCkpOworfQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBXZWJQYWdlUHJveHk6OmNyZWF0ZU5l
dHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYzVkMGNmMDVl
M2I0MzU0N2FmNTkzZGQ2NTM3YzAzNzgxN2U2YTllLi45NDJjN2Y3NDhiZWVmYmZkM2RlYTFjODQ4
MTY2ODc0OTA3NDhkNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTg5LDYgKzE4OSwxMCBAQCBpbnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKICNpbmNsdWRlICJQ
bGF0Zm9ybVhSU3lzdGVtLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQor
I2luY2x1ZGUgIk1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CkBAIC01NjksNiAr
NTczLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQo
Y29uc3QgV2ViQ29yZTo6U3lzdGVtUHJldmlld0luZm8mLCBjb25zdCBTdHJpbmcmKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgTW9kZWxFbGVtZW50Q29udHJvbGxl
ciogbW9kZWxFbGVtZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fbW9kZWxFbGVtZW50Q29udHJv
bGxlci5nZXQoKTsgfQorICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25z
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgbW9kZWxFbGVtZW50UHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0
cmluZyYsIHVpbnQzMl90KTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAg
ICAgQVBJOjpDb250ZXh0TWVudUNsaWVudCYgY29udGV4dE1lbnVDbGllbnQoKSB7IHJldHVybiAq
bV9jb250ZXh0TWVudUNsaWVudDsgfQogICAgIHZvaWQgc2V0Q29udGV4dE1lbnVDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+JiYpOwpAQCAtMjU5Nyw2ICsyNjA3
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5c3RlbVByZXZpZXdDb250cm9s
bGVyPiBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kZWxFbGVtZW50Q29udHJvbGxlcj4g
bV9tb2RlbEVsZW1lbnRDb250cm9sbGVyOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4g
bV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFiMzI0ODExZTE2ODYyZDRlYWIx
ZThjNmVmZDAxODNmOWM2NGI4ZGQuLmQ4NTJhNTE5MGMxZTljY2ZjOGVmNzU3NWMyM2Y0OTQ0Mzkw
NGQ4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTU5Miw0ICs1OTIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBDaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoV2Vi
Q29yZTo6SW50UmVjdCB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3QpCiAjZW5k
aWYKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIE1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnRDb250ZXh0LCBV
UkwgdXJsLCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCisjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDliMTY3NTJhZDQ1ZTg2N2Y0Yjc1NzEwZWNiNzg5ZDEzOGE3YzFhMzYuLmVhZTBmZWQ5MDlhNTBh
NTlhMGMzZjQzMzY5YTY4NDJmY2FmN2Q1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyMiw2ICsxMzIyLDcgQEAKIAkJNkVFODQ5
QzgxMzY4RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhE
NDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTcyNUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJz
aXRlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8q
IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi87IH07CiAJCTcx
MzRBM0RBMjYwM0I5MjUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2du
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEz
NEEzRDkyNjAzQjgwRTAwNjI0QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyLmggKi87IH07CisJCTcxMzdCQTgwMjVGMTU0MjAwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MTM3QkE3RjI1RjE1NDBDMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxlci5oICov
OyB9OwogCQk3MUE2NzZBNjIyQzYyMzI1MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyLmggKi87IH07CiAJCTcxQkFBNzMzMjVGRkQwOTgwMEQ3Q0Q1RCAvKiBXS01vZGVsVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCQUE3MzEy
NUZGQ0NCQTAwRDdDRDVEIC8qIFdLTW9kZWxWaWV3LmggKi87IH07CiAJCTcxRkI4MTBCMjI2MDYy
N0UwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFGQjgxMEEy
MjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9s
aWN5LmggKi87IH07CkBAIC00NTc1LDYgKzQ1NzYsOSBAQAogCQk3MTE3MjVBODIyOEQ1NjNBMDAw
MTg1MTQgLyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xs
aW5nVG91Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNEEzRDgy
NjAzQjgwRTAwNjI0QkQzIC8qIFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tNb2RlbEludGVyYWN0
aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tNb2RlbEludGVyYWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMzRBM0Q5
MjYwM0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS01vZGVsSW50ZXJhY3Rpb25HZXN0
dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMzdCQTdEMjVGMTUzRTkw
MDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBNb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcxMzdCQTdFMjVGMTU0MEIwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250
cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGVsRWxl
bWVudENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTM3QkE3
RjI1RjE1NDBDMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbEVsZW1lbnRDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNo
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tUb3VjaEFj
dGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
QTY3NkE1MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUJBQTczMTI1RkZDQ0JB
MDBEN0NENUQgLyogV0tNb2RlbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tNb2RlbFZpZXcuaDsgcGF0aCA9IGlvcy9XS01vZGVsVmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzA0NCw2ICs3MDQ4LDcgQEAKIAkJCQk5MzQyNTg4RjI1NTVEQ0E1
MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tICovLAogCQkJCTQxMTI4NkVG
MjFDOEE5MEMwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGllcy5oICovLAogCQkJCTQxMTI4NkYwMjFD
OEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGllcy5tbSAqLywKKwkJCQk3MTM3QkE3RDI1RjE1
M0U5MDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tICovLAogCQkJCTFB
QkMzREY0MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCAqLywKIAkJCQkxQUJD
M0RGMzE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tICovLAogCQkJCTVDNkNF
NkQzMUY1OUVBMzUwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLmggKi8sCkBAIC05OTg3
LDYgKzk5OTIsOCBAQAogCQkJCTlBQ0MwN0IyMjVDODE1RjMwMERDNjM4NiAvKiBNZWRpYUtleVN5
c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi8sCiAJCQkJOUFDQzA3QjQyNUM4
MTYwQjAwREM2Mzg2IC8qIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICov
LAogCQkJCTkzNDI1ODk4MjU1QjUzNEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRp
ZXMuaCAqLywKKwkJCQk3MTM3QkE3RTI1RjE1NDBCMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29u
dHJvbGxlci5jcHAgKi8sCisJCQkJNzEzN0JBN0YyNUYxNTQwQzAwOTE0RUUzIC8qIE1vZGVsRWxl
bWVudENvbnRyb2xsZXIuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFn
ZUNsaWVudC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0
YXRlLmNwcCAqLywKIAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0
ZS5oICovLApAQCAtMTIwODUsNiArMTIwOTIsNyBAQAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2
Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURD
MzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MTM3QkE4MDI1RjE1NDIwMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1v
ZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5h
dGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0Njk0
OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCAwNDU1N2E4NWZjODdjNjc0NTFlNzBhZTE3ZjlmNTBjMGZmZmNj
NTNmLi5hNDAxMDkyM2ZhNWVkOWRlZDI4YjEyYzFiZDFkNGY4MGQzN2QxZWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtMTUxNSw0ICsxNTE1LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpCiAgICAgbV9wYWdl
LmRpZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KCk7CiB9CiAKKyNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnRE
aWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
c2l6ZSkgY29uc3QKK3sKKyAgICBtX3BhZ2UubW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhl
bGVtZW50LCB1cmwsIHV1aWQsIHNpemUpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDgzNWJmZDBjYzQ4ZTM0M2YxZmIzNDljYzllZTQ0
YWZjNGIxOTEyODIuLjJlMTQ2YzA3ZDQ4NDJmMjA2ODE4NzJjYzdiMjY3NGFhMzA3MjBkOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQ1Miw2ICs0NTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpIGZpbmFsOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0IGZpbmFsOworI2VuZGlmCisK
ICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFy
IHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNh
bFNjcm9sbGJhciB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNGU1YjFlNDVmZTI1N2MzMDEyYmEzMzhmMDVlMDM2ODVhZGE5
YTAyZS4uNTNkY2JlOWRkNDZjYmU3MWM3NWRkYWMzMTIyYTA3ZTBmNjBjMTNjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2OSw2ICsyNjks
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdodFN0b3JhZ2UuaD4KICNlbmRpZgog
CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTW9kZWxF
bGVtZW50Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRl
ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjZW5kaWYKQEAgLTc2NjksNiArNzY3MywyMSBAQCB2
b2lkIFdlYlBhZ2U6OmhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24oY29uc3QgVHJhbnNsYXRp
b25Db250ZXh0TWVudUluZm8mIGluZgogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6SGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbihpbmZvKSk7CiB9CisjZW5kaWYKKworI2lm
IEVOQUJMRShNT0RFTF9FTEVNRU5UKQordm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVh
dGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkK
K3sKKyAgICBpZiAoYXV0byBlbGVtZW50Q29udGV4dCA9IGNvbnRleHRGb3JFbGVtZW50KGVsZW1l
bnQpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcoKmVsZW1lbnRDb250ZXh0LCB1cmwsIHV1aWQsIHNpemUpKTsKK30KKwor
dm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1
dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7CisgICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZv
ckNvbnRleHQoZWxlbWVudENvbnRleHQpOworICAgIGlmIChpczxXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudD4oKmVsZW1lbnQpLmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQodXVpZCwgY29u
dGV4dElkKTsKK30KIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCA0NGM2YWMyOWI0OTczODEzMDc3NDVkNTlkYTNjNzFiOTQ4NjI1YWEz
Li42NzU4NDU2Y2ZmYmM0MGMyNmU4MTk0NjMwYTgwODcwYzJiNDdmMDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTAsNiArMjEwLDEwIEBAIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZp
c2libGVQb3NpdGlvbjsKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorY2xhc3MgSFRNTE1v
ZGVsRWxlbWVudDsKKyNlbmRpZgorCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsK
IGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFz
cyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKQEAgLTE0NjEsNiArMTQ2NSwxMSBA
QCBwdWJsaWM6CiAgICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbVByb3h5KCk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIHZvaWQgbW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBtb2Rl
bEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QpOworI2VuZGlmCisKICAgICB2b2lkIGRp
ZEhhbmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KCk7CiAgICAgdm9pZCBwcmVw
YXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWJkZTNmOGRh
OTFjNmM1YTY1YzZmYmE4MzhiMWVkNjczOGQwMjBkYi4uMzIwYTI3ZTdhYzQ0YzdkMTA1NGMzZDMz
M2Q0ZTY0NTFjNDNkMTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02NDMsNCArNjQzLDggQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgVXBkYXRlV2l0
aFRleHRSZWNvZ25pdGlvblJlc3VsdChzdHJ1Y3QgV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVz
dWx0IHJlc3VsdCwgc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnQsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpUZXh0UmVj
b2duaXRpb25VcGRhdGVSZXN1bHQgcmVzdWx0KSBBc3luYwogI2VuZGlmCisKKyNpZiBFTkFCTEUo
TU9ERUxfRUxFTUVOVCkKKyAgICBNb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElk
KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgU3RyaW5nIHV1
aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKKyNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432623</attachid>
            <date>2021-06-30 13:48:25 -0700</date>
            <delta_ts>2021-06-30 18:36:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227530-20210630224824.patch</filename>
            <type>text/plain</type>
            <size>40232</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhMDQ1MjlhNjU5YzY0NWVhOTViM2M4
YTIxYWE1YjkyYjc0MjkzMmIuLmMwNmUzNmFmODAzOTg0OTZjNmMxMTc1NzQwZGNhOWZkZTNlZDBk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVsXSBbbWFjT1NdIEFkZCBzdXBwb3J0IGZv
ciByZW5kZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5OTY4
MjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG5ldyBjb21waWxlLXRpbWUgZmxhZyBpbmRpY2F0aW5nIHRoZSBhdmFpbGFiaWxpdHkgb2Yg
dGhlIEFTVklubGluZVByZXZpZXcgU1BJIG9uIG1hY09TLgorICAgICAgICBXZSBvbmx5IGRlZmlu
ZSBpdCB3aGVuIHRoZSBoZWFkZXIgaXRzZWxmIGlzIHByZXNlbnQgZm9yIG5vdyB0byBhdm9pZCBp
c3N1ZXMgd2l0aCBvbGRlciBtYWNPUworICAgICAgICAxMiBTREtzLCBidXQgdWx0aW1hdGVseSB3
ZSB3aWxsIG9ubHkgdXNlIHRoZSBtYWNPUyB2ZXJzaW9uIGNoZWNrLgorCisgICAgICAgICogd3Rm
L1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIxLTA2LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAy
NmNjODU0NGFkN2FlYmJjMGQ3ODU5MGQxMmJjMTMwMjgzYmFlMi4uMjVjOTFjZjQyYWU2MjY2OGFi
N2MwNGI3YmUxNWNkNDZjMTcxMTk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIx
LTA2LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtN
b2RlbF0gW21hY09TXSBBZGQgc3VwcG9ydCBmb3IgcmVuZGVyaW5nIG1vZGVsIHJlc291cmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTMwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTk2ODIwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBtYWNPUywgQVNWSW5saW5lUHJldmlldyByZXF1
aXJlcyBhbiBpbnN0YW5jZSBpbiBib3RoIHRoZSBXZWJQcm9jZXNzIGFuZCB0aGUgVUlQcm9jZXNz
IHRvIGV4aXN0IHdpdGggYSBtYXRjaGluZyBVVUlELgorCisgICAgICAgIE9uIHRoZSBXZWJDb3Jl
IHNpZGUsIGluIHRoZSBXZWJQcm9jZXNzLCBhZnRlciB3cml0aW5nIHRoZSBtb2RlbCByZXNvdXJj
ZSBhcyBhIGZpbGUgdG8gZGlzaywgd2UgY3JlYXRlIGFuIGluc3RhbmNlIHdoZW4gYQorICAgICAg
ICA8bW9kZWw+IGVsZW1lbnQgaXMgY3JlYXRlZCBhbmQgbWVzc2FnZSB0aGUgVUlQcm9jZXNzIHRo
cm91Z2ggdGhlIENocm9tZUNsaWVudCBwcm92aW5kaW5nIHRoZSBVVUlEIGdlbmVyYXRlZCBmb3Ig
aXQuIFdoZW4KKyAgICAgICAgdGhlIFVJUHJvY2VzcyBpcyBkb25lIHByb2Nlc3NpbmcgdGhpcyBt
ZXNzYWdlLCBpdCB3aWxsIHJlcGx5IHdpdGggYW5vdGhlciBtZXNzYWdlIHdoaWNoIGNhbGxzIGlu
dG8KKyAgICAgICAgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCgpIHdpdGggdGhlIG1hdGNoaW5nIFVVSUQgYW5kIGEgY29udGV4dCBJRCBmb3IgdGhlIHJl
bW90ZSBjb250ZXh0LgorICAgICAgICBXZSBjYW4gdGhlbiBzZXQgdGhhdCByZW1vdGUgY29udGV4
dCBJRCBvbiBvdXIgQVNWSW5saW5lUHJldmlldyBpbnN0YW5jZS4KKworICAgICAgICBXZSBhbHNv
IGludHJvZHVjZSBhIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBtZXRob2Qgc3Vj
aCB0aGF0IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbigpIGNhbiBjYWxs
CisgICAgICAgIGl0IHRvIGhvc3QgdGhlIEFTVklubGluZVByZXZpZXcgbGF5ZXIuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFyRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RW1wdHlDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnRE
aWRDcmVhdGVQcmV2aWV3IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTA2
LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2Rl
bF0gW2lPU10gQWRkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgPG1vZGVsPiBpbiBmdWxsc2NyZWVu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCBjM2E4NmQxOTg3NjY1ODE2MTRhYjVhYmM2NGViOGFhNDkz
ZGM3ZjQwLi45MDUwYjljNGEwMmQ2NGRjNTNiMzRiZTU1OTRlOTA5ZmQxMDFjNTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNi0zMCAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIFttYWNPU10gQWRkIHN1cHBv
cnQgZm9yIHJlbmRlcmluZyBtb2RlbCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Nzk5NjgyMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRGVjbGFyZSB0aGUgQVNWSW5saW5lUHJldmlldyBjbGFzcyBmb3IgbWFjT1MuCisKKyAgICAg
ICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvc3BpL21h
Yy9TeXN0ZW1QcmV2aWV3U1BJLmg6IEFkZGVkLgorCiAyMDIxLTA2LTMwICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gW2lPU10gQWRkIHN1cHBv
cnQgZm9yIGRpc3BsYXlpbmcgPG1vZGVsPiBpbiBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmNTZm
ZTY5MzUyYTMxYjlmN2U4OTQ5YjRkZWQ0MTllZTg2YjlkNTUuLmI4NGIxNDdjNWMwZTUwNWQyOWQy
MDMwNTI4NWEzM2E1YmIyZmQwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMDYt
MzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW01vZGVs
XSBbbWFjT1NdIEFkZCBzdXBwb3J0IGZvciByZW5kZXJpbmcgbW9kZWwgcmVzb3VyY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc5OTY4MjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE9uIG1hY09TLCBBU1ZJbmxpbmVQcmV2aWV3IHJlcXVpcmVz
IGFuIGluc3RhbmNlIGluIGJvdGggdGhlIFdlYlByb2Nlc3MgYW5kIHRoZSBVSVByb2Nlc3MgdG8g
ZXhpc3Qgd2l0aCBhIG1hdGNoaW5nIFVVSUQuCisKKyAgICAgICAgT24gdGhlIFdlYktpdCBzaWRl
LCBpbiB0aGUgVUlQcm9jZXNzLCB3ZSByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9j
ZXNzIHdoZW4gdGhlIEFTVklubGluZVByZXZpZXcgaW4gdGhhdCBwcm9jZXNzCisgICAgICAgIHdh
cyBjcmVhdGVkIHdpdGggaXRzIGdlbmVyYXRlZCBVVUlELiBXZSBwcm92aWRlIHRoaXMgdG8gdGhl
IE1vZGVsRWxlbWVudENvbnRyb2xsZXIsIHNldCB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gdXAgYW5k
IGxvYWQKKyAgICAgICAgdGhlIGZpbGUuIFdoZW4gdGhvc2UgdGFza3MgY29tcGxldGUgc3VjY2Vz
c2Z1bGx5IHdlIG1lc3NhZ2UgYmFjayB0aGUgV2ViUHJvY2VzcyB3aXRoIHRoZSBVVUlEIGFuZCB0
aGUgcHJvdmlkZWQgRWxlbWVudENvbnRleHQKKyAgICAgICAgdG8gdGFsayBiYWNrIHRvIHRoZSBI
VE1MTW9kZWxFbGVtZW50IGluc3RhbmNlIHRoYXQgaW5pdGlhdGVkIHRoZSBtZXNzYWdlIHRvIHRo
ZSBVSVByb2Nlc3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TW9k
ZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVBy
ZXZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0
SWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDYtMzAgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVsXSBbaU9T
XSBBZGQgc3VwcG9ydCBmb3IgZGlzcGxheWluZyA8bW9kZWw+IGluIGZ1bGxzY3JlZW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmgKaW5kZXggMjA3NDgxMDJjMDNkZWI2ZmIxNGI1ZWZhNDZkMzNhZTE0N2VkMTNj
Yy4uMDZmOGY5ZmEwOTU1NWQxYzMwMzNhN2I5YzQ2NDFlYjEyYjUyNThhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmgKQEAgLTEwMTQsNiArMTAxNCwxMCBAQAogI2lmIChQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE1MDAwMAogI2RlZmluZSBIQVZFX0FSS0lU
X0lOTElORV9QUkVWSUVXX0lPUyAxCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNkZWZpbmUgSEFWRV9BUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMgMQorI2VuZGlmCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4
IGZhZmUzMzk1NDIzNzJkMWJmOTY3OTE5ZDIxMThkMzJjOWZiMWMxOWEuLjQ3M2E1ZDM4NTBjZWI4
NGVjZmYzNmJmMDQ1NTcwMTY1NDVjOWEyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTY5LDYg
KzY5LDEwIEBAIEhUTUxNb2RlbEVsZW1lbnQ6On5IVE1MTW9kZWxFbGVtZW50KCkKICAgICAgICAg
bV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAgICAgICAgbV9yZXNvdXJjZSA9IG51
bGxwdHI7CiAgICAgfQorCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAg
Y2xlYXJGaWxlKCk7CisjZW5kaWYKIH0KIAogUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IEhUTUxNb2Rl
bEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCkBAIC0xMzEsOCArMTM1LDEyIEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgbV9yZWFkeVByb21pc2UgPSBtYWtlVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4oKnRoaXMsICZIVE1MTW9kZWxFbGVtZW50OjpyZWFkeVByb21p
c2VSZXNvbHZlKTsKIAotICAgIGlmIChtX3NvdXJjZVVSTC5pc0VtcHR5KCkpCisgICAgaWYgKG1f
c291cmNlVVJMLmlzRW1wdHkoKSkgeworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQorICAgICAgICBjbGVhckZpbGUoKTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgIG9wdGlvbnMuZGVzdGluYXRp
b24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpNb2RlbDsKQEAgLTIyNCw2ICsyMzIsMTAg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMp
OworCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgbW9kZWxEaWRDaGFu
Z2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVl
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAppbmRleCBjZWQ0NTNjMmViZjYwYWRmM2E2ZTY3YjA0MmYyODlhYjZk
M2M4MmI4Li44M2Y5ZWQxYjNlODUyNDExYjkzZTJjYTgwZjI3NWFjMjNmMDRiZmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgKQEAgLTM1LDYgKzM1LDExIEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorT0JKQ19DTEFTUyBBU1ZJbmxpbmVQ
cmV2aWV3OworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWw7CkBA
IC01OSw2ICs2NCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnko
KTsKIAorI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlubGlu
ZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBj
b250ZXh0SWQpOworI2VuZGlmCisKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogCiBwcml2
YXRlOgpAQCAtNjcsNiArNzcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNvdXJjZVVSTChj
b25zdCBVUkwmKTsKICAgICBIVE1MTW9kZWxFbGVtZW50JiByZWFkeVByb21pc2VSZXNvbHZlKCk7
CiAKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICB2b2lkIGNsZWFyRmls
ZSgpOworICAgIHZvaWQgY3JlYXRlRmlsZSgpOworICAgIHZvaWQgbW9kZWxEaWRDaGFuZ2UoKTsK
KyNlbmRpZgorCiAgICAgLy8gRE9NIG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5h
bDsKIApAQCAtODMsNiArOTksMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9k
ZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CisKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKKyAgICBTdHJpbmcgbV9maWxlUGF0aDsKKyAgICBSZXRhaW5QdHI8QVNWSW5saW5l
UHJldmlldz4gbV9pbmxpbmVQcmV2aWV3OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWJhNDViMjUwM2Zl
MWZhNGY2ZmRiNjA3YTVkYzE0MDJlNzhlMjgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQpAQCAt
MCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MTW9kZWxFbGVtZW50LmgiCisK
KyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19N
QUMpCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgPHBh
bC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KK1NPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRW
aWV3ZXIsIEFTVklubGluZVByZXZpZXcpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSgpCit7CisgICAgY2xlYXJGaWxlKCk7CisKKyAg
ICBhdXRvIHBhdGhUb0RpcmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KCk7CisgICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhwYXRoVG9EaXJlY3RvcnkpOworICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMg
JiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOworICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFt
ZSk7CisgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgIGlmIChmaWxlIDw9IDApCisgICAgICAg
IHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwor
ICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpj
bGVhckZpbGUoKQoreworICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2Zp
bGVQYXRoID0gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2Rl
bERpZENoYW5nZSgpCit7CisgICAgY3JlYXRlRmlsZSgpOworCisgICAgRmxvYXRTaXplIHNpemU7
CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgc2l6
ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOworCisg
ICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFu
Y2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKV0pOworICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojptb2Rl
bERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYgeCAl
Zi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5k
YXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBpZiAoYXV0byogcGFn
ZSA9IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5t
b2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5
c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZywg
c2l6ZSk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFp
bkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKK3sKKyAg
ICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykg
eworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICVzIGJ1dCBl
eHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3RyaW5nKVttX2lubGluZVByZXZp
ZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6Y29udGV4dElkXTsK
KyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCByZW1vdGUgY29ubmVj
dGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZy
b21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2aWV3IGxheWVyXTsK
K30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpICYmIEhBVkUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUzZTM4MTU3YmY3ZDg5ZGMwZTY3MmNjMTg1MzY0ZjY2
ODFiZDcwYzAuLjU1MzNhOGIwYjZiNmI1YzdjNTg0YWRlYWJlZTQxYmQ2ZThiZDY2ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE0OCw2ICsxNDgsNyBAQAogCQk1QzdDNzg3NDIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENv
bmZpZ3VyYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDN0M3ODcyMjNBQzNFNzcwMDY1RjQ3RSAvKiBNYW5hZ2VkQ29uZmlndXJh
dGlvblNvZnRMaW5rLm1tICovOyB9OwogCQk1QzdDNzg3NjIzQUMzRTg1MDA2NUY0N0UgLyogTWFu
YWdlZENvbmZpZ3VyYXRpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDN0M3ODc1MjNBQzNFODUwMDY1RjQ3RSAvKiBNYW5hZ2VkQ29uZmlndXJh
dGlvblNQSS5oICovOyB9OwogCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVz
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNF
MzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEkuaCAqLzsgfTsKKwkJNzFCMTE0
MjAyNjgyM0FDRDAwNEQ2NzAxIC8qIFN5c3RlbVByZXZpZXdTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjExNDFGMjY4MjNBQ0QwMDRENjcwMSAv
KiBTeXN0ZW1QcmV2aWV3U1BJLmggKi87IH07CiAJCTcyRTVCRTk3MjY3OUE4MEEwMEFEQkZBOSAv
KiBWaWRlb1Rvb2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyRTVCRTk2MjY3OUE4MDkwMEFEQkZBOSAvKiBWaWRlb1Rvb2xib3hTUEkuaCAq
LzsgfTsKIAkJN0EzNkQwRjkyMjNBRDlBQjAwQjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzNkQwRjgyMjNB
RDlBQjAwQjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oICovOyB9OwogCQk3QTNBNkE4MDIwQ0FE
QjQ3MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0EzQTZBN0YyMENBREI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEku
aCAqLzsgfTsKQEAgLTM2Nyw2ICszNjgsNyBAQAogCQk1QzdDNzg3MjIzQUMzRTc3MDA2NUY0N0Ug
LyogTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1hbmFnZWRDb25maWd1cmF0aW9uU29mdExpbmsubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M3ODc1MjNBQzNFODUwMDY1RjQ3RSAvKiBNYW5h
Z2VkQ29uZmlndXJhdGlvblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9ncmVzc1NQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOU1Byb2dyZXNzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQjExNDFG
MjY4MjNBQ0QwMDRENjcwMSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzJFNUJFOTYyNjc5QTgwOTAwQURCRkE5IC8qIFZpZGVvVG9vbGJveFNQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1Rvb2xib3hTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzNkQwRjgyMjNBRDlBQjAwQjA1MjJFIC8qIENvbW1v
bkNyeXB0b1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25Dcnlw
dG9TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzQTZBN0YyMENBREI0NjAw
MzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TlNJbWFnZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4LDYgKzYzMCw3
IEBACiAJCQkJMEM3Nzg1ODUxRjQ1MTMwRjAwRjRFQkI2IC8qIFBJUFNQSS5oICovLAogCQkJCTBD
Nzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLywKIAkJCQlBMTE3
NUI0ODFGNkFGRjhFMDBDNEI5RjAgLyogU3BlZWNoU3ludGhlc2lzU1BJLmggKi8sCisJCQkJNzFC
MTE0MUYyNjgyM0FDRDAwNEQ2NzAxIC8qIFN5c3RlbVByZXZpZXdTUEkuaCAqLywKIAkJCQkwQzc3
ODU4ODFGNDUxMzBGMDBGNEVCQjYgLyogVGVsZXBob255VXRpbGl0aWVzU1BJLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKQEAgLTk5MCw2ICs5OTMsNyBAQAogCQkJCTkzQjM4RUMyMjU4MjFE
MjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjQ5MUY2
QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBDNUFGOTIxMUY0M0E0QzcwMDJFQUMwMiAvKiBTUUxpdGUzU1BJLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3MUIxMTQyMDI2ODIzQUNEMDA0RDY3MDEgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEzMDhCMTQyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZpZXdT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQUI2RTU4MUYzRDFEREIwMDlDMTRCMSAvKiBTeXN0
ZW1TbGVlcExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0FCNkU2NDFGM0QyMTdGMDA5
QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44N2M2OWYyMTg2ODg1NDZhNDBlOTU5ODkwODA0OWQ1M2MzZWE3NzZhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEku
aApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbXBvcnQgPEFzc2V0
Vmlld2VyL0FTVklubGluZVByZXZpZXcuaD4KKyNlbmRpZgorCisjZWxzZQorCisjaWYgSEFWRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKK0BjbGFzcyBBU1ZJbmxpbmVQcmV2aWV3OworCitA
aW50ZXJmYWNlIEFTVklubGluZVByZXZpZXcgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU1VVSUQgKnV1aWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIENBTGF5ZXIgKmxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB1aW50
MzJfdCBjb250ZXh0SWQ7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3Qp
ZnJhbWU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIFVVSUQ6
KE5TVVVJRCAqKXV1aWQ7CistICh2b2lkKXNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpaGFuZGxlcjsK
Ky0gKHZvaWQpcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDooTlNVUkwgKil1cmwgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWhhbmRsZXI7Cist
ICh2b2lkKXNldFJlbW90ZUNvbnRleHQ6KHVpbnQzMl90KWNvbnRleHRJZDsKKworQGVuZAorCisj
ZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBkZWU3MjVmYWUzMTg2
YjY3Mjc5MTc3ZTY3MjY0ZjcyYjczZTk1MjUxLi42ODJkYmNjMDZjZWFlN2Q3NmMxZTBlOWE2NmFi
ZjQyN2UxY2NiNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTk5LDYgKzk5LDcgQEAg
TW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNw
cAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0K
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKK01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0KIE1vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29n
bml6ZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDgzN2YxYjEyYzlmNGJiNTNjNmFhYjk3YzNlMDk1ZDQ5MmI5NmFm
NTQuLjc0NDlmYzY0OWJhOGY0Njc2ZTdiN2RjOTYzNmVlNzM5NGI5ZGJkMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMjkz
LDYgKzEwMjkzLDcgQEAKIAkJNzFDMjlFMzEyMDNDRTc2QzAwOEYzNkQyIC8qIENTU0FuaW1hdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTQW5pbWF0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8qIEFuaW1hdGFi
bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcxQ0FBM0Q5MjY4RDBCRjkwMEYyNTQxMCAvKiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQ0UyQzUxMjIwOURDN0YwMEM0OTRCRCAvKiBNb3VzZUV2
ZW50SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlRXZl
bnRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MDFEQjU1QzRF
MDBERDVDRjUgLyogbWFpbi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IG1haW4uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRDAyRDkyMURCNTVD
NEUwMERENUNGNSAvKiBtZWRpYS1jb250cm9sbGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gIm1lZGlhLWNvbnRyb2xsZXIuanMiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjMxMjIsNiArMjMxMjMsNyBAQAogCQkJCTcxQTNEMTgwMjU2MkI4MjUw
MDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmNwcCAqLywKIAkJCQk3MUEzRDE3RDI1NjJCODI0
MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovLAogCQkJCTcxQTNEMTdGMjU2MkI4MjQw
MDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmlkbCAqLywKKwkJCQk3MUNBQTNEOTI2OEQwQkY5
MDBGMjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSAibW9kZWwtZWxlbWVudCI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA4NDQ4M2UxOTRkY2Q3ZjZhNDczOTQ2M2Vj
MjlkNGQ0NDJkNzRmMzE3Li5lZTUwMWI2MTNhMDNhNjZiZDJkMzY0NGFiNGNmNDNjZTlkM2Q1YzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTc5LDkgKzU3OSwx
NSBAQCB2b2lkIEVtcHR5Q2hyb21lQ2xpZW50OjpzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJiwgQ29tcGxldGlvbkhhbmRsZQogfQogCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVu
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkgY29uc3QKIHsKIH0KKwor
dm9pZCBFbXB0eUNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QKK3sKK30KKwogI2VuZGlmCiAKIHZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0
ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5j
dGlvbiYmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDFmY2Q5NmQ4ZTQy
OGE4MWMxMTk1YTQyNjg2Y2NiODFhZWQ1YWRlMjEuLmJhNjcxNTQ5OWRmNjE1YzUwOWQyMzQ4Mzll
MTIxMDhjNDVhMDZlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTIy
MSw2ICsyMjEsMTAgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xp
ZW50IHsKICNlbmRpZgogCiAgICAgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9CisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICB2b2lkIG1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0IGZpbmFsOworI2Vu
ZGlmCiB9OwogCiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZW1wdHlEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMjQ4NzQwY2YwY2Iz
MzhjY2M4MzJhMzAzYjBhZGZkMTdmNTRjOTA0Ni4uMGY2MjJmZmI5Njk4MGZiNWYxOTFlZDE3YjI0
MGI2YTU4NzA3NWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC03OCw2ICs3
OCwxMCBAQCBjbGFzcyBXQUtSZXNwb25kZXI7CiAjaW5jbHVkZSAiTWVkaWFVc2FnZUluZm8uaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCitjbGFzcyBIVE1MTW9kZWxFbGVt
ZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5o
IgogI2VuZGlmCkBAIC01OTgsNiArNjAyLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkgY29uc3QgeyB9CisgICAgdmly
dHVhbCB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpIGNvbnN0IHsgfTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2dnaW5nLmgKaW5kZXggNGU5MTMyY2QzNWQ3MDUzZmQzMDgyOTY5OWIwZThjZWE1ODA0YTAyNC4u
ZDQ5MWNmMjY4NTEzMGUxMzJjOTMzZmQ3YzM1MDJiMmQ2MTE3NDQ0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaApAQCAtODQsNiArODQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
TShNZWRpYVNvdXJjZVNhbXBsZXMpIFwKICAgICBNKE1lbW9yeVByZXNzdXJlKSBcCiAgICAgTShN
ZXNzYWdlUG9ydHMpIFwKKyAgICBNKE1vZGVsRWxlbWVudCkgXAogICAgIE0oTmV0d29yaykgXAog
ICAgIE0oTm90WWV0SW1wbGVtZW50ZWQpIFwKICAgICBNKE92ZXJsYXlTY3JvbGxiYXJzKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGRlYTVjMTUzMTc5OWEzNTFiMTg0YTRmMWZjY2ZkNGVjNWYwYjMwZTkuLmI5ZWY5MTg2N2RjZmYy
ZGY2ZjBlZjZlNzA1ZjkwM2E4MjBiZGQ4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDc1LDggKzEwNzUsMTMgQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIq
IGNvbXBvc2l0aW5nQW5jZXMKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBlbHNlIGlm
IChpczxSZW5kZXJNb2RlbD4ocmVuZGVyZXIoKSkpIHsKICAgICAgICAgYXV0byBlbGVtZW50ID0g
ZG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOworI2lmIEhB
VkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgICAgICBpZiAoYXV0byogcGxhdGZvcm1M
YXllciA9IGVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgR3JhcGhpY3NM
YXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6Ok1vZGVsKTsKKyNlbHNlCiAgICAgICAgIGlmIChh
dXRvIG1vZGVsID0gZWxlbWVudC0+bW9kZWwoKSkKICAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb01vZGVsKFdURk1vdmUobW9kZWwpKTsKKyNlbmRpZgogCiAgICAgICAg
IGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IDM5YjM2MzAxODUyMzBhMzQxZjU3NTNlY2I1M2IwOWM4MGVjYTdhOGQuLmYyY2ZlODIy
ZWQzZmZhMTA1NzkzZjk3YmMyYjJiZjBiNmM1NTE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2Eu
bW0KQEAgLTI4LDI0ICsyOCwzMSBAQAogCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAKLSNp
bXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQorI2ltcG9y
dCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUhvc3QuaCIKICNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZVZpZXdzLmgiCiAjaW1wb3J0ICJXS01vZGVsVmlldy5oIgotI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpZiBI
QVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICNpbXBvcnQgPHBhbC9zcGkvaW9zL1N5c3Rl
bVByZXZpZXdTUEkuaD4KICNlbmRpZgogCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19N
QUMpCisjaW1wb3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorI2VuZGlmCisKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhB
c3NldFZpZXdlcik7CiBTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZp
ZXcpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfSU9TKQorCiB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
TGF5ZXJJZCkKIHsKICAgICBpZiAoIWlzPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+
KG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCkpKQpAQCAtMTA5LDYgKzExNiw1MSBAQCB2b2lk
IE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OgogICAgICAgICB9KTsKICAgICB9XTsKIH0KKworI2VuZGlmCisK
KyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKwordm9pZCBNb2RlbEVsZW1lbnRD
b250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYg
dXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIGF1dG8gcHJldmll
dyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkgVVVJRDpbW05T
VVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1aWRdXSk7CisKKyAgICBMT0coTW9kZWxF
bGVtZW50LCAiQ3JlYXRlZCByZW1vdGUgcHJldmlldyB3aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4
KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2lubGluZVByZXZpZXdzLmZpbmQo
dXVpZCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1faW5saW5lUHJldmlld3MuZW5kKCkpCisgICAg
ICAgIG1faW5saW5lUHJldmlld3Muc2V0KHV1aWQsIHByZXZpZXcpOworICAgIGVsc2UKKyAgICAg
ICAgaXRlcmF0b3ItPnZhbHVlID0gcHJldmlldzsKKworICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFp
blJ1bkxvb3AoKSk7CisgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKKyAg
ICBhdXRvIGVsZW1lbnRDb250ZXh0Q29weSA9IGNvbnRleHQ7CisgICAgYXV0byB1dWlkQ29weSA9
IHV1aWQ7CisgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVVSTC5m
aWxlU3lzdGVtUGF0aCgpXTsKKyAgICBbcHJldmlldyBzZXR1cFJlbW90ZUNvbm5lY3Rpb25XaXRo
Q29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGNvbnRleHRFcnJvcikgewor
ICAgICAgICBpZiAoY29udGV4dEVycm9yKSB7CisgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50
LCAiVW5hYmxlIHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwg
dXVpZENvcHkudXRmOCgpLmRhdGEoKSwgW2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTE9HKE1vZGVs
RWxlbWVudCwgIkVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIHdpdGggVVVJRCAlcy4iLCB1
dWlkQ29weS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBbcHJldmlldyBwcmVwYXJlUHJldmll
d09mRmlsZUF0VVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUg
bG9hZEVycm9yKSB7CisgICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7CisgICAgICAgICAgICAg
ICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQgJXM6ICVA
LiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVkRGVzY3JpcHRp
b25dKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIExPRyhNb2RlbEVsZW1lbnQsICJMb2FkZWQgZmlsZSB3aXRoIFVVSUQgJXMuIiwgdXVpZENv
cHkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFr
VGhpcywgZWxlbWVudENvbnRleHRDb3B5LCB1dWlkQ29weSwgY29udGV4dElkID0gW3ByZXZpZXcg
Y29udGV4dElkXV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV93ZWJQ
YWdlUHJveHkubW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChlbGVtZW50Q29u
dGV4dENvcHksIHV1aWRDb3B5LCBjb250ZXh0SWQpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH1dOworICAgIH1dOworfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCmluZGV4IDMxMTNiMmM0OGY3MWEzY2E0ODRk
ZTg2OWVhYThjNTQ3ZDY0YTRlOGQuLjliOTcyMjhmNTM3MjAzN2U1MjZlOGEzYjVmZjU1ZmY0MmM3
MTM0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyLmgKQEAgLTUyLDggKzUyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHRha2VNb2RlbEVs
ZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBj
b250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKIAorI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQorICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBt
X3dlYlBhZ2VQcm94eTsKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICBI
YXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFTVklubGluZVByZXZpZXc+PiBtX2lubGluZVByZXZp
ZXdzOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggNjcwNDE2NGE5NTNlMGVmNDVmNGE4Mjc4NTAzYjBmYjc4ZmE0OTY3Yy4uMDY1MGY2MGNiNzll
ZDk0ZTk2YzcwOWEyNmQ5OTJkZDU0Yzg3NjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtMTMyLDYgKzEzMiwxMCBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5m
bzsKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKIHN0cnVjdCBUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbzsKICNlbmRpZgorCisjaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCitzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CisjZW5kaWYKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA5N2U3YmUyNThhZDViODllMGQ5MjhiZWY2ZWJlYWNkMDA0NjU1MmZiLi45ZmYw
YzI0NmUxZDMxMDBiMDhiOTk4MTUzMjg3YzExN2QyODhkNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwNjg5LDEyICsxMDY4OSwyNyBAQCBXZWJDb3Jl
OjpDYXB0dXJlU291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFT
b3VyY2VGb3JTcGVlY2hSZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkKIHsKICNpZiBIQVZF
KEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCkt
PnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworI2lmIEhBVkUoQVJLSVRfSU5M
SU5FX1BSRVZJRVdfTUFDKQorICAgIG1vZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+bW9kZWxFbGVt
ZW50RGlkQ3JlYXRlUHJldmlldyhjb250ZXh0LCB1cmwsIHV1aWQsIHNpemUpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4
dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKK3sKKyAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9kZWxFbGVtZW50UHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0SWQpKTsKK30KKwogI2VuZGlm
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDU5YjNjOTJjOGEwNjVhODFlNDg5MjI1NDYzMzYwNzVhOTlhZGUxN2MuLjdhODM3
ZjNjNDViOTk2Zjk3ZmE5NjFlNjBlYTk2YWVjYjhmNzQyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NzYsNiArNTc2LDggQEAgcHVibGljOgogI2lmIEVOQUJM
RShNT0RFTF9FTEVNRU5UKQogICAgIE1vZGVsRWxlbWVudENvbnRyb2xsZXIqIG1vZGVsRWxlbWVu
dENvbnRyb2xsZXIoKSB7IHJldHVybiBtX21vZGVsRWxlbWVudENvbnRyb2xsZXIuZ2V0KCk7IH0K
ICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CisgICAgdm9pZCBtb2RlbEVsZW1l
bnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9p
ZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0ZmJhY2FlNjkwYzFkNDc2ZmU1NmNiNjJjMmQzOGNj
OGYyNmU5YjU1Li4wMjdhNzBjOGQ4MjkwNjIwMTlhMjE2NzA1Mzc4YjhkODcyN2QxMGFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC01OTUsNSArNTk1LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogI2lmIEVOQUJM
RShNT0RFTF9FTEVNRU5UKQogICAgIFRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKHVpbnQ2NF90
IGNvbnRlbnRMYXllcklEKQorICAgIE1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoc3RydWN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnRDb250ZXh0LCBVUkwgdXJsLCBTdHJpbmcg
dXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggOTJmZGY3OWYwM2M0ZTEyODA2NTRkZmIwMDQ3NmRkY2IzMGFlN2U2NC4uOGNk
NGM4YTAxMjJkNDNjMzA0MDgzYjI2ZTBhYTUxMGIzMzdhMDBiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTE1MTYsMTAgKzE1MTYsMTcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEhh
bmRsZU9yUHJldmVudE1vdXNlRG93bk9yTW91c2VVcEV2ZW50KCkKIH0KIAogI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFrZU1vZGVsRWxlbWVudEZ1
bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRM
YXllcklkKSBjb25zdAogewogICAgIG1fcGFnZS50YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihj
b250ZW50TGF5ZXJJZCk7CiB9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnRE
aWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
c2l6ZSkgY29uc3QKK3sKKyAgICBtX3BhZ2UubW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhl
bGVtZW50LCB1cmwsIHV1aWQsIHNpemUpOworfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMjBlNjlhNTE3OTc1NjJkZWFlY2JjNDcxOGIz
ZDYwNDRjYWM4NGFmNi4uMmM5ZDEyNzMwZmUwYWQ5NzlmOTUyMGU5MTU5NTdhOTM2MTFlYjc5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDU0LDYgKzQ1NCw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVu
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkg
Y29uc3QgZmluYWw7CisgICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgbXV0YWJsZSBi
b29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM1ODlh
NmMyOWQ2YWJlMGVhM2M2YjA3M2IzZjYzMTE2Njg5ODNiMTkuLjMzZDhjZDcxYmM1ODc0NDJjMjhk
M2I3OGUxZDcxYjYzZjEzM2YwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjksNiArMjY5LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBIaWdobGlnaHRTdG9yYWdlLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1vZGVsRWxlbWVudC5oPgorI2VuZGlmCisKICNpZiBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pCiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5oIgog
I2VuZGlmCkBAIC03NjcyLDExICs3Njc2LDMxIEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQ29udGV4
dE1lbnVUcmFuc2xhdGlvbihjb25zdCBUcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mbyYgaW5mCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorCiB2b2lkIFdlYlBhZ2U6OnRha2VN
b2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRCBjb250ZW50TGF5ZXJJZCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKGNvbnRlbnRMYXllcklkKSk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gZWxlbWVudENvbnRl
eHQgPSBjb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCplbGVtZW50Q29udGV4
dCwgdXJsLCB1dWlkLCBzaXplKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6bW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgZWxl
bWVudENvbnRleHQsIGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQorewor
I2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIGF1dG8gZWxlbWVudCA9IGVs
ZW1lbnRGb3JDb250ZXh0KGVsZW1lbnRDb250ZXh0KTsKKyAgICBpZiAoaXM8V2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGRvd25jYXN0PFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ+KCplbGVtZW50KS5pbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKHV1
aWQsIGNvbnRleHRJZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50Q29udGV4dCk7
CisgICAgVU5VU0VEX1BBUkFNKHV1aWQpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0SWQpOwor
I2VuZGlmCit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2NmUyYWVlMzYyYjEyMDg2NWY0
Y2ZlNzQ2MGI5NTRkZmRhODQ4MWZiLi43OTAxZGIyYmFlMzM5NmNmMjk0YjJiYjdkMDc0ZDFlMmFl
MmJhODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0yMTAsNiArMjEwLDEwIEBAIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNr
aW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAorI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQorY2xhc3MgSFRNTE1vZGVsRWxlbWVudDsKKyNlbmRpZgorCiBlbnVtIFN5bnRoZXRp
Y0NsaWNrVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsK
QEAgLTE0NjMsNiArMTQ2Nyw4IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKKyAgICB2b2lkIG1vZGVsRWxl
bWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQg
bW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KTsKICNlbmRpZgogCiAgICAgdm9p
ZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggNWJkZTNmOGRhOTFjNmM1YTY1YzZmYmE4MzhiMWVkNjczOGQwMjBkYi4uMzIwYTI3ZTdhYzQ0
YzdkMTA1NGMzZDMzM2Q0ZTY0NTFjNDNkMTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02NDMsNCArNjQzLDgg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAg
ICAgVXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChzdHJ1Y3QgV2ViQ29yZTo6VGV4dFJl
Y29nbml0aW9uUmVzdWx0IHJlc3VsdCwgc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVs
ZW1lbnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQgcmVzdWx0KSBBc3luYwogI2VuZGlmCisK
KyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBNb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4
dCwgU3RyaW5nIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKKyNlbmRpZgogfQo=
</data>
<flag name="review"
          id="454651"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="454676"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>