<?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>194670</bug_id>
          
          <creation_ts>2019-02-14 13:51:23 -0800</creation_ts>
          <short_desc>[iOS] Support pasting item-provider-backed data on the pasteboard as attachment elements</short_desc>
          <delta_ts>2019-02-18 16:43:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506345</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-14 13:51:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/39066529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506414</commentid>
    <comment_count>1</comment_count>
      <attachid>362074</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-14 15:51:31 -0800</bug_when>
    <thetext>Created attachment 362074
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507395</commentid>
    <comment_count>2</comment_count>
      <attachid>362074</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-02-18 13:22:00 -0800</bug_when>
    <thetext>Comment on attachment 362074
First pass

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

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:291
&gt; +        bool canReadAttachment = policy == WebContentReadingPolicy::AnyType &amp;&amp; RuntimeEnabledFeatures::sharedFeatures().attachmentElementEnabled();

Maybe put attachmentELementEnabled outside the loop and bail from this whole section if it&apos;s not set?

&gt; Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:34
&gt; -    typedef std::tuple&lt;WKBundlePageEditorClientV0, WKBundlePageEditorClientV1, WKBundlePageEditorClientV2&gt; Versions;
&gt; +    typedef std::tuple&lt;WKBundlePageEditorClientV0, WKBundlePageEditorClientV1&gt; Versions;

Did we ever ship this? I think you noted that nobody adopted, but did we ship it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507411</commentid>
    <comment_count>3</comment_count>
      <attachid>362074</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-18 13:50:13 -0800</bug_when>
    <thetext>Comment on attachment 362074
First pass

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

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:291
&gt;&gt; +        bool canReadAttachment = policy == WebContentReadingPolicy::AnyType &amp;&amp; RuntimeEnabledFeatures::sharedFeatures().attachmentElementEnabled();
&gt; 
&gt; Maybe put attachmentELementEnabled outside the loop and bail from this whole section if it&apos;s not set?

👍

&gt;&gt; Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:34
&gt;&gt; +    typedef std::tuple&lt;WKBundlePageEditorClientV0, WKBundlePageEditorClientV1&gt; Versions;
&gt; 
&gt; Did we ever ship this? I think you noted that nobody adopted, but did we ship it?

Regrettably, this did ship :(

Per IRC conversation, I&apos;ll maintain bincompat in this patch, and then see if I can remove it in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507453</commentid>
    <comment_count>4</comment_count>
      <attachid>362338</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-18 14:51:11 -0800</bug_when>
    <thetext>Created attachment 362338
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507459</commentid>
    <comment_count>5</comment_count>
      <attachid>362341</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-02-18 14:57:04 -0800</bug_when>
    <thetext>Created attachment 362341
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507534</commentid>
    <comment_count>6</comment_count>
      <attachid>362341</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-18 16:43:47 -0800</bug_when>
    <thetext>Comment on attachment 362341
Patch for EWS

Clearing flags on attachment: 362341

Committed r241749: &lt;https://trac.webkit.org/changeset/241749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507535</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-18 16:43:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362074</attachid>
            <date>2019-02-14 15:51:31 -0800</date>
            <delta_ts>2019-02-18 14:57:02 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-194670-20190214155129.patch</filename>
            <type>text/plain</type>
            <size>68583</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY2ZWFlNWU3ZGNlMWUy
MTU1MjU1ZjE5ZjA0OTNmMDdhYjNjY2NmYS4uODk4ZjhlOGVjODllYWNiYWU2ZmNkNWQ3YTkxYWZj
N2VhNDMwNzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE5LTAyLTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgcGFzdGluZyBpdGVtLXByb3ZpZGVyLWJhY2tlZCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkIGFz
IGF0dGFjaG1lbnQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDY3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwNjY1Mjk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBw
b3J0IGZvciBwYXN0aW5nIGZpbGVzIG9uIHRoZSBwYXN0ZWJvYXJkIGFzIGF0dGFjaG1lbnQgZWxl
bWVudHMsIGlmIHRoZSBhdHRhY2htZW50IGVsZW1lbnQgcnVudGltZQorICAgICAgICBzd2l0Y2gg
aXMgZW5hYmxlZC4gQ3VycmVudGx5LCB0aGUgb25seSB0eXBlcyBvZiBkYXRhIHRoYXQgY2FuIGJl
IHBhc3RlZCBhcyBhdHRhY2htZW50cyBhcmUgaW1hZ2VzLCB3aGljaCB0YWtlIGEKKyAgICAgICAg
c3BlY2lhbCBjb2RlcGF0aCBpbiBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIGEgcmVhZERhdGFCdWZmZXIgbWV0aG9kIHRoYXQgY29udmVydHMg
YSBnaXZlbiBibG9iIG9mIGRhdGEgZnJvbSB0aGUgcGFzdGVib2FyZCBpbnRvIGFuCisgICAgICAg
IGF0dGFjaG1lbnQtZWxlbWVudC1iYWNrZWQgcmVwcmVzZW50YXRpb24gaW4gdGhlIERPTSAoaS5l
LiBlaXRoZXIgYW4gYXR0YWNobWVudCBlbGVtZW50IG9yIGltYWdlIGVsZW1lbnQgdGhhdAorICAg
ICAgICBjb250YWlucyBhbiBhdHRhY2htZW50IGVsZW1lbnQpLiBJbiB0aGUgY2FzZSB3aGVyZSB0
aGUgZ2l2ZW4gcGFzdGVib2FyZCBpdGVtIGhhcyBiZWVuIGV4cGxpY2l0bHkgbWFya2VkIGFzIGFu
CisgICAgICAgIGF0dGFjaG1lbnQgKHZpYSB0aGUgcHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUg
aGludCkgYW5kIHRoZSBpdGVtIGhhcyBhdCBsZWFzdCBvbmUgdHlwZSByZXByZXNlbnRhdGlvbiB0
aGF0CisgICAgICAgIGNvbmZvcm1zIHRvICJwdWJsaWMuY29udGVudCIsIHdlIHRha2UgdGhpcyBj
b2RlcGF0aCBpbnN0ZWFkIG9mIGZpcnN0IGF0dGVtcHRpbmcgdGhlIHdlYiBjb250ZW50IHJlYWRp
bmcgdHlwZXMKKyAgICAgICAgc3VwcG9ydGVkIGJ5IGRlZmF1bHQgaW4gV2ViS2l0LgorCisgICAg
ICAgIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgVGVzdDogV0tBdHRhY2ht
ZW50VGVzdHNJT1MuSW5zZXJ0UGFzdGVkRmlsZXNBc0F0dGFjaG1lbnRzCisKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsaWVudFJlcGxh
Y2VtZW50VVJMRm9yUmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpt
aW1lVHlwZUZyb21Db250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VHlwZUlz
U3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorCisgICAgICAgIFJlbW92ZSBhbGwgbG9naWMgZm9yIGhh
bmRsaW5nIHN1YnJlc291cmNlIFVSTCByZXBsYWNlbWVudC4gU2VlIFdlYktpdCBDaGFuZ2VMb2cg
Zm9yIG1vcmUgZGV0YWlscyBvbiB0aGlzLgorCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKworICAgICAgICBB
ZGQgYSBoZWxwZXIgdGhhdCBjcmVhdGVzIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBmb3IgYSBnaXZl
biBibG9iIG9mIGRhdGEgYW5kIGNvbnRlbnQgdHlwZS4gVGhlIGxvZ2ljIGhlcmUgaXMKKyAgICAg
ICAgcXVpdGUgc2ltaWxhciB0byB0aGF0IG9mIGF0dGFjaG1lbnRGb3JGaWxlUGF0aCwgYW5kIHdl
IHNob3VsZCBmaW5kIGEgd2F5IHRvIGVpdGhlciBtZXJnZSB0aGVtLCBvciBwdWxsIG91dCBtb3Jl
CisgICAgICAgIG9mIHRoZWlyIHNpbWlsYXJpdGllcyBpbnRvIGhlbHBlciBmdW5jdGlvbnMuCisK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VTdWJyZXNvdXJjZVVSTHNXaXRoVVJMc0Zyb21DbGllbnQp
OiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBtb3JlIGxvZ2ljIGZvciBoYW5kbGluZyBzdWJy
ZXNvdXJjZSBVUkwgcmVwbGFjZW1lbnQuIFNlZSBXZWJLaXQgQ2hhbmdlTG9nIGZvciBtb3JlIGRl
dGFpbHMgb24gdGhpcy4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAg
ICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpjb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0
eUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpwYXRo
Rm9ySGlnaGVzdEZpZGVsaXR5SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm86OmRlY29kZSk6CisKKyAgICAgICAgQWRkIGNvbnRlbnRUeXBlc0J5RmlkZWxpdHkg
dG8gUGFzdGVib2FyZEl0ZW1JbmZvLCBpbnN0ZWFkIG9mIHJlcXVlc3RpbmcgdGhpcyBpbmZvcm1h
dGlvbiB1c2luZyBhIHNlcGFyYXRlIElQQworICAgICAgICBtZXNzYWdlLiBUaGlzIG1lYW5zIHdl
IGNhbiBhbHNvIHJlbW92ZSBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCwgYW5kIGp1
c3QgdXNlIHRoZSBpdGVtJ3MgdHlwZXMgaW4KKyAgICAgICAgZmlkZWxpdHkgb3JkZXIgaW5zdGVh
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9B
YnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorCisgICAgICAgIFNo
YXZlIG9mZiAocG90ZW50aWFsbHkgbWFueSkgc3luYyBJUEMgbWVzc2FnZXMgdG8gdGhlIFVJIHBy
b2Nlc3MgYnkgcHVsbGluZyBlYWNoIGNhbGwgdG8KKyAgICAgICAgaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleCBvdXQgb2YgdGhlIGlubmVyIGxvb3Agd2hlbiByZWFkaW5nIHdlYiBjb250ZW50Lgor
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRp
ZXMpOgorCisgICAgICAgIFNoYXZlIG9mZiBvbmUgZXh0cmFuZW91cyBzeW5jIElQQyBtZXNzYWdl
IGJ5IHJvbGxpbmcgdGhlIHR5cGVzIGluIGZpZGVsaXR5IG9yZGVyIGludG8gdGhlIHJlcXVlc3Qg
Zm9yCisgICAgICAgIFBhc3RlYm9hcmRJdGVtSW5mbywgaW5zdGVhZCBvZiBiZWluZyBzZW50IGlu
IGEgc2VwYXJhdGUgbWVzc2FnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorCisgICAgICAgIFBvcHVsYXRlIGNvbnRlbnRUeXBl
c0ZvckZpbGVVcGxvYWQgaW4gdGhlIGNhc2Ugd2hlcmUgVUlQYXN0ZWJvYXJkIGlzIHVzZWQgKGku
ZS4gY29weSBhbmQgcGFzdGUpLgorCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleDpdKTogRGVsZXRlZC4KKwogMjAxOS0wMi0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0MTQ4
Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYmQ1NzRiOGI3ZDdiMGFiODM1OThhNDZkMmZlYTYzMzEyNTUxNTFmYi4u
ZDAzZWY5MDA1YjQxYjA4MmU3OTE4NmRhNzVhYWRiNGE3N2MzNzc2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOS0wMi0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IHBhc3RpbmcgaXRlbS1wcm92aWRlci1iYWNr
ZWQgZGF0YSBvbiB0aGUgcGFzdGVib2FyZCBhcyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2NzAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM5MDY2NTI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhbGwgSVBDIHBsdW1iaW5nIGZvciBnZXRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleCwgbm93IHRoYXQgdGhlIHR5cGVzIGluIGZpZGVsaXR5IG9y
ZGVyIGhhdmUgYmVlbgorICAgICAgICByb2xsZWQgaW50byBQYXN0ZWJvYXJkSXRlbUluZm8uCisK
KyAgICAgICAgQWRkaXRpb25hbGx5LCByZW1vdmUgYWxsIFNQSSBmb3Igc3VicmVzb3VyY2UgVVJM
IHJlcGxhY2VtZW50LiBUaGlzIGZlYXR1cmUgd2FzIG9yaWdpbmFsbHkgYWRkZWQgd2l0aCB0aGUK
KyAgICAgICAgaW50ZW50aW9uIHRoYXQgcHJpdmF0ZSBjbGllbnRzIChpLmUuIE1haWwpIHdvdWxk
IGludGVyY2VwdCBwYXN0ZWQgb3IgZHJvcHBlZCBpbWFnZXMgYW5kIHJlcGxhY2UgdGhlaXIgVVJM
cy4KKyAgICAgICAgSG93ZXZlciwgc2luY2UgPHJkYXI6Ly9wcm9ibGVtLzQzMjE2ODM2Piwgb3Vy
IHN0cmF0ZWd5IGZvciB0aGlzIHNjZW5hcmlvIGhhcyBjaGFuZ2VkLCBzdWNoIHRoYXQgV2ViS2l0
IG5vdworICAgICAgICBoYW5kbGVzIHRoZSBkcm9wL3Bhc3RlLCBhbmQgbGF0ZXIgZGVsaXZlcnMg
dGhlIGltYWdlIGRhdGEgdG8gdGhlIGNsaWVudCB2aWEgTlNGaWxlV3JhcHBlcnMgaW4gdGhlIFVJ
IHByb2Nlc3MuCisgICAgICAgIEF0IHRoaXMgdGltZSwgdGhlcmUgYXJlIG5vIGFkb3B0ZXJzIG9m
IHRoaXMgU1BJLCBhbmQgbm8gYWRvcHRlcnMgb2YgdGhlIFYyIGluamVjdGVkIGJ1bmRsZSBlZGl0
aW5nIGNsaWVudC4gQXMKKyAgICAgICAgc3VjaCwgd2UgY2FuIHNpbXBseSByZXZlcnQgYWxsIG9m
IHRoaXMgdG8gaXRzIHN0YXRlIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHJlcGxh
Y2VtZW50IFVSTCBTUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
YW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorCisgICAgICAgIFJldHVy
biBZRVMgZm9yIC1wYXN0ZTogaW4gdGhlIGNhc2Ugd2hlcmU6CisgICAgICAgIDEuIFRoZSBwYXN0
ZWJvYXJkIGNvbnRhaW5zIGl0ZW1zIHRoYXQgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzIGF0dGFj
aG1lbnRzLgorICAgICAgICAyLiBUaGUgc2VsZWN0aW9uIGlzIHJpY2hseSBjb250ZW50ZWRpdGFi
bGUuCisgICAgICAgIDMuIEF0dGFjaG1lbnQgZWxlbWVudHMgYXJlIGVuYWJsZWQuCisKKyAgICAg
ICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGFsbG93cyB0aGUgY2FsbG91dCBiYXIgb24gaU9T
IHRvIHNob3cgdGhlICJQYXN0ZSIgYWN0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6cGVyZm9ybVR3b1N0ZXBEcm9wKToK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRV
UkxGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisKIDIwMTktMDItMTQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxl
LmNvbT4KIAogICAgICAgICBBWDogQVJJQSBSZWZsZWN0aW9uIHdhcyBkaXNhYmxlZCBpbiBlcnJv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwZjg2OTFlYjM3N2QxNDUwY2ZjODEy
NzcwNDg3NWYzNDdjZWFmYjYuLmY0NjdjYWIxNmQ0M2VjNjkxMzJjMTZlNmIyZDAwOGZiYjBmN2Zh
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0w
Mi0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBTdXBwb3J0IHBhc3RpbmcgaXRlbS1wcm92aWRlci1iYWNrZWQgZGF0YSBvbiB0aGUgcGFz
dGVib2FyZCBhcyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5
MDY2NTI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXBs
YWNlbWVudFVSTEZvclJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KTogRGVsZXRlZC4KKwogMjAxOS0wMi0xMiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBw
YWdlcyB0byB0cmlnZ2VyIHByb2dyYW1tYXRpYyBwYXN0ZSBmcm9tIHNjcmlwdCBvbiBpT1MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYzcyZDliM2U0MGU0M2FkZDRmMTJkOWU1OTBh
Mzg0MDhjNjIzYjU2Li4yZWUyODRhMjNlYjhiNWI2NzQzN2EwZGM3NDBmNjJjODMxYmQ5MmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDItMTQg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10g
U3VwcG9ydCBwYXN0aW5nIGl0ZW0tcHJvdmlkZXItYmFja2VkIGRhdGEgb24gdGhlIHBhc3RlYm9h
cmQgYXMgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTA2NjUy
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorCiAyMDE5LTAyLTEyICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHBhZ2VzIHRvIHRyaWdn
ZXIgcHJvZ3JhbW1hdGljIHBhc3RlIGZyb20gc2NyaXB0IG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IGRmMTkwZTVkMzk2Y2I5Njc3YzljNGQzMDg3YWFjYzM4MjdlYTMyYmIu
LmFiYjEwNGEyYzYwOGQyMWNkYjhlODE0OThhNWNlYWU1ZGVhYWVlNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTQyNTEsMTQgKzQyNTEsNiBAQCBjb25zdCBGb250KiBFZGl0b3I6
OmZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250cykgY29uc3QKICAgICByZXR1
cm4gZm9udDsKIH0KIAotU3RyaW5nIEVkaXRvcjo6Y2xpZW50UmVwbGFjZW1lbnRVUkxGb3JSZXNv
dXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKLXsKLSAgICBpZiAoYXV0byogZWRpdG9yQ2xpZW50ID0gY2xpZW50KCkpCi0gICAgICAg
IHJldHVybiBlZGl0b3JDbGllbnQtPnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoV1RGTW92ZShy
ZXNvdXJjZURhdGEpLCBtaW1lVHlwZSk7Ci0KLSAgICByZXR1cm4geyB9OwotfQotCiBSZWZQdHI8
SFRNTEltYWdlRWxlbWVudD4gRWRpdG9yOjppbnNlcnRFZGl0YWJsZUltYWdlKCkKIHsKICAgICBy
ZXR1cm4gSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6Omluc2VydEVkaXRhYmxlSW1hZ2UoZG9j
dW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA0NTQ3ZDQ3MTVmOTgzM2E4Njdj
ZTdmNmE4MzMzNzhjNTM2M2QwM2JiLi5jNTVkODFhMzZlMGZlOTM5NDA1ZThhMGY5ZjNkNzZiOGNi
M2FkY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQ5OSw4ICs0OTksNiBAQCBwdWJs
aWM6CiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7
CiAKLSAgICBTdHJpbmcgY2xpZW50UmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVk
QnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0KICNpZiAh
UExBVEZPUk0oV0lOKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVJbWFn
ZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250
ZW50UmVhZGVyLmgKaW5kZXggYzc3NGI0YTIwNTk0M2Q4ZDRkZWY3NjI2Mzk5ZTQzZDU1YzM1MzFl
Ny4uN2U3OGRiMTBlZTJiYmE2ZjA0MzRhODVjMWMzNDI5M2IwMjgyMjJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTc4LDYgKzc4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHR5cGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1cmxUaXRsZSkg
b3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBi
b29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9OwpAQCAtMTAxLDYg
KzEwMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAgICAgYm9vbCByZWFkUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQppbmRleCAyNTRhMzY4ZmE3NzRhZDYzNzJkNDZmMTUzYzVhOTVjNGVlMjQyOGM1Li45ZThlMjY1
NmQ1MWRlNjllYWEwZTA2NTQzNzg4YTFmZGFjZjc4NTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjIwLDkg
KzIyMCwxNCBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorc3RhdGljIFN0cmlu
ZyBtaW1lVHlwZUZyb21Db250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorewor
ICAgIHJldHVybiBpc0RlY2xhcmVkVVRJKGNvbnRlbnRUeXBlKSA/IE1JTUVUeXBlRnJvbVVUSShj
b250ZW50VHlwZSkgOiBjb250ZW50VHlwZTsKK30KKwogc3RhdGljIGJvb2wgY29udGVudFR5cGVJ
c1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewotICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGUoaXNEZWNsYXJlZFVUSShjb250ZW50VHlwZSkgPyBNSU1FVHlwZUZyb21VVEkoY29u
dGVudFR5cGUpIDogY29udGVudFR5cGUpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGVGcm9tQ29udGVudFR5cGUoY29udGVudFR5
cGUpKTsKIH0KIAogc3RhdGljIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEo
Y29uc3QgRnJhbWUmIGZyYW1lKQpAQCAtMzcwLDMxICszNzUsNiBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHNX
aXRoVVJMc0Zyb21DbGllbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFZlY3Rv
cjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mIHN1YnJlc291cmNlcywgVmVjdG9yPFJlZjxBcmNoaXZl
UmVzb3VyY2U+PiYgb3V0VW5yZXBsYWNlZFJlc291cmNlcykKLXsKLSAgICBBU1NFUlQoZnJhZ21l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKLSAgICBhdXRvJiBmcmFtZSA9ICpmcmFnbWVudC5kb2N1
bWVudCgpLmZyYW1lKCk7Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4g
c3VicmVzb3VyY2VVUkxUb0NsaWVudFVSTE1hcDsKLSAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNl
IDogc3VicmVzb3VyY2VzKSB7Ci0gICAgICAgIGF1dG8mIG9yaWdpbmFsVVJMID0gc3VicmVzb3Vy
Y2UtPnVybCgpOwotICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChvcmln
aW5hbFVSTCkpIHsKLSAgICAgICAgICAgIG91dFVucmVwbGFjZWRSZXNvdXJjZXMuYXBwZW5kKHN1
YnJlc291cmNlLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGF1dG8gcmVwbGFjZW1lbnRVUkwgPSBmcmFtZS5lZGl0b3IoKS5jbGllbnRSZXBs
YWNlbWVudFVSTEZvclJlc291cmNlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5t
aW1lVHlwZSgpKTsKLSAgICAgICAgaWYgKHJlcGxhY2VtZW50VVJMLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgb3V0VW5yZXBsYWNlZFJlc291cmNlcy5hcHBlbmQoc3VicmVzb3VyY2UuY29weVJl
ZigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3VicmVz
b3VyY2VVUkxUb0NsaWVudFVSTE1hcC5zZXQob3JpZ2luYWxVUkwuc3RyaW5nKCksIHJlcGxhY2Vt
ZW50VVJMKTsKLSAgICB9Ci0KLSAgICBpZiAoIXN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXAu
aXNFbXB0eSgpKQotICAgICAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzKGZyYWdtZW50LCBXVEZN
b3ZlKHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXApKTsKLX0KLQogUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgaWYgKCFmcmFtZS5wYWdlKCkgfHwgIWZy
YW1lLmRvY3VtZW50KCkpCkBAIC00MTcsMTYgKzM5NywxMyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJp
YnV0ZQogICAgICAgICByZXR1cm4gV1RGTW92ZShmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVu
dCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiB1bnJlcGxhY2Vk
UmVzb3VyY2VzOwotICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHNXaXRoVVJMc0Zyb21DbGllbnQo
KmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNv
dXJjZXMsIHVucmVwbGFjZWRSZXNvdXJjZXMpOwotCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cygpKSB7Ci0gICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhmcmFtZSwgKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCB1bnJl
cGxhY2VkUmVzb3VyY2VzKTsKKyAgICAgICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKGZyYW1lLCAqZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQsIGZyYWdtZW50QW5kUmVz
b3VyY2VzLnJlc291cmNlcyk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVz
b3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRv
bWljU3RyaW5nPiBibG9iVVJMTWFwOwotICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJj
ZT4mIHN1YnJlc291cmNlIDogdW5yZXBsYWNlZFJlc291cmNlcykgeworICAgIGZvciAoY29uc3Qg
UmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMu
cmVzb3VyY2VzKSB7CiAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJj
ZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9i
VVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBi
bG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwpAQCAt
NDY2LDE2ICs0NDMsMTMgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICBBU1NFUlQoc3Rh
Z2luZ0RvY3VtZW50KTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFy
a3VwKCpzdGFnaW5nRG9jdW1lbnQsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwLCBtYXJrdXBBbmRB
cmNoaXZlLm1haW5SZXNvdXJjZS0+dXJsKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29u
dGVudCk7CiAKLSAgICBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+IHVucmVwbGFjZWRSZXNv
dXJjZXM7Ci0gICAgcmVwbGFjZVN1YnJlc291cmNlVVJMc1dpdGhVUkxzRnJvbUNsaWVudChmcmFn
bWVudCwgbWFya3VwQW5kQXJjaGl2ZS5hcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSwgdW5yZXBsYWNl
ZFJlc291cmNlcyk7Ci0KICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKCkpIHsKLSAgICAgICAgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKGZy
YW1lLCBmcmFnbWVudCwgdW5yZXBsYWNlZFJlc291cmNlcyk7CisgICAgICAgIHJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyhmcmFtZSwgZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUu
YXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkpOwogICAgICAgICByZXR1cm4gc2FuaXRpemVkTWFya3Vw
Rm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50
LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiAgICAgfQogCiAgICAg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4gYmxvYlVSTE1hcDsKLSAgICBmb3Ig
KGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IHVucmVwbGFjZWRSZXNv
dXJjZXMpIHsKKyAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJj
ZSA6IG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkpIHsKICAgICAgICAg
YXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtNzAwLDEzICs2NzQsNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQog
ewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpm
cmFtZS5kb2N1bWVudCgpOwotCi0gICAgYXV0byByZXBsYWNlbWVudFVSTCA9IGZyYW1lLmVkaXRv
cigpLmNsaWVudFJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoYnVmZmVyLmNvcHlSZWYoKSwgaXNE
ZWNsYXJlZFVUSSh0eXBlKSA/IE1JTUVUeXBlRnJvbVVUSSh0eXBlKSA6IHR5cGUpOwotICAgIGlm
ICghcmVwbGFjZW1lbnRVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIHJlcGxhY2VtZW50VVJMKSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoKSkKICAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRG
b3JJbWFnZUF0dGFjaG1lbnQoZnJhbWUsIGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUp
KTsKICAgICBlbHNlCkBAIC03MjMsNyArNjkwLDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4g
YXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxO
YW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGlmICghc3VwcG9ydHNDbGllbnRT
aWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUo
RmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlB
dHRyaWJ1dGVzOjpZZXMpOwotICAgICAgICByZXR1cm4gYXR0YWNobWVudC5nZXQoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCiAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwpA
QCAtNzQ1LDExICs3MTIsNDUgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZv
ckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICBhdXRv
IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgaW1h
Z2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRy
LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7
CiAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQp
KTsKLSAgICAgICAgcmV0dXJuIGltYWdlLmdldCgpOworICAgICAgICByZXR1cm4gaW1hZ2U7CiAg
ICAgfQogCiAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXpl
Rm9yRGlzcGxheSksIGNvbnRlbnRUeXBlLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0
aCkpOwotICAgIHJldHVybiBhdHRhY2htZW50LmdldCgpOworICAgIHJldHVybiBhdHRhY2htZW50
OworfQorCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYg
ZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1l
LmRvY3VtZW50KCkpOworICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOworICAgIGF1dG8g
bWltZVR5cGUgPSBtaW1lVHlwZUZyb21Db250ZW50VHlwZShjb250ZW50VHlwZSk7CisgICAgYXV0
byB0eXBlRm9yQXR0YWNobWVudEVsZW1lbnQgPSBtaW1lVHlwZS5pc0VtcHR5KCkgPyBjb250ZW50
VHlwZSA6IG1pbWVUeXBlOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbnN0ZWFkIGFzayBD
b3JlU2VydmljZXMgZm9yIGEgcHJlZmVycmVkIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2
ZW4gY29udGVudCB0eXBlLgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0QXR0YWNobWVu
dE5hbWUgPSAiZmlsZSI7CisKKyAgICBTdHJpbmcgZmlsZU5hbWU7CisgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICBmaWxlTmFtZSA9IGRlZmF1bHRBdHRhY2htZW50TmFtZTsKKyAgICBl
bHNlCisgICAgICAgIGZpbGVOYW1lID0gbmFtZTsKKworICAgIGlmICghc3VwcG9ydHNDbGllbnRT
aWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUo
RmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUodHlwZUZvckF0dGFjaG1l
bnRFbGVtZW50KSksIGZpbGVOYW1lKSk7CisgICAgICAgIHJldHVybiBhdHRhY2htZW50OworICAg
IH0KKworICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0
YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCB0eXBlRm9yQXR0YWNobWVudEVsZW1l
bnQsIGZpbGVOYW1lLCBidWZmZXIpOworCisgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZv
cklubGluZUltYWdlUmVwcmVzZW50YXRpb24odHlwZUZvckF0dGFjaG1lbnRFbGVtZW50KSkgewor
ICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3Jl
YXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUodHlwZUZvckF0dGFjaG1lbnRFbGVtZW50
KSksIFdURk1vdmUoZmlsZU5hbWUpKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVs
ZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CisgICAgICAgIHJldHVybiBpbWFnZTsKKyAgICB9
CisKKyAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKHsgYnVmZmVyLnNpemUoKSB9LCBX
VEZNb3ZlKHR5cGVGb3JBdHRhY2htZW50RWxlbWVudCksIFdURk1vdmUoZmlsZU5hbWUpKTsKKyAg
ICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCkBAIC04MjYsNCArODI3LDI4IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVS
TChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
aWYgKGJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
c2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLmRvY3VtZW50
KCkpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZnJhZ21lbnQpCisgICAgICAgIGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgZnJhZ21l
bnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JEYXRhKGZyYW1lLCBidWZmZXIsIHR5cGUsIG5h
bWUpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9QQVJBTShu
YW1lKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDZjMmRiZGY2NzIxMWEwYjhiMTUyODNiZjBiNzRjYjg2
M2IwYTZkMmMuLmE0M2ExYmIzNmJmOGJlOGY0MjM1MWZkZmE3MDk4ZjVjYWNmYmY0OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xODIsNyArMTgyLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7
IH0KICAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0
b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KLSAg
ICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAgICB2b2lkIHJlcXVlc3RDYW5k
aWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAg
ICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggNmUw
ZDBiZWU2N2E0ZDQ1OTA0MjNiMTdlOTJlMjAxODQ3YWI4NGE1Yy4uYmM2NTg0YjU5MzNiYzU2YmYw
YzBjN2EzNGViMDU4YWFjZWY4ODAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBA
IC05NCw3ICs5NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKFJhbmdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIHJlc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0
aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCmluZGV4IDdkMjcxNWNkMzMwM2ExNzM5ZDRkM2JmYjE1NzE1NGIzNmNiOGZi
ZTUuLjM1YTgzMWQxYzBhMzA5YzM3NjE1YzFiNTA3ZjYzN2FmMzgxNGVhNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogI2VuZGlmCiAgICAg
dmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKaW5kZXggMjJhMDk4YTQ0
MThhYzM3YzQ2N2U1NzFjMjE2YmQ3M2E3ZDk4OGIzMi4uOTJkOGIwYmZkNjdhODJkZjg0NmU1ODlk
NDNkZjFjZGIxYzFmNDJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEl0ZW1JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEl0ZW1JbmZvLmgKQEAgLTQwLDYgKzQwLDcgQEAgZW51bSBjbGFzcyBQYXN0ZWJvYXJkSXRlbVBy
ZXNlbnRhdGlvblN0eWxlIHsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm8gewogICAgIFZlY3Rv
cjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKICAgICBWZWN0b3I8U3RyaW5nPiBjb250ZW50
VHlwZXNGb3JGaWxlVXBsb2FkOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbnRlbnRUeXBlc0J5Rmlk
ZWxpdHk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIGJvb2wgaXNOb25UZXh0
VHlwZSB7IGZhbHNlIH07CiAgICAgYm9vbCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29u
dGVudCB7IGZhbHNlIH07CkBAIC01NSwxMiArNTYsMTkgQEAgc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbyB7CiAgICAgICAgIHJldHVybiBwYXRoc0ZvckZpbGVVcGxvYWRbaW5kZXhdOwogICAgIH0K
IAorICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICByZXR1cm4gY29udGVudFR5cGVzRm9y
RmlsZVVwbG9hZC5maXJzdCgpOworICAgIH0KKwogICAgIFN0cmluZyBwYXRoRm9ySGlnaGVzdEZp
ZGVsaXR5SXRlbSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAocGF0aHNGb3JGaWxlVXBsb2Fk
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgQVNTRVJUKCFw
YXRoc0ZvckZpbGVVcGxvYWQuZmlyc3QoKS5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm4gcGF0
aHNGb3JGaWxlVXBsb2FkLmZpcnN0KCk7CiAgICAgfQogCkBAIC03MSw3ICs3OSw3IEBAIHN0cnVj
dCBQYXN0ZWJvYXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFz
dGVib2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2Fk
IDw8IHN1Z2dlc3RlZEZpbGVOYW1lIDw8IGlzTm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJM
QW5kRmlsZVVwbG9hZENvbnRlbnQ7CisgICAgZW5jb2RlciA8PCBwYXRoc0ZvckZpbGVVcGxvYWQg
PDwgY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNCeUZpZGVsaXR5IDw8
IHN1Z2dlc3RlZEZpbGVOYW1lIDw8IGlzTm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJMQW5k
RmlsZVVwbG9hZENvbnRlbnQ7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlKTsKIH0KIApAQCAtODUsNiArOTMsOSBAQCBPcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5jb250ZW50VHlwZXNCeUZpZGVsaXR5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN1Z2dlc3RlZEZpbGVOYW1l
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxZTliODgwZmQxYTVlMTg1MjUzMGFiOTM1
Y2NlMGQ4NzVjNjNkOTU3Li5kYzE2ZjBmYTBjNWE5MDEyYzY1MjVmNWE5NTMwZmU3NjU4MTUxMzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAt
NTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBjMzVmMDhlY2Q2NDU4Nzc4Mzk1ZDgzNWEz
NDI2YWJkM2ZjZjVmOGJhLi5lMDMzMTUwOThlMTU1YTkyNmY3MTk4ZTJjNzI2YjM3NTdjMTI0NDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
NjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJv
YXJkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEl0ZW1J
bmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgaW50IGluZGV4KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB1bmlxdWVOYW1lKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKaW5kZXggOGYy
ZGQwYTZlMzk5YWEzMWJjNmViYjc1YmJhZTExMzM0MDFjZTU0ZS4uZWE1NjQ0Mjg1MTQ4MjFlZjZi
OWRkYjQ0ZDM0ZmFhOTcwZmEwNzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaApAQCAtNTQsNyArNTQsNiBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogLSAobnVsbGFibGUgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3QgKil0YWtlUmVnaXN0cmF0aW9uTGlzdDsKICNlbmRpZgogLSAodm9pZClzZXRJdGVtczooTlNB
cnJheTxOU0RpY3Rpb25hcnkgKj4gKilpdGVtczsKLS0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilw
YXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7
CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TSW50ZWdlciBudW1iZXJPZkZpbGVz
OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICphbGxE
cm9wcGVkRmlsZVVSTHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KaW5kZXggMjA3MTUzMWNkYzc3YWI0ZjAwZDE3NjhlNWU2ZDUwZDkxYmM2NWNjOC4u
MjU4OTQxZGQ4NTY5ZTI2ZjQwYzNlYzJhMzE5NDM1NTA1MzY3YWY2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTI4NiwxMiArMjg2LDI0IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
LCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgaW50IG51bWJlck9mVHlwZXMgPSBbdHlwZXMg
Y291bnRdOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zOyBpKyspIHsK
KyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
ICAgICBib29sIGNhblJlYWRBdHRhY2htZW50ID0gcG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5n
UG9saWN5OjpBbnlUeXBlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCk7CisgICAgICAgIGF1dG8gdHlwZUZvckZpbGVV
cGxvYWQgPSBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOworICAgICAg
ICBib29sIGNhbkJlUmVwcmVzZW50ZWRBc0F0dGFjaG1lbnQgPSAhdHlwZUZvckZpbGVVcGxvYWQu
aXNFbXB0eSgpICYmIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2Fy
ZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0YWNobWVudDsKKyAgICAgICAgaWYgKGNhblJlYWRB
dHRhY2htZW50ICYmIGNhbkJlUmVwcmVzZW50ZWRBc0F0dGFjaG1lbnQpIHsKKyAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGVG
b3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgICAgIGlmIChidWZmZXIg
JiYgcmVhZGVyLnJlYWREYXRhQnVmZmVyKCpidWZmZXIsIHR5cGVGb3JGaWxlVXBsb2FkLCBpbmZv
LnN1Z2dlc3RlZEZpbGVOYW1lKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorI2VuZGlmCisKICAgICAgICAgZm9yIChpbnQgdHlwZUluZGV4ID0gMDsgdHlwZUluZGV4IDwg
bnVtYmVyT2ZUeXBlczsgdHlwZUluZGV4KyspIHsKICAgICAgICAgICAgIE5TU3RyaW5nICp0eXBl
ID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6dHlwZUluZGV4XTsKICAgICAgICAgICAgIGlmICghaXNU
eXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2Fy
ZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpLCBzdHJhdGVn
eS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2FyZE5hbWUpKTsKKyAgICAg
ICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JU
eXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGksIGluZm8pOwogICAgICAgICAgICAgaWYgKGl0
ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjUsMTAgKzMzNyw4IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIsCiAjZW5kaWYKICAgICAgICAgLy8gVHJ5IHRvIHJlYWQgZGF0YSBmcm9t
IGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBwYXN0ZWJvYXJkIGl0ZW0gc3VwcG9ydHMs
IGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBlIGlkZW50aWZpZXJzIGFyZQogICAgICAg
ICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBhcyBzcGVjaWZpZWQgYnkgZWFjaCBwYXN0
ZWJvYXJkIGl0ZW0uCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzRm9ySXRlbUluT3JkZXJP
ZkZpZGVsaXR5OwotICAgICAgICBzdHJhdGVneS5nZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleCh0eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRlbGl0eSwgaW5kZXgsIG1fcGFzdGVib2FyZE5h
bWUpOwogICAgICAgICBSZWFkZXJSZXN1bHQgcmVzdWx0ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXNGb3JJdGVtSW5PcmRlck9m
RmlkZWxpdHkpIHsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogaW5mby5jb250ZW50VHlwZXNC
eUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xp
Y3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5k
ZXggMjAwZGJjM2QwOTRhOTE4MTQ1MmVjZjA5MGMxNmMxYjEyZDBjYjg5MS4uYWVhOThhNzhmOWE3
YzRhZDI1MzFlMGE0MmE1Zjc3OTM4ZTZkMWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OCwxNiArNzgsNiBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
KQogICAgICAgICB0eXBlcy5hcHBlbmQocGFzdGVib2FyZFR5cGUpOwogfQogCi12b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBpbnQgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9h
cmQgbnVtYmVyT2ZJdGVtc10gfHwgIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KV0pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIE5TQXJyYXkgKnBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHkgPSBb
bV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDppbmRl
eF07Ci0gICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gcGFzdGVib2FyZFR5cGVz
QnlGaWRlbGl0eSkKLSAgICAgICAgdHlwZXMuYXBwZW5kKHR5cGVJZGVudGlmaWVyKTsKLX0KLQog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2Fy
ZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCkBAIC0xMzksNiArMTI5LDcgQEAgUGFzdGVi
b2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbnQgaW5kZXgpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mbzsKKyAgICBOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW1ttX3Bhc3RlYm9h
cmQgaXRlbVByb3ZpZGVyc10gb2JqZWN0QXRJbmRleDppbmRleF07CiAgICAgaWYgKFttX3Bhc3Rl
Ym9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihmaWxlVXBsb2FkVVJMc0F0SW5kZXg6
ZmlsZVR5cGVzOildKSB7CiAgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmZpbGVUeXBlcyA9
IG5pbDsKICAgICAgICAgTlNBcnJheSAqdXJscyA9IFttX3Bhc3RlYm9hcmQgZmlsZVVwbG9hZFVS
THNBdEluZGV4OmluZGV4IGZpbGVUeXBlczomZmlsZVR5cGVzXTsKQEAgLTE0OSwxNyArMTQwLDI3
IEBAIFBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW50IGluZGV4KQogICAgICAgICAgICAgaW5mby5wYXRoc0ZvckZpbGVVcGxv
YWQudW5jaGVja2VkQXBwZW5kKHVybC5wYXRoKTsKIAogICAgICAgICBpbmZvLmNvbnRlbnRUeXBl
c0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOwot
ICAgICAgICBmb3IgKE5TU3RyaW5nICpmaWxlVHlwZSA6IGZpbGVUeXBlcykKKyAgICAgICAgZm9y
IChOU1N0cmluZyAqZmlsZVR5cGUgaW4gZmlsZVR5cGVzKQorICAgICAgICAgICAgaW5mby5jb250
ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgTlNBcnJheSAqZmlsZVR5cGVzID0gaXRlbVByb3ZpZGVyLndlYl9maWxl
VXBsb2FkQ29udGVudFR5cGVzOworICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxv
YWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOworICAgICAgICBpbmZv
LnBhdGhzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3Vu
dCk7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKmZpbGVUeXBlIGluIGZpbGVUeXBlcykgewogICAg
ICAgICAgICAgaW5mby5jb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChm
aWxlVHlwZSk7CisgICAgICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRB
cHBlbmQoeyB9KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIE5TSXRlbVByb3ZpZGVyICppdGVt
UHJvdmlkZXIgPSBbW21fcGFzdGVib2FyZCBpdGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4Omlu
ZGV4XTsKICNpZiBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVB
TV9EQVRBCiAgICAgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9IHBhc3RlYm9hcmRJ
dGVtUHJlc2VudGF0aW9uU3R5bGUoaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlKTsKICNlbmRpZgogICAgIGluZm8uY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRl
bnQgPSBpdGVtUHJvdmlkZXIud2ViX2NvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50
OwogICAgIGluZm8uc3VnZ2VzdGVkRmlsZU5hbWUgPSBpdGVtUHJvdmlkZXIuc3VnZ2VzdGVkTmFt
ZTsKLSAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBpdGVtUHJvdmlkZXIucmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycykgeworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnJlZ2lz
dGVyZWRUeXBlSWRlbnRpZmllcnMgPSBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlm
aWVyczsKKyAgICBpbmZvLmNvbnRlbnRUeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKKyAgICBmb3IgKE5TU3RyaW5n
ICp0eXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7CisgICAgICAg
IGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50aWZp
ZXIpOwogICAgICAgICBDRlN0cmluZ1JlZiBjZlR5cGVJZGVudGlmaWVyID0gKENGU3RyaW5nUmVm
KXR5cGVJZGVudGlmaWVyOwogICAgICAgICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQoY2ZUeXBlSWRl
bnRpZmllcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE3Nyw3ICsxNzgsNiBAQCBQYXN0
ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KGludCBpbmRleCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGluZm8uaXNO
b25UZXh0VHlwZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBp
bmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmgKaW5kZXggMjlmOWE3MWQ3MGY2YWM0ODdjNjQwOTQxYmViNmQ0MWFm
MTllMTgxMS4uZTQ1ZDI0ZTc1ZjcwMjk1NThlMWEzOGM5MTNmM2M0NjNjMDU1ZmM3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oCkBAIC0zOSw2ICszOSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBp
bnRlcmZhY2UgTlNJdGVtUHJvdmlkZXIgKFdlYkNvcmVFeHRyYXMpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgd2ViX2NvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250
ZW50OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PE5TU3RyaW5nICo+
ICp3ZWJfZmlsZVVwbG9hZENvbnRlbnRUeXBlczsKIEBlbmQKIAogLyohIEEgV2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmFyIGVuY2Fwc3VsYXRlcyBhIHNpbmdsZSBjYWxsIHRvIHJlZ2lzdGVyIHNvbWV0
aGluZyB0byBhbiBpdGVtIHByb3ZpZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCA4MTZhMzBmMTVm
YTU2NDQ1YTZjMTMzNzc3YjY2MzZlYjQ2YjIwMzg0Li5kYjllOTU1MjAyNjAxZDM4ZDg4ODNiODRk
N2Q3ZTI3YjUyNTU4YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtNDg3LDExICs0ODcsNiBAQCAt
ICh2b2lkKXVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAq
PiAqKXR5cGVzCiAgICAgX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycyA9IHR5cGVzOwogfQogCi0t
IChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4OihOU1VJbnRlZ2VyKWluZGV4Ci17Ci0gICAgcmV0dXJuIFtzZWxmIGl0ZW1Qcm92aWRl
ckF0SW5kZXg6aW5kZXhdLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgPzogQFsgXTsKLX0KLQog
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogewogICAgIE5TTXV0YWJs
ZVNldDxOU1N0cmluZyAqPiAqYWxsVHlwZXMgPSBbTlNNdXRhYmxlU2V0IHNldF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCmluZGV4IDFkYWQ3MDRlYzk5NmIxZWY5ZDRjMWE5OWIxNzBiZjc2MjNkMzY4OWEuLmJh
NGQ3OGU0MGZkNTA1YmU3YzY3OWU3YTg0ZDIxYTE5NjZiNTFlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
CkBAIC0xNzksMTAgKzE3OSw2IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3Rv
bURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhCiB9CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQotewotICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0
SW5kZXgodHlwZXMsIGluZGV4KTsKLX0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
VVJMVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5LmgKaW5kZXggMzQ5ZjFhZTJhYTgxYmE3MDIxZmYzZjc4OTAzMjAwYzc2MWY3OWYwZi4u
MjU2NGQxMzU4ZDUxMzU0ZGUyZTNmNjc2NjhiMjI5ZjkwZWFiYjUzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKQEAgLTY5LDcgKzY5LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICAgICB2b2lkIHdyaXRlVVJMVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBmNWQwZDZiZGQyZTQ1MzMwNWYzMWRiZTNkYjdjMjVkNWZlZTY3NGUzLi4xNjRmMjlm
ZmM4YWJiMTEwMjk5ZGU1OWZlMDU5ZDExMzEwZGFmYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMyw3
ICszMyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgQWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IGFsbEluZm8pIExlZ2FjeVN5bmMKICAgICBJbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChz
dHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm8pIExlZ2FjeVN5bmMKICAgICBV
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMs
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKLSAgICBHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBMZWdhY3lTeW5jCiAjZW5kaWYKIAogICAgIFdyaXRlQ3Vz
dG9tRGF0YShzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEgZGF0YSwgU3RyaW5n
IHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IGFlMzQ4NTI5OWEwOTNiNzlmYmViYjNiNjMzNDI0MTg5Njc0NzdmOTYu
LjJlYjgwZDgzMWI4NmI2YWJjNzZjNDY0NDVkODAxNzkwYjg5MWE2NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtMjY5OCw2ICsyNjk4LDE1IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZp
ZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAgICAgICAgIGlmIChbcGFzdGVi
b2FyZCBjb250YWluc1Bhc3RlYm9hcmRUeXBlczp0eXBlcyBpbkl0ZW1TZXQ6aW5kaWNlc10pCiAg
ICAgICAgICAgICByZXR1cm4gWUVTOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBpZiAo
ZWRpdG9yU3RhdGUuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgX3dlYlZpZXcuY29uZmlndXJh
dGlvbi5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKSB7CisgICAgICAgICAgICBmb3IgKE5TSXRl
bVByb3ZpZGVyICppdGVtUHJvdmlkZXIgaW4gcGFzdGVib2FyZC5pdGVtUHJvdmlkZXJzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZSA9PSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlQXR0YWNobWVudCAmJiBpdGVtUHJvdmlk
ZXIud2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXMuY291bnQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBZRVM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCisKICAgICAgICAgYXV0byBmb2N1c2VkRG9jdW1lbnRPcmlnaW4gPSBlZGl0b3JTdGF0
ZS5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZDsKICAgICAgICAgaWYgKGZvY3VzZWREb2N1
bWVudE9yaWdpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gTk87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggZWEzZGQxYjUx
OGU1Yzg1ZGFhMjFmZDE0MDIzNjkyNDk2ZDA0MWYyYS4uNjk2Y2ZmY2JkZjgwZTUxMmUxZDNmZGRh
N2YxMDhmMzFkYjMwZTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaApAQCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6
UmFuZ2UqLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAg
dmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50JiwgV2ViQ29yZTo6UmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShX
ZWJLaXQ6OldlYlBhZ2UmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5qZWN0ZWRC
dW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJbkVkaXRpbmdEZWxlZ2F0ZS5oCmluZGV4IGU5YWNiMmQxMGRjMGUxY2U3Zjk3NTNkYzBlZTNm
N2U2MWE5NDRiZTEuLmM4MjA5YTE4MTY2ZWI4ZmNjYjg0MmIzOTUzNTY0OGQxNjlkYTYwMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5F
ZGl0aW5nRGVsZWdhdGUuaApAQCAtNjEsNyArNjEsNiBAQCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMi4zKSwgaW9zKDEwLjMpKQogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TRGF0
YSAqPiAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIHBhc3RlYm9h
cmREYXRhRm9yUmFuZ2U6KFdLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICopcmFuZ2U7CiAt
ICh2b2lkKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyRGlkV3JpdGVU
b1Bhc3RlYm9hcmQ6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWNvbnRyb2xsZXI7CiAtIChCT09MKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250
cm9sbGVyIHBlcmZvcm1Ud29TdGVwRHJvcDooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAq
KWZyYWdtZW50IGF0RGVzdGluYXRpb246KFdLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICop
ZGVzdGluYXRpb24gaXNNb3ZlOihCT09MKWlzTW92ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMyksIGlvcygxMS4wKSk7Ci0tIChOU1N0cmluZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIgKiljb250cm9sbGVyIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJl
c291cmNlRGF0YSBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xNCksIGlvcygxMi4wKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IGRmOWU5MTU5N2JkOWM3MzJjOTMwYTZi
MzA5NTg3MmVjMDgzZGRlNDIuLjBiNzU2NTBlOWY3OWViMzljY2E5ZjE5ZTkxZmNmMTlkMzY2MjIx
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAg
LTYyLDcgKzYyLDYgQEAgdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkQXBwbHlTdHls
ZSkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlQ1NTU3QKIHR5cGVkZWYgdm9pZCAoKldL
QnVuZGxlUGFnZUVkaXRpbmdOb3RpZmljYXRpb24pKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBub3RpZmljYXRpb25OYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxXcml0ZVRvUGFzdGVib2FyZCkoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsICBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZUdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdl
LCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJkVHlwZXMsIFdLQXJyYXlSZWYqIHBhc3RlYm9hcmREYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRs
ZVBhZ2VSZXBsYWNlbWVudFVSTEZvclJlc291cmNlKShXS0J1bmRsZVBhZ2VSZWYsIFdLRGF0YVJl
ZiByZXNvdXJjZURhdGEsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFdyaXRlVG9QYXN0ZWJvYXJkKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJv
b2wgKCpXS0J1bmRsZVBhZ2VQZXJmb3JtVHdvU3RlcERyb3ApKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZnJhZ21lbnQsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYg
ZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIApAQCAt
MTExLDMwICsxMTAsNCBAQCB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRW
MSB7CiAgICAgV0tCdW5kbGVQYWdlUGVyZm9ybVR3b1N0ZXBEcm9wICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwZXJmb3JtVHdvU3RlcERyb3A7CiB9IFdLQnVuZGxlUGFnZUVk
aXRvckNsaWVudFYxOwogCi10eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRW
MiB7Ci0gICAgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLQnVu
ZGxlUGFnZVNob3VsZEJlZ2luRWRpdGluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVnaW5FZGl0aW5nOwotICAgIFdLQnVuZGxlUGFnZVNob3VsZEVuZEVkaXRp
bmdDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRW5kRWRpdGlu
ZzsKLSAgICBXS0J1bmRsZVBhZ2VTaG91bGRJbnNlcnROb2RlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydE5vZGU7Ci0gICAgV0tCdW5kbGVQYWdlU2hv
dWxkSW5zZXJ0VGV4dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRJbnNlcnRUZXh0OwotICAgIFdLQnVuZGxlUGFnZVNob3VsZERlbGV0ZVJhbmdlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGVsZXRlUmFuZ2U7Ci0gICAgV0tC
dW5kbGVQYWdlU2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlOwotICAgIFdLQnVuZGxlUGFnZVNob3Vs
ZEFwcGx5U3R5bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QXBwbHlTdHlsZTsKLSAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEJlZ2luRWRpdGluZzsKLSAgICBXS0J1bmRs
ZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZEVuZEVkaXRpbmc7Ci0gICAgV0tCdW5kbGVQYWdlRWRpdGluZ05vdGlmaWNhdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDaGFuZ2U7Ci0gICAgV0tCdW5k
bGVQYWdlRWRpdGluZ05vdGlmaWNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRDaGFuZ2VTZWxlY3Rpb247Ci0KLSAgICAvLyBWZXJzaW9uIDEuCi0gICAgV0tCdW5k
bGVQYWdlV2lsbFdyaXRlVG9QYXN0ZWJvYXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQ7Ci0gICAgV0tCdW5kbGVQYWdlR2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlOwotICAgIFdLQnVuZGxlUGFnZURpZFdyaXRlVG9QYXN0ZWJvYXJkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkV3JpdGVUb1Bhc3RlYm9hcmQ7Ci0gICAg
V0tCdW5kbGVQYWdlUGVyZm9ybVR3b1N0ZXBEcm9wICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwZXJmb3JtVHdvU3RlcERyb3A7Ci0KLSAgICAvLyBWZXJzaW9uIDIuCi0gICAg
V0tCdW5kbGVQYWdlUmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudFVSTEZvclJlc291cmNlOwotfSBXS0J1bmRsZVBhZ2VFZGl0
b3JDbGllbnRWMjsKLQogI2VuZGlmIC8vIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggOGNkZjA5NTA2YWFiYjFiODQ1M2VmODli
MzVkOTVhNTc0NWFjOWIyNi4uNmJlYTUxYWVjY2QxODYzNmQxMjhiYTgyNTU5ZTM2ZDUyNTk0ZGM3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjYzLDE2ICs2NjMsNiBA
QCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0
aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgcmV0dXJuIFttX2NvbnRyb2xs
ZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBlcmZvcm1Ud29TdGVwRHJvcDp3cmFwcGVyKCpub2Rl
SGFuZGxlKSBhdERlc3RpbmF0aW9uOndyYXBwZXIoKnJhbmdlSGFuZGxlKSBpc01vdmU6aXNNb3Zl
XTsKICAgICAgICAgfQogCi0gICAgICAgIFdURjo6U3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVz
b3VyY2UoV2ViS2l0OjpXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNv
dXJjZURhdGEsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQot
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgICAgIE5TU3RyaW5nICp0eXBl
ID0gKE5TU3RyaW5nICopbWltZVR5cGU7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSByZXNvdXJj
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuIFttX2NvbnRyb2xsZXIt
Pl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6bV9jb250cm9sbGVyIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6ZGF0YS5nZXQo
KSBtaW1lVHlwZTp0eXBlXTsKLSAgICAgICAgfQotCiAgICAgICAgIFdLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwogICAgICAgICBjb25zdCBz
dHJ1Y3QgRGVsZWdhdGVNZXRob2RzIHsKICAgICAgICAgICAgIERlbGVnYXRlTWV0aG9kcyhSZXRh
aW5QdHI8aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4+IGRlbGVnYXRlKQpA
QCAtNjgzLDcgKzY3Myw2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2Vi
UHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICAg
ICAgLCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBh
c3RlYm9hcmREYXRhRm9yUmFuZ2U6KV0pCiAgICAgICAgICAgICAgICAgLCBkaWRXcml0ZVRvUGFz
dGVib2FyZChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlckRpZFdyaXRlVG9QYXN0ZWJvYXJkOildKQog
ICAgICAgICAgICAgICAgICwgcGVyZm9ybVR3b1N0ZXBEcm9wKFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOnBlcmZvcm1Ud29TdGVwRHJvcDphdERlc3RpbmF0aW9uOmlzTW92ZTopXSkKLSAgICAgICAg
ICAgICAgICAsIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTptaW1lVHlwZTopXSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgIH0KIApAQCAtNjk0LDcgKzY4Myw2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdE
ZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0Rl
bGVnCiAgICAgICAgICAgICBib29sIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CiAgICAgICAg
ICAgICBib29sIGRpZFdyaXRlVG9QYXN0ZWJvYXJkOwogICAgICAgICAgICAgYm9vbCBwZXJmb3Jt
VHdvU3RlcERyb3A7Ci0gICAgICAgICAgICBib29sIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U7
CiAgICAgICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCA5NTEyMzAyYjI4MmU0MWVk
MWIyNDcxOWEyZDA0NDhkYzc0N2ZmZmRmLi5jZTAyN2I1YTdiZTY4MjdhNzhlN2I3NzI1YmRiYjMy
NjRhNjI1MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMTkwLDE0ICsxOTAsNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgbV9j
bGllbnQuZGlkV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpy
ZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFdlYlBhZ2UmIHBhZ2UsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmICghbV9j
bGllbnQucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQot
ICAgIGF1dG8gZGF0YSA9IGFkb3B0V0soV0tEYXRhQ3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KHJlc291cmNlRGF0YS0+ZGF0YSgpKSwgcmVzb3VyY2VEYXRhLT5z
aXplKCkpKTsKLSAgICBhdXRvIHR5cGUgPSBhZG9wdFdLKHRvQ29waWVkQVBJKG1pbWVUeXBlKSk7
Ci0gICAgcmV0dXJuIHRvV1RGU3RyaW5nKG1fY2xpZW50LnJlcGxhY2VtZW50VVJMRm9yUmVzb3Vy
Y2UodG9BUEkoJnBhZ2UpLCBkYXRhLmdldCgpLCB0eXBlLmdldCgpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMWQ5NzZiNjc1MmIyZmZkMDBlNGIy
ZDlmYzBhZGQ2ZTBmYjMyOWM3Mi4uNjg5OTQxYTE4ZThkOWU5NGNhNDI2Zjk0MmIxZWI4YTBiM2Nm
ODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIHRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VFZGl0b3JD
bGllbnRWMSwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjI+IFZlcnNpb25zOworICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMCwgV0tCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50VjE+IFZlcnNpb25zOwogfTsKIH0KIApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgV2ViQ29yZTo6
UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBk
aWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdv
U3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBXZWJDb3JlOjpS
YW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVwbGFj
ZW1lbnRVUkxGb3JSZXNvdXJjZShXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDk2YTRkZDE4ZjIxNGI1OTQzMjhj
NTA3OGQ3ZTIyNTU1ZWQ3ZTdmM2UuLjkzNDA1NzEzYmQ4ZWZmNzRjOGFmYmQxOWJlNDc0MDNhNTc1
MDQ2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yOTcsMTEgKzI5Nyw2IEBAIGJvb2wg
V2ViRWRpdG9yQ2xpZW50OjpwZXJmb3JtVHdvU3RlcERyb3AoRG9jdW1lbnRGcmFnbWVudCYgZnJh
Z21lbnQsIFJhbmdlJiBkZXN0CiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKS5wZXJmb3JtVHdvU3RlcERyb3AoKm1fcGFnZSwgZnJhZ21lbnQsIGRlc3RpbmF0
aW9uLCBpc01vdmUpOwogfQogCi1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVS
TEZvclJlc291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSgqbV9wYWdlLCBXVEZN
b3ZlKHJlc291cmNlRGF0YSksIG1pbWVUeXBlKTsKLX0KLQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiB7CiAgICAgLy8gRklYTUU6IEFkZCBh
c3NlcnRpb24gdGhhdCB0aGUgY29tbWFuZCBiZWluZyByZWFwcGxpZWQgaXMgdGhlIHNhbWUgY29t
bWFuZCB0aGF0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggN2JlOGRkZmNhM2Y2ZDBjYTg5N2I3
ZTY4NWNlMTk5M2ZiODAwMjNkOC4uYjEyYmE2MDJmYWUzODM1NmFjZGJjYWU5NWExZmJhY2YwOTc5
MzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODMsNyArODMsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwogICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3Rl
clVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJl
ZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCmluZGV4IDFmYWQzY2IxYWJmODE3MmY0Mzk1NjQ4NGRhNmQ2NGU0NmY0MmM0ODMu
LjM0NjY2MjQ0NjkzYzk2NmNmOTE1NzE3ZjIwOWRjOTE5ZWU0YWM0YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yNDUsMTAgKzI0NSw2IEBAIGludCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZp
ZGVsaXR5Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4OjpSZXBseSh0eXBlcyksIDApOwotfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGRj
MjYxNzZhMjJiY2JmNzVmNWQxMTNiMjFhNTM2YjMyNzk2NTc5YmIuLmY3ZjEwNDFkODk0MmNmZThi
YTM3OTc3NmI1OTViOTdjZTkyZTI2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTU3LDcgKzU3LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
bnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTVmNDBlMGI1M2IxMjY2YjY4ZmNlNGUzODk4ZTg4M2Nj
ZTlhNzJhNy4uZTRjMmZkNmNmNWY4ZmU0Mzk4MmIyNWZmZGEyOGU3ODZiYmY2Zjc3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTc4LDcgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3Vy
Y2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgcmVxdWVzdERPTVBhc3RlQWNjZXNzKCkgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMzUyMzNlZDEyMTk3
OTcyYTVhNGM0NjE3NTE2YTRjODY1YWY2ZWExLi4wZmM4MTRmYWNhMDc0ZDNiYjU2OGM1ZTYyN2Yw
MWUxMWZkMWI2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTksMTIgKzQxOSw2IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNv
cmU6OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25s
eSBXZWJLaXQyLgogfQogCi1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZv
clJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8g
Tm90IGltcGxlbWVudGVkIGluIFdlYktpdExlZ2FjeS4KLSAgICByZXR1cm4geyB9OwotfQotCiAj
aWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApCiAKIC8vIEZJWE1FOiBSZW1vdmUgYm90aCB0aGlzIHN0dWIg
YW5kIHRoZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxvdyBvbmNlIHdlIGRvbid0
IG5lZWQgdGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9ydGVkIHBsYXRmb3JtLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA0NzY3Yjg4MjYxMzcxMzgzMWI4MTMxYTk2MDIwZmY5
ZmM4YmZlNzIzLi5kMTYwYTgzODY1MzgzNzg4MTVjMjkzMzBiZDE4NjE3MzM1ODFmNzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTgsNyArNTgsNiBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3Vw
cG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCA2YzFkY2IzNTdiYTA5ZWQ3ODMyYTg5ZTFiZDdiYTMyMzljOTc3NmQxLi4wOGE5
MDI2MjBjNjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xNTgsMTAgKzE1OCw2IEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEm
CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAg
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlc0J5RmlkZWxpdHlGb3JJ
dGVtQXRJbmRleCh0eXBlcywgaW5kZXgpOwotfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMmU3ZWE1ODE5
NDMyYWQ1NTdjYWY3ODhmZDEzOTY3NGIxYjY3NDE3Zi4uMmU4OWQ0MTJiYTQ1Mzc2NDNjNWRkM2Nj
Y2ExYmYxODIyZWEwMDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjksMTIgKzI2OSw2
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
U3RyaW5nIFdlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3Vs
ZERlbGV0ZVJhbmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxl
Z2F0ZT4gZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGNjNWU0ZDY0NWJlNTY3MDRhMDkyZDExZmMw
MDZjMzIzMTM5OTVhZGIuLmI3MGY3Y2I2NjZiNDlmYTY0MThlNzAyMWFhZDM1YTIzMmZjYzBiYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NCw3ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwotICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZv
clJlc291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZp
bmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDY1YzgzYTFm
ZDNmYjU3NGUwMjI2MTQwMmQ2NjBiZTNkZmMyYmNhOC4uMDg3MzUyOWZiYTY2YmFkYTBiODJlZTc2
MjJiNGY3MTE1YzAzMTFjMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAyLTE0ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgcGFzdGluZyBp
dGVtLXByb3ZpZGVyLWJhY2tlZCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkIGFzIGF0dGFjaG1lbnQg
ZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDY3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwNjY1Mjk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvZGUgYW5kIHRlc3Rz
IGZvciBzdWJyZXNvdXJjZSBVUkwgcmVwbGFjZW1lbnQsIGFuZCBhbHNvIGFkZCBhIG5ldyB0ZXN0
IHRvIHZlcmlmeSB0aGF0IGNvcGllZCBkYXRhIGNhbiBiZQorICAgICAgICBwYXN0ZWQgaW4gYW4g
ZWRpdGFibGUgYXJlYSBhcyBhdHRhY2htZW50IGVsZW1lbnRzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW06
CisgICAgICAgICgtW0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0lu
OmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAgKC1bQnVuZGxl
RWRpdGluZ0RlbGVnYXRlUGx1Z0luIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6bWltZVR5cGU6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorCiAyMDE5LTAy
LTE0ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYnVpbGQgZml4IGFmdGVyIHIyNDE0ODAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdh
dGVQbHVnSW4ubW0KaW5kZXggMzNmMmJiODMyNjBmMTJkNmQyYjgzOTBlNzQ1MGQwZjViYWY2NjAx
Yy4uYzYzYzBhOGVjZjQ0NjA1N2Q1MmU2NDA1MzZmYjE4YmU4MjRjZGIyYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdh
dGVQbHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9C
dW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0KQEAgLTQ3LDcgKzQ3LDYgQEAgQGltcGxlbWVu
dGF0aW9uIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiB7CiAgICAgUmV0YWluUHRyPGlkIDxC
dW5kbGVFZGl0aW5nRGVsZWdhdGVQcm90b2NvbD4+IF9yZW1vdGVPYmplY3Q7CiAgICAgQk9PTCBf
ZWRpdGluZ0RlbGVnYXRlU2hvdWxkSW5zZXJ0VGV4dDsKICAgICBCT09MIF9zaG91bGRPdmVycmlk
ZVBlcmZvcm1Ud29TdGVwRHJvcDsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIE5TU3RyaW5nICo+PiBfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwOwogfQogCiAtICh2
b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVn
SW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9s
bGVyCkBAIC02NCw3ICs2Myw2IEBAIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9j
ZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlkQ3JlCiAgICAgICAgIF9l
ZGl0aW5nRGVsZWdhdGVTaG91bGRJbnNlcnRUZXh0ID0gWUVTOwogCiAgICAgX3Nob3VsZE92ZXJy
aWRlUGVyZm9ybVR3b1N0ZXBEcm9wID0gW1twbHVnSW5Db250cm9sbGVyLnBhcmFtZXRlcnMgdmFs
dWVGb3JLZXk6QCJCdW5kbGVPdmVycmlkZVBlcmZvcm1Ud29TdGVwRHJvcCJdIGJvb2xWYWx1ZV07
Ci0gICAgX21pbWVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCA9IFtwbHVnSW5Db250cm9sbGVyLnBh
cmFtZXRlcnMgdmFsdWVGb3JLZXk6QCJNSU1FVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXAiXTsKIAog
ICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVj
dEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKEJ1
bmRsZUVkaXRpbmdEZWxlZ2F0ZVByb3RvY29sKV07CiAgICAgX3JlbW90ZU9iamVjdCA9IFticm93
c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFBy
b3h5V2l0aEludGVyZmFjZTppbnRlcmZhY2VdOwpAQCAtMTAwLDEyICs5OCw2IEBAIC0gKEJPT0wp
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250CiAgICAgcmV0dXJuIF9zaG91bGRPdmVycmlkZVBlcmZvcm1Ud29TdGVw
RHJvcDsKIH0KIAotLSAoTlNTdHJpbmcgKilfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICop
Y29udHJvbGxlciByZXBsYWNlbWVudFVSTEZvclJlc291cmNlOihOU0RhdGEgKilyZXNvdXJjZURh
dGEgbWltZVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKLXsKLSAgICBhc3NlcnQoISFyZXNvdXJj
ZURhdGEpOwotICAgIHJldHVybiBbX21pbWVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCBvYmplY3RG
b3JLZXk6bWltZVR5cGVdOwotfQotCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFj
aG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KaW5kZXggODQwZjU2N2QyNzUyMTU1Y2I3MTkxMWViNmNhNTMxMmE1
NjM0ZTI2Mi4uYTdmZTAyMDJkN2UzNjM3NWM2ODVjZjQyYWYyZDEzNGQ5YjUzMTViMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tCkBAIC0xMTU4LDM5ICsxMTU4LDYgQEAgVEVTVChXS0F0dGFjaG1lbnRU
ZXN0cywgSW5zZXJ0RHVwbGljYXRlQXR0YWNobWVudEFuZFVwZGF0ZURhdGEpCiAgICAgRVhQRUNU
X0ZBTFNFKFtbb3JpZ2luYWxBdHRhY2htZW50IGluZm9dLmZpbGVXcmFwcGVyIGlzRXF1YWw6Zmls
ZVdyYXBwZXIuZ2V0KCldKTsKIH0KIAotVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5qZWN0ZWRC
dW5kbGVSZXBsYWNlVVJMc1doZW5QYXN0aW5nQXR0cmlidXRlZFN0cmluZykKLXsKLSAgICBwbGF0
Zm9ybUNvcHlSaWNoVGV4dFdpdGhNdWx0aXBsZUF0dGFjaG1lbnRzKCk7Ci0KLSAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlRWRpdGluZ0RlbGVnYXRl
UGx1Z0luIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldE9iamVjdDpA
eyBAImltYWdlL3BuZyIgOiBAImNpZDpmb28tYmFyIiB9IGZvckJ1bmRsZVBhcmFtZXRlcjpAIk1J
TUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOwotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplTWFrZSg1MDAsIDUwMCksIGNvbmZpZ3VyYXRpb24u
Z2V0KCkpOwotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUg
b2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOkAiUGFzdGUiIGFyZ3VtZW50Om5pbF07Ci0gICAgICAgIEVYUEVD
VF9FUSgyVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7Ci0gICAgfQotICAg
IFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAWyBAIklNRyIsIEAiQVRUQUNITUVO
VCIsIEAiQVRUQUNITUVOVCIgXV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJjaWQ6Zm9vLWJhciIs
IFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzcmMiIGZvclF1ZXJ5U2VsZWN0b3I6QCJpbWci
XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKEAiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZycpWzBdLmF0dGFjaG1l
bnRJZGVudGlmaWVyIl0pOwotfQotCi1URVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbmplY3RlZEJ1
bmRsZVJlcGxhY2VVUkxXaGVuUGFzdGluZ0ltYWdlKQotewotICAgIHBsYXRmb3JtQ29weVBORygp
OwotCi0gICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50VVJMID0gQCJjaWQ6Zm9vLWJhciI7Ci0gICAg
YXV0byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZUVkaXRpbmdE
ZWxlZ2F0ZVBsdWdJbiJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRP
YmplY3Q6QHsgQCJpbWFnZS90aWZmIiA6IHJlcGxhY2VtZW50VVJMLCBAImltYWdlL3BuZyIgOiBy
ZXBsYWNlbWVudFVSTCB9IGZvckJ1bmRsZVBhcmFtZXRlcjpAIk1JTUVUeXBlVG9SZXBsYWNlbWVu
dFVSTE1hcCJdOwotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVu
dHMoQ0dTaXplTWFrZSg1MDAsIDUwMCksIGNvbmZpZ3VyYXRpb24uZ2V0KCkpOwotICAgIHsKLSAg
ICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5n
ZXQoKSk7Ci0gICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5k
OkAiUGFzdGUiIGFyZ3VtZW50Om5pbF07Ci0gICAgICAgIEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIu
b2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7Ci0gICAgfQotICAgIEVYUEVDVF9XS19TVFJFUSgi
Y2lkOmZvby1iYXIiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3JjIiBmb3JRdWVyeVNl
bGVjdG9yOkAiaW1nIl0pOwotfQotCiBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRBdHRh
Y2htZW50VXNpbmdGaWxlV3JhcHBlcldpdGhGaWxlUGF0aCkKIHsKICAgICBhdXRvIHdlYlZpZXcg
PSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CkBAIC0xODgxLDYgKzE4NDgsNDkgQEAg
VEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZENvbnRhY3RBc0F0dGFjaG1l
bnQpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3ZjYXJkIiwgaW5mby5jb250ZW50VHlwZSk7
CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydFBhc3RlZEZpbGVzQXNBdHRh
Y2htZW50cykKK3sKKyAgICBhdXRvIHBkZkl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbcGRmSXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiZG9jIl07Cisg
ICAgW3BkZkl0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOworICAgIFtwZGZJdGVtIHJlZ2lzdGVyRGF0YTp0ZXN0
UERGRGF0YSgpIHR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBERl07CisKKyAgICBh
dXRvIHRleHRJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3RleHRJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJoZWxsbyJdOworICAgIFt0ZXh0SXRlbSBz
ZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
QXR0YWNobWVudF07CisgICAgW3RleHRJdGVtIHJlZ2lzdGVyRGF0YTpbQCJoZWxsb3dvcmxkIiBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gdHlwZTooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlUGxhaW5UZXh0XTsKKworICAgIFVJUGFzdGVib2FyZC5nZW5lcmFsUGFz
dGVib2FyZC5pdGVtUHJvdmlkZXJzID0gQFsgcGRmSXRlbS5nZXQoKSwgdGV4dEl0ZW0uZ2V0KCkg
XTsKKworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiB0ZXh0QXR0YWNobWVudDsKKyAgICBS
ZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gcGRmQXR0YWNobWVudDsKKyAgICBhdXRvIHdlYlZpZXcg
PSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgeworICAgICAgICBPYnNlcnZl
QXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAg
ICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJQYXN0ZSIgYXJn
dW1lbnQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBvYnNlcnZlci5vYnNlcnZlcigpLmlu
c2VydGVkLmNvdW50KTsKKyAgICAgICAgX1dLQXR0YWNobWVudCAqZmlyc3RBdHRhY2htZW50ID0g
b2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5maXJzdE9iamVjdDsKKyAgICAgICAgaWYgKFtm
aXJzdEF0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJ0ZXh0L3Bs
YWluIl0pIHsKKyAgICAgICAgICAgIHRleHRBdHRhY2htZW50ID0gZmlyc3RBdHRhY2htZW50Owor
ICAgICAgICAgICAgcGRmQXR0YWNobWVudCA9IG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQu
bGFzdE9iamVjdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShmaXJzdEF0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSwgQCJhcHBsaWNhdGlvbi9wZGYiKTsK
KyAgICAgICAgICAgIHRleHRBdHRhY2htZW50ID0gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRl
ZC5sYXN0T2JqZWN0OworICAgICAgICAgICAgcGRmQXR0YWNobWVudCA9IGZpcnN0QXR0YWNobWVu
dDsKKyAgICAgICAgfQorICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhA
WyBdLCBAWyBwZGZBdHRhY2htZW50LmdldCgpLCB0ZXh0QXR0YWNobWVudC5nZXQoKSBdKTsKKyAg
ICB9CisKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAi
YXR0YWNobWVudCJdOworICAgIEVYUEVDVF9XS19TVFJFUSgiZG9jIiwgW3dlYlZpZXcgdmFsdWVP
ZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudFt0eXBlXj1h
cHBsaWNhdGlvbl0iXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkb2MiLCBbcGRmQXR0YWNobWVu
dCBpbmZvXS5uYW1lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudFt0eXBl
Xj10ZXh0XSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIiwgW3RleHRBdHRhY2htZW50
IGluZm9dLm5hbWUpOworICAgIFtwZGZBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0Jl
OnRlc3RQREZEYXRhKCldOworICAgIFt0ZXh0QXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRh
VG9CZTpbQCJoZWxsb3dvcmxkIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z11dOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGNhblBlcmZvcm1BY3Rpb246QHNlbGVjdG9y
KHBhc3RlOikgd2l0aFNlbmRlcjpuaWxdKTsKK30KKwogI2lmIEhBVkUoUEVOQ0lMS0lUKQogc3Rh
dGljIEJPT0wgZm9yRWFjaFZpZXdJbkhpZXJhcmNoeShVSVZpZXcgKnZpZXcsIHZvaWQoXm1hcEZ1
bmN0aW9uKShVSVZpZXcgKnN1YnZpZXcsIEJPT0wgKnN0b3ApKQogewpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCmluZGV4IDUyODFkMDVhZTQ2Mzg0MjZlOWQ4ZGUwZjMxYWQyY2QwOTE1YmFjNWEuLjY1
M2M1NDRiYjA5YWU1YmM3NGU1MzI1NWE4MTI3MDBkMmVkYTEzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKQEAgLTM1OCw4ICszNTgsOCBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVk
QnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFn
ZVNldFVJQ2xpZW50KG1fcGFnZSwgJnVpQ2xpZW50LmJhc2UpOwogCi0gICAgV0tCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50VjIgZWRpdG9yQ2xpZW50ID0gewotICAgICAgICB7IDIsIHRoaXMgfSwKKyAg
ICBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMSBlZGl0b3JDbGllbnQgPSB7CisgICAgICAgIHsg
MSwgdGhpcyB9LAogICAgICAgICBzaG91bGRCZWdpbkVkaXRpbmcsCiAgICAgICAgIHNob3VsZEVu
ZEVkaXRpbmcsCiAgICAgICAgIHNob3VsZEluc2VydE5vZGUsCkBAIC0zNzUsNyArMzc1LDYgQEAg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UpCiAgICAgICAgIDAsIC8qIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UgKi8KICAgICAgICAg
MCwgLyogZGlkV3JpdGVUb1Bhc3RlYm9hcmQgKi8KICAgICAgICAgMCwgLyogcGVyZm9ybVR3b1N0
ZXBEcm9wICovCi0gICAgICAgIDAsIC8qIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UgKi8KICAg
ICB9OwogICAgIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChtX3BhZ2UsICZlZGl0b3JDbGll
bnQuYmFzZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362338</attachid>
            <date>2019-02-18 14:51:11 -0800</date>
            <delta_ts>2019-02-18 14:57:03 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-194670-20190218145110.patch</filename>
            <type>text/plain</type>
            <size>66603</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg3ZTE4YjM4ZDI3NjU0
ZGIwMWUzNGNlMTEwOTZhNTYwYjI5NjY3Yy4uZmRlODMyNzIzNmM4ZmY0ODA3ZDU3MjFlN2ViODcx
ODY4MmRkMjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE5LTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgcGFzdGluZyBpdGVtLXByb3ZpZGVyLWJhY2tlZCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkIGFz
IGF0dGFjaG1lbnQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDY3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwNjY1Mjk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGRzIHN1cHBvcnQg
Zm9yIHBhc3RpbmcgZmlsZXMgb24gdGhlIHBhc3RlYm9hcmQgYXMgYXR0YWNobWVudCBlbGVtZW50
cywgaWYgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCBydW50aW1lCisgICAgICAgIHN3aXRjaCBpcyBl
bmFibGVkLiBDdXJyZW50bHksIHRoZSBvbmx5IHR5cGVzIG9mIGRhdGEgdGhhdCBjYW4gYmUgcGFz
dGVkIGFzIGF0dGFjaG1lbnRzIGFyZSBpbWFnZXMsIHdoaWNoIHRha2UgYQorICAgICAgICBzcGVj
aWFsIGNvZGVwYXRoIGluIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSByZWFkRGF0YUJ1ZmZlciBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGdp
dmVuIGJsb2Igb2YgZGF0YSBmcm9tIHRoZSBwYXN0ZWJvYXJkIGludG8gYW4KKyAgICAgICAgYXR0
YWNobWVudC1lbGVtZW50LWJhY2tlZCByZXByZXNlbnRhdGlvbiBpbiB0aGUgRE9NIChpLmUuIGVp
dGhlciBhbiBhdHRhY2htZW50IGVsZW1lbnQgb3IgaW1hZ2UgZWxlbWVudCB0aGF0CisgICAgICAg
IGNvbnRhaW5zIGFuIGF0dGFjaG1lbnQgZWxlbWVudCkuIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBn
aXZlbiBwYXN0ZWJvYXJkIGl0ZW0gaGFzIGJlZW4gZXhwbGljaXRseSBtYXJrZWQgYXMgYW4KKyAg
ICAgICAgYXR0YWNobWVudCAodmlhIHRoZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSBoaW50
KSBhbmQgdGhlIGl0ZW0gaGFzIGF0IGxlYXN0IG9uZSB0eXBlIHJlcHJlc2VudGF0aW9uIHRoYXQK
KyAgICAgICAgY29uZm9ybXMgdG8gInB1YmxpYy5jb250ZW50Iiwgd2UgdGFrZSB0aGlzIGNvZGVw
YXRoIGluc3RlYWQgb2YgZmlyc3QgYXR0ZW1wdGluZyB0aGUgd2ViIGNvbnRlbnQgcmVhZGluZyB0
eXBlcworICAgICAgICBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiBXZWJLaXQuCisKKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRU
ZXN0c0lPUy5JbnNlcnRQYXN0ZWRGaWxlc0FzQXR0YWNobWVudHMKKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xpZW50UmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVU
eXBlRnJvbUNvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZSk6CisKKyAgICAgICAgUmVtb3ZlIGFsbCBsb2dpYyBmb3IgaGFuZGxp
bmcgc3VicmVzb3VyY2UgVVJMIHJlcGxhY2VtZW50LiBTZWUgV2ViS2l0IENoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzIG9uIHRoaXMuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRmlsZVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckRhdGEpOgorCisgICAgICAgIEFkZCBh
IGhlbHBlciB0aGF0IGNyZWF0ZXMgYW4gYXR0YWNobWVudCBlbGVtZW50IGZvciBhIGdpdmVuIGJs
b2Igb2YgZGF0YSBhbmQgY29udGVudCB0eXBlLiBUaGUgbG9naWMgaGVyZSBpcworICAgICAgICBx
dWl0ZSBzaW1pbGFyIHRvIHRoYXQgb2YgYXR0YWNobWVudEZvckZpbGVQYXRoLCBhbmQgd2Ugc2hv
dWxkIGZpbmQgYSB3YXkgdG8gZWl0aGVyIG1lcmdlIHRoZW0sIG9yIHB1bGwgb3V0IG1vcmUKKyAg
ICAgICAgb2YgdGhlaXIgc2ltaWxhcml0aWVzIGludG8gaGVscGVyIGZ1bmN0aW9ucy4KKworICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVwbGFjZVN1YnJlc291cmNlVVJMc1dpdGhVUkxzRnJvbUNsaWVudCk6IERl
bGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIG1vcmUgbG9naWMgZm9yIGhhbmRsaW5nIHN1YnJlc291
cmNlIFVSTCByZXBsYWNlbWVudC4gU2VlIFdlYktpdCBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWls
cyBvbiB0aGlzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRl
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OnBhdGhGb3JI
aWdoZXN0RmlkZWxpdHlJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKToKKworICAgICAgICBBZGQgY29udGVudFR5cGVzQnlGaWRlbGl0eSB0byBQ
YXN0ZWJvYXJkSXRlbUluZm8sIGluc3RlYWQgb2YgcmVxdWVzdGluZyB0aGlzIGluZm9ybWF0aW9u
IHVzaW5nIGEgc2VwYXJhdGUgSVBDCisgICAgICAgIG1lc3NhZ2UuIFRoaXMgbWVhbnMgd2UgY2Fu
IGFsc28gcmVtb3ZlIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4LCBhbmQganVzdCB1
c2UgdGhlIGl0ZW0ncyB0eXBlcyBpbgorICAgICAgICBmaWRlbGl0eSBvcmRlciBpbnN0ZWFkLgor
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0Fic3Ry
YWN0UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisKKyAgICAgICAgU2hhdmUg
b2ZmIChwb3RlbnRpYWxseSBtYW55KSBzeW5jIElQQyBtZXNzYWdlcyB0byB0aGUgVUkgcHJvY2Vz
cyBieSBwdWxsaW5nIGVhY2ggY2FsbCB0bworICAgICAgICBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4IG91dCBvZiB0aGUgaW5uZXIgbG9vcCB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6
CisKKyAgICAgICAgU2hhdmUgb2ZmIG9uZSBleHRyYW5lb3VzIHN5bmMgSVBDIG1lc3NhZ2UgYnkg
cm9sbGluZyB0aGUgdHlwZXMgaW4gZmlkZWxpdHkgb3JkZXIgaW50byB0aGUgcmVxdWVzdCBmb3IK
KyAgICAgICAgUGFzdGVib2FyZEl0ZW1JbmZvLCBpbnN0ZWFkIG9mIGJlaW5nIHNlbnQgaW4gYSBz
ZXBhcmF0ZSBtZXNzYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleCk6CisKKyAgICAgICAgUG9wdWxhdGUgY29udGVudFR5cGVzRm9y
RmlsZVVwbG9hZCBpbiB0aGUgY2FzZSB3aGVyZSBVSVBhc3RlYm9hcmQgaXMgdXNlZCAoaS5lLiBj
b3B5IGFuZCBwYXN0ZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
Ol0pOiBEZWxldGVkLgorCiAyMDE5LTAyLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBLZXl1cHMgZm9yIG5vbi1tb2RpZmllciBrZXlzIGlkZW50
aWZpZWQgYXMgIkRlYWQiIHdoZW4gbm90IGZvY3VzZWQgaW4gYSBjb250ZW50LWVkaXRhYmxlIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNWY4MTM2M2Y4NzlkNDBkMzg2OTQ3MTU3YzYxZWE1ZTFmMTc0ZDdj
MS4uMTM2YThhOTQ4MTliMWI3MzljNTJmMmYxOTUzNmI5ZTU5ZDZiNmIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NCBAQAorMjAxOS0wMi0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IHBhc3RpbmcgaXRlbS1wcm92aWRlci1i
YWNrZWQgZGF0YSBvbiB0aGUgcGFzdGVib2FyZCBhcyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2NzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM5MDY2NTI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgUmVtb3ZlIGFsbCBJUEMgcGx1bWJpbmcgZm9yIGdldFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4LCBub3cgdGhhdCB0aGUgdHlwZXMgaW4gZmlkZWxpdHkgb3Jk
ZXIgaGF2ZSBiZWVuCisgICAgICAgIHJvbGxlZCBpbnRvIFBhc3RlYm9hcmRJdGVtSW5mby4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHJlbW92ZSBzdXBwb3J0IGZvciBzdWJyZXNvdXJjZSBVUkwg
cmVwbGFjZW1lbnQuIFRoaXMgZmVhdHVyZSB3YXMgb3JpZ2luYWxseSBhZGRlZCB3aXRoIHRoZQor
ICAgICAgICBpbnRlbnRpb24gdGhhdCBwcml2YXRlIGNsaWVudHMgKGkuZS4gTWFpbCkgd291bGQg
aW50ZXJjZXB0IHBhc3RlZCBvciBkcm9wcGVkIGltYWdlcyBhbmQgcmVwbGFjZSB0aGVpciBVUkxz
LgorICAgICAgICBIb3dldmVyLCBzaW5jZSA8cmRhcjovL3Byb2JsZW0vNDMyMTY4MzY+LCBvdXIg
c3RyYXRlZ3kgZm9yIHRoaXMgc2NlbmFyaW8gaGFzIGNoYW5nZWQsIHN1Y2ggdGhhdCBXZWJLaXQg
bm93CisgICAgICAgIGhhbmRsZXMgdGhlIGRyb3AvcGFzdGUsIGFuZCBsYXRlciBkZWxpdmVycyB0
aGUgaW1hZ2UgZGF0YSB0byB0aGUgY2xpZW50IHZpYSBOU0ZpbGVXcmFwcGVycyBpbiB0aGUgVUkg
cHJvY2Vzcy4KKyAgICAgICAgQXQgdGhpcyB0aW1lLCB0aGVyZSBhcmUgbm8gYWRvcHRlcnMgb2Yg
dGhpcyBTUEksIGFuZCBubyBhZG9wdGVycyBvZiB0aGUgVjIgaW5qZWN0ZWQgYnVuZGxlIGVkaXRp
bmcgY2xpZW50LiBBcworICAgICAgICBzdWNoLCB3ZSBjYW4gc2ltcGx5IHJldmVydCBhbGwgb2Yg
dGhpcyB0byBpdHMgc3RhdGUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgcmVwbGFj
ZW1lbnQgVVJMIFNQSSwgd2l0aAorICAgICAgICB0aGUgZXhjZXB0aW9uIHRvIGNoYW5nZXMgaW4g
V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgsIHdoZXJlaW4gdGhlcmUgaXMgYSBub256ZXJvIChi
dXQgbGlrZWx5IHRpbnkpIGNoYW5jZSBvZgorICAgICAgICBjb21wbGV0ZWx5IGJyZWFraW5nIGJp
bmFyeSBjb21wYXRhYmlsaXR5IHdpdGggYW55IHRoaXJkIHBhcnRpZXMgb24gbWFjT1Mgd2hpY2gg
bWF5IGhhdmUgdHJpZWQgdG8gYWRvcHQKKyAgICAgICAgc3VicmVzb3VyY2UgVVJMIHJlcGxhY2Vt
ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRU
eXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFj
dGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKworICAgICAgICBSZXR1cm4gWUVTIGZvciAt
cGFzdGU6IGluIHRoZSBjYXNlIHdoZXJlOgorICAgICAgICAxLiBUaGUgcGFzdGVib2FyZCBjb250
YWlucyBpdGVtcyB0aGF0IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcyBhdHRhY2htZW50cy4KKyAg
ICAgICAgMi4gVGhlIHNlbGVjdGlvbiBpcyByaWNobHkgY29udGVudGVkaXRhYmxlLgorICAgICAg
ICAzLiBBdHRhY2htZW50IGVsZW1lbnRzIGFyZSBlbmFibGVkLgorCisgICAgICAgIEFtb25nIG90
aGVyIHRoaW5ncywgdGhpcyBhbGxvd3MgdGhlIGNhbGxvdXQgYmFyIG9uIGlPUyB0byBzaG93IHRo
ZSAiUGFzdGUiIGFjdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVj
dGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OnBlcmZvcm1Ud29TdGVwRHJvcCk6CisgICAgICAgIChB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3Vy
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpyZXBsYWNl
bWVudFVSTEZvclJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxOS0wMi0xOCAg
Q2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoKSBjcmFzaGluZyBpbiBXUEUg
YW5kIEdUSysgcG9ydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1ZjQwYjc5OTMz
NzI1M2M5YTRjYjc0ZDNmODNlZTlhNjE3NDA5YTE4Li5kNDEzMmMzY2RlOGNmMWQ0ZjY0MTY2Zjkw
YmJlOTA5ZmNjN2FiMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTktMDItMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gU3VwcG9ydCBwYXN0aW5nIGl0ZW0tcHJvdmlkZXItYmFja2VkIGRh
dGEgb24gdGhlIHBhc3RlYm9hcmQgYXMgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjcwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zOTA2NjUyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KTogRGVsZXRlZC4KKwogMjAx
OS0wMi0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTVNFIGxvZ2dpbmcgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IGM2Njg4ZDE4Mjk0ZWU1OTUxOWM0ZmRhOWE2NDRkOWYzOWM2ZDYxYWUuLjNiNzhjMjc2
NjgwYzJhOTU2ZTNiNTZjOWM2NGZjNTczZGJkOTM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMi0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IHBhc3RpbmcgaXRlbS1w
cm92aWRlci1iYWNrZWQgZGF0YSBvbiB0aGUgcGFzdGVib2FyZCBhcyBhdHRhY2htZW50IGVsZW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2
NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MDY2NTI5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKwogMjAxOS0wMi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBtb3JlIHVzZXMgb2YgU3RyaW5nOjpmb3JtYXQgd2l0aCBTdHJpbmdDb25jYXRl
bmF0ZSAobW9zdGx5IG5vbi1BcHBsZSBwbGF0Zm9ybS1zcGVjaWZpYyBjYXNlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCA1YWJkYmY4ODE2NmUxYzdmNTE0MGE2YzExMmFmMmQzODU3
NDcwYjgzLi45MzdlNzQ0NzE1OTVkNGZhNDMwNTlmNDhkZWI5MDYyMWMyMjlkN2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MjU4LDE0ICs0MjU4LDYgQEAgY29uc3QgRm9udCog
RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAg
ICAgcmV0dXJuIGZvbnQ7CiB9CiAKLVN0cmluZyBFZGl0b3I6OmNsaWVudFJlcGxhY2VtZW50VVJM
Rm9yUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKGF1dG8qIGVkaXRvckNsaWVudCA9IGNsaWVudCgpKQot
ICAgICAgICByZXR1cm4gZWRpdG9yQ2xpZW50LT5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFdU
Rk1vdmUocmVzb3VyY2VEYXRhKSwgbWltZVR5cGUpOwotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQog
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0RWRpdGFibGVJbWFnZSgpCiB7
CiAgICAgcmV0dXJuIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjppbnNlcnRFZGl0YWJsZUlt
YWdlKGRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2I0YTZkMmMxN2Zk
ZGJkMDRjNzI1ZDg4ZTdlZDQ3NWM2NjRjMzVmOS4uZTA4ZGEzMjA2MjAxNjhiMDA3NzU0ZmZjMmI5
MzhkZjZmMzY1NjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01MDAsOCArNTAwLDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygp
IGNvbnN0OwogCi0gICAgU3RyaW5nIGNsaWVudFJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwot
CiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oCmluZGV4IGM3NzRiNGEyMDU5NDNkOGQ0ZGVmNzYyNjM5OWU0M2Q1
NWMzNTMxZTcuLjdlNzhkYjEwZWUyYmJhNmYwNDM0YTg1YzFjMzQyOTNiMDI4MjIyZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03OCw2ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVmlydHVhbENvbnRhY3RG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXJs
VGl0bGUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKQEAg
LTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggMjU0YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNS4u
OWU4ZTI2NTZkNTFkZTY5ZWFhMGUwNjU0Mzc4OGExZmRhY2Y3ODU1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTIyMCw5ICsyMjAsMTQgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKK3N0YXRp
YyBTdHJpbmcgbWltZVR5cGVGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKK3sKKyAgICByZXR1cm4gaXNEZWNsYXJlZFVUSShjb250ZW50VHlwZSkgPyBNSU1FVHlwZUZy
b21VVEkoY29udGVudFR5cGUpIDogY29udGVudFR5cGU7Cit9CisKIHN0YXRpYyBib29sIGNvbnRl
bnRUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKGlzRGVjbGFyZWRVVEkoY29udGVudFR5cGUpID8gTUlNRVR5cGVGcm9t
VVRJKGNvbnRlbnRUeXBlKSA6IGNvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlRnJvbUNvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSk7CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1l
bnREYXRhKGNvbnN0IEZyYW1lJiBmcmFtZSkKQEAgLTM3MCwzMSArMzc1LDYgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCByZXBsYWNlU3VicmVzb3Vy
Y2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25z
dCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8
QXJjaGl2ZVJlc291cmNlPj4mIG91dFVucmVwbGFjZWRSZXNvdXJjZXMpCi17Ci0gICAgQVNTRVJU
KGZyYWdtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgYXV0byYgZnJhbWUgPSAqZnJhZ21l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNT
dHJpbmc+IHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXA7Ci0gICAgZm9yIChhdXRvJiBzdWJy
ZXNvdXJjZSA6IHN1YnJlc291cmNlcykgewotICAgICAgICBhdXRvJiBvcmlnaW5hbFVSTCA9IHN1
YnJlc291cmNlLT51cmwoKTsKLSAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VV
Ukwob3JpZ2luYWxVUkwpKSB7Ci0gICAgICAgICAgICBvdXRVbnJlcGxhY2VkUmVzb3VyY2VzLmFw
cGVuZChzdWJyZXNvdXJjZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBhdXRvIHJlcGxhY2VtZW50VVJMID0gZnJhbWUuZWRpdG9yKCkuY2xp
ZW50UmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNv
dXJjZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudFVSTC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIG91dFVucmVwbGFjZWRSZXNvdXJjZXMuYXBwZW5kKHN1YnJlc291cmNl
LmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXAuc2V0KG9yaWdpbmFsVVJMLnN0cmluZygpLCBy
ZXBsYWNlbWVudFVSTCk7Ci0gICAgfQotCi0gICAgaWYgKCFzdWJyZXNvdXJjZVVSTFRvQ2xpZW50
VVJMTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhmcmFnbWVu
dCwgV1RGTW92ZShzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwKSk7Ci19Ci0KIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhGcmFtZSYgZnJh
bWUsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIGlmICghZnJhbWUucGFnZSgp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQpAQCAtNDE3LDE2ICszOTcsMTMgQEAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwg
TlNBdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnRBbmRSZXNvdXJjZXMu
ZnJhZ21lbnQpOwogICAgIH0KIAotICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gdW5y
ZXBsYWNlZFJlc291cmNlczsKLSAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzV2l0aFVSTHNGcm9t
Q2xpZW50KCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVudCwgZnJhZ21lbnRBbmRSZXNvdXJj
ZXMucmVzb3VyY2VzLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKLQogICAgIGlmIChzaG91bGRSZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewotICAgICAgICByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsICpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVu
dCwgdW5yZXBsYWNlZFJlc291cmNlcyk7CisgICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhB
dHRhY2htZW50cyhmcmFtZSwgKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBmcmFnbWVu
dEFuZFJlc291cmNlcy5yZXNvdXJjZXMpOwogICAgICAgICByZXR1cm4gV1RGTW92ZShmcmFnbWVu
dEFuZFJlc291cmNlcy5mcmFnbWVudCk7CiAgICAgfQogCiAgICAgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIEF0b21pY1N0cmluZz4gYmxvYlVSTE1hcDsKLSAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IHVucmVwbGFjZWRSZXNvdXJjZXMpIHsKKyAgICBmb3Ig
KGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IGZyYWdtZW50QW5kUmVz
b3VyY2VzLnJlc291cmNlcykgewogICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3Vi
cmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJp
bmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKICAg
ICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJM
KTsKQEAgLTQ2NiwxNiArNDQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgQVNT
RVJUKHN0YWdpbmdEb2N1bWVudCk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50
RnJvbU1hcmt1cCgqc3RhZ2luZ0RvY3VtZW50LCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCwgbWFy
a3VwQW5kQXJjaGl2ZS5tYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogCi0gICAgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiB1bnJlcGxh
Y2VkUmVzb3VyY2VzOwotICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHNXaXRoVVJMc0Zyb21DbGll
bnQoZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCksIHVu
cmVwbGFjZWRSZXNvdXJjZXMpOwotCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cygpKSB7Ci0gICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhmcmFtZSwgZnJhZ21lbnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOworICAgICAgICByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsIGZyYWdtZW50LCBtYXJrdXBBbmRB
cmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKTsKICAgICAgICAgcmV0dXJuIHNhbml0aXpl
ZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdE
b2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogICAgIH0K
IAogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+IGJsb2JVUkxNYXA7Ci0g
ICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiB1bnJlcGxh
Y2VkUmVzb3VyY2VzKSB7CisgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3Vi
cmVzb3VyY2UgOiBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKSB7CiAg
ICAgICAgIGF1dG8mIHN1YnJlc291cmNlVVJMID0gc3VicmVzb3VyY2UtPnVybCgpOwogICAgICAg
ICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJyZXNvdXJjZVVSTCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTcwMCwxMyArNjc0LDYgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1l
bnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLQotICAgIGF1dG8gcmVwbGFjZW1lbnRVUkwgPSBmcmFt
ZS5lZGl0b3IoKS5jbGllbnRSZXBsYWNlbWVudFVSTEZvclJlc291cmNlKGJ1ZmZlci5jb3B5UmVm
KCksIGlzRGVjbGFyZWRVVEkodHlwZSkgPyBNSU1FVHlwZUZyb21VVEkodHlwZSkgOiB0eXBlKTsK
LSAgICBpZiAoIXJlcGxhY2VtZW50VVJMLmlzRW1wdHkoKSkgewotICAgICAgICBhZGRGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCByZXBsYWNlbWVudFVSTCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KICAgICBpZiAoc2hvdWxkUmVwbGFjZVJp
Y2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpCiAgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIp
LCB0eXBlKSk7CiAgICAgZWxzZQpAQCAtNzIzLDcgKzY5MCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVs
ZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKICAgICBpZiAoIXN1cHBvcnRz
Q2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewogICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShwYXRoKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVE
aXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLSAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0KCk7
CisgICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAgIH0KIAogICAgIFN0cmluZyBjb250ZW50
VHlwZTsKQEAgLTc0NSwxMSArNzEyLDQ1IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFj
aG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAg
ICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAg
ICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShw
YXRoKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRh
Y2htZW50KSk7Ci0gICAgICAgIHJldHVybiBpbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KIAogICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoV1RGTW92ZShm
aWxlU2l6ZUZvckRpc3BsYXkpLCBjb250ZW50VHlwZSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBhdGgpKTsKLSAgICByZXR1cm4gYXR0YWNobWVudC5nZXQoKTsKKyAgICByZXR1cm4gYXR0
YWNobWVudDsKK30KKworc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEo
RnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVm
KCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKKyAg
ICBhdXRvIG1pbWVUeXBlID0gbWltZVR5cGVGcm9tQ29udGVudFR5cGUoY29udGVudFR5cGUpOwor
ICAgIGF1dG8gdHlwZUZvckF0dGFjaG1lbnRFbGVtZW50ID0gbWltZVR5cGUuaXNFbXB0eSgpID8g
Y29udGVudFR5cGUgOiBtaW1lVHlwZTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5zdGVh
ZCBhc2sgQ29yZVNlcnZpY2VzIGZvciBhIHByZWZlcnJlZCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8g
dGhlIGdpdmVuIGNvbnRlbnQgdHlwZS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVmYXVsdEF0
dGFjaG1lbnROYW1lID0gImZpbGUiOworCisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZmlsZU5hbWUgPSBkZWZhdWx0QXR0YWNobWVudE5hbWU7
CisgICAgZWxzZQorICAgICAgICBmaWxlTmFtZSA9IG5hbWU7CisKKyAgICBpZiAoIXN1cHBvcnRz
Q2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgeworICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKHR5cGVGb3JB
dHRhY2htZW50RWxlbWVudCkpLCBmaWxlTmFtZSkpOworICAgICAgICByZXR1cm4gYXR0YWNobWVu
dDsKKyAgICB9CisKKyAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgdHlwZUZvckF0dGFjaG1l
bnRFbGVtZW50LCBmaWxlTmFtZSwgYnVmZmVyKTsKKworICAgIGlmIChjb250ZW50VHlwZUlzU3Vp
dGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKHR5cGVGb3JBdHRhY2htZW50RWxlbWVu
dCkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZp
bGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKHR5cGVGb3JBdHRhY2htZW50
RWxlbWVudCkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dGFj
aG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOworICAgICAgICByZXR1cm4gaW1hZ2U7
CisgICAgfQorCisgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyh7IGJ1ZmZlci5zaXpl
KCkgfSwgV1RGTW92ZSh0eXBlRm9yQXR0YWNobWVudEVsZW1lbnQpLCBXVEZNb3ZlKGZpbGVOYW1l
KSk7CisgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQpAQCAtODI2LDQgKzgyNywyOCBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIXNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS5k
b2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LT5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7CisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRGF0YShmcmFtZSwgYnVmZmVyLCB0
eXBlLCBuYW1lKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURf
UEFSQU0obmFtZSk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA2YzJkYmRmNjcyMTFhMGI4YjE1MjgzYmYw
Yjc0Y2I4NjNiMGE2ZDJjLi5hNDNhMWJiMzZiZjhiZThmNDIzNTFmZGZhNzA5OGY1Y2FjZmJmNDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTgyLDcgKzE4Miw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFu
Z2UqKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdl
KiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwg
eyB9Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4geyB9OyB9CiAgICAgdm9pZCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwg
eyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IDZlMGQwYmVlNjdhNGQ0NTkwNDIzYjE3ZTkyZTIwMTg0N2FiODRhNWMuLmJjNjU4NGI1OTMz
YmM1NmJmMGMwYzdhMzRlYjA1OGFhY2VmODgwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtOTQsNyArOTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
PSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI3MTVjZDMzMDNhMTczOWQ0ZDNiZmIxNTcxNTRi
MzZjYjhmYmU1Li4zNWE4MzFkMWMwYTMwOWMzNzYxNWMxYjUwN2Y2MzdhZjM4MTRlYTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKICNlbmRp
ZgogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IDIy
YTA5OGE0NDE4YWMzN2M0NjdlNTcxYzIxNmJkNzNhN2Q5ODhiMzIuLjkyZDhiMGJmZDY3YTgyZGY4
NDZlNTg5ZDQzZGYxY2RiMWMxZjQyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRJdGVtSW5mby5oCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3MgUGFzdGVib2Fy
ZEl0ZW1QcmVzZW50YXRpb25TdHlsZSB7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiBwYXRoc0ZvckZpbGVVcGxvYWQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y29udGVudFR5cGVzRm9yRmlsZVVwbG9hZDsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb250ZW50VHlw
ZXNCeUZpZGVsaXR5OwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlTmFtZTsKICAgICBib29sIGlz
Tm9uVGV4dFR5cGUgeyBmYWxzZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVw
bG9hZENvbnRlbnQgeyBmYWxzZSB9OwpAQCAtNTUsMTIgKzU2LDE5IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkSXRlbUluZm8gewogICAgICAgICByZXR1cm4gcGF0aHNGb3JGaWxlVXBsb2FkW2luZGV4XTsK
ICAgICB9CiAKKyAgICBTdHJpbmcgY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRU
eXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKKyAgICB9CisKICAgICBTdHJpbmcgcGF0aEZvckhp
Z2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHBhdGhzRm9yRmls
ZVVwbG9hZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIEFT
U0VSVCghcGF0aHNGb3JGaWxlVXBsb2FkLmZpcnN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgcmV0
dXJuIHBhdGhzRm9yRmlsZVVwbG9hZC5maXJzdCgpOwogICAgIH0KIApAQCAtNzEsNyArNzksNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIFBhc3RlYm9hcmRJdGVtSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2RlciA8PCBwYXRoc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzRm9yRmls
ZVVwbG9hZCA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5z
RmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxl
VXBsb2FkIDw8IGNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzQnlGaWRl
bGl0eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmls
ZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTg1LDYgKzkzLDkgQEAgT3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRlbnRUeXBlc0ZvckZpbGVV
cGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzQnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdWdnZXN0ZWRG
aWxlTmFtZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWU5Yjg4MGZkMWE1ZTE4NTI1
MzBhYjkzNWNjZTBkODc1YzYzZDk1Ny4uZGMxNmYwZmEwYzVhOTAxMmM2NTI1ZjVhOTUzMGZlNzY1
ODE1MTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFBhc3RlYm9h
cmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggYzM1ZjA4ZWNkNjQ1ODc3ODM5
NWQ4MzVhMzQyNmFiZDNmY2Y1ZjhiYS4uZTAzMzE1MDk4ZTE1NWE5MjZmNzE5OGUyYzcyNmIzNzU3
YzEyNDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3Jt
UGFzdGVib2FyZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9h
cmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGludCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsK
ICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCmlu
ZGV4IDhmMmRkMGE2ZTM5OWFhMzFiYzZlYmI3NWJiYWUxMTMzNDAxY2U1NGUuLmVhNTY0NDI4NTE0
ODIxZWY2YjlkZGI0NGQzNGZhYTk3MGZhMDc1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTU0LDcgKzU0LDYgQEAgTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIC0gKG51bGxhYmxlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm9MaXN0ICopdGFrZVJlZ2lzdHJhdGlvbkxpc3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0SXRl
bXM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaXRlbXM7Ci0tIChOU0FycmF5PE5TU3RyaW5n
ICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRlZ2Vy
KWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVtYmVy
T2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAq
PiAqYWxsRHJvcHBlZEZpbGVVUkxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IDIwNzE1MzFjZGM3N2FiNGYwMGQxNzY4ZTVlNmQ1MGQ5MWJj
NjVjYzguLjVlZjNjZThhOWFhOGY5YzA5MzA1ZGQ5ZDI2MmJjYjg0ZDhhNzYwYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yODUsMTMgKzI4
NSwzMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXIm
IHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAgIE5TQXJyYXkgKnR5cGVzID0gc3Vw
cG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygpOwogICAgIGludCBudW1iZXJPZlR5cGVz
ID0gW3R5cGVzIGNvdW50XTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
Ym9vbCBjYW5SZWFkQXR0YWNobWVudCA9IHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eTo6QW55VHlwZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpOworI2Vsc2UKKyAgICBib29sIGNhblJlYWRBdHRhY2ht
ZW50ID0gZmFsc2U7CisjZW5kaWYKKwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtczsgaSsrKSB7CisgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKyAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50KSB7CisgICAgICAgICAgICBh
dXRvIHR5cGVGb3JGaWxlVXBsb2FkID0gaW5mby5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0
eUl0ZW0oKTsKKyAgICAgICAgICAgIGlmICghdHlwZUZvckZpbGVVcGxvYWQuaXNFbXB0eSgpICYm
IGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2FyZEl0ZW1QcmVzZW50
YXRpb25TdHlsZTo6QXR0YWNobWVudCkgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoYnVmZmVyICYmIHJlYWRlci5y
ZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9hZCwgaW5mby5zdWdnZXN0ZWRG
aWxlTmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBmb3IgKGludCB0eXBlSW5kZXggPSAwOyB0eXBl
SW5kZXggPCBudW1iZXJPZlR5cGVzOyB0eXBlSW5kZXgrKykgewogICAgICAgICAgICAgTlNTdHJp
bmcgKnR5cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5kZXhdOwogICAgICAgICAgICAg
aWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQ
YXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGks
IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSkp
OworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50
RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSwgaW5mbyk7CiAgICAgICAgICAg
ICBpZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMyNSwxMCArMzQzLDggQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICNlbmRpZgogICAgICAgICAvLyBUcnkgdG8gcmVhZCBk
YXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhhdCB0aGlzIHBhc3RlYm9hcmQgaXRlbSBz
dXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6ZXMuIFR5cGUgaWRlbnRpZmllcnMgYXJl
CiAgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlkZWxpdHksIGFzIHNwZWNpZmllZCBieSBl
YWNoIHBhc3RlYm9hcmQgaXRlbS4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNGb3JJdGVt
SW5PcmRlck9mRmlkZWxpdHk7Ci0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlGaWRlbGl0eUZv
ckl0ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5LCBpbmRleCwgbV9wYXN0
ZWJvYXJkTmFtZSk7CiAgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlc0Zvckl0ZW1J
bk9yZGVyT2ZGaWRlbGl0eSkgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBpbmZvLmNvbnRl
bnRUeXBlc0J5RmlkZWxpdHkpIHsKICAgICAgICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVh
ZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQppbmRleCAyMDBkYmMzZDA5NGE5MTgxNDUyZWNmMDkwYzE2YzFiMTJkMGNiODkxLi5hZWE5
OGE3OGY5YTdjNGFkMjUzMWUwYTQyYTVmNzc5MzhlNmQxYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc4LDE2
ICs3OCw2IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpCiAgICAgICAgIHR5cGVzLmFwcGVuZChwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGludCBpbmRleCkKLXsKLSAgICBpZiAoaW5kZXggPj0gW21f
cGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSB8fCAhW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDop
XSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSAqcGFzdGVib2FyZFR5cGVzQnlGaWRl
bGl0eSA9IFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4OmluZGV4XTsKLSAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBwYXN0ZWJv
YXJkVHlwZXNCeUZpZGVsaXR5KQotICAgICAgICB0eXBlcy5hcHBlbmQodHlwZUlkZW50aWZpZXIp
OwotfQotCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9w
YXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKQEAgLTEzOSw2ICsxMjksNyBA
QCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGludCBpbmRleCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhc3RlYm9h
cmRJdGVtSW5mbyBpbmZvOworICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21f
cGFzdGVib2FyZCBpdGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKICAgICBpZiAo
W21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGZpbGVVcGxvYWRVUkxz
QXRJbmRleDpmaWxlVHlwZXM6KV0pIHsKICAgICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqZmls
ZVR5cGVzID0gbmlsOwogICAgICAgICBOU0FycmF5ICp1cmxzID0gW21fcGFzdGVib2FyZCBmaWxl
VXBsb2FkVVJMc0F0SW5kZXg6aW5kZXggZmlsZVR5cGVzOiZmaWxlVHlwZXNdOwpAQCAtMTQ5LDE3
ICsxNDAsMjcgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgICAgICBpbmZvLnBhdGhzRm9y
RmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQodXJsLnBhdGgpOwogCiAgICAgICAgIGluZm8uY29u
dGVudFR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5j
b3VudCk7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKmZpbGVUeXBlIDogZmlsZVR5cGVzKQorICAg
ICAgICBmb3IgKE5TU3RyaW5nICpmaWxlVHlwZSBpbiBmaWxlVHlwZXMpCisgICAgICAgICAgICBp
bmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBOU0FycmF5ICpmaWxlVHlwZXMgPSBpdGVtUHJvdmlkZXIu
d2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXM7CisgICAgICAgIGluZm8uY29udGVudFR5cGVzRm9y
RmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CisgICAg
ICAgIGluZm8ucGF0aHNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmlsZVR5
cGVzLmNvdW50KTsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqZmlsZVR5cGUgaW4gZmlsZVR5cGVz
KSB7CiAgICAgICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2Vk
QXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAgIGluZm8ucGF0aHNGb3JGaWxlVXBsb2FkLnVu
Y2hlY2tlZEFwcGVuZCh7IH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAgTlNJdGVtUHJvdmlk
ZXIgKml0ZW1Qcm92aWRlciA9IFtbbV9wYXN0ZWJvYXJkIGl0ZW1Qcm92aWRlcnNdIG9iamVjdEF0
SW5kZXg6aW5kZXhdOwogI2lmIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKICAgICBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID0gcGFz
dGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGUpOwogI2VuZGlmCiAgICAgaW5mby5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBs
b2FkQ29udGVudCA9IGl0ZW1Qcm92aWRlci53ZWJfY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9h
ZENvbnRlbnQ7CiAgICAgaW5mby5zdWdnZXN0ZWRGaWxlTmFtZSA9IGl0ZW1Qcm92aWRlci5zdWdn
ZXN0ZWROYW1lOwotICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIGl0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7CisgICAgTlNBcnJheTxOU1N0cmluZyAq
PiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92aWRlci5yZWdpc3RlcmVkVHlw
ZUlkZW50aWZpZXJzOworICAgIGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMuY291bnQpOworICAgIGZvciAo
TlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsK
KyAgICAgICAgaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFwcGVuZCh0eXBl
SWRlbnRpZmllcik7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmVHlwZUlkZW50aWZpZXIgPSAoQ0ZT
dHJpbmdSZWYpdHlwZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghVVRUeXBlSXNEZWNsYXJlZChj
ZlR5cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc3LDcgKzE3OCw2
IEBAIFBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW50IGluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
aW5mby5pc05vblRleHRUeXBlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
cmV0dXJuIGluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCAyOWY5YTcxZDcwZjZhYzQ4N2M2NDA5NDFi
ZWI2ZDQxYWYxOWUxODExLi5lNDVkMjRlNzVmNzAyOTU1OGUxYTM4YzkxM2YzYzQ2M2MwNTVmYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmgKQEAgLTM5LDYgKzM5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAogQGludGVyZmFjZSBOU0l0ZW1Qcm92aWRlciAoV2ViQ29yZUV4dHJhcykKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCB3ZWJfY29udGFpbnNGaWxlVVJMQW5kRmlsZVVw
bG9hZENvbnRlbnQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKndlYl9maWxlVXBsb2FkQ29udGVudFR5cGVzOwogQGVuZAogCiAvKiEgQSBXZWJJ
dGVtUHJvdmlkZXJSZWdpc3RyYXIgZW5jYXBzdWxhdGVzIGEgc2luZ2xlIGNhbGwgdG8gcmVnaXN0
ZXIgc29tZXRoaW5nIHRvIGFuIGl0ZW0gcHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDgx
NmEzMGYxNWZhNTY0NDVhNmMxMzM3NzdiNjYzNmViNDZiMjAzODQuLmRiOWU5NTUyMDI2MDFkMzhk
ODg4M2I4NGQ3ZDdlMjdiNTI1NThjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC00ODcsMTEgKzQ4
Nyw2IEBAIC0gKHZvaWQpdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOihOU0FycmF5PE5T
U3RyaW5nICo+ICopdHlwZXMKICAgICBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzID0gdHlwZXM7
CiB9CiAKLS0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKLXsKLSAgICByZXR1cm4gW3NlbGYgaXRl
bVByb3ZpZGVyQXRJbmRleDppbmRleF0ucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA/OiBAWyBd
OwotfQotCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzCiB7CiAgICAg
TlNNdXRhYmxlU2V0PE5TU3RyaW5nICo+ICphbGxUeXBlcyA9IFtOU011dGFibGVTZXQgc2V0XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KaW5kZXggMWRhZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3MGJmNzYyM2Qz
Njg5YS4uYmE0ZDc4ZTQwZmQ1MDViZTdjNjc5ZTdhODRkMjFhMTk2NmI1MWUwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KQEAgLTE3OSwxMCArMTc5LDYgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Ondy
aXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGEKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCi17Ci0g
ICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlc0J5RmlkZWxpdHlG
b3JJdGVtQXRJbmRleCh0eXBlcywgaW5kZXgpOwotfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaAppbmRleCAzNDlmMWFlMmFhODFiYTcwMjFmZjNmNzg5MDMyMDBjNzYx
Zjc5ZjBmLi4yNTY0ZDEzNThkNTEzNTRkZTJlM2Y2NzY2OGIyMjlmOTBlYWJiNTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNjksNyArNjks
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogICAgIHZvaWQgd3Jp
dGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJv
YXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IGY1ZDBkNmJkZDJlNDUzMzA1ZjMxZGJlM2RiN2MyNWQ1ZmVlNjc0ZTMu
LjE2NGYyOWZmYzhhYmIxMTAyOTlkZTU5ZmUwNTlkMTEzMTBkYWZhNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4K
QEAgLTMzLDcgKzMzLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBB
bGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbykgTGVnYWN5U3luYwogICAgIEluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgTGVnYWN5U3lu
YwogICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVu
dGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQotICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIExlZ2FjeVN5bmMKICNlbmRpZgogCiAgICAg
V3JpdGVDdXN0b21EYXRhKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBkYXRh
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5
U3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDdjMTRjZWZlMDNiY2U4N2RhMDhhZDhhNmI2MmI3MmFk
MjI1MDRhYS4uN2JkODBmZGQ4MjZjYTM2NDI5NGFjZTcyNTRkNGYwN2M5ZmZkNGRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC0yNzMyLDYgKzI3MzIsMTUgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9u
Rm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICAgICAgaWYg
KFtwYXN0ZWJvYXJkIGNvbnRhaW5zUGFzdGVib2FyZFR5cGVzOnR5cGVzIGluSXRlbVNldDppbmRp
Y2VzXSkKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
ICAgIGlmIChlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiBfd2ViVmlldy5j
b25maWd1cmF0aW9uLl9hdHRhY2htZW50RWxlbWVudEVuYWJsZWQpIHsKKyAgICAgICAgICAgIGZv
ciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBwYXN0ZWJvYXJkLml0ZW1Qcm92aWRl
cnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlID09IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50ICYmIGl0
ZW1Qcm92aWRlci53ZWJfZmlsZVVwbG9hZENvbnRlbnRUeXBlcy5jb3VudCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKwogICAgICAgICBhdXRvIGZvY3VzZWREb2N1bWVudE9yaWdpbiA9IGVk
aXRvclN0YXRlLm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkOwogICAgICAgICBpZiAoZm9j
dXNlZERvY3VtZW50T3JpZ2luLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBOTzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCBl
YTNkZDFiNTE4ZTVjODVkYWEyMWZkMTQwMjM2OTI0OTZkMDQxZjJhLi42OTZjZmZjYmRmODBlNTEy
ZTFkM2ZkZGE3ZjEwOGYzMWRiMzBlNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBX
ZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYs
IFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBXZWJDb3JlOjpSYW5nZSYsIGJvb2wpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyByZXBsYWNlbWVudFVSTEZvclJl
c291cmNlKFdlYktpdDo6V2ViUGFnZSYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJikgeyByZXR1cm4geyB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJ
bmplY3RlZEJ1bmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmgKaW5kZXggZTlhY2IyZDEwZGMwZTFjZTdmOTc1
M2RjMGVlM2Y3ZTYxYTk0NGJlMS4uYzgyMDlhMTgxNjZlYjhmY2NiODQyYjM5NTM1NjQ4ZDE2OWRh
NjAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oCkBAIC02MSw3ICs2MSw2IEBAIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEyLjMpLCBpb3MoMTAuMykpCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTlNEYXRhICo+ICopX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6
KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
cGFzdGVib2FyZERhdGFGb3JSYW5nZTooV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUgKily
YW5nZTsKIC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJE
aWRXcml0ZVRvUGFzdGVib2FyZDooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY29udHJvbGxlcjsKIC0gKEJPT0wpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgcGVyZm9ybVR3b1N0ZXBEcm9wOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICopZnJhZ21lbnQgYXREZXN0aW5hdGlvbjooV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VI
YW5kbGUgKilkZXN0aW5hdGlvbiBpc01vdmU6KEJPT0wpaXNNb3ZlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKLS0gKE5TU3RyaW5nICopX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTooTlNE
YXRhICopcmVzb3VyY2VEYXRhIG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggOGNkZjA5NTA2YWFiYjFiODQ1M2VmODliMzVkOTVh
NTc0NWFjOWIyNi4uNmJlYTUxYWVjY2QxODYzNmQxMjhiYTgyNTU5ZTM2ZDUyNTk0ZGM3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjYzLDE2ICs2NjMsNiBAQCAtICh2
b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgcmV0dXJuIFttX2NvbnRyb2xsZXItPl9l
ZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6bV9jb250cm9sbGVyIHBlcmZvcm1Ud29TdGVwRHJvcDp3cmFwcGVyKCpub2RlSGFuZGxl
KSBhdERlc3RpbmF0aW9uOndyYXBwZXIoKnJhbmdlSGFuZGxlKSBpc01vdmU6aXNNb3ZlXTsKICAg
ICAgICAgfQogCi0gICAgICAgIFdURjo6U3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2Uo
V2ViS2l0OjpXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURh
dGEsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlID0gKE5T
U3RyaW5nICopbWltZVR5cGU7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSByZXNvdXJjZURhdGEt
PmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuIFttX2NvbnRyb2xsZXItPl9lZGl0
aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6bV9jb250cm9sbGVyIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6ZGF0YS5nZXQoKSBtaW1l
VHlwZTp0eXBlXTsKLSAgICAgICAgfQotCiAgICAgICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwogICAgICAgICBjb25zdCBzdHJ1Y3Qg
RGVsZWdhdGVNZXRob2RzIHsKICAgICAgICAgICAgIERlbGVnYXRlTWV0aG9kcyhSZXRhaW5QdHI8
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4+IGRlbGVnYXRlKQpAQCAtNjgz
LDcgKzY3Myw2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICAgICAgLCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBhc3RlYm9h
cmREYXRhRm9yUmFuZ2U6KV0pCiAgICAgICAgICAgICAgICAgLCBkaWRXcml0ZVRvUGFzdGVib2Fy
ZChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlckRpZFdyaXRlVG9QYXN0ZWJvYXJkOildKQogICAgICAg
ICAgICAgICAgICwgcGVyZm9ybVR3b1N0ZXBEcm9wKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBl
cmZvcm1Ud29TdGVwRHJvcDphdERlc3RpbmF0aW9uOmlzTW92ZTopXSkKLSAgICAgICAgICAgICAg
ICAsIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZTptaW1lVHlwZTopXSkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgIH0KIApAQCAtNjk0LDcgKzY4Myw2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAg
ICAgICAgICAgICBib29sIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CiAgICAgICAgICAgICBi
b29sIGRpZFdyaXRlVG9QYXN0ZWJvYXJkOwogICAgICAgICAgICAgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3A7Ci0gICAgICAgICAgICBib29sIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U7CiAgICAg
ICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCA5NTEyMzAyYjI4MmU0MWVkMWIyNDcx
OWEyZDA0NDhkYzc0N2ZmZmRmLi5jZTAyN2I1YTdiZTY4MjdhNzhlN2I3NzI1YmRiYjMyNjRhNjI1
MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cApAQCAtMTkwLDE0ICsxOTAsNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgbV9jbGllbnQu
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpyZXBsYWNl
bWVudFVSTEZvclJlc291cmNlKFdlYlBhZ2UmIHBhZ2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVz
b3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmICghbV9jbGllbnQu
cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1
dG8gZGF0YSA9IGFkb3B0V0soV0tEYXRhQ3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KHJlc291cmNlRGF0YS0+ZGF0YSgpKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkp
KTsKLSAgICBhdXRvIHR5cGUgPSBhZG9wdFdLKHRvQ29waWVkQVBJKG1pbWVUeXBlKSk7Ci0gICAg
cmV0dXJuIHRvV1RGU3RyaW5nKG1fY2xpZW50LnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UodG9B
UEkoJnBhZ2UpLCBkYXRhLmdldCgpLCB0eXBlLmdldCgpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMWQ5NzZiNjc1MmIyZmZkMDBlNGIyZDlmYzBh
ZGQ2ZTBmYjMyOWM3Mi4uNjg5OTQxYTE4ZThkOWU5NGNhNDI2Zjk0MmIxZWI4YTBiM2NmODRiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtMzEs
NyArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRy
YWl0czxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRW
MSwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjI+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMCwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50VjE+IFZlcnNpb25zOwogfTsKIH0KIApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgV2ViQ29yZTo6UmFuZ2Uq
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERy
b3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBXZWJDb3JlOjpSYW5nZSYg
ZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRV
UkxGb3JSZXNvdXJjZShXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNv
dXJjZURhdGEsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDk2YTRkZDE4ZjIxNGI1OTQzMjhjNTA3OGQ3
ZTIyNTU1ZWQ3ZTdmM2UuLjkzNDA1NzEzYmQ4ZWZmNzRjOGFmYmQxOWJlNDc0MDNhNTc1MDQ2NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yOTcsMTEgKzI5Nyw2IEBAIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpwZXJmb3JtVHdvU3RlcERyb3AoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQs
IFJhbmdlJiBkZXN0CiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS5wZXJmb3JtVHdvU3RlcERyb3AoKm1fcGFnZSwgZnJhZ21lbnQsIGRlc3RpbmF0aW9uLCBp
c01vdmUpOwogfQogCi1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJl
c291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQotewotICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSgqbV9wYWdlLCBXVEZNb3ZlKHJl
c291cmNlRGF0YSksIG1pbWVUeXBlKTsKLX0KLQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lz
dGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiB7CiAgICAgLy8gRklYTUU6IEFkZCBhc3NlcnRp
b24gdGhhdCB0aGUgY29tbWFuZCBiZWluZyByZWFwcGxpZWQgaXMgdGhlIHNhbWUgY29tbWFuZCB0
aGF0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggN2JlOGRkZmNhM2Y2ZDBjYTg5N2I3ZTY4NWNl
MTk5M2ZiODAwMjNkOC4uYjEyYmE2MDJmYWUzODM1NmFjZGJjYWU5NWExZmJhY2YwOTc5MzE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODMsNyArODMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwogICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxG
b3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IDFmYWQzY2IxYWJmODE3MmY0Mzk1NjQ4NGRhNmQ2NGU0NmY0MmM0ODMuLjM0NjY2
MjQ0NjkzYzk2NmNmOTE1NzE3ZjIwOWRjOTE5ZWU0YWM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCkBAIC0yNDUsMTAgKzI0NSw2IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OjpS
ZXBseSh0eXBlcyksIDApOwotfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGRjMjYxNzZh
MjJiY2JmNzVmNWQxMTNiMjFhNTM2YjMyNzk2NTc5YmIuLmY3ZjEwNDFkODk0MmNmZThiYTM3OTc3
NmI1OTViOTdjZTkyZTI2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU3
LDcgKzU3LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0
TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNTVmNDBlMGI1M2IxMjY2YjY4ZmNlNGUzODk4ZTg4M2NjZTlhNzJh
Ny4uZTRjMmZkNmNmNWY4ZmU0Mzk4MmIyNWZmZGEyOGU3ODZiYmY2Zjc3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTc4LDcgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIGJvb2wgcmVxdWVzdERPTVBhc3RlQWNjZXNzKCkgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMzUyMzNlZDEyMTk3OTcyYTVh
NGM0NjE3NTE2YTRjODY1YWY2ZWExLi4wZmM4MTRmYWNhMDc0ZDNiYjU2OGM1ZTYyN2YwMWUxMWZk
MWI2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTksMTIgKzQxOSw2IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJh
bmdlKiwgVmVjdG9yPFN0CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJL
aXQyLgogfQogCi1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gTm90IGlt
cGxlbWVudGVkIGluIFdlYktpdExlZ2FjeS4KLSAgICByZXR1cm4geyB9OwotfQotCiAjaWYgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApCiAKIC8vIEZJWE1FOiBSZW1vdmUgYm90aCB0aGlzIHN0dWIgYW5kIHRo
ZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxvdyBvbmNlIHdlIGRvbid0IG5lZWQg
dGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9ydGVkIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCA0NzY3Yjg4MjYxMzcxMzgzMWI4MTMxYTk2MDIwZmY5ZmM4YmZl
NzIzLi5kMTYwYTgzODY1MzgzNzg4MTVjMjkzMzBiZDE4NjE3MzM1ODFmNzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTgsNyArNTgsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUeXBlc0J5Rmlk
ZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpp
bmRleCA2YzFkY2IzNTdiYTA5ZWQ3ODMyYTg5ZTFiZDdiYTMyMzljOTc3NmQxLi4wOGE5MDI2MjBj
NjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCkBAIC0xNTgsMTAgKzE1OCw2IEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3
cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmCiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWlu
dDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleCh0eXBlcywgaW5kZXgpOwotfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMmU3ZWE1ODE5NDMyYWQ1
NTdjYWY3ODhmZDEzOTY3NGIxYjY3NDE3Zi4uMmU4OWQ0MTJiYTQ1Mzc2NDNjNWRkM2NjY2ExYmYx
ODIyZWEwMDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjksMTIgKzI2OSw2IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNv
cmU6OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5n
IFdlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0
ZVJhbmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4g
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGNjNWU0ZDY0NWJlNTY3MDRhMDkyZDExZmMwMDZjMzIz
MTM5OTVhZGIuLmI3MGY3Y2I2NjZiNDlmYTY0MThlNzAyMWFhZDM1YTIzMmZjYzBiYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC01NCw3ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwotICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjllMmYxMmJjZjdjYmZk
YjM4MmQ0OWJhMDljMmM5ZDI1ZmYwOTA0Mi4uNWJjNjNiMDA3ODE4NWU2NTBiZDg2Mjk1Mjg5YWVk
M2M3YWRjNDM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAyLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgcGFzdGluZyBpdGVtLXBy
b3ZpZGVyLWJhY2tlZCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkIGFzIGF0dGFjaG1lbnQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDY3
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwNjY1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZW1vdmUgY29kZSBhbmQgdGVzdHMgZm9yIHN1YnJl
c291cmNlIFVSTCByZXBsYWNlbWVudCwgYW5kIGFsc28gYWRkIGEgbmV3IHRlc3QgdG8gdmVyaWZ5
IHRoYXQgY29waWVkIGRhdGEgY2FuIGJlCisgICAgICAgIHBhc3RlZCBpbiBhbiBlZGl0YWJsZSBh
cmVhIGFzIGF0dGFjaG1lbnQgZWxlbWVudHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbToKKyAgICAgICAg
KC1bQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRl
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtCdW5kbGVFZGl0aW5nRGVs
ZWdhdGVQbHVnSW4gX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZTptaW1lVHlwZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6CisKIDIwMTktMDItMTggIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggQVBJ
IHRlc3QgYWZ0ZXIgcjI0MTcyOApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS94
Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9z
aW11bGF0ZWRfZGV2aWNlLnB5CmluZGV4IDBkZmVlNzc1ZmExMDcwMDU1MGQ0NDNmMzIzMzQzMDQx
NTE2MWE0OWEuLjUzYTVjMDNkM2JhM2MwYzE1ZDY0ZWUzODYwYzFjMTRiMTU0MGJhYWYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkKQEAg
LTM4LDYgKzM4LDE0IEBAIGZyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERl
dmljZVR5cGUKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCisjIHVuZmls
dGVyZWRPdXRwdXQgPSBob3N0LmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbU2ltdWxhdGVkRGV2aWNl
TWFuYWdlci54Y3J1biwgJ3NpbWN0bCcsICdsaXN0JywgJy0tanNvbiddKQorIyBmaWx0ZXJlZE91
dHB1dExpbmVzID0gW10KKyMgZm9yIGxpbmUgaW4gdW5maWx0ZXJlZE91dHB1dC5zcGxpdCgiXG4i
KToKKyMgICAgIGlmICJvYmpjWyIgaW4gbGluZToKKyMgICAgICAgICBjb250aW51ZQorIyAgICAg
ZmlsdGVyZWRPdXRwdXRMaW5lcy5hcHBlbmQobGluZSkKKyMgc2ltY3RsX2pzb24gPSBqc29uLmxv
YWRzKCJcbiIuam9pbihmaWx0ZXJlZE91dHB1dExpbmVzKSkKKwogY2xhc3MgRGV2aWNlUmVxdWVz
dChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRldmljZV90eXBlLCB1c2VfYm9v
dGVkX3NpbXVsYXRvcj1UcnVlLCB1c2VfZXhpc3Rpbmdfc2ltdWxhdG9yPVRydWUsIGFsbG93X2lu
Y29tcGxldGVfbWF0Y2g9RmFsc2UsIG1lcmdlX3JlcXVlc3RzPUZhbHNlKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlRWRpdGluZ0RlbGVn
YXRlUGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5k
bGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0KaW5kZXggMzNmMmJiODMyNjBmMTJkNmQyYjgzOTBl
NzQ1MGQwZjViYWY2NjAxYy4uYzYzYzBhOGVjZjQ0NjA1N2Q1MmU2NDA1MzZmYjE4YmU4MjRjZGIy
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5k
bGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0KQEAgLTQ3LDcgKzQ3
LDYgQEAgQGltcGxlbWVudGF0aW9uIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiB7CiAgICAg
UmV0YWluUHRyPGlkIDxCdW5kbGVFZGl0aW5nRGVsZWdhdGVQcm90b2NvbD4+IF9yZW1vdGVPYmpl
Y3Q7CiAgICAgQk9PTCBfZWRpdGluZ0RlbGVnYXRlU2hvdWxkSW5zZXJ0VGV4dDsKICAgICBCT09M
IF9zaG91bGRPdmVycmlkZVBlcmZvcm1Ud29TdGVwRHJvcDsKLSAgICBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+PiBfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJM
TWFwOwogfQogCiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNv
bnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyCkBAIC02NCw3ICs2Myw2IEBAIC0gKHZvaWQpd2ViUHJvY2Vzc1Bs
dWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlk
Q3JlCiAgICAgICAgIF9lZGl0aW5nRGVsZWdhdGVTaG91bGRJbnNlcnRUZXh0ID0gWUVTOwogCiAg
ICAgX3Nob3VsZE92ZXJyaWRlUGVyZm9ybVR3b1N0ZXBEcm9wID0gW1twbHVnSW5Db250cm9sbGVy
LnBhcmFtZXRlcnMgdmFsdWVGb3JLZXk6QCJCdW5kbGVPdmVycmlkZVBlcmZvcm1Ud29TdGVwRHJv
cCJdIGJvb2xWYWx1ZV07Ci0gICAgX21pbWVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCA9IFtwbHVn
SW5Db250cm9sbGVyLnBhcmFtZXRlcnMgdmFsdWVGb3JLZXk6QCJNSU1FVHlwZVRvUmVwbGFjZW1l
bnRVUkxNYXAiXTsKIAogICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0g
W19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9j
b2w6QHByb3RvY29sKEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVByb3RvY29sKV07CiAgICAgX3JlbW90
ZU9iamVjdCA9IFticm93c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
IHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTppbnRlcmZhY2VdOwpAQCAtMTAwLDEyICs5
OCw2IEBAIC0gKEJPT0wpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6
KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250CiAgICAgcmV0dXJuIF9zaG91bGRPdmVycmlk
ZVBlcmZvcm1Ud29TdGVwRHJvcDsKIH0KIAotLSAoTlNTdHJpbmcgKilfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyICopY29udHJvbGxlciByZXBsYWNlbWVudFVSTEZvclJlc291cmNlOihOU0Rh
dGEgKilyZXNvdXJjZURhdGEgbWltZVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKLXsKLSAgICBh
c3NlcnQoISFyZXNvdXJjZURhdGEpOwotICAgIHJldHVybiBbX21pbWVUeXBlVG9SZXBsYWNlbWVu
dFVSTE1hcCBvYmplY3RGb3JLZXk6bWltZVR5cGVdOwotfQotCiBAZW5kCiAKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggYjAwZWY4OTNkODc1YWVhNjM0
NTk1MjRhMWZjY2RhZjIzNTI5N2QyOC4uODQ4NjRmYzU3ZjhlMmQ0ZGQ2YjlkYjhlZjk5OGNiZjJh
NDhhNDliNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0xMTU4LDM5ICsxMTU4LDYgQEAgVEVT
VChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0RHVwbGljYXRlQXR0YWNobWVudEFuZFVwZGF0ZURh
dGEpCiAgICAgRVhQRUNUX0ZBTFNFKFtbb3JpZ2luYWxBdHRhY2htZW50IGluZm9dLmZpbGVXcmFw
cGVyIGlzRXF1YWw6ZmlsZVdyYXBwZXIuZ2V0KCldKTsKIH0KIAotVEVTVChXS0F0dGFjaG1lbnRU
ZXN0cywgSW5qZWN0ZWRCdW5kbGVSZXBsYWNlVVJMc1doZW5QYXN0aW5nQXR0cmlidXRlZFN0cmlu
ZykKLXsKLSAgICBwbGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhNdWx0aXBsZUF0dGFjaG1lbnRzKCk7
Ci0KLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxl
RWRpdGluZ0RlbGVnYXRlUGx1Z0luIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9v
bF0gX3NldE9iamVjdDpAeyBAImltYWdlL3BuZyIgOiBAImNpZDpmb28tYmFyIiB9IGZvckJ1bmRs
ZVBhcmFtZXRlcjpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOwotICAgIGF1dG8gd2Vi
VmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplTWFrZSg1MDAsIDUwMCks
IGNvbmZpZ3VyYXRpb24uZ2V0KCkpOwotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRV
cGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIFt3ZWJWaWV3
IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiUGFzdGUiIGFyZ3VtZW50Om5pbF07
Ci0gICAgICAgIEVYUEVDVF9FUSgyVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3Vu
dCk7Ci0gICAgfQotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAWyBAIklN
RyIsIEAiQVRUQUNITUVOVCIsIEAiQVRUQUNITUVOVCIgXV07Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCJjaWQ6Zm9vLWJhciIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzcmMiIGZvclF1ZXJ5
U2VsZWN0b3I6QCJpbWciXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKEAiIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lt
ZycpWzBdLmF0dGFjaG1lbnRJZGVudGlmaWVyIl0pOwotfQotCi1URVNUKFdLQXR0YWNobWVudFRl
c3RzLCBJbmplY3RlZEJ1bmRsZVJlcGxhY2VVUkxXaGVuUGFzdGluZ0ltYWdlKQotewotICAgIHBs
YXRmb3JtQ29weVBORygpOwotCi0gICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50VVJMID0gQCJjaWQ6
Zm9vLWJhciI7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IkJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJv
Y2Vzc1Bvb2xdIF9zZXRPYmplY3Q6QHsgQCJpbWFnZS90aWZmIiA6IHJlcGxhY2VtZW50VVJMLCBA
ImltYWdlL3BuZyIgOiByZXBsYWNlbWVudFVSTCB9IGZvckJ1bmRsZVBhcmFtZXRlcjpAIk1JTUVU
eXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOwotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplTWFrZSg1MDAsIDUwMCksIGNvbmZpZ3VyYXRpb24uZ2V0
KCkpOwotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2Jz
ZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhl
Y3V0ZUVkaXRDb21tYW5kOkAiUGFzdGUiIGFyZ3VtZW50Om5pbF07Ci0gICAgICAgIEVYUEVDVF9F
USgwVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7Ci0gICAgfQotICAgIEVY
UEVDVF9XS19TVFJFUSgiY2lkOmZvby1iYXIiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAi
c3JjIiBmb3JRdWVyeVNlbGVjdG9yOkAiaW1nIl0pOwotfQotCiBURVNUKFdLQXR0YWNobWVudFRl
c3RzLCBJbnNlcnRBdHRhY2htZW50VXNpbmdGaWxlV3JhcHBlcldpdGhGaWxlUGF0aCkKIHsKICAg
ICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CkBAIC0xODgx
LDYgKzE4NDgsNDkgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZENv
bnRhY3RBc0F0dGFjaG1lbnQpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3ZjYXJkIiwgaW5m
by5jb250ZW50VHlwZSk7CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydFBh
c3RlZEZpbGVzQXNBdHRhY2htZW50cykKK3sKKyAgICBhdXRvIHBkZkl0ZW0gPSBhZG9wdE5TKFtb
TlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbcGRmSXRlbSBzZXRTdWdnZXN0ZWRO
YW1lOkAiZG9jIl07CisgICAgW3BkZkl0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6
VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOworICAgIFtwZGZJdGVtIHJl
Z2lzdGVyRGF0YTp0ZXN0UERGRGF0YSgpIHR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVBERl07CisKKyAgICBhdXRvIHRleHRJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFs
bG9jXSBpbml0XSk7CisgICAgW3RleHRJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJoZWxsbyJdOwor
ICAgIFt0ZXh0SXRlbSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlQXR0YWNobWVudF07CisgICAgW3RleHRJdGVtIHJlZ2lzdGVyRGF0YTpb
QCJoZWxsb3dvcmxkIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gdHlw
ZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUGxhaW5UZXh0XTsKKworICAgIFVJUGFzdGVi
b2FyZC5nZW5lcmFsUGFzdGVib2FyZC5pdGVtUHJvdmlkZXJzID0gQFsgcGRmSXRlbS5nZXQoKSwg
dGV4dEl0ZW0uZ2V0KCkgXTsKKworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiB0ZXh0QXR0
YWNobWVudDsKKyAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gcGRmQXR0YWNobWVudDsKKyAg
ICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgewor
ICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3
LmdldCgpKTsKKyAgICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1h
bmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBvYnNlcnZl
ci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKKyAgICAgICAgX1dLQXR0YWNobWVudCAqZmly
c3RBdHRhY2htZW50ID0gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5maXJzdE9iamVjdDsK
KyAgICAgICAgaWYgKFtmaXJzdEF0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCJ0ZXh0L3BsYWluIl0pIHsKKyAgICAgICAgICAgIHRleHRBdHRhY2htZW50ID0gZmly
c3RBdHRhY2htZW50OworICAgICAgICAgICAgcGRmQXR0YWNobWVudCA9IG9ic2VydmVyLm9ic2Vy
dmVyKCkuaW5zZXJ0ZWQubGFzdE9iamVjdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShmaXJzdEF0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSwgQCJhcHBs
aWNhdGlvbi9wZGYiKTsKKyAgICAgICAgICAgIHRleHRBdHRhY2htZW50ID0gb2JzZXJ2ZXIub2Jz
ZXJ2ZXIoKS5pbnNlcnRlZC5sYXN0T2JqZWN0OworICAgICAgICAgICAgcGRmQXR0YWNobWVudCA9
IGZpcnN0QXR0YWNobWVudDsKKyAgICAgICAgfQorICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRh
Y2htZW50VXBkYXRlcyhAWyBdLCBAWyBwZGZBdHRhY2htZW50LmdldCgpLCB0ZXh0QXR0YWNobWVu
dC5nZXQoKSBdKTsKKyAgICB9CisKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBx
dWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdOworICAgIEVYUEVDVF9XS19TVFJFUSgiZG9jIiwg
W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0
YWNobWVudFt0eXBlXj1hcHBsaWNhdGlvbl0iXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkb2Mi
LCBbcGRmQXR0YWNobWVudCBpbmZvXS5uYW1lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxv
IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAi
YXR0YWNobWVudFt0eXBlXj10ZXh0XSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIiwg
W3RleHRBdHRhY2htZW50IGluZm9dLm5hbWUpOworICAgIFtwZGZBdHRhY2htZW50IGV4cGVjdFJl
cXVlc3RlZERhdGFUb0JlOnRlc3RQREZEYXRhKCldOworICAgIFt0ZXh0QXR0YWNobWVudCBleHBl
Y3RSZXF1ZXN0ZWREYXRhVG9CZTpbQCJoZWxsb3dvcmxkIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ11dOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGNhblBlcmZvcm1B
Y3Rpb246QHNlbGVjdG9yKHBhc3RlOikgd2l0aFNlbmRlcjpuaWxdKTsKK30KKwogI2lmIEhBVkUo
UEVOQ0lMS0lUKQogc3RhdGljIEJPT0wgZm9yRWFjaFZpZXdJbkhpZXJhcmNoeShVSVZpZXcgKnZp
ZXcsIHZvaWQoXm1hcEZ1bmN0aW9uKShVSVZpZXcgKnN1YnZpZXcsIEJPT0wgKnN0b3ApKQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDUyODFkMDVhZTQ2Mzg0MjZlOWQ4ZGUwZjMxYWQy
Y2QwOTE1YmFjNWEuLjY1M2M1NDRiYjA5YWU1YmM3NGU1MzI1NWE4MTI3MDBkMmVkYTEzNDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTM1OCw4ICszNTgsOCBAQCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICB9Owog
ICAgIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KG1fcGFnZSwgJnVpQ2xpZW50LmJhc2UpOwogCi0g
ICAgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjIgZWRpdG9yQ2xpZW50ID0gewotICAgICAgICB7
IDIsIHRoaXMgfSwKKyAgICBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMSBlZGl0b3JDbGllbnQg
PSB7CisgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAgICBzaG91bGRCZWdpbkVkaXRpbmcsCiAg
ICAgICAgIHNob3VsZEVuZEVkaXRpbmcsCiAgICAgICAgIHNob3VsZEluc2VydE5vZGUsCkBAIC0z
NzUsNyArMzc1LDYgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIDAsIC8qIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UgKi8KICAgICAgICAgMCwgLyogZGlkV3JpdGVUb1Bhc3RlYm9hcmQgKi8KICAgICAgICAgMCwg
LyogcGVyZm9ybVR3b1N0ZXBEcm9wICovCi0gICAgICAgIDAsIC8qIHJlcGxhY2VtZW50VVJMRm9y
UmVzb3VyY2UgKi8KICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChtX3Bh
Z2UsICZlZGl0b3JDbGllbnQuYmFzZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362341</attachid>
            <date>2019-02-18 14:57:04 -0800</date>
            <delta_ts>2019-02-18 16:43:47 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-194670-20190218145704.patch</filename>
            <type>text/plain</type>
            <size>65666</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg3ZTE4YjM4ZDI3NjU0
ZGIwMWUzNGNlMTEwOTZhNTYwYjI5NjY3Yy4uZmRlODMyNzIzNmM4ZmY0ODA3ZDU3MjFlN2ViODcx
ODY4MmRkMjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE5LTAyLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgcGFzdGluZyBpdGVtLXByb3ZpZGVyLWJhY2tlZCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkIGFz
IGF0dGFjaG1lbnQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDY3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwNjY1Mjk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGRzIHN1cHBvcnQg
Zm9yIHBhc3RpbmcgZmlsZXMgb24gdGhlIHBhc3RlYm9hcmQgYXMgYXR0YWNobWVudCBlbGVtZW50
cywgaWYgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCBydW50aW1lCisgICAgICAgIHN3aXRjaCBpcyBl
bmFibGVkLiBDdXJyZW50bHksIHRoZSBvbmx5IHR5cGVzIG9mIGRhdGEgdGhhdCBjYW4gYmUgcGFz
dGVkIGFzIGF0dGFjaG1lbnRzIGFyZSBpbWFnZXMsIHdoaWNoIHRha2UgYQorICAgICAgICBzcGVj
aWFsIGNvZGVwYXRoIGluIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSByZWFkRGF0YUJ1ZmZlciBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGdp
dmVuIGJsb2Igb2YgZGF0YSBmcm9tIHRoZSBwYXN0ZWJvYXJkIGludG8gYW4KKyAgICAgICAgYXR0
YWNobWVudC1lbGVtZW50LWJhY2tlZCByZXByZXNlbnRhdGlvbiBpbiB0aGUgRE9NIChpLmUuIGVp
dGhlciBhbiBhdHRhY2htZW50IGVsZW1lbnQgb3IgaW1hZ2UgZWxlbWVudCB0aGF0CisgICAgICAg
IGNvbnRhaW5zIGFuIGF0dGFjaG1lbnQgZWxlbWVudCkuIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBn
aXZlbiBwYXN0ZWJvYXJkIGl0ZW0gaGFzIGJlZW4gZXhwbGljaXRseSBtYXJrZWQgYXMgYW4KKyAg
ICAgICAgYXR0YWNobWVudCAodmlhIHRoZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSBoaW50
KSBhbmQgdGhlIGl0ZW0gaGFzIGF0IGxlYXN0IG9uZSB0eXBlIHJlcHJlc2VudGF0aW9uIHRoYXQK
KyAgICAgICAgY29uZm9ybXMgdG8gInB1YmxpYy5jb250ZW50Iiwgd2UgdGFrZSB0aGlzIGNvZGVw
YXRoIGluc3RlYWQgb2YgZmlyc3QgYXR0ZW1wdGluZyB0aGUgd2ViIGNvbnRlbnQgcmVhZGluZyB0
eXBlcworICAgICAgICBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpbiBXZWJLaXQuCisKKyAgICAgICAg
U2VlIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRU
ZXN0c0lPUy5JbnNlcnRQYXN0ZWRGaWxlc0FzQXR0YWNobWVudHMKKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xpZW50UmVwbGFjZW1l
bnRVUkxGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVU
eXBlRnJvbUNvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZSk6CisKKyAgICAgICAgUmVtb3ZlIGFsbCBsb2dpYyBmb3IgaGFuZGxp
bmcgc3VicmVzb3VyY2UgVVJMIHJlcGxhY2VtZW50LiBTZWUgV2ViS2l0IENoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzIG9uIHRoaXMuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRmlsZVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckRhdGEpOgorCisgICAgICAgIEFkZCBh
IGhlbHBlciB0aGF0IGNyZWF0ZXMgYW4gYXR0YWNobWVudCBlbGVtZW50IGZvciBhIGdpdmVuIGJs
b2Igb2YgZGF0YSBhbmQgY29udGVudCB0eXBlLiBUaGUgbG9naWMgaGVyZSBpcworICAgICAgICBx
dWl0ZSBzaW1pbGFyIHRvIHRoYXQgb2YgYXR0YWNobWVudEZvckZpbGVQYXRoLCBhbmQgd2Ugc2hv
dWxkIGZpbmQgYSB3YXkgdG8gZWl0aGVyIG1lcmdlIHRoZW0sIG9yIHB1bGwgb3V0IG1vcmUKKyAg
ICAgICAgb2YgdGhlaXIgc2ltaWxhcml0aWVzIGludG8gaGVscGVyIGZ1bmN0aW9ucy4KKworICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVwbGFjZVN1YnJlc291cmNlVVJMc1dpdGhVUkxzRnJvbUNsaWVudCk6IERl
bGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIG1vcmUgbG9naWMgZm9yIGhhbmRsaW5nIHN1YnJlc291
cmNlIFVSTCByZXBsYWNlbWVudC4gU2VlIFdlYktpdCBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWls
cyBvbiB0aGlzLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRl
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OnBhdGhGb3JI
aWdoZXN0RmlkZWxpdHlJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKToKKworICAgICAgICBBZGQgY29udGVudFR5cGVzQnlGaWRlbGl0eSB0byBQ
YXN0ZWJvYXJkSXRlbUluZm8sIGluc3RlYWQgb2YgcmVxdWVzdGluZyB0aGlzIGluZm9ybWF0aW9u
IHVzaW5nIGEgc2VwYXJhdGUgSVBDCisgICAgICAgIG1lc3NhZ2UuIFRoaXMgbWVhbnMgd2UgY2Fu
IGFsc28gcmVtb3ZlIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4LCBhbmQganVzdCB1
c2UgdGhlIGl0ZW0ncyB0eXBlcyBpbgorICAgICAgICBmaWRlbGl0eSBvcmRlciBpbnN0ZWFkLgor
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0Fic3Ry
YWN0UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisKKyAgICAgICAgU2hhdmUg
b2ZmIChwb3RlbnRpYWxseSBtYW55KSBzeW5jIElQQyBtZXNzYWdlcyB0byB0aGUgVUkgcHJvY2Vz
cyBieSBwdWxsaW5nIGVhY2ggY2FsbCB0bworICAgICAgICBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4IG91dCBvZiB0aGUgaW5uZXIgbG9vcCB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6
CisKKyAgICAgICAgU2hhdmUgb2ZmIG9uZSBleHRyYW5lb3VzIHN5bmMgSVBDIG1lc3NhZ2UgYnkg
cm9sbGluZyB0aGUgdHlwZXMgaW4gZmlkZWxpdHkgb3JkZXIgaW50byB0aGUgcmVxdWVzdCBmb3IK
KyAgICAgICAgUGFzdGVib2FyZEl0ZW1JbmZvLCBpbnN0ZWFkIG9mIGJlaW5nIHNlbnQgaW4gYSBz
ZXBhcmF0ZSBtZXNzYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleCk6CisKKyAgICAgICAgUG9wdWxhdGUgY29udGVudFR5cGVzRm9y
RmlsZVVwbG9hZCBpbiB0aGUgY2FzZSB3aGVyZSBVSVBhc3RlYm9hcmQgaXMgdXNlZCAoaS5lLiBj
b3B5IGFuZCBwYXN0ZSkuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
Ol0pOiBEZWxldGVkLgorCiAyMDE5LTAyLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBLZXl1cHMgZm9yIG5vbi1tb2RpZmllciBrZXlzIGlkZW50
aWZpZWQgYXMgIkRlYWQiIHdoZW4gbm90IGZvY3VzZWQgaW4gYSBjb250ZW50LWVkaXRhYmxlIGVs
ZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNWY4MTM2M2Y4NzlkNDBkMzg2OTQ3MTU3YzYxZWE1ZTFmMTc0ZDdj
MS4uMTM2YThhOTQ4MTliMWI3MzljNTJmMmYxOTUzNmI5ZTU5ZDZiNmIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NCBAQAorMjAxOS0wMi0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IHBhc3RpbmcgaXRlbS1wcm92aWRlci1i
YWNrZWQgZGF0YSBvbiB0aGUgcGFzdGVib2FyZCBhcyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2NzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM5MDY2NTI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgUmVtb3ZlIGFsbCBJUEMgcGx1bWJpbmcgZm9yIGdldFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4LCBub3cgdGhhdCB0aGUgdHlwZXMgaW4gZmlkZWxpdHkgb3Jk
ZXIgaGF2ZSBiZWVuCisgICAgICAgIHJvbGxlZCBpbnRvIFBhc3RlYm9hcmRJdGVtSW5mby4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHJlbW92ZSBzdXBwb3J0IGZvciBzdWJyZXNvdXJjZSBVUkwg
cmVwbGFjZW1lbnQuIFRoaXMgZmVhdHVyZSB3YXMgb3JpZ2luYWxseSBhZGRlZCB3aXRoIHRoZQor
ICAgICAgICBpbnRlbnRpb24gdGhhdCBwcml2YXRlIGNsaWVudHMgKGkuZS4gTWFpbCkgd291bGQg
aW50ZXJjZXB0IHBhc3RlZCBvciBkcm9wcGVkIGltYWdlcyBhbmQgcmVwbGFjZSB0aGVpciBVUkxz
LgorICAgICAgICBIb3dldmVyLCBzaW5jZSA8cmRhcjovL3Byb2JsZW0vNDMyMTY4MzY+LCBvdXIg
c3RyYXRlZ3kgZm9yIHRoaXMgc2NlbmFyaW8gaGFzIGNoYW5nZWQsIHN1Y2ggdGhhdCBXZWJLaXQg
bm93CisgICAgICAgIGhhbmRsZXMgdGhlIGRyb3AvcGFzdGUsIGFuZCBsYXRlciBkZWxpdmVycyB0
aGUgaW1hZ2UgZGF0YSB0byB0aGUgY2xpZW50IHZpYSBOU0ZpbGVXcmFwcGVycyBpbiB0aGUgVUkg
cHJvY2Vzcy4KKyAgICAgICAgQXQgdGhpcyB0aW1lLCB0aGVyZSBhcmUgbm8gYWRvcHRlcnMgb2Yg
dGhpcyBTUEksIGFuZCBubyBhZG9wdGVycyBvZiB0aGUgVjIgaW5qZWN0ZWQgYnVuZGxlIGVkaXRp
bmcgY2xpZW50LiBBcworICAgICAgICBzdWNoLCB3ZSBjYW4gc2ltcGx5IHJldmVydCBhbGwgb2Yg
dGhpcyB0byBpdHMgc3RhdGUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgcmVwbGFj
ZW1lbnQgVVJMIFNQSSwgd2l0aAorICAgICAgICB0aGUgZXhjZXB0aW9uIHRvIGNoYW5nZXMgaW4g
V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgsIHdoZXJlaW4gdGhlcmUgaXMgYSBub256ZXJvIChi
dXQgbGlrZWx5IHRpbnkpIGNoYW5jZSBvZgorICAgICAgICBjb21wbGV0ZWx5IGJyZWFraW5nIGJp
bmFyeSBjb21wYXRhYmlsaXR5IHdpdGggYW55IHRoaXJkIHBhcnRpZXMgb24gbWFjT1Mgd2hpY2gg
bWF5IGhhdmUgdHJpZWQgdG8gYWRvcHQKKyAgICAgICAgc3VicmVzb3VyY2UgVVJMIHJlcGxhY2Vt
ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRU
eXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFj
dGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKworICAgICAgICBSZXR1cm4gWUVTIGZvciAt
cGFzdGU6IGluIHRoZSBjYXNlIHdoZXJlOgorICAgICAgICAxLiBUaGUgcGFzdGVib2FyZCBjb250
YWlucyBpdGVtcyB0aGF0IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcyBhdHRhY2htZW50cy4KKyAg
ICAgICAgMi4gVGhlIHNlbGVjdGlvbiBpcyByaWNobHkgY29udGVudGVkaXRhYmxlLgorICAgICAg
ICAzLiBBdHRhY2htZW50IGVsZW1lbnRzIGFyZSBlbmFibGVkLgorCisgICAgICAgIEFtb25nIG90
aGVyIHRoaW5ncywgdGhpcyBhbGxvd3MgdGhlIGNhbGxvdXQgYmFyIG9uIGlPUyB0byBzaG93IHRo
ZSAiUGFzdGUiIGFjdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVj
dGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OnBlcmZvcm1Ud29TdGVwRHJvcCk6CisgICAgICAgIChB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OnJlcGxhY2VtZW50VVJMRm9yUmVzb3Vy
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpyZXBsYWNl
bWVudFVSTEZvclJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxOS0wMi0xOCAg
Q2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoKSBjcmFzaGluZyBpbiBXUEUg
YW5kIEdUSysgcG9ydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1ZjQwYjc5OTMz
NzI1M2M5YTRjYjc0ZDNmODNlZTlhNjE3NDA5YTE4Li5kNDEzMmMzY2RlOGNmMWQ0ZjY0MTY2Zjkw
YmJlOTA5ZmNjN2FiMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTktMDItMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gU3VwcG9ydCBwYXN0aW5nIGl0ZW0tcHJvdmlkZXItYmFja2VkIGRh
dGEgb24gdGhlIHBhc3RlYm9hcmQgYXMgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjcwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zOTA2NjUyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KTogRGVsZXRlZC4KKwogMjAx
OS0wMi0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTVNFIGxvZ2dpbmcgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IGM2Njg4ZDE4Mjk0ZWU1OTUxOWM0ZmRhOWE2NDRkOWYzOWM2ZDYxYWUuLjNiNzhjMjc2
NjgwYzJhOTU2ZTNiNTZjOWM2NGZjNTczZGJkOTM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMi0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IHBhc3RpbmcgaXRlbS1w
cm92aWRlci1iYWNrZWQgZGF0YSBvbiB0aGUgcGFzdGVib2FyZCBhcyBhdHRhY2htZW50IGVsZW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ2
NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MDY2NTI5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKwogMjAxOS0wMi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBtb3JlIHVzZXMgb2YgU3RyaW5nOjpmb3JtYXQgd2l0aCBTdHJpbmdDb25jYXRl
bmF0ZSAobW9zdGx5IG5vbi1BcHBsZSBwbGF0Zm9ybS1zcGVjaWZpYyBjYXNlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCA1YWJkYmY4ODE2NmUxYzdmNTE0MGE2YzExMmFmMmQzODU3
NDcwYjgzLi45MzdlNzQ0NzE1OTVkNGZhNDMwNTlmNDhkZWI5MDYyMWMyMjlkN2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MjU4LDE0ICs0MjU4LDYgQEAgY29uc3QgRm9udCog
RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAg
ICAgcmV0dXJuIGZvbnQ7CiB9CiAKLVN0cmluZyBFZGl0b3I6OmNsaWVudFJlcGxhY2VtZW50VVJM
Rm9yUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKGF1dG8qIGVkaXRvckNsaWVudCA9IGNsaWVudCgpKQot
ICAgICAgICByZXR1cm4gZWRpdG9yQ2xpZW50LT5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFdU
Rk1vdmUocmVzb3VyY2VEYXRhKSwgbWltZVR5cGUpOwotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQog
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0RWRpdGFibGVJbWFnZSgpCiB7
CiAgICAgcmV0dXJuIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjppbnNlcnRFZGl0YWJsZUlt
YWdlKGRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2I0YTZkMmMxN2Zk
ZGJkMDRjNzI1ZDg4ZTdlZDQ3NWM2NjRjMzVmOS4uZTA4ZGEzMjA2MjAxNjhiMDA3NzU0ZmZjMmI5
MzhkZjZmMzY1NjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01MDAsOCArNTAwLDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygp
IGNvbnN0OwogCi0gICAgU3RyaW5nIGNsaWVudFJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwot
CiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oCmluZGV4IGM3NzRiNGEyMDU5NDNkOGQ0ZGVmNzYyNjM5OWU0M2Q1
NWMzNTMxZTcuLjdlNzhkYjEwZWUyYmJhNmYwNDM0YTg1YzFjMzQyOTNiMDI4MjIyZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03OCw2ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVmlydHVhbENvbnRhY3RG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXJs
VGl0bGUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpIG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKQEAg
LTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAgIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggMjU0YTM2OGZhNzc0YWQ2MzcyZDQ2ZjE1M2M1YTk1YzRlZTI0MjhjNS4u
OWU4ZTI2NTZkNTFkZTY5ZWFhMGUwNjU0Mzc4OGExZmRhY2Y3ODU1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTIyMCw5ICsyMjAsMTQgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKK3N0YXRp
YyBTdHJpbmcgbWltZVR5cGVGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKK3sKKyAgICByZXR1cm4gaXNEZWNsYXJlZFVUSShjb250ZW50VHlwZSkgPyBNSU1FVHlwZUZy
b21VVEkoY29udGVudFR5cGUpIDogY29udGVudFR5cGU7Cit9CisKIHN0YXRpYyBib29sIGNvbnRl
bnRUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKGlzRGVjbGFyZWRVVEkoY29udGVudFR5cGUpID8gTUlNRVR5cGVGcm9t
VVRJKGNvbnRlbnRUeXBlKSA6IGNvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlRnJvbUNvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKSk7CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1l
bnREYXRhKGNvbnN0IEZyYW1lJiBmcmFtZSkKQEAgLTM3MCwzMSArMzc1LDYgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCByZXBsYWNlU3VicmVzb3Vy
Y2VVUkxzV2l0aFVSTHNGcm9tQ2xpZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25z
dCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8
QXJjaGl2ZVJlc291cmNlPj4mIG91dFVucmVwbGFjZWRSZXNvdXJjZXMpCi17Ci0gICAgQVNTRVJU
KGZyYWdtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgYXV0byYgZnJhbWUgPSAqZnJhZ21l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNT
dHJpbmc+IHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXA7Ci0gICAgZm9yIChhdXRvJiBzdWJy
ZXNvdXJjZSA6IHN1YnJlc291cmNlcykgewotICAgICAgICBhdXRvJiBvcmlnaW5hbFVSTCA9IHN1
YnJlc291cmNlLT51cmwoKTsKLSAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VV
Ukwob3JpZ2luYWxVUkwpKSB7Ci0gICAgICAgICAgICBvdXRVbnJlcGxhY2VkUmVzb3VyY2VzLmFw
cGVuZChzdWJyZXNvdXJjZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBhdXRvIHJlcGxhY2VtZW50VVJMID0gZnJhbWUuZWRpdG9yKCkuY2xp
ZW50UmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNv
dXJjZS0+bWltZVR5cGUoKSk7Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudFVSTC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIG91dFVucmVwbGFjZWRSZXNvdXJjZXMuYXBwZW5kKHN1YnJlc291cmNl
LmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN1YnJlc291cmNlVVJMVG9DbGllbnRVUkxNYXAuc2V0KG9yaWdpbmFsVVJMLnN0cmluZygpLCBy
ZXBsYWNlbWVudFVSTCk7Ci0gICAgfQotCi0gICAgaWYgKCFzdWJyZXNvdXJjZVVSTFRvQ2xpZW50
VVJMTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhmcmFnbWVu
dCwgV1RGTW92ZShzdWJyZXNvdXJjZVVSTFRvQ2xpZW50VVJMTWFwKSk7Ci19Ci0KIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhGcmFtZSYgZnJh
bWUsIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIGlmICghZnJhbWUucGFnZSgp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQpAQCAtNDE3LDE2ICszOTcsMTMgQEAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwg
TlNBdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnRBbmRSZXNvdXJjZXMu
ZnJhZ21lbnQpOwogICAgIH0KIAotICAgIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gdW5y
ZXBsYWNlZFJlc291cmNlczsKLSAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzV2l0aFVSTHNGcm9t
Q2xpZW50KCpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVudCwgZnJhZ21lbnRBbmRSZXNvdXJj
ZXMucmVzb3VyY2VzLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKLQogICAgIGlmIChzaG91bGRSZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewotICAgICAgICByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsICpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVu
dCwgdW5yZXBsYWNlZFJlc291cmNlcyk7CisgICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhB
dHRhY2htZW50cyhmcmFtZSwgKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBmcmFnbWVu
dEFuZFJlc291cmNlcy5yZXNvdXJjZXMpOwogICAgICAgICByZXR1cm4gV1RGTW92ZShmcmFnbWVu
dEFuZFJlc291cmNlcy5mcmFnbWVudCk7CiAgICAgfQogCiAgICAgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIEF0b21pY1N0cmluZz4gYmxvYlVSTE1hcDsKLSAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IHVucmVwbGFjZWRSZXNvdXJjZXMpIHsKKyAgICBmb3Ig
KGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IGZyYWdtZW50QW5kUmVz
b3VyY2VzLnJlc291cmNlcykgewogICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3Vi
cmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJp
bmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKICAg
ICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJM
KTsKQEAgLTQ2NiwxNiArNDQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgQVNT
RVJUKHN0YWdpbmdEb2N1bWVudCk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50
RnJvbU1hcmt1cCgqc3RhZ2luZ0RvY3VtZW50LCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCwgbWFy
a3VwQW5kQXJjaGl2ZS5tYWluUmVzb3VyY2UtPnVybCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogCi0gICAgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiB1bnJlcGxh
Y2VkUmVzb3VyY2VzOwotICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHNXaXRoVVJMc0Zyb21DbGll
bnQoZnJhZ21lbnQsIG1hcmt1cEFuZEFyY2hpdmUuYXJjaGl2ZS0+c3VicmVzb3VyY2VzKCksIHVu
cmVwbGFjZWRSZXNvdXJjZXMpOwotCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cygpKSB7Ci0gICAgICAgIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhmcmFtZSwgZnJhZ21lbnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOworICAgICAgICByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsIGZyYWdtZW50LCBtYXJrdXBBbmRB
cmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKTsKICAgICAgICAgcmV0dXJuIHNhbml0aXpl
ZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdE
b2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogICAgIH0K
IAogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+IGJsb2JVUkxNYXA7Ci0g
ICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiB1bnJlcGxh
Y2VkUmVzb3VyY2VzKSB7CisgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3Vi
cmVzb3VyY2UgOiBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKSB7CiAg
ICAgICAgIGF1dG8mIHN1YnJlc291cmNlVVJMID0gc3VicmVzb3VyY2UtPnVybCgpOwogICAgICAg
ICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJyZXNvdXJjZVVSTCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTcwMCwxMyArNjc0LDYgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1l
bnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLQotICAgIGF1dG8gcmVwbGFjZW1lbnRVUkwgPSBmcmFt
ZS5lZGl0b3IoKS5jbGllbnRSZXBsYWNlbWVudFVSTEZvclJlc291cmNlKGJ1ZmZlci5jb3B5UmVm
KCksIGlzRGVjbGFyZWRVVEkodHlwZSkgPyBNSU1FVHlwZUZyb21VVEkodHlwZSkgOiB0eXBlKTsK
LSAgICBpZiAoIXJlcGxhY2VtZW50VVJMLmlzRW1wdHkoKSkgewotICAgICAgICBhZGRGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCByZXBsYWNlbWVudFVSTCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KICAgICBpZiAoc2hvdWxkUmVwbGFjZVJp
Y2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpCiAgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIp
LCB0eXBlKSk7CiAgICAgZWxzZQpAQCAtNzIzLDcgKzY5MCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVs
ZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKICAgICBpZiAoIXN1cHBvcnRz
Q2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewogICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShwYXRoKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVE
aXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLSAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0KCk7
CisgICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAgIH0KIAogICAgIFN0cmluZyBjb250ZW50
VHlwZTsKQEAgLTc0NSwxMSArNzEyLDQ1IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFj
aG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAg
ICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAg
ICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShw
YXRoKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRh
Y2htZW50KSk7Ci0gICAgICAgIHJldHVybiBpbWFnZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KIAogICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoV1RGTW92ZShm
aWxlU2l6ZUZvckRpc3BsYXkpLCBjb250ZW50VHlwZSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBhdGgpKTsKLSAgICByZXR1cm4gYXR0YWNobWVudC5nZXQoKTsKKyAgICByZXR1cm4gYXR0
YWNobWVudDsKK30KKworc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEo
RnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVm
KCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKKyAg
ICBhdXRvIG1pbWVUeXBlID0gbWltZVR5cGVGcm9tQ29udGVudFR5cGUoY29udGVudFR5cGUpOwor
ICAgIGF1dG8gdHlwZUZvckF0dGFjaG1lbnRFbGVtZW50ID0gbWltZVR5cGUuaXNFbXB0eSgpID8g
Y29udGVudFR5cGUgOiBtaW1lVHlwZTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5zdGVh
ZCBhc2sgQ29yZVNlcnZpY2VzIGZvciBhIHByZWZlcnJlZCBuYW1lIGNvcnJlc3BvbmRpbmcgdG8g
dGhlIGdpdmVuIGNvbnRlbnQgdHlwZS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVmYXVsdEF0
dGFjaG1lbnROYW1lID0gImZpbGUiOworCisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgZmlsZU5hbWUgPSBkZWZhdWx0QXR0YWNobWVudE5hbWU7
CisgICAgZWxzZQorICAgICAgICBmaWxlTmFtZSA9IG5hbWU7CisKKyAgICBpZiAoIXN1cHBvcnRz
Q2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgeworICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKHR5cGVGb3JB
dHRhY2htZW50RWxlbWVudCkpLCBmaWxlTmFtZSkpOworICAgICAgICByZXR1cm4gYXR0YWNobWVu
dDsKKyAgICB9CisKKyAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgdHlwZUZvckF0dGFjaG1l
bnRFbGVtZW50LCBmaWxlTmFtZSwgYnVmZmVyKTsKKworICAgIGlmIChjb250ZW50VHlwZUlzU3Vp
dGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKHR5cGVGb3JBdHRhY2htZW50RWxlbWVu
dCkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZp
bGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKHR5cGVGb3JBdHRhY2htZW50
RWxlbWVudCkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dGFj
aG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOworICAgICAgICByZXR1cm4gaW1hZ2U7
CisgICAgfQorCisgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyh7IGJ1ZmZlci5zaXpl
KCkgfSwgV1RGTW92ZSh0eXBlRm9yQXR0YWNobWVudEVsZW1lbnQpLCBXVEZNb3ZlKGZpbGVOYW1l
KSk7CisgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQpAQCAtODI2LDQgKzgyNywyOCBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIXNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS5k
b2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LT5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7CisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRGF0YShmcmFtZSwgYnVmZmVyLCB0
eXBlLCBuYW1lKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURf
UEFSQU0obmFtZSk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA2YzJkYmRmNjcyMTFhMGI4YjE1MjgzYmYw
Yjc0Y2I4NjNiMGE2ZDJjLi5hNDNhMWJiMzZiZjhiZThmNDIzNTFmZGZhNzA5OGY1Y2FjZmJmNDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTgyLDcgKzE4Miw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFu
Z2UqKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdl
KiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwg
eyB9Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4geyB9OyB9CiAgICAgdm9pZCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwg
eyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IDZlMGQwYmVlNjdhNGQ0NTkwNDIzYjE3ZTkyZTIwMTg0N2FiODRhNWMuLmJjNjU4NGI1OTMz
YmM1NmJmMGMwYzdhMzRlYjA1OGFhY2VmODgwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtOTQsNyArOTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
PSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI3MTVjZDMzMDNhMTczOWQ0ZDNiZmIxNTcxNTRi
MzZjYjhmYmU1Li4zNWE4MzFkMWMwYTMwOWMzNzYxNWMxYjUwN2Y2MzdhZjM4MTRlYTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKICNlbmRp
ZgogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IDIy
YTA5OGE0NDE4YWMzN2M0NjdlNTcxYzIxNmJkNzNhN2Q5ODhiMzIuLjkyZDhiMGJmZDY3YTgyZGY4
NDZlNTg5ZDQzZGYxY2RiMWMxZjQyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRJdGVtSW5mby5oCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3MgUGFzdGVib2Fy
ZEl0ZW1QcmVzZW50YXRpb25TdHlsZSB7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiBwYXRoc0ZvckZpbGVVcGxvYWQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y29udGVudFR5cGVzRm9yRmlsZVVwbG9hZDsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb250ZW50VHlw
ZXNCeUZpZGVsaXR5OwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlTmFtZTsKICAgICBib29sIGlz
Tm9uVGV4dFR5cGUgeyBmYWxzZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVw
bG9hZENvbnRlbnQgeyBmYWxzZSB9OwpAQCAtNTUsMTIgKzU2LDE5IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkSXRlbUluZm8gewogICAgICAgICByZXR1cm4gcGF0aHNGb3JGaWxlVXBsb2FkW2luZGV4XTsK
ICAgICB9CiAKKyAgICBTdHJpbmcgY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRU
eXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKKyAgICB9CisKICAgICBTdHJpbmcgcGF0aEZvckhp
Z2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHBhdGhzRm9yRmls
ZVVwbG9hZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIEFT
U0VSVCghcGF0aHNGb3JGaWxlVXBsb2FkLmZpcnN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgcmV0
dXJuIHBhdGhzRm9yRmlsZVVwbG9hZC5maXJzdCgpOwogICAgIH0KIApAQCAtNzEsNyArNzksNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIFBhc3RlYm9hcmRJdGVtSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2RlciA8PCBwYXRoc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzRm9yRmls
ZVVwbG9hZCA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5z
RmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxl
VXBsb2FkIDw8IGNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzQnlGaWRl
bGl0eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmls
ZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTg1LDYgKzkzLDkgQEAgT3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRlbnRUeXBlc0ZvckZpbGVV
cGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzQnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdWdnZXN0ZWRG
aWxlTmFtZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWU5Yjg4MGZkMWE1ZTE4NTI1
MzBhYjkzNWNjZTBkODc1YzYzZDk1Ny4uZGMxNmYwZmEwYzVhOTAxMmM2NTI1ZjVhOTUzMGZlNzY1
ODE1MTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFBhc3RlYm9h
cmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggYzM1ZjA4ZWNkNjQ1ODc3ODM5
NWQ4MzVhMzQyNmFiZDNmY2Y1ZjhiYS4uZTAzMzE1MDk4ZTE1NWE5MjZmNzE5OGUyYzcyNmIzNzU3
YzEyNDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3Jt
UGFzdGVib2FyZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9h
cmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGludCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsK
ICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCmlu
ZGV4IDhmMmRkMGE2ZTM5OWFhMzFiYzZlYmI3NWJiYWUxMTMzNDAxY2U1NGUuLmVhNTY0NDI4NTE0
ODIxZWY2YjlkZGI0NGQzNGZhYTk3MGZhMDc1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTU0LDcgKzU0LDYgQEAgTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIC0gKG51bGxhYmxlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm9MaXN0ICopdGFrZVJlZ2lzdHJhdGlvbkxpc3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0SXRl
bXM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaXRlbXM7Ci0tIChOU0FycmF5PE5TU3RyaW5n
ICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRlZ2Vy
KWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVtYmVy
T2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAq
PiAqYWxsRHJvcHBlZEZpbGVVUkxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IDIwNzE1MzFjZGM3N2FiNGYwMGQxNzY4ZTVlNmQ1MGQ5MWJj
NjVjYzguLjVlZjNjZThhOWFhOGY5YzA5MzA1ZGQ5ZDI2MmJjYjg0ZDhhNzYwYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yODUsMTMgKzI4
NSwzMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXIm
IHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAgIE5TQXJyYXkgKnR5cGVzID0gc3Vw
cG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygpOwogICAgIGludCBudW1iZXJPZlR5cGVz
ID0gW3R5cGVzIGNvdW50XTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
Ym9vbCBjYW5SZWFkQXR0YWNobWVudCA9IHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eTo6QW55VHlwZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpOworI2Vsc2UKKyAgICBib29sIGNhblJlYWRBdHRhY2ht
ZW50ID0gZmFsc2U7CisjZW5kaWYKKwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtczsgaSsrKSB7CisgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKyAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50KSB7CisgICAgICAgICAgICBh
dXRvIHR5cGVGb3JGaWxlVXBsb2FkID0gaW5mby5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0
eUl0ZW0oKTsKKyAgICAgICAgICAgIGlmICghdHlwZUZvckZpbGVVcGxvYWQuaXNFbXB0eSgpICYm
IGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2FyZEl0ZW1QcmVzZW50
YXRpb25TdHlsZTo6QXR0YWNobWVudCkgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoYnVmZmVyICYmIHJlYWRlci5y
ZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9hZCwgaW5mby5zdWdnZXN0ZWRG
aWxlTmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBmb3IgKGludCB0eXBlSW5kZXggPSAwOyB0eXBl
SW5kZXggPCBudW1iZXJPZlR5cGVzOyB0eXBlSW5kZXgrKykgewogICAgICAgICAgICAgTlNTdHJp
bmcgKnR5cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5kZXhdOwogICAgICAgICAgICAg
aWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQ
YXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGks
IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSkp
OworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50
RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSwgaW5mbyk7CiAgICAgICAgICAg
ICBpZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMyNSwxMCArMzQzLDggQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICNlbmRpZgogICAgICAgICAvLyBUcnkgdG8gcmVhZCBk
YXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhhdCB0aGlzIHBhc3RlYm9hcmQgaXRlbSBz
dXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6ZXMuIFR5cGUgaWRlbnRpZmllcnMgYXJl
CiAgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlkZWxpdHksIGFzIHNwZWNpZmllZCBieSBl
YWNoIHBhc3RlYm9hcmQgaXRlbS4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNGb3JJdGVt
SW5PcmRlck9mRmlkZWxpdHk7Ci0gICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlGaWRlbGl0eUZv
ckl0ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5LCBpbmRleCwgbV9wYXN0
ZWJvYXJkTmFtZSk7CiAgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlc0Zvckl0ZW1J
bk9yZGVyT2ZGaWRlbGl0eSkgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBpbmZvLmNvbnRl
bnRUeXBlc0J5RmlkZWxpdHkpIHsKICAgICAgICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVh
ZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQppbmRleCAyMDBkYmMzZDA5NGE5MTgxNDUyZWNmMDkwYzE2YzFiMTJkMGNiODkxLi5hZWE5
OGE3OGY5YTdjNGFkMjUzMWUwYTQyYTVmNzc5MzhlNmQxYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc4LDE2
ICs3OCw2IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpCiAgICAgICAgIHR5cGVzLmFwcGVuZChwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGludCBpbmRleCkKLXsKLSAgICBpZiAoaW5kZXggPj0gW21f
cGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSB8fCAhW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDop
XSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNBcnJheSAqcGFzdGVib2FyZFR5cGVzQnlGaWRl
bGl0eSA9IFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4OmluZGV4XTsKLSAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBwYXN0ZWJv
YXJkVHlwZXNCeUZpZGVsaXR5KQotICAgICAgICB0eXBlcy5hcHBlbmQodHlwZUlkZW50aWZpZXIp
OwotfQotCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9w
YXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKQEAgLTEzOSw2ICsxMjksNyBA
QCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGludCBpbmRleCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhc3RlYm9h
cmRJdGVtSW5mbyBpbmZvOworICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21f
cGFzdGVib2FyZCBpdGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKICAgICBpZiAo
W21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGZpbGVVcGxvYWRVUkxz
QXRJbmRleDpmaWxlVHlwZXM6KV0pIHsKICAgICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqZmls
ZVR5cGVzID0gbmlsOwogICAgICAgICBOU0FycmF5ICp1cmxzID0gW21fcGFzdGVib2FyZCBmaWxl
VXBsb2FkVVJMc0F0SW5kZXg6aW5kZXggZmlsZVR5cGVzOiZmaWxlVHlwZXNdOwpAQCAtMTQ5LDE3
ICsxNDAsMjcgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgICAgICBpbmZvLnBhdGhzRm9y
RmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQodXJsLnBhdGgpOwogCiAgICAgICAgIGluZm8uY29u
dGVudFR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5j
b3VudCk7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKmZpbGVUeXBlIDogZmlsZVR5cGVzKQorICAg
ICAgICBmb3IgKE5TU3RyaW5nICpmaWxlVHlwZSBpbiBmaWxlVHlwZXMpCisgICAgICAgICAgICBp
bmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBOU0FycmF5ICpmaWxlVHlwZXMgPSBpdGVtUHJvdmlkZXIu
d2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXM7CisgICAgICAgIGluZm8uY29udGVudFR5cGVzRm9y
RmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CisgICAg
ICAgIGluZm8ucGF0aHNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmlsZVR5
cGVzLmNvdW50KTsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqZmlsZVR5cGUgaW4gZmlsZVR5cGVz
KSB7CiAgICAgICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2Vk
QXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAgIGluZm8ucGF0aHNGb3JGaWxlVXBsb2FkLnVu
Y2hlY2tlZEFwcGVuZCh7IH0pOworICAgICAgICB9CiAgICAgfQogCi0gICAgTlNJdGVtUHJvdmlk
ZXIgKml0ZW1Qcm92aWRlciA9IFtbbV9wYXN0ZWJvYXJkIGl0ZW1Qcm92aWRlcnNdIG9iamVjdEF0
SW5kZXg6aW5kZXhdOwogI2lmIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKICAgICBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID0gcGFz
dGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGUpOwogI2VuZGlmCiAgICAgaW5mby5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBs
b2FkQ29udGVudCA9IGl0ZW1Qcm92aWRlci53ZWJfY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9h
ZENvbnRlbnQ7CiAgICAgaW5mby5zdWdnZXN0ZWRGaWxlTmFtZSA9IGl0ZW1Qcm92aWRlci5zdWdn
ZXN0ZWROYW1lOwotICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIGl0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7CisgICAgTlNBcnJheTxOU1N0cmluZyAq
PiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92aWRlci5yZWdpc3RlcmVkVHlw
ZUlkZW50aWZpZXJzOworICAgIGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMuY291bnQpOworICAgIGZvciAo
TlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsK
KyAgICAgICAgaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFwcGVuZCh0eXBl
SWRlbnRpZmllcik7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmVHlwZUlkZW50aWZpZXIgPSAoQ0ZT
dHJpbmdSZWYpdHlwZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghVVRUeXBlSXNEZWNsYXJlZChj
ZlR5cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTc3LDcgKzE3OCw2
IEBAIFBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW50IGluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
aW5mby5pc05vblRleHRUeXBlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
cmV0dXJuIGluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCAyOWY5YTcxZDcwZjZhYzQ4N2M2NDA5NDFi
ZWI2ZDQxYWYxOWUxODExLi5lNDVkMjRlNzVmNzAyOTU1OGUxYTM4YzkxM2YzYzQ2M2MwNTVmYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmgKQEAgLTM5LDYgKzM5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIAogQGludGVyZmFjZSBOU0l0ZW1Qcm92aWRlciAoV2ViQ29yZUV4dHJhcykKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCB3ZWJfY29udGFpbnNGaWxlVVJMQW5kRmlsZVVw
bG9hZENvbnRlbnQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKndlYl9maWxlVXBsb2FkQ29udGVudFR5cGVzOwogQGVuZAogCiAvKiEgQSBXZWJJ
dGVtUHJvdmlkZXJSZWdpc3RyYXIgZW5jYXBzdWxhdGVzIGEgc2luZ2xlIGNhbGwgdG8gcmVnaXN0
ZXIgc29tZXRoaW5nIHRvIGFuIGl0ZW0gcHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDgx
NmEzMGYxNWZhNTY0NDVhNmMxMzM3NzdiNjYzNmViNDZiMjAzODQuLmRiOWU5NTUyMDI2MDFkMzhk
ODg4M2I4NGQ3ZDdlMjdiNTI1NThjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC00ODcsMTEgKzQ4
Nyw2IEBAIC0gKHZvaWQpdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOihOU0FycmF5PE5T
U3RyaW5nICo+ICopdHlwZXMKICAgICBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzID0gdHlwZXM7
CiB9CiAKLS0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKLXsKLSAgICByZXR1cm4gW3NlbGYgaXRl
bVByb3ZpZGVyQXRJbmRleDppbmRleF0ucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA/OiBAWyBd
OwotfQotCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzCiB7CiAgICAg
TlNNdXRhYmxlU2V0PE5TU3RyaW5nICo+ICphbGxUeXBlcyA9IFtOU011dGFibGVTZXQgc2V0XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KaW5kZXggMWRhZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3MGJmNzYyM2Qz
Njg5YS4uYmE0ZDc4ZTQwZmQ1MDViZTdjNjc5ZTdhODRkMjFhMTk2NmI1MWUwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KQEAgLTE3OSwxMCArMTc5LDYgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Ondy
aXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGEKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCi17Ci0g
ICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlc0J5RmlkZWxpdHlG
b3JJdGVtQXRJbmRleCh0eXBlcywgaW5kZXgpOwotfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaAppbmRleCAzNDlmMWFlMmFhODFiYTcwMjFmZjNmNzg5MDMyMDBjNzYx
Zjc5ZjBmLi4yNTY0ZDEzNThkNTEzNTRkZTJlM2Y2NzY2OGIyMjlmOTBlYWJiNTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNjksNyArNjks
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogICAgIHZvaWQgd3Jp
dGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJv
YXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IGY1ZDBkNmJkZDJlNDUzMzA1ZjMxZGJlM2RiN2MyNWQ1ZmVlNjc0ZTMu
LjE2NGYyOWZmYzhhYmIxMTAyOTlkZTU5ZmUwNTlkMTEzMTBkYWZhNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4K
QEAgLTMzLDcgKzMzLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBB
bGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbykgTGVnYWN5U3luYwogICAgIEluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgTGVnYWN5U3lu
YwogICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVu
dGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQotICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIExlZ2FjeVN5bmMKICNlbmRpZgogCiAgICAg
V3JpdGVDdXN0b21EYXRhKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBkYXRh
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5
U3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDdjMTRjZWZlMDNiY2U4N2RhMDhhZDhhNmI2MmI3MmFk
MjI1MDRhYS4uN2JkODBmZGQ4MjZjYTM2NDI5NGFjZTcyNTRkNGYwN2M5ZmZkNGRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC0yNzMyLDYgKzI3MzIsMTUgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9u
Rm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICAgICAgaWYg
KFtwYXN0ZWJvYXJkIGNvbnRhaW5zUGFzdGVib2FyZFR5cGVzOnR5cGVzIGluSXRlbVNldDppbmRp
Y2VzXSkKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
ICAgIGlmIChlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiBfd2ViVmlldy5j
b25maWd1cmF0aW9uLl9hdHRhY2htZW50RWxlbWVudEVuYWJsZWQpIHsKKyAgICAgICAgICAgIGZv
ciAoTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBwYXN0ZWJvYXJkLml0ZW1Qcm92aWRl
cnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlID09IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50ICYmIGl0
ZW1Qcm92aWRlci53ZWJfZmlsZVVwbG9hZENvbnRlbnRUeXBlcy5jb3VudCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKwogICAgICAgICBhdXRvIGZvY3VzZWREb2N1bWVudE9yaWdpbiA9IGVk
aXRvclN0YXRlLm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkOwogICAgICAgICBpZiAoZm9j
dXNlZERvY3VtZW50T3JpZ2luLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBOTzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCBl
YTNkZDFiNTE4ZTVjODVkYWEyMWZkMTQwMjM2OTI0OTZkMDQxZjJhLi42OTZjZmZjYmRmODBlNTEy
ZTFkM2ZkZGE3ZjEwOGYzMWRiMzBlNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBX
ZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYs
IFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBXZWJDb3JlOjpSYW5nZSYsIGJvb2wpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyByZXBsYWNlbWVudFVSTEZvclJl
c291cmNlKFdlYktpdDo6V2ViUGFnZSYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJikgeyByZXR1cm4geyB9OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJ
bmplY3RlZEJ1bmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlLmgKaW5kZXggZTlhY2IyZDEwZGMwZTFjZTdmOTc1
M2RjMGVlM2Y3ZTYxYTk0NGJlMS4uYzgyMDlhMTgxNjZlYjhmY2NiODQyYjM5NTM1NjQ4ZDE2OWRh
NjAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZS5oCkBAIC02MSw3ICs2MSw2IEBAIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEyLjMpLCBpb3MoMTAuMykpCiAtIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTlNEYXRhICo+ICopX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6
KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
cGFzdGVib2FyZERhdGFGb3JSYW5nZTooV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUgKily
YW5nZTsKIC0gKHZvaWQpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJE
aWRXcml0ZVRvUGFzdGVib2FyZDooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY29udHJvbGxlcjsKIC0gKEJPT0wpX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgcGVyZm9ybVR3b1N0ZXBEcm9wOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICopZnJhZ21lbnQgYXREZXN0aW5hdGlvbjooV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VI
YW5kbGUgKilkZXN0aW5hdGlvbiBpc01vdmU6KEJPT0wpaXNNb3ZlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKLS0gKE5TU3RyaW5nICopX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZTooTlNE
YXRhICopcmVzb3VyY2VEYXRhIG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggOGNkZjA5NTA2YWFiYjFiODQ1M2VmODliMzVkOTVh
NTc0NWFjOWIyNi4uNmJlYTUxYWVjY2QxODYzNmQxMjhiYTgyNTU5ZTM2ZDUyNTk0ZGM3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjYzLDE2ICs2NjMsNiBAQCAtICh2
b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgcmV0dXJuIFttX2NvbnRyb2xsZXItPl9l
ZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6bV9jb250cm9sbGVyIHBlcmZvcm1Ud29TdGVwRHJvcDp3cmFwcGVyKCpub2RlSGFuZGxl
KSBhdERlc3RpbmF0aW9uOndyYXBwZXIoKnJhbmdlSGFuZGxlKSBpc01vdmU6aXNNb3ZlXTsKICAg
ICAgICAgfQogCi0gICAgICAgIFdURjo6U3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2Uo
V2ViS2l0OjpXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURh
dGEsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5yZXBsYWNlbWVudFVSTEZvclJlc291cmNlKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlID0gKE5T
U3RyaW5nICopbWltZVR5cGU7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSByZXNvdXJjZURhdGEt
PmNyZWF0ZU5TRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuIFttX2NvbnRyb2xsZXItPl9lZGl0
aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6bV9jb250cm9sbGVyIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6ZGF0YS5nZXQoKSBtaW1l
VHlwZTp0eXBlXTsKLSAgICAgICAgfQotCiAgICAgICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwogICAgICAgICBjb25zdCBzdHJ1Y3Qg
RGVsZWdhdGVNZXRob2RzIHsKICAgICAgICAgICAgIERlbGVnYXRlTWV0aG9kcyhSZXRhaW5QdHI8
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4+IGRlbGVnYXRlKQpAQCAtNjgz
LDcgKzY3Myw2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICAgICAgLCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBhc3RlYm9h
cmREYXRhRm9yUmFuZ2U6KV0pCiAgICAgICAgICAgICAgICAgLCBkaWRXcml0ZVRvUGFzdGVib2Fy
ZChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlckRpZFdyaXRlVG9QYXN0ZWJvYXJkOildKQogICAgICAg
ICAgICAgICAgICwgcGVyZm9ybVR3b1N0ZXBEcm9wKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBl
cmZvcm1Ud29TdGVwRHJvcDphdERlc3RpbmF0aW9uOmlzTW92ZTopXSkKLSAgICAgICAgICAgICAg
ICAsIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZTptaW1lVHlwZTopXSkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgIH0KIApAQCAtNjk0LDcgKzY4Myw2IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAg
ICAgICAgICAgICBib29sIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CiAgICAgICAgICAgICBi
b29sIGRpZFdyaXRlVG9QYXN0ZWJvYXJkOwogICAgICAgICAgICAgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3A7Ci0gICAgICAgICAgICBib29sIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U7CiAgICAg
ICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCA5NTEyMzAyYjI4MmU0MWVkMWIyNDcx
OWEyZDA0NDhkYzc0N2ZmZmRmLi5jZTAyN2I1YTdiZTY4MjdhNzhlN2I3NzI1YmRiYjMyNjRhNjI1
MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cApAQCAtMTkwLDE0ICsxOTAsNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgbV9jbGllbnQu
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpyZXBsYWNl
bWVudFVSTEZvclJlc291cmNlKFdlYlBhZ2UmIHBhZ2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVz
b3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmICghbV9jbGllbnQu
cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1
dG8gZGF0YSA9IGFkb3B0V0soV0tEYXRhQ3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KHJlc291cmNlRGF0YS0+ZGF0YSgpKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkp
KTsKLSAgICBhdXRvIHR5cGUgPSBhZG9wdFdLKHRvQ29waWVkQVBJKG1pbWVUeXBlKSk7Ci0gICAg
cmV0dXJuIHRvV1RGU3RyaW5nKG1fY2xpZW50LnJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UodG9B
UEkoJnBhZ2UpLCBkYXRhLmdldCgpLCB0eXBlLmdldCgpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMWQ5NzZiNjc1MmIyZmZkMDBlNGIyZDlmYzBh
ZGQ2ZTBmYjMyOWM3Mi4uNjg5OTQxYTE4ZThkOWU5NGNhNDI2Zjk0MmIxZWI4YTBiM2NmODRiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtMzEs
NyArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRy
YWl0czxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRW
MSwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjI+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMCwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50VjE+IFZlcnNpb25zOwogfTsKIH0KIApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgV2ViQ29yZTo6UmFuZ2Uq
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERy
b3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBXZWJDb3JlOjpSYW5nZSYg
ZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRV
UkxGb3JSZXNvdXJjZShXZWJQYWdlJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNv
dXJjZURhdGEsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDk2YTRkZDE4ZjIxNGI1OTQzMjhjNTA3OGQ3
ZTIyNTU1ZWQ3ZTdmM2UuLjkzNDA1NzEzYmQ4ZWZmNzRjOGFmYmQxOWJlNDc0MDNhNTc1MDQ2NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yOTcsMTEgKzI5Nyw2IEBAIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpwZXJmb3JtVHdvU3RlcERyb3AoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQs
IFJhbmdlJiBkZXN0CiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoKS5wZXJmb3JtVHdvU3RlcERyb3AoKm1fcGFnZSwgZnJhZ21lbnQsIGRlc3RpbmF0aW9uLCBp
c01vdmUpOwogfQogCi1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJl
c291cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQotewotICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkucmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSgqbV9wYWdlLCBXVEZNb3ZlKHJl
c291cmNlRGF0YSksIG1pbWVUeXBlKTsKLX0KLQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lz
dGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiB7CiAgICAgLy8gRklYTUU6IEFkZCBhc3NlcnRp
b24gdGhhdCB0aGUgY29tbWFuZCBiZWluZyByZWFwcGxpZWQgaXMgdGhlIHNhbWUgY29tbWFuZCB0
aGF0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggN2JlOGRkZmNhM2Y2ZDBjYTg5N2I3ZTY4NWNl
MTk5M2ZiODAwMjNkOC4uYjEyYmE2MDJmYWUzODM1NmFjZGJjYWU5NWExZmJhY2YwOTc5MzE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODMsNyArODMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgZmluYWw7CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwogICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVwbGFjZW1lbnRVUkxG
b3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IDFmYWQzY2IxYWJmODE3MmY0Mzk1NjQ4NGRhNmQ2NGU0NmY0MmM0ODMuLjM0NjY2
MjQ0NjkzYzk2NmNmOTE1NzE3ZjIwOWRjOTE5ZWU0YWM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCkBAIC0yNDUsMTAgKzI0NSw2IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OjpS
ZXBseSh0eXBlcyksIDApOwotfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGRjMjYxNzZh
MjJiY2JmNzVmNWQxMTNiMjFhNTM2YjMyNzk2NTc5YmIuLmY3ZjEwNDFkODk0MmNmZThiYTM3OTc3
NmI1OTViOTdjZTkyZTI2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU3
LDcgKzU3LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0
TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNTVmNDBlMGI1M2IxMjY2YjY4ZmNlNGUzODk4ZTg4M2NjZTlhNzJh
Ny4uZTRjMmZkNmNmNWY4ZmU0Mzk4MmIyNWZmZGEyOGU3ODZiYmY2Zjc3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTc4LDcgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKICAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7Ci0gICAgU3RyaW5nIHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2UoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIGJvb2wgcmVxdWVzdERPTVBhc3RlQWNjZXNzKCkgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMzUyMzNlZDEyMTk3OTcyYTVh
NGM0NjE3NTE2YTRjODY1YWY2ZWExLi4wZmM4MTRmYWNhMDc0ZDNiYjU2OGM1ZTYyN2YwMWUxMWZk
MWI2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTksMTIgKzQxOSw2IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJh
bmdlKiwgVmVjdG9yPFN0CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJL
aXQyLgogfQogCi1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpyZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gTm90IGlt
cGxlbWVudGVkIGluIFdlYktpdExlZ2FjeS4KLSAgICByZXR1cm4geyB9OwotfQotCiAjaWYgKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApCiAKIC8vIEZJWE1FOiBSZW1vdmUgYm90aCB0aGlzIHN0dWIgYW5kIHRo
ZSByZWFsIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxvdyBvbmNlIHdlIGRvbid0IG5lZWQg
dGhlIHJlYWwgdmVyc2lvbiBvbiBhbnkgc3VwcG9ydGVkIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCA0NzY3Yjg4MjYxMzcxMzgzMWI4MTMxYTk2MDIwZmY5ZmM4YmZl
NzIzLi5kMTYwYTgzODY1MzgzNzg4MTVjMjkzMzBiZDE4NjE3MzM1ODFmNzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTgsNyArNTgsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRUeXBlc0J5Rmlk
ZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpp
bmRleCA2YzFkY2IzNTdiYTA5ZWQ3ODMyYTg5ZTFiZDdiYTMyMzljOTc3NmQxLi4wOGE5MDI2MjBj
NjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCkBAIC0xNTgsMTAgKzE1OCw2IEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3
cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmCiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWlu
dDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleCh0eXBlcywgaW5kZXgpOwotfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMmU3ZWE1ODE5NDMyYWQ1
NTdjYWY3ODhmZDEzOTY3NGIxYjY3NDE3Zi4uMmU4OWQ0MTJiYTQ1Mzc2NDNjNWRkM2NjY2ExYmYx
ODIyZWEwMDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjksMTIgKzI2OSw2IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNv
cmU6OlJhbmdlKiwgVmVjdG9yPFN0CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5n
IFdlYkVkaXRvckNsaWVudDo6cmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0
ZVJhbmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4g
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGNjNWU0ZDY0NWJlNTY3MDRhMDkyZDExZmMwMDZjMzIz
MTM5OTVhZGIuLmI3MGY3Y2I2NjZiNDlmYTY0MThlNzAyMWFhZDM1YTIzMmZjYzBiYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC01NCw3ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7CiAgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwotICAgIFN0cmluZyByZXBsYWNlbWVudFVSTEZvclJlc291
cmNlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjllMmYxMmJjZjdjYmZk
YjM4MmQ0OWJhMDljMmM5ZDI1ZmYwOTA0Mi4uNWJjNjNiMDA3ODE4NWU2NTBiZDg2Mjk1Mjg5YWVk
M2M3YWRjNDM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAyLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgcGFzdGluZyBpdGVtLXBy
b3ZpZGVyLWJhY2tlZCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkIGFzIGF0dGFjaG1lbnQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDY3
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkwNjY1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZW1vdmUgY29kZSBhbmQgdGVzdHMgZm9yIHN1YnJl
c291cmNlIFVSTCByZXBsYWNlbWVudCwgYW5kIGFsc28gYWRkIGEgbmV3IHRlc3QgdG8gdmVyaWZ5
IHRoYXQgY29waWVkIGRhdGEgY2FuIGJlCisgICAgICAgIHBhc3RlZCBpbiBhbiBlZGl0YWJsZSBh
cmVhIGFzIGF0dGFjaG1lbnQgZWxlbWVudHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5tbToKKyAgICAgICAg
KC1bQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRl
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtCdW5kbGVFZGl0aW5nRGVs
ZWdhdGVQbHVnSW4gX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZTptaW1lVHlwZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6CisKIDIwMTktMDItMTggIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggQVBJ
IHRlc3QgYWZ0ZXIgcjI0MTcyOApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9CdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5t
bQppbmRleCAzM2YyYmI4MzI2MGYxMmQ2ZDJiODM5MGU3NDUwZDBmNWJhZjY2MDFjLi5jNjNjMGE4
ZWNmNDQ2MDU3ZDUyZTY0MDUzNmZiMThiZTgyNGNkYjJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbi5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZUVkaXRp
bmdEZWxlZ2F0ZVBsdWdJbi5tbQpAQCAtNDcsNyArNDcsNiBAQCBAaW1wbGVtZW50YXRpb24gQnVu
ZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIHsKICAgICBSZXRhaW5QdHI8aWQgPEJ1bmRsZUVkaXRp
bmdEZWxlZ2F0ZVByb3RvY29sPj4gX3JlbW90ZU9iamVjdDsKICAgICBCT09MIF9lZGl0aW5nRGVs
ZWdhdGVTaG91bGRJbnNlcnRUZXh0OwogICAgIEJPT0wgX3Nob3VsZE92ZXJyaWRlUGVyZm9ybVR3
b1N0ZXBEcm9wOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJp
bmcgKj4+IF9taW1lVHlwZVRvUmVwbGFjZW1lbnRVUkxNYXA7CiB9CiAKIC0gKHZvaWQpd2ViUHJv
Y2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xs
ZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRyb2xsZXIKQEAgLTY0
LDcgKzYzLDYgQEAgLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQbHVnSW5D
b250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmUKICAgICAgICAgX2VkaXRpbmdEZWxl
Z2F0ZVNob3VsZEluc2VydFRleHQgPSBZRVM7CiAKICAgICBfc2hvdWxkT3ZlcnJpZGVQZXJmb3Jt
VHdvU3RlcERyb3AgPSBbW3BsdWdJbkNvbnRyb2xsZXIucGFyYW1ldGVycyB2YWx1ZUZvcktleTpA
IkJ1bmRsZU92ZXJyaWRlUGVyZm9ybVR3b1N0ZXBEcm9wIl0gYm9vbFZhbHVlXTsKLSAgICBfbWlt
ZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwID0gW3BsdWdJbkNvbnRyb2xsZXIucGFyYW1ldGVycyB2
YWx1ZUZvcktleTpAIk1JTUVUeXBlVG9SZXBsYWNlbWVudFVSTE1hcCJdOwogCiAgICAgX1dLUmVt
b3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
IHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woQnVuZGxlRWRpdGlu
Z0RlbGVnYXRlUHJvdG9jb2wpXTsKICAgICBfcmVtb3RlT2JqZWN0ID0gW2Jyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50
ZXJmYWNlOmludGVyZmFjZV07CkBAIC0xMDAsMTIgKzk4LDYgQEAgLSAoQk9PTClfd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnQKICAgICByZXR1cm4gX3Nob3VsZE92ZXJyaWRlUGVyZm9ybVR3b1N0ZXBEcm9wOwogfQog
Ci0tIChOU1N0cmluZyAqKV93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVy
IHJlcGxhY2VtZW50VVJMRm9yUmVzb3VyY2U6KE5TRGF0YSAqKXJlc291cmNlRGF0YSBtaW1lVHlw
ZTooTlNTdHJpbmcgKiltaW1lVHlwZQotewotICAgIGFzc2VydCghIXJlc291cmNlRGF0YSk7Ci0g
ICAgcmV0dXJuIFtfbWltZVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwIG9iamVjdEZvcktleTptaW1l
VHlwZV07Ci19Ci0KIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQppbmRleCBiMDBlZjg5M2Q4NzVhZWE2MzQ1OTUyNGExZmNjZGFmMjM1Mjk3ZDI4Li44
NDg2NGZjNTdmOGUyZDRkZDZiOWRiOGVmOTk4Y2JmMmE0OGE0OWI3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0KQEAgLTExNTgsMzkgKzExNTgsNiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNl
cnREdXBsaWNhdGVBdHRhY2htZW50QW5kVXBkYXRlRGF0YSkKICAgICBFWFBFQ1RfRkFMU0UoW1tv
cmlnaW5hbEF0dGFjaG1lbnQgaW5mb10uZmlsZVdyYXBwZXIgaXNFcXVhbDpmaWxlV3JhcHBlci5n
ZXQoKV0pOwogfQogCi1URVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbmplY3RlZEJ1bmRsZVJlcGxh
Y2VVUkxzV2hlblBhc3RpbmdBdHRyaWJ1dGVkU3RyaW5nKQotewotICAgIHBsYXRmb3JtQ29weVJp
Y2hUZXh0V2l0aE11bHRpcGxlQXR0YWNobWVudHMoKTsKLQotICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IHJldGFpblB0cihbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4iXSk7
Ci0gICAgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfc2V0T2JqZWN0OkB7IEAiaW1hZ2Uv
cG5nIiA6IEAiY2lkOmZvby1iYXIiIH0gZm9yQnVuZGxlUGFyYW1ldGVyOkAiTUlNRVR5cGVUb1Jl
cGxhY2VtZW50VVJMTWFwIl07Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdB
dHRhY2htZW50cyhDR1NpemVNYWtlKDUwMCwgNTAwKSwgY29uZmlndXJhdGlvbi5nZXQoKSk7Ci0g
ICAgewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3
ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRp
dENvbW1hbmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmlsXTsKLSAgICAgICAgRVhQRUNUX0VRKDJVLCBv
YnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKLSAgICB9Ci0gICAgW3dlYlZpZXcg
ZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOkBbIEAiSU1HIiwgQCJBVFRBQ0hNRU5UIiwgQCJBVFRB
Q0hNRU5UIiBdXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoImNpZDpmb28tYmFyIiwgW3dlYlZpZXcg
dmFsdWVPZkF0dHJpYnV0ZTpAInNyYyIgZm9yUXVlcnlTZWxlY3RvcjpAImltZyJdKTsKLSAgICBF
WFBFQ1RfV0tfU1RSRVEoQCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW1nJylbMF0uYXR0YWNobWVudElkZW50aWZp
ZXIiXSk7Ci19Ci0KLVRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluamVjdGVkQnVuZGxlUmVwbGFj
ZVVSTFdoZW5QYXN0aW5nSW1hZ2UpCi17Ci0gICAgcGxhdGZvcm1Db3B5UE5HKCk7Ci0KLSAgICBO
U1N0cmluZyAqcmVwbGFjZW1lbnRVUkwgPSBAImNpZDpmb28tYmFyIjsKLSAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSByZXRhaW5QdHIoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmln
dXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1
Z0luIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldE9iamVjdDpAeyBA
ImltYWdlL3RpZmYiIDogcmVwbGFjZW1lbnRVUkwsIEAiaW1hZ2UvcG5nIiA6IHJlcGxhY2VtZW50
VVJMIH0gZm9yQnVuZGxlUGFyYW1ldGVyOkAiTUlNRVR5cGVUb1JlcGxhY2VtZW50VVJMTWFwIl07
Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyhDR1NpemVN
YWtlKDUwMCwgNTAwKSwgY29uZmlndXJhdGlvbi5nZXQoKSk7Ci0gICAgewotICAgICAgICBPYnNl
cnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAg
ICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJQYXN0ZSIg
YXJndW1lbnQ6bmlsXTsKLSAgICAgICAgRVhQRUNUX0VRKDBVLCBvYnNlcnZlci5vYnNlcnZlcigp
Lmluc2VydGVkLmNvdW50KTsKLSAgICB9Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJjaWQ6Zm9vLWJh
ciIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzcmMiIGZvclF1ZXJ5U2VsZWN0b3I6QCJp
bWciXSk7Ci19Ci0KIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydEF0dGFjaG1lbnRVc2lu
Z0ZpbGVXcmFwcGVyV2l0aEZpbGVQYXRoKQogewogICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JUZXN0aW5nQXR0YWNobWVudHMoKTsKQEAgLTE4ODEsNiArMTg0OCw0OSBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkQ29udGFjdEFzQXR0YWNobWVudCkKICAgICBF
WFBFQ1RfV0tfU1RSRVEoInRleHQvdmNhcmQiLCBpbmZvLmNvbnRlbnRUeXBlKTsKIH0KIAorVEVT
VChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0UGFzdGVkRmlsZXNBc0F0dGFjaG1lbnRzKQor
eworICAgIGF1dG8gcGRmSXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5p
dF0pOworICAgIFtwZGZJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJkb2MiXTsKKyAgICBbcGRmSXRl
bSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlQXR0YWNobWVudF07CisgICAgW3BkZkl0ZW0gcmVnaXN0ZXJEYXRhOnRlc3RQREZEYXRhKCkg
dHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUERGXTsKKworICAgIGF1dG8gdGV4dEl0
ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbdGV4dEl0
ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImhlbGxvIl07CisgICAgW3RleHRJdGVtIHNldFByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50
XTsKKyAgICBbdGV4dEl0ZW0gcmVnaXN0ZXJEYXRhOltAImhlbGxvd29ybGQiIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB0eXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVQbGFpblRleHRdOworCisgICAgVUlQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkLml0
ZW1Qcm92aWRlcnMgPSBAWyBwZGZJdGVtLmdldCgpLCB0ZXh0SXRlbS5nZXQoKSBdOworCisgICAg
UmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IHRleHRBdHRhY2htZW50OworICAgIFJldGFpblB0cjxf
V0tBdHRhY2htZW50PiBwZGZBdHRhY2htZW50OworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50
VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBbd2ViVmll
dyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1bWVudDpuaWxd
OworICAgICAgICBFWFBFQ1RfRVEoMlUsIG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291
bnQpOworICAgICAgICBfV0tBdHRhY2htZW50ICpmaXJzdEF0dGFjaG1lbnQgPSBvYnNlcnZlci5v
YnNlcnZlcigpLmluc2VydGVkLmZpcnN0T2JqZWN0OworICAgICAgICBpZiAoW2ZpcnN0QXR0YWNo
bWVudC5pbmZvLmNvbnRlbnRUeXBlIGlzRXF1YWxUb1N0cmluZzpAInRleHQvcGxhaW4iXSkgewor
ICAgICAgICAgICAgdGV4dEF0dGFjaG1lbnQgPSBmaXJzdEF0dGFjaG1lbnQ7CisgICAgICAgICAg
ICBwZGZBdHRhY2htZW50ID0gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5sYXN0T2JqZWN0
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0QXR0
YWNobWVudC5pbmZvLmNvbnRlbnRUeXBlLCBAImFwcGxpY2F0aW9uL3BkZiIpOworICAgICAgICAg
ICAgdGV4dEF0dGFjaG1lbnQgPSBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmxhc3RPYmpl
Y3Q7CisgICAgICAgICAgICBwZGZBdHRhY2htZW50ID0gZmlyc3RBdHRhY2htZW50OworICAgICAg
ICB9CisgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbIHBk
ZkF0dGFjaG1lbnQuZ2V0KCksIHRleHRBdHRhY2htZW50LmdldCgpIF0pOworICAgIH0KKworICAg
IFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50
Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJkb2MiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRl
OkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50W3R5cGVePWFwcGxpY2F0aW9u
XSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImRvYyIsIFtwZGZBdHRhY2htZW50IGluZm9dLm5h
bWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmli
dXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50W3R5cGVePXRleHRdIl0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBbdGV4dEF0dGFjaG1lbnQgaW5mb10ubmFt
ZSk7CisgICAgW3BkZkF0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdFBERkRh
dGEoKV07CisgICAgW3RleHRBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOltAImhl
bGxvd29ybGQiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgY2FuUGVyZm9ybUFjdGlvbjpAc2VsZWN0b3IocGFzdGU6KSB3
aXRoU2VuZGVyOm5pbF0pOworfQorCiAjaWYgSEFWRShQRU5DSUxLSVQpCiBzdGF0aWMgQk9PTCBm
b3JFYWNoVmlld0luSGllcmFyY2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJ
VmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5k
ZXggNTI4MWQwNWFlNDYzODQyNmU5ZDhkZTBmMzFhZDJjZDA5MTViYWM1YS4uNjUzYzU0NGJiMDlh
ZTViYzc0ZTUzMjU1YTgxMjcwMGQyZWRhMTM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApA
QCAtMzU4LDggKzM1OCw4IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdl
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGll
bnQobV9wYWdlLCAmdWlDbGllbnQuYmFzZSk7CiAKLSAgICBXS0J1bmRsZVBhZ2VFZGl0b3JDbGll
bnRWMiBlZGl0b3JDbGllbnQgPSB7Ci0gICAgICAgIHsgMiwgdGhpcyB9LAorICAgIFdLQnVuZGxl
UGFnZUVkaXRvckNsaWVudFYxIGVkaXRvckNsaWVudCA9IHsKKyAgICAgICAgeyAxLCB0aGlzIH0s
CiAgICAgICAgIHNob3VsZEJlZ2luRWRpdGluZywKICAgICAgICAgc2hvdWxkRW5kRWRpdGluZywK
ICAgICAgICAgc2hvdWxkSW5zZXJ0Tm9kZSwKQEAgLTM3NSw3ICszNzUsNiBAQCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICAg
ICAgMCwgLyogZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSAqLwogICAgICAgICAwLCAvKiBkaWRX
cml0ZVRvUGFzdGVib2FyZCAqLwogICAgICAgICAwLCAvKiBwZXJmb3JtVHdvU3RlcERyb3AgKi8K
LSAgICAgICAgMCwgLyogcmVwbGFjZW1lbnRVUkxGb3JSZXNvdXJjZSAqLwogICAgIH07CiAgICAg
V0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KG1fcGFnZSwgJmVkaXRvckNsaWVudC5iYXNlKTsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>