<?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>195219</bug_id>
          
          <creation_ts>2019-03-01 12:03:59 -0800</creation_ts>
          <short_desc>[Apple Pay] Untangle WebPageProxy from WebPaymentCoordinatorProxy</short_desc>
          <delta_ts>2019-03-03 14:16:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195078</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1511512</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-01 12:03:59 -0800</bug_when>
    <thetext>[Apple Pay] Untangle WebPageProxy and WebPaymentCoordinatorProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511514</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-01 12:06:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/48518082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511523</commentid>
    <comment_count>2</comment_count>
      <attachid>363354</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-01 12:21:14 -0800</bug_when>
    <thetext>Created attachment 363354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511916</commentid>
    <comment_count>3</comment_count>
      <attachid>363354</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-03 00:15:26 -0800</bug_when>
    <thetext>Comment on attachment 363354
Patch

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

&gt; Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:38
&gt; -#import &lt;WebKitAdditions/WebPaymentCoordinatorProxyAdditions.h&gt;
&gt; +#include &lt;WebKitAdditions/WebPaymentCoordinatorProxyAdditions.h&gt;

Why change this?

Here’s my argument for not changing it: #import is not specific to Objective-C, it’s specific to the C compilers that support Objective-C and the only compiler we will be compiling ENABLE(APPLE_PAY) code with does supports it. So it seems safe to use #import inside that #if.

&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:509
&gt; +    auto&amp; sourceApplicationBundleIdentifier = m_client.paymentCoordinatorSourceApplicationBundleIdentifier(*this);

Often for local variables we can use fewer words and a shorter name, because context makes them unambiguous enough. Could this just be &quot;bundleIdentifier&quot; or would that make things confusing? The context would make it clear which bundle identifier. I wouldn’t insist: Whatever you think is clearest.

&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:513
&gt; +    auto&amp; sourceApplicationSecondaryIdentifier = m_client.paymentCoordinatorSourceApplicationSecondaryIdentifier(*this);

Maybe &quot;secondaryIdentifier&quot;?

&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:518
&gt; +    auto&amp; ctDataConnectionServiceType = m_client.paymentCoordinatorCTDataConnectionServiceType(*this);

Maybe &quot;serviceType&quot;?

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1989
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +    UIViewController *paymentCoordinatorPresentingViewController(const WebPaymentCoordinatorProxy&amp;) final;
&gt; +    const String&amp; paymentCoordinatorCTDataConnectionServiceType(const WebPaymentCoordinatorProxy&amp;) final;
&gt; +#endif
&gt; +#if PLATFORM(MAC)
&gt; +    NSWindow *paymentCoordinatorPresentingWindow(const WebPaymentCoordinatorProxy&amp;) final;
&gt; +#endif
&gt; +#endif

I have been encouraging people to write #if statements with boolean combinations rather than nesting #if like this. The fact that we don’t have indentation to help us keep track of the nesting, and that the if statements read pretty well with &amp;&amp; make me prefer this style, and I have been using it all over WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511964</commentid>
    <comment_count>4</comment_count>
      <attachid>363354</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-03 11:56:24 -0800</bug_when>
    <thetext>Comment on attachment 363354
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:38
&gt;&gt; +#include &lt;WebKitAdditions/WebPaymentCoordinatorProxyAdditions.h&gt;
&gt; 
&gt; Why change this?
&gt; 
&gt; Here’s my argument for not changing it: #import is not specific to Objective-C, it’s specific to the C compilers that support Objective-C and the only compiler we will be compiling ENABLE(APPLE_PAY) code with does supports it. So it seems safe to use #import inside that #if.

I knew the #import was safe, but I didn&apos;t see a reason to prefer it over #include since the header in question uses &quot;#pragma once.&quot; Personally I like seeing a file with either all #includes or all #imports, just as an aesthetic preference.

&gt;&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:509
&gt;&gt; +    auto&amp; sourceApplicationBundleIdentifier = m_client.paymentCoordinatorSourceApplicationBundleIdentifier(*this);
&gt; 
&gt; Often for local variables we can use fewer words and a shorter name, because context makes them unambiguous enough. Could this just be &quot;bundleIdentifier&quot; or would that make things confusing? The context would make it clear which bundle identifier. I wouldn’t insist: Whatever you think is clearest.

I agree with your name suggestion.

&gt;&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:513
&gt;&gt; +    auto&amp; sourceApplicationSecondaryIdentifier = m_client.paymentCoordinatorSourceApplicationSecondaryIdentifier(*this);
&gt; 
&gt; Maybe &quot;secondaryIdentifier&quot;?

Ditto.

&gt;&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:518
&gt;&gt; +    auto&amp; ctDataConnectionServiceType = m_client.paymentCoordinatorCTDataConnectionServiceType(*this);
&gt; 
&gt; Maybe &quot;serviceType&quot;?

Ditto.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:1989
&gt;&gt; +#endif
&gt; 
&gt; I have been encouraging people to write #if statements with boolean combinations rather than nesting #if like this. The fact that we don’t have indentation to help us keep track of the nesting, and that the if statements read pretty well with &amp;&amp; make me prefer this style, and I have been using it all over WebKit.

Makes sense. Will un-nest.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511969</commentid>
    <comment_count>5</comment_count>
      <attachid>363464</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-03 12:14:55 -0800</bug_when>
    <thetext>Created attachment 363464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511971</commentid>
    <comment_count>6</comment_count>
      <attachid>363465</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-03 12:17:01 -0800</bug_when>
    <thetext>Created attachment 363465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511975</commentid>
    <comment_count>7</comment_count>
      <attachid>363466</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-03 12:25:15 -0800</bug_when>
    <thetext>Created attachment 363466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511993</commentid>
    <comment_count>8</comment_count>
      <attachid>363466</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-03 14:16:40 -0800</bug_when>
    <thetext>Comment on attachment 363466
Patch

Clearing flags on attachment: 363466

Committed r242332: &lt;https://trac.webkit.org/changeset/242332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511994</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-03 14:16:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363354</attachid>
            <date>2019-03-01 12:21:14 -0800</date>
            <delta_ts>2019-03-03 12:14:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195219-20190301122113.patch</filename>
            <type>text/plain</type>
            <size>34516</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmZmFhNDkxNGE3N2IzYjhj
OWE2NmE4ZWZjMDMyZWViZmRlMzg3NmMuLjI2ZGVmNjE3YzgzOTM3MmEwOWFlNTllYTE2ZjhiNjA2
MDE5MGUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMDEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIFVudGFuZ2xlIFdl
YlBhZ2VQcm94eSBhbmQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTIxOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg1MTgwODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gaGF2aW5nIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
IGtub3cgYWJvdXQgV2ViUGFnZVByb3h5LCBnaXZlCisgICAgICAgIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5IGEgY2xpZW50IGludGVyZmFjZSB0aGF0IFdlYlBhZ2VQcm94eSBjb25mb3JtcyB0
by4KKworICAgICAgICBJbiBhIGZvbGxvdy1vbiBwYXRjaCwgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkgd2lsbCBoYXZlIGEgbm9uLVdlYlBhZ2VQcm94eSBjbGllbnQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkpOiBSZXBsYWNlZCB1c2Ugb2YKKyAgICAgICAgbV93ZWJQYWdlUHJveHkgd2l0aCBt
X2NsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOiBJ
bXBsZW1lbnRlZAorICAgICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXIgdmlhIG1fY2xpZW50LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTogUmVwbGFjZWQg
dXNlIG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGllbnQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5j
ZWxQYXltZW50U2Vzc2lvbik6IENhbGxlZCBvdXIgb3duCisgICAgICAgIE1lc3NhZ2VTZW5kZXI6
OnNlbmQgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBtX3dlYlBhZ2VQcm94eS4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1
dGhvcml6ZVBheW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmRpZFNlbGVjdFBheW1lbnRNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDogRGVmaW5lZCB0aGUgQ2xpZW50IGFi
c3RyYWN0IGNsYXNzIGFuZAorICAgICAgICBjaGFuZ2VkIG1fd2ViUGFnZVByb3h5IHRvIG1fY2xp
ZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkKTogUmVwbGFjZWQgdXNlIG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGll
bnQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bVBheW1lbnRSZXF1ZXN0KTogUmVuYW1lZCBmcm9tIHRvUEtQYXltZW50UmVxdWVzdC4KKyAgICAg
ICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KTogUmVuYW1lZCB0byBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVu
dFVJKTogUmVwbGFjZWQgdXNlIG9mIG1fd2ViUGFnZVByb3h5CisgICAgICAgIHdpdGggbV9jbGll
bnQuCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJNYXApOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50
Q29vcmRpbmF0b3JDb25uZWN0aW9uKTogSW1wbGVtZW50ZWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OkNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklE
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNYWRlIFdlYlBh
Z2VQcm94eSBkZXJpdmUgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcik6IEltcGxlbWVudGVkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyk6IERpdHRvLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAyLTI4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSFRUUFNVcGdyYWRlTGlzdC5kYiBkYXRhYmFzZSBzaG91
bGQgYmUgb3BlbmVkIGluIHJlYWRvbmx5IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cAppbmRleCA0Mjg2NTFmNmVhOWIwOGFiYjhjMTk0OTA4ZjM4MTRkODIzM2RmNGE2Li5iNDc0NWUy
ZWIwOGM2Y2U0MzI1MTFlODUzMmI3MjFiYjg4YjI5NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgpAQCAtNDIsMTIgKzQzLDEwIEBA
IHN0YXRpYyBXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiYgYWN0aXZlUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkoKQogICAgIHJldHVybiBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5nZXQoKTsKIH0KIAotV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQotICAgIDogbV93ZWJQ
YWdlUHJveHkod2ViUGFnZVByb3h5KQotICAgICwgbV9zdGF0ZShTdGF0ZTo6SWRsZSkKLSAgICAs
IG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUoTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUp
CitXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHko
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGll
bnQgeyBjbGllbnQgfQogewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9jbGll
bnQucGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyKCp0aGlzKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckRlc3RpbmF0aW9uSUQoKnRoaXMp
LCAqdGhpcyk7CiAgICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTYsNyAr
NTUsMTcgQEAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAgIGhpZGVQ
YXltZW50VUkoKTsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX2NsaWVudC5wYXlt
ZW50Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yRGVzdGluYXRpb25JRCgqdGhpcykpOwor
fQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LnBheW1lbnRD
b29yZGluYXRvckNvbm5lY3Rpb24oKnRoaXMpOworfQorCit1aW50NjRfdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKCp0aGlzKTsK
IH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6YXZhaWxhYmxlUGF5bWVudE5l
dHdvcmtzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC03MSwyNSArODAsMTcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYK
IAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZG9tYWluTmFtZSwgdWludDY0X3QgcmVxdWVzdElEKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFt3ZWFrVGhpcywgcmVxdWVzdElE
XShib29sIGNhbk1ha2VQYXltZW50cykgewotICAgICAgICBhdXRvIHBheW1lbnRDb29yZGluYXRv
clByb3h5ID0gd2Vha1RoaXMuZ2V0KCk7Ci0gICAgICAgIGlmICghcGF5bWVudENvb3JkaW5hdG9y
UHJveHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9y
UHJveHktPm1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6Q2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRSZXBseShyZXF1ZXN0SUQsIGNhbk1ha2VQ
YXltZW50cykpOworICAgIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobWVy
Y2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHJlcXVlc3RJRF0oYm9vbCBjYW5NYWtlUGF5bWVudHMpIHsKKyAgICAgICAgaWYgKGF1dG8g
cGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKSkKKyAgICAgICAgICAgIHBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0
b3I6OkNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHkocmVxdWVzdElELCBjYW5NYWtl
UGF5bWVudHMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkb21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBwbGF0Zm9ybU9wZW5QYXltZW50U2V0
dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMsIHJlcXVlc3RJRF0o
Ym9vbCByZXN1bHQpIHsKLSAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdl
YWtUaGlzLmdldCgpOwotICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Ok9wZW5QYXlt
ZW50U2V0dXBSZXBseShyZXF1ZXN0SUQsIHJlc3VsdCkpOworICAgIHBsYXRmb3JtT3BlblBheW1l
bnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElEXShib29sIHJlc3VsdCkgeworICAgICAgICBpZiAoYXV0
byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtUaGlzLmdldCgpKQorICAgICAgICAgICAg
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvcjo6T3BlblBheW1lbnRTZXR1cFJlcGx5KHJlcXVlc3RJRCwgcmVzdWx0KSk7CiAgICAgfSk7
CiB9CiAKQEAgLTIyNCw3ICsyMjUsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGNhbkNhbmNlbCgpKTsK
IAotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6RGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjpEaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpKTsKIAogICAgIGRpZFJl
YWNoRmluYWxTdGF0ZSgpOwogfQpAQCAtMjM0LDEzICsyMzUsMTMgQEAgdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKICAgICBB
U1NFUlQobV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0
ZTo6SWRsZSk7CiAKICAgICBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID0gTWVyY2hhbnRWYWxp
ZGF0aW9uU3RhdGU6OlZhbGlkYXRpbmc7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpWYWxpZGF0ZU1lcmNoYW50KHVybC5zdHJpbmcoKSkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6VmFsaWRhdGVNZXJj
aGFudCh1cmwuc3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQog
ewogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXplZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZEF1dGhvcml6ZVBheW1lbnQo
cGF5bWVudCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlk
QXV0aG9yaXplUGF5bWVudChwYXltZW50KSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCkBA
IC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXkKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U2hpcHBpbmdN
ZXRob2RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlw
cGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVu
dENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2Vi
Q29yZTo6UGF5bWVudAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogCiAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDsKLSAgICBtX3dlYlBh
Z2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRh
Y3QpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0UGF5
bWVudE1ldGhvZChjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQpA
QCAtMjY0LDcgKzI2NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNl
bGVjdFBheW1lbnRNZXRob2QoY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lCiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKICAgICBtX3N0YXRlID0gU3RhdGU6OlBheW1lbnRN
ZXRob2RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2VsZWN0UGF5bWVu
dE1ldGhvZChwYXltZW50TWV0aG9kKSk7CiB9CiAKIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmNhbkJlZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGUy
ZGE0NDRmZjAyMDE3ODI0MDQ5MTU5ZGRjNzE1MTViMWRiODIwMWYuLmIwMmU0YzcwMDM1ZjM0NDQy
ZmZhNDkzZDY4NzFmYjlmZTJiNjRlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDE3ICsyOCwxOSBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5QWRkaXRpb25zLmg+CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5QWRkaXRpb25zLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIE1l
c3NhZ2VSZWNlaXZlck1hcDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTUgKzU0
LDM0IEBAIGNsYXNzIFBheW1lbnRNZXRob2Q7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JKQ19D
TEFTUyBOU1dpbmRvdzsKIE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOworT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBVSVZpZXdD
b250cm9sbGVyOwogT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IAotY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+IHsKK2NsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4gewogcHVibGljOgotICAgIGV4cGxp
Y2l0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOworICAgIHN0cnVj
dCBDbGllbnQgeworICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICAg
ICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24o
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIHBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5h
dGlvbklEKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVu
dENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgPSAwOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVu
dENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgPSAwOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICB2aXJ0dWFsIE5TV2luZG93ICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93KGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworI2VuZGlmCisgICAgfTsKKwor
ICAgIGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5KENsaWVudCYpOwogICAgIH5X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50
U2Vzc2lvbigpOwpAQCAtNzMsMTEgKzk0LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZGVQYXlt
ZW50VUkoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAotICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
CiAgICAgdm9pZCBhdmFpbGFibGVQYXltZW50TmV0d29ya3MoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkb21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpOwpAQCAtMTA4LDggKzEzMywxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+Jik7CiAgICAg
dm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21w
bGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxQS1Bh
eW1lbnRSZXF1ZXN0PiBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGNvbnN0IFVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CisjZW5kaWYKIAotICAgIFdlYlBhZ2VQcm94
eSYgbV93ZWJQYWdlUHJveHk7CisgICAgQ2xpZW50JiBtX2NsaWVudDsKIAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KQEAgLTEz
Miw3ICsxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFBheW1lbnRNZXRob2RTZWxlY3Rl
ZCAtIERpc3BhdGNoaW5nIHRoZSBwYXltZW50bWV0aG9kc2VsZWN0ZWQgZXZlbnQgYW5kIHdhaXRp
bmcgZm9yIGEgcmVwbHkuCiAgICAgICAgIFBheW1lbnRNZXRob2RTZWxlY3RlZCwKLSAgICB9IG1f
c3RhdGU7CisgICAgfSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKIAogICAgIGVudW0gY2xhc3Mg
TWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhh
cHBlbmluZy4KQEAgLTE0Myw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFZhbGlk
YXRpb25Db21wbGV0ZSAtIEEgbWVyY2hhbnQgc2Vzc2lvbiBoYXMgYmVlbiBzZW50IGFsb25nIHRv
IFBhc3NLaXQuCiAgICAgICAgIFZhbGlkYXRpb25Db21wbGV0ZQotICAgIH0gbV9tZXJjaGFudFZh
bGlkYXRpb25TdGF0ZTsKKyAgICB9IG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgeyBNZXJjaGFu
dFZhbGlkYXRpb25TdGF0ZTo6SWRsZSB9OwogCiAgICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggYzRkNzlm
ZTRjMTJjOWFiODU0ZmJiZDQyNTEzYjc4NTM4MzA3MmFlNy4uZDEwMWJlMTU3MDY2NjJmOTMwNmJl
YmU3M2VkNWQzZDc5OTNjYzk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMSwxNCArMzEsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNz
S2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci1jbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsK
LQotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdl
UHJveHkmLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
OwotCi19Ci0KIEBpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUgOiBOU09iamVjdCA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxl
Z2F0ZT4gewogQHBhY2thZ2UKICAgICBXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
KiBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCBlYWY1YmNkNzQ0MmExNDFjZTc2Y2IxNWVkNmFh
YjZiMzIxZjRkNTRkLi40MTIwYWU5ZWI4NDI3YmFhOTg2MjQ2MmE1ZDQ0ZGExMDdjNWI4YjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5oIgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIApAQCAtMjY0LDcgKzI2
NCw3IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzKCkKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
bihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LndlYnNpdGVE
YXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5B
bmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fY2xp
ZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cigqdGhpcyksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJv
cik7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUg
dG9BUElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogfQogI2Vu
ZGlmCiAKLVJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0
IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKK1JldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChj
b25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJl
cXVlc3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50
UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCkBAIC01MDYsMTcgKzUwNiwxOCBAQCBSZXRhaW5Q
dHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5LCBjb25zdAogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2lu
ZyByZXNwb25kc1RvU2VsZWN0b3IsIHRoaXMgc2hvdWxkIHVzZSBhIHByb3BlciAjaWYgdmVyc2lv
biBjaGVjay4KLSAgICBhdXRvJiBjb25maWd1cmF0aW9uID0gd2ViUGFnZVByb3h5LndlYnNpdGVE
YXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCk7CisgICAgYXV0byYgc291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCp0aGlzKTsKKyAgICBpZiAoIXNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjopXSkKKyAgICAg
ICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6c291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyXTsKIAotICAgIGlmICghY29uZmlndXJhdGlvbi5zb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcjopXSkKLSAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXI6Y29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKV07
Ci0KLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCkuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KV0pCi0gICAgICAgIFty
ZXN1bHQgc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOmNvbmZpZ3VyYXRp
b24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCldOworICAgIGF1dG8mIHNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fY2xpZW50LnBheW1lbnRDb29y
ZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigqdGhpcyk7CisgICAg
aWYgKCFzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIuaXNFbXB0eSgpICYmIFty
ZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXI6KV0pCisgICAgICAgIFtyZXN1bHQgc2V0U291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyOnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cl07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkKLSAgICAgICAgW3Jlc3VsdCBz
ZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKV07
CisgICAgYXV0byYgY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gbV9jbGllbnQucGF5bWVu
dENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCp0aGlzKTsKKyAgICBpZiAo
IWN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkK
KyAgICAgICAgW3Jlc3VsdCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6Y3REYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlXTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCAzNmI0YmZlMDQyZWFhYjcy
NTUyNDVlOTkwNmFlNDYxOGNjZjllMWExLi40MzIzNTI3MDI5OTgwM2ExZGZhMGFkZDgwYWNlMDMx
MTBkOTgzZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9p
b3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQw
LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBVSVZpZXdDb250cm9sbGVy
ICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3dlYlBhZ2VQcm94eS51aUNsaWVudCgpLnBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcigqdGhpcyk7CiAKICAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC00OSw3ICs0OSw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShj
b25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICBBU1NFUlQoIW1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcik7CiAKLSAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1Bh
eW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxT
dHJpbmdzLCByZXF1ZXN0KTsKKyAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gcGxhdGZvcm1QYXlt
ZW50UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsK
IAogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGlu
aXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCldKTsKICAgICBpZiAoIW1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGUyNjAxZmZhMjBkODQwMDRhN2EyMDgwMGNmOWIw
MWFjYjcxNTcyZDEuLmJkMjU2NGM0M2NjODI2NzViM2Y5MGY3YWYzNTI4YzAyNmJiYWU1ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
VmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHRv
UEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdVUkwsIGxpbmtJY29u
VVJMU3RyaW5ncywgcmVxdWVzdCk7CisgICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHBsYXRmb3Jt
UGF5bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVz
dCk7CiAKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCA9IG1fc2hvd1BheW1lbnRV
SVJlcXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CkBA
IC01OCw2ICs1OCwxMCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfQogCisgICAgICAgIE5TV2lu
ZG93ICpwcmVzZW50aW5nV2luZG93ID0gcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fY2xpZW50
LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3coKnBheW1lbnRDb29yZGluYXRvclBy
b3h5KTsKKyAgICAgICAgaWYgKCFwcmVzZW50aW5nV2luZG93KQorICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwogICAgICAgICBBU1NFUlQodmlld0NvbnRyb2xs
ZXIpOwogCiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXltZW50Q29vcmRp
bmF0b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHldKTsKQEAgLTc1LDcgKzc5LDcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNv
bnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKICAgICAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclBy
b3h5LT5kaWRSZWFjaEZpbmFsU3RhdGUoKTsKICAgICAgICAgfV07CiAKLSAgICAgICAgW3BheW1l
bnRDb29yZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpIGJlZ2lu
U2hlZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6bnVsbHB0cl07CisgICAgICAgIFtwcmVzZW50aW5nV2luZG93IGJlZ2luU2hl
ZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAg
ICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaAppbmRleCBmY2QzZmFiZDQ2ZmIxMzUyNGQ0NmJkMTdmNGE5MDcwYTdhNDZjYTY2
Li5kOWRmN2YyZDcwZTY3MjAwNDFhOTE3NjhjYWIxZTg5ZWRjZjEyZGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2LDYgKzg2
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJv
b2wpOwogCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgp
IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CisKIHByb3RlY3RlZDoKICAgICAvLyBQ
cm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4NzBjMTdlMWM0ODhiNmFh
YjVjNThmNDIwMDA1YTkzMmU4YjlhMWZlLi5kYzYzMWRjYTYzOTBiODZjYTlkZDM4ZjVlODE4MzA1
NWVjZWM1MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODcyOSw2
ICs4NzI5LDM1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvCiAgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLmNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisKK0lQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAg
ICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKK30KKworSVBDOjpNZXNzYWdlUmVj
ZWl2ZXJNYXAmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAgICByZXR1cm4gcHJvY2Vz
cygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworfQorCitjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRv
clNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUoKS5jb25maWd1
cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Cit9CisKK3Vp
bnQ2NF90IFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yRGVzdGluYXRpb25JRChjb25z
dCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7CisgICAgcmV0dXJuIG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCAyYTUzOWY1NTRkNjExZGRjN2UyNjkyZGVlZWM1NzNhYmI1MWUyODU2Li42
NzUwYzk4Mzg1Y2QwOWRkMTFlYjI2ZjFiMzU5MzhjNTM4NTQ4ZjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYwLDcgKzE2MCw2IEBAIGNsYXNzIFVSTFJlcXVl
c3Q7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIENvbm5lY3Rpb247
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0OCw2ICszNDcsOSBAQCBjbGFzcyBXZWJQ
YWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdl
PgogI2VuZGlmCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudAorI2VuZGlmCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICAsIHB1YmxpYyBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CiAjZW5kaWYKICAgICAsIHB1YmxpYyBX
ZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKQEAgLTE5NzAsNiArMTk3MiwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIC8vIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpDbGllbnQKKyAgICBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5l
Y3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBJUEM6
Ok1lc3NhZ2VSZWNlaXZlck1hcCYgcGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyKGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgY29uc3QgU3RyaW5n
JiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29u
c3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcm
IHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIHVpbnQ2NF90IHBh
eW1lbnRDb29yZGluYXRvckRlc3RpbmF0aW9uSUQoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKSBmaW5hbDsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFVJVmlld0NvbnRy
b2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5
bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgTlNXaW5kb3cgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3coY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyNlbmRpZgorI2VuZGlmCisKICAgICBX
ZWFrUHRyPFBhZ2VDbGllbnQ+IG1fcGFnZUNsaWVudDsKICAgICBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyYmE2MzdkNmMwNjg3ZjM5NzA2OWZlZjAyOWIx
YmNiY2JiODA3MmM3Li42ZDE4NWZkZjA5NzNkOGJlMmEzYjRiNmQ1MzdmNTBkODRlNTg2OGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW1wb3J0ICJX
ZWJQYWdlTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTg0LDYgKzExODUsMjAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWVTaGFyZWQoUmVmPFcKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCitV
SVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7Cisg
ICAgcmV0dXJuIHVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7Cit9CisKK2Nv
bnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0
aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQoreworICAg
IHJldHVybiBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuY3REYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlKCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4MzAwNGQ3MGE4MTc3NzE2MTgz
ODRkNGQ4ZjI4MTVjZjIxMWE3NzZhLi45YWMxNDk5Mjk2MWJlNzY3NTY1MmI2NWYyMGVmODIwOGI0
OWZiOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC02NjEsNiArNjYxLDE1IEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpXZWJQ
YWdlUHJveHk6OnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKworTlNXaW5kb3cgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9y
UHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtV2luZG93KCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0N2JhOTFkZWU0MTExZWFkM2Y3
NmI4YmMxMGI5MDU5ZDEwYTUzZTIuLmM0ZWU3NWY4NTBkYjQzYmIyZGJjYTk3ZjkzOTJhZGVhYjkx
NGVhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTA3OTIsNyArMTA3OTIsNiBAQAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAwMDEyOEFG
RCAvKiBOZXRzY2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5NjIxMkI2
QURBMDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MTM0NDUyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTZCRDA1ODY2MjIwQ0U4QzIwMDBCRUQ1QyAvKiBOZXR3b3JrQWRD
bGlja0F0dHJpYnV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4MTYzNjdEQTIw
MDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODNGIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363464</attachid>
            <date>2019-03-03 12:14:55 -0800</date>
            <delta_ts>2019-03-03 12:16:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195219-20190303121454.patch</filename>
            <type>text/plain</type>
            <size>34408</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmZmFhNDkxNGE3N2IzYjhj
OWE2NmE4ZWZjMDMyZWViZmRlMzg3NmMuLjI2ZGVmNjE3YzgzOTM3MmEwOWFlNTllYTE2ZjhiNjA2
MDE5MGUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMDEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIFVudGFuZ2xlIFdl
YlBhZ2VQcm94eSBhbmQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTIxOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg1MTgwODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmF0aGVyIHRoYW4gaGF2aW5nIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
IGtub3cgYWJvdXQgV2ViUGFnZVByb3h5LCBnaXZlCisgICAgICAgIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5IGEgY2xpZW50IGludGVyZmFjZSB0aGF0IFdlYlBhZ2VQcm94eSBjb25mb3JtcyB0
by4KKworICAgICAgICBJbiBhIGZvbGxvdy1vbiBwYXRjaCwgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkgd2lsbCBoYXZlIGEgbm9uLVdlYlBhZ2VQcm94eSBjbGllbnQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkpOiBSZXBsYWNlZCB1c2Ugb2YKKyAgICAgICAgbV93ZWJQYWdlUHJveHkgd2l0aCBt
X2NsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOiBJ
bXBsZW1lbnRlZAorICAgICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXIgdmlhIG1fY2xpZW50LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTogUmVwbGFjZWQg
dXNlIG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGllbnQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5j
ZWxQYXltZW50U2Vzc2lvbik6IENhbGxlZCBvdXIgb3duCisgICAgICAgIE1lc3NhZ2VTZW5kZXI6
OnNlbmQgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBtX3dlYlBhZ2VQcm94eS4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1
dGhvcml6ZVBheW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmRpZFNlbGVjdFBheW1lbnRNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDogRGVmaW5lZCB0aGUgQ2xpZW50IGFi
c3RyYWN0IGNsYXNzIGFuZAorICAgICAgICBjaGFuZ2VkIG1fd2ViUGFnZVByb3h5IHRvIG1fY2xp
ZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkKTogUmVwbGFjZWQgdXNlIG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGll
bnQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bVBheW1lbnRSZXF1ZXN0KTogUmVuYW1lZCBmcm9tIHRvUEtQYXltZW50UmVxdWVzdC4KKyAgICAg
ICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KTogUmVuYW1lZCB0byBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVu
dFVJKTogUmVwbGFjZWQgdXNlIG9mIG1fd2ViUGFnZVByb3h5CisgICAgICAgIHdpdGggbV9jbGll
bnQuCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJNYXApOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50
Q29vcmRpbmF0b3JDb25uZWN0aW9uKTogSW1wbGVtZW50ZWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OkNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklE
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNYWRlIFdlYlBh
Z2VQcm94eSBkZXJpdmUgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcik6IEltcGxlbWVudGVkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyk6IERpdHRvLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAyLTI4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSFRUUFNVcGdyYWRlTGlzdC5kYiBkYXRhYmFzZSBzaG91
bGQgYmUgb3BlbmVkIGluIHJlYWRvbmx5IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cAppbmRleCA0Mjg2NTFmNmVhOWIwOGFiYjhjMTk0OTA4ZjM4MTRkODIzM2RmNGE2Li5iNDc0NWUy
ZWIwOGM2Y2U0MzI1MTFlODUzMmI3MjFiYjg4YjI5NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAor
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgpAQCAtNDIsMTIgKzQzLDEwIEBA
IHN0YXRpYyBXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiYgYWN0aXZlUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkoKQogICAgIHJldHVybiBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5nZXQoKTsKIH0KIAotV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQotICAgIDogbV93ZWJQ
YWdlUHJveHkod2ViUGFnZVByb3h5KQotICAgICwgbV9zdGF0ZShTdGF0ZTo6SWRsZSkKLSAgICAs
IG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUoTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUp
CitXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHko
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGll
bnQgeyBjbGllbnQgfQogewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9jbGll
bnQucGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyKCp0aGlzKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckRlc3RpbmF0aW9uSUQoKnRoaXMp
LCAqdGhpcyk7CiAgICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTYsNyAr
NTUsMTcgQEAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAgIGhpZGVQ
YXltZW50VUkoKTsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX2NsaWVudC5wYXlt
ZW50Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yRGVzdGluYXRpb25JRCgqdGhpcykpOwor
fQorCitJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LnBheW1lbnRD
b29yZGluYXRvckNvbm5lY3Rpb24oKnRoaXMpOworfQorCit1aW50NjRfdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKCp0aGlzKTsK
IH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6YXZhaWxhYmxlUGF5bWVudE5l
dHdvcmtzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC03MSwyNSArODAsMTcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYK
IAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZG9tYWluTmFtZSwgdWludDY0X3QgcmVxdWVzdElEKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFt3ZWFrVGhpcywgcmVxdWVzdElE
XShib29sIGNhbk1ha2VQYXltZW50cykgewotICAgICAgICBhdXRvIHBheW1lbnRDb29yZGluYXRv
clByb3h5ID0gd2Vha1RoaXMuZ2V0KCk7Ci0gICAgICAgIGlmICghcGF5bWVudENvb3JkaW5hdG9y
UHJveHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9y
UHJveHktPm1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6Q2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRSZXBseShyZXF1ZXN0SUQsIGNhbk1ha2VQ
YXltZW50cykpOworICAgIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobWVy
Y2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHJlcXVlc3RJRF0oYm9vbCBjYW5NYWtlUGF5bWVudHMpIHsKKyAgICAgICAgaWYgKGF1dG8g
cGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKSkKKyAgICAgICAgICAgIHBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0
b3I6OkNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHkocmVxdWVzdElELCBjYW5NYWtl
UGF5bWVudHMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBkb21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBwbGF0Zm9ybU9wZW5QYXltZW50U2V0
dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMsIHJlcXVlc3RJRF0o
Ym9vbCByZXN1bHQpIHsKLSAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdl
YWtUaGlzLmdldCgpOwotICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Ok9wZW5QYXlt
ZW50U2V0dXBSZXBseShyZXF1ZXN0SUQsIHJlc3VsdCkpOworICAgIHBsYXRmb3JtT3BlblBheW1l
bnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcmVxdWVzdElEXShib29sIHJlc3VsdCkgeworICAgICAgICBpZiAoYXV0
byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtUaGlzLmdldCgpKQorICAgICAgICAgICAg
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvcjo6T3BlblBheW1lbnRTZXR1cFJlcGx5KHJlcXVlc3RJRCwgcmVzdWx0KSk7CiAgICAgfSk7
CiB9CiAKQEAgLTIyNCw3ICsyMjUsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGNhbkNhbmNlbCgpKTsK
IAotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6RGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjpEaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpKTsKIAogICAgIGRpZFJl
YWNoRmluYWxTdGF0ZSgpOwogfQpAQCAtMjM0LDEzICsyMzUsMTMgQEAgdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKICAgICBB
U1NFUlQobV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0
ZTo6SWRsZSk7CiAKICAgICBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID0gTWVyY2hhbnRWYWxp
ZGF0aW9uU3RhdGU6OlZhbGlkYXRpbmc7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpWYWxpZGF0ZU1lcmNoYW50KHVybC5zdHJpbmcoKSkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6VmFsaWRhdGVNZXJj
aGFudCh1cmwuc3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQog
ewogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXplZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZEF1dGhvcml6ZVBheW1lbnQo
cGF5bWVudCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlk
QXV0aG9yaXplUGF5bWVudChwYXltZW50KSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCkBA
IC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXkKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U2hpcHBpbmdN
ZXRob2RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlw
cGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVu
dENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2Vi
Q29yZTo6UGF5bWVudAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogCiAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDsKLSAgICBtX3dlYlBh
Z2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRh
Y3QpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0UGF5
bWVudE1ldGhvZChjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQpA
QCAtMjY0LDcgKzI2NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNl
bGVjdFBheW1lbnRNZXRob2QoY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lCiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKICAgICBtX3N0YXRlID0gU3RhdGU6OlBheW1lbnRN
ZXRob2RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2VsZWN0UGF5bWVu
dE1ldGhvZChwYXltZW50TWV0aG9kKSk7CiB9CiAKIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmNhbkJlZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGUy
ZGE0NDRmZjAyMDE3ODI0MDQ5MTU5ZGRjNzE1MTViMWRiODIwMWYuLmIwMmU0YzcwMDM1ZjM0NDQy
ZmZhNDkzZDY4NzFmYjlmZTJiNjRlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDE3ICsyOCwxOSBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5QWRkaXRpb25zLmg+CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5QWRkaXRpb25zLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNl
IElQQyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIE1l
c3NhZ2VSZWNlaXZlck1hcDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTUgKzU0
LDM0IEBAIGNsYXNzIFBheW1lbnRNZXRob2Q7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JKQ19D
TEFTUyBOU1dpbmRvdzsKIE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOworT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBVSVZpZXdD
b250cm9sbGVyOwogT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IAotY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+IHsKK2NsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4gewogcHVibGljOgotICAgIGV4cGxp
Y2l0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOworICAgIHN0cnVj
dCBDbGllbnQgeworICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICAg
ICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24o
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIHBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5h
dGlvbklEKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVu
dENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgPSAwOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVu
dENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgPSAwOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICB2aXJ0dWFsIE5TV2luZG93ICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93KGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworI2VuZGlmCisgICAgfTsKKwor
ICAgIGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5KENsaWVudCYpOwogICAgIH5X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50
U2Vzc2lvbigpOwpAQCAtNzMsMTEgKzk0LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZGVQYXlt
ZW50VUkoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAotICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
CiAgICAgdm9pZCBhdmFpbGFibGVQYXltZW50TmV0d29ya3MoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkb21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpOwpAQCAtMTA4LDggKzEzMywxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+Jik7CiAgICAg
dm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21w
bGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxQS1Bh
eW1lbnRSZXF1ZXN0PiBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGNvbnN0IFVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CisjZW5kaWYKIAotICAgIFdlYlBhZ2VQcm94
eSYgbV93ZWJQYWdlUHJveHk7CisgICAgQ2xpZW50JiBtX2NsaWVudDsKIAogICAgIGVudW0gY2xh
c3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KQEAgLTEz
Miw3ICsxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFBheW1lbnRNZXRob2RTZWxlY3Rl
ZCAtIERpc3BhdGNoaW5nIHRoZSBwYXltZW50bWV0aG9kc2VsZWN0ZWQgZXZlbnQgYW5kIHdhaXRp
bmcgZm9yIGEgcmVwbHkuCiAgICAgICAgIFBheW1lbnRNZXRob2RTZWxlY3RlZCwKLSAgICB9IG1f
c3RhdGU7CisgICAgfSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKIAogICAgIGVudW0gY2xhc3Mg
TWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhh
cHBlbmluZy4KQEAgLTE0Myw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFZhbGlk
YXRpb25Db21wbGV0ZSAtIEEgbWVyY2hhbnQgc2Vzc2lvbiBoYXMgYmVlbiBzZW50IGFsb25nIHRv
IFBhc3NLaXQuCiAgICAgICAgIFZhbGlkYXRpb25Db21wbGV0ZQotICAgIH0gbV9tZXJjaGFudFZh
bGlkYXRpb25TdGF0ZTsKKyAgICB9IG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgeyBNZXJjaGFu
dFZhbGlkYXRpb25TdGF0ZTo6SWRsZSB9OwogCiAgICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggYzRkNzlm
ZTRjMTJjOWFiODU0ZmJiZDQyNTEzYjc4NTM4MzA3MmFlNy4uZDEwMWJlMTU3MDY2NjJmOTMwNmJl
YmU3M2VkNWQzZDc5OTNjYzk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMSwxNCArMzEsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNz
S2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci1jbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsK
LQotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdl
UHJveHkmLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
OwotCi19Ci0KIEBpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUgOiBOU09iamVjdCA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxl
Z2F0ZT4gewogQHBhY2thZ2UKICAgICBXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
KiBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCBlYWY1YmNkNzQ0MmExNDFjZTc2Y2IxNWVkNmFh
YjZiMzIxZjRkNTRkLi4wZDNkNmU3NjQzNDdkYTY5OWRjYzY1NzY3MTRjODFlNTNhMTZmMjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5oIgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIApAQCAtMjY0LDcgKzI2
NCw3IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzKCkKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
bihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LndlYnNpdGVE
YXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5B
bmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fY2xp
ZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cigqdGhpcyksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJv
cik7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUg
dG9BUElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogfQogI2Vu
ZGlmCiAKLVJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0
IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKK1JldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChj
b25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJl
cXVlc3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50
UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCkBAIC01MDYsMTcgKzUwNiwxOCBAQCBSZXRhaW5Q
dHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5LCBjb25zdAogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2lu
ZyByZXNwb25kc1RvU2VsZWN0b3IsIHRoaXMgc2hvdWxkIHVzZSBhIHByb3BlciAjaWYgdmVyc2lv
biBjaGVjay4KLSAgICBhdXRvJiBjb25maWd1cmF0aW9uID0gd2ViUGFnZVByb3h5LndlYnNpdGVE
YXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCk7CisgICAgYXV0byYgYnVuZGxlSWRlbnRpZmllciA9
IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigqdGhpcyk7CisgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBbcmVz
dWx0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyOildKQorICAgICAgICBbcmVzdWx0IHNldFNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcjpidW5kbGVJZGVudGlmaWVyXTsKIAotICAgIGlmICghY29uZmlndXJhdGlv
bi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKS5pc0VtcHR5KCkgJiYgW3Jlc3Vs
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcjopXSkKLSAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXI6Y29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKV07Ci0KLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCkuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KV0pCi0gICAg
ICAgIFtyZXN1bHQgc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOmNvbmZp
Z3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCldOworICAgIGF1
dG8mIHNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JTb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKnRoaXMpOworICAgIGlmICghc2Vjb25k
YXJ5SWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjopXSkKKyAgICAg
ICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6c2Vjb25k
YXJ5SWRlbnRpZmllcl07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkKLSAgICAg
ICAgW3Jlc3VsdCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6d2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGUoKV07CisgICAgYXV0byYgc2VydmljZVR5cGUgPSBtX2NsaWVudC5wYXltZW50Q29v
cmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKnRoaXMpOworICAgIGlmICghc2Vy
dmljZVR5cGUuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6KV0pCisgICAgICAgIFtyZXN1bHQgc2V0
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOnNlcnZpY2VUeXBlXTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxl
UGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpp
bmRleCAzNmI0YmZlMDQyZWFhYjcyNTUyNDVlOTkwNmFlNDYxOGNjZjllMWExLi40MzIzNTI3MDI5
OTgwM2ExZGZhMGFkZDgwYWNlMDMxMTBkOTgzZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5SU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25z
dCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3dlYlBh
Z2VQcm94eS51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworICAgIFVJVmll
d0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fY2xpZW50LnBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyk7CiAKICAgICBpZiAoIXBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICBBU1NF
UlQoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAKLSAgICBhdXRvIHBh
eW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5h
dGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKKyAgICBhdXRvIHBheW1lbnRS
ZXF1ZXN0ID0gcGxhdGZvcm1QYXltZW50UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25V
UkxTdHJpbmdzLCByZXF1ZXN0KTsKIAogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3Qu
Z2V0KCldKTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGUyNjAxZmZh
MjBkODQwMDRhN2EyMDgwMGNmOWIwMWFjYjcxNTcyZDEuLmJkMjU2NGM0M2NjODI2NzViM2Y5MGY3
YWYzNTI4YzAyNmJiYWU1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBv
cmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0
byBwYXltZW50UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3Jp
Z2luYXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CisgICAgYXV0byBwYXlt
ZW50UmVxdWVzdCA9IHBsYXRmb3JtUGF5bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJ
Y29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0
U2VlZCA9IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7CkBAIC01OCw2ICs1OCwxMCBAQCB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGlu
Z1VSTAogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAg
ICAgfQogCisgICAgICAgIE5TV2luZG93ICpwcmVzZW50aW5nV2luZG93ID0gcGF5bWVudENvb3Jk
aW5hdG9yUHJveHktPm1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3co
KnBheW1lbnRDb29yZGluYXRvclByb3h5KTsKKyAgICAgICAgaWYgKCFwcmVzZW50aW5nV2luZG93
KQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwogICAgICAg
ICBBU1NFUlQodmlld0NvbnRyb2xsZXIpOwogCiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclBy
b3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHld
KTsKQEAgLTc1LDcgKzc5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKICAgICAgICAgICAg
IHBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRSZWFjaEZpbmFsU3RhdGUoKTsKICAgICAgICAg
fV07CiAKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5w
bGF0Zm9ybVdpbmRvdygpIGJlZ2luU2hlZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hl
ZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bnVsbHB0cl07CisgICAgICAgIFtwcmVz
ZW50aW5nV2luZG93IGJlZ2luU2hlZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRX
aW5kb3cuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCBmY2QzZmFiZDQ2ZmIxMzUyNGQ0
NmJkMTdmNGE5MDcwYTdhNDZjYTY2Li5kOWRmN2YyZDcwZTY3MjAwNDFhOTE3NjhjYWIxZTg5ZWRj
ZjEyZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAm
IG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CisK
IHByb3RlY3RlZDoKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA4NzBjMTdlMWM0ODhiNmFhYjVjNThmNDIwMDA1YTkzMmU4YjlhMWZlLi5kYzYzMWRjYTYz
OTBiODZjYTlkZDM4ZjVlODE4MzA1NWVjZWM1MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtODcyOSw2ICs4NzI5LDM1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVh
ckFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK0lQQzo6Q29ubmVjdGlvbiogV2ViUGFn
ZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikKK3sKKyAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsK
K30KKworSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yTWVzc2FnZVJlY2VpdmVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikK
K3sKKyAgICByZXR1cm4gcHJvY2VzcygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworfQorCitjb25z
dCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJv
eHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKCk7Cit9CisKK3VpbnQ2NF90IFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5h
dG9yRGVzdGluYXRpb25JRChjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7Cisg
ICAgcmV0dXJuIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCk7Cit9CisKKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyYTUzOWY1NTRkNjExZGRjN2UyNjky
ZGVlZWM1NzNhYmI1MWUyODU2Li5kYjFhZGMzODEzMTBhMmJlOWU1NTgxNDIwOWVlN2E5NmNmYzVl
Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYwLDcgKzE2
MCw2IEBAIGNsYXNzIFVSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2Rl
cjsKLWNsYXNzIENvbm5lY3Rpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0OCw2
ICszNDcsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBwdWJsaWMgV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudAorI2VuZGlmCisjaWYgRU5BQkxFKEFQUExF
X1BBWSkKKyAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CiAj
ZW5kaWYKICAgICAsIHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50CiAgICAgLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKQEAgLTE5NzAsNiArMTk3MiwyMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBV
UkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFVSTCYg
cmVkaXJlY3RVUkwpOwogI2VuZGlmCiAKKyAgICAvLyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6Q2xpZW50CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBJUEM6OkNvbm5lY3Rpb24qIHBh
eW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSBmaW5hbDsKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgcGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZVJlY2VpdmVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmlu
YWw7CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5h
bDsKKyAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZp
bmFsOworICAgIHVpbnQ2NF90IHBheW1lbnRDb29yZGluYXRvckRlc3RpbmF0aW9uSUQoY29uc3Qg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShB
UFBMRV9QQVkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgVUlWaWV3Q29udHJvbGxlciAq
cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBM
QVRGT1JNKE1BQykKKyAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dp
bmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworI2VuZGlmCisK
ICAgICBXZWFrUHRyPFBhZ2VDbGllbnQ+IG1fcGFnZUNsaWVudDsKICAgICBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyYmE2MzdkNmMwNjg3ZjM5NzA2OWZl
ZjAyOWIxYmNiY2JiODA3MmM3Li42ZDE4NWZkZjA5NzNkOGJlMmEzYjRiNmQ1MzdmNTBkODRlNTg2
OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW1w
b3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTg0LDYgKzExODUsMjAgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQorCitVSVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
Cit7CisgICAgcmV0dXJuIHVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7Cit9
CisKK2NvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQor
eworICAgIHJldHVybiBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuY3RE
YXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4MzAwNGQ3MGE4MTc3
NzE2MTgzODRkNGQ4ZjI4MTVjZjIxMWE3NzZhLi45YWMxNDk5Mjk2MWJlNzY3NTY1MmI2NWYyMGVm
ODIwOGI0OWZiOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02NjEsNiArNjYxLDE1IEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
ICpXZWJQYWdlUHJveHk6OnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCkKIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKEFQUExFX1BBWSkKKworTlNXaW5kb3cgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtV2luZG93KCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0N2JhOTFkZWU0MTEx
ZWFkM2Y3NmI4YmMxMGI5MDU5ZDEwYTUzZTIuLmM0ZWU3NWY4NTBkYjQzYmIyZGJjYTk3ZjkzOTJh
ZGVhYjkxNGVhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTA3OTIsNyArMTA3OTIsNiBAQAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAw
MDEyOEFGRCAvKiBOZXRzY2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5
NjIxMkI2QURBMDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MTM0NDUyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRDA1ODY2MjIwQ0U4QzIwMDBCRUQ1QyAvKiBOZXR3
b3JrQWRDbGlja0F0dHJpYnV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4MTYz
NjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyog
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODNGIC8qIE5ldHdvcmtNRE5TUmVnaXN0
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363465</attachid>
            <date>2019-03-03 12:17:01 -0800</date>
            <delta_ts>2019-03-03 12:25:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195219-20190303121700.patch</filename>
            <type>text/plain</type>
            <size>34405</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmZmFhNDkxNGE3N2IzYjhj
OWE2NmE4ZWZjMDMyZWViZmRlMzg3NmMuLmIxYTBiODQyZGIyZmFmNDI2NzNkZDY1ZWIwODg0NGJj
NDVhZjBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMDEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIFVudGFuZ2xlIFdl
YlBhZ2VQcm94eSBhbmQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTIxOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg1MTgwODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgUmF0aGVyIHRoYW4gaGF2aW5nIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IGtu
b3cgYWJvdXQgV2ViUGFnZVByb3h5LCBnaXZlCisgICAgICAgIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5IGEgY2xpZW50IGludGVyZmFjZSB0aGF0IFdlYlBhZ2VQcm94eSBjb25mb3JtcyB0by4K
KworICAgICAgICBJbiBhIGZvbGxvdy1vbiBwYXRjaCwgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkgd2lsbCBoYXZlIGEgbm9uLVdlYlBhZ2VQcm94eSBjbGllbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkpOiBSZXBsYWNlZCB1c2Ugb2YKKyAgICAgICAgbV93ZWJQYWdlUHJveHkgd2l0aCBtX2Ns
aWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOiBJbXBs
ZW1lbnRlZAorICAgICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXIgdmlhIG1fY2xpZW50LgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTogUmVwbGFjZWQgdXNl
IG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGllbnQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQ
YXltZW50U2Vzc2lvbik6IENhbGxlZCBvdXIgb3duCisgICAgICAgIE1lc3NhZ2VTZW5kZXI6OnNl
bmQgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBtX3dlYlBhZ2VQcm94eS4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1dGhv
cml6ZVBheW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRp
ZFNlbGVjdFBheW1lbnRNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDogRGVmaW5lZCB0aGUgQ2xpZW50IGFic3Ry
YWN0IGNsYXNzIGFuZAorICAgICAgICBjaGFuZ2VkIG1fd2ViUGFnZVByb3h5IHRvIG1fY2xpZW50
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KTogUmVwbGFjZWQgdXNlIG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGllbnQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBh
eW1lbnRSZXF1ZXN0KTogUmVuYW1lZCBmcm9tIHRvUEtQYXltZW50UmVxdWVzdC4KKyAgICAgICAg
KFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KTogUmVuYW1lZCB0byBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KTogUmVwbGFjZWQgdXNlIG9mIG1fd2ViUGFnZVByb3h5CisgICAgICAgIHdpdGggbV9jbGllbnQu
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjptZXNzYWdlUmVjZWl2ZXJNYXApOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JDb25uZWN0aW9uKTogSW1wbGVtZW50ZWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OkNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JNZXNzYWdlUmVjZWl2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNYWRlIFdlYlBhZ2VQ
cm94eSBkZXJpdmUgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cik6IEltcGxlbWVudGVkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVj
dGlvblNlcnZpY2VUeXBlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yUHJlc2VudGluZ1dpbmRvdyk6IERpdHRvLgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAyLTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgSFRUUFNVcGdyYWRlTGlzdC5kYiBkYXRhYmFzZSBzaG91bGQg
YmUgb3BlbmVkIGluIHJlYWRvbmx5IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApp
bmRleCA0Mjg2NTFmNmVhOWIwOGFiYjhjMTk0OTA4ZjM4MTRkODIzM2RmNGE2Li5iNDc0NWUyZWIw
OGM2Y2U0MzI1MTFlODUzMmI3MjFiYjg4YjI5NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIgpAQCAtNDIsMTIgKzQzLDEwIEBAIHN0
YXRpYyBXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiYgYWN0aXZlUGF5bWVudENv
b3JkaW5hdG9yUHJveHkoKQogICAgIHJldHVybiBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5nZXQoKTsKIH0KIAotV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQotICAgIDogbV93ZWJQYWdl
UHJveHkod2ViUGFnZVByb3h5KQotICAgICwgbV9zdGF0ZShTdGF0ZTo6SWRsZSkKLSAgICAsIG1f
bWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUoTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUpCitX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQg
eyBjbGllbnQgfQogewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9jbGllbnQu
cGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyKCp0aGlzKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckRlc3RpbmF0aW9uSUQoKnRoaXMpLCAq
dGhpcyk7CiAgICAgZmluaXNoQ29uc3RydWN0aW9uKCp0aGlzKTsKIH0KIApAQCAtNTYsNyArNTUs
MTcgQEAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAgIGhpZGVQYXlt
ZW50VUkoKTsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX2NsaWVudC5wYXltZW50
Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yRGVzdGluYXRpb25JRCgqdGhpcykpOworfQor
CitJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LnBheW1lbnRDb29y
ZGluYXRvckNvbm5lY3Rpb24oKnRoaXMpOworfQorCit1aW50NjRfdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKCp0aGlzKTsKIH0K
IAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6YXZhaWxhYmxlUGF5bWVudE5ldHdv
cmtzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC03MSwyNSArODAsMTcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYKIAog
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2
ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9t
YWluTmFtZSwgdWludDY0X3QgcmVxdWVzdElEKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyk7Ci0gICAgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2Fy
ZChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFt3ZWFrVGhpcywgcmVxdWVzdElEXShi
b29sIGNhbk1ha2VQYXltZW50cykgewotICAgICAgICBhdXRvIHBheW1lbnRDb29yZGluYXRvclBy
b3h5ID0gd2Vha1RoaXMuZ2V0KCk7Ci0gICAgICAgIGlmICghcGF5bWVudENvb3JkaW5hdG9yUHJv
eHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJv
eHktPm1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6
Q2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRSZXBseShyZXF1ZXN0SUQsIGNhbk1ha2VQYXlt
ZW50cykpOworICAgIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobWVyY2hh
bnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHJlcXVlc3RJRF0oYm9vbCBjYW5NYWtlUGF5bWVudHMpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF5
bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKSkKKyAgICAgICAgICAgIHBheW1l
bnRDb29yZGluYXRvclByb3h5LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6
OkNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkUmVwbHkocmVxdWVzdElELCBjYW5NYWtlUGF5
bWVudHMpKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAo
bWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMsIHJlcXVlc3RJRF0oYm9v
bCByZXN1bHQpIHsKLSAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtU
aGlzLmdldCgpOwotICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3dlYlBh
Z2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Ok9wZW5QYXltZW50
U2V0dXBSZXBseShyZXF1ZXN0SUQsIHJlc3VsdCkpOworICAgIHBsYXRmb3JtT3BlblBheW1lbnRT
ZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcmVxdWVzdElEXShib29sIHJlc3VsdCkgeworICAgICAgICBpZiAoYXV0byBw
YXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtUaGlzLmdldCgpKQorICAgICAgICAgICAgcGF5
bWVudENvb3JkaW5hdG9yUHJveHktPnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6T3BlblBheW1lbnRTZXR1cFJlcGx5KHJlcXVlc3RJRCwgcmVzdWx0KSk7CiAgICAgfSk7CiB9
CiAKQEAgLTIyNCw3ICsyMjUsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpk
aWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGNhbkNhbmNlbCgpKTsKIAot
ICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6
RGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpEaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpKTsKIAogICAgIGRpZFJlYWNo
RmluYWxTdGF0ZSgpOwogfQpAQCAtMjM0LDEzICsyMzUsMTMgQEAgdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKICAgICBBU1NF
UlQobV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6
SWRsZSk7CiAKICAgICBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID0gTWVyY2hhbnRWYWxpZGF0
aW9uU3RhdGU6OlZhbGlkYXRpbmc7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpWYWxpZGF0ZU1lcmNoYW50KHVybC5zdHJpbmcoKSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6VmFsaWRhdGVNZXJjaGFu
dCh1cmwuc3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQogewog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXplZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZEF1dGhvcml6ZVBheW1lbnQocGF5
bWVudCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkQXV0
aG9yaXplUGF5bWVudChwYXltZW50KSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCkBAIC0y
NDgsNyArMjQ5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0
U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U2hpcHBpbmdNZXRo
b2RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENv
bnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29y
ZTo6UGF5bWVudAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogCiAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQ
cm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3Qp
KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZChjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQpAQCAt
MjY0LDcgKzI2NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVj
dFBheW1lbnRNZXRob2QoY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lCiAgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKICAgICBtX3N0YXRlID0gU3RhdGU6OlBheW1lbnRNZXRo
b2RTZWxlY3RlZDsKLSAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2VsZWN0UGF5bWVudE1l
dGhvZChwYXltZW50TWV0aG9kKSk7CiB9CiAKIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OmNhbkJlZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGUyZGE0
NDRmZjAyMDE3ODI0MDQ5MTU5ZGRjNzE1MTViMWRiODIwMWYuLmIwMmU0YzcwMDM1ZjM0NDQyZmZh
NDkzZDY4NzFmYjlmZTJiNjRlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
LDE3ICsyOCwxOSBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5QWRkaXRpb25zLmg+CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5QWRkaXRpb25zLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIElQ
QyB7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIE1lc3Nh
Z2VSZWNlaXZlck1hcDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTUgKzU0LDM0
IEBAIGNsYXNzIFBheW1lbnRNZXRob2Q7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JKQ19DTEFT
UyBOU1dpbmRvdzsKIE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOworT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBVSVZpZXdDb250
cm9sbGVyOwogT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAot
Y2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
IHsKK2NsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4gewogcHVibGljOgotICAgIGV4cGxpY2l0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOworICAgIHN0cnVjdCBD
bGllbnQgeworICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAg
dmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIHBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29u
c3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXJNYXAmIHBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAgICAgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0g
MDsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlv
bklEKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgPSAwOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgPSAwOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2
aXJ0dWFsIE5TV2luZG93ICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93KGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworI2VuZGlmCisgICAgfTsKKworICAg
IGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5KENsaWVudCYpOwogICAgIH5XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vz
c2lvbigpOwpAQCAtNzMsMTEgKzk0LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZGVQYXltZW50
VUkoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAotICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisg
ICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAg
ICAgdm9pZCBhdmFpbGFibGVQYXltZW50TmV0d29ya3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpOwpAQCAtMTA4LDggKzEzMywxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+Jik7CiAgICAgdm9p
ZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0
ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0PiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxQS1BheW1l
bnRSZXF1ZXN0PiBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CisjZW5kaWYKIAotICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlUHJveHk7CisgICAgQ2xpZW50JiBtX2NsaWVudDsKIAogICAgIGVudW0gY2xhc3Mg
U3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KQEAgLTEzMiw3
ICsxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFBheW1lbnRNZXRob2RTZWxlY3RlZCAt
IERpc3BhdGNoaW5nIHRoZSBwYXltZW50bWV0aG9kc2VsZWN0ZWQgZXZlbnQgYW5kIHdhaXRpbmcg
Zm9yIGEgcmVwbHkuCiAgICAgICAgIFBheW1lbnRNZXRob2RTZWxlY3RlZCwKLSAgICB9IG1fc3Rh
dGU7CisgICAgfSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKIAogICAgIGVudW0gY2xhc3MgTWVy
Y2hhbnRWYWxpZGF0aW9uU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBl
bmluZy4KQEAgLTE0Myw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFZhbGlkYXRp
b25Db21wbGV0ZSAtIEEgbWVyY2hhbnQgc2Vzc2lvbiBoYXMgYmVlbiBzZW50IGFsb25nIHRvIFBh
c3NLaXQuCiAgICAgICAgIFZhbGlkYXRpb25Db21wbGV0ZQotICAgIH0gbV9tZXJjaGFudFZhbGlk
YXRpb25TdGF0ZTsKKyAgICB9IG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgeyBNZXJjaGFudFZh
bGlkYXRpb25TdGF0ZTo6SWRsZSB9OwogCiAgICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcj4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OwogICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZT4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggYzRkNzlmZTRj
MTJjOWFiODU0ZmJiZDQyNTEzYjc4NTM4MzA3MmFlNy4uZDEwMWJlMTU3MDY2NjJmOTMwNmJlYmU3
M2VkNWQzZDc5OTNjYzk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSwxNCArMzEsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1j
bGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLQot
UmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJv
eHkmLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpOwot
Ci19Ci0KIEBpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgOiBOU09iamVjdCA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxlZ2F0
ZT4gewogQHBhY2thZ2UKICAgICBXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KiBf
d2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCBlYWY1YmNkNzQ0MmExNDFjZTc2Y2IxNWVkNmFhYjZi
MzIxZjRkNTRkLi4wZDNkNmU3NjQzNDdkYTY5OWRjYzY1NzY3MTRjODFlNTNhMTZmMjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4
ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5oIgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIApAQCAtMjY0LDcgKzI2NCw3
IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1l
bnRzKCkKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiht
ZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LndlYnNpdGVEYXRh
U3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRT
b3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fY2xpZW50
LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigq
dGhpcyksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7
CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUgdG9B
UElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogfQogI2VuZGlm
CiAKLVJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlUHJveHksIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZl
Y3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKK1JldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0
PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChjb25z
dCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVl
c3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVx
dWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCkBAIC01MDYsMTcgKzUwNiwxOCBAQCBSZXRhaW5QdHI8
UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZVByb3h5LCBjb25zdAogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2luZyBy
ZXNwb25kc1RvU2VsZWN0b3IsIHRoaXMgc2hvdWxkIHVzZSBhIHByb3BlciAjaWYgdmVyc2lvbiBj
aGVjay4KLSAgICBhdXRvJiBjb25maWd1cmF0aW9uID0gd2ViUGFnZVByb3h5LndlYnNpdGVEYXRh
U3RvcmUoKS5jb25maWd1cmF0aW9uKCk7CisgICAgYXV0byYgYnVuZGxlSWRlbnRpZmllciA9IG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigqdGhpcyk7CisgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBbcmVzdWx0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyOildKQorICAgICAgICBbcmVzdWx0IHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcjpidW5kbGVJZGVudGlmaWVyXTsKIAotICAgIGlmICghY29uZmlndXJhdGlvbi5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcjopXSkKLSAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXI6Y29uZmlndXJhdGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KV07Ci0KLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKCkuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KV0pCi0gICAgICAg
IFtyZXN1bHQgc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOmNvbmZpZ3Vy
YXRpb24uc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCldOworICAgIGF1dG8m
IHNlY29uZGFyeUlkZW50aWZpZXIgPSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JTb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKnRoaXMpOworICAgIGlmICghc2Vjb25kYXJ5
SWRlbnRpZmllci5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjopXSkKKyAgICAgICAg
W3Jlc3VsdCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6c2Vjb25kYXJ5
SWRlbnRpZmllcl07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkKLSAgICAgICAg
W3Jlc3VsdCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6d2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUoKV07CisgICAgYXV0byYgc2VydmljZVR5cGUgPSBtX2NsaWVudC5wYXltZW50Q29vcmRp
bmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKnRoaXMpOworICAgIGlmICghc2Vydmlj
ZVR5cGUuaXNFbXB0eSgpICYmIFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihz
ZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU6KV0pCisgICAgICAgIFtyZXN1bHQgc2V0Q1RE
YXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOnNlcnZpY2VUeXBlXTsKICNlbmRpZgogCiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRl
eCAzNmI0YmZlMDQyZWFhYjcyNTUyNDVlOTkwNmFlNDYxOGNjZjllMWExLi40MzIzNTI3MDI5OTgw
M2ExZGZhMGFkZDgwYWNlMDMxMTBkOTgzZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5SU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3dlYlBhZ2VQ
cm94eS51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworICAgIFVJVmlld0Nv
bnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fY2xpZW50LnBheW1lbnRDb29y
ZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyk7CiAKICAgICBpZiAoIXByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICBBU1NFUlQo
IW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAKLSAgICBhdXRvIHBheW1l
bnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5hdGlu
Z1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKKyAgICBhdXRvIHBheW1lbnRSZXF1
ZXN0ID0gcGxhdGZvcm1QYXltZW50UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxT
dHJpbmdzLCByZXF1ZXN0KTsKIAogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0
KCldKTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGUyNjAxZmZhMjBk
ODQwMDRhN2EyMDgwMGNmOWIwMWFjYjcxNTcyZDEuLmJkMjU2NGM0M2NjODI2NzViM2Y5MGY3YWYz
NTI4YzAyNmJiYWU1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxl
UGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBw
YXltZW50UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2lu
YXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CisgICAgYXV0byBwYXltZW50
UmVxdWVzdCA9IHBsYXRmb3JtUGF5bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29u
VVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0U2Vl
ZCA9IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyk7CkBAIC01OCw2ICs1OCwxMCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TAogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAg
fQogCisgICAgICAgIE5TV2luZG93ICpwcmVzZW50aW5nV2luZG93ID0gcGF5bWVudENvb3JkaW5h
dG9yUHJveHktPm1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3coKnBh
eW1lbnRDb29yZGluYXRvclByb3h5KTsKKyAgICAgICAgaWYgKCFwcmVzZW50aW5nV2luZG93KQor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwogICAgICAgICBB
U1NFUlQodmlld0NvbnRyb2xsZXIpOwogCiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5
LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHldKTsK
QEAgLTc1LDcgKzc5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKICAgICAgICAgICAgIHBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRSZWFjaEZpbmFsU3RhdGUoKTsKICAgICAgICAgfV07
CiAKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0
Zm9ybVdpbmRvdygpIGJlZ2luU2hlZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRX
aW5kb3cuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bnVsbHB0cl07CisgICAgICAgIFtwcmVzZW50
aW5nV2luZG93IGJlZ2luU2hlZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5k
b3cuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCBmY2QzZmFiZDQ2ZmIxMzUyNGQ0NmJk
MTdmNGE5MDcwYTdhNDZjYTY2Li5kOWRmN2YyZDcwZTY3MjAwNDFhOTE3NjhjYWIxZTg5ZWRjZjEy
ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKGJvb2wpOwogCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1l
c3NhZ2VSZWNlaXZlck1hcCgpIHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CisKIHBy
b3RlY3RlZDoKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA4NzBjMTdlMWM0ODhiNmFhYjVjNThmNDIwMDA1YTkzMmU4YjlhMWZlLi5kYzYzMWRjYTYzOTBi
ODZjYTlkZDM4ZjVlODE4MzA1NWVjZWM1MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtODcyOSw2ICs4NzI5LDM1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFk
Q2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvCiAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK0lQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVBy
b3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikKK3sKKyAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKK30K
KworSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZVJlY2VpdmVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sK
KyAgICByZXR1cm4gcHJvY2VzcygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworfQorCitjb25zdCBT
dHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6
OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7CisgICAgcmV0dXJuIHdlYnNpdGVE
YXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7Cit9CisKK3VpbnQ2NF90IFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9y
RGVzdGluYXRpb25JRChjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7CisgICAg
cmV0dXJuIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCk7Cit9CisKKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyYTUzOWY1NTRkNjExZGRjN2UyNjkyZGVl
ZWM1NzNhYmI1MWUyODU2Li5kYjFhZGMzODEzMTBhMmJlOWU1NTgxNDIwOWVlN2E5NmNmYzVlZjc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYwLDcgKzE2MCw2
IEBAIGNsYXNzIFVSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsK
LWNsYXNzIENvbm5lY3Rpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0OCw2ICsz
NDcsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6
V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudAorI2VuZGlmCisjaWYgRU5BQkxFKEFQUExFX1BB
WSkKKyAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CiAjZW5k
aWYKICAgICAsIHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50CiAgICAgLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKQEAgLTE5NzAsNiArMTk3MiwyMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBVUkwm
IHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFVSTCYgcmVk
aXJlY3RVUkwpOwogI2VuZGlmCiAKKyAgICAvLyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
Q2xpZW50CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKyAgICBJUEM6OkNvbm5lY3Rpb24qIHBheW1l
bnRDb29yZGluYXRvckNvbm5lY3Rpb24oY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSBmaW5hbDsKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgcGF5bWVudENvb3JkaW5hdG9y
TWVzc2FnZVJlY2VpdmVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7
CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsK
KyAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFs
OworICAgIHVpbnQ2NF90IHBheW1lbnRDb29yZGluYXRvckRlc3RpbmF0aW9uSUQoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShBUFBM
RV9QQVkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgVUlWaWV3Q29udHJvbGxlciAqcGF5
bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRp
bmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRG
T1JNKE1BQykKKyAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRv
dyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworI2VuZGlmCisKICAg
ICBXZWFrUHRyPFBhZ2VDbGllbnQ+IG1fcGFnZUNsaWVudDsKICAgICBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAyYmE2MzdkNmMwNjg3ZjM5NzA2OWZlZjAy
OWIxYmNiY2JiODA3MmM3Li42ZDE4NWZkZjA5NzNkOGJlMmEzYjRiNmQ1MzdmNTBkODRlNTg2OGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAjaW1wb3J0
ICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMTg0LDYgKzExODUsMjAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWVTaGFyZWQoUmVmPFcKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQor
CitVSVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7
CisgICAgcmV0dXJuIHVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7Cit9CisK
K2NvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQorewor
ICAgIHJldHVybiBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuY3REYXRh
Q29ubmVjdGlvblNlcnZpY2VUeXBlKCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4MzAwNGQ3MGE4MTc3NzE2
MTgzODRkNGQ4ZjI4MTVjZjIxMWE3NzZhLi45YWMxNDk5Mjk2MWJlNzY3NTY1MmI2NWYyMGVmODIw
OGI0OWZiOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02NjEsNiArNjYxLDE1IEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpX
ZWJQYWdlUHJveHk6OnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCkKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKEFQUExFX1BBWSkKKworTlNXaW5kb3cgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5h
dG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCit7
CisgICAgcmV0dXJuIHBsYXRmb3JtV2luZG93KCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0N2JhOTFkZWU0MTExZWFk
M2Y3NmI4YmMxMGI5MDU5ZDEwYTUzZTIuLmM0ZWU3NWY4NTBkYjQzYmIyZGJjYTk3ZjkzOTJhZGVh
YjkxNGVhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTA3OTIsNyArMTA3OTIsNiBAQAogCQkJCTJEOTEzNDQ0MjEyQ0Y5RjAwMDEy
OEFGRCAvKiBOZXRzY2FwZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc5NjIx
MkI2QURBMDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MTM0NDUyMTJDRjlGMDAwMTI4QUZEIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTZCRDA1ODY2MjIwQ0U4QzIwMDBCRUQ1QyAvKiBOZXR3b3Jr
QWRDbGlja0F0dHJpYnV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxREQ5RjI4MTYzNjdE
QTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODNGIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363466</attachid>
            <date>2019-03-03 12:25:15 -0800</date>
            <delta_ts>2019-03-03 14:16:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195219-20190303122514.patch</filename>
            <type>text/plain</type>
            <size>34352</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg1MjZmZDhjMTY2ZDQ5YWUy
NGNjOGI0MmE4YTNiYTkxZDI3Y2UxZjQuLjgzNTZjNjFhZTdiMTE1YzQxZjNmY2Y1NjE1NGUwMzNh
OWYzZTU4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTktMDMtMDEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIFVudGFuZ2xlIFdl
YlBhZ2VQcm94eSBhbmQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTIxOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg1MTgwODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgUmF0aGVyIHRoYW4gaGF2aW5nIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IGtu
b3cgYWJvdXQgV2ViUGFnZVByb3h5LCBnaXZlCisgICAgICAgIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5IGEgY2xpZW50IGludGVyZmFjZSB0aGF0IFdlYlBhZ2VQcm94eSBjb25mb3JtcyB0by4K
KworICAgICAgICBJbiBhIGZvbGxvdy1vbiBwYXRjaCwgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkgd2lsbCBoYXZlIGEgbm9uLVdlYlBhZ2VQcm94eSBjbGllbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkpOiBSZXBsYWNlZCB1c2Ugb2YKKyAgICAgICAgbV93ZWJQYWdlUHJveHkgd2l0aCBtX2Ns
aWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOiBJbXBs
ZW1lbnRlZAorICAgICAgICBJUEM6Ok1lc3NhZ2VTZW5kZXIgdmlhIG1fY2xpZW50LgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKTogUmVwbGFjZWQgdXNl
IG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGllbnQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQ
YXltZW50U2Vzc2lvbik6IENhbGxlZCBvdXIgb3duCisgICAgICAgIE1lc3NhZ2VTZW5kZXI6OnNl
bmQgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBtX3dlYlBhZ2VQcm94eS4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1dGhv
cml6ZVBheW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRp
ZFNlbGVjdFBheW1lbnRNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDogRGVmaW5lZCB0aGUgQ2xpZW50IGFic3Ry
YWN0IGNsYXNzIGFuZAorICAgICAgICBjaGFuZ2VkIG1fd2ViUGFnZVByb3h5IHRvIG1fY2xpZW50
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KTogUmVwbGFjZWQgdXNlIG9mCisgICAgICAgIG1fd2ViUGFnZVByb3h5IHdpdGggbV9jbGllbnQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBh
eW1lbnRSZXF1ZXN0KTogUmVuYW1lZCBmcm9tIHRvUEtQYXltZW50UmVxdWVzdC4KKyAgICAgICAg
KFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KTogUmVuYW1lZCB0byBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KTogUmVwbGFjZWQgdXNlIG9mIG1fd2ViUGFnZVByb3h5CisgICAgICAgIHdpdGggbV9jbGllbnQu
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjptZXNzYWdlUmVjZWl2ZXJNYXApOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JDb25uZWN0aW9uKTogSW1wbGVtZW50ZWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OkNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JNZXNzYWdlUmVjZWl2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNYWRlIFdlYlBhZ2VQ
cm94eSBkZXJpdmUgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cik6IEltcGxlbWVudGVkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVj
dGlvblNlcnZpY2VUeXBlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yUHJlc2VudGluZ1dpbmRvdyk6IERpdHRvLgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAzLTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIG1vcmUgdW51c2VkIDMyLWJp
dCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggNDI4NjUxZjZlYTliMDhh
YmI4YzE5NDkwOGYzODE0ZDgyMzNkZjRhNi4uYjQ3NDVlMmViMDhjNmNlNDMyNTExZTg1MzJiNzIx
YmI4OGIyOTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXJNYXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYXltZW50
Q29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWVzc2FnZXMuaCIKQEAgLTQyLDEyICs0MywxMCBAQCBzdGF0aWMgV2Vha1B0cjxXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eT4mIGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5KCkKICAg
ICByZXR1cm4gYWN0aXZlUGF5bWVudENvb3JkaW5hdG9yUHJveHkuZ2V0KCk7CiB9CiAKLVdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eShXZWJQYWdl
UHJveHkmIHdlYlBhZ2VQcm94eSkKLSAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkK
LSAgICAsIG1fc3RhdGUoU3RhdGU6OklkbGUpCi0gICAgLCBtX21lcmNoYW50VmFsaWRhdGlvblN0
YXRlKE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxlKQorV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50IHsgY2xpZW50IH0KIHsKLSAgICBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQ
cm94eS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvck1l
c3NhZ2VSZWNlaXZlcigqdGhpcykuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2NsaWVudC5wYXlt
ZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKCp0aGlzKSwgKnRoaXMpOwogICAgIGZpbmlzaENv
bnN0cnVjdGlvbigqdGhpcyk7CiB9CiAKQEAgLTU2LDcgKzU1LDE3IEBAIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKQogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpJZGxlKQogICAgICAgICBoaWRlUGF5bWVudFVJKCk7CiAKLSAgICBtX3dl
YlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQ
cm94eS5wYWdlSUQoKSk7CisgICAgbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJl
Y2VpdmVyKCp0aGlzKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fY2xpZW50LnBheW1lbnRD
b29yZGluYXRvckRlc3RpbmF0aW9uSUQoKnRoaXMpKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKCp0
aGlzKTsKK30KKwordWludDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQucGF5bWVu
dENvb3JkaW5hdG9yRGVzdGluYXRpb25JRCgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OmF2YWlsYWJsZVBheW1lbnROZXR3b3JrcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzEsMjUg
KzgwLDE3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmCiAKIHZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYg
bWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIHVpbnQ2NF90IHJl
cXVlc3RJRCkKIHsKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAg
IHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobWVyY2hhbnRJZGVudGlmaWVy
LCBkb21haW5OYW1lLCBbd2Vha1RoaXMsIHJlcXVlc3RJRF0oYm9vbCBjYW5NYWtlUGF5bWVudHMp
IHsKLSAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtUaGlzLmdldCgp
OwotICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkUmVwbHkocmVxdWVzdElELCBjYW5NYWtlUGF5bWVudHMpKTsKKyAgICBwbGF0Zm9y
bUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWlu
TmFtZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0SURdKGJvb2wgY2Fu
TWFrZVBheW1lbnRzKSB7CisgICAgICAgIGlmIChhdXRvIHBheW1lbnRDb29yZGluYXRvclByb3h5
ID0gd2Vha1RoaXMuZ2V0KCkpCisgICAgICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
c2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpDYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZFJlcGx5KHJlcXVlc3RJRCwgY2FuTWFrZVBheW1lbnRzKSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
dWludDY0X3QgcmVxdWVzdElEKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyk7Ci0gICAgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKG1lcmNoYW50SWRlbnRpZmllciwg
ZG9tYWluTmFtZSwgW3dlYWtUaGlzLCByZXF1ZXN0SURdKGJvb2wgcmVzdWx0KSB7Ci0gICAgICAg
IGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKLSAgICAgICAg
aWYgKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpPcGVuUGF5bWVudFNldHVwUmVwbHkocmVxdWVzdElE
LCByZXN1bHQpKTsKKyAgICBwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlm
aWVyLCBkb21haW5OYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJ
RF0oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJv
eHkgPSB3ZWFrVGhpcy5nZXQoKSkKKyAgICAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Ok9wZW5QYXltZW50U2V0dXBS
ZXBseShyZXF1ZXN0SUQsIHJlc3VsdCkpOwogICAgIH0pOwogfQogCkBAIC0yMjQsNyArMjI1LDcg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQ2FuY2VsUGF5bWVudFNlc3Np
b24oKQogewogICAgIEFTU0VSVChjYW5DYW5jZWwoKSk7CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZENhbmNlbFBheW1lbnRTZXNz
aW9uKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkQ2Fu
Y2VsUGF5bWVudFNlc3Npb24oKSk7CiAKICAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KQEAg
LTIzNCwxMyArMjM1LDEzIEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlk
YXRlTWVyY2hhbnQoY29uc3QgVVJMJiB1cmwpCiAgICAgQVNTRVJUKG1fbWVyY2hhbnRWYWxpZGF0
aW9uU3RhdGUgPT0gTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUpOwogCiAgICAgbV9tZXJj
aGFudFZhbGlkYXRpb25TdGF0ZSA9IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpWYWxpZGF0aW5n
OwotICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6VmFsaWRhdGVNZXJjaGFudCh1cmwuc3RyaW5nKCkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3I6OlZhbGlkYXRlTWVyY2hhbnQodXJsLnN0cmluZygpKSk7CiB9
CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1dGhvcml6ZVBheW1lbnQo
Y29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKIHsKICAgICBtX3N0YXRlID0gU3RhdGU6
OkF1dGhvcml6ZWQ7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpEaWRBdXRob3JpemVQYXltZW50KHBheW1lbnQpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZEF1dGhvcml6ZVBheW1lbnQocGF5bWVu
dCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlw
cGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQpAQCAtMjQ4LDcgKzI0OSw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7
CiAKICAgICBtX3N0YXRlID0gU3RhdGU6OlNoaXBwaW5nTWV0aG9kU2VsZWN0ZWQ7Ci0gICAgbV93
ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRo
b2QpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRh
Y3QpCkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U2hp
cHBpbmdDb250YWN0U2VsZWN0ZWQ7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdD
b250YWN0KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0KSk7CiB9CiAKIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFBheW1lbnRNZXRob2QoY29uc3QgV2ViQ29y
ZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKQEAgLTI2NCw3ICsyNjUsNyBAQCB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRNZQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUp
OwogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpQYXltZW50TWV0aG9kU2VsZWN0ZWQ7Ci0gICAgbV93
ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxl
Y3RQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkp
OwogfQogCiBib29sIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpjYW5CZWdpbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCBlMmRhNDQ0ZmYwMjAxNzgyNDA0OTE1OWRk
YzcxNTE1YjFkYjgyMDFmLi5iMDJlNGM3MDAzNWYzNDQ0MmZmYTQ5M2Q2ODcxZmI5ZmUyYjY0ZTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxNyArMjgsMTkgQEAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNp
bXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUFkZGl0aW9u
cy5oPgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUFkZGl0aW9ucy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBNZXNzYWdlUmVjZWl2ZXJNYXA7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE1ICs1NCwzNCBAQCBjbGFzcyBQYXltZW50TWV0
aG9kOwogT0JKQ19DTEFTUyBOU09iamVjdDsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CiBPQkpDX0NM
QVNTIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xBU1MgUEtQ
YXltZW50UmVxdWVzdDsKK09CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1Mg
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiB7CitjbGFzcyBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eShXZWJQYWdlUHJveHkmKTsKKyAgICBzdHJ1Y3QgQ2xpZW50IHsKKyAgICAgICAgdmly
dHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0
aW9uKiBwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgPSAwOworICAgICAgICB2aXJ0dWFsIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFw
JiBwYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5n
JiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dWludDY0X3QgcGF5bWVudENvb3JkaW5hdG9yRGVzdGluYXRpb25JRChjb25zdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAg
ICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsKKyAg
ICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckNURGF0YUNvbm5l
Y3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0gMDsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgdmlydHVhbCBOU1dpbmRvdyAqcGF5
bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYpID0gMDsKKyNlbmRpZgorICAgIH07CisKKyAgICBleHBsaWNpdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eShDbGllbnQmKTsKICAgICB+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkoKTsKIAogICAgIHZvaWQgZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKQEAgLTczLDExICs5
NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoaWRlUGF5bWVudFVJKCk7CiAKIHByaXZhdGU6Ci0g
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAKLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgorICAgIC8vIElQQzo6TWVzc2FnZVNl
bmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgYXZhaWxhYmxlUGF5
bWVudE5ldHdvcmtzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYp
OwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5n
JiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgdWludDY0X3Qg
cmVxdWVzdElEKTsKQEAgLTEwOCw4ICsxMzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhv
ZFVwZGF0ZT4mKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gcGxhdGZvcm1Q
YXltZW50UmVxdWVzdChjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJM
PiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYpOworI2VuZGlmCiAKLSAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OworICAg
IENsaWVudCYgbV9jbGllbnQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgLy8g
SWRsZSAtIE5vdGhpbmcncyBoYXBwZW5pbmcuCkBAIC0xMzIsNyArMTYwLDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAvLyBQYXltZW50TWV0aG9kU2VsZWN0ZWQgLSBEaXNwYXRjaGluZyB0aGUgcGF5
bWVudG1ldGhvZHNlbGVjdGVkIGV2ZW50IGFuZCB3YWl0aW5nIGZvciBhIHJlcGx5LgogICAgICAg
ICBQYXltZW50TWV0aG9kU2VsZWN0ZWQsCi0gICAgfSBtX3N0YXRlOworICAgIH0gbV9zdGF0ZSB7
IFN0YXRlOjpJZGxlIH07CiAKICAgICBlbnVtIGNsYXNzIE1lcmNoYW50VmFsaWRhdGlvblN0YXRl
IHsKICAgICAgICAgLy8gSWRsZSAtIE5vdGhpbmcncyBoYXBwZW5pbmcuCkBAIC0xNDMsNyArMTcx
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBWYWxpZGF0aW9uQ29tcGxldGUgLSBBIG1lcmNo
YW50IHNlc3Npb24gaGFzIGJlZW4gc2VudCBhbG9uZyB0byBQYXNzS2l0LgogICAgICAgICBWYWxp
ZGF0aW9uQ29tcGxldGUKLSAgICB9IG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU7CisgICAgfSBt
X21lcmNoYW50VmFsaWRhdGlvblN0YXRlIHsgTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUg
fTsKIAogICAgIFJldGFpblB0cjxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8V0tQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IGM0ZDc5ZmU0YzEyYzlhYjg1NGZiYmQ0MjUxM2I3
ODUzODMwNzJhZTcuLmQxMDFiZTE1NzA2NjYyZjkzMDZiZWJlNzNlZDVkM2Q3OTkzY2M5ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTQgKzMx
LDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUGFnZVByb3h5Owot
Y2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0KLVJldGFpblB0cjxQS1BheW1lbnRS
ZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKTsKLQotfQotCiBAaW50ZXJmYWNlIFdL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIDogTlNPYmplY3QgPFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLCBQS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+IHsKIEBwYWNrYWdlCiAgICAg
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSogX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0K
aW5kZXggMzMxMDU0ZDliZDIxMGEyMjBjZTRkMGM3YTZjZTBhNGUxYjI2NDg3MS4uMGQzZDZlNzY0
MzQ3ZGE2OTlkY2M2NTc2NzE0YzgxZTUzYTE2ZjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKIAogI2lm
IEVOQUJMRShBUFBMRV9QQVkpCiAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50cygpCiB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJ
ZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24obWVyY2hhbnRJZGVudGlmaWVyLCBk
b21haW5OYW1lLCBtX3dlYlBhZ2VQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlv
bigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBtYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2Fu
TWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgUEtDYW5NYWtlUGF5
bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24obWVy
Y2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JT
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKnRoaXMpLCBtYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2Fu
TWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJv
cikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJ
ZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwogCkBAIC00NDIsNyArNDQyLDcg
QEAgc3RhdGljIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlIHRvQVBJVHlwZShXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDoKIH0KICNlbmRpZgogCi1SZXRhaW5QdHI8UEtQYXlt
ZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
LCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25V
UkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVu
dFJlcXVlc3QpCitSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRd
KTsKIApAQCAtNTA2LDE3ICs1MDYsMTggQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRv
UEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QKICNlbmRp
ZgogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgdXNpbmcgcmVzcG9uZHNUb1NlbGVjdG9yLCB0
aGlzIHNob3VsZCB1c2UgYSBwcm9wZXIgI2lmIHZlcnNpb24gY2hlY2suCi0gICAgYXV0byYgd2Vi
c2l0ZURhdGFTdG9yZSA9IHdlYlBhZ2VQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0
byYgYnVuZGxlSWRlbnRpZmllciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigqdGhpcyk7CisgICAgaWYgKCFidW5kbGVJZGVudGlm
aWVyLmlzRW1wdHkoKSAmJiBbcmVzdWx0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0
U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOildKQorICAgICAgICBbcmVzdWx0IHNl
dFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpidW5kbGVJZGVudGlmaWVyXTsKIAot
ICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKS5pc0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjopXSkKLSAgICAgICAgW3Jlc3VsdCBz
ZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6d2Vic2l0ZURhdGFTdG9yZS5zb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKV07Ci0KLSAgICBpZiAoIXdlYnNpdGVEYXRh
U3RvcmUuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCkuaXNFbXB0eSgpICYm
IFtyZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXI6KV0pCi0gICAgICAgIFtyZXN1bHQgc2V0U291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOndlYnNpdGVEYXRhU3RvcmUuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCldOworICAgIGF1dG8mIHNlY29uZGFyeUlkZW50aWZpZXIg
PSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoKnRoaXMpOworICAgIGlmICghc2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkg
JiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjopXSkKKyAgICAgICAgW3Jlc3VsdCBzZXRTb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6c2Vjb25kYXJ5SWRlbnRpZmllcl07CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKS5p
c0VtcHR5KCkgJiYgW3Jlc3VsdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldENURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTopXSkKLSAgICAgICAgW3Jlc3VsdCBzZXRDVERhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGU6d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNv
bmZpZ3VyYXRpb24oKS5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKV07CisgICAgYXV0byYg
c2VydmljZVR5cGUgPSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9u
U2VydmljZVR5cGUoKnRoaXMpOworICAgIGlmICghc2VydmljZVR5cGUuaXNFbXB0eSgpICYmIFty
ZXN1bHQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRDVERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGU6KV0pCisgICAgICAgIFtyZXN1bHQgc2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlOnNlcnZpY2VUeXBlXTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCAzNmI0YmZlMDQyZWFhYjcyNTUy
NDVlOTkwNmFlNDYxOGNjZjllMWExLi40MzIzNTI3MDI5OTgwM2ExZGZhMGFkZDgwYWNlMDMxMTBk
OTgzZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3Mv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBVSVZpZXdDb250cm9sbGVyICpw
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3dlYlBhZ2VQcm94eS51aUNsaWVudCgpLnByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcigpOworICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcigqdGhpcyk7CiAKICAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC00OSw3ICs0OSw3IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25z
dCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICBBU1NFUlQoIW1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcik7CiAKLSAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1l
bnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJp
bmdzLCByZXF1ZXN0KTsKKyAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gcGxhdGZvcm1QYXltZW50
UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAog
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRX
aXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCldKTsKICAgICBpZiAoIW1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGUyNjAxZmZhMjBkODQwMDRhN2EyMDgwMGNmOWIwMWFj
YjcxNTcyZDEuLmJkMjU2NGM0M2NjODI2NzViM2Y5MGY3YWYzNTI4YzAyNmJiYWU1ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVj
dG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHRvUEtQ
YXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJM
U3RyaW5ncywgcmVxdWVzdCk7CisgICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHBsYXRmb3JtUGF5
bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7
CiAKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCA9IG1fc2hvd1BheW1lbnRVSVJl
cXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CkBAIC01
OCw2ICs1OCwxMCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgfQogCisgICAgICAgIE5TV2luZG93
ICpwcmVzZW50aW5nV2luZG93ID0gcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fY2xpZW50LnBh
eW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdXaW5kb3coKnBheW1lbnRDb29yZGluYXRvclByb3h5
KTsKKyAgICAgICAgaWYgKCFwcmVzZW50aW5nV2luZG93KQorICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKwogICAgICAgICBBU1NFUlQodmlld0NvbnRyb2xsZXIp
OwogCiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0
b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHldKTsKQEAgLTc1LDcgKzc5LDcgQEAgdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwKICAgICAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5
LT5kaWRSZWFjaEZpbmFsU3RhdGUoKTsKICAgICAgICAgfV07CiAKLSAgICAgICAgW3BheW1lbnRD
b29yZGluYXRvclByb3h5LT5tX3dlYlBhZ2VQcm94eS5wbGF0Zm9ybVdpbmRvdygpIGJlZ2luU2hl
ZXQ6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6bnVsbHB0cl07CisgICAgICAgIFtwcmVzZW50aW5nV2luZG93IGJlZ2luU2hlZXQ6
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bnVsbHB0cl07CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAg
fSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAppbmRleCBmY2QzZmFiZDQ2ZmIxMzUyNGQ0NmJkMTdmNGE5MDcwYTdhNDZjYTY2Li5k
OWRmN2YyZDcwZTY3MjAwNDFhOTE3NjhjYWIxZTg5ZWRjZjEyZGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2LDYgKzg2LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wp
OwogCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCgpIHsg
cmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwOyB9CisKIHByb3RlY3RlZDoKICAgICAvLyBQcm9j
ZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NM
YXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzY2FjZWIyOWFhODlkMTEzMjA4
ZGZkZjZiMDY5M2ZlNTczNjZhZDU5Li5mOGVjNTYwMWY3NTk4YWY5NzA2ZGZhMjY0YzJmMDlkNjgx
N2Q3ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODc1Myw2ICs4
NzUzLDM1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvCiAgICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLmNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lv
bklEKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShBUFBM
RV9QQVkpCisKK0lQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAgICBy
ZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKK30KKworSVBDOjpNZXNzYWdlUmVjZWl2
ZXJNYXAmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyKGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAgICByZXR1cm4gcHJvY2Vzcygp
Lm1lc3NhZ2VSZWNlaXZlck1hcCgpOworfQorCitjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6
cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFT
dG9yZSgpLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOworfQorCitjb25zdCBT
dHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKK3sK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcigpOworfQorCit1aW50NjRfdCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGlu
YXRvckRlc3RpbmF0aW9uSUQoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQorewor
ICAgIHJldHVybiBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpOworfQorCisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVOVFMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMWZmNjA0NGQ2OWMyOTdkZmM1Yjdi
NjMwNDgxNzQxMmQyODQ5OTJhNy4uOGZjYTZiYjk0NmZjOGI0Mjc1MWZhNTkwODgxODhhYTdmMmE3
MjkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MCw3ICsx
NjAsNiBAQCBjbGFzcyBVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERlY29k
ZXI7Ci1jbGFzcyBDb25uZWN0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNDks
NiArMzQ4LDkgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICNlbmRpZgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgcHVibGljIFdlYkNv
cmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQKKyNlbmRpZgorI2lmIEVOQUJMRShBUFBM
RV9QQVkpCisgICAgLCBwdWJsaWMgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAog
I2VuZGlmCiAgICAgLCBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudAogICAgICwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBAIC0xOTcxLDYgKzE5NzMsMjIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3Qg
VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwm
IHJlZGlyZWN0VVJMKTsKICNlbmRpZgogCisgICAgLy8gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OkNsaWVudAorI2lmIEVOQUJMRShBUFBMRV9QQVkpCisgICAgSVBDOjpDb25uZWN0aW9uKiBw
YXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JikgZmluYWw7CisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIHBheW1lbnRDb29yZGlu
YXRvck1lc3NhZ2VSZWNlaXZlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZp
bmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmlu
YWw7CisgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBm
aW5hbDsKKyAgICB1aW50NjRfdCBwYXltZW50Q29vcmRpbmF0b3JEZXN0aW5hdGlvbklEKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisjZW5kaWYKKyNpZiBFTkFCTEUo
QVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFVJVmlld0NvbnRyb2xsZXIg
KnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgZmluYWw7CisjZW5kaWYKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQ
TEFURk9STShNQUMpCisgICAgTlNXaW5kb3cgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdX
aW5kb3coY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyNlbmRpZgor
CiAgICAgV2Vha1B0cjxQYWdlQ2xpZW50PiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMmJhNjM3ZDZjMDY4N2YzOTcwNjlm
ZWYwMjliMWJjYmNiYjgwNzJjNy4uNmQxODVmZGYwOTczZDhiZTJhM2I0YjZkNTM3ZjUwZDg0ZTU4
NjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIgogI2lt
cG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTE4NCw2ICsxMTg1LDIwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUExFX1BB
WSkKKworVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQoreworICAgIHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwor
fQorCitjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQ1REYXRh
Q29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikK
K3sKKyAgICByZXR1cm4gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLmN0
RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggODMwMDRkNzBhODE3
NzcxNjE4Mzg0ZDRkOGYyODE1Y2YyMTFhNzc2YS4uOWFjMTQ5OTI5NjFiZTc2NzU2NTJiNjVmMjBl
ZjgyMDhiNDlmYjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjYxLDYgKzY2MSwxNSBAQCBfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqV2ViUGFnZVByb3h5OjpyZW1vdGVPYmplY3RSZWdpc3RyeSgpCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShBUFBMRV9QQVkpCisKK05TV2luZG93ICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29y
ZGluYXRvclByZXNlbnRpbmdXaW5kb3coY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KQoreworICAgIHJldHVybiBwbGF0Zm9ybVdpbmRvdygpOworfQorCisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYmUwOTYyNDBlMGZi
YWU1MWFlNDdkMTUyZGQ0NmVmMzVkOTQwNDYxLi5lN2UxZGJmNWU3YTIzZWIwZWQ4OTk0OGJmNzlh
OTJhYTlkZDRkZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwNzk0LDcgKzEwNzk0LDYgQEAKIAkJCQkyRDkxMzQ0NDIxMkNGOUYw
MDAxMjhBRkQgLyogTmV0c2NhcGVQbHVnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
OTYyMTJCNkFEQTAwRjQ5M0ZEIC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTEzNDQ1MjEyQ0Y5RjAwMDEyOEFGRCAvKiBOZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2QkQwNTg2NjIyMENFOEMyMDAwQkVENUMgLyogTmV0
d29ya0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUREOUYyODE2
MzY3REEyMDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8q
IE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgzRiAvKiBOZXR3b3JrTUROU1JlZ2lz
dGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>