<?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>183665</bug_id>
          
          <creation_ts>2018-03-15 10:54:38 -0700</creation_ts>
          <short_desc>First piece of process swapping on navigation</short_desc>
          <delta_ts>2018-03-27 16:56:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Other</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>
          
          <blocked>183962</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1406714</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-15 10:54:38 -0700</bug_when>
    <thetext>First piece of process swapping on navigation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406715</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-15 10:54:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/37996312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406855</commentid>
    <comment_count>2</comment_count>
      <attachid>335898</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-15 15:52:57 -0700</bug_when>
    <thetext>Created attachment 335898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406876</commentid>
    <comment_count>3</comment_count>
      <attachid>335906</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-15 16:21:30 -0700</bug_when>
    <thetext>Created attachment 335906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406887</commentid>
    <comment_count>4</comment_count>
      <attachid>335906</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-03-15 17:22:02 -0700</bug_when>
    <thetext>Comment on attachment 335906
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:1407
&gt; +    SetForScope&lt;bool&gt; currentLoadShouldCheckNavigationPolicyGuard(m_currentLoadShouldCheckNavigationPolicy, request.shouldCheckNavigationPolicy());

Can shouldCheckNavigationPolicy be a property of DocumentLoader to avoid needing a SetForScope thing here?

&gt; Source/WebKit/UIProcess/API/APINavigation.h:40
&gt; +    Navigation(const Navigation&amp;) = delete;

WTF_MAKE_NONCOPYABLE?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2392
&gt; +    if (m_currentNavigationPolicyListenerID &amp;&amp; *m_currentNavigationPolicyListenerID == listenerID) {
&gt; +        m_currentNavigationPolicyListenerID = std::nullopt;
&gt; +
&gt; +        if (action == PolicyAction::Use &amp;&amp; navigation) {
&gt; +            auto proposedProcess = process().processPool().processForNavigation(*this, navigation-&gt;request().url());
&gt; +            if (proposedProcess.ptr() != &amp;process()) {
&gt; +                action = PolicyAction::Suspend;
&gt; +                RunLoop::main().dispatch([this, protectedThis = makeRef(*this), navigation = makeRef(*navigation), proposedProcess = WTFMove(proposedProcess)]() mutable {
&gt; +                    continueNavigationInNewProcess(navigation.get(), WTFMove(proposedProcess));
&gt; +                });
&gt; +            }
&gt; +        }
&gt; +    }

I was confused why we only now needed m_currentNavigationPolicyListenerID, and you explained to me that it was to distinguish decidePolicyForNavigationAction from the other policy decisions (response, new window). A more direct way to do this might be to add a type enum to WebFramePolicyListenerProxy and check that instead. Looks like you can get to the active listener from WebFrameProxy::m_activeListener (and you could always assert or check that it&apos;s listener ID equals listenerID).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407790</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-20 14:02:48 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #4)
&gt; Comment on attachment 335906 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335906&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:1407
&gt; &gt; +    SetForScope&lt;bool&gt; currentLoadShouldCheckNavigationPolicyGuard(m_currentLoadShouldCheckNavigationPolicy, request.shouldCheckNavigationPolicy());
&gt; 
&gt; Can shouldCheckNavigationPolicy be a property of DocumentLoader to avoid
&gt; needing a SetForScope thing here?

Unique DocumentLoaders can go through multiple rounds of policy checks, as well, so something similar would still be needed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APINavigation.h:40
&gt; &gt; +    Navigation(const Navigation&amp;) = delete;
&gt; 
&gt; WTF_MAKE_NONCOPYABLE?

Sure

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2392
&gt; &gt; +    if (m_currentNavigationPolicyListenerID &amp;&amp; *m_currentNavigationPolicyListenerID == listenerID) {
&gt; &gt; +        m_currentNavigationPolicyListenerID = std::nullopt;
&gt; &gt; +
&gt; &gt; +        if (action == PolicyAction::Use &amp;&amp; navigation) {
&gt; &gt; +            auto proposedProcess = process().processPool().processForNavigation(*this, navigation-&gt;request().url());
&gt; &gt; +            if (proposedProcess.ptr() != &amp;process()) {
&gt; &gt; +                action = PolicyAction::Suspend;
&gt; &gt; +                RunLoop::main().dispatch([this, protectedThis = makeRef(*this), navigation = makeRef(*navigation), proposedProcess = WTFMove(proposedProcess)]() mutable {
&gt; &gt; +                    continueNavigationInNewProcess(navigation.get(), WTFMove(proposedProcess));
&gt; &gt; +                });
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; I was confused why we only now needed m_currentNavigationPolicyListenerID,
&gt; and you explained to me that it was to distinguish
&gt; decidePolicyForNavigationAction from the other policy decisions (response,
&gt; new window). A more direct way to do this might be to add a type enum to
&gt; WebFramePolicyListenerProxy and check that instead. Looks like you can get
&gt; to the active listener from WebFrameProxy::m_activeListener (and you could
&gt; always assert or check that it&apos;s listener ID equals listenerID).

Will try this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407842</commentid>
    <comment_count>6</comment_count>
      <attachid>336164</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-20 16:20:45 -0700</bug_when>
    <thetext>Created attachment 336164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407843</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-03-20 16:21:03 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #6)
&gt; Created attachment 336164 [details]
&gt; Patch

Will cq+ after EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407850</commentid>
    <comment_count>8</comment_count>
      <attachid>336164</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-20 17:06:03 -0700</bug_when>
    <thetext>Comment on attachment 336164
Patch

Clearing flags on attachment: 336164

Committed r229778: &lt;https://trac.webkit.org/changeset/229778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408581</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-03-22 18:21:35 -0700</bug_when>
    <thetext>Fixed?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335898</attachid>
            <date>2018-03-15 15:52:57 -0700</date>
            <delta_ts>2018-03-15 16:21:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>52010</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OTYyOGNlZDJlMC4uMjUyYWI1MDMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOC0wMy0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgRmlyc3QgcGllY2Ugb2YgcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdChzKQorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgIC0gQSBuZXcg
UG9saWN5QWN0aW9uOjpTdXNwZW5kIGZvciBmdXR1cmUgdXNlIGluIHRoaXMgZmVhdHVyZQorICAg
ICAgICAtIE1ha2VzIHN1cmUgdGhhdCBsb2FkcyB0cmlnZ2VyZWQgYXMgcGFydCBvZiBhIHByb2Nl
c3Mgc3dhcCBkbyAqbm90KiByZS1jb25zdWx0IHRoZSBwb2xpY3kgZGVsZWdhdGUKKworICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6
OnNldFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0OjpzaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgY29uc3QpOgorCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKworICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6IEFkZCBhIG5ldyBQb2xpY3kgdHlwZSAiU3VzcGVu
ZCIgdG8gYmUgdXNlZCBpbiB0aGUgZnV0dXJlCisgICAgICAgICAgYnkgdGhlIHByb2Nlc3Mtc3dh
cC1vbi1uYXZpZ2F0aW9uIG1lY2hhbmlzbS4KKworICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlv
blBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRv
d1BvbGljeSk6CisKIDIwMTgtMDMtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIERvbid0IGludmFsaWRhdGUgYWxsIGNoaWxkcmVuIHdoZW4gZG9pbmcgaW5z
ZXJ0aW9uL2RlbGV0aW9uIGluIHByZXNlbmNlIG9mIGJhY2t3YXJkIHBvc2l0aW9uYWwgc2VsZWN0
b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAwZmE0YjM4
ZTU1Ny4uMjc3YmNmNWU1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtODg3LDYgKzg4Nyw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0
ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxSZXNvdXJjZUxvYWRlcio+KG1haW5SZXNvdXJjZUxvYWRlcigpKS0+ZGlkRmFpbChpbnRl
cnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgorICAgICAgICAvLyBJdCBpcyBpbnZhbGlk
IHRvIGdldCBhIFN1c3BlbmQgcG9saWN5IGJhc2VkIG9uIG5hdmlnYXRpb24gcmVzcG9uc2UuCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQb2xpY3lBY3Rp
b246Oklnbm9yZToKICAgICAgICAgaWYgKFJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2Fk
ZXIgPSB0aGlzLT5tYWluUmVzb3VyY2VMb2FkZXIoKSkKICAgICAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlKCptX2ZyYW1lLCBtYWluUmVz
b3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSwgKnRoaXMsIG1fcmVzcG9uc2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKaW5kZXggODU3YjAzNTU5MTQuLjI4NDhkYzk0
OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKQEAgLTYwLDYg
KzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3ko
Ym9vbCBjaGVja1BvbGljeSkgeyBtX3Nob3VsZENoZWNrTmV3V2luZG93UG9saWN5ID0gY2hlY2tQ
b2xpY3k7IH0KICAgICBib29sIHNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRDaGVja05ld1dpbmRvd1BvbGljeTsgfQogCisgICAgdm9pZCBzZXRTaG91
bGRDaGVja05hdmlnYXRpb25Qb2xpY3koYm9vbCBjaGVja1BvbGljeSkgeyBtX3Nob3VsZENoZWNr
TmF2aWdhdGlvblBvbGljeSA9IGNoZWNrUG9saWN5OyB9CisgICAgYm9vbCBzaG91bGRDaGVja05h
dmlnYXRpb25Qb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENoZWNrTmF2aWdhdGlvblBv
bGljeTsgfQorCiAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YTsgfQogICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURh
dGEoY29uc3QgU3Vic3RpdHV0ZURhdGEmIGRhdGEpIHsgbV9zdWJzdGl0dXRlRGF0YSA9IGRhdGE7
IH0KICAgICBib29sIGhhc1N1YnN0aXR1dGVEYXRhKCkgeyByZXR1cm4gbV9zdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCk7IH0KQEAgLTg5LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTdWJzdGl0dXRl
RGF0YSBtX3N1YnN0aXR1dGVEYXRhOwogCiAgICAgYm9vbCBtX3Nob3VsZENoZWNrTmV3V2luZG93
UG9saWN5IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5
IHsgdHJ1ZSB9OwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CiAgICAgTG9ja0JhY2tG
b3J3YXJkTGlzdCBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgU2hvdWxkU2VuZFJlZmVycmVy
IG1fc2hvdWxkU2VuZFJlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNmQxMmJjNzYwMTMuLjhjZWFiNTEwYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTEyMyw2ICsxMjMsNyBAQAogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFy
c2VyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTEzOTgsNiArMTM5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVmPERvY3VtZW50TG9hZGVy
PiBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLCByZXF1ZXN0LnN1YnN0aXR1dGVEYXRhKCkpOwogICAgIGFwcGx5U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBy
ZXF1ZXN0KTsKIAorICAgIFNldEZvclNjb3BlPGJvb2w+IGN1cnJlbnRMb2FkU2hvdWxkQ2hlY2tO
YXZpZ2F0aW9uUG9saWN5R3VhcmQobV9jdXJyZW50TG9hZFNob3VsZENoZWNrTmF2aWdhdGlvblBv
bGljeSwgcmVxdWVzdC5zaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3koKSk7CiAgICAgbG9hZChs
b2FkZXIucHRyKCkpOwogfQogCkBAIC0xNTMxLDYgKzE1MzMsMTEgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxv
YWRUeXBlIHQKIAogICAgIG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLmNhbmNlbCh0cnVl
KTsKIAorICAgIGlmICghbV9jdXJyZW50TG9hZFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSkg
eworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1
ZXN0KCksIGZvcm1TdGF0ZSwgdHJ1ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRp
b25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJv
dGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkxdIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRl
LCBib29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAppbmRleCBmM2VjOGFmMGU2MS4uYjkzZjkxYzA5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCkBAIC00NjAsNiArNDYwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFs
PFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0
aW5nOwogICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fb3ZlcnJpZGVS
ZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBtX2lzU3RyaWN0UmF3UmVz
b3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fY3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgeyB0cnVlIH07CiAK
ICAgICBVUkwgbV9wcmV2aW91c1VSTDsKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcmVxdWVz
dGVkSGlzdG9yeUl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaApp
bmRleCAwYTQ3MTgwYjgwNC4uNTliNmE2MjNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaApAQCAtNDEsNyArNDEsOCBAQCBlbnVtIEZyYW1lU3RhdGUgewogZW51
bSBjbGFzcyBQb2xpY3lBY3Rpb24gewogICAgIFVzZSwKICAgICBEb3dubG9hZCwKLSAgICBJZ25v
cmUKKyAgICBJZ25vcmUsCisgICAgU3VzcGVuZCwKIH07CiAKIGVudW0gY2xhc3MgUmVsb2FkT3B0
aW9uIHsKQEAgLTE1OCw3ICsxNTksOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlBvbGljeUFjdGlvbj4gewogICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sCiAg
ICAgICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlLAogICAgICAgICBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb246OkRvd25sb2FkLAotICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9y
ZQorICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwKKyAgICAgICAgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpTdXNwZW5kCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCAwNDMyOTFlOTQ3Yy4uMzUyNzc1ZmFiZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTE1Nyw2ICsxNTcsOSBAQCB2
b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAg
IGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24o
eyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5k
OgorICAgICAgICAgICAgTE9HKExvYWRpbmcsICJQb2xpY3lBY3Rpb246OlN1c3BlbmQgZW5jb3Vu
dGVyZWQgLSBUcmVhdGluZyBhcyBQb2xpY3lBY3Rpb246Oklnbm9yZSBmb3Igbm93Iik7CisgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CiAgICAgICAgIGNh
c2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCku
Y2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICAgICAgICAgIGhh
bmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5v
dFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CkBAIC0xODQsNiArMTg3LDkgQEAgdm9pZCBQb2xpY3lD
aGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlv
bkFjdGlvbiwgY28KICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAg
ICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3BlbmQ6CisgICAgICAgICAg
ICAvLyBJdCBpcyBpbnZhbGlkIHRvIGdldCBhICJTdXNwZW5kIiBwb2xpY3kgZm9yIG5ldyB3aW5k
b3dzLCBhcyB0aGUgb2xkIGRvY3VtZW50IGlzIG5vdCBnb2luZyBhd2F5LgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246
OlVzZToKICAgICAgICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJh
bWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCB0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNjg4YzUxZjJlY2QuLjk0MmI5OWVhODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgz
IEBACisyMDE4LTAzLTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBGaXJzdCBwaWVjZSBvZiBwcm9jZXNzIHN3YXBwaW5nIG9uIG5hdmlnYXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM2NjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgdGhlIGZpcnN0IHBpZWNlcyBvZiB0aGUgZm9sbG93aW5nIGZlYXR1cmU6CisgICAgICAgICJX
aGVuIGEgbmF2aWdhdGlvbiBvcmlnaW5hdGluZyBpbnNpZGUgYSBXS1dlYlZpZXcgZ29lcyB0byBh
IGRpZmZlcmVudCBvcmlnaW4sCisgICAgICAgICBzd2FwIHRvIGEgbmV3IFdlYlByb2Nlc3MgZm9y
IHRoYXQgbmF2aWdhdGlvbiIKKworICAgICAgICBUaGVyZSBhcmUgc2lnbmlmaWNhbnQgYnVncyB0
byBiZSByZXNvbHZlZCBhbmQgc2lnbmlmaWNhbnQgb3B0aW1pemF0aW9ucyB0byBiZSBtYWRlLgor
ICAgICAgICBXaGljaCBpcyB3aHkgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4K
KworICAgICAgICBCZXNpZGVzIHRoZSBjb3JlIGxvZ2ljIGltcGxlbWVudGluZyB0aGUgZmVhdHVy
ZSwgdGhpcyBwYXRjaCBkb2VzIGEgbG90IG9mIHJlbGF0ZWQgCisgICAgICAgIHdvcmsgc3VjaCBh
czoKKyAgICAgICAgLSBSZW1vdmluZyBzb21lIG5vdy1pbnZhbGlkIEFTU0VSVHMKKyAgICAgICAg
LSBBZGRpbmcgc29tZSBBU1NFUlRzCisgICAgICAgIC0gVXBkYXRlIHZhcmlvdXMgc3dpdGNoIHN0
YXRlcyB0byBoYW5kbGUgdGhlIG5ldyAiU3VzcGVuZCIgcG9saWN5IGFuZCAiTmF2aWdhdGlvblN3
YXAiCisgICAgICAgICAgcHJvY2VzcyB0ZXJtaW5hdGlvbiByZWFzb24KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtEYXRhVGFza1JlcGxheS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpOZXR3b3JrRGF0YVRhc2tSZXBsYXk6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAodG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bv
c2l0aW9uKToKKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKworICAgICAgICAqIFNo
YXJlZC9Mb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFNoYXJl
ZC9Qcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDogQWRkICJOYXZpZ2F0aW9uU3dhcCIgYXMgYSBw
cm9jZXNzIHRlcm1pbmF0aW9uIHJlYXNvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbi5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNvcHkpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAg
ICAoV2ViS2l0Ojp0b0FQSSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojp3a1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpuYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmF2aWdhdGlvblN0YXRlOjp0YWtlTmF2aWdhdGlvbik6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0
YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbik6IFByZXRlbmQgdGhhdCB0aGUgZXhpc3RpbmcgcHJv
Y2VzcyAKKyAgICAgICAgICB0ZXJtaW5hdGVkIHVzaW5nIHRoZSBuZXcgIk5hdmlnYXRpb25Td2Fw
IiByZWFzb24sIHRoZW4gbWFudWFsbHkgc3RhcnQgdGhlIG5leHQgbG9hZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JO
YXZpZ2F0aW9uKTogRGV0ZXJtaW5lIHdoaWNoIHByb2Nlc3Mgc2hvdWxkIGJlIHVzZWQKKyAgICAg
ICAgICBmb3IgYSBwcm9wb3NlZCBuYXZpZ2F0aW9uLCBjcmVhdGluZyBhIG5ldyBvbmUgaWYgbmVj
ZXNzYXJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnNldEFsbG93ZWRD
b25uZWN0aW9uKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorCiAyMDE4LTAzLTA1ICBK
ZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2Ugc3RpbGwgbW9y
ZSBXS1ByZWZlcmVuY2VzIFNQSSB0byBtYXRjaCBDIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggNTZhOTkyODMy
NTMuLjVhYTVlMGMyYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTMxNyw2ICszMTcsOSBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29k
ZSkKICAgICAgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKICAgICAgICAgICAg
IHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6
U3VzcGVuZDoKKyAgICAgICAgICAgIExPR19FUlJPUigiUG9saWN5QWN0aW9uOjpTdXNwZW5kIGVu
Y291bnRlcmVkIC0gVHJlYXRpbmcgYXMgUG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5vdyIpOwor
ICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25v
cmU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OkRvd25s
b2FkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtEYXRhVGFza1JlcGxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
cHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcAppbmRleCBmM2E2NWVkNzlhZC4uNjY4MGJi
MzYyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwCkBAIC0yNTIsNiArMjUyLDkgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tSZXBsYXk6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG8KICAgICAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rp
b246OlVzZToKICAgICAgICAgICAgIGVucXVldWVFdmVudEhhbmRsZXIoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6U3VzcGVuZDoKKyAg
ICAgICAgICAgIExPR19FUlJPUigiUG9saWN5QWN0aW9uOjpTdXNwZW5kIGVuY291bnRlcmVkIC0g
VHJlYXRpbmcgYXMgUG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5vdyIpOworICAgICAgICAgICAg
RkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6
CiAgICAgICAgICAgICBjb21wbGV0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KaW5kZXggM2Y3NjA5MzVhNzYuLjg1ODJmODIxYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CkBAIC02Miw2ICs2Miw5IEBAIEBlbmQKIHN0YXRpYyBOU1VSTFNlc3Npb25SZXNwb25zZURpc3Bv
c2l0aW9uIHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24gZGlzcG9zaXRpb24pCiB7CiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgeworICAgIGNh
c2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpTdXNwZW5kOgorICAgICAgICBMT0dfRVJST1IoIlBv
bGljeUFjdGlvbjo6U3VzcGVuZCBlbmNvdW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGljeUFjdGlv
bjo6SWdub3JlIGZvciBub3ciKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBXZWJD
b3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJl
c3BvbnNlQ2FuY2VsOwogICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2U6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDQ3NTRhNThmZjZkLi5mNjEzOWM0MjI1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAg
TShJUEMpIFwKICAgICBNKEtleUhhbmRsaW5nKSBcCiAgICAgTShMYXllcnMpIFwKKyAgICBNKExv
YWRpbmcpIFwKICAgICBNKE5ldHdvcmspIFwKICAgICBNKE5ldHdvcmtDYWNoZSkgXAogICAgIE0o
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKaW5kZXggOWJmZDljYjYzMTcuLmE2NzkxZWZhMDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQg
TG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCB1bnJlYWNoYWJsZVVSTFN0cmluZzsKICAgICBlbmNvZGVyIDw8IHByb3Zpc2lv
bmFsTG9hZEVycm9yVVJMU3RyaW5nOwogICAgIGVuY29kZXIgPDwgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeTsK
ICAgICBlbmNvZGVyIDw8IHVzZXJEYXRhOwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7
CkBAIC0xMDIsNiArMTAzLDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2hvdWxkQ2hlY2tOYXZpZ2F0
aW9uUG9saWN5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLnVzZXJEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkOTI2MTc1ZmQ0Yy4uODQwMmRkYzg1MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNjIsNiArNjIsNyBAQCBzdHJ1
Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFN0cmluZyBwcm92aXNpb25hbExvYWRFcnJvclVSTFN0
cmluZzsKIAogICAgIHVpbnQ2NF90IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAg
Ym9vbCBzaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgeyB0cnVlIH07CiAgICAgVXNlckRhdGEg
dXNlckRhdGE7CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKaW5kZXggNmExZjQ5MmVjNGYuLjZlMDM1Mjdi
MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25S
ZWFzb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25SZWFz
b24uaApAQCAtMzEsNyArMzEsOCBAQCBlbnVtIGNsYXNzIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
biB7CiAgICAgRXhjZWVkZWRNZW1vcnlMaW1pdCwKICAgICBFeGNlZWRlZENQVUxpbWl0LAogICAg
IFJlcXVlc3RlZEJ5Q2xpZW50LAotICAgIENyYXNoCisgICAgQ3Jhc2gsCisgICAgTmF2aWdhdGlv
blN3YXAsCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b24uaAppbmRleCBmNDcwYzgyMWNiNy4uMTdkNDQ2MWY0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaApAQCAtMzcsNiArMzcsOCBAQCBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgTmF2aWdhdGlvbiA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlw
ZTo6TmF2aWdhdGlvbj4gewogcHVibGljOgorICAgIE5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGlv
biYpID0gZGVsZXRlOworCiAgICAgc3RhdGljIFJlZjxOYXZpZ2F0aW9uPiBjcmVhdGUoV2ViS2l0
OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF2aWdhdGlvbihzdGF0ZSkpOwpAQCAtNjQsNyArNjYsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvbihXZWJLaXQ6OldlYk5hdmlnYXRpb25T
dGF0ZSYpOwotICAgIGV4cGxpY2l0IE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3Rh
dGUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgTmF2aWdhdGlvbihXZWJLaXQ6
OldlYk5hdmlnYXRpb25TdGF0ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAogICAg
IHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X3JlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGU5Njk0MDZiN2ZjLi4wOTM0YmEz
MDY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEyNyw2ICsxMjcsNyBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQog
ICAgIGNvcHktPm1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gdGhpcy0+bV9jdERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGU7CiAjZW5kaWYKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBs
aWNhdGlvblBJRCA9IHRoaXMtPm1fcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEOworICAgIGNvcHkt
Pm1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb247CiAKICAgICByZXR1cm4gY29weTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKaW5kZXggM2I2YmMzMDhkMWMuLjc5NmRkN2MzNTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtMjM2LDYgKzIzNiwxMCBAQCBp
bmxpbmUgV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdG9BUEkoUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uIHJlYXNvbikKICAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bkV4Y2VlZGVkTWVtb3J5TGltaXQ7CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246
OkV4Y2VlZGVkQ1BVTGltaXQ6CiAgICAgICAgIHJldHVybiBrV0tQcm9jZXNzVGVybWluYXRpb25S
ZWFzb25FeGNlZWRlZENQVUxpbWl0OworICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
OjpOYXZpZ2F0aW9uU3dhcDoKKyAgICAgICAgLy8gV2UgcHJvYmFibHkgc2hvdWxkbid0IGJvdGhl
ciBjb21pbmcgdXAgd2l0aCBhIG5ldyBDLUFQSSB0eXBlIGZvciBwcm9jZXNzLXN3YXBwaW5nLgor
ICAgICAgICAvLyAiUmVxdWVzdGVkIGJ5IGNsaWVudCIgc2VlbXMgbGlrZSB0aGUgYmVzdCBtYXRj
aCBmb3IgZXhpc3RpbmcgdHlwZXMuCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudDoKICAgICAgICAgcmV0dXJu
IGtXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvblJlcXVlc3RlZEJ5Q2xpZW50OwogICAgIGNhc2Ug
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzZWVlN2QxNDVkNy4uMGQzMjU5
MjRmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KQEAgLTk2MSw2ICs5NjEsMTAgQEAgc3RhdGljIF9XS1Byb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiB3a1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbihQcm9jZXNzVGVybWluYXRpb24KICAg
ICAgICAgcmV0dXJuIF9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbkV4Y2VlZGVkTWVtb3J5TGlt
aXQ7CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQ6
CiAgICAgICAgIHJldHVybiBfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25FeGNlZWRlZENQVUxp
bWl0OworICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcDoK
KyAgICAgICAgLy8gV2UgcHJvYmFibHkgc2hvdWxkbid0IGJvdGhlciBjb21pbmcgdXAgd2l0aCBh
IG5ldyBBUEkgdHlwZSBmb3IgcHJvY2Vzcy1zd2FwcGluZy4KKyAgICAgICAgLy8gIlJlcXVlc3Rl
ZCBieSBjbGllbnQiIHNlZW1zIGxpa2UgdGhlIGJlc3QgbWF0Y2ggZm9yIGV4aXN0aW5nIHR5cGVz
LgorICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bjo6UmVxdWVzdGVkQnlDbGllbnQ6CiAgICAgICAgIHJldHVybiBfV0tQcm9jZXNzVGVybWluYXRp
b25SZWFzb25SZXF1ZXN0ZWRCeUNsaWVudDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6Q3Jhc2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZp
Z2F0aW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0
YXRlLmNwcAppbmRleCA5ZDk3YmRkNWZjMC4uNDhmOTM0NTllOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcApAQCAtNzksMTMgKzc5LDE1IEBA
IFJlZjxBUEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZERhdGFO
YXZpZ2F0aW9uKCkKIEFQSTo6TmF2aWdhdGlvbiYgV2ViTmF2aWdhdGlvblN0YXRlOjpuYXZpZ2F0
aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIHsKICAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsK
LSAgICAKKyAgICBBU1NFUlQobV9uYXZpZ2F0aW9ucy5jb250YWlucyhuYXZpZ2F0aW9uSUQpKTsK
KwogICAgIHJldHVybiAqbV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKTsKIH0KIAogUmVm
PEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjp0YWtlTmF2aWdhdGlvbih1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgQVNT
RVJUKG1fbmF2aWdhdGlvbnMuY29udGFpbnMobmF2aWdhdGlvbklEKSk7CiAgICAgCiAgICAgcmV0
dXJuIG1fbmF2aWdhdGlvbnMudGFrZShuYXZpZ2F0aW9uSUQpLnJlbGVhc2VOb25OdWxsKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ODNmOGNmOThj
MC4uZmFkMTk4M2NlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNjM2LDE2ICs2MzYsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9u
b3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKK3sKKyAgICBhdXRvIHByb2Nl
c3MgPSBtYWtlUmVmKG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSkpOwor
ICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcykpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MpCit7CisgICAgLy8gRklYTUU6IElmIHRoaXMgV2ViUGFnZVByb3h5IGlz
IHRoZSBvbmx5IG9uZSBob3N0ZWQgaW4gaXRzIFdlYlByb2Nlc3MsIGRvZXMgdGhpcyBtYWtlIGl0
IGdvIGF3YXk/CisgICAgLy8gV2UgbmVlZCB0byBiZSBwcmVwYXJlZCB0byByZXVzZSBpdCBsYXRl
ci4KKyAgICBwcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2
aWdhdGlvblN3YXApOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgdG8gZml4IHRoZSBBU1NFUlQo
aXNWYWxpZCgpKSBpbnNpZGUgcmVhdHRhY2hUb1dlYlByb2Nlc3MsIHNvbWUgb3RoZXIgd2F5IHRv
IGZpeCB0aGlzIGlzIG5lZWRlZC4KKyAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICByZWF0dGFj
aFRvV2ViUHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OnJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKIHsK
ICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKLSAgICBB
U1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1p
bmF0ZWQpOwogCiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdl
YlBhZ2UoKnRoaXMsIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlEKTsKIAotICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVO
ZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KG1fd2Vic2l0ZURhdGFTdG9y
ZS5nZXQoKSk7CisgICAgbV9wcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKIAogICAgIEFTU0VS
VChtX3Byb2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5h
dGVkKTsKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6UnVubmluZykKQEAgLTg2Nyw2ICs4ODMsMTMgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
aG8KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25h
dmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KSk7CisgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLmdl
dCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2Vy
RGF0YSwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlKTsKKyAgICByZXR1cm4gV1RGTW92
ZShuYXZpZ2F0aW9uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb24oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGlvblBvbGljeUNoZWNrIG5h
dmlnYXRpb25Qb2xpY3lDaGVjaykKK3sKKyAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC04
NzcsMTAgKzkwMCwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgICAgICByZWF0dGFj
aFRvV2ViUHJvY2VzcygpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7Ci0g
ICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCk7CisgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi5uYXZpZ2F0
aW9uSUQoKTsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsK
ICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2
NF90KXNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMudXNl
ckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YSkuZ2V0KCkpOworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENoZWNrTmF2aWdhdGlvblBv
bGljeSA9IG5hdmlnYXRpb25Qb2xpY3lDaGVjayA9PSBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJl
cXVpcmU7CiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSh1cmwsIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxB
Y3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CkBAIC04ODgsOCArOTEy
LDYgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLQotICAgIHJldHVy
biBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpA
QCAtMjM0OCw2ICsyMzcwLDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAobV9jdXJyZW50TmF2aWdhdGlvblBvbGljeUxpc3RlbmVy
SUQgJiYgKm1fY3VycmVudE5hdmlnYXRpb25Qb2xpY3lMaXN0ZW5lcklEID09IGxpc3RlbmVySUQp
IHsKKyAgICAgICAgbV9jdXJyZW50TmF2aWdhdGlvblBvbGljeUxpc3RlbmVySUQgPSBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuYXZp
Z2F0aW9uKSB7CisgICAgICAgICAgICBhdXRvIHByb3Bvc2VkUHJvY2VzcyA9IHByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLT5yZXF1
ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgaWYgKHByb3Bvc2VkUHJvY2Vzcy5wdHIoKSAhPSAm
cHJvY2VzcygpKSB7CisgICAgICAgICAgICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdXNw
ZW5kOworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdh
dGlvbiksIHByb3Bvc2VkUHJvY2VzcyA9IFdURk1vdmUocHJvcG9zZWRQcm9jZXNzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocHJvcG9zZWRQcm9jZXNzKSk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBJZiB3
ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIHRoZSBkZWNpc2lvbiB3aWxsIAogICAgIC8vIGJlIHNlbnQgYmFjayB0byB0
aGUgd2ViIHByb2Nlc3MgYnkgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4gCiAgICAg
aWYgKG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7CkBAIC0yMzYxLDYgKzIz
OTcsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnIKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCks
IGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdlSUQpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQorewor
ICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiIHRvIFVS
TCAlcyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5h
dmlnYXRpb24ucmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihXVEZNb3ZlKHByb2Nlc3MpKTsKKworICAgIC8v
IEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGlj
eSBkZWxlZ2F0ZSwgZXRjCisgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9u
LCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLnJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVs
bHB0ciwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworfQorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBpZiAobV91c2Vy
QWdlbnQgPT0gdXNlckFnZW50KQpAQCAtMzc1Myw2ICszNzk5LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVk
UG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24mIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYgd2Vic2l0ZVBvbGljaWVzKQogeworICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIC0gVGFy
Z2V0IHVybCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAK
ICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CkBA
IC0zNzkxLDYgKzM4MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogICAgIEFTU0VSVCgh
bV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOwogICAgIAogICAgIG1faW5EZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gdHJ1ZTsKKyAgICBtX2N1cnJlbnROYXZpZ2F0
aW9uUG9saWN5TGlzdGVuZXJJRCA9IGxpc3RlbmVySUQ7CiAgICAgbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFjdGlvbklzVmFsaWQgPSBmYWxzZTsKIAogICAgIFdlYkZyYW1lUHJveHkqIG9y
aWdpbmF0aW5nRnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YS5mcmFtZUlEKTsKQEAgLTM4NTksOCArMzkwOCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaQogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHJlc3BvbnNlLnVybCgpKTsKIAogICAgIFJlZjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXJQcm94eShsaXN0ZW5lcklEKTsKLSAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAg
ICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbihtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihu
YXZpZ2F0aW9uSUQpKTsKKyAgICBpZiAobmF2aWdhdGlvbklEKSB7CisgICAgICAgIGF1dG8mIG5h
dmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwor
ICAgICAgICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbihuYXZpZ2F0aW9uKTsKKyAgICB9CiAKICAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3Bv
bnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKS5nZXQoKSwg
cmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSk7CkBAIC01NTc1LDE0ICs1NjI2LDE5
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbiByZWFzb24pCiAgICAgLy8gVGhlcmUgaXMgYSBuZXN0ZWQgdHJhbnNhY3Rpb24g
aW4gcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBj
b21taXQgYmVmb3JlIHRoZSBjbGllbnQgY2FsbC4KICAgICBQYWdlTG9hZFN0YXRlOjpUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCi0gICAg
cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpOworICAgIHJlc2V0U3RhdGVBZnRlclByb2Nl
c3NFeGl0ZWQocmVhc29uKTsKIAotICAgIG5hdmlnYXRpb25TdGF0ZSgpLmNsZWFyQWxsTmF2aWdh
dGlvbnMoKTsKKyAgICAvLyBGb3IgYnJpbmd1cCBvZiBwcm9jZXNzIHN3YXBwaW5nLCBOYXZpZ2F0
aW9uU3dhcCB0ZXJtaW5hdGlvbiB3aWxsIG5vdCBnbyBvdXQgdG8gY2xpZW50cy4KKyAgICAvLyBJ
ZiBpdCBkb2VzICpkdXJpbmcqIHByb2Nlc3Mgc3dhcHBpbmcsIGFuZCB0aGUgY2xpZW50IHRyaWdn
ZXJzIGEgcmVsb2FkLCB0aGF0IGNhdXNlcyBiaXphcnJlIFdlYktpdCByZS1lbnRyeS4KKyAgICAv
LyBGSVhNRTogVGhpcyBtaWdodCBoYXZlIHRvIGNoYW5nZQorICAgIGlmIChyZWFzb24gIT0gUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkgeworICAgICAgICBuYXZpZ2F0
aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRpb25zKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9u
Q2xpZW50KQotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRUZXJtaW5hdGUo
KnRoaXMsIHJlYXNvbik7Ci0gICAgZWxzZSBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9j
ZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAg
ICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5wcm9jZXNzRGlkVGVybWluYXRlKCp0aGlzLCBy
ZWFzb24pOworICAgICAgICBlbHNlIGlmIChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpSZXF1ZXN0ZWRCeUNsaWVudCkKKyAgICAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9j
ZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgIH0KIAogICAgIGlmIChtX2NvbnRyb2xsZWRCeUF1dG9t
YXRpb24pIHsKICAgICAgICAgaWYgKGF1dG8qIGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2Vzcygp
LnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKQEAgLTU3MjAsMTAgKzU3NzYsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0
YXRlUmVhc29uKQogCiAgICAgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcjsKICAgICBzd2l0Y2gg
KHJlc2V0U3RhdGVSZWFzb24pIHsKKyAgICBjYXNlIFJlc2V0U3RhdGVSZWFzb246Ok5hdmlnYXRp
b25Td2FwOgorICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFJlc2V0U3RhdGVSZWFzb246
OlBhZ2VJbnZhbGlkYXRlZDoKICAgICAgICAgZXJyb3IgPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpP
d25lcldhc0ludmFsaWRhdGVkOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgUmVzZXRTdGF0
ZVJlYXNvbjo6V2ViUHJvY2Vzc0V4aXRlZDoKICAgICAgICAgZXJyb3IgPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpQcm9jZXNzRXhpdGVkOwogICAgICAgICBicmVhazsKQEAgLTU3NDYsMTMgKzU4MDMs
MTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNl
dFN0YXRlUmVhc29uKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
QWZ0ZXJQcm9jZXNzRXhpdGVkKCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQ
cm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hdGlvblJlYXNvbikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIC8vIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgcmVzZXRTdGF0ZUFmdGVyUHJv
Y2Vzc0V4aXRlZCgpIGlzIGNhbGxlZCBldmVuIHRob3VnaCB0aGUgcHJvY2VzcyBpcyBsYXVuY2hp
bmcuCi0gICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0
YXRlOjpMYXVuY2hpbmcgfHwgbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6
U3RhdGU6OlRlcm1pbmF0ZWQpOworICAgIGlmICh0ZXJtaW5hdGlvblJlYXNvbiAhPSBQcm9jZXNz
VGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKQorICAgICAgICBBU1NFUlQobV9wcm9j
ZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OkxhdW5jaGluZyB8fCBtX3By
b2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6VGVybWluYXRlZCk7Cisj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRy
OwpAQCAtNTc2OSw3ICs1ODI5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRl
clByb2Nlc3NFeGl0ZWQoKQogCiAgICAgbV9wYWdlQ2xpZW50LnByb2Nlc3NEaWRFeGl0KCk7CiAK
LSAgICByZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb246OldlYlByb2Nlc3NFeGl0ZWQpOworICAg
IGF1dG8gcmVzZXRTdGF0ZVJlYXNvbiA9IHRlcm1pbmF0aW9uUmVhc29uID09IFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXAgPyBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0
aW9uU3dhcCA6IFJlc2V0U3RhdGVSZWFzb246OldlYlByb2Nlc3NFeGl0ZWQ7CisgICAgcmVzZXRT
dGF0ZShyZXNldFN0YXRlUmVhc29uKTsKIAogICAgIG1fcGFnZUNsaWVudC5jbGVhckFsbEVkaXRD
b21tYW5kcygpOwogICAgIG1fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDI4ZGM5OTRiYzQu
LjRmN2JiMjQ0ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MTI5Miw5ICsxMjkyLDEwIEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBSZXNldFN0YXRlUmVh
c29uIHsKICAgICAgICAgUGFnZUludmFsaWRhdGVkLAogICAgICAgICBXZWJQcm9jZXNzRXhpdGVk
LAorICAgICAgICBOYXZpZ2F0aW9uU3dhcCwKICAgICB9OwogICAgIHZvaWQgcmVzZXRTdGF0ZShS
ZXNldFN0YXRlUmVhc29uKTsKLSAgICB2b2lkIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQo
KTsKKyAgICB2b2lkIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uKTsKIAogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmKTsKIApAQCAtMTQy
OCw5ICsxNDI5LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYW5TaG9ydENpcmN1aXRIb3Jp
em9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVu
dHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMgPSBjYW5TaG9ydENp
cmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7IH0KIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKKyAgICB2b2lkIGF0dGFjaFRvUHJvY2Vzc0Zvck5hdmlnYXRpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJik7CisgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmKTsKKwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9X
ZWJQcm9jZXNzRm9yUmVsb2FkKCk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRh
Y2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CiAKKyAgICBl
bnVtIGNsYXNzIE5hdmlnYXRpb25Qb2xpY3lDaGVjayB7CisgICAgICAgIFJlcXVpcmUsCisgICAg
ICAgIEJ5cGFzcywKKyAgICB9OworICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBOYXZpZ2F0
aW9uUG9saWN5Q2hlY2spOworCiAgICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwog
ICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0
IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKQEAgLTE2NzIsNyArMTY4
Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJh
bWUoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgdWludDY0X3Qg
ZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIHVpbnQ2NF90IGdlbmVyYXRlTmF2aWdhdGlvbklEKCk7
CiAgICAgQVBJOjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCogZWZmZWN0aXZlRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlQ2hhbmdlKCk7CkBAIC0xNzEyLDYgKzE3MjEsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKKwogICAgIFBhZ2VDbGllbnQmIG1fcGFn
ZUNsaWVudDsKICAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OwogCkBAIC0xOTAxLDYgKzE5MTIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlBvbGljeUFj
dGlvbiBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5
QWN0aW9uOjpVc2UgfTsKICAgICBEb3dubG9hZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lEb3dubG9hZElEIHsgMCB9OwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdlYnNpdGVQb2xpY2llczsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBtX2N1cnJlbnROYXZpZ2F0aW9uUG9saWN5TGlzdGVuZXJJRCB7
IDAgfTsKIAogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDNmY2FmNWFiNDVkLi41OTVjNTgxMDgyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTkxOSw0ICsxOTE5LDE2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9u
U3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYKICNlbmRpZgogfQogCitSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBjb25zdCBVUkwmIHRhcmdldFVSTCkKK3sKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+
cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkpCisgICAgICAgIHJldHVybiBwYWdlLnByb2Nlc3Mo
KTsKKworICAgIGF1dG8gdXJsID0gVVJMIHsgUGFyc2VkVVJMU3RyaW5nLCBwYWdlLnBhZ2VMb2Fk
U3RhdGUoKS51cmwoKSB9OworICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJs
LCB0YXJnZXRVUkwpIHx8IHVybC5pc0JsYW5rVVJMKCkpCisgICAgICAgIHJldHVybiBwYWdlLnBy
b2Nlc3MoKTsKKworICAgIHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKHBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA5MDdlZjdiOWYyNi4uN2YzYzY5MzA1MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDQxLDYgKzQ0MSw4
IEBAIHB1YmxpYzoKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGJhY2tncm91bmRXZWJQ
cm9jZXNzVG9rZW4oKSBjb25zdCB7IHJldHVybiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKG1f
YmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAjZW5kaWYKIAorICAgIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZjI0YmI5YWE5NzguLmZkNDgwNGRjYmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcApAQCAtNDI1LDggKzQyNSw2IEBAIFN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZTo6flNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkKIAogdm9pZCBTdG9yYWdlTWFuYWdl
cjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnNldEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiogYWxsb3dlZENvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFhbGxvd2VkQ29ubmVj
dGlvbiB8fCAhbV9hbGxvd2VkQ29ubmVjdGlvbik7Ci0KICAgICBtX2FsbG93ZWRDb25uZWN0aW9u
ID0gYWxsb3dlZENvbm5lY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMzc0ZDgzMDY0NDUuLmFlYTI4ZGYyOGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw2ICsx
MjU3LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptX21h
aW5GcmFtZS0+Y29yZUZyYW1lKCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koZXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3Vs
ZENoZWNrTmF2aWdhdGlvblBvbGljeShsb2FkUGFyYW1ldGVycy5zaG91bGRDaGVja05hdmlnYXRp
b25Qb2xpY3kpOwogCiAgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkubG9hZFJlcXVl
c3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZWNlZDkzMzBiZS4uOGQyODRmZmI1YjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAxOC0wMy0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRmlyc3QgcGllY2Ugb2YgcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjY1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIHRo
ZSAic3dhcHMgcHJvY2Vzc2VzIG9uIG5hdmlnYXRpb24iIHNldHRpbmcgaW4gTWluaUJyb3dzZXIg
VUkgZm9yIHRlc3Rpbmc6CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUu
bToKKyAgICAgICAgKGRlZmF1bHRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5tOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVs
YXRlTWVudV0pOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgdmFsaWRhdGVNZW51SXRl
bTpdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHByb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgdG9nZ2xlUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb246XSk6CisKKyAgICAgICAgTWFrZXMgc3VyZSB0aGUgY3VycmVudCBi
ZWhhdmlvciBpcyB0ZXN0ZWQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbTogQWRkZWQuCisgICAgICAg
ICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0p
OgorICAgICAgICAoLVtQU09OU2NoZW1lIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgor
ICAgICAgICAoLVtQU09OU2NoZW1lIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAg
ICAgIChURVNUKToKKwogMjAxOC0wMy0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIGR1bXAtY2xhc3MtbGF5b3V0IG1pc2hhbmRsZXMgZHVwbGljYXRl
cyBiYXNlIGNsYXNzZXMgYW5kIG1pc2NvbXB1dGVzIHBhZGRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Fw
cERlbGVnYXRlLm0KaW5kZXggOWZiODYwOGYyODQuLjYxYjllOGJiMTA5IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvQXBwRGVsZWdhdGUubQpAQCAtOTgsNiArOTgsOCBAQCAtICh2b2lkKWF3YWtlRnJvbU5p
YgogICAgICAgICBwcm9jZXNzQ29uZmlndXJhdGlvbi5kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkID0gIVtTZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXS5uZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVkOwogICAgICAgICBpZiAoW1NldHRpbmdzQ29u
dHJvbGxlciBzaGFyZWRdLnBlcldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkKQogICAgICAgICAg
ICAgcHJvY2Vzc0NvbmZpZ3VyYXRpb24ubWF4aW11bVByb2Nlc3NDb3VudCA9IDE7CisgICAgICAg
IGlmIChbU2V0dGluZ3NDb250cm9sbGVyIHNoYXJlZF0ucHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25F
bmFibGVkKQorICAgICAgICAgICAgcHJvY2Vzc0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wgPSBbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnBy
b2Nlc3NDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9TZXR0aW5nc0NvbnRyb2xsZXIuaAppbmRleCA2MTU4MWIxYWFlMS4uOGRhZDA2NGRjZDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKQEAgLTU5LDYgKzU5
LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGFuaW1hdGVkSW1hZ2VB
c3luY0RlY29kaW5nRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBsb2Fkc0FsbFNpdGVJY29uczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCB1c2VzR2FtZUNvbnRyb2xsZXJGcmFtZXdvcms7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIEJPT0wgbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25EaXNhYmxlZDsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBwcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbkVuYWJsZWQ7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcg
KmRlZmF1bHRVUkw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5n
c0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIu
bQppbmRleCA4Y2NlMTgwNjZiMi4uZDY0ZWY0MWYzNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvU2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTcwLDYgKzcwLDcgQEAKIAogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgUGVyV2luZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWRLZXkgPSBAIlBlcldpbmRv
d1dlYlByb2Nlc3Nlc0Rpc2FibGVkIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IE5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWRLZXkgPSBAIk5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWQiOworc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25LZXkgPSBAIlByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uIjsK
IAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGVidWdPdmVyeWxheU1lbnVJdGVtVGFnKSB7
CiAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VGFnID0gMTAwLApAQCAtMTc5LDYg
KzE4MCw3IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRp
dGxlOkAiTG9hZCBBbGwgU2l0ZSBJY29ucyBQZXItUGFnZSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dn
bGVMb2Fkc0FsbFNpdGVJY29uczopIGluZGVudGVkOllFU107CiAgICAgW3NlbGYgX2FkZEl0ZW1X
aXRoVGl0bGU6QCJVc2UgR2FtZUNvbnRyb2xsZXIuZnJhbWV3b3JrIG9uIG1hY09TIChSZXN0YXJ0
IHJlcXVpcmVkKSIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVVc2VzR2FtZUNvbnRyb2xsZXJGcmFt
ZXdvcms6KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRGlz
YWJsZSBuZXR3b3JrIGNhY2hlIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiIgYWN0aW9uOkBzZWxl
Y3Rvcih0b2dnbGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVkOikg
aW5kZW50ZWQ6WUVTXTsKKyAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBQcm9j
ZXNzIFN3YXAgb24gTmF2aWdhdGlvbiIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVQcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbjopIGluZGVudGVkOllFU107CiAKICAgICBOU01lbnVJdGVtICpkZWJ1Z092
ZXJsYXlzU3VibWVudUl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJE
ZWJ1ZyBPdmVybGF5cyIgYWN0aW9uOm5pbCBrZXlFcXVpdmFsZW50OkAiIl07CiAgICAgTlNNZW51
ICpkZWJ1Z092ZXJsYXlzTWVudSA9IFtbTlNNZW51IGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVi
dWcgT3ZlcmxheXMiXTsKQEAgLTI3MCw2ICsyNzIsOCBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0
ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3Nl
bGYgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrXSA/IE5TQ29udHJvbFN0YXRlVmFsdWVPbiA6
IE5TQ29udHJvbFN0YXRlVmFsdWVPZmZdOwogICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0
b3IodG9nZ2xlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25EaXNhYmxlZDopKQog
ICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb25EaXNhYmxlZF0gPyBOU0NvbnRyb2xTdGF0ZVZhbHVlT24gOiBOU0NvbnRyb2xT
dGF0ZVZhbHVlT2ZmXTsKKyAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVBy
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uOikpCisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2Vs
ZiBwcm9jZXNzU3dhcE9uTmF2aWdhdGlvbkVuYWJsZWRdID8gTlNDb250cm9sU3RhdGVWYWx1ZU9u
IDogTlNDb250cm9sU3RhdGVWYWx1ZU9mZl07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxl
Y3Rvcih0b2dnbGVVc2VVSVNpZGVDb21wb3NpdGluZzopKQogICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6W3NlbGYgdXNlVUlTaWRlQ29tcG9zaXRpbmddID8gTlNDb250cm9sU3RhdGVWYWx1ZU9u
IDogTlNDb250cm9sU3RhdGVWYWx1ZU9mZl07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxl
Y3Rvcih0b2dnbGVQZXJXaW5kb3dXZWJQcm9jZXNzZXNEaXNhYmxlZDopKQpAQCAtNDg1LDYgKzQ4
OSwxNiBAQCAtICh2b2lkKXRvZ2dsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
RGlzYWJsZWQ6KGlkKXNlbmRlcgogICAgIFtzZWxmIF90b2dnbGVCb29sZWFuRGVmYXVsdDpOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVkS2V5XTsKIH0KIAorLSAoQk9P
TClwcm9jZXNzU3dhcE9uTmF2aWdhdGlvbkVuYWJsZWQKK3sKKyAgICByZXR1cm4gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpQcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbktleV07Cit9CisKKy0gKHZvaWQpdG9nZ2xlUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb246
KGlkKXNlbmRlcgoreworICAgIFtzZWxmIF90b2dnbGVCb29sZWFuRGVmYXVsdDpQcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbktleV07Cit9CisKIC0gKEJPT0wpaXNTcGFjZVJlc2VydmVkRm9yQmFubmVy
cwogewogICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBi
b29sRm9yS2V5OlJlc2VydmVTcGFjZUZvckJhbm5lcnNQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTU0MzNkOGQ4YzkuLmYyNDA5N2EwZmJjIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTgzLDYgKzE4Myw3IEBACiAJCTUxNzE0RUI4MUNGOENBMTcwMDQ3MjND
NCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJv
Y2Vzc0tpbGxJREJDbGVhbnVwLm1tICovOyB9OwogCQk1MTdFN0UwNDE1MTExOUMxMDBEMEIwMDgg
LyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RTdFMDMx
NTExMTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5odG1sICovOyB9OwogCQk1MTgyQzIyRTFGMkJDRTU0MDA1OUJBN0MgLyogV0tVUkxTY2hl
bWVIYW5kbGVyLWxlYWtzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4MkMyMkQxRjJCQ0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1s
ZWFrcy5tbSAqLzsgfTsKKwkJNTE4QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4QzExNTIyMDVCMDRGOTAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tICovOyB9OwogCQk1MTk4QTI0MDFFQTdFNTlGMDA4OTEwQjcgLyogSW5pdGlhbFdhcm1lZFBy
b2Nlc3NVc2VkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE5OEEyM0YxRUE3RTU5NTAwODkxMEI3IC8qIEluaXRpYWxXYXJtZWRQcm9jZXNzVXNlZC5t
bSAqLzsgfTsKIAkJNTFBNTg3N0QxRDFCNDlDRDAwNEJBOUFGIC8qIEluZGV4ZWREQk11bHRpUHJv
Y2Vzcy0zLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBNTg3N0MxRDFCM0Q4RDAwNEJBOUFGIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vz
cy0zLmh0bWwgKi87IH07CiAJCTUxQTU4Nzg1MUQyNzM5RTMwMDRCQTlBRiAvKiBJbmRleGVkREJE
YXRhYmFzZVByb2Nlc3NLaWxsLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1ODc4MjFEMjcyRUI1MDA0QkE5QUYgLyogSW5kZXhl
ZERCRGF0YWJhc2VQcm9jZXNzS2lsbC0xLmh0bWwgKi87IH07CkBAIC0xMzU0LDYgKzEzNTUsNyBA
QAogCQk1MTdFN0RGQjE1MTEwRUE2MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVt
b3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyMkQxRjJCQ0I0MTAw
NTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9ICJXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE5OEEyM0Yx
RUE3RTU5NTAwODkxMEI3IC8qIEluaXRpYWxXYXJtZWRQcm9jZXNzVXNlZC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluaXRpYWxXYXJtZWRQcm9jZXNzVXNlZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNTg3N0MxRDFCM0Q4RDAwNEJBOUFG
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0zLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQTU4NzgyMUQyNzJFQjUwMDRCQTlBRiAvKiBJbmRleGVkREJEYXRhYmFzZVBy
b2Nlc3NLaWxsLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJE
YXRhYmFzZVByb2Nlc3NLaWxsLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTU0LDYgKzIxNTYsNyBAQAogCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNF
IC8qIFByZWZlcmVuY2VzLm1tICovLAogCQkJCTdDMUFGNzkzMUU4RENCQUIwMDI2NDVCOSAvKiBQ
cmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tICovLAorCQkJCTUxOEMxMTUyMjA1QjA0RjkwMDFGRjRB
RSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSAqLywKIAkJCQk1Nzk4RTJBRjFDQUY1QzI4
MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gKi8sCiAJCQkJQTFDNEZCNkMx
QkFDQ0U1MDAwMzc0MkQwIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQkxQTRGODFEMDFCREZGRENG
MDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLywKQEAgLTM3MDAsNiArMzcwMyw3
IEBACiAJCQkJN0NDRTdGMkYxQTQxMUIxMDAwNDQ3QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDNTRBNEJFMUFBMTFDQ0EwMDM4
MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNFMzU0
RDkxRTcwREE1QzAwQkVGRTNCIC8qIFdLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE4QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4MzhCMUYxRUVGM0E1QzAwOUI5ODBFIC8q
IFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3MENF
MjJBMUY1NzM0MzQwMEU3NDEwQiAvKiBXS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENvb2tp
ZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjRiMWUwN2NiODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJUZXN0LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5kbGVyLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KKyNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQg
PHd0Zi9EZXF1ZS5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRpYyBpbnQgbnVtYmVyT2ZEZWNpZGVQb2xp
Y3lDYWxsczsKKworQGludGVyZmFjZSBQU09OTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUFNPTk5hdmln
YXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIGRvbmUg
PSB0cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlv
bkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgKytudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzOwor
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cit9CisK
K0BlbmQKKworQGludGVyZmFjZSBQU09OU2NoZW1lIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFu
ZGxlcj4geworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUFNPTlNjaGVtZQorCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tV
UkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVx
dWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDoxIHRl
eHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3Bv
bnNlLmdldCgpXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbQCJIZWxsbyIgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBbdGFzayBkaWRGaW5pc2hdOwor
fQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRh
c2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVuZAorCitURVNUKFByb2Nl
c3NTd2FwLCBCYXNpYykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWluUHRyPFBTT05TY2hl
bWU+IGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAiUFNPTjEiXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04yIl07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb24xOi8vaG9z
dC9tYWluMS5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisK
KyAgICBhdXRvIHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAg
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJwc29uMTovL2hvc3QvbWFpbjIuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVu
dGlmaWVyXTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjI6Ly9ob3N0L21haW4yLmh0bWwiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlkMyA9IFt3ZWJWaWV3
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBFWFBFQ1RfRVEocGlkMSwgcGlkMik7Cisg
ICAgRVhQRUNUX0ZBTFNFKHBpZDIgPT0gcGlkMyk7CisKKyAgICAvLyAzIGxvYWRzLCAzIGRlY2lk
ZVBvbGljeSBjYWxscyAoZS5nLiB0aGUgbG9hZCB0aGF0IGRpZCBwZXJmb3JtIGEgcHJvY2VzcyBz
d2FwIHNob3VsZCBub3QgaGF2ZSBnZW5lcmF0ZWQgYW4gYWRkaXRpb25hbCBkZWNpZGVQb2xpY3kg
Y2FsbCkKKyAgICBFWFBFQ1RfRVEobnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscywgMyk7Cit9CisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335906</attachid>
            <date>2018-03-15 16:21:30 -0700</date>
            <delta_ts>2018-03-15 17:22:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>52038</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Njk2M2E5MDQzYi4uMDJjOGRmZWE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOC0wMy0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgRmlyc3QgcGllY2Ugb2YgcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdChzKQorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgIC0gQSBuZXcg
UG9saWN5QWN0aW9uOjpTdXNwZW5kIGZvciBmdXR1cmUgdXNlIGluIHRoaXMgZmVhdHVyZQorICAg
ICAgICAtIE1ha2VzIHN1cmUgdGhhdCBsb2FkcyB0cmlnZ2VyZWQgYXMgcGFydCBvZiBhIHByb2Nl
c3Mgc3dhcCBkbyAqbm90KiByZS1jb25zdWx0IHRoZSBwb2xpY3kgZGVsZWdhdGUKKworICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6
OnNldFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0OjpzaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgY29uc3QpOgorCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKworICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6IEFkZCBhIG5ldyBQb2xpY3kgdHlwZSAiU3VzcGVu
ZCIgdG8gYmUgdXNlZCBpbiB0aGUgZnV0dXJlCisgICAgICAgICAgYnkgdGhlIHByb2Nlc3Mtc3dh
cC1vbi1uYXZpZ2F0aW9uIG1lY2hhbmlzbS4KKworICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlv
blBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRv
d1BvbGljeSk6CisKIDIwMTgtMDMtMTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjk2MzkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjODUwZmMzYjg1MS4uZjA1
N2E5Yjg1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
ODkxLDYgKzg5MSw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50
UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZXNv
dXJjZUxvYWRlcio+KG1haW5SZXNvdXJjZUxvYWRlcigpKS0+ZGlkRmFpbChpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ug
UG9saWN5QWN0aW9uOjpTdXNwZW5kOgorICAgICAgICAvLyBJdCBpcyBpbnZhbGlkIHRvIGdldCBh
IFN1c3BlbmQgcG9saWN5IGJhc2VkIG9uIG5hdmlnYXRpb24gcmVzcG9uc2UuCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9y
ZToKICAgICAgICAgaWYgKFJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIgPSB0aGlz
LT5tYWluUmVzb3VyY2VMb2FkZXIoKSkKICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlKCptX2ZyYW1lLCBtYWluUmVzb3VyY2VMb2Fk
ZXItPmlkZW50aWZpZXIoKSwgKnRoaXMsIG1fcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRSZXF1ZXN0LmgKaW5kZXggODU3YjAzNTU5MTQuLjI4NDhkYzk0OGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKQEAgLTYwLDYgKzYwLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3koYm9vbCBjaGVj
a1BvbGljeSkgeyBtX3Nob3VsZENoZWNrTmV3V2luZG93UG9saWN5ID0gY2hlY2tQb2xpY3k7IH0K
ICAgICBib29sIHNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRDaGVja05ld1dpbmRvd1BvbGljeTsgfQogCisgICAgdm9pZCBzZXRTaG91bGRDaGVja05h
dmlnYXRpb25Qb2xpY3koYm9vbCBjaGVja1BvbGljeSkgeyBtX3Nob3VsZENoZWNrTmF2aWdhdGlv
blBvbGljeSA9IGNoZWNrUG9saWN5OyB9CisgICAgYm9vbCBzaG91bGRDaGVja05hdmlnYXRpb25Q
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeTsgfQor
CiAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJzdGl0dXRlRGF0YTsgfQogICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGEoY29uc3Qg
U3Vic3RpdHV0ZURhdGEmIGRhdGEpIHsgbV9zdWJzdGl0dXRlRGF0YSA9IGRhdGE7IH0KICAgICBi
b29sIGhhc1N1YnN0aXR1dGVEYXRhKCkgeyByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCk7IH0KQEAgLTg5LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTdWJzdGl0dXRlRGF0YSBtX3N1
YnN0aXR1dGVEYXRhOwogCiAgICAgYm9vbCBtX3Nob3VsZENoZWNrTmV3V2luZG93UG9saWN5IHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5IHsgdHJ1ZSB9
OwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CiAgICAgTG9ja0JhY2tGb3J3YXJkTGlz
dCBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgU2hvdWxkU2VuZFJlZmVycmVyIG1fc2hvdWxk
U2VuZFJlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggOWE3
ZDlhYjlkNzIuLjkzZmI1NjI4ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTEyMyw2ICsxMjMsNyBAQAogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTE0MDMsNiArMTQwNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJh
bWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIg
PSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LnN1YnN0aXR1dGVEYXRhKCkpOwogICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsK
IAorICAgIFNldEZvclNjb3BlPGJvb2w+IGN1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9u
UG9saWN5R3VhcmQobV9jdXJyZW50TG9hZFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSwgcmVx
dWVzdC5zaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3koKSk7CiAgICAgbG9hZChsb2FkZXIucHRy
KCkpOwogfQogCkBAIC0xNTM4LDYgKzE1NDAsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdp
dGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQK
IAogICAgIG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLmNhbmNlbCh0cnVlKTsKIAorICAg
IGlmICghbV9jdXJyZW50TG9hZFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSkgeworICAgICAg
ICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1ZXN0KCksIGZv
cm1TdGF0ZSwgdHJ1ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHBvbGljeUNo
ZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVx
dWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwg
Zm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhh
bmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBG
b3JtU3RhdGUqIGZvcm1TdGF0ZSwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICBjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBzaG91bGRD
b250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNWJlMjQyYTRm
NTMuLmExY2UwOGMxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNDYw
LDYgKzQ2MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeT4gbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZzsKICAgICBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBtX292ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3Jp
dHlGb3JUZXN0aW5nOwogICAgIGJvb2wgbV9pc1N0cmljdFJhd1Jlc291cmNlVmFsaWRhdGlvblBv
bGljeURpc2FibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2N1cnJlbnRMb2Fk
U2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5IHsgdHJ1ZSB9OwogCiAgICAgVVJMIG1fcHJldmlv
dXNVUkw7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggMGE0NzE4MGI4MDQu
LjU5YjZhNjIzZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgK
QEAgLTQxLDcgKzQxLDggQEAgZW51bSBGcmFtZVN0YXRlIHsKIGVudW0gY2xhc3MgUG9saWN5QWN0
aW9uIHsKICAgICBVc2UsCiAgICAgRG93bmxvYWQsCi0gICAgSWdub3JlCisgICAgSWdub3JlLAor
ICAgIFN1c3BlbmQsCiB9OwogCiBlbnVtIGNsYXNzIFJlbG9hZE9wdGlvbiB7CkBAIC0xNTgsNyAr
MTU5LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQb2xpY3lBY3Rp
b24+IHsKICAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uLAogICAgICAgICBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb246OlVzZSwKICAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpEb3dubG9h
ZCwKLSAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUKKyAgICAgICAgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsCisgICAgICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
U3VzcGVuZAogICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAKaW5kZXggMDQzMjkxZTk0N2MuLjM1Mjc3NWZhYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xNTcsNiArMTU3LDkgQEAgdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBk
aWRSZWMKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlv
bjo6SWdub3JlOgogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgZmFs
c2UpOworICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3VzcGVuZDoKKyAgICAgICAgICAgIExP
RyhMb2FkaW5nLCAiUG9saWN5QWN0aW9uOjpTdXNwZW5kIGVuY291bnRlcmVkIC0gVHJlYXRpbmcg
YXMgUG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5vdyIpOworICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKHsgfSwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6
VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFi
bGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IocmVx
dWVzdCkpOwpAQCAtMTg0LDYgKzE4Nyw5IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdX
aW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvCiAgICAg
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICBmdW5jdGlvbih7IH0s
IG51bGxwdHIsIHsgfSwgeyB9LCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgorICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxp
ZCB0byBnZXQgYSAiU3VzcGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBk
b2N1bWVudCBpcyBub3QgZ29pbmcgYXdheS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAg
ICBmdW5jdGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlv
bkFjdGlvbiwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiY2MyMGY2
YzYxLi43M2JiZmI2ZDIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxOC0wMy0xNSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlyc3QgcGllY2Ug
b2YgcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBmaXJzdCBwaWVj
ZXMgb2YgdGhlIGZvbGxvd2luZyBmZWF0dXJlOgorICAgICAgICAiV2hlbiBhIG5hdmlnYXRpb24g
b3JpZ2luYXRpbmcgaW5zaWRlIGEgV0tXZWJWaWV3IGdvZXMgdG8gYSBkaWZmZXJlbnQgb3JpZ2lu
LAorICAgICAgICAgc3dhcCB0byBhIG5ldyBXZWJQcm9jZXNzIGZvciB0aGF0IG5hdmlnYXRpb24i
CisKKyAgICAgICAgVGhlcmUgYXJlIHNpZ25pZmljYW50IGJ1Z3MgdG8gYmUgcmVzb2x2ZWQgYW5k
IHNpZ25pZmljYW50IG9wdGltaXphdGlvbnMgdG8gYmUgbWFkZS4KKyAgICAgICAgV2hpY2ggaXMg
d2h5IHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgQmVzaWRl
cyB0aGUgY29yZSBsb2dpYyBpbXBsZW1lbnRpbmcgdGhlIGZlYXR1cmUsIHRoaXMgcGF0Y2ggZG9l
cyBhIGxvdCBvZiByZWxhdGVkIAorICAgICAgICB3b3JrIHN1Y2ggYXM6CisgICAgICAgIC0gUmVt
b3Zpbmcgc29tZSBub3ctaW52YWxpZCBBU1NFUlRzCisgICAgICAgIC0gQWRkaW5nIHNvbWUgQVNT
RVJUcworICAgICAgICAtIFVwZGF0ZSB2YXJpb3VzIHN3aXRjaCBzdGF0ZXMgdG8gaGFuZGxlIHRo
ZSBuZXcgIlN1c3BlbmQiIHBvbGljeSBhbmQgIk5hdmlnYXRpb25Td2FwIgorICAgICAgICAgIHBy
b2Nlc3MgdGVybWluYXRpb24gcmVhc29uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FwdHVyZTo6TmV0d29ya0RhdGFUYXNrUmVwbGF5OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bToKKyAgICAgICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbik6CisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisKKyAgICAgICAgKiBTaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmg6IEFkZCAiTmF2aWdhdGlvblN3YXAiIGFzIGEgcHJvY2VzcyB0ZXJtaW5hdGlv
biByZWFzb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaDoKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoK
KyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9BUEkp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6d2tQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmln
YXRpb25TdGF0ZTo6bmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5hdmlnYXRpb25T
dGF0ZTo6dGFrZU5hdmlnYXRpb24pOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaFRvUHJvY2Vzc0Zvck5h
dmlnYXRpb24pOiBQcmV0ZW5kIHRoYXQgdGhlIGV4aXN0aW5nIHByb2Nlc3MgCisgICAgICAgICAg
dGVybWluYXRlZCB1c2luZyB0aGUgbmV3ICJOYXZpZ2F0aW9uU3dhcCIgcmVhc29uLCB0aGVuIG1h
bnVhbGx5IHN0YXJ0IHRoZSBuZXh0IGxvYWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRp
bnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbik6IERldGVy
bWluZSB3aGljaCBwcm9jZXNzIHNob3VsZCBiZSB1c2VkCisgICAgICAgICAgZm9yIGEgcHJvcG9z
ZWQgbmF2aWdhdGlvbiwgY3JlYXRpbmcgYSBuZXcgb25lIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpzZXRBbGxvd2VkQ29ubmVjdGlvbik6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKwogMjAxOC0wMy0xNSAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGVsZW1ldHJ5IGZvciBzdGFsbGVkIHdlYnBhZ2Ug
bG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCmluZGV4IDU2YTk5MjgzMjUzLi41YWE1ZTBjMmE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBA
IC0zMTcsNiArMzE3LDkgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZShFcnJvciBlcnJvckNvZGUpCiAgICAgICAgICAgICBtX2J1ZmZlci5yZXNp
emUoYnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3BlbmQ6CisgICAgICAgICAgICBMT0dfRVJS
T1IoIlBvbGljeUFjdGlvbjo6U3VzcGVuZCBlbmNvdW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGlj
eUFjdGlvbjo6SWdub3JlIGZvciBub3ciKTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
ICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtEYXRhVGFza1JlcGxheS5j
cHAKaW5kZXggZjNhNjVlZDc5YWQuLjY2ODBiYjM2MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVw
bGF5LmNwcApAQCAtMjUyLDYgKzI1Miw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrUmVwbGF5Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvCiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBlbnF1ZXVl
RXZlbnRIYW5kbGVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb246OlN1c3BlbmQ6CisgICAgICAgICAgICBMT0dfRVJST1IoIlBvbGljeUFj
dGlvbjo6U3VzcGVuZCBlbmNvdW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGljeUFjdGlvbjo6SWdu
b3JlIGZvciBub3ciKTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFdl
YkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlOgogICAgICAgICAgICAgY29tcGxldGUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDNmNzYwOTM1YTc2Li44NTgy
ZjgyMWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNjIsNiArNjIsOSBAQCBAZW5kCiBzdGF0
aWMgTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiB0b05TVVJMU2Vzc2lvblJlc3BvbnNl
RGlzcG9zaXRpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uIGRpc3Bvc2l0aW9uKQogewogICAgIHN3
aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6U3Vz
cGVuZDoKKyAgICAgICAgTE9HX0VSUk9SKCJQb2xpY3lBY3Rpb246OlN1c3BlbmQgZW5jb3VudGVy
ZWQgLSBUcmVhdGluZyBhcyBQb2xpY3lBY3Rpb246Oklnbm9yZSBmb3Igbm93Iik7CisgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6CiAg
ICAgICAgIHJldHVybiBOU1VSTFNlc3Npb25SZXNwb25zZUNhbmNlbDsKICAgICBjYXNlIFdlYkNv
cmU6OlBvbGljeUFjdGlvbjo6VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA0NzU0
YTU4ZmY2ZC4uZjYxMzljNDIyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01MCw2
ICs1MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oSVBDKSBcCiAgICAgTShLZXlIYW5kbGluZykg
XAogICAgIE0oTGF5ZXJzKSBcCisgICAgTShMb2FkaW5nKSBcCiAgICAgTShOZXR3b3JrKSBcCiAg
ICAgTShOZXR3b3JrQ2FjaGUpIFwKICAgICBNKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9h
ZGluZykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDliZmQ5
Y2I2MzE3Li5hNjc5MWVmYTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJz
LmNwcApAQCAtNDgsNiArNDgsNyBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdW5yZWFjaGFibGVVUkxTdHJp
bmc7CiAgICAgZW5jb2RlciA8PCBwcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZzsKICAgICBl
bmNvZGVyIDw8IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgZW5jb2RlciA8PCBz
aG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3k7CiAgICAgZW5jb2RlciA8PCB1c2VyRGF0YTsKIAog
ICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIpOwpAQCAtMTAyLDYgKzEwMyw5IEBAIGJvb2wgTG9h
ZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJz
JiBkYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLnNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS51c2VyRGF0YSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXgg
ZDkyNjE3NWZkNGMuLjg0MDJkZGM4NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICBTdHJp
bmcgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmc7CiAKICAgICB1aW50NjRfdCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGJvb2wgc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9s
aWN5IHsgdHJ1ZSB9OwogICAgIFVzZXJEYXRhIHVzZXJEYXRhOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25S
ZWFzb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5o
CmluZGV4IDZhMWY0OTJlYzRmLi42ZTAzNTI3YjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKQEAgLTMxLDcgKzMxLDggQEAgZW51bSBj
bGFzcyBQcm9jZXNzVGVybWluYXRpb25SZWFzb24gewogICAgIEV4Y2VlZGVkTWVtb3J5TGltaXQs
CiAgICAgRXhjZWVkZWRDUFVMaW1pdCwKICAgICBSZXF1ZXN0ZWRCeUNsaWVudCwKLSAgICBDcmFz
aAorICAgIENyYXNoLAorICAgIE5hdmlnYXRpb25Td2FwLAogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggZjQ3MGM4MjFjYjcuLjE3ZDQ0
NjFmNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgK
QEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIE5hdmlnYXRpb24gOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb24+IHsKIHB1YmxpYzoKKyAg
ICBOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRpb24mKSA9IGRlbGV0ZTsKKwogICAgIHN0YXRpYyBS
ZWY8TmF2aWdhdGlvbj4gY3JlYXRlKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdmlnYXRpb24oc3RhdGUpKTsK
QEAgLTY0LDcgKzY2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5hdmln
YXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmKTsKLSAgICBleHBsaWNpdCBOYXZpZ2F0
aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpOworICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cAppbmRleCBlOTY5NDA2YjdmYy4uMDkzNGJhMzA2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
CkBAIC0xMjcsNiArMTI3LDcgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX2N0RGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZSA9IHRoaXMtPm1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogI2VuZGlm
CiAgICAgY29weS0+bV9wcmVzZW50aW5nQXBwbGljYXRpb25QSUQgPSB0aGlzLT5tX3ByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRDsKKyAgICBjb3B5LT5tX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9
IHRoaXMtPm1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOwogCiAgICAgcmV0dXJuIGNvcHk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IDNiNmJjMzA4
ZDFjLi43OTZkZDdjMzUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0LmgKQEAgLTIzNiw2ICsyMzYsMTAgQEAgaW5saW5lIFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uIHRvQVBJKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiAgICAgICAgIHJldHVy
biBrV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25FeGNlZWRlZE1lbW9yeUxpbWl0OwogICAgIGNh
c2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0OgogICAgICAgICBy
ZXR1cm4ga1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uRXhjZWVkZWRDUFVMaW1pdDsKKyAgICBj
YXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXA6CisgICAgICAgIC8v
IFdlIHByb2JhYmx5IHNob3VsZG4ndCBib3RoZXIgY29taW5nIHVwIHdpdGggYSBuZXcgQy1BUEkg
dHlwZSBmb3IgcHJvY2Vzcy1zd2FwcGluZy4KKyAgICAgICAgLy8gIlJlcXVlc3RlZCBieSBjbGll
bnQiIHNlZW1zIGxpa2UgdGhlIGJlc3QgbWF0Y2ggZm9yIGV4aXN0aW5nIHR5cGVzLgorICAgICAg
ICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVz
dGVkQnlDbGllbnQ6CiAgICAgICAgIHJldHVybiBrV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25S
ZXF1ZXN0ZWRCeUNsaWVudDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jh
c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KaW5kZXggYzVlMzk0NTI0YzQuLjZlNzhlMjJlZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC05NjIsNiArOTYyLDEwIEBA
IHN0YXRpYyBfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24gd2tQcm9jZXNzVGVybWluYXRpb25S
ZWFzb24oUHJvY2Vzc1Rlcm1pbmF0aW9uCiAgICAgICAgIHJldHVybiBfV0tQcm9jZXNzVGVybWlu
YXRpb25SZWFzb25FeGNlZWRlZE1lbW9yeUxpbWl0OwogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0OgogICAgICAgICByZXR1cm4gX1dLUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uRXhjZWVkZWRDUFVMaW1pdDsKKyAgICBjYXNlIFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXA6CisgICAgICAgIC8vIFdlIHByb2JhYmx5IHNob3Vs
ZG4ndCBib3RoZXIgY29taW5nIHVwIHdpdGggYSBuZXcgQVBJIHR5cGUgZm9yIHByb2Nlc3Mtc3dh
cHBpbmcuCisgICAgICAgIC8vICJSZXF1ZXN0ZWQgYnkgY2xpZW50IiBzZWVtcyBsaWtlIHRoZSBi
ZXN0IG1hdGNoIGZvciBleGlzdGluZyB0eXBlcy4KKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAg
Y2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50OgogICAgICAg
ICByZXR1cm4gX1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uUmVxdWVzdGVkQnlDbGllbnQ7CiAg
ICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKaW5kZXggOWQ5N2JkZDVmYzAuLjQ4
ZjkzNDU5ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25T
dGF0ZS5jcHAKQEAgLTc5LDEzICs3OSwxNSBAQCBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBXZWJOYXZp
Z2F0aW9uU3RhdGU6OmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbigpCiBBUEk6Ok5hdmlnYXRpb24m
IFdlYk5hdmlnYXRpb25TdGF0ZTo6bmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiB7
CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7Ci0gICAgCisgICAgQVNTRVJUKG1fbmF2aWdhdGlv
bnMuY29udGFpbnMobmF2aWdhdGlvbklEKSk7CisKICAgICByZXR1cm4gKm1fbmF2aWdhdGlvbnMu
Z2V0KG5hdmlnYXRpb25JRCk7CiB9CiAKIFJlZjxBUEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRp
b25TdGF0ZTo6dGFrZU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIEFT
U0VSVChuYXZpZ2F0aW9uSUQpOworICAgIEFTU0VSVChtX25hdmlnYXRpb25zLmNvbnRhaW5zKG5h
dmlnYXRpb25JRCkpOwogICAgIAogICAgIHJldHVybiBtX25hdmlnYXRpb25zLnRha2UobmF2aWdh
dGlvbklEKS5yZWxlYXNlTm9uTnVsbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggMTk3YjQ2NjQ5ZGYuLmU2MThkZDQ5NjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYzOCwxNiArNjM4LDMyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBTCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2VzcygpCit7CisgICAgYXV0byBwcm9jZXNzID0gbWFrZVJlZihtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCht
X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpKTsKKyAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhXVEZN
b3ZlKHByb2Nlc3MpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmF0dGFjaFRvUHJvY2Vzc0Zv
ck5hdmlnYXRpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQoreworICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIFdlYlBhZ2VQcm94eSBpcyB0aGUgb25seSBvbmUgaG9zdGVkIGluIGl0cyBX
ZWJQcm9jZXNzLCBkb2VzIHRoaXMgbWFrZSBpdCBnbyBhd2F5PworICAgIC8vIFdlIG5lZWQgdG8g
YmUgcHJlcGFyZWQgdG8gcmV1c2UgaXQgbGF0ZXIuCisgICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZShQ
cm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKKworICAgIC8vIEZJWE1F
OiB0aGlzIGlzIHRvIGZpeCB0aGUgQVNTRVJUKGlzVmFsaWQoKSkgaW5zaWRlIHJlYXR0YWNoVG9X
ZWJQcm9jZXNzLCBzb21lIG90aGVyIHdheSB0byBmaXggdGhpcyBpcyBuZWVkZWQuCisgICAgbV9p
c1ZhbGlkID0gZmFsc2U7CisgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoV1RGTW92ZShwcm9jZXNz
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAg
ICBBU1NFUlQoIWlzVmFsaWQoKSk7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBX
ZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKIAogICAgIG1faXNWYWxpZCA9IHRy
dWU7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAKLSAgICBtX3Byb2Nlc3MgPSBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNz
Q291bnRMaW1pdChtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOworICAgIG1fcHJvY2VzcyA9IFdU
Rk1vdmUocHJvY2Vzcyk7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpICE9IENoaWxk
UHJvY2Vzc1Byb3h5OjpTdGF0ZTo6VGVybWluYXRlZCk7CiAgICAgaWYgKG1fcHJvY2Vzcy0+c3Rh
dGUoKSA9PSBDaGlsZFByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCkBAIC04NzQsNiArODkw
LDEzIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1
ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgIGxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb24obmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6
UmVxdWlyZSk7CisgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIE5hdmlnYXRpb25Qb2xpY3lDaGVjayBuYXZpZ2F0aW9uUG9saWN5Q2hlY2spCit7CisgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtODg0LDEwICs5MDcsMTEgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTaG8KICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAgIExvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25J
RCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmln
YXRpb25JRCA9IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMu
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9ICh1aW50NjRfdClzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgPSBuYXZpZ2F0aW9uUG9saWN5Q2hlY2sg
PT0gTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlOwogICAgIGJvb2wgY3JlYXRlZEV4dGVu
c2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUodXJsLCBsb2FkUGFy
YW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lv
bikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbigpOwpAQCAtODk1LDggKzkxOSw2IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hv
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KGxv
YWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLnN0YXJ0KCk7Ci0KLSAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKIH0KIAog
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJp
bmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTIzNTUsNiArMjM3NywyMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBX
ZWJGcmFtZVByb3h5JiBmcgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fY3Vy
cmVudE5hdmlnYXRpb25Qb2xpY3lMaXN0ZW5lcklEICYmICptX2N1cnJlbnROYXZpZ2F0aW9uUG9s
aWN5TGlzdGVuZXJJRCA9PSBsaXN0ZW5lcklEKSB7CisgICAgICAgIG1fY3VycmVudE5hdmlnYXRp
b25Qb2xpY3lMaXN0ZW5lcklEID0gc3RkOjpudWxsb3B0OworCisgICAgICAgIGlmIChhY3Rpb24g
PT0gUG9saWN5QWN0aW9uOjpVc2UgJiYgbmF2aWdhdGlvbikgeworICAgICAgICAgICAgYXV0byBw
cm9wb3NlZFByb2Nlc3MgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdh
dGlvbigqdGhpcywgbmF2aWdhdGlvbi0+cmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGlm
IChwcm9wb3NlZFByb2Nlc3MucHRyKCkgIT0gJnByb2Nlc3MoKSkgeworICAgICAgICAgICAgICAg
IGFjdGlvbiA9IFBvbGljeUFjdGlvbjo6U3VzcGVuZDsKKyAgICAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBwcm9wb3NlZFByb2Nlc3MgPSBXVEZN
b3ZlKHByb3Bvc2VkUHJvY2VzcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHBy
b3Bvc2VkUHJvY2VzcykpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCiAgICAgLy8gSWYgd2UgcmVjZWl2ZWQgYSBwb2xpY3kgZGVjaXNpb24g
d2hpbGUgaW4gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiB0aGUgZGVjaXNpb24gd2ls
bCAKICAgICAvLyBiZSBzZW50IGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzIGJ5IGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24uIAogICAgIGlmIChtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbikgewpAQCAtMjM2OCw2ICsyNDA0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkm
IGZyCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oZnJhbWUuZnJhbWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRp
b24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIHdlYnNpdGVQ
b2xpY2llcyksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcykKK3sKKyAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcg
bmF2aWdhdGlvbiAlIiBQUkl1NjQgIiB0byBVUkwgJXMgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBu
YXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLnJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF0dGFjaFRvUHJvY2Vzc0Zvck5hdmlnYXRpb24o
V1RGTW92ZShwcm9jZXNzKSk7CisKKyAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJl
c3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YworICAgIGxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb24obmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlv
bi5yZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIE5hdmlnYXRpb25Qb2xpY3lDaGVjazo6
QnlwYXNzKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1
c2VyQWdlbnQpCiB7CiAgICAgaWYgKG1fdXNlckFnZW50ID09IHVzZXJBZ2VudCkKQEAgLTM3Njgs
NiArMzgxNCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0KHVp
bnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUlu
Zm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05h
dmlnYXRpb25JRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uJiBwb2xpY3lBY3Rpb24sIERvd25sb2Fk
SUQmIGRvd25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mIHdlYnNp
dGVQb2xpY2llcykKIHsKKyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSAtIFRhcmdldCB1cmwgJXMiLCBvcmlnaW5hbFJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtMzgwNiw2ICszODU0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXIKICAgICBBU1NFUlQoIW1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKTsKICAgICAKICAgICBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9
IHRydWU7CisgICAgbV9jdXJyZW50TmF2aWdhdGlvblBvbGljeUxpc3RlbmVySUQgPSBsaXN0ZW5l
cklEOwogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkID0gZmFs
c2U7CiAKICAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNzLT53
ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCk7CkBAIC0zODc0LDggKzM5
MjMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2kKICAgICBNRVNTQUdFX0NIRUNLX1VSTChy
ZXNwb25zZS51cmwoKSk7CiAKICAgICBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBs
aXN0ZW5lciA9IGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7Ci0g
ICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbGlzdGVuZXItPnNldE5hdmlnYXRpb24obV9u
YXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSk7CisgICAgaWYgKG5hdmln
YXRpb25JRCkgeworICAgICAgICBhdXRvJiBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUt
Pm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKKyAgICAgICAgbGlzdGVuZXItPnNldE5hdmlnYXRp
b24obmF2aWdhdGlvbik7CisgICAgfQogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewog
ICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNl
OjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJhbWUsIGZyYW1lU2VjdXJpdHlPcmln
aW4uc2VjdXJpdHlPcmlnaW4oKSkuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlN
RVR5cGUpOwpAQCAtNTU5MCwxNCArNTY0MSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogICAgIC8vIFRo
ZXJlIGlzIGEgbmVzdGVkIHRyYW5zYWN0aW9uIGluIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0
ZWQoKSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gY29tbWl0IGJlZm9yZSB0aGUgY2xpZW50IGNhbGwu
CiAgICAgUGFnZUxvYWRTdGF0ZTo6VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQo
KTsKKyAgICByZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKHJlYXNvbik7CiAKLSAgICBuYXZp
Z2F0aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRpb25zKCk7CisgICAgLy8gRm9yIGJyaW5ndXAg
b2YgcHJvY2VzcyBzd2FwcGluZywgTmF2aWdhdGlvblN3YXAgdGVybWluYXRpb24gd2lsbCBub3Qg
Z28gb3V0IHRvIGNsaWVudHMuCisgICAgLy8gSWYgaXQgZG9lcyAqZHVyaW5nKiBwcm9jZXNzIHN3
YXBwaW5nLCBhbmQgdGhlIGNsaWVudCB0cmlnZ2VycyBhIHJlbG9hZCwgdGhhdCBjYXVzZXMgYml6
YXJyZSBXZWJLaXQgcmUtZW50cnkuCisgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgaGF2ZSB0byBj
aGFuZ2UKKyAgICBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdh
dGlvblN3YXApIHsKKyAgICAgICAgbmF2aWdhdGlvblN0YXRlKCkuY2xlYXJBbGxOYXZpZ2F0aW9u
cygpOwogCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5wcm9jZXNzRGlkVGVybWluYXRlKCp0aGlzLCByZWFzb24pOwotICAgIGVsc2UgaWYg
KHJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVlc3RlZEJ5Q2xpZW50KQot
ICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0aGlzKTsKKyAgICAgICAg
aWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
cHJvY2Vzc0RpZFRlcm1pbmF0ZSgqdGhpcywgcmVhc29uKTsKKyAgICAgICAgZWxzZSBpZiAocmVh
c29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpCisgICAg
ICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0aGlzKTsKKyAgICB9CiAK
ICAgICBpZiAobV9jb250cm9sbGVkQnlBdXRvbWF0aW9uKSB7CiAgICAgICAgIGlmIChhdXRvKiBh
dXRvbWF0aW9uU2Vzc2lvbiA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNz
aW9uKCkpCkBAIC01NzM3LDEwICs1NzkzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIAogICAgIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3I7CiAgICAgc3dpdGNoIChyZXNldFN0YXRlUmVhc29uKSB7CisgICAgY2Fz
ZSBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcDoKKyAgICAgICAgRkFMTFRIUk9VR0g7
CiAgICAgY2FzZSBSZXNldFN0YXRlUmVhc29uOjpQYWdlSW52YWxpZGF0ZWQ6CiAgICAgICAgIGVy
cm9yID0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZDsKICAgICAgICAg
YnJlYWs7Ci0KICAgICBjYXNlIFJlc2V0U3RhdGVSZWFzb246OldlYlByb2Nlc3NFeGl0ZWQ6CiAg
ICAgICAgIGVycm9yID0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZDsKICAgICAg
ICAgYnJlYWs7CkBAIC01NzYzLDEzICs1ODIwLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICNlbmRpZgogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCit2b2lkIFdl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gdGVybWluYXRpb25SZWFzb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybjsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAvLyBGSVhNRTogSXQncyB3
ZWlyZCB0aGF0IHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKSBpcyBjYWxsZWQgZXZlbiB0
aG91Z2ggdGhlIHByb2Nlc3MgaXMgbGF1bmNoaW5nLgotICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0
YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6TGF1bmNoaW5nIHx8IG1fcHJvY2Vzcy0+
c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKKyAgICBpZiAo
dGVybWluYXRpb25SZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9u
U3dhcCkKKyAgICAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJv
eHk6OlN0YXRlOjpMYXVuY2hpbmcgfHwgbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQ
cm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgbV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKQEAgLTU3ODYsNyArNTg0Niw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCkKIAogICAgIG1fcGFn
ZUNsaWVudC5wcm9jZXNzRGlkRXhpdCgpOwogCi0gICAgcmVzZXRTdGF0ZShSZXNldFN0YXRlUmVh
c29uOjpXZWJQcm9jZXNzRXhpdGVkKTsKKyAgICBhdXRvIHJlc2V0U3RhdGVSZWFzb24gPSB0ZXJt
aW5hdGlvblJlYXNvbiA9PSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2Fw
ID8gUmVzZXRTdGF0ZVJlYXNvbjo6TmF2aWdhdGlvblN3YXAgOiBSZXNldFN0YXRlUmVhc29uOjpX
ZWJQcm9jZXNzRXhpdGVkOworICAgIHJlc2V0U3RhdGUocmVzZXRTdGF0ZVJlYXNvbik7CiAKICAg
ICBtX3BhZ2VDbGllbnQuY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKICAgICBtX3BlbmRpbmdMZWFy
bk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGVmNDJhN2E4ZjQwLi4zOTBjMWNjMGQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzMDEsOSArMTMwMSwxMCBAQCBwcml2YXRlOgog
ICAgIGVudW0gY2xhc3MgUmVzZXRTdGF0ZVJlYXNvbiB7CiAgICAgICAgIFBhZ2VJbnZhbGlkYXRl
ZCwKICAgICAgICAgV2ViUHJvY2Vzc0V4aXRlZCwKKyAgICAgICAgTmF2aWdhdGlvblN3YXAsCiAg
ICAgfTsKICAgICB2b2lkIHJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbik7Ci0gICAgdm9pZCBy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCk7CisgICAgdm9pZCByZXNldFN0YXRlQWZ0ZXJQ
cm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICB2b2lkIHNldFVz
ZXJBZ2VudChTdHJpbmcmJik7CiAKQEAgLTE0MzcsOSArMTQzOCwxOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0Q2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKGJvb2wgY2FuU2hv
cnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKSB7IG1fY2FuU2hvcnRDaXJjdWl0SG9yaXpv
bnRhbFdoZWVsRXZlbnRzID0gY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzOyB9
CiAKICAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisgICAgdm9pZCBhdHRhY2hUb1By
b2Nlc3NGb3JOYXZpZ2F0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOworICAgIHZvaWQgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7CisKICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiByZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpOwogICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSopOwogCisgICAgZW51bSBjbGFzcyBOYXZpZ2F0aW9uUG9saWN5Q2hl
Y2sgeworICAgICAgICBSZXF1aXJlLAorICAgICAgICBCeXBhc3MsCisgICAgfTsKKyAgICB2b2lk
IGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24oQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGlvblBvbGljeUNoZWNrKTsKKwogICAgIHZvaWQg
cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRpcmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKTsKICAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCk7CkBAIC0xNjgxLDcgKzE2OTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29u
dGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciYsIHVpbnQ2NF90IGZyYW1lSUQpOwogI2VuZGlmCiAKLSAgICB1aW50
NjRfdCBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOwogICAgIEFQSTo6RGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQqIGVmZmVjdGl2ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CiAKICAgICB2b2lkIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwpAQCAtMTcy
Myw2ICsxNzMyLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVwb3J0UGFnZUxvYWRSZXN1bHQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgPSB7IH0pOwogCisgICAgdm9pZCBjb250aW51
ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJik7CisKICAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKIApAQCAtMTkxOSw2ICsxOTMwLDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFjdGlvbiB7IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlIH07CiAgICAgRG93
bmxvYWRJRCBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRCB7IDAgfTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IG1fc3luY05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9j
dXJyZW50TmF2aWdhdGlvblBvbGljeUxpc3RlbmVySUQgeyAwIH07CiAKICAgICBib29sIG1fc2hv
dWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7IGZhbHNl
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1
M2Y5OWZiZDc5Zi4uNTMzYWNiZTRjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTE5MTksNCArMTkxOSwxNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJv
eHkmCiAjZW5kaWYKIH0KIAorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgVVJMJiB0YXJnZXRV
UkwpCit7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
bigpKQorICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CisKKyAgICBhdXRvIHVybCA9IFVS
TCB7IFBhcnNlZFVSTFN0cmluZywgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfTsKKyAgICBp
ZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgdGFyZ2V0VVJMKSB8fCB1cmwuaXNC
bGFua1VSTCgpKQorICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CisKKyAgICByZXR1cm4g
Y3JlYXRlTmV3V2ViUHJvY2VzcyhwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggYjg5MjZlZDBjYmIuLmIzMWI0MDE5ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ0MSw2ICs0NDEsOCBAQCBwdWJsaWM6CiAgICAgQmFja2dy
b3VuZFdlYlByb2Nlc3NUb2tlbiBiYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKCkgY29uc3QgeyBy
ZXR1cm4gQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbihtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlci5jb3VudCgpKTsgfQogI2VuZGlmCiAKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm9j
ZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4
IGYyNGJiOWFhOTc4Li5mZDQ4MDRkY2JiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQyNSw4ICs0MjUsNiBA
QCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6On5TZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSgpCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlOjpzZXRBbGxvd2VkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGFsbG93ZWRDb25uZWN0
aW9uKQogewotICAgIEFTU0VSVCghYWxsb3dlZENvbm5lY3Rpb24gfHwgIW1fYWxsb3dlZENvbm5l
Y3Rpb24pOwotCiAgICAgbV9hbGxvd2VkQ29ubmVjdGlvbiA9IGFsbG93ZWRDb25uZWN0aW9uOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGRiMTJjOTdhNjI3Li40M2M3MmJjMDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEyNjAsNiArMTI2MCw3IEBAIHZvaWQgV2ViUGFnZTo6
bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCBs
b2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdyB9OwogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgZXh0ZXJuYWxV
UkxzUG9saWN5ID0gc3RhdGljX2Nhc3Q8U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeT4obG9h
ZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgZnJhbWVMb2Fk
UmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGV4dGVybmFsVVJMc1BvbGlj
eSk7CisgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3ko
bG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KTsKIAogICAgIGNvcmVQ
YWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVx
dWVzdCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZWYzZjIzNDc2OTIuLmNmOTM4NzIxODNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTgtMDMtMTUgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHBpZWNlIG9m
IHByb2Nlc3Mgc3dhcHBpbmcgb24gbmF2aWdhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzY2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSB0aGUgInN3YXBzIHByb2Nlc3NlcyBvbiBu
YXZpZ2F0aW9uIiBzZXR0aW5nIGluIE1pbmlCcm93c2VyIFVJIGZvciB0ZXN0aW5nOgorCisgICAg
ICAgICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAgIChkZWZhdWx0Q29u
ZmlndXJhdGlvbik6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxl
ci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubToKKyAg
ICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1lbnVdKToKKyAgICAgICAgKC1b
U2V0dGluZ3NDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6CisgICAgICAgICgtW1NldHRp
bmdzQ29udHJvbGxlciBwcm9jZXNzU3dhcE9uTmF2aWdhdGlvbkVuYWJsZWRdKToKKyAgICAgICAg
KC1bU2V0dGluZ3NDb250cm9sbGVyIHRvZ2dsZVByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uOl0pOgor
CisgICAgICAgIE1ha2VzIHN1cmUgdGhlIGN1cnJlbnQgYmVoYXZpb3IgaXMgdGVzdGVkOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtQU09OTmF2aWdhdGlvbkRlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bUFNPTlNjaGVt
ZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bUFNPTlNjaGVtZSB3
ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMTgtMDMt
MTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
UyBXSzJdIEhpdC10ZXN0aW5nIGZhaWxzIHdoZW4gc3BlY2lmeWluZyBhIGxhcmdlIHRvcCBjb250
ZW50IGluc2V0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUu
bSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCmluZGV4IDlmYjg2MDhmMjg0
Li42MWI5ZThiYjEwOSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVn
YXRlLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTk4LDYg
Kzk4LDggQEAgLSAodm9pZClhd2FrZUZyb21OaWIKICAgICAgICAgcHJvY2Vzc0NvbmZpZ3VyYXRp
b24uZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9ICFbU2V0dGluZ3NDb250
cm9sbGVyIHNoYXJlZF0ubmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25EaXNhYmxl
ZDsKICAgICAgICAgaWYgKFtTZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXS5wZXJXaW5kb3dXZWJQ
cm9jZXNzZXNEaXNhYmxlZCkKICAgICAgICAgICAgIHByb2Nlc3NDb25maWd1cmF0aW9uLm1heGlt
dW1Qcm9jZXNzQ291bnQgPSAxOworICAgICAgICBpZiAoW1NldHRpbmdzQ29udHJvbGxlciBzaGFy
ZWRdLnByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHByb2Nlc3ND
b25maWd1cmF0aW9uLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IHRydWU7CiAgICAgICAgIAog
ICAgICAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gW1tbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVh
c2VdOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9s
bGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKaW5kZXgg
NjE1ODFiMWFhZTEuLjhkYWQwNjRkY2QyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvU2V0dGluZ3NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRp
bmdzQ29udHJvbGxlci5oCkBAIC01OSw2ICs1OSw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBhbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgbG9hZHNBbGxTaXRlSWNvbnM7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3Jr
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIG5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgcHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25FbmFibGVkOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpkZWZhdWx0VVJMOwogCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KaW5kZXggOGNjZTE4MDY2YjIuLmQ2NGVmNDFm
MzZkIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVy
Lm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCkBAIC03
MCw2ICs3MCw3IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFBlcldpbmRvd1dlYlByb2Nl
c3Nlc0Rpc2FibGVkS2V5ID0gQCJQZXJXaW5kb3dXZWJQcm9jZXNzZXNEaXNhYmxlZCI7CiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRp
c2FibGVkS2V5ID0gQCJOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVk
IjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uS2V5ID0g
QCJQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbiI7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IERlYnVnT3ZlcnlsYXlNZW51SXRlbVRhZykgewogICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
T3ZlcmxheVRhZyA9IDEwMCwKQEAgLTE3OSw2ICsxODAsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1l
bnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkxvYWQgQWxsIFNpdGUgSWNvbnMgUGVy
LVBhZ2UiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlTG9hZHNBbGxTaXRlSWNvbnM6KSBpbmRlbnRl
ZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiVXNlIEdhbWVDb250cm9sbGVy
LmZyYW1ld29yayBvbiBtYWNPUyAoUmVzdGFydCByZXF1aXJlZCkiIGFjdGlvbjpAc2VsZWN0b3Io
dG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOikgaW5kZW50ZWQ6WUVTXTsKICAgICBb
c2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkRpc2FibGUgbmV0d29yayBjYWNoZSBzcGVjdWxhdGl2
ZSByZXZhbGlkYXRpb24iIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb25EaXNhYmxlZDopIGluZGVudGVkOllFU107CisgICAgW3NlbGYgX2Fk
ZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUHJvY2VzcyBTd2FwIG9uIE5hdmlnYXRpb24iIGFjdGlv
bjpAc2VsZWN0b3IodG9nZ2xlUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb246KSBpbmRlbnRlZDpZRVNd
OwogCiAgICAgTlNNZW51SXRlbSAqZGVidWdPdmVybGF5c1N1Ym1lbnVJdGVtID0gW1tOU01lbnVJ
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVidWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwga2V5
RXF1aXZhbGVudDpAIiJdOwogICAgIE5TTWVudSAqZGVidWdPdmVybGF5c01lbnUgPSBbW05TTWVu
dSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIl07CkBAIC0yNzAsNiArMjcy
LDggQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KICAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29y
a10gPyBOU0NvbnRyb2xTdGF0ZVZhbHVlT24gOiBOU0NvbnRyb2xTdGF0ZVZhbHVlT2ZmXTsKICAg
ICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZU5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWQ6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltz
ZWxmIG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWRdID8gTlNDb250
cm9sU3RhdGVWYWx1ZU9uIDogTlNDb250cm9sU3RhdGVWYWx1ZU9mZl07CisgICAgZWxzZSBpZiAo
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbjopKQorICAg
ICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgcHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25FbmFi
bGVkXSA/IE5TQ29udHJvbFN0YXRlVmFsdWVPbiA6IE5TQ29udHJvbFN0YXRlVmFsdWVPZmZdOwog
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVXNlVUlTaWRlQ29tcG9zaXRp
bmc6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIHVzZVVJU2lkZUNvbXBvc2l0
aW5nXSA/IE5TQ29udHJvbFN0YXRlVmFsdWVPbiA6IE5TQ29udHJvbFN0YXRlVmFsdWVPZmZdOwog
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlUGVyV2luZG93V2ViUHJvY2Vz
c2VzRGlzYWJsZWQ6KSkKQEAgLTQ4NSw2ICs0ODksMTYgQEAgLSAodm9pZCl0b2dnbGVOZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVkOihpZClzZW5kZXIKICAgICBbc2Vs
ZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRp
b25EaXNhYmxlZEtleV07CiB9CiAKKy0gKEJPT0wpcHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25FbmFi
bGVkCit7CisgICAgcmV0dXJuIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IGJvb2xGb3JLZXk6UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25LZXldOworfQorCistICh2b2lkKXRv
Z2dsZVByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdG9n
Z2xlQm9vbGVhbkRlZmF1bHQ6UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25LZXldOworfQorCiAtIChC
T09MKWlzU3BhY2VSZXNlcnZlZEZvckJhbm5lcnMKIHsKICAgICByZXR1cm4gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpSZXNlcnZlU3BhY2VGb3JCYW5u
ZXJzUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzOTQ4ODUwY2Mw
Li5kZjhmZWY5ZWM5MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4Myw2ICsxODMsNyBA
QAogCQk1MTcxNEVCODFDRjhDQTE3MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVw
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRF
QjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLzsgfTsK
IAkJNTE3RTdFMDQxNTExMTlDMTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0U3RTAzMTUxMTE4NzUwMEQwQjAwOCAvKiBNZW1vcnlDYWNo
ZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJNTE4MkMyMkUx
RjJCQ0U1NDAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjJEMUYyQkNCNDEwMDU5
QkE3QyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0gKi87IH07CisJCTUxOEMxMTUzMjA1
QjA1MDQwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEMxMTUyMjA1QjA0RjkwMDFGRjRB
RSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSAqLzsgfTsKIAkJNTE5OEEyNDAxRUE3RTU5
RjAwODkxMEI3IC8qIEluaXRpYWxXYXJtZWRQcm9jZXNzVXNlZC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOThBMjNGMUVBN0U1OTUwMDg5MTBCNyAv
KiBJbml0aWFsV2FybWVkUHJvY2Vzc1VzZWQubW0gKi87IH07CiAJCTUxQTU4NzdEMUQxQjQ5Q0Qw
MDRCQTlBRiAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU4NzdDMUQxQjNEOEQwMDRC
QTlBRiAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMy5odG1sICovOyB9OwogCQk1MUE1ODc4NTFE
MjczOUUzMDA0QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC0xLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTg3
ODIxRDI3MkVCNTAwNEJBOUFGIC8qIEluZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwtMS5odG1s
ICovOyB9OwpAQCAtMTM2MCw2ICsxMzYxLDcgQEAKIAkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4
IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
RTdFMDMxNTExMTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVQ
cnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxODJDMjJEMUYyQkNCNDEwMDU5QkE3QyAvKiBXS1VSTFNjaGVtZUhhbmRsZXIt
bGVha3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSAiV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtz
Lm1tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4QzExNTIyMDVCMDRGOTAwMUZG
NEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxOThBMjNGMUVBN0U1OTUwMDg5MTBCNyAvKiBJbml0aWFsV2Fy
bWVkUHJvY2Vzc1VzZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBJbml0aWFsV2FybWVkUHJvY2Vzc1VzZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQTU4NzdDMUQxQjNEOEQwMDRCQTlBRiAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0z
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1ODc4MjFEMjcyRUI1MDA0
QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC0xLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC0xLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE2OSw2ICsyMTcxLDcgQEAKIAkJCQk4M0JB
RUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLAog
CQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAqLywKIAkJCQk3
QzFBRjc5MzFFOERDQkFCMDAyNjQ1QjkgLyogUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbSAqLywK
KwkJCQk1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0gKi8sCiAJCQkJNTc5OEUyQUYxQ0FGNUMyODAwQzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90
Q2hhbmdlLm1tICovLAogCQkJCUExQzRGQjZDMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2su
bW0gKi8sCiAJCQkJMUE0RjgxRDAxQkRGRkRDRjAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lz
dHJ5LmggKi8sCkBAIC0zNzI0LDYgKzM3MjcsNyBAQAogCQkJCTdDQ0U3RjJGMUE0MTFCMTAwMDQ0
N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDRTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxOEMxMTUzMjA1QjA1MDQw
MDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEODM4QjFGMUVFRjNBNUMwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzBDRTIyQTFGNTczNDM0MDBFNzQxMEIgLyogV0tDb250
ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRDEyNDk4MUU3
NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmY0YjFlMDdjYjgxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMCww
ICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
TmF2aWdhdGlvbkRlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1l
VGFza1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9I
YXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29sIGRvbmU7Citz
dGF0aWMgaW50IG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHM7CisKK0BpbnRlcmZhY2UgUFNPTk5h
dmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFBTT05OYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24KK3sKKyAgICBkb25lID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgICsr
bnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxsczsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgUFNPTlNjaGVt
ZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKK30KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFBTT05TY2hlbWUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIFJl
dGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XV07CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNr
Cit7Cit9CisKK0BlbmQKKworVEVTVChQcm9jZXNzU3dhcCwgQmFzaWMpCit7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0
KCldOworICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05T
Y2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04xIl07CisgICAgW3dl
YlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JV
UkxTY2hlbWU6QCJQU09OMiJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJwc29uMTovL2hvc3QvbWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBwaWQxID0gW3dlYlZpZXcgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjE6Ly9ob3N0L21haW4yLmh0bWwi
XV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlk
MiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICByZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb24yOi8v
aG9zdC9tYWluMi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7
CisKKyAgICBhdXRvIHBpZDMgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisg
ICAgRVhQRUNUX0VRKHBpZDEsIHBpZDIpOworICAgIEVYUEVDVF9GQUxTRShwaWQyID09IHBpZDMp
OworCisgICAgLy8gMyBsb2FkcywgMyBkZWNpZGVQb2xpY3kgY2FsbHMgKGUuZy4gdGhlIGxvYWQg
dGhhdCBkaWQgcGVyZm9ybSBhIHByb2Nlc3Mgc3dhcCBzaG91bGQgbm90IGhhdmUgZ2VuZXJhdGVk
IGFuIGFkZGl0aW9uYWwgZGVjaWRlUG9saWN5IGNhbGwpCisgICAgRVhQRUNUX0VRKG51bWJlck9m
RGVjaWRlUG9saWN5Q2FsbHMsIDMpOworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>
<flag name="review"
          id="354483"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336164</attachid>
            <date>2018-03-20 16:20:45 -0700</date>
            <delta_ts>2018-03-20 17:06:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>57537</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNGViZTVmYjU4ZC4uZGQ0ZDIyMTIwODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOC0wMy0yMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgRmlyc3QgcGllY2Ugb2YgcHJvY2VzcyBzd2FwcGluZyBvbiBuYXZpZ2F0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5
IEFQSSB0ZXN0KHMpCisKKyAgICAgICAgVGhpcyBwYXRjaDoKKyAgICAgICAgLSBBIG5ldyBQb2xp
Y3lBY3Rpb246OlN1c3BlbmQgZm9yIGZ1dHVyZSB1c2UgaW4gdGhpcyBmZWF0dXJlCisgICAgICAg
IC0gTWFrZXMgc3VyZSB0aGF0IGxvYWRzIHRyaWdnZXJlZCBhcyBwYXJ0IG9mIGEgcHJvY2VzcyBz
d2FwIGRvICpub3QqIHJlLWNvbnN1bHQgdGhlIHBvbGljeSBkZWxlZ2F0ZQorCisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeSk6CisKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdDo6c2V0
U2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZFJlcXVlc3Q6OnNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSBjb25zdCk6CisKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRM
b2FkZXIpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorCisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDogQWRkIGEgbmV3IFBvbGljeSB0eXBlICJTdXNwZW5kIiB0
byBiZSB1c2VkIGluIHRoZSBmdXR1cmUKKyAgICAgICAgICBieSB0aGUgcHJvY2Vzcy1zd2FwLW9u
LW5hdmlnYXRpb24gbWVjaGFuaXNtLgorCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9s
aWN5KToKKwogMjAxOC0wMy0yMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gVXBkYXRlIHRoZSB0aW1pbmcgbW9kZWwgd2hlbiBw
ZW5kaW5nIHRhc2tzIHNjaGVkdWxlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCmluZGV4IDQ2NjAzMGQ5YTAxLi5mYzExOGRjNDU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04OTYsNiArODk2LDkgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBv
bGljeSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlc291cmNlTG9hZGVyKj4obWFpblJlc291
cmNlTG9hZGVyKCkpLT5kaWRGYWlsKGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3BlbmQ6
CisgICAgICAgIC8vIEl0IGlzIGludmFsaWQgdG8gZ2V0IGEgU3VzcGVuZCBwb2xpY3kgYmFzZWQg
b24gbmF2aWdhdGlvbiByZXNwb25zZS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgogICAgICAgICBpZiAoUmVzb3Vy
Y2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRlcigp
KQogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xp
Y3lJZ25vcmUoKm1fZnJhbWUsIG1haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpLCAqdGhp
cywgbV9yZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaApp
bmRleCA4NTdiMDM1NTkxNC4uMjg0OGRjOTQ4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZFJlcXVlc3QuaApAQCAtNjAsNiArNjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
aG91bGRDaGVja05ld1dpbmRvd1BvbGljeShib29sIGNoZWNrUG9saWN5KSB7IG1fc2hvdWxkQ2hl
Y2tOZXdXaW5kb3dQb2xpY3kgPSBjaGVja1BvbGljeTsgfQogICAgIGJvb2wgc2hvdWxkQ2hlY2tO
ZXdXaW5kb3dQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENoZWNrTmV3V2luZG93UG9s
aWN5OyB9CiAKKyAgICB2b2lkIHNldFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeShib29sIGNo
ZWNrUG9saWN5KSB7IG1fc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5ID0gY2hlY2tQb2xpY3k7
IH0KKyAgICBib29sIHNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5OyB9CisKICAgICBjb25zdCBTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhOyB9
CiAgICAgdm9pZCBzZXRTdWJzdGl0dXRlRGF0YShjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkg
eyBtX3N1YnN0aXR1dGVEYXRhID0gZGF0YTsgfQogICAgIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEo
KSB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKTsgfQpAQCAtODksNiArOTIsNyBA
QCBwcml2YXRlOgogICAgIFN1YnN0aXR1dGVEYXRhIG1fc3Vic3RpdHV0ZURhdGE7CiAKICAgICBi
b29sIG1fc2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3kgeyBmYWxzZSB9OworICAgIGJvb2wgbV9z
aG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgeyB0cnVlIH07CiAgICAgTG9ja0hpc3RvcnkgbV9s
b2NrSGlzdG9yeTsKICAgICBMb2NrQmFja0ZvcndhcmRMaXN0IG1fbG9ja0JhY2tGb3J3YXJkTGlz
dDsKICAgICBTaG91bGRTZW5kUmVmZXJyZXIgbV9zaG91bGRTZW5kUmVmZXJyZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxNmIxNTI1NDM3OC4uNjFkMTIyMzg5NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTIzLDYgKzEyMyw3IEBA
CiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0
ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTQwMyw2ICsx
NDA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVz
dCkKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3Vt
ZW50TG9hZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Quc3Vic3RpdHV0ZURh
dGEoKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVu
dExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIHJlcXVlc3QpOwogCisgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gY3VycmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3lHdWFyZChtX2N1cnJlbnRM
b2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5LCByZXF1ZXN0LnNob3VsZENoZWNrTmF2aWdh
dGlvblBvbGljeSgpKTsKICAgICBsb2FkKGxvYWRlci5wdHIoKSk7CiB9CiAKQEAgLTE1MzgsNiAr
MTU0MCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogCiAgICAgbV9mcmFtZS5uYXZpZ2F0
aW9uU2NoZWR1bGVyKCkuY2FuY2VsKHRydWUpOwogCisgICAgaWYgKCFtX2N1cnJlbnRMb2FkU2hv
dWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KSB7CisgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCB0cnVlLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcG9s
aWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgbG9h
ZGVyLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSks
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0
aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBib29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAg
IGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIHNo
b3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAyM2Y0
NzU0NDk4Ny4uOGU0Yjk1ZWIxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC00NjEsNiArNDYxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nOwogICAgIHN0
ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQ
cmlvcml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0
aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY3VycmVu
dExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kgeyB0cnVlIH07CiAKICAgICBVUkwgbV9w
cmV2aW91c1VSTDsKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcmVxdWVzdGVkSGlzdG9yeUl0
ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAppbmRleCAwYTQ3MTgw
YjgwNC4uNTliNmE2MjNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlw
ZXMuaApAQCAtNDEsNyArNDEsOCBAQCBlbnVtIEZyYW1lU3RhdGUgewogZW51bSBjbGFzcyBQb2xp
Y3lBY3Rpb24gewogICAgIFVzZSwKICAgICBEb3dubG9hZCwKLSAgICBJZ25vcmUKKyAgICBJZ25v
cmUsCisgICAgU3VzcGVuZCwKIH07CiAKIGVudW0gY2xhc3MgUmVsb2FkT3B0aW9uIHsKQEAgLTE1
OCw3ICsxNTksOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBvbGlj
eUFjdGlvbj4gewogICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sCiAgICAgICAgIFdlYkNv
cmU6OlBvbGljeUFjdGlvbjo6VXNlLAogICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OkRv
d25sb2FkLAotICAgICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZQorICAgICAgICBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwKKyAgICAgICAgV2ViQ29yZTo6UG9saWN5QWN0
aW9uOjpTdXNwZW5kCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAppbmRleCAxN2MwZjRjMzNjNi4uMjY1MGRmNmE0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTE1OSw2ICsxNTksOSBAQCB2b2lkIFBvbGljeUNo
ZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBi
b29sIGRpZFJlYwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgUG9saWN5
QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRy
LCBmYWxzZSk7CisgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgorICAgICAgICAg
ICAgTE9HKExvYWRpbmcsICJQb2xpY3lBY3Rpb246OlN1c3BlbmQgZW5jb3VudGVyZWQgLSBUcmVh
dGluZyBhcyBQb2xpY3lBY3Rpb246Oklnbm9yZSBmb3Igbm93Iik7CisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpVc2U6CiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2Fu
SGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVt
ZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJv
cihyZXF1ZXN0KSk7CkBAIC0xODYsNiArMTg5LDkgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlvbiwgY28K
ICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgICAgIGZ1bmN0aW9u
KHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3BlbmQ6CisgICAgICAgICAgICAvLyBJdCBpcyBp
bnZhbGlkIHRvIGdldCBhICJTdXNwZW5kIiBwb2xpY3kgZm9yIG5ldyB3aW5kb3dzLCBhcyB0aGUg
b2xkIGRvY3VtZW50IGlzIG5vdCBnb2luZyBhd2F5LgorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVzZToKICAgICAg
ICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBuYXZp
Z2F0aW9uQWN0aW9uLCB0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2Ji
NGFhNWRiMDcuLmE0NzA4MWJkMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE4LTAz
LTIwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXJzdCBw
aWVjZSBvZiBwcm9jZXNzIHN3YXBwaW5nIG9uIG5hdmlnYXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM2NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgZmlyc3QgcGll
Y2VzIG9mIHRoZSBmb2xsb3dpbmcgZmVhdHVyZToKKyAgICAgICAgIldoZW4gYSBuYXZpZ2F0aW9u
IG9yaWdpbmF0aW5nIGluc2lkZSBhIFdLV2ViVmlldyBnb2VzIHRvIGEgZGlmZmVyZW50IG9yaWdp
biwKKyAgICAgICAgIHN3YXAgdG8gYSBuZXcgV2ViUHJvY2VzcyBmb3IgdGhhdCBuYXZpZ2F0aW9u
IgorCisgICAgICAgIFRoZXJlIGFyZSBzaWduaWZpY2FudCBidWdzIHRvIGJlIHJlc29sdmVkIGFu
ZCBzaWduaWZpY2FudCBvcHRpbWl6YXRpb25zIHRvIGJlIG1hZGUuCisgICAgICAgIFdoaWNoIGlz
IHdoeSB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgIEJlc2lk
ZXMgdGhlIGNvcmUgbG9naWMgaW1wbGVtZW50aW5nIHRoZSBmZWF0dXJlLCB0aGlzIHBhdGNoIGRv
ZXMgYSBsb3Qgb2YgcmVsYXRlZCAKKyAgICAgICAgd29yayBzdWNoIGFzOgorICAgICAgICAtIFJl
bW92aW5nIHNvbWUgbm93LWludmFsaWQgQVNTRVJUcworICAgICAgICAtIEFkZGluZyBzb21lIEFT
U0VSVHMKKyAgICAgICAgLSBVcGRhdGUgdmFyaW91cyBzd2l0Y2ggc3RhdGVzIHRvIGhhbmRsZSB0
aGUgbmV3ICJTdXNwZW5kIiBwb2xpY3kgYW5kICJOYXZpZ2F0aW9uU3dhcCIKKyAgICAgICAgICBw
cm9jZXNzIHRlcm1pbmF0aW9uIHJlYXNvbgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhcHR1cmU6Ok5ldHdvcmtEYXRhVGFza1JlcGxheTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgICh0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24pOgorCisgICAg
ICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorCisgICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorCisgICAgICAgICogU2hhcmVkL1Byb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbi5oOiBBZGQgIk5hdmlnYXRpb25Td2FwIiBhcyBhIHByb2Nlc3MgdGVybWluYXRp
b24gcmVhc29uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6
CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJ
KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAg
ICAgIChXZWJLaXQ6OndrUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6cG9saWN5TGlzdGVu
ZXJUeXBlIGNvbnN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YWN0aXZlUG9saWN5TGlzdGVuZXJQ
cm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJO
YXZpZ2F0aW9uU3RhdGU6Om5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uU3RhdGU6OnRha2VOYXZpZ2F0aW9uKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdHRhY2hUb1Byb2Nlc3NG
b3JOYXZpZ2F0aW9uKTogUHJldGVuZCB0aGF0IHRoZSBleGlzdGluZyBwcm9jZXNzIAorICAgICAg
ICAgIHRlcm1pbmF0ZWQgdXNpbmcgdGhlIG5ldyAiTmF2aWdhdGlvblN3YXAiIHJlYXNvbiwgdGhl
biBtYW51YWxseSBzdGFydCB0aGUgbmV4dCBsb2FkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24pOiBE
ZXRlcm1pbmUgd2hpY2ggcHJvY2VzcyBzaG91bGQgYmUgdXNlZAorICAgICAgICAgIGZvciBhIHBy
b3Bvc2VkIG5hdmlnYXRpb24sIGNyZWF0aW5nIGEgbmV3IG9uZSBpZiBuZWNlc3NhcnkuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6c2V0QWxsb3dlZENvbm5lY3Rpb24pOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisKIDIwMTgtMDMtMjAgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuZCBhZG9wdCBXS19QTEFU
Rk9STV9OQU1FIGFuZCBhZGp1c3QgZGVmYXVsdCBmZWF0dXJlIGRlZmluZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4
IDU2YTk5MjgzMjUzLi41YWE1ZTBjMmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC0zMTcsNiArMzE3LDkgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShFcnJv
ciBlcnJvckNvZGUpCiAgICAgICAgICAgICBtX2J1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CiAg
ICAgICAgICAgICByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQb2xp
Y3lBY3Rpb246OlN1c3BlbmQ6CisgICAgICAgICAgICBMT0dfRVJST1IoIlBvbGljeUFjdGlvbjo6
U3VzcGVuZCBlbmNvdW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGljeUFjdGlvbjo6SWdub3JlIGZv
ciBub3ciKTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFBvbGljeUFj
dGlvbjo6SWdub3JlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpEb3dubG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtEYXRhVGFza1JlcGxheS5jcHAKaW5kZXggZjNhNjVlZDc5
YWQuLjY2ODBiYjM2MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcApAQCAtMjUyLDYg
KzI1Miw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrUmVwbGF5OjpkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
UG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBlbnF1ZXVlRXZlbnRIYW5kbGVyKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlN1
c3BlbmQ6CisgICAgICAgICAgICBMT0dfRVJST1IoIlBvbGljeUFjdGlvbjo6U3VzcGVuZCBlbmNv
dW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGljeUFjdGlvbjo6SWdub3JlIGZvciBub3ciKTsKKyAg
ICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlv
bjo6SWdub3JlOgogICAgICAgICAgICAgY29tcGxldGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDNmNzYwOTM1YTc2Li44NTgyZjgyMWMzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQpAQCAtNjIsNiArNjIsOSBAQCBAZW5kCiBzdGF0aWMgTlNVUkxTZXNzaW9uUmVz
cG9uc2VEaXNwb3NpdGlvbiB0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24oV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIGRpc3Bvc2l0aW9uKQogewogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24p
IHsKKyAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6U3VzcGVuZDoKKyAgICAgICAgTE9H
X0VSUk9SKCJQb2xpY3lBY3Rpb246OlN1c3BlbmQgZW5jb3VudGVyZWQgLSBUcmVhdGluZyBhcyBQ
b2xpY3lBY3Rpb246Oklnbm9yZSBmb3Igbm93Iik7CisgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgIHJldHVybiBOU1VS
TFNlc3Npb25SZXNwb25zZUNhbmNlbDsKICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA0NzU0YTU4ZmY2ZC4uZjYxMzljNDIy
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01MCw2ICs1MCw3IEBAIGV4dGVybiAi
QyIgewogICAgIE0oSVBDKSBcCiAgICAgTShLZXlIYW5kbGluZykgXAogICAgIE0oTGF5ZXJzKSBc
CisgICAgTShMb2FkaW5nKSBcCiAgICAgTShOZXR3b3JrKSBcCiAgICAgTShOZXR3b3JrQ2FjaGUp
IFwKICAgICBNKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZykgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDliZmQ5Y2I2MzE3Li5hNjc5MWVmYTA3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNDgsNiArNDgs
NyBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgdW5yZWFjaGFibGVVUkxTdHJpbmc7CiAgICAgZW5jb2RlciA8
PCBwcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZzsKICAgICBlbmNvZGVyIDw8IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgZW5jb2RlciA8PCBzaG91bGRDaGVja05hdmlnYXRp
b25Qb2xpY3k7CiAgICAgZW5jb2RlciA8PCB1c2VyRGF0YTsKIAogICAgIHBsYXRmb3JtRW5jb2Rl
KGVuY29kZXIpOwpAQCAtMTAyLDYgKzEwMyw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNob3VsZENo
ZWNrTmF2aWdhdGlvblBvbGljeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS51c2VyRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggZDkyNjE3NWZkNGMuLjg0MDJk
ZGM4NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTYyLDYgKzYy
LDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxMb2Fk
RXJyb3JVUkxTdHJpbmc7CiAKICAgICB1aW50NjRfdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OworICAgIGJvb2wgc2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5IHsgdHJ1ZSB9OwogICAg
IFVzZXJEYXRhIHVzZXJEYXRhOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oCmluZGV4IDZhMWY0OTJlYzRm
Li42ZTAzNTI3YjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uLmgKQEAgLTMxLDcgKzMxLDggQEAgZW51bSBjbGFzcyBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24gewogICAgIEV4Y2VlZGVkTWVtb3J5TGltaXQsCiAgICAgRXhjZWVkZWRDUFVM
aW1pdCwKICAgICBSZXF1ZXN0ZWRCeUNsaWVudCwKLSAgICBDcmFzaAorICAgIENyYXNoLAorICAg
IE5hdmlnYXRpb25Td2FwLAogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmgKaW5kZXggZjQ3MGM4MjFjYjcuLjQ0ZmY1MGNjNjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIE5hdmln
YXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb24+IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXZpZ2F0aW9uKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUp
CiAgICAgewpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgTmF2aWdhdGlvbihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYpOwotICAgIGV4cGxpY2l0
IE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7CisgICAgTmF2aWdhdGlvbihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlv
bklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uY3BwCmluZGV4IGU5Njk0MDZiN2ZjLi4wOTM0YmEzMDY5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAKQEAgLTEyNyw2ICsxMjcsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
PiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fY3REYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlID0gdGhpcy0+bV9jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CiAjZW5kaWYKICAgICBjb3B5LT5tX3ByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCA9IHRoaXMtPm1f
cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEOworICAgIGNvcHktPm1fcHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb247CiAKICAgICByZXR1cm4g
Y29weTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXgg
M2I2YmMzMDhkMWMuLjc5NmRkN2MzNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FQSUNhc3QuaApAQCAtMjM2LDYgKzIzNiwxMCBAQCBpbmxpbmUgV0tQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24gdG9BUEkoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAgICAg
ICAgcmV0dXJuIGtXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbkV4Y2VlZGVkTWVtb3J5TGltaXQ7
CiAgICAgY2FzZSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQ6CiAg
ICAgICAgIHJldHVybiBrV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25FeGNlZWRlZENQVUxpbWl0
OworICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcDoKKyAg
ICAgICAgLy8gV2UgcHJvYmFibHkgc2hvdWxkbid0IGJvdGhlciBjb21pbmcgdXAgd2l0aCBhIG5l
dyBDLUFQSSB0eXBlIGZvciBwcm9jZXNzLXN3YXBwaW5nLgorICAgICAgICAvLyAiUmVxdWVzdGVk
IGJ5IGNsaWVudCIgc2VlbXMgbGlrZSB0aGUgYmVzdCBtYXRjaCBmb3IgZXhpc3RpbmcgdHlwZXMu
CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
OjpSZXF1ZXN0ZWRCeUNsaWVudDoKICAgICAgICAgcmV0dXJuIGtXS1Byb2Nlc3NUZXJtaW5hdGlv
blJlYXNvblJlcXVlc3RlZEJ5Q2xpZW50OwogICAgIGNhc2UgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOjpDcmFzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQppbmRleCBjNWUzOTQ1MjRjNC4uNmU3OGUyMmVkMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTk2Miw2ICs5
NjIsMTAgQEAgc3RhdGljIF9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB3a1Byb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbihQcm9jZXNzVGVybWluYXRpb24KICAgICAgICAgcmV0dXJuIF9XS1Byb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbkV4Y2VlZGVkTWVtb3J5TGltaXQ7CiAgICAgY2FzZSBQcm9jZXNz
VGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQ6CiAgICAgICAgIHJldHVybiBfV0tQ
cm9jZXNzVGVybWluYXRpb25SZWFzb25FeGNlZWRlZENQVUxpbWl0OworICAgIGNhc2UgUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcDoKKyAgICAgICAgLy8gV2UgcHJvYmFi
bHkgc2hvdWxkbid0IGJvdGhlciBjb21pbmcgdXAgd2l0aCBhIG5ldyBBUEkgdHlwZSBmb3IgcHJv
Y2Vzcy1zd2FwcGluZy4KKyAgICAgICAgLy8gIlJlcXVlc3RlZCBieSBjbGllbnQiIHNlZW1zIGxp
a2UgdGhlIGJlc3QgbWF0Y2ggZm9yIGV4aXN0aW5nIHR5cGVzLgorICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQ6
CiAgICAgICAgIHJldHVybiBfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25SZXF1ZXN0ZWRCeUNs
aWVudDsKICAgICBjYXNlIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2g6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
LmNwcAppbmRleCBhYThmYmNkODkzYy4uYTgzNjcxMmVjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcApAQCAt
MzIsOCArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkoV2ViRnJhbWVQcm94eSogZnJh
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCitXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6Oldl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5TGlzdGVuZXJUeXBlIHBvbGljeVR5cGUpCiAgICAgOiBXZWJGcmFt
ZUxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQpCisgICAgLCBtX3BvbGljeVR5cGUocG9s
aWN5VHlwZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAppbmRleCAwM2M4M2YyNjFhYy4uODk5MDcxODNiZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oCkBAIC0zNSwyNyArMzUsMzcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2VudW0gY2xhc3MgUG9saWN5TGlzdGVuZXJUeXBlIHsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uLAor
ICAgIE5ld1dpbmRvd0FjdGlvbiwKKyAgICBSZXNwb25zZSwKK307CisKIGNsYXNzIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSA6IHB1YmxpYyBXZWJGcmFtZUxpc3RlbmVyUHJveHkgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlOjpGcmFtZVBvbGljeUxp
c3RlbmVyOwogCi0gICAgc3RhdGljIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGNy
ZWF0ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBzdGF0
aWMgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lMaXN0ZW5lclR5cGUgcG9saWN5VHlw
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eShmcmFtZSwgbGlzdGVuZXJJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQsIHBvbGlj
eVR5cGUpKTsKICAgICB9CiAKICAgICB2b2lkIHVzZShzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYpOwogICAgIHZvaWQgZG93bmxvYWQoKTsKICAgICB2b2lkIGlnbm9yZSgpOwog
CisgICAgUG9saWN5TGlzdGVuZXJUeXBlIHBvbGljeUxpc3RlbmVyVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9saWN5VHlwZTsgfQorCiBwcml2YXRlOgotICAgIFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eShXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBQb2xpY3lMaXN0ZW5lclR5cGUpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQVBJVHlwZTsgfQogCiAjaWYgREVMRUdBVEVfUkVGX0NPVU5USU5HX1RPX0NPQ09B
CiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiBuZXdPYmplY3Qo
c2l6ZSwgQVBJVHlwZSk7IH0KICNlbmRpZgorCisgICAgUG9saWN5TGlzdGVuZXJUeXBlIG1fcG9s
aWN5VHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBiYzNhODc4ZTI0ZC4uNmQ0MmFhYjdmM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0xODcsMTQgKzE4
NywyMiBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZQogICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihhY3Rpb24sICp0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uLCBXVEZNb3Zl
KGRhdGEpKTsKIH0KIAotV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBXZWJGcmFtZVByb3h5
OjpzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0X3QgbGlzdGVuZXJJRCkKK1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclBy
b3h5KHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUxpc3RlbmVyVHlwZSBwb2xpY3lMaXN0ZW5l
clR5cGUpCiB7CiAgICAgaWYgKG1fYWN0aXZlTGlzdGVuZXIpCiAgICAgICAgIG1fYWN0aXZlTGlz
dGVuZXItPmludmFsaWRhdGUoKTsKLSAgICBtX2FjdGl2ZUxpc3RlbmVyID0gV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5OjpjcmVhdGUodGhpcywgbGlzdGVuZXJJRCk7CisgICAgbV9hY3RpdmVM
aXN0ZW5lciA9IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6Y3JlYXRlKHRoaXMsIGxpc3Rl
bmVySUQsIHBvbGljeUxpc3RlbmVyVHlwZSk7CiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkqPihtX2FjdGl2ZUxpc3RlbmVyLmdldCgpKTsKIH0KIAor
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBXZWJGcmFtZVByb3h5OjphY3RpdmVQb2xpY3lM
aXN0ZW5lclByb3h5KCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlTGlzdGVuZXIgfHwgbV9hY3RpdmVM
aXN0ZW5lci0+dHlwZSgpICE9IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6QVBJVHlwZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5Kj4obV9hY3RpdmVMaXN0ZW5lci5nZXQoKSk7Cit9CisKIHZv
aWQgV2ViRnJhbWVQcm94eTo6Y2hhbmdlV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIGlmICghbV9wYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGYzYTFiMDNhMmVlLi40YmUzMzAwMWIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQCBj
bGFzcyBXZWJDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOworZW51bSBj
bGFzcyBQb2xpY3lMaXN0ZW5lclR5cGU7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKIAog
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxiYWNrOwpAQCAtMTE2
LDcgKzExNywxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBQb2xpY3kgb3BlcmF0aW9ucy4KICAgICB2
b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYpOwotICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgc2V0VXBQb2xp
Y3lMaXN0ZW5lclByb3h5KHVpbnQ2NF90IGxpc3RlbmVySUQpOworCisgICAgV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0X3QgbGlzdGVu
ZXJJRCwgUG9saWN5TGlzdGVuZXJUeXBlKTsKKyAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkqIGFjdGl2ZVBvbGljeUxpc3RlbmVyUHJveHkoKTsKKwogICAgIHZvaWQgY2hhbmdlV2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9u
U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNw
cAppbmRleCA5ZDk3YmRkNWZjMC4uNDhmOTM0NTllOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcApAQCAtNzksMTMgKzc5LDE1IEBAIFJlZjxB
UEk6Ok5hdmlnYXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZERhdGFOYXZpZ2F0
aW9uKCkKIEFQSTo6TmF2aWdhdGlvbiYgV2ViTmF2aWdhdGlvblN0YXRlOjpuYXZpZ2F0aW9uKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKIHsKICAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKLSAgICAK
KyAgICBBU1NFUlQobV9uYXZpZ2F0aW9ucy5jb250YWlucyhuYXZpZ2F0aW9uSUQpKTsKKwogICAg
IHJldHVybiAqbV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKTsKIH0KIAogUmVmPEFQSTo6
TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjp0YWtlTmF2aWdhdGlvbih1aW50NjRfdCBu
YXZpZ2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgQVNTRVJUKG1f
bmF2aWdhdGlvbnMuY29udGFpbnMobmF2aWdhdGlvbklEKSk7CiAgICAgCiAgICAgcmV0dXJuIG1f
bmF2aWdhdGlvbnMudGFrZShuYXZpZ2F0aW9uSUQpLnJlbGVhc2VOb25OdWxsKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxOTdiNDY2NDlkZi4uMzk4
NDcwYjNmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NjM4LDE2ICs2MzgsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKK3sKKyAgICBhdXRvIHByb2Nlc3MgPSBt
YWtlUmVmKG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVj
dGluZ1Byb2Nlc3NDb3VudExpbWl0KG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSkpOworICAgIHJl
YXR0YWNoVG9XZWJQcm9jZXNzKFdURk1vdmUocHJvY2VzcykpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MpCit7CisgICAgLy8gRklYTUU6IElmIHRoaXMgV2ViUGFnZVByb3h5IGlzIHRoZSBv
bmx5IG9uZSBob3N0ZWQgaW4gaXRzIFdlYlByb2Nlc3MsIGRvZXMgdGhpcyBtYWtlIGl0IGdvIGF3
YXk/CisgICAgLy8gV2UgbmVlZCB0byBiZSBwcmVwYXJlZCB0byByZXVzZSBpdCBsYXRlci4KKyAg
ICBwcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlv
blN3YXApOworCisgICAgLy8gRklYTUU6IHRoaXMgaXMgdG8gZml4IHRoZSBBU1NFUlQoaXNWYWxp
ZCgpKSBpbnNpZGUgcmVhdHRhY2hUb1dlYlByb2Nlc3MsIHNvbWUgb3RoZXIgd2F5IHRvIGZpeCB0
aGlzIGlzIG5lZWRlZC4KKyAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICByZWF0dGFjaFRvV2Vi
UHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0
YWNoVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKIHsKICAgICBB
U1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKLSAgICBBU1NFUlQo
bV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQp
OwogCiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2Uo
KnRoaXMsIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsK
IAotICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQo
KSk7CisgICAgbV9wcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKIAogICAgIEFTU0VSVChtX3By
b2Nlc3MtPnN0YXRlKCkgIT0gQ2hpbGRQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsK
ICAgICBpZiAobV9wcm9jZXNzLT5zdGF0ZSgpID09IENoaWxkUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6
UnVubmluZykKQEAgLTg3NCw2ICs4OTAsMTMgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRp
b25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KSk7CisgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLmdldCgpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwg
TmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlKTsKKyAgICByZXR1cm4gV1RGTW92ZShuYXZp
Z2F0aW9uKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b24oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGlvblBvbGljeUNoZWNrIG5hdmlnYXRp
b25Qb2xpY3lDaGVjaykKK3sKKyAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC04ODQsMTAg
KzkwNywxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgICAgICByZWF0dGFjaFRvV2Vi
UHJvY2VzcygpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7Ci0gICAgbG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Cisg
ICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KTsKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBs
b2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gKHVpbnQ2NF90KXNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEg
PSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSku
Z2V0KCkpOworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeSA9
IG5hdmlnYXRpb25Qb2xpY3lDaGVjayA9PSBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVpcmU7
CiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZSh1cmwsIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
ICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1aXJl
VW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CkBAIC04OTUsOCArOTE5LDYgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9w
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLQotICAgIHJldHVybiBXVEZN
b3ZlKG5hdmlnYXRpb24pOwogfQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtMjM1
NSw2ICsyMzc3LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZyCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBhdXRvKiBhY3RpdmVQb2xpY3lMaXN0ZW5lciA9IGZyYW1lLmFjdGl2ZVBv
bGljeUxpc3RlbmVyUHJveHkoKTsKKyAgICBpZiAoYWN0aXZlUG9saWN5TGlzdGVuZXIpIHsKKyAg
ICAgICAgQVNTRVJUKGFjdGl2ZVBvbGljeUxpc3RlbmVyLT5saXN0ZW5lcklEKCkgPT0gbGlzdGVu
ZXJJRCk7CisKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuYXZp
Z2F0aW9uKSB7CisgICAgICAgICAgICBhdXRvIHByb3Bvc2VkUHJvY2VzcyA9IHByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLT5yZXF1
ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgaWYgKHByb3Bvc2VkUHJvY2Vzcy5wdHIoKSAhPSAm
cHJvY2VzcygpKSB7CisgICAgICAgICAgICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdXNw
ZW5kOworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdh
dGlvbiksIHByb3Bvc2VkUHJvY2VzcyA9IFdURk1vdmUocHJvcG9zZWRQcm9jZXNzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocHJvcG9zZWRQcm9jZXNzKSk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBJZiB3
ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIHRoZSBkZWNpc2lvbiB3aWxsIAogICAgIC8vIGJlIHNlbnQgYmFjayB0byB0
aGUgd2ViIHByb2Nlc3MgYnkgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4gCiAgICAg
aWYgKG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7CkBAIC0yMzY4LDYgKzI0
MDUsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnIKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCks
IGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdlSUQpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQorewor
ICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiIHRvIFVS
TCAlcyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5h
dmlnYXRpb24ucmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
YXR0YWNoVG9Qcm9jZXNzRm9yTmF2aWdhdGlvbihXVEZNb3ZlKHByb2Nlc3MpKTsKKworICAgIC8v
IEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGlj
eSBkZWxlZ2F0ZSwgZXRjCisgICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9u
LCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLnJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVs
bHB0ciwgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpCeXBhc3MpOworfQorCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBpZiAobV91c2Vy
QWdlbnQgPT0gdXNlckFnZW50KQpAQCAtMzc2OCw2ICszODE1LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVk
UG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24mIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYgd2Vic2l0ZVBvbGljaWVzKQogeworICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIC0gVGFy
Z2V0IHVybCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKwogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAK
ICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CkBA
IC0zNzgxLDcgKzM4MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogICAgIE1FU1NBR0Vf
Q0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdpbmFs
UmVxdWVzdC51cmwoKSk7CiAgICAgCi0gICAgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQp
OworICAgIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklELCBQb2xpY3lMaXN0ZW5lclR5cGU6
Ok5hdmlnYXRpb25BY3Rpb24pOwogICAgIGlmICghbmF2aWdhdGlvbklEKSB7CiAgICAgICAgIGF1
dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmln
YXRpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKICAgICAgICAgbmV3TmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CkBAIC0zODQ3LDcgKzM4OTYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFNlY3VyaQogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwogCi0gICAgUmVmPFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxp
c3RlbmVySUQpOworICAgIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVy
ID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklELCBQb2xpY3lMaXN0
ZW5lclR5cGU6Ok5ld1dpbmRvd0FjdGlvbik7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KSB7CiAgICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwpAQCAt
Mzg3Myw5ICszOTIyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpCiAgICAgTUVTU0FHRV9D
SEVDS19VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVzcG9uc2Uu
dXJsKCkpOwogCi0gICAgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIg
PSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwotICAgIGlmIChu
YXZpZ2F0aW9uSUQpCi0gICAgICAgIGxpc3RlbmVyLT5zZXROYXZpZ2F0aW9uKG1fbmF2aWdhdGlv
blN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpOworICAgIFJlZjxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94
eShsaXN0ZW5lcklELCBQb2xpY3lMaXN0ZW5lclR5cGU6OlJlc3BvbnNlKTsKKyAgICBpZiAobmF2
aWdhdGlvbklEKSB7CisgICAgICAgIGF1dG8mIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0
ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOworICAgICAgICBsaXN0ZW5lci0+c2V0TmF2aWdh
dGlvbihuYXZpZ2F0aW9uKTsKKyAgICB9CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7
CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9y
aWdpbi5zZWN1cml0eU9yaWdpbigpKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dN
SU1FVHlwZSk7CkBAIC01NTkwLDE0ICs1NjQxLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9j
ZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiAgICAgLy8g
VGhlcmUgaXMgYSBuZXN0ZWQgdHJhbnNhY3Rpb24gaW4gcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4
aXRlZCgpIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjb21taXQgYmVmb3JlIHRoZSBjbGllbnQgY2Fs
bC4KICAgICBQYWdlTG9hZFN0YXRlOjpUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiA9IG1fcGFnZUxv
YWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCi0gICAgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRl
ZCgpOworICAgIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQocmVhc29uKTsKIAotICAgIG5h
dmlnYXRpb25TdGF0ZSgpLmNsZWFyQWxsTmF2aWdhdGlvbnMoKTsKKyAgICAvLyBGb3IgYnJpbmd1
cCBvZiBwcm9jZXNzIHN3YXBwaW5nLCBOYXZpZ2F0aW9uU3dhcCB0ZXJtaW5hdGlvbiB3aWxsIG5v
dCBnbyBvdXQgdG8gY2xpZW50cy4KKyAgICAvLyBJZiBpdCBkb2VzICpkdXJpbmcqIHByb2Nlc3Mg
c3dhcHBpbmcsIGFuZCB0aGUgY2xpZW50IHRyaWdnZXJzIGEgcmVsb2FkLCB0aGF0IGNhdXNlcyBi
aXphcnJlIFdlYktpdCByZS1lbnRyeS4KKyAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBoYXZlIHRv
IGNoYW5nZQorICAgIGlmIChyZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZp
Z2F0aW9uU3dhcCkgeworICAgICAgICBuYXZpZ2F0aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRp
b25zKCk7CiAKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPnByb2Nlc3NEaWRUZXJtaW5hdGUoKnRoaXMsIHJlYXNvbik7Ci0gICAgZWxzZSBp
ZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQp
Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgICAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQorICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5wcm9jZXNzRGlkVGVybWluYXRlKCp0aGlzLCByZWFzb24pOworICAgICAgICBlbHNlIGlmIChy
ZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCkKKyAg
ICAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOworICAgIH0K
IAogICAgIGlmIChtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24pIHsKICAgICAgICAgaWYgKGF1dG8q
IGF1dG9tYXRpb25TZXNzaW9uID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNl
c3Npb24oKSkKQEAgLTU3MzcsMTAgKzU3OTMsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0
U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogCiAgICAgQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcjsKICAgICBzd2l0Y2ggKHJlc2V0U3RhdGVSZWFzb24pIHsKKyAgICBj
YXNlIFJlc2V0U3RhdGVSZWFzb246Ok5hdmlnYXRpb25Td2FwOgorICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIFJlc2V0U3RhdGVSZWFzb246OlBhZ2VJbnZhbGlkYXRlZDoKICAgICAgICAg
ZXJyb3IgPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkOwogICAgICAg
ICBicmVhazsKLQogICAgIGNhc2UgUmVzZXRTdGF0ZVJlYXNvbjo6V2ViUHJvY2Vzc0V4aXRlZDoK
ICAgICAgICAgZXJyb3IgPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkOwogICAg
ICAgICBicmVhazsKQEAgLTU3NjMsMTMgKzU4MjAsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2VuZGlmCiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbiB0ZXJtaW5hdGlvblJlYXNvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIC8vIEZJWE1FOiBJdCdz
IHdlaXJkIHRoYXQgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpIGlzIGNhbGxlZCBldmVu
IHRob3VnaCB0aGUgcHJvY2VzcyBpcyBsYXVuY2hpbmcuCi0gICAgQVNTRVJUKG1fcHJvY2Vzcy0+
c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmcgfHwgbV9wcm9jZXNz
LT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpOworICAgIGlm
ICh0ZXJtaW5hdGlvblJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRp
b25Td2FwKQorICAgICAgICBBU1NFUlQobV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQ
cm94eTo6U3RhdGU6OkxhdW5jaGluZyB8fCBtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vz
c1Byb3h5OjpTdGF0ZTo6VGVybWluYXRlZCk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwpAQCAtNTc4Niw3ICs1ODQ2LDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKQogCiAgICAgbV9w
YWdlQ2xpZW50LnByb2Nlc3NEaWRFeGl0KCk7CiAKLSAgICByZXNldFN0YXRlKFJlc2V0U3RhdGVS
ZWFzb246OldlYlByb2Nlc3NFeGl0ZWQpOworICAgIGF1dG8gcmVzZXRTdGF0ZVJlYXNvbiA9IHRl
cm1pbmF0aW9uUmVhc29uID09IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3
YXAgPyBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCA6IFJlc2V0U3RhdGVSZWFzb246
OldlYlByb2Nlc3NFeGl0ZWQ7CisgICAgcmVzZXRTdGF0ZShyZXNldFN0YXRlUmVhc29uKTsKIAog
ICAgIG1fcGFnZUNsaWVudC5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogICAgIG1fcGVuZGluZ0xl
YXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggMGE5Yzk5ZTcyMDQuLjJkMDk0MzUyNjE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTMwNSw5ICsxMzA1LDEwIEBAIHByaXZhdGU6
CiAgICAgZW51bSBjbGFzcyBSZXNldFN0YXRlUmVhc29uIHsKICAgICAgICAgUGFnZUludmFsaWRh
dGVkLAogICAgICAgICBXZWJQcm9jZXNzRXhpdGVkLAorICAgICAgICBOYXZpZ2F0aW9uU3dhcCwK
ICAgICB9OwogICAgIHZvaWQgcmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uKTsKLSAgICB2b2lk
IHJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoKTsKKyAgICB2b2lkIHJlc2V0U3RhdGVBZnRl
clByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIHZvaWQgc2V0
VXNlckFnZW50KFN0cmluZyYmKTsKIApAQCAtMTQ0MSw5ICsxNDQyLDE4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5T
aG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jp
em9udGFsV2hlZWxFdmVudHMgPSBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7
IH0KIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKKyAgICB2b2lkIGF0dGFjaFRv
UHJvY2Vzc0Zvck5hdmlnYXRpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7CisgICAgdm9pZCBy
ZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKKwogICAgIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IHJlYXR0YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCk7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gcmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKik7CiAKKyAgICBlbnVtIGNsYXNzIE5hdmlnYXRpb25Qb2xpY3lD
aGVjayB7CisgICAgICAgIFJlcXVpcmUsCisgICAgICAgIEJ5cGFzcywKKyAgICB9OworICAgIHZv
aWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2spOworCiAgICAgdm9p
ZCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGlyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKTsKQEAgLTE2ODUsNyArMTY5NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyJiwgdWludDY0X3QgZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIHVp
bnQ2NF90IGdlbmVyYXRlTmF2aWdhdGlvbklEKCk7CiAgICAgQVBJOjpEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCogZWZmZWN0aXZlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV2ViQ29yZTo6U2hvdWxk
U2FtcGxlKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CkBAIC0x
NzMyLDYgKzE3NDEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3Vs
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CiAKKyAgICB2b2lkIGNvbnRp
bnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmKTsKKwogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKICAgICBSZWY8QVBJ
OjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNGNhZmViOWVjMjguLjFhZTEyYTU2NDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xOTQw
LDQgKzE5NDAsMTYgQEAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6
OnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHUKIH0KICNlbmRpZgogCitSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBjb25zdCBVUkwmIHRhcmdldFVSTCkKK3sKKyAgICBpZiAoIW1fY29u
ZmlndXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkpCisgICAgICAgIHJldHVybiBw
YWdlLnByb2Nlc3MoKTsKKworICAgIGF1dG8gdXJsID0gVVJMIHsgUGFyc2VkVVJMU3RyaW5nLCBw
YWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OworICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwodXJsLCB0YXJnZXRVUkwpIHx8IHVybC5pc0JsYW5rVVJMKCkpCisgICAgICAgIHJl
dHVybiBwYWdlLnByb2Nlc3MoKTsKKworICAgIHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKHBh
Z2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA3NjJhZTA5MGRkZS4uYWYx
YjQwYjY1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAt
NDQyLDYgKzQ0Miw4IEBAIHB1YmxpYzoKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGJh
Y2tncm91bmRXZWJQcm9jZXNzVG9rZW4oKSBjb25zdCB7IHJldHVybiBCYWNrZ3JvdW5kV2ViUHJv
Y2Vzc1Rva2VuKG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAjZW5k
aWYKIAorICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZjI0YmI5YWE5NzguLmZkNDgwNGRj
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDI1LDggKzQyNSw2IEBAIFN0b3JhZ2VNYW5hZ2VyOjpTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6flNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkKIAogdm9pZCBT
dG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnNldEFsbG93ZWRDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbiogYWxsb3dlZENvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFh
bGxvd2VkQ29ubmVjdGlvbiB8fCAhbV9hbGxvd2VkQ29ubmVjdGlvbik7Ci0KICAgICBtX2FsbG93
ZWRDb25uZWN0aW9uID0gYWxsb3dlZENvbm5lY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjVhNzgyMmRiMmQuLmRjYWFlNTVj
ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMTI2MSw2ICsxMjYxLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1l
dGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICptX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3Qs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2Fz
dDxTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koZXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldFNob3VsZENoZWNrTmF2aWdhdGlvblBvbGljeShsb2FkUGFyYW1ldGVycy5zaG91bGRD
aGVja05hdmlnYXRpb25Qb2xpY3kpOwogCiAgICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdl
KCkubG9hZFJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZDY5OTNkMjRkOS4uYTM2
Y2UyNjgzMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOC0wMy0yMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRmlyc3QgcGllY2Ugb2YgcHJvY2VzcyBzd2FwcGluZyBvbiBu
YXZpZ2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgzNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICBF
eHBvc2UgdGhlICJzd2FwcyBwcm9jZXNzZXMgb24gbmF2aWdhdGlvbiIgc2V0dGluZyBpbiBNaW5p
QnJvd3NlciBVSSBmb3IgdGVzdGluZzoKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9BcHBE
ZWxlZ2F0ZS5tOgorICAgICAgICAoZGVmYXVsdENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxl
ciBfcG9wdWxhdGVNZW51XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB2YWxpZGF0
ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgcHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB0b2dn
bGVQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbjpdKToKKworICAgICAgICBNYWtlcyBzdXJlIHRoZSBj
dXJyZW50IGJlaGF2aW9yIGlzIHRlc3RlZDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmln
YXRpb246XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRh
c2s6XSk6CisgICAgICAgICgtW1BTT05TY2hlbWUgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpd
KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTAzLTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbmQgYWRvcHQgV0tfUExBVEZPUk1fTkFN
RSBhbmQgYWRqdXN0IGRlZmF1bHQgZmVhdHVyZSBkZWZpbmVzCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBE
ZWxlZ2F0ZS5tCmluZGV4IDlmYjg2MDhmMjg0Li42MWI5ZThiYjEwOSAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0FwcERlbGVnYXRlLm0KQEAgLTk4LDYgKzk4LDggQEAgLSAodm9pZClhd2FrZUZyb21OaWIK
ICAgICAgICAgcHJvY2Vzc0NvbmZpZ3VyYXRpb24uZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCA9ICFbU2V0dGluZ3NDb250cm9sbGVyIHNoYXJlZF0ubmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb25EaXNhYmxlZDsKICAgICAgICAgaWYgKFtTZXR0aW5nc0NvbnRy
b2xsZXIgc2hhcmVkXS5wZXJXaW5kb3dXZWJQcm9jZXNzZXNEaXNhYmxlZCkKICAgICAgICAgICAg
IHByb2Nlc3NDb25maWd1cmF0aW9uLm1heGltdW1Qcm9jZXNzQ291bnQgPSAxOworICAgICAgICBp
ZiAoW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdLnByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uRW5h
YmxlZCkKKyAgICAgICAgICAgIHByb2Nlc3NDb25maWd1cmF0aW9uLnByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbiA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQ
b29sID0gW1tbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
U2V0dGluZ3NDb250cm9sbGVyLmgKaW5kZXggNjE1ODFiMWFhZTEuLjhkYWQwNjRkY2QyIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCkBAIC01OSw2ICs1OSw3
IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhbmltYXRlZEltYWdlQXN5
bmNEZWNvZGluZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
bG9hZHNBbGxTaXRlSWNvbnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
dXNlc0dhbWVDb250cm9sbGVyRnJhbWV3b3JrOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWQ7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgcHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b25FbmFibGVkOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpk
ZWZhdWx0VVJMOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3ND
b250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0K
aW5kZXggOGNjZTE4MDY2YjIuLmQ2NGVmNDFmMzZkIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1NldHRpbmdzQ29udHJvbGxlci5tCkBAIC03MCw2ICs3MCw3IEBACiAKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IFBlcldpbmRvd1dlYlByb2Nlc3Nlc0Rpc2FibGVkS2V5ID0gQCJQZXJXaW5kb3dX
ZWJQcm9jZXNzZXNEaXNhYmxlZCI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVkS2V5ID0gQCJOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVJldmFsaWRhdGlvbkRpc2FibGVkIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFBy
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uS2V5ID0gQCJQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbiI7CiAK
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERlYnVnT3ZlcnlsYXlNZW51SXRlbVRhZykgewog
ICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVRhZyA9IDEwMCwKQEAgLTE3OSw2ICsx
ODAsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRs
ZTpAIkxvYWQgQWxsIFNpdGUgSWNvbnMgUGVyLVBhZ2UiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xl
TG9hZHNBbGxTaXRlSWNvbnM6KSBpbmRlbnRlZDpZRVNdOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0
aFRpdGxlOkAiVXNlIEdhbWVDb250cm9sbGVyLmZyYW1ld29yayBvbiBtYWNPUyAoUmVzdGFydCBy
ZXF1aXJlZCkiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlVXNlc0dhbWVDb250cm9sbGVyRnJhbWV3
b3JrOikgaW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkRpc2Fi
bGUgbmV0d29yayBjYWNoZSBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24iIGFjdGlvbjpAc2VsZWN0
b3IodG9nZ2xlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25EaXNhYmxlZDopIGlu
ZGVudGVkOllFU107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUHJvY2Vz
cyBTd2FwIG9uIE5hdmlnYXRpb24iIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb246KSBpbmRlbnRlZDpZRVNdOwogCiAgICAgTlNNZW51SXRlbSAqZGVidWdPdmVy
bGF5c1N1Ym1lbnVJdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGVi
dWcgT3ZlcmxheXMiIGFjdGlvbjpuaWwga2V5RXF1aXZhbGVudDpAIiJdOwogICAgIE5TTWVudSAq
ZGVidWdPdmVybGF5c01lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRlYnVn
IE92ZXJsYXlzIl07CkBAIC0yNzAsNiArMjcyLDggQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVt
OihOU01lbnVJdGVtICopbWVudUl0ZW0KICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxm
IHVzZXNHYW1lQ29udHJvbGxlckZyYW1ld29ya10gPyBOU0NvbnRyb2xTdGF0ZVZhbHVlT24gOiBO
U0NvbnRyb2xTdGF0ZVZhbHVlT2ZmXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uRGlzYWJsZWQ6KSkKICAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uRGlzYWJsZWRdID8gTlNDb250cm9sU3RhdGVWYWx1ZU9uIDogTlNDb250cm9sU3Rh
dGVWYWx1ZU9mZl07CisgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVQcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbjopKQorICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYg
cHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25FbmFibGVkXSA/IE5TQ29udHJvbFN0YXRlVmFsdWVPbiA6
IE5TQ29udHJvbFN0YXRlVmFsdWVPZmZdOwogICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0
b3IodG9nZ2xlVXNlVUlTaWRlQ29tcG9zaXRpbmc6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0
YXRlOltzZWxmIHVzZVVJU2lkZUNvbXBvc2l0aW5nXSA/IE5TQ29udHJvbFN0YXRlVmFsdWVPbiA6
IE5TQ29udHJvbFN0YXRlVmFsdWVPZmZdOwogICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0
b3IodG9nZ2xlUGVyV2luZG93V2ViUHJvY2Vzc2VzRGlzYWJsZWQ6KSkKQEAgLTQ4NSw2ICs0ODks
MTYgQEAgLSAodm9pZCl0b2dnbGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkRp
c2FibGVkOihpZClzZW5kZXIKICAgICBbc2VsZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6TmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25EaXNhYmxlZEtleV07CiB9CiAKKy0gKEJPT0wp
cHJvY2Vzc1N3YXBPbk5hdmlnYXRpb25FbmFibGVkCit7CisgICAgcmV0dXJuIFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6UHJvY2Vzc1N3YXBPbk5hdmln
YXRpb25LZXldOworfQorCistICh2b2lkKXRvZ2dsZVByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uOihp
ZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6UHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb25LZXldOworfQorCiAtIChCT09MKWlzU3BhY2VSZXNlcnZlZEZvckJhbm5lcnMK
IHsKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpSZXNlcnZlU3BhY2VGb3JCYW5uZXJzUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGU1NTdlOGQyNjIyLi43OWYxNWJlMjdjMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE4Myw2ICsxODMsNyBAQAogCQk1MTcxNEVCODFDRjhDQTE3MDA0NzIzQzQg
LyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC5tbSAqLzsgfTsKIAkJNTE3RTdFMDQxNTExMTlDMTAwRDBCMDA4IC8q
IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0U3RTAzMTUx
MTE4NzUwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaHRtbCAqLzsgfTsKIAkJNTE4MkMyMkUxRjJCQ0U1NDAwNTlCQTdDIC8qIFdLVVJMU2NoZW1l
SGFuZGxlci1sZWFrcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxODJDMjJEMUYyQkNCNDEwMDU5QkE3QyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItbGVh
a3MubW0gKi87IH07CisJCTUxOEMxMTUzMjA1QjA1MDQwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxOEMxMTUyMjA1QjA0RjkwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bSAqLzsgfTsKIAkJNTE5OEEyNDAxRUE3RTU5RjAwODkxMEI3IC8qIEluaXRpYWxXYXJtZWRQcm9j
ZXNzVXNlZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOThBMjNGMUVBN0U1OTUwMDg5MTBCNyAvKiBJbml0aWFsV2FybWVkUHJvY2Vzc1VzZWQubW0g
Ki87IH07CiAJCTUxQTU4NzdEMUQxQjQ5Q0QwMDRCQTlBRiAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQTU4NzdDMUQxQjNEOEQwMDRCQTlBRiAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3Mt
My5odG1sICovOyB9OwogCQk1MUE1ODc4NTFEMjczOUUzMDA0QkE5QUYgLyogSW5kZXhlZERCRGF0
YWJhc2VQcm9jZXNzS2lsbC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTg3ODIxRDI3MkVCNTAwNEJBOUFGIC8qIEluZGV4ZWRE
QkRhdGFiYXNlUHJvY2Vzc0tpbGwtMS5odG1sICovOyB9OwpAQCAtMTM2Myw2ICsxMzY0LDcgQEAK
IAkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RTdFMDMxNTExMTg3NTAwRDBCMDA4IC8qIE1lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjJEMUYyQkNCNDEwMDU5
QkE3QyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSAiV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTE4QzExNTIyMDVCMDRGOTAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOThBMjNGMUVB
N0U1OTUwMDg5MTBCNyAvKiBJbml0aWFsV2FybWVkUHJvY2Vzc1VzZWQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbml0aWFsV2FybWVkUHJvY2Vzc1VzZWQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTU4NzdDMUQxQjNEOEQwMDRCQTlBRiAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0zLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUE1ODc4MjFEMjcyRUI1MDA0QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9j
ZXNzS2lsbC0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCRGF0
YWJhc2VQcm9jZXNzS2lsbC0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjE3Nyw2ICsyMTc5LDcgQEAKIAkJCQk4M0JBRUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzLm1tICovLAogCQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAv
KiBQcmVmZXJlbmNlcy5tbSAqLywKIAkJCQk3QzFBRjc5MzFFOERDQkFCMDAyNjQ1QjkgLyogUHJl
cGFyZUZvck1vdmVUb1dpbmRvdy5tbSAqLywKKwkJCQk1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUg
LyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi8sCiAJCQkJNTc5OEUyQUYxQ0FGNUMyODAw
QzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovLAogCQkJCUExQzRGQjZDMUJB
Q0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJMUE0RjgxRDAxQkRGRkRDRjAw
NEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi8sCkBAIC0zNzM2LDYgKzM3MzksNyBA
QAogCQkJCTdDQ0U3RjJGMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZVRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBG
NzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDRTM1NEQ5
MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxOEMxMTUzMjA1QjA1MDQwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEODM4QjFGMUVFRjNBNUMwMDlCOTgwRSAvKiBX
S0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzBDRTIy
QTFGNTczNDM0MDBFNzQxMEIgLyogV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVT
dG9yZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY0YjFlMDdjYjgxCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5o
PgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3
dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFdLX0FQSV9FTkFC
TEVECisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgaW50IG51bWJlck9mRGVjaWRlUG9saWN5
Q2FsbHM7CisKK0BpbnRlcmZhY2UgUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFBTT05OYXZpZ2F0
aW9uRGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZp
bmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBkb25lID0g
dHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25B
Y3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KWRlY2lzaW9uSGFuZGxlcgoreworICAgICsrbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxsczsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCitA
ZW5kCisKK0BpbnRlcmZhY2UgUFNPTlNjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRs
ZXI+IHsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFBTT05TY2hlbWUKKworLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJM
U2NoZW1lVGFzaz4pdGFzaworeworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25z
ZS5nZXQoKV07CisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKK30K
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNr
OihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7Cit9CisKK0BlbmQKKworVEVTVChQcm9jZXNz
U3dhcCwgQmFzaWMpCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlF
UzsKKyAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0
UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOworICAgIFJldGFpblB0cjxQU09OU2NoZW1l
PiBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAIlBTT04xIl07CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OMiJdOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uMTovL2hvc3Qv
bWFpbjEuaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgYXV0byBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIHJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAicHNvbjE6Ly9ob3N0L21haW4yLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKKworICAgIGF1dG8gcGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRp
Zmllcl07CisKKyAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInBzb24yOi8vaG9zdC9tYWluMi5odG1sIl1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIHBpZDMgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgRVhQRUNUX0VRKHBpZDEsIHBpZDIpOworICAg
IEVYUEVDVF9GQUxTRShwaWQyID09IHBpZDMpOworCisgICAgLy8gMyBsb2FkcywgMyBkZWNpZGVQ
b2xpY3kgY2FsbHMgKGUuZy4gdGhlIGxvYWQgdGhhdCBkaWQgcGVyZm9ybSBhIHByb2Nlc3Mgc3dh
cCBzaG91bGQgbm90IGhhdmUgZ2VuZXJhdGVkIGFuIGFkZGl0aW9uYWwgZGVjaWRlUG9saWN5IGNh
bGwpCisgICAgRVhQRUNUX0VRKG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMsIDMpOworfQorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>