<?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>221641</bug_id>
          
          <creation_ts>2021-02-09 16:56:33 -0800</creation_ts>
          <short_desc>Expand stubs to thread actual NSURLRequest/NSURLResponse for the new simulated-request API</short_desc>
          <delta_ts>2021-07-02 16:43:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222081</see_also>
          <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>
          <dependson>221430</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727340</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-09 16:56:33 -0800</bug_when>
    <thetext>We established a set of stubs in Bug 221430 that need to be fleshed out.

1. They should thread the NSURLRequest/NSURLResponse objects to the loading layer (I think this is already true for NSURLRequest).
2. Loads via these API should cause entries to be added to the back/forward list.
3. We need API Tests to confirm the back/forward list works as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727341</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-09 16:57:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/74166568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730026</commentid>
    <comment_count>2</comment_count>
      <attachid>420561</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-16 17:03:04 -0800</bug_when>
    <thetext>Created attachment 420561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730035</commentid>
    <comment_count>3</comment_count>
      <attachid>420565</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-16 17:34:54 -0800</bug_when>
    <thetext>Created attachment 420565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730050</commentid>
    <comment_count>4</comment_count>
      <attachid>420573</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-16 18:00:06 -0800</bug_when>
    <thetext>Created attachment 420573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730060</commentid>
    <comment_count>5</comment_count>
      <attachid>420573</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-16 18:15:02 -0800</bug_when>
    <thetext>Comment on attachment 420573
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1501
&gt; +void WebPageProxy::loadSimulatedRequestDataWithNavigationShared(Ref&lt;WebProcessProxy&gt;&amp;&amp; process, WebCore::PageIdentifier webPageID, API::Navigation&amp; navigation, WebCore::ResourceRequest&amp;&amp; simulatedRequest, WebCore::ResourceResponse&amp;&amp; simulatedResponse, const IPC::DataReference&amp; data, API::Object* userData, ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad, Optional&lt;NavigatingToAppBoundDomain&gt; isNavigatingToAppBoundDomain, Optional&lt;WebsitePoliciesData&gt;&amp;&amp; websitePolicies, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy)

@Chris: I can merge this with the above if I don’t need to do a ProvisionalPageProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730348</commentid>
    <comment_count>6</comment_count>
      <attachid>420573</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 10:15:17 -0800</bug_when>
    <thetext>Comment on attachment 420573
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1501
&gt;&gt; +void WebPageProxy::loadSimulatedRequestDataWithNavigationShared(Ref&lt;WebProcessProxy&gt;&amp;&amp; process, WebCore::PageIdentifier webPageID, API::Navigation&amp; navigation, WebCore::ResourceRequest&amp;&amp; simulatedRequest, WebCore::ResourceResponse&amp;&amp; simulatedResponse, const IPC::DataReference&amp; data, API::Object* userData, ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad, Optional&lt;NavigatingToAppBoundDomain&gt; isNavigatingToAppBoundDomain, Optional&lt;WebsitePoliciesData&gt;&amp;&amp; websitePolicies, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy)
&gt; 
&gt; @Chris: I can merge this with the above if I don’t need to do a ProvisionalPageProxy.

Right. I think we should merge.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewLoadAPIs.mm:100
&gt; +    EXPECT_EQ((NSUInteger)1, list.backList.count);

Would be good to check WKBackForwardListItem.URL too for both the current item and the backList item.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewLoadAPIs.mm:111
&gt; +    EXPECT_EQ((NSUInteger)1, list.forwardList.count);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730351</commentid>
    <comment_count>7</comment_count>
      <attachid>420573</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-17 10:16:52 -0800</bug_when>
    <thetext>Comment on attachment 420573
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1476
&gt; +    UNUSED_PARAM(data);

Is this meant to be here? It seems like data is used below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730438</commentid>
    <comment_count>8</comment_count>
      <attachid>420691</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-17 12:13:38 -0800</bug_when>
    <thetext>Created attachment 420691
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730492</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-17 13:26:13 -0800</bug_when>
    <thetext>Committed r273023: &lt;https://commits.webkit.org/r273023&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420691.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730565</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-17 14:59:53 -0800</bug_when>
    <thetext>Reopening to add a test fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730615</commentid>
    <comment_count>11</comment_count>
      <attachid>420746</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-17 16:03:49 -0800</bug_when>
    <thetext>Created attachment 420746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730616</commentid>
    <comment_count>12</comment_count>
      <attachid>420746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-17 16:05:28 -0800</bug_when>
    <thetext>Comment on attachment 420746
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730642</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-17 16:40:09 -0800</bug_when>
    <thetext>Committed r273048: &lt;https://commits.webkit.org/r273048&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420746.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420561</attachid>
            <date>2021-02-16 17:03:04 -0800</date>
            <delta_ts>2021-02-16 17:24:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221641-20210216170303.patch</filename>
            <type>text/plain</type>
            <size>27970</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjMTRmYzI4ZDBlZjM1MjI4
ZDk0YjcxY2QwMTdkMDdhMWFiOWNlN2EuLjE1MDhiN2EyYTJlMDY2NzYxMTU5ODVkYTI2ZTBmMDg1
NTE1M2RhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDItMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwYW5kIHN0dWJzIHRvIHRo
cmVhZCBhY3R1YWwgTlNVUkxSZXF1ZXN0L05TVVJMUmVzcG9uc2UgZm9yIHRoZSBuZXcgc2ltdWxh
dGVkLXJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTY2NTY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcg
QVBJIFRlc3QgTG9hZFNpbXVsYXRlZFJlcXVlc3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0LgorCisg
ICAgICAgIFRoaXMgYnVnIGJ1aWxkcyBvbiB0aGUgc3R1YnMgY3JlYXRlZCBpbiBCdWcgMjIxNDMw
IHRvIHVzZSBhY3R1YWwgUmVxdWVzdCBhbmQKKyAgICAgICAgUmVzcG9uc2Ugb2JqZWN0cyBmb3Ig
c2ltdWxhdGVkIGxvYWRzOgorCisgICAgICAgIDEuIFRocmVhZCB0aGUgTlNVUkxSZXF1ZXN0IGFu
ZCBOU1VSTFJlc3BvbnNlIG9iamVjdHMgdG8gdGhlIGxvYWRpbmcgbGF5ZXIgd2hlbiBoYW5kbGlu
ZyBsb2FkcworICAgICAgICAgICBmb3IgSFRNTCBzdHJpbmdzIGFuZCBkYXRhLgorICAgICAgICAy
LiBMb2FkcyB2aWEgdGhlIHNpbXVsYXRlZCByZXF1ZXN0IEFQSSBzaG91bGQgY2F1c2UgZW50cmll
cyB0byBiZSBhZGRlZCB0byB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisgICAgICAgIDMuIENyZWF0
ZSBhIG5ldyBBUEkgVGVzdCB0byBjb25maXJtIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCB3b3JrcyBh
cyBleHBlY3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6
CisgICAgICAgIChBUEk6OlN1YnN0aXR1dGVEYXRhOjpTdWJzdGl0dXRlRGF0YSk6IE5ldyBjb252
ZW5pZW5jZSBjb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBSZXNvdXJjZVJlc3BvbnNlLgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmNyZWF0
ZSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlOnJl
c3BvbnNlRGF0YTpdKTogU3dpdGNoIGZyb20gdXNpbmcgdGhlIHBsYWluICdsb2FkRGF0YScKKyAg
ICAgICAgbWV0aG9kIHRvIHRoZSBuZXcgJ2xvYWRTaW11bGF0ZWRSZXF1ZXN0JyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVTaW11bGF0ZWRMb2FkV2l0aERh
dGFOYXZpZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25T
dGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KTogTmV3IG1ldGhvZCB0
byBzdXBwb3J0IHRoZSBsb2FkU2ltdWxhdGVkUmVxdWVzdCBXS1dlYlZpZXcgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0RGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKTogSGVscGVyIG1ldGhvZCBmb3IgbG9hZFNpbXVsYXRlZFJlcXVlc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFNpbXVs
YXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6IEFkZGVkIG1lc3NhZ2UgaGFuZGxlciB0byBwZXJmb3Jt
IGEgc2ltdWxhdGVkIGxvYWQgdXNpbmcKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGFuZCBSZXNv
dXJjZVJlc3BvbnNlIG9iamVjdHMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjog
QWRkZWQgTG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSBJUEMgbWVzc2FnZS4KKwogMjAy
MS0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyIGlzIGFjY2Vzc2VkIGluIG5vbi10aHJl
YWQtc2FmZSBtYW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcAppbmRleCA3M2QyMmRkYjcyNjc0ZWZiN2RlNzkyZTBhNjNmYzFkMDUwZWQwNTI1Li4w
OTdjNWVjMTc2MGE0NzU5ODIwYmNjMzQyZjdhOTU1MWU1MTFkZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDExIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBuYXZpZ2F0aW9u
QWN0aXZpdHlUaW1lb3V0IHsgMzBfcyB9OwogCitTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgY29udGVudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKKyAgICA6IFN1YnN0aXR1dGVEYXRhKFdURk1v
dmUoY29udGVudCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHVzZXJEYXRhKQoreworfQorCiBOYXZpZ2F0
aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgOiBtX25hdmln
YXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQogICAgICwgbV9jbGllbnROYXZp
Z2F0aW9uQWN0aXZpdHkobmF2aWdhdGlvbkFjdGl2aXR5VGltZW91dCkKQEAgLTc4LDYgKzgzLDEz
IEBAIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpCiAgICAgbV9zdWJzdGl0dXRlRGF0YSA9IFdURk1v
dmUoc3Vic3RpdHV0ZURhdGEpOwogfQogCitOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYktpdDo6
V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgc2lt
dWxhdGVkUmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiYmIHN1YnN0aXR1
dGVEYXRhLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKQorICAgIDog
TmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgZnJvbUl0ZW0pCit7
CisgICAgQVNTRVJUKHN1YnN0aXR1dGVEYXRhKTsKKyAgICBtX3N1YnN0aXR1dGVEYXRhID0gV1RG
TW92ZShzdWJzdGl0dXRlRGF0YSk7Cit9CisKIE5hdmlnYXRpb246On5OYXZpZ2F0aW9uKCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCmluZGV4IDE5
MDk1ZGE0ODY2MWI4NWMwOTQ2MmVhZWIxNWNmMWZlZjQxYTkxNDkuLmNkYWQ5NzgyZGFiNjY3ZTBi
N2QzY2MyYjFhOWNjMjY4NWZhOWNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVu
dW0gY2xhc3MgRnJhbWVMb2FkVHlwZSA6IHVpbnQ4X3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAg
ICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQogICAgIHsgfQogCisgICAgU3Vic3RpdHV0ZURhdGEo
VmVjdG9yPHVpbnQ4X3Q+JiYgY29udGVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gY29udGVu
dDsKICAgICBXVEY6OlN0cmluZyBNSU1FVHlwZTsKICAgICBXVEY6OlN0cmluZyBlbmNvZGluZzsK
QEAgLTkwLDYgKzkzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgUmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0
ZSYgc3RhdGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHNpbXVsYXRlZFJlcXVlc3QsIHN0
ZDo6dW5pcXVlX3B0cjxTdWJzdGl0dXRlRGF0YT4mJiBzdWJzdGl0dXRlRGF0YSwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5hdmlnYXRpb24oc3RhdGUsIFdURk1vdmUoc2ltdWxhdGVkUmVxdWVzdCks
IFdURk1vdmUoc3Vic3RpdHV0ZURhdGEpLCBmcm9tSXRlbSkpOworICAgIH0KKwogICAgIHZpcnR1
YWwgfk5hdmlnYXRpb24oKTsKIAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9CkBAIC0xNjYsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAg
ICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0pOwog
ICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogZnJvbUl0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUpOwogICAgIE5hdmlnYXRpb24o
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpdHV0ZURh
dGE+JiYpOworICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiYm
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKTsKIAogICAgIHVpbnQ2
NF90IG1fbmF2aWdhdGlvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDQ5NDYxNmU5MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQuLjk0
ZjM0Y2Q4MGIyNzI5OTA4ZDA3NzdjOTM5ZDg3OTM1ZGE4YTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwOTIsNyArMjA5Miw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gd2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5T
QXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11
bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogewotICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUsIHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKSk7CisgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNl
LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgg
fSkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKaW5k
ZXggMWE0MDk2OTA3MDc2ZGNmMWYwM2Y3YmViMzY5ZjhjYTRmZThlZWI1Yi4uNjQ2OTc1NjgwZjQx
Y2JmNzZlZDNhMGVhZmQ3ODY4OTRjOGVjNzkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDE1IEBAIFJlZjxBUEk6Ok5hdmln
YXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6
dW5pcXVlX3B0CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKK1JlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdh
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpTdWJzdGl0dXRlRGF0YT4mJiBzdWJzdGl0dXRlRGF0YSwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogY3VycmVudEl0ZW0pCit7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0
aW9uOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoc3Vic3RpdHV0ZURh
dGEpLCBjdXJyZW50SXRlbSk7CisKKyAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5wdHIoKSk7CisKKyAgICByZXR1cm4gbmF2aWdhdGlv
bjsKK30KKwogQVBJOjpOYXZpZ2F0aW9uKiBXZWJOYXZpZ2F0aW9uU3RhdGU6Om5hdmlnYXRpb24o
dWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZDdjNWYx
Nzg5N2EyYzgxMmYxYWVhZjY1M2IzOWUwODA4N2MyNmRmLi5iYWE0MzM1OTA0ZWM4YzViMmQ5YWRk
NTNhNGZmYzUyNzFlYzU4MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZp
Z2F0aW9uU3RhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpOYXZpZ2F0
aW9uPiBjcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtKTsKICAgICBSZWY8QVBJOjpO
YXZpZ2F0aW9uPiBjcmVhdGVSZWxvYWROYXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGN1cnJlbnRBbmRUYXJnZXRJdGVtKTsKICAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVhdGVM
b2FkRGF0YU5hdmlnYXRpb24oc3RkOjp1bmlxdWVfcHRyPEFQSTo6U3Vic3RpdHV0ZURhdGE+JiYp
OworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZVNpbXVsYXRlZExvYWRXaXRoRGF0YU5h
dmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlN1YnN0aXR1dGVEYXRhPiYmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBjdXJyZW50SXRlbSk7
CiAKICAgICBib29sIGhhc05hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKSBjb25zdCB7
IHJldHVybiBtX25hdmlnYXRpb25zLmNvbnRhaW5zKG5hdmlnYXRpb25JRCk7IH0KICAgICBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyNWJjYTljZmFkNmFiZGIxNmYw
NmEyZGZlMGU3YWM4NTdjZjY3MzYuLjE5MjBhM2E1NWMxNzExOTU5OTk4YmMxYTQwZGNlZGMxZjg0
YjEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDcxLDYgKzE0
NzEsNzMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIHByb2Nlc3MtPnN0YXJ0UmVzcG9u
c2l2ZW5lc3NUaW1lcigpOwogfQogCitSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHNpbXVs
YXRlZFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBzaW11bGF0ZWRSZXNwb25z
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVk
UmVxdWVzdDoiKTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBpZiAoc2lt
dWxhdGVkUmVzcG9uc2UubWltZVR5cGUoKSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxXZWJC
cm93c2VyKCkpCisgICAgICAgIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9
IHRydWU7CisjZW5kaWYKKworICAgIGlmIChtX2lzQ2xvc2VkKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBwYWdlIGlzIGNs
b3NlZCIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4g
eyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQ
cm9jZXNzKTsKKworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVh
dGVTaW11bGF0ZWRMb2FkV2l0aERhdGFOYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChzaW11bGF0
ZWRSZXF1ZXN0KSwgbWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3Rvcigp
LCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3BvbnNlKSwgbnVsbHB0ciksIG1fYmFja0Zv
cndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKKworICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91
bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKKyAgICAgICAgbmF2aWdhdGlvbi0+c2V0
Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5k
QWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CisKKyAgICBsb2FkU2ltdWxhdGVkUmVx
dWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgV1RGTW92
ZShzaW11bGF0ZWRSZXNwb25zZSksIGRhdGEsIG51bGxwdHIsIFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGOjpudWxsb3B0
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CisgICAgcmV0dXJuIG5hdmlnYXRpb247Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkU2lt
dWxhdGVkUmVxdWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBzaW11bGF0ZWRS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgc2ltdWxhdGVkUmVzcG9uc2UsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
K3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVx
dWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCIpOworCisgICAgQVNTRVJUKCFtX2lzQ2xvc2Vk
KTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKKworICAgIEFTU0VSVChzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CisgICAgCisgICAgYXV0byBiYXNlVVJMID0gc2ltdWxh
dGVkUmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKKyAgICBzaW11bGF0ZWRSZXNwb25zZS5zZXRVUkwo
c2ltdWxhdGVkUmVxdWVzdC51cmwoKSk7IC8vIFRoZXNlIHNob3VsZCBhbHdheXMgbWF0Y2ggZm9y
IHNpbXVsYXRlZCBsb2FkCisKKyAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVl
c3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgIWJhc2VVUkwuaXNF
bXB0eSgpID8gYmFzZVVSTCA6IGFib3V0QmxhbmtVUkwoKS5zdHJpbmcoKSB9KTsKKworICAgIExv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCA9IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVx
dWVzdCA9IFdURk1vdmUoc2ltdWxhdGVkUmVxdWVzdCk7CisgICAgbG9hZFBhcmFtZXRlcnMuZGF0
YSA9IGRhdGE7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBzaW11bGF0ZWRSZXNwb25z
ZS5taW1lVHlwZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSA9IHNpbXVsYXRl
ZFJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXM7CisgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVz
ID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOworICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0
b3J5ID0gbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tC
YWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBs
b2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9u
LmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworCisgICAgc2ltdWxhdGVkUmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGRhdGEu
c2l6ZSgpKTsKKworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2VzcywgbG9hZFBh
cmFtZXRlcnMpOworCisgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhp
cywgYmFzZVVSTCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNp
bXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShsb2FkUGFyYW1ldGVycywgc2ltdWxhdGVkUmVzcG9u
c2UpLCB3ZWJQYWdlSUQpOworICAgIHByb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigp
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0
ZUhUTUwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzE0ZGEz
NTRhNzRjYjE5ZWNhNDE3YzQ0ZTY4OTQ4ZDkwZGJhYjczOC4uNDA3NWI3N2Q1NTJjNDZmMWRiODZh
NGU1OTc3NWE5YTU4MmQyNjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01ODgsNiArNTg4LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXNCdXROb3RBcHBMaW5rcywgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGly
ZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9h
ZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBs
b2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZFdlYkFyY2hp
dmVEYXRhKEFQSTo6RGF0YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAg
IHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblBvaW50KTsKQEAgLTE2NjgsNiArMTY2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkU2ltdWxhdGVkUmVxdWVzdERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZy
YW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRh
JiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFV
SUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDAzYzljYTllZTkzN2ZkZDA4OTg0N2UxOTdlNjJkYzk2MmZmODNiYmMuLjAyZTZmNmZl
OGMyNWM3NWNlN2M5MjFjNDFmYjc4MDg2NTk3OWU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqCkBAIC0xNzA2LDYgKzE3MDYsNDUgQEAgdm9pZCBXZWJQYWdlOjps
b2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JC
ZWluZ0hhbmRsZWRVUkwoeyB9KTsKIH0KIAordm9pZCBXZWJQYWdlOjpsb2FkU2ltdWxhdGVkUmVx
dWVzdEFuZFJlc3BvbnNlKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIFJlc291cmNl
UmVzcG9uc2UmJiBzaW11bGF0ZWRSZXNwb25zZSkKK3sKKyAgICBBU1NFUlQoc2ltdWxhdGVkUmVz
cG9uc2UudXJsKCkgPT0gbG9hZFBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgQVNTRVJU
KHNpbXVsYXRlZFJlc3BvbnNlLm1pbWVUeXBlKCkgPT0gbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUp
OworICAgIEFTU0VSVChzaW11bGF0ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA9
PSBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgQVNTRVJUKHNpbXVsYXRlZFJlc3BvbnNlLnRl
eHRFbmNvZGluZ05hbWUoKSA9PSBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUpOworCisgICAg
cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOworCisgICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJz
LmRhdGEuc2l6ZSgpKTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
ICZtX21haW5GcmFtZS5nZXQoKSk7CisjZW5kaWYKKworICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5l
c3NUaW1lciBzdG9wcGVyOworCisgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklEOworICAgIG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURk1v
dmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKTsKKworICAgIFN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMucmVx
dWVzdC51cmwoKSwgc2ltdWxhdGVkUmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHk6OlZpc2libGUpOworCisgICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRs
ZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBk
YXRhIGZyb20gdGhlIFVJUHJvY2VzcworICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1
cCBhbnkgbmVlZGVkIHN0YXRlLgorICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1
ZXN0KCp0aGlzLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZl
cio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCks
IHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJM
KCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworICAgIC8vIEluaXRhdGUg
dGhlIGxvYWQgaW4gV2ViQ29yZS4KKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVl
c3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCwgc3Vi
c3RpdHV0ZURhdGEpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeShsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsK
KyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZChsb2Fk
UGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQpOworICAgIGZyYW1lTG9hZFJl
cXVlc3Quc2V0TG9ja0hpc3RvcnkobG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkpOworICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3YXJkTGlzdChsb2FkUGFyYW1ldGVycy5sb2Nr
QmFja0ZvcndhcmRMaXN0KTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldENsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeShsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0SXNSZXF1ZXN0RnJvbUNsaWVudE9yVXNl
cklucHV0KCk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgImNvcmVQYWdlKCktPnVz
ZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOyI/
CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdCkpOworfQorCiB2b2lkIFdlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0
aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQb2ludCBkb2N1bWVudFBvaW50
LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKICAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9tYWlu
RnJhbWUtPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDk0NjJlYjQ0YmJhYjIxMjliZWE2N2E1NWRkNzg3ZDU0NWVjODBmMjguLjlj
N2Y1N2RjNDM1MThjYTZlOTJhZjE4MzdiODUxOGEzMTM0OTM5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTA2LDYgKzE1MDYsNyBAQCBwcml2
YXRlOgogICAgIE5PX1JFVFVSTiB2b2lkIGxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVu
Y2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMJiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGJvb2wp
OwogICAgIHZvaWQgbG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkQWx0
ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIGxvYWRTaW11bGF0ZWRSZXF1
ZXN0QW5kUmVzcG9uc2UoTG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6UmVxdWVzdFJlc3BvbnNl
JiYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3Qg
U3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50IHNjcmVlblBvaW50KTsKICAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsK
ICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgV2ViQ29yZTo6RnJhbWVMb2Fk
VHlwZSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDM0YjEyYzQ2NDQ0ZmYxNTVhNWUxNDMy
MTk5YWQ4YTE3ODk5MTU4MmIuLjUzYmM4NTE3ZjU4YTQyOGJkOGNkN2RjY2ZjODg1M2RlMjk0MjA5
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE3OSw2ICsxNzksNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIExv
YWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQog
ICAgIExvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goc3RydWN0IFdlYktpdDo6TG9h
ZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMsIFVSTCByZXNvdXJjZURpcmVjdG9yeVVSTCwgV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgYm9vbCBjaGVja0Fzc3VtZWRSZWFk
QWNjZXNzVG9SZXNvdXJjZVVSTCkKICAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFy
YW1ldGVycyBsb2FkUGFyYW1ldGVycykKKyAgICBMb2FkU2ltdWxhdGVkUmVxdWVzdEFuZFJlc3Bv
bnNlKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHNpbXVsYXRlZFJlc3BvbnNlKQogICAgIExvYWRBbHRlcm5hdGVI
VE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogCiAgICAg
TmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwgV2ViQ29yZTo6
SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTJiZDVm
MjQ5YTczOTI0NWE4NzQzN2NlNzI5ZWE0YWE1MzZmOTBjYS4uMzJiMmNkOGJlZjkwOWZiZDMxYzgz
OTVhODVjNzE2ZmI5ZTZmYjhjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAyLTE2ICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEV4cGFuZCBzdHVicyB0byB0aHJlYWQg
YWN0dWFsIE5TVVJMUmVxdWVzdC9OU1VSTFJlc3BvbnNlIGZvciB0aGUgbmV3IHNpbXVsYXRlZC1y
ZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxNjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDE2NjU2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0byBj
b25maXJtIHRoYXQgc2ltdWxhdGVkIGxvYWRzIHdvcmsgYW5kIGFyZSBwcm9wZXJseSBhZGRlZCB0
byB0aGUKKyAgICAgICAgYmFjay1mb3J3YXJkIGxpc3QuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tOgorICAgICAgICAoVEVT
VCk6CisKIDIwMjEtMDItMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBhIGRlZmF1bHQgcGF0aCBmb3IgZGV2aWNlIElEIGhhc2ggc2FsdHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3TG9h
ZEFQSXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmll
d0xvYWRBUElzLm1tCmluZGV4IDYzMzUzMzBkYTY4ZTk0NjkyZmM3MjE0ZTVlMjc0N2Y0ZmY0YWYz
ZDUuLmJmYzhhMjljNzY2MDFhNTNkOWE5ZTRlNWNiZDYwOTlkNzkzZDZlYzYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3TG9hZEFQSXMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdM
b2FkQVBJcy5tbQpAQCAtMzUsNiArMzUsOCBAQAogCiBzdGF0aWMgTlNVUkwgKmV4YW1wbGVVUkwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXTsKIHN0YXRpYyBO
U1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPGh0bWw+PGJvZHk+PGgxPkhlbGxvLCB3b3JsZCE8L2gx
PjwvYm9keT48L2h0bWw+IjsKK3N0YXRpYyBOU1VSTCAqZXhhbXBsZVVSTDIgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5vcmciXTsKK3N0YXRpYyBOU1N0cmluZyAqaHRt
bFN0cmluZzIgPSBAIjxodG1sPjxib2R5PjxoMT5IZWxsbywgbmV3IHdvcmxkITwvaDE+PC9ib2R5
PjwvaHRtbD4iOwogCiBURVNUKFdLV2ViVmlldywgTG9hZFNpbXVsYXRlZFJlcXVlc3RVc2luZ1Jl
c3BvbnNlSFRNTFN0cmluZykKIHsKQEAgLTc4LDMgKzgwLDQzIEBAIFRFU1QoV0tXZWJWaWV3LCBM
b2FkRmlsZVJlcXVlc3QpCiAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEod2ViVmlldy5nZXQoKS5fcmVzb3VyY2VEaXJlY3RvcnlV
UkwucGF0aCwgZmlsZS5VUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnQucGF0aCk7CiB9CisK
K1RFU1QoV0tXZWJWaWV3LCBMb2FkU2ltdWxhdGVkUmVxdWVzdFVwZGF0ZXNCYWNrRm9yd2FyZExp
c3QpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAg
IE5TVVJMUmVxdWVzdCAqbG9hZFJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OmV4YW1wbGVVUkxdOworICAgIFt3ZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OmxvYWRSZXF1
ZXN0IHdpdGhSZXNwb25zZUhUTUxTdHJpbmc6aHRtbFN0cmluZ107CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIE5TVVJMUmVxdWVzdCAqbG9hZFJlcXVl
c3QyID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpleGFtcGxlVVJMMl07CisgICAgW3dl
YlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6bG9hZFJlcXVlc3QyIHdpdGhSZXNwb25zZUhUTUxT
dHJpbmc6aHRtbFN0cmluZzJdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CisgICAgCisgICAgV0tCYWNrRm9yd2FyZExpc3QgKmxpc3QgPSBbd2ViVmlldyBiYWNr
Rm9yd2FyZExpc3RdOworICAgIEVYUEVDVF9FUSgoTlNVSW50ZWdlcikxLCBsaXN0LmJhY2tMaXN0
LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwgbGlzdC5mb3J3YXJkTGlzdC5j
b3VudCk7CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBjYW5Hb0JhY2tdKTsKKyAgICBpZiAo
IVt3ZWJWaWV3IGNhbkdvQmFja10pCisgICAgICAgIHJldHVybjsKKworICAgIFt3ZWJWaWV3IGdv
QmFja107CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IEVYUEVDVF9FUSgoTlNVSW50ZWdlcikwLCBsaXN0LmJhY2tMaXN0LmNvdW50KTsKKyAgICBFWFBF
Q1RfRVEoKE5TVUludGVnZXIpMSwgbGlzdC5mb3J3YXJkTGlzdC5jb3VudCk7CisKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBjYW5Hb0ZvcndhcmRdKTsKKyAgICBpZiAoIVt3ZWJWaWV3IGNhbkdv
Rm9yd2FyZF0pCisgICAgICAgIHJldHVybjsKKworICAgIFt3ZWJWaWV3IGdvRm9yd2FyZF07Cisg
ICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIEVYUEVDVF9F
USgoTlNVSW50ZWdlcikxLCBsaXN0LmJhY2tMaXN0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoKE5T
VUludGVnZXIpMCwgbGlzdC5mb3J3YXJkTGlzdC5jb3VudCk7Cit9Cg==
</data>
<flag name="commit-queue"
          id="439113"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420565</attachid>
            <date>2021-02-16 17:34:54 -0800</date>
            <delta_ts>2021-02-16 18:01:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221641-20210216173453.patch</filename>
            <type>text/plain</type>
            <size>27998</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjMTRmYzI4ZDBlZjM1MjI4
ZDk0YjcxY2QwMTdkMDdhMWFiOWNlN2EuLjE1MDhiN2EyYTJlMDY2NzYxMTU5ODVkYTI2ZTBmMDg1
NTE1M2RhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDItMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwYW5kIHN0dWJzIHRvIHRo
cmVhZCBhY3R1YWwgTlNVUkxSZXF1ZXN0L05TVVJMUmVzcG9uc2UgZm9yIHRoZSBuZXcgc2ltdWxh
dGVkLXJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTY2NTY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcg
QVBJIFRlc3QgTG9hZFNpbXVsYXRlZFJlcXVlc3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0LgorCisg
ICAgICAgIFRoaXMgYnVnIGJ1aWxkcyBvbiB0aGUgc3R1YnMgY3JlYXRlZCBpbiBCdWcgMjIxNDMw
IHRvIHVzZSBhY3R1YWwgUmVxdWVzdCBhbmQKKyAgICAgICAgUmVzcG9uc2Ugb2JqZWN0cyBmb3Ig
c2ltdWxhdGVkIGxvYWRzOgorCisgICAgICAgIDEuIFRocmVhZCB0aGUgTlNVUkxSZXF1ZXN0IGFu
ZCBOU1VSTFJlc3BvbnNlIG9iamVjdHMgdG8gdGhlIGxvYWRpbmcgbGF5ZXIgd2hlbiBoYW5kbGlu
ZyBsb2FkcworICAgICAgICAgICBmb3IgSFRNTCBzdHJpbmdzIGFuZCBkYXRhLgorICAgICAgICAy
LiBMb2FkcyB2aWEgdGhlIHNpbXVsYXRlZCByZXF1ZXN0IEFQSSBzaG91bGQgY2F1c2UgZW50cmll
cyB0byBiZSBhZGRlZCB0byB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisgICAgICAgIDMuIENyZWF0
ZSBhIG5ldyBBUEkgVGVzdCB0byBjb25maXJtIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCB3b3JrcyBh
cyBleHBlY3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6
CisgICAgICAgIChBUEk6OlN1YnN0aXR1dGVEYXRhOjpTdWJzdGl0dXRlRGF0YSk6IE5ldyBjb252
ZW5pZW5jZSBjb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBSZXNvdXJjZVJlc3BvbnNlLgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmNyZWF0
ZSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlOnJl
c3BvbnNlRGF0YTpdKTogU3dpdGNoIGZyb20gdXNpbmcgdGhlIHBsYWluICdsb2FkRGF0YScKKyAg
ICAgICAgbWV0aG9kIHRvIHRoZSBuZXcgJ2xvYWRTaW11bGF0ZWRSZXF1ZXN0JyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVTaW11bGF0ZWRMb2FkV2l0aERh
dGFOYXZpZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25T
dGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KTogTmV3IG1ldGhvZCB0
byBzdXBwb3J0IHRoZSBsb2FkU2ltdWxhdGVkUmVxdWVzdCBXS1dlYlZpZXcgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0RGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKTogSGVscGVyIG1ldGhvZCBmb3IgbG9hZFNpbXVsYXRlZFJlcXVlc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFNpbXVs
YXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6IEFkZGVkIG1lc3NhZ2UgaGFuZGxlciB0byBwZXJmb3Jt
IGEgc2ltdWxhdGVkIGxvYWQgdXNpbmcKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGFuZCBSZXNv
dXJjZVJlc3BvbnNlIG9iamVjdHMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjog
QWRkZWQgTG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSBJUEMgbWVzc2FnZS4KKwogMjAy
MS0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyIGlzIGFjY2Vzc2VkIGluIG5vbi10aHJl
YWQtc2FmZSBtYW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcAppbmRleCA3M2QyMmRkYjcyNjc0ZWZiN2RlNzkyZTBhNjNmYzFkMDUwZWQwNTI1Li4w
OTdjNWVjMTc2MGE0NzU5ODIwYmNjMzQyZjdhOTU1MWU1MTFkZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDExIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBuYXZpZ2F0aW9u
QWN0aXZpdHlUaW1lb3V0IHsgMzBfcyB9OwogCitTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgY29udGVudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKKyAgICA6IFN1YnN0aXR1dGVEYXRhKFdURk1v
dmUoY29udGVudCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHVzZXJEYXRhKQoreworfQorCiBOYXZpZ2F0
aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgOiBtX25hdmln
YXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQogICAgICwgbV9jbGllbnROYXZp
Z2F0aW9uQWN0aXZpdHkobmF2aWdhdGlvbkFjdGl2aXR5VGltZW91dCkKQEAgLTc4LDYgKzgzLDEz
IEBAIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpCiAgICAgbV9zdWJzdGl0dXRlRGF0YSA9IFdURk1v
dmUoc3Vic3RpdHV0ZURhdGEpOwogfQogCitOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYktpdDo6
V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgc2lt
dWxhdGVkUmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiYmIHN1YnN0aXR1
dGVEYXRhLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKQorICAgIDog
TmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgZnJvbUl0ZW0pCit7
CisgICAgQVNTRVJUKHN1YnN0aXR1dGVEYXRhKTsKKyAgICBtX3N1YnN0aXR1dGVEYXRhID0gV1RG
TW92ZShzdWJzdGl0dXRlRGF0YSk7Cit9CisKIE5hdmlnYXRpb246On5OYXZpZ2F0aW9uKCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCmluZGV4IDE5
MDk1ZGE0ODY2MWI4NWMwOTQ2MmVhZWIxNWNmMWZlZjQxYTkxNDkuLmNkYWQ5NzgyZGFiNjY3ZTBi
N2QzY2MyYjFhOWNjMjY4NWZhOWNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVu
dW0gY2xhc3MgRnJhbWVMb2FkVHlwZSA6IHVpbnQ4X3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAg
ICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQogICAgIHsgfQogCisgICAgU3Vic3RpdHV0ZURhdGEo
VmVjdG9yPHVpbnQ4X3Q+JiYgY29udGVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gY29udGVu
dDsKICAgICBXVEY6OlN0cmluZyBNSU1FVHlwZTsKICAgICBXVEY6OlN0cmluZyBlbmNvZGluZzsK
QEAgLTkwLDYgKzkzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgUmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0
ZSYgc3RhdGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHNpbXVsYXRlZFJlcXVlc3QsIHN0
ZDo6dW5pcXVlX3B0cjxTdWJzdGl0dXRlRGF0YT4mJiBzdWJzdGl0dXRlRGF0YSwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5hdmlnYXRpb24oc3RhdGUsIFdURk1vdmUoc2ltdWxhdGVkUmVxdWVzdCks
IFdURk1vdmUoc3Vic3RpdHV0ZURhdGEpLCBmcm9tSXRlbSkpOworICAgIH0KKwogICAgIHZpcnR1
YWwgfk5hdmlnYXRpb24oKTsKIAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9CkBAIC0xNjYsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAg
ICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0pOwog
ICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogZnJvbUl0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUpOwogICAgIE5hdmlnYXRpb24o
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpdHV0ZURh
dGE+JiYpOworICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiYm
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKTsKIAogICAgIHVpbnQ2
NF90IG1fbmF2aWdhdGlvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDQ5NDYxNmU5MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQuLjk0
ZjM0Y2Q4MGIyNzI5OTA4ZDA3NzdjOTM5ZDg3OTM1ZGE4YTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwOTIsNyArMjA5Miw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gd2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5T
QXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11
bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogewotICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUsIHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKSk7CisgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNl
LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgg
fSkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKaW5k
ZXggMWE0MDk2OTA3MDc2ZGNmMWYwM2Y3YmViMzY5ZjhjYTRmZThlZWI1Yi4uNjQ2OTc1NjgwZjQx
Y2JmNzZlZDNhMGVhZmQ3ODY4OTRjOGVjNzkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDE1IEBAIFJlZjxBUEk6Ok5hdmln
YXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6
dW5pcXVlX3B0CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKK1JlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdh
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpTdWJzdGl0dXRlRGF0YT4mJiBzdWJzdGl0dXRlRGF0YSwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogY3VycmVudEl0ZW0pCit7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0
aW9uOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoc3Vic3RpdHV0ZURh
dGEpLCBjdXJyZW50SXRlbSk7CisKKyAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5wdHIoKSk7CisKKyAgICByZXR1cm4gbmF2aWdhdGlv
bjsKK30KKwogQVBJOjpOYXZpZ2F0aW9uKiBXZWJOYXZpZ2F0aW9uU3RhdGU6Om5hdmlnYXRpb24o
dWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZDdjNWYx
Nzg5N2EyYzgxMmYxYWVhZjY1M2IzOWUwODA4N2MyNmRmLi5iYWE0MzM1OTA0ZWM4YzViMmQ5YWRk
NTNhNGZmYzUyNzFlYzU4MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZp
Z2F0aW9uU3RhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpOYXZpZ2F0
aW9uPiBjcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtKTsKICAgICBSZWY8QVBJOjpO
YXZpZ2F0aW9uPiBjcmVhdGVSZWxvYWROYXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGN1cnJlbnRBbmRUYXJnZXRJdGVtKTsKICAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVhdGVM
b2FkRGF0YU5hdmlnYXRpb24oc3RkOjp1bmlxdWVfcHRyPEFQSTo6U3Vic3RpdHV0ZURhdGE+JiYp
OworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZVNpbXVsYXRlZExvYWRXaXRoRGF0YU5h
dmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlN1YnN0aXR1dGVEYXRhPiYmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBjdXJyZW50SXRlbSk7
CiAKICAgICBib29sIGhhc05hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKSBjb25zdCB7
IHJldHVybiBtX25hdmlnYXRpb25zLmNvbnRhaW5zKG5hdmlnYXRpb25JRCk7IH0KICAgICBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyNWJjYTljZmFkNmFiZGIxNmYw
NmEyZGZlMGU3YWM4NTdjZjY3MzYuLjE5MjBhM2E1NWMxNzExOTU5OTk4YmMxYTQwZGNlZGMxZjg0
YjEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDcxLDYgKzE0
NzEsNzMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIHByb2Nlc3MtPnN0YXJ0UmVzcG9u
c2l2ZW5lc3NUaW1lcigpOwogfQogCitSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHNpbXVs
YXRlZFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBzaW11bGF0ZWRSZXNwb25z
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVk
UmVxdWVzdDoiKTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBpZiAoc2lt
dWxhdGVkUmVzcG9uc2UubWltZVR5cGUoKSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxXZWJC
cm93c2VyKCkpCisgICAgICAgIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9
IHRydWU7CisjZW5kaWYKKworICAgIGlmIChtX2lzQ2xvc2VkKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBwYWdlIGlzIGNs
b3NlZCIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4g
eyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQ
cm9jZXNzKTsKKworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVh
dGVTaW11bGF0ZWRMb2FkV2l0aERhdGFOYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChzaW11bGF0
ZWRSZXF1ZXN0KSwgbWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3Rvcigp
LCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3BvbnNlKSwgbnVsbHB0ciksIG1fYmFja0Zv
cndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKKworICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91
bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKKyAgICAgICAgbmF2aWdhdGlvbi0+c2V0
Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5k
QWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CisKKyAgICBsb2FkU2ltdWxhdGVkUmVx
dWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgV1RGTW92
ZShzaW11bGF0ZWRSZXNwb25zZSksIGRhdGEsIG51bGxwdHIsIFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGOjpudWxsb3B0
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CisgICAgcmV0dXJuIG5hdmlnYXRpb247Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkU2lt
dWxhdGVkUmVxdWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBzaW11bGF0ZWRS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgc2ltdWxhdGVkUmVzcG9uc2UsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
K3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVx
dWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCIpOworCisgICAgQVNTRVJUKCFtX2lzQ2xvc2Vk
KTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKKworICAgIEFTU0VSVChzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CisgICAgCisgICAgYXV0byBiYXNlVVJMID0gc2ltdWxh
dGVkUmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKKyAgICBzaW11bGF0ZWRSZXNwb25zZS5zZXRVUkwo
c2ltdWxhdGVkUmVxdWVzdC51cmwoKSk7IC8vIFRoZXNlIHNob3VsZCBhbHdheXMgbWF0Y2ggZm9y
IHNpbXVsYXRlZCBsb2FkCisKKyAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVl
c3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgIWJhc2VVUkwuaXNF
bXB0eSgpID8gYmFzZVVSTCA6IGFib3V0QmxhbmtVUkwoKS5zdHJpbmcoKSB9KTsKKworICAgIExv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCA9IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVx
dWVzdCA9IFdURk1vdmUoc2ltdWxhdGVkUmVxdWVzdCk7CisgICAgbG9hZFBhcmFtZXRlcnMuZGF0
YSA9IGRhdGE7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBzaW11bGF0ZWRSZXNwb25z
ZS5taW1lVHlwZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSA9IHNpbXVsYXRl
ZFJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXM7CisgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVz
ID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOworICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0
b3J5ID0gbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tC
YWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBs
b2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9u
LmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworCisgICAgc2ltdWxhdGVkUmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGRhdGEu
c2l6ZSgpKTsKKworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2VzcywgbG9hZFBh
cmFtZXRlcnMpOworCisgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhp
cywgYmFzZVVSTCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNp
bXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShsb2FkUGFyYW1ldGVycywgc2ltdWxhdGVkUmVzcG9u
c2UpLCB3ZWJQYWdlSUQpOworICAgIHByb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigp
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0
ZUhUTUwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzE0ZGEz
NTRhNzRjYjE5ZWNhNDE3YzQ0ZTY4OTQ4ZDkwZGJhYjczOC4uNDA3NWI3N2Q1NTJjNDZmMWRiODZh
NGU1OTc3NWE5YTU4MmQyNjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01ODgsNiArNTg4LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXNCdXROb3RBcHBMaW5rcywgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGly
ZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9h
ZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBs
b2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZFdlYkFyY2hp
dmVEYXRhKEFQSTo6RGF0YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAg
IHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblBvaW50KTsKQEAgLTE2NjgsNiArMTY2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkU2ltdWxhdGVkUmVxdWVzdERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZy
YW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRh
JiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFV
SUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDAzYzljYTllZTkzN2ZkZDA4OTg0N2UxOTdlNjJkYzk2MmZmODNiYmMuLjI0NWY3NjIw
ZGIzZWEzNTM0ZTMxZWU4MTFlNmI0NTQ3MTFhZDE2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqCkBAIC0xNzA2LDYgKzE3MDYsNDUgQEAgdm9pZCBXZWJQYWdlOjps
b2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JC
ZWluZ0hhbmRsZWRVUkwoeyB9KTsKIH0KIAordm9pZCBXZWJQYWdlOjpsb2FkU2ltdWxhdGVkUmVx
dWVzdEFuZFJlc3BvbnNlKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIFJlc291cmNl
UmVzcG9uc2UmJiBzaW11bGF0ZWRSZXNwb25zZSkKK3sKKyAgICBBU1NFUlQoc2ltdWxhdGVkUmVz
cG9uc2UudXJsKCkgPT0gbG9hZFBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgQVNTRVJU
KHNpbXVsYXRlZFJlc3BvbnNlLm1pbWVUeXBlKCkgPT0gbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUp
OworICAgIEFTU0VSVChzaW11bGF0ZWRSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkgPT0gbG9h
ZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihzaW11bGF0ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSkgPT0gbG9hZFBhcmFt
ZXRlcnMuZGF0YS5zaXplKCkpOworCisgICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOworCisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5k
YXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKKworI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CisjZW5kaWYK
KworICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOworCisgICAgbV9wZW5k
aW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOworICAgIG1fcGVu
ZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGlj
aWVzKTsKKworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdURk1vdmUoc2hhcmVk
QnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSwgc2ltdWxhdGVkUmVzcG9uc2Us
IFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGUpOworCisg
ICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0
aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcworICAgIC8v
IHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgorICAgIG1fbG9h
ZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCBsb2FkUGFyYW1ldGVycy5yZXF1
ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSks
IHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygp
LCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKKworICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KKyAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwg
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIGZyYW1lTG9hZFJl
cXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShsb2FkUGFyYW1ldGVycy5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZChsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0hpc3RvcnkobG9hZFBhcmFt
ZXRlcnMubG9ja0hpc3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3
YXJkTGlzdChsb2FkUGFyYW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShsb2FkUGFyYW1ldGVy
cy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0SXNSZXF1ZXN0RnJvbUNsaWVudE9yVXNlcklucHV0KCk7CisKKyAgICAvLyBGSVhNRTogU2hv
dWxkIHRoaXMgYmUgImNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1ZXN0KFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOyI/CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOworfQorCiB2b2lkIFdl
YlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYg
dXJsLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKICAg
ICBGcmFtZSogbWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk0NjJlYjQ0YmJhYjIxMjli
ZWE2N2E1NWRkNzg3ZDU0NWVjODBmMjguLjg3N2EzMmE5MDAxMWRiMGE0MDg5YmYxOTlmMjM0MzQ2
MmM0Y2ExNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xNTA2LDYgKzE1MDYsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTiB2b2lkIGxvYWRS
ZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMJiYsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgbG9hZERhdGEoTG9hZFBhcmFt
ZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmKTsK
KyAgICB2b2lkIGxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UoTG9hZFBhcmFtZXRlcnMm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2lu
dCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAgICAgdm9p
ZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVt
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCAzNGIxMmM0NjQ0NGZmMTU1YTVlMTQzMjE5OWFkOGExNzg5OTE1ODJiLi41M2JjODUxN2Y1
OGE0MjhiZDhjZDdkY2NmYzg4NTNkZTI5NDIwOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzksNiArMTc5LDcgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2Fk
UGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9j
ZXNzTGF1bmNoKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzLCBV
UkwgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIGJvb2wgY2hlY2tBc3N1bWVkUmVhZEFjY2Vzc1RvUmVzb3VyY2VVUkwpCiAgICAgTG9h
ZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCisgICAg
TG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1l
dGVycyBsb2FkUGFyYW1ldGVycywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBzaW11bGF0ZWRS
ZXNwb25zZSkKICAgICBMb2FkQWx0ZXJuYXRlSFRNTChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1l
dGVycyBsb2FkUGFyYW1ldGVycykKIAogICAgIE5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNv
cmU6OkludFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEyYmQ1ZjI0OWE3MzkyNDVhODc0MzdjZTcyOWVhNGFhNTM2
ZjkwY2EuLjMyYjJjZDhiZWY5MDlmYmQzMWM4Mzk1YTg1YzcxNmZiOWU2ZmI4Y2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMS0wMi0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBhbmQgc3R1YnMgdG8gdGhyZWFkIGFjdHVhbCBOU1VSTFJlcXVlc3QvTlNVUkxSZXNw
b25zZSBmb3IgdGhlIG5ldyBzaW11bGF0ZWQtcmVxdWVzdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY0MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzQxNjY1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IHRlc3QgdG8gY29uZmlybSB0aGF0IHNpbXVsYXRlZCBsb2FkcyB3
b3JrIGFuZCBhcmUgcHJvcGVybHkgYWRkZWQgdG8gdGhlCisgICAgICAgIGJhY2stZm9yd2FyZCBs
aXN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdMb2FkQVBJcy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTAyLTE2ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXQgYSBkZWZhdWx0IHBhdGggZm9y
IGRldmljZSBJRCBoYXNoIHNhbHRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdMb2FkQVBJcy5tbQppbmRleCA2MzM1MzMwZGE2
OGU5NDY5MmZjNzIxNGU1ZTI3NDdmNGZmNGFmM2Q1Li5iZmM4YTI5Yzc2NjAxYTUzZDlhOWU0ZTVj
YmQ2MDk5ZDc5M2Q2ZWM2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3TG9hZEFQSXMubW0KQEAgLTM1LDYgKzM1LDggQEAK
IAogc3RhdGljIE5TVVJMICpleGFtcGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL2V4YW1wbGUuY29tIl07CiBzdGF0aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBAIjxodG1s
Pjxib2R5PjxoMT5IZWxsbywgd29ybGQhPC9oMT48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgTlNV
UkwgKmV4YW1wbGVVUkwyID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUu
b3JnIl07CitzdGF0aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcyID0gQCI8aHRtbD48Ym9keT48aDE+
SGVsbG8sIG5ldyB3b3JsZCE8L2gxPjwvYm9keT48L2h0bWw+IjsKIAogVEVTVChXS1dlYlZpZXcs
IExvYWRTaW11bGF0ZWRSZXF1ZXN0VXNpbmdSZXNwb25zZUhUTUxTdHJpbmcpCiB7CkBAIC03OCwz
ICs4MCw0MyBAQCBURVNUKFdLV2ViVmlldywgTG9hZEZpbGVSZXF1ZXN0KQogICAgIFtkZWxlZ2F0
ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKHdlYlZp
ZXcuZ2V0KCkuX3Jlc291cmNlRGlyZWN0b3J5VVJMLnBhdGgsIGZpbGUuVVJMQnlEZWxldGluZ0xh
c3RQYXRoQ29tcG9uZW50LnBhdGgpOwogfQorCitURVNUKFdLV2ViVmlldywgTG9hZFNpbXVsYXRl
ZFJlcXVlc3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKmxvYWRSZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpleGFtcGxlVVJMXTsKKyAgICBbd2ViVmlldyBs
b2FkU2ltdWxhdGVkUmVxdWVzdDpsb2FkUmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOmh0
bWxTdHJpbmddOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisK
KyAgICBOU1VSTFJlcXVlc3QgKmxvYWRSZXF1ZXN0MiA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6ZXhhbXBsZVVSTDJdOworICAgIFt3ZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0Omxv
YWRSZXF1ZXN0MiB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOmh0bWxTdHJpbmcyXTsKKyAgICBbZGVs
ZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIAorICAgIFdLQmFja0Zvcndh
cmRMaXN0ICpsaXN0ID0gW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XTsKKyAgICBFWFBFQ1RfRVEo
KE5TVUludGVnZXIpMSwgbGlzdC5iYWNrTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX0VRKChOU1VJ
bnRlZ2VyKTAsIGxpc3QuZm9yd2FyZExpc3QuY291bnQpOworCisgICAgRVhQRUNUX1RSVUUoW3dl
YlZpZXcgY2FuR29CYWNrXSk7CisgICAgaWYgKCFbd2ViVmlldyBjYW5Hb0JhY2tdKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwgbGlz
dC5iYWNrTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX0VRKChOU1VJbnRlZ2VyKTEsIGxpc3QuZm9y
d2FyZExpc3QuY291bnQpOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgY2FuR29Gb3J3YXJk
XSk7CisgICAgaWYgKCFbd2ViVmlldyBjYW5Hb0ZvcndhcmRdKQorICAgICAgICByZXR1cm47CisK
KyAgICBbd2ViVmlldyBnb0ZvcndhcmRdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbGlzdC5iYWNrTGlz
dC5jb3VudCk7CisgICAgRVhQRUNUX0VRKChOU1VJbnRlZ2VyKTAsIGxpc3QuZm9yd2FyZExpc3Qu
Y291bnQpOworfQo=
</data>
<flag name="commit-queue"
          id="439128"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420573</attachid>
            <date>2021-02-16 18:00:06 -0800</date>
            <delta_ts>2021-02-17 12:13:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221641-20210216180005.patch</filename>
            <type>text/plain</type>
            <size>28013</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjMTRmYzI4ZDBlZjM1MjI4
ZDk0YjcxY2QwMTdkMDdhMWFiOWNlN2EuLjE1MDhiN2EyYTJlMDY2NzYxMTU5ODVkYTI2ZTBmMDg1
NTE1M2RhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDItMTYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwYW5kIHN0dWJzIHRvIHRo
cmVhZCBhY3R1YWwgTlNVUkxSZXF1ZXN0L05TVVJMUmVzcG9uc2UgZm9yIHRoZSBuZXcgc2ltdWxh
dGVkLXJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTY2NTY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBuZXcg
QVBJIFRlc3QgTG9hZFNpbXVsYXRlZFJlcXVlc3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0LgorCisg
ICAgICAgIFRoaXMgYnVnIGJ1aWxkcyBvbiB0aGUgc3R1YnMgY3JlYXRlZCBpbiBCdWcgMjIxNDMw
IHRvIHVzZSBhY3R1YWwgUmVxdWVzdCBhbmQKKyAgICAgICAgUmVzcG9uc2Ugb2JqZWN0cyBmb3Ig
c2ltdWxhdGVkIGxvYWRzOgorCisgICAgICAgIDEuIFRocmVhZCB0aGUgTlNVUkxSZXF1ZXN0IGFu
ZCBOU1VSTFJlc3BvbnNlIG9iamVjdHMgdG8gdGhlIGxvYWRpbmcgbGF5ZXIgd2hlbiBoYW5kbGlu
ZyBsb2FkcworICAgICAgICAgICBmb3IgSFRNTCBzdHJpbmdzIGFuZCBkYXRhLgorICAgICAgICAy
LiBMb2FkcyB2aWEgdGhlIHNpbXVsYXRlZCByZXF1ZXN0IEFQSSBzaG91bGQgY2F1c2UgZW50cmll
cyB0byBiZSBhZGRlZCB0byB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisgICAgICAgIDMuIENyZWF0
ZSBhIG5ldyBBUEkgVGVzdCB0byBjb25maXJtIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCB3b3JrcyBh
cyBleHBlY3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6
CisgICAgICAgIChBUEk6OlN1YnN0aXR1dGVEYXRhOjpTdWJzdGl0dXRlRGF0YSk6IE5ldyBjb252
ZW5pZW5jZSBjb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBSZXNvdXJjZVJlc3BvbnNlLgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmNyZWF0
ZSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlOnJl
c3BvbnNlRGF0YTpdKTogU3dpdGNoIGZyb20gdXNpbmcgdGhlIHBsYWluICdsb2FkRGF0YScKKyAg
ICAgICAgbWV0aG9kIHRvIHRoZSBuZXcgJ2xvYWRTaW11bGF0ZWRSZXF1ZXN0JyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVTaW11bGF0ZWRMb2FkV2l0aERh
dGFOYXZpZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25T
dGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KTogTmV3IG1ldGhvZCB0
byBzdXBwb3J0IHRoZSBsb2FkU2ltdWxhdGVkUmVxdWVzdCBXS1dlYlZpZXcgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0RGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKTogSGVscGVyIG1ldGhvZCBmb3IgbG9hZFNpbXVsYXRlZFJlcXVlc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFNpbXVs
YXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6IEFkZGVkIG1lc3NhZ2UgaGFuZGxlciB0byBwZXJmb3Jt
IGEgc2ltdWxhdGVkIGxvYWQgdXNpbmcKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGFuZCBSZXNv
dXJjZVJlc3BvbnNlIG9iamVjdHMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjog
QWRkZWQgTG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSBJUEMgbWVzc2FnZS4KKwogMjAy
MS0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyIGlzIGFjY2Vzc2VkIGluIG5vbi10aHJl
YWQtc2FmZSBtYW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcAppbmRleCA3M2QyMmRkYjcyNjc0ZWZiN2RlNzkyZTBhNjNmYzFkMDUwZWQwNTI1Li4w
OTdjNWVjMTc2MGE0NzU5ODIwYmNjMzQyZjdhOTU1MWU1MTFkZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDExIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBuYXZpZ2F0aW9u
QWN0aXZpdHlUaW1lb3V0IHsgMzBfcyB9OwogCitTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgY29udGVudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKKyAgICA6IFN1YnN0aXR1dGVEYXRhKFdURk1v
dmUoY29udGVudCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHVzZXJEYXRhKQoreworfQorCiBOYXZpZ2F0
aW9uOjpOYXZpZ2F0aW9uKFdlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgOiBtX25hdmln
YXRpb25JRChzdGF0ZS5nZW5lcmF0ZU5hdmlnYXRpb25JRCgpKQogICAgICwgbV9jbGllbnROYXZp
Z2F0aW9uQWN0aXZpdHkobmF2aWdhdGlvbkFjdGl2aXR5VGltZW91dCkKQEAgLTc4LDYgKzgzLDEz
IEBAIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0
YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpCiAgICAgbV9zdWJzdGl0dXRlRGF0YSA9IFdURk1v
dmUoc3Vic3RpdHV0ZURhdGEpOwogfQogCitOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKFdlYktpdDo6
V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgc2lt
dWxhdGVkUmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiYmIHN1YnN0aXR1
dGVEYXRhLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKQorICAgIDog
TmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgZnJvbUl0ZW0pCit7
CisgICAgQVNTRVJUKHN1YnN0aXR1dGVEYXRhKTsKKyAgICBtX3N1YnN0aXR1dGVEYXRhID0gV1RG
TW92ZShzdWJzdGl0dXRlRGF0YSk7Cit9CisKIE5hdmlnYXRpb246On5OYXZpZ2F0aW9uKCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCmluZGV4IDE5
MDk1ZGE0ODY2MWI4NWMwOTQ2MmVhZWIxNWNmMWZlZjQxYTkxNDkuLmNkYWQ5NzgyZGFiNjY3ZTBi
N2QzY2MyYjFhOWNjMjY4NWZhOWNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVu
dW0gY2xhc3MgRnJhbWVMb2FkVHlwZSA6IHVpbnQ4X3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAg
ICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQogICAgIHsgfQogCisgICAgU3Vic3RpdHV0ZURhdGEo
VmVjdG9yPHVpbnQ4X3Q+JiYgY29udGVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gY29udGVu
dDsKICAgICBXVEY6OlN0cmluZyBNSU1FVHlwZTsKICAgICBXVEY6OlN0cmluZyBlbmNvZGluZzsK
QEAgLTkwLDYgKzkzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TmF2aWdhdGlvbihzdGF0ZSwgV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgUmVmPE5hdmlnYXRpb24+IGNyZWF0ZShXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0
ZSYgc3RhdGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHNpbXVsYXRlZFJlcXVlc3QsIHN0
ZDo6dW5pcXVlX3B0cjxTdWJzdGl0dXRlRGF0YT4mJiBzdWJzdGl0dXRlRGF0YSwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5hdmlnYXRpb24oc3RhdGUsIFdURk1vdmUoc2ltdWxhdGVkUmVxdWVzdCks
IFdURk1vdmUoc3Vic3RpdHV0ZURhdGEpLCBmcm9tSXRlbSkpOworICAgIH0KKwogICAgIHZpcnR1
YWwgfk5hdmlnYXRpb24oKTsKIAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9CkBAIC0xNjYsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAg
ICBOYXZpZ2F0aW9uKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0pOwog
ICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogZnJvbUl0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUpOwogICAgIE5hdmlnYXRpb24o
V2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vic3RpdHV0ZURh
dGE+JiYpOworICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVEYXRhPiYm
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKTsKIAogICAgIHVpbnQ2
NF90IG1fbmF2aWdhdGlvbklEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDQ5NDYxNmU5MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQuLjk0
ZjM0Y2Q4MGIyNzI5OTA4ZDA3NzdjOTM5ZDg3OTM1ZGE4YTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwOTIsNyArMjA5Miw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gd2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5T
QXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRTaW11
bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNwb25zZTooTlNVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlIHJlc3BvbnNlRGF0YTooTlNEYXRhICopZGF0YQogewotICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgcmVzcG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUsIHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKSk7CisgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRTaW11bGF0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNl
LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgg
fSkpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkU2ltdWxhdGVkUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKaW5k
ZXggMWE0MDk2OTA3MDc2ZGNmMWYwM2Y3YmViMzY5ZjhjYTRmZThlZWI1Yi4uNjQ2OTc1NjgwZjQx
Y2JmNzZlZDNhMGVhZmQ3ODY4OTRjOGVjNzkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDE1IEBAIFJlZjxBUEk6Ok5hdmln
YXRpb24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6
dW5pcXVlX3B0CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKK1JlZjxBUEk6Ok5hdmlnYXRp
b24+IFdlYk5hdmlnYXRpb25TdGF0ZTo6Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdh
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpTdWJzdGl0dXRlRGF0YT4mJiBzdWJzdGl0dXRlRGF0YSwgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogY3VycmVudEl0ZW0pCit7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gQVBJOjpOYXZpZ2F0
aW9uOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoc3Vic3RpdHV0ZURh
dGEpLCBjdXJyZW50SXRlbSk7CisKKyAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5wdHIoKSk7CisKKyAgICByZXR1cm4gbmF2aWdhdGlv
bjsKK30KKwogQVBJOjpOYXZpZ2F0aW9uKiBXZWJOYXZpZ2F0aW9uU3RhdGU6Om5hdmlnYXRpb24o
dWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZDdjNWYx
Nzg5N2EyYzgxMmYxYWVhZjY1M2IzOWUwODA4N2MyNmRmLi5iYWE0MzM1OTA0ZWM4YzViMmQ5YWRk
NTNhNGZmYzUyNzFlYzU4MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZp
Z2F0aW9uU3RhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpOYXZpZ2F0
aW9uPiBjcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtKTsKICAgICBSZWY8QVBJOjpO
YXZpZ2F0aW9uPiBjcmVhdGVSZWxvYWROYXZpZ2F0aW9uKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGN1cnJlbnRBbmRUYXJnZXRJdGVtKTsKICAgICBSZWY8QVBJOjpOYXZpZ2F0aW9uPiBjcmVhdGVM
b2FkRGF0YU5hdmlnYXRpb24oc3RkOjp1bmlxdWVfcHRyPEFQSTo6U3Vic3RpdHV0ZURhdGE+JiYp
OworICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZVNpbXVsYXRlZExvYWRXaXRoRGF0YU5h
dmlnYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlN1YnN0aXR1dGVEYXRhPiYmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBjdXJyZW50SXRlbSk7
CiAKICAgICBib29sIGhhc05hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKSBjb25zdCB7
IHJldHVybiBtX25hdmlnYXRpb25zLmNvbnRhaW5zKG5hdmlnYXRpb25JRCk7IH0KICAgICBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyNWJjYTljZmFkNmFiZGIxNmYw
NmEyZGZlMGU3YWM4NTdjZjY3MzYuLjE5MjBhM2E1NWMxNzExOTU5OTk4YmMxYTQwZGNlZGMxZjg0
YjEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDcxLDYgKzE0
NzEsNzMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIHByb2Nlc3MtPnN0YXJ0UmVzcG9u
c2l2ZW5lc3NUaW1lcigpOwogfQogCitSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHNpbXVs
YXRlZFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBzaW11bGF0ZWRSZXNwb25z
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVk
UmVxdWVzdDoiKTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBpZiAoc2lt
dWxhdGVkUmVzcG9uc2UubWltZVR5cGUoKSA9PSAidGV4dC9odG1sIl9zICYmICFpc0Z1bGxXZWJC
cm93c2VyKCkpCisgICAgICAgIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9
IHRydWU7CisjZW5kaWYKKworICAgIGlmIChtX2lzQ2xvc2VkKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBwYWdlIGlzIGNs
b3NlZCIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4g
eyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQ
cm9jZXNzKTsKKworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVh
dGVTaW11bGF0ZWRMb2FkV2l0aERhdGFOYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChzaW11bGF0
ZWRSZXF1ZXN0KSwgbWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3Rvcigp
LCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3BvbnNlKSwgbnVsbHB0ciksIG1fYmFja0Zv
cndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKKworICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91
bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKKyAgICAgICAgbmF2aWdhdGlvbi0+c2V0
Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5k
QWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CisKKyAgICBsb2FkU2ltdWxhdGVkUmVx
dWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgV1RGTW92
ZShzaW11bGF0ZWRSZXNwb25zZSksIGRhdGEsIG51bGxwdHIsIFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGOjpudWxsb3B0
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CisgICAgcmV0dXJuIG5hdmlnYXRpb247Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkU2lt
dWxhdGVkUmVxdWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBzaW11bGF0ZWRS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgc2ltdWxhdGVkUmVzcG9uc2UsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
K3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVx
dWVzdERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCIpOworCisgICAgQVNTRVJUKCFtX2lzQ2xvc2Vk
KTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKKworICAgIEFTU0VSVChzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CisgICAgCisgICAgYXV0byBiYXNlVVJMID0gc2ltdWxh
dGVkUmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKKyAgICBzaW11bGF0ZWRSZXNwb25zZS5zZXRVUkwo
c2ltdWxhdGVkUmVxdWVzdC51cmwoKSk7IC8vIFRoZXNlIHNob3VsZCBhbHdheXMgbWF0Y2ggZm9y
IHNpbXVsYXRlZCBsb2FkCisKKyAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVl
c3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgIWJhc2VVUkwuaXNF
bXB0eSgpID8gYmFzZVVSTCA6IGFib3V0QmxhbmtVUkwoKS5zdHJpbmcoKSB9KTsKKworICAgIExv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOworICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCA9IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVx
dWVzdCA9IFdURk1vdmUoc2ltdWxhdGVkUmVxdWVzdCk7CisgICAgbG9hZFBhcmFtZXRlcnMuZGF0
YSA9IGRhdGE7CisgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBzaW11bGF0ZWRSZXNwb25z
ZS5taW1lVHlwZSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSA9IHNpbXVsYXRl
ZFJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nID0gYmFzZVVSTDsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEpLmdldCgpKTsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXM7CisgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVz
ID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOworICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0
b3J5ID0gbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tC
YWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBs
b2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9u
LmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OworCisgICAgc2ltdWxhdGVkUmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGRhdGEu
c2l6ZSgpKTsKKworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2VzcywgbG9hZFBh
cmFtZXRlcnMpOworCisgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhp
cywgYmFzZVVSTCk7CisgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNp
bXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShsb2FkUGFyYW1ldGVycywgc2ltdWxhdGVkUmVzcG9u
c2UpLCB3ZWJQYWdlSUQpOworICAgIHByb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigp
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0
ZUhUTUwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzE0ZGEz
NTRhNzRjYjE5ZWNhNDE3YzQ0ZTY4OTQ4ZDkwZGJhYjczOC4uNDA3NWI3N2Q1NTJjNDZmMWRiODZh
NGU1OTc3NWE5YTU4MmQyNjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01ODgsNiArNTg4LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXNCdXROb3RBcHBMaW5rcywgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGly
ZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9h
ZFNpbXVsYXRlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBs
b2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZFdlYkFyY2hp
dmVEYXRhKEFQSTo6RGF0YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAg
IHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblBvaW50KTsKQEAgLTE2NjgsNiArMTY2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkU2ltdWxhdGVkUmVxdWVzdERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZy
YW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRh
JiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFV
SUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDAzYzljYTllZTkzN2ZkZDA4OTg0N2UxOTdlNjJkYzk2MmZmODNiYmMuLjFiNTE2MTlj
MmFlY2YxYzczMDkzOTMxYTY0MWViOTQzOTkxZmM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqCkBAIC0xNzA2LDYgKzE3MDYsNDUgQEAgdm9pZCBXZWJQYWdlOjps
b2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JC
ZWluZ0hhbmRsZWRVUkwoeyB9KTsKIH0KIAordm9pZCBXZWJQYWdlOjpsb2FkU2ltdWxhdGVkUmVx
dWVzdEFuZFJlc3BvbnNlKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIFJlc291cmNl
UmVzcG9uc2UmJiBzaW11bGF0ZWRSZXNwb25zZSkKK3sKKyAgICBBU1NFUlQoc2ltdWxhdGVkUmVz
cG9uc2UudXJsKCkgPT0gbG9hZFBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgQVNTRVJU
KHNpbXVsYXRlZFJlc3BvbnNlLm1pbWVUeXBlKCkgPT0gbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUp
OworICAgIEFTU0VSVChzaW11bGF0ZWRSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkgPT0gbG9h
ZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihzaW11bGF0ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSkgPT0gbG9hZFBhcmFt
ZXRlcnMuZGF0YS5zaXplKCkpOworCisgICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOworCisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5k
YXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKKworI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxv
YWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5n
ZXQoKSk7CisjZW5kaWYKKworICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVy
OworCisgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlv
bklEOworICAgIG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUobG9hZFBhcmFtZXRl
cnMud2Vic2l0ZVBvbGljaWVzKTsKKworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRh
KFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSwgc2lt
dWxhdGVkUmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6
OlZpc2libGUpOworCisgICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBh
Ym91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJ
UHJvY2VzcworICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0
YXRlLgorICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCBsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRh
LnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2Vi
Q29yZS4KKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwor
ICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShsb2Fk
UGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBmcmFtZUxvYWRS
ZXF1ZXN0LnNldFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZChsb2FkUGFyYW1ldGVycy5zaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0hp
c3RvcnkobG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0TG9ja0JhY2tGb3J3YXJkTGlzdChsb2FkUGFyYW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0
KTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9y
eShsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpOworICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0SXNSZXF1ZXN0RnJvbUNsaWVudE9yVXNlcklucHV0KCk7CisKKyAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgImNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgp
LmxvYWRSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOyI/CisgICAgbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkp
OworfQorCiB2b2lkIFdlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3Jl
ZW5Qb2ludCkKIHsKICAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk0
NjJlYjQ0YmJhYjIxMjliZWE2N2E1NWRkNzg3ZDU0NWVjODBmMjguLjg3N2EzMmE5MDAxMWRiMGE0
MDg5YmYxOTlmMjM0MzQ2MmM0Y2ExNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTA2LDYgKzE1MDYsNyBAQCBwcml2YXRlOgogICAgIE5PX1JF
VFVSTiB2b2lkIGxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRl
cnMmJiwgVVJMJiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgbG9h
ZERhdGEoTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChMb2Fk
UGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIGxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2Uo
TG9hZFBhcmFtZXRlcnMmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lk
IG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBX
ZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Q
b2ludCk7CiAgICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBy
ZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBnb1Rv
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCAzNGIxMmM0NjQ0NGZmMTU1YTVlMTQzMjE5OWFkOGExNzg5OTE1
ODJiLi41M2JjODUxN2Y1OGE0MjhiZDhjZDdkY2NmYzg4NTNkZTI5NDIwOWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzks
NiArMTc5LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBMb2FkUmVxdWVzdChzdHJ1
Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkUmVxdWVz
dFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxv
YWRQYXJhbWV0ZXJzLCBVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQsIGJvb2wgY2hlY2tBc3N1bWVkUmVhZEFjY2Vzc1RvUmVzb3Vy
Y2VVUkwpCiAgICAgTG9hZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBh
cmFtZXRlcnMpCisgICAgTG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShzdHJ1Y3QgV2Vi
S2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycywgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSBzaW11bGF0ZWRSZXNwb25zZSkKICAgICBMb2FkQWx0ZXJuYXRlSFRNTChzdHJ1Y3QgV2Vi
S2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKIAogICAgIE5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3Vt
ZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEyYmQ1ZjI0OWE3MzkyNDVhODc0
MzdjZTcyOWVhNGFhNTM2ZjkwY2EuLjMyYjJjZDhiZWY5MDlmYmQzMWM4Mzk1YTg1YzcxNmZiOWU2
ZmI4Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0wMi0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFeHBhbmQgc3R1YnMgdG8gdGhyZWFkIGFjdHVhbCBOU1VSTFJl
cXVlc3QvTlNVUkxSZXNwb25zZSBmb3IgdGhlIG5ldyBzaW11bGF0ZWQtcmVxdWVzdCBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY0MQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzQxNjY1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgdG8gY29uZmlybSB0aGF0IHNp
bXVsYXRlZCBsb2FkcyB3b3JrIGFuZCBhcmUgcHJvcGVybHkgYWRkZWQgdG8gdGhlCisgICAgICAg
IGJhY2stZm9yd2FyZCBsaXN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYlZpZXdMb2FkQVBJcy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTAy
LTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXQgYSBk
ZWZhdWx0IHBhdGggZm9yIGRldmljZSBJRCBoYXNoIHNhbHRzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdMb2FkQVBJcy5tbQpp
bmRleCA2MzM1MzMwZGE2OGU5NDY5MmZjNzIxNGU1ZTI3NDdmNGZmNGFmM2Q1Li5iZmM4YTI5Yzc2
NjAxYTUzZDlhOWU0ZTVjYmQ2MDk5ZDc5M2Q2ZWM2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3TG9hZEFQSXMubW0KQEAg
LTM1LDYgKzM1LDggQEAKIAogc3RhdGljIE5TVVJMICpleGFtcGxlVVJMID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl07CiBzdGF0aWMgTlNTdHJpbmcgKmh0bWxT
dHJpbmcgPSBAIjxodG1sPjxib2R5PjxoMT5IZWxsbywgd29ybGQhPC9oMT48L2JvZHk+PC9odG1s
PiI7CitzdGF0aWMgTlNVUkwgKmV4YW1wbGVVUkwyID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL2V4YW1wbGUub3JnIl07CitzdGF0aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcyID0gQCI8
aHRtbD48Ym9keT48aDE+SGVsbG8sIG5ldyB3b3JsZCE8L2gxPjwvYm9keT48L2h0bWw+IjsKIAog
VEVTVChXS1dlYlZpZXcsIExvYWRTaW11bGF0ZWRSZXF1ZXN0VXNpbmdSZXNwb25zZUhUTUxTdHJp
bmcpCiB7CkBAIC03OCwzICs4MCw0MyBAQCBURVNUKFdLV2ViVmlldywgTG9hZEZpbGVSZXF1ZXN0
KQogICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgRVhQRUNU
X1dLX1NUUkVRKHdlYlZpZXcuZ2V0KCkuX3Jlc291cmNlRGlyZWN0b3J5VVJMLnBhdGgsIGZpbGUu
VVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50LnBhdGgpOwogfQorCitURVNUKFdLV2ViVmll
dywgTG9hZFNpbXVsYXRlZFJlcXVlc3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0KQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3Qg
KmxvYWRSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpleGFtcGxlVVJMXTsK
KyAgICBbd2ViVmlldyBsb2FkU2ltdWxhdGVkUmVxdWVzdDpsb2FkUmVxdWVzdCB3aXRoUmVzcG9u
c2VIVE1MU3RyaW5nOmh0bWxTdHJpbmddOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBOU1VSTFJlcXVlc3QgKmxvYWRSZXF1ZXN0MiA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6ZXhhbXBsZVVSTDJdOworICAgIFt3ZWJWaWV3IGxvYWRTaW11
bGF0ZWRSZXF1ZXN0OmxvYWRSZXF1ZXN0MiB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOmh0bWxTdHJp
bmcyXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIAor
ICAgIFdLQmFja0ZvcndhcmRMaXN0ICpsaXN0ID0gW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XTsK
KyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMSwgbGlzdC5iYWNrTGlzdC5jb3VudCk7CisgICAg
RVhQRUNUX0VRKChOU1VJbnRlZ2VyKTAsIGxpc3QuZm9yd2FyZExpc3QuY291bnQpOworCisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgY2FuR29CYWNrXSk7CisgICAgaWYgKCFbd2ViVmlldyBjYW5H
b0JhY2tdKQorICAgICAgICByZXR1cm47CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtk
ZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoKE5T
VUludGVnZXIpMCwgbGlzdC5iYWNrTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX0VRKChOU1VJbnRl
Z2VyKTEsIGxpc3QuZm9yd2FyZExpc3QuY291bnQpOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcgY2FuR29Gb3J3YXJkXSk7CisgICAgaWYgKCFbd2ViVmlldyBjYW5Hb0ZvcndhcmRdKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbd2ViVmlldyBnb0ZvcndhcmRdOworICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIp
MSwgbGlzdC5iYWNrTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX0VRKChOU1VJbnRlZ2VyKTAsIGxp
c3QuZm9yd2FyZExpc3QuY291bnQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420691</attachid>
            <date>2021-02-17 12:13:38 -0800</date>
            <delta_ts>2021-07-02 16:43:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221641-20210217121337.patch</filename>
            <type>text/plain</type>
            <size>25839</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlODIyZWU0OTNiY2U4Mjli
YmYwYTJlNTQyYzE3ODEwM2FiNDUwMGQuLjVjOGQyYzMwM2VjYTA1YmZmOWIxZGM0NTMzNzA3NTA0
NTEyYWQ1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDItMTcgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwYW5kIHN0dWJzIHRvIHRo
cmVhZCBhY3R1YWwgTlNVUkxSZXF1ZXN0L05TVVJMUmVzcG9uc2UgZm9yIHRoZSBuZXcgc2ltdWxh
dGVkLXJlcXVlc3QgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTY2NTY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJ
IFRlc3QgTG9hZFNpbXVsYXRlZFJlcXVlc3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0LgorCisgICAg
ICAgIFRoaXMgYnVnIGJ1aWxkcyBvbiB0aGUgc3R1YnMgY3JlYXRlZCBpbiBCdWcgMjIxNDMwIHRv
IHVzZSBhY3R1YWwgUmVxdWVzdCBhbmQKKyAgICAgICAgUmVzcG9uc2Ugb2JqZWN0cyBmb3Igc2lt
dWxhdGVkIGxvYWRzOgorCisgICAgICAgIDEuIFRocmVhZCB0aGUgTlNVUkxSZXF1ZXN0IGFuZCBO
U1VSTFJlc3BvbnNlIG9iamVjdHMgdG8gdGhlIGxvYWRpbmcgbGF5ZXIgd2hlbiBoYW5kbGluZyBs
b2FkcworICAgICAgICAgICBmb3IgSFRNTCBzdHJpbmdzIGFuZCBkYXRhLgorICAgICAgICAyLiBM
b2FkcyB2aWEgdGhlIHNpbXVsYXRlZCByZXF1ZXN0IEFQSSBzaG91bGQgY2F1c2UgZW50cmllcyB0
byBiZSBhZGRlZCB0byB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCisgICAgICAgIDMuIENyZWF0ZSBh
IG5ldyBBUEkgVGVzdCB0byBjb25maXJtIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCB3b3JrcyBhcyBl
eHBlY3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6Cisg
ICAgICAgIChBUEk6OlN1YnN0aXR1dGVEYXRhOjpTdWJzdGl0dXRlRGF0YSk6IE5ldyBjb252ZW5p
ZW5jZSBjb25zdHJ1Y3RvciBhY2NlcHRpbmcgYSBSZXNvdXJjZVJlc3BvbnNlLgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjpOYXZpZ2F0aW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmNyZWF0ZSk6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6d2l0aFJlc3BvbnNlOnJlc3Bv
bnNlRGF0YTpdKTogU3dpdGNoIGZyb20gdXNpbmcgdGhlIHBsYWluICdsb2FkRGF0YScKKyAgICAg
ICAgbWV0aG9kIHRvIHRoZSBuZXcgJ2xvYWRTaW11bGF0ZWRSZXF1ZXN0JyBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlOjpjcmVhdGVTaW11bGF0ZWRMb2FkV2l0aERhdGFO
YXZpZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KTogTmV3IG1ldGhvZCB0byBz
dXBwb3J0IHRoZSBsb2FkU2ltdWxhdGVkUmVxdWVzdCBXS1dlYlZpZXcgQVBJLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTaW11bGF0ZWRSZXF1
ZXN0QW5kUmVzcG9uc2UpOiBBZGRlZCBtZXNzYWdlIGhhbmRsZXIgdG8gcGVyZm9ybSBhIHNpbXVs
YXRlZCBsb2FkIHVzaW5nCisgICAgICAgIFJlc291cmNlUmVxdWVzdCBhbmQgUmVzb3VyY2VSZXNw
b25zZSBvYmplY3RzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZGVkIExv
YWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UgSVBDIG1lc3NhZ2UuCisKIDIwMjEtMDItMTcg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFu
Z2UgQXBwIEhpZ2hsaWdodCBkZWxlZ2F0ZSB0byBwYXNzIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIGhpZ2hsaWdodCBmb3IgZGlzcGxheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmNwcAppbmRleCA3M2QyMmRkYjcyNjc0ZWZiN2RlNzkyZTBhNjNmYzFk
MDUwZWQwNTI1Li5hZWMzZTI0NjVkOWQ3NmZjNzMwOTMyZDhjMDY5OGMxNWZmMmViNjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJX
ZWJOYXZpZ2F0aW9uU3RhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KIApAQCAtMzcsNiArMzgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3Rh
dGljIGNvbnN0ZXhwciBTZWNvbmRzIG5hdmlnYXRpb25BY3Rpdml0eVRpbWVvdXQgeyAzMF9zIH07
CiAKK1N1YnN0aXR1dGVEYXRhOjpTdWJzdGl0dXRlRGF0YShWZWN0b3I8dWludDhfdD4mJiBjb250
ZW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQorICAgIDogU3Vic3RpdHV0ZURhdGEoV1RGTW92ZShjb250ZW50KSwgcmVzcG9uc2UubWlt
ZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCByZXNwb25zZS51cmwoKS5zdHJp
bmcoKSwgdXNlckRhdGEpCit7Cit9CisKIE5hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViTmF2aWdh
dGlvblN0YXRlJiBzdGF0ZSkKICAgICA6IG1fbmF2aWdhdGlvbklEKHN0YXRlLmdlbmVyYXRlTmF2
aWdhdGlvbklEKCkpCiAgICAgLCBtX2NsaWVudE5hdmlnYXRpb25BY3Rpdml0eShuYXZpZ2F0aW9u
QWN0aXZpdHlUaW1lb3V0KQpAQCAtNzgsNiArODQsMTMgQEAgTmF2aWdhdGlvbjo6TmF2aWdhdGlv
bihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYgc3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxTdWJz
dGkKICAgICBtX3N1YnN0aXR1dGVEYXRhID0gV1RGTW92ZShzdWJzdGl0dXRlRGF0YSk7CiB9CiAK
K05hdmlnYXRpb246Ok5hdmlnYXRpb24oV2ViS2l0OjpXZWJOYXZpZ2F0aW9uU3RhdGUmIHN0YXRl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBzaW11bGF0ZWRSZXF1ZXN0LCBzdGQ6OnVuaXF1
ZV9wdHI8U3Vic3RpdHV0ZURhdGE+JiYgc3Vic3RpdHV0ZURhdGEsIFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogZnJvbUl0ZW0pCisgICAgOiBOYXZpZ2F0aW9uKHN0YXRlLCBXVEZNb3Zl
KHNpbXVsYXRlZFJlcXVlc3QpLCBmcm9tSXRlbSkKK3sKKyAgICBBU1NFUlQoc3Vic3RpdHV0ZURh
dGEpOworICAgIG1fc3Vic3RpdHV0ZURhdGEgPSBXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhKTsKK30K
KwogTmF2aWdhdGlvbjo6fk5hdmlnYXRpb24oKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggMTkwOTVkYTQ4NjYxYjg1YzA5NDYyZWFlYjE1
Y2YxZmVmNDFhOTE0OS4uY2RhZDk3ODJkYWI2NjdlMGI3ZDNjYzJiMWE5Y2MyNjg1ZmE5Y2QzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBGcmFtZUxvYWRUeXBlIDog
dWludDhfdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNjAsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgdXNlckRhdGEodXNlckRhdGEp
CiAgICAgeyB9CiAKKyAgICBTdWJzdGl0dXRlRGF0YShWZWN0b3I8dWludDhfdD4mJiBjb250ZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBjb250ZW50OwogICAgIFdURjo6U3RyaW5nIE1JTUVU
eXBlOwogICAgIFdURjo6U3RyaW5nIGVuY29kaW5nOwpAQCAtOTAsNiArOTMsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0aW9uKHN0YXRlLCBXVEZNb3Zl
KHN1YnN0aXR1dGVEYXRhKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBSZWY8TmF2aWdhdGlvbj4g
Y3JlYXRlKFdlYktpdDo6V2ViTmF2aWdhdGlvblN0YXRlJiBzdGF0ZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgc2ltdWxhdGVkUmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPFN1YnN0aXR1dGVE
YXRhPiYmIHN1YnN0aXR1dGVEYXRhLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZy
b21JdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF2aWdhdGlvbihz
dGF0ZSwgV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KSwgV1RGTW92ZShzdWJzdGl0dXRlRGF0YSks
IGZyb21JdGVtKSk7CisgICAgfQorCiAgICAgdmlydHVhbCB+TmF2aWdhdGlvbigpOwogCiAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0K
QEAgLTE2Niw2ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIE5hdmlnYXRpb24oV2ViS2l0OjpXZWJO
YXZpZ2F0aW9uU3RhdGUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSk7CiAgICAgTmF2aWdhdGlvbihXZWJLaXQ6Oldl
Yk5hdmlnYXRpb25TdGF0ZSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgdGFyZ2V0
SXRlbSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSwgV2ViQ29yZTo6
RnJhbWVMb2FkVHlwZSk7CiAgICAgTmF2aWdhdGlvbihXZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0
ZSYsIHN0ZDo6dW5pcXVlX3B0cjxTdWJzdGl0dXRlRGF0YT4mJik7CisgICAgTmF2aWdhdGlvbihX
ZWJLaXQ6OldlYk5hdmlnYXRpb25TdGF0ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBz
dGQ6OnVuaXF1ZV9wdHI8U3Vic3RpdHV0ZURhdGE+JiYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogZnJvbUl0ZW0pOwogCiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMjVhZDdhNTkwZDgy
ZTgzMWYxZWM2YWFlMGQ5YmZlOGFkOTQ4MDQwOC4uYmE4ZDM1NDQ1Y2RiMWZkNTJiMmZhYTI0ZTc1
NGI0ODAyNmZkY2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjEwNSw3ICsyMTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Fy
cmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9u
SXQKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFNpbXVsYXRlZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3Qgd2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgcmVzcG9u
c2VEYXRhOihOU0RhdGEgKilkYXRhCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRE
YXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCB9LCByZXNwb25zZS5NSU1FVHlwZSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSwgcmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcpKTsKKyAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFNp
bXVsYXRlZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UsIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9KSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlv
biAqKWxvYWRTaW11bGF0ZWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdpdGhSZXNw
b25zZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmNwcAppbmRleCAxYTQwOTY5MDcwNzZkY2YxZjAzZjdi
ZWIzNjlmOGNhNGZlOGVlYjViLi42NDY5NzU2ODBmNDFjYmY3NmVkM2EwZWFmZDc4Njg5NGM4ZWM3
OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3Rh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzcsNiArNzcsMTUgQEAgUmVmPEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRl
OjpjcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24oc3RkOjp1bmlxdWVfcHQKICAgICByZXR1cm4gbmF2
aWdhdGlvbjsKIH0KIAorUmVmPEFQSTo6TmF2aWdhdGlvbj4gV2ViTmF2aWdhdGlvblN0YXRlOjpj
cmVhdGVTaW11bGF0ZWRMb2FkV2l0aERhdGFOYXZpZ2F0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlN1YnN0aXR1dGVEYXRhPiYmIHN1
YnN0aXR1dGVEYXRhLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBjdXJyZW50SXRlbSkKK3sKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBBUEk6Ok5hdmlnYXRpb246OmNyZWF0ZSgqdGhpcywgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShzdWJzdGl0dXRlRGF0YSksIGN1cnJlbnRJdGVtKTsKKworICAg
IG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9u
LnB0cigpKTsKKworICAgIHJldHVybiBuYXZpZ2F0aW9uOworfQorCiBBUEk6Ok5hdmlnYXRpb24q
IFdlYk5hdmlnYXRpb25TdGF0ZTo6bmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiB7
CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDlkN2M1ZjE3ODk3YTJjODEyZjFhZWFmNjUzYjM5ZTA4
MDg3YzI2ZGYuLmJhYTQzMzU5MDRlYzhjNWIyZDlhZGQ1M2E0ZmZjNTI3MWVjNTgwMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDcg
QEAgcHVibGljOgogICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZUxvYWRSZXF1ZXN0TmF2
aWdhdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSogY3VycmVudEl0ZW0pOwogICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZVJlbG9hZE5h
dmlnYXRpb24oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogY3VycmVudEFuZFRhcmdldEl0ZW0pOwog
ICAgIFJlZjxBUEk6Ok5hdmlnYXRpb24+IGNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpTdWJzdGl0dXRlRGF0YT4mJik7CisgICAgUmVmPEFQSTo6TmF2aWdhdGlv
bj4gY3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdhdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPEFQSTo6U3Vic3RpdHV0ZURhdGE+JiYsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtKTsKIAogICAgIGJvb2wgaGFzTmF2aWdhdGlv
bih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbnMuY29u
dGFpbnMobmF2aWdhdGlvbklEKTsgfQogICAgIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbih1
aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMGEyNmNjNjQ5ODc0OTU4MDc1NDE4N2U3OWQwNjVhMzU5MzUzNjk5NS4uZjk2
M2M4NjlkYTdlMzY3MmQzN2FkNjViMzcwZmVjYzg2N2MyYjJiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE0NzIsNiArMTQ3Miw1OSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsCiAgICAgcHJvY2Vzcy0+c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiB9CiAKK1Jl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFNpbXVsYXRlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgc2ltdWxhdGVkUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHNpbXVsYXRlZFJlc3BvbnNlLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFNp
bXVsYXRlZFJlcXVlc3Q6Iik7CisKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCisgICAg
aWYgKHNpbXVsYXRlZFJlc3BvbnNlLm1pbWVUeXBlKCkgPT0gInRleHQvaHRtbCJfcyAmJiAhaXNG
dWxsV2ViQnJvd3NlcigpKQorICAgICAgICBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgPSB0cnVlOworI2VuZGlmCisKKyAgICBpZiAobV9pc0Nsb3NlZCkgeworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkU2ltdWxhdGVkUmVxdWVzdDogcGFn
ZSBpcyBjbG9zZWQiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxl
RG9tYWluIHsgc2ltdWxhdGVkUmVxdWVzdC51cmwoKSB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJ
bml0aWFsUHJvY2Vzcyk7CisKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0
ZS0+Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3Qo
c2ltdWxhdGVkUmVxdWVzdCksIG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52
ZWN0b3IoKSwgUmVzb3VyY2VSZXNwb25zZShzaW11bGF0ZWRSZXNwb25zZSksIG51bGxwdHIpLCBt
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSk7CisKKyAgICBpZiAoc2hvdWxkRm9yY2VG
b3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCisgICAgICAgIG5hdmlnYXRp
b24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykpOworCisgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworCisgICAgYXV0byBiYXNl
VVJMID0gc2ltdWxhdGVkUmVxdWVzdC51cmwoKS5zdHJpbmcoKTsKKyAgICBzaW11bGF0ZWRSZXNw
b25zZS5zZXRVUkwoc2ltdWxhdGVkUmVxdWVzdC51cmwoKSk7IC8vIFRoZXNlIHNob3VsZCBhbHdh
eXMgbWF0Y2ggZm9yIHNpbXVsYXRlZCBsb2FkCisKKyAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVu
ZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCks
ICFiYXNlVVJMLmlzRW1wdHkoKSA/IGJhc2VVUkwgOiBhYm91dEJsYW5rVVJMKCkuc3RyaW5nKCkg
fSk7CisKKyAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKKyAgICBsb2FkUGFyYW1l
dGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShzaW11bGF0ZWRSZXF1ZXN0KTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5kYXRhID0gZGF0YTsKKyAgICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9IHNp
bXVsYXRlZFJlc3BvbnNlLm1pbWVUeXBlKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdO
YW1lID0gc2ltdWxhdGVkUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworICAgIGxvYWRQYXJh
bWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdzsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQgPSBmYWxzZTsKKyAgICBsb2FkUGFyYW1ldGVycy5sb2NrSGlzdG9yeSA9
IG5hdmlnYXRpb24tPmxvY2tIaXN0b3J5KCk7CisgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tG
b3J3YXJkTGlzdCA9IG5hdmlnYXRpb24tPmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLT5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
OworCisgICAgc2ltdWxhdGVkUmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGRhdGEu
c2l6ZSgpKTsKKworICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobV9wcm9jZXNzLCBsb2Fk
UGFyYW1ldGVycyk7CisKKyAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
KnRoaXMsIGJhc2VVUkwpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShsb2FkUGFyYW1ldGVycywgc2ltdWxhdGVk
UmVzcG9uc2UpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zdGFydFJlc3BvbnNpdmVu
ZXNzVGltZXIoKTsKKyAgICByZXR1cm4gbmF2aWdhdGlvbjsKK30KKwogdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1
bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE0ZWExMDYzMzAyYjZmZDBiNjU4ZjFkNjIwZTMz
ODJhZmZhOWRkNWUuLjI5MjQwNmM5YmY2Y2FlNzcxYmRkMWMyOTFhNjViM2VkMTMwZmMwZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTkzLDYgKzU5Myw3IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0
ZXJuYWxTY2hlbWVzQnV0Tm90QXBwTGlua3MsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEgPSBudWxscHRyLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cp
OworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRTaW11bGF0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEg
PSBudWxscHRyKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5r
V2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBk
b2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM2ODU1ZDIxZTBiOGEy
ZGY4YWVjMzE3YjU0Y2EwMjE4NTE5NDk0MmUuLjlmNmViNmNkZTY4NzMzNDQ1OTA0ZGU3N2M1Yjc3
ZTk5ZWM1YTIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCkBA
IC0xNzIxLDYgKzE3MjEsNDUgQEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2Fk
UGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoeyB9KTsK
IH0KIAordm9pZCBXZWJQYWdlOjpsb2FkU2ltdWxhdGVkUmVxdWVzdEFuZFJlc3BvbnNlKExvYWRQ
YXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiBzaW11bGF0ZWRS
ZXNwb25zZSkKK3sKKyAgICBBU1NFUlQoc2ltdWxhdGVkUmVzcG9uc2UudXJsKCkgPT0gbG9hZFBh
cmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgQVNTRVJUKHNpbXVsYXRlZFJlc3BvbnNlLm1p
bWVUeXBlKCkgPT0gbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUpOworICAgIEFTU0VSVChzaW11bGF0
ZWRSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkgPT0gbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdO
YW1lKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaW11bGF0ZWRSZXNwb25zZS5l
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSkgPT0gbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwor
CisgICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwor
CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJh
bWV0ZXJzLmRhdGEuc2l6ZSgpKTsKKworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CisjZW5kaWYKKworICAg
IFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOworCisgICAgbV9wZW5kaW5nTmF2
aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOworICAgIG1fcGVuZGluZ1dl
YnNpdGVQb2xpY2llcyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKTsK
KworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdC51cmwoKSwgc2ltdWxhdGVkUmVzcG9uc2UsIFN1YnN0
aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGUpOworCisgICAgLy8g
TGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9h
ZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcworICAgIC8vIHRvIGFs
bCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgorICAgIG1fbG9hZGVyQ2xp
ZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBj
b25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0
aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJz
dGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHMobG9hZFBhcmFtZXRlcnMudXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKKworICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KKyAgICBGcmFtZUxvYWRS
ZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBh
cmFtZXRlcnMucmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOworICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZChsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0hpc3RvcnkobG9hZFBhcmFtZXRlcnMu
bG9ja0hpc3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3YXJkTGlz
dChsb2FkUGFyYW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShsb2FkUGFyYW1ldGVycy5jbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0SXNS
ZXF1ZXN0RnJvbUNsaWVudE9yVXNlcklucHV0KCk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgYmUgImNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmxvYWRSZXF1ZXN0KFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCkpOyI/CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOworfQorCiB2b2lkIFdlYlBhZ2U6
Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJ
bnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKICAgICBGcmFt
ZSogbWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDY4Mzc5ZDY0YTJmMGFiYjg2MTI0ZmIz
ZWY5MTY3NmRlN2I0ZGFiYjIuLmYzZWI3MmQyZGU5OGYwMDJhNmZmNzg5ZDJkYTMyZmFiYTk0MDVm
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NTA2LDYgKzE1MDYsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTiB2b2lkIGxvYWRSZXF1ZXN0
V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMJiYsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgbG9hZERhdGEoTG9hZFBhcmFtZXRlcnMm
Jik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2
b2lkIGxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UoTG9hZFBhcmFtZXRlcnMmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0
aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1
bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAgICAgdm9pZCByZWxv
YWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5
NDkxNTM1MWIwOTAwYjI4YjhiOWU4NjljNWIwZjQ3MDEwNTgwYzEwLi4wODdjOTBhMTM0Y2I0ZTYx
OGMzZDdkMjQ4MTI4ZGQ5YzE0YzRmNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzksNiArMTc5LDcgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1l
dGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1
bmNoKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzLCBVUkwgcmVz
b3VyY2VEaXJlY3RvcnlVUkwsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQs
IGJvb2wgY2hlY2tBc3N1bWVkUmVhZEFjY2Vzc1RvUmVzb3VyY2VVUkwpCiAgICAgTG9hZERhdGEo
c3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCisgICAgTG9hZFNp
bXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVycywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBzaW11bGF0ZWRSZXNwb25z
ZSkKICAgICBMb2FkQWx0ZXJuYXRlSFRNTChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVycykKIAogICAgIE5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50IHNjcmVlblBvaW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDAzZDhkYTZhNGQ5OTA3NTNmMGIwNDY1ZmY3ODA1NDdjMDhhMmZmNzQu
LjQ4YjY2ZDQxOTg1YmZhMjNkZjA4NDllMWFkNTM2ODA5MDZhN2MxYTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
MS0wMi0xNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
eHBhbmQgc3R1YnMgdG8gdGhyZWFkIGFjdHVhbCBOU1VSTFJlcXVlc3QvTlNVUkxSZXNwb25zZSBm
b3IgdGhlIG5ldyBzaW11bGF0ZWQtcmVxdWVzdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzQxNjY1Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
QWRkIGEgbmV3IHRlc3QgdG8gY29uZmlybSB0aGF0IHNpbXVsYXRlZCBsb2FkcyB3b3JrIGFuZCBh
cmUgcHJvcGVybHkgYWRkZWQgdG8gdGhlCisgICAgICAgIGJhY2stZm9yd2FyZCBsaXN0LgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdMb2FkQVBJ
cy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTAyLTE3ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gRmFpbHVyZSB0byByZXRy
aWV2ZSBjb21taXQgaW4gRVdTIChJbnZlc3RpZ2F0aW9uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdMb2FkQVBJcy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3TG9hZEFQSXMubW0KaW5k
ZXggNjMzNTMzMGRhNjhlOTQ2OTJmYzcyMTRlNWUyNzQ3ZjRmZjRhZjNkNS4uNjI1MzA0ZTY1NjRl
NTVkZGNiNTc5NzQwOWMzNjIxNmM5OTAyZDVlOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdMb2FkQVBJcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tCkBAIC0y
NCwxNyArMjQsMjIgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAotc3RhdGljIE5TVVJMICpleGFt
cGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl07Citz
dGF0aWMgTlNTdHJpbmcgKmV4YW1wbGVVUkxTdHJpbmcgPSBAImh0dHBzOi8vZXhhbXBsZS5jb20i
Oworc3RhdGljIE5TVVJMICpleGFtcGxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6ZXhhbXBs
ZVVSTFN0cmluZ107CiBzdGF0aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBAIjxodG1sPjxib2R5
PjxoMT5IZWxsbywgd29ybGQhPC9oMT48L2JvZHk+PC9odG1sPiI7CitzdGF0aWMgTlNTdHJpbmcg
KmV4YW1wbGVVUkxTdHJpbmcyID0gQCJodHRwczovL2V4YW1wbGUub3JnIjsKK3N0YXRpYyBOU1VS
TCAqZXhhbXBsZVVSTDIgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpleGFtcGxlVVJMU3RyaW5nMl07
CitzdGF0aWMgTlNTdHJpbmcgKmh0bWxTdHJpbmcyID0gQCI8aHRtbD48Ym9keT48aDE+SGVsbG8s
IG5ldyB3b3JsZCE8L2gxPjwvYm9keT48L2h0bWw+IjsKIAogVEVTVChXS1dlYlZpZXcsIExvYWRT
aW11bGF0ZWRSZXF1ZXN0VXNpbmdSZXNwb25zZUhUTUxTdHJpbmcpCiB7CkBAIC03OCwzICs4Myw1
MiBAQCBURVNUKFdLV2ViVmlldywgTG9hZEZpbGVSZXF1ZXN0KQogICAgIFtkZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKHdlYlZpZXcuZ2V0
KCkuX3Jlc291cmNlRGlyZWN0b3J5VVJMLnBhdGgsIGZpbGUuVVJMQnlEZWxldGluZ0xhc3RQYXRo
Q29tcG9uZW50LnBhdGgpOwogfQorCitURVNUKFdLV2ViVmlldywgTG9hZFNpbXVsYXRlZFJlcXVl
c3RVcGRhdGVzQmFja0ZvcndhcmRMaXN0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKmxvYWRSZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpleGFtcGxlVVJMXTsKKyAgICBbd2ViVmlldyBsb2FkU2lt
dWxhdGVkUmVxdWVzdDpsb2FkUmVxdWVzdCB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOmh0bWxTdHJp
bmddOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBO
U1VSTFJlcXVlc3QgKmxvYWRSZXF1ZXN0MiA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
ZXhhbXBsZVVSTDJdOworICAgIFt3ZWJWaWV3IGxvYWRTaW11bGF0ZWRSZXF1ZXN0OmxvYWRSZXF1
ZXN0MiB3aXRoUmVzcG9uc2VIVE1MU3RyaW5nOmh0bWxTdHJpbmcyXTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIAorICAgIFdLQmFja0ZvcndhcmRMaXN0
ICpsaXN0ID0gW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXhhbXBsZVVSTFN0cmluZzIsIFtsaXN0LmN1cnJlbnRJdGVtLlVSTCBhYnNvbHV0ZVN0cmluZ10p
OworICAgIEVYUEVDVF9FUSgoTlNVSW50ZWdlcikxLCBsaXN0LmJhY2tMaXN0LmNvdW50KTsKKyAg
ICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwgbGlzdC5mb3J3YXJkTGlzdC5jb3VudCk7CisgICAg
RVhQRUNUX1RSVUUoIWxpc3QuZm9yd2FyZEl0ZW0pOworICAgIEVYUEVDVF9XS19TVFJFUShleGFt
cGxlVVJMU3RyaW5nLCBbbGlzdC5iYWNrSXRlbS5VUkwgYWJzb2x1dGVTdHJpbmddKTsKKyAgICAK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBjYW5Hb0JhY2tdKTsKKyAgICBpZiAoIVt3ZWJWaWV3
IGNhbkdvQmFja10pCisgICAgICAgIHJldHVybjsKKworICAgIFt3ZWJWaWV3IGdvQmFja107Cisg
ICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIEVYUEVDVF9X
S19TVFJFUShleGFtcGxlVVJMU3RyaW5nLCBbbGlzdC5jdXJyZW50SXRlbS5VUkwgYWJzb2x1dGVT
dHJpbmddKTsKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwgbGlzdC5iYWNrTGlzdC5jb3Vu
dCk7CisgICAgRVhQRUNUX0VRKChOU1VJbnRlZ2VyKTEsIGxpc3QuZm9yd2FyZExpc3QuY291bnQp
OworICAgIEVYUEVDVF9UUlVFKCFsaXN0LmJhY2tJdGVtKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXhhbXBsZVVSTFN0cmluZzIsIFtsaXN0LmZvcndhcmRJdGVtLlVSTCBhYnNvbHV0ZVN0cmluZ10p
OworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgY2FuR29Gb3J3YXJkXSk7CisgICAgaWYgKCFb
d2ViVmlldyBjYW5Hb0ZvcndhcmRdKQorICAgICAgICByZXR1cm47CisKKyAgICBbd2ViVmlldyBn
b0ZvcndhcmRdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhhbXBsZVVSTFN0cmluZzIsIFtsaXN0LmN1cnJlbnRJdGVt
LlVSTCBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9FUSgoTlNVSW50ZWdlcikxLCBsaXN0
LmJhY2tMaXN0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwgbGlzdC5mb3J3
YXJkTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX1RSVUUoIWxpc3QuZm9yd2FyZEl0ZW0pOworICAg
IEVYUEVDVF9XS19TVFJFUShleGFtcGxlVVJMU3RyaW5nLCBbbGlzdC5iYWNrSXRlbS5VUkwgYWJz
b2x1dGVTdHJpbmddKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420746</attachid>
            <date>2021-02-17 16:03:49 -0800</date>
            <delta_ts>2021-02-17 16:40:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221641-20210217160348.patch</filename>
            <type>text/plain</type>
            <size>3232</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhN2MzNTg3OWFhYWVkMmZm
NWZiZmY2MTcyNjM0MzA2NjY0YmY4MWUuLjQ0ZTMzYTlhMWVjMGUyYzAxNjYyZTU2ZmE1NmNkZDU4
MjY0NjA2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDItMTcgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93LXVwIGZpeCBhZnRl
ciByMjczMDIzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxNjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDE2NjU2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgYnkgVGVzdFdlYktp
dEFQSS4KKworICAgICAgICBSZXNvdXJjZSBsb2FkaW5nIGV4cGVjdHMgdGhlIHBhc3NlZCBSZXNv
dXJjZVJlc3BvbnNlIHRvIGhhdmUgYSBjZXJ0aWZpY2F0ZUluZm8gb2JqZWN0LgorICAgICAgICBU
aGlzIHBhdGNoIGVuc3VyZXMgdGhhdCBvbmUgZXhpc3RzLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFNp
bXVsYXRlZFJlcXVlc3QpOiBFbnN1cmUgY2VydGlmaWNhdGUgaW5mbyBpcyBpbmNsdWRlZC4KKwog
MjAyMS0wMi0xNyAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjcyOTA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggZjk2M2M4NjlkYTdlMzY3MmQzN2FkNjViMzcwZmVjYzg2N2My
YjJiOS4uOGQ3NDJhODRkNDNhM2E5OTQ1NTBiYWVhODk2YTAzZTcxMjMwMmM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTE2LDYgKzE1MTYsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdQogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiAKICAgICBz
aW11bGF0ZWRSZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZGF0YS5zaXplKCkpOwor
ICAgIHNpbXVsYXRlZFJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKIAogICAgIGFk
ZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobV9wcm9jZXNzLCBsb2FkUGFyYW1ldGVycyk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODAyODhm
YjEzMjdlNzEzNmI4MzM4MWRlYTFmYzhkZGM2ZjAzOGRkLi5iYWUyMDYxNGFlNjVkZDY5ZWQzOWY2
MWY3OWIyMjc5YWZmMjFiODRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDItMTcgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93LXVwIGZpeCBhZnRlciByMjcz
MDIzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDE2NjU2OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3JyZWN0IHRoZSBzdHJpbmcgY29tcGFy
aXNvbiBmb3IgdGhlIGJhY2svZm9yd2FyZCBsaXN0IHRlc3QuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0xvYWRBUElzLm1tOgorCiAyMDIxLTAy
LTE3ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGRl
cHJlY2F0aW9uIG5vdGljZXMgdG8gYmVsaWV2ZWQtdW51c2VkIGNvbW1hbmRzIGluIHdlYmtpdC1w
YXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdMb2FkQVBJcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJWaWV3TG9hZEFQSXMubW0KaW5kZXggNjI1MzA0ZTY1NjRlNTVkZGNiNTc5NzQwOWMz
NjIxNmM5OTAyZDVlOC4uYmVkNTAwZWEzMzk0NWE4MWU2OGQ4ODgzN2ZhOTBhZjdjZTU3MjA4YSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdMb2FkQVBJcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld0xvYWRBUElzLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCi1zdGF0aWMg
TlNTdHJpbmcgKmV4YW1wbGVVUkxTdHJpbmcgPSBAImh0dHBzOi8vZXhhbXBsZS5jb20iOworc3Rh
dGljIE5TU3RyaW5nICpleGFtcGxlVVJMU3RyaW5nID0gQCJodHRwczovL2V4YW1wbGUuY29tLyI7
CiBzdGF0aWMgTlNVUkwgKmV4YW1wbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpleGFtcGxl
VVJMU3RyaW5nXTsKIHN0YXRpYyBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPGh0bWw+PGJvZHk+
PGgxPkhlbGxvLCB3b3JsZCE8L2gxPjwvYm9keT48L2h0bWw+IjsKLXN0YXRpYyBOU1N0cmluZyAq
ZXhhbXBsZVVSTFN0cmluZzIgPSBAImh0dHBzOi8vZXhhbXBsZS5vcmciOworc3RhdGljIE5TU3Ry
aW5nICpleGFtcGxlVVJMU3RyaW5nMiA9IEAiaHR0cHM6Ly9leGFtcGxlLm9yZy8iOwogc3RhdGlj
IE5TVVJMICpleGFtcGxlVVJMMiA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOmV4YW1wbGVVUkxTdHJp
bmcyXTsKIHN0YXRpYyBOU1N0cmluZyAqaHRtbFN0cmluZzIgPSBAIjxodG1sPjxib2R5PjxoMT5I
ZWxsbywgbmV3IHdvcmxkITwvaDE+PC9ib2R5PjwvaHRtbD4iOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>