<?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>225615</bug_id>
          
          <creation_ts>2021-05-10 14:32:37 -0700</creation_ts>
          <short_desc>Promote `-[WKWebView _pageExtendedBackgroundColor]` SPI to `-[WKWebView underPageBackgroundColor]` API</short_desc>
          <delta_ts>2021-05-14 14:34:58 -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 API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758642</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-10 14:32:37 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758644</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-10 14:32:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/76568094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758670</commentid>
    <comment_count>2</comment_count>
      <attachid>428209</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-10 15:02:01 -0700</bug_when>
    <thetext>Created attachment 428209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758715</commentid>
    <comment_count>3</comment_count>
      <attachid>428209</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-10 16:46:40 -0700</bug_when>
    <thetext>Comment on attachment 428209
Patch

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

&gt; Source/WebCore/page/Page.cpp:2577
&gt; +    if (auto* frameView = mainFrame().view()) {
&gt; +        if (auto* renderView = frameView-&gt;renderView()) {

Nit - `if (auto … = makeRefPtr(…))`

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:493
&gt; +    return webView.underPageBackgroundColor.CGColor;

We seem to have lost the null check for `webView-&gt;_page` here, since `-underPageBackgroundColor` dereferences `_page`.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8622
&gt; +#if !PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS_FAMILY)

Nit - !PLATFORM(COCOA)?

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2661
&gt; +    bool m_pendingUnderPageBackgroundColorOverrideToDispatch { false };

Nit - m_hasPendingUnderPageBackgroundColorOverrideToDispatch? (The current name makes it sound like it should be a `Color` or `Optional&lt;Color&gt;`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758725</commentid>
    <comment_count>4</comment_count>
      <attachid>428209</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-10 16:57:14 -0700</bug_when>
    <thetext>Comment on attachment 428209
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:493
&gt;&gt; +    return webView.underPageBackgroundColor.CGColor;
&gt; 
&gt; We seem to have lost the null check for `webView-&gt;_page` here, since `-underPageBackgroundColor` dereferences `_page`.

Is it ever actually possible for a `WKWebView` to not have a `_page`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758735</commentid>
    <comment_count>5</comment_count>
      <attachid>428209</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-10 17:04:49 -0700</bug_when>
    <thetext>Comment on attachment 428209
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:493
&gt;&gt;&gt; +    return webView.underPageBackgroundColor.CGColor;
&gt;&gt; 
&gt;&gt; We seem to have lost the null check for `webView-&gt;_page` here, since `-underPageBackgroundColor` dereferences `_page`.
&gt; 
&gt; Is it ever actually possible for a `WKWebView` to not have a `_page`?

`_page` is set very early on when initializing the web view, but it might be theoretically possible for a WebKit client to call into API that requires `_page` before this happens...

Potentially something like trying to `-setBackgroundColor` before calling into the superclass initializer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758781</commentid>
    <comment_count>6</comment_count>
      <attachid>428234</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-10 18:40:08 -0700</bug_when>
    <thetext>Created attachment 428234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759028</commentid>
    <comment_count>7</comment_count>
      <attachid>428306</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-11 12:28:34 -0700</bug_when>
    <thetext>Created attachment 428306
[Patch] logging for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759096</commentid>
    <comment_count>8</comment_count>
      <attachid>428326</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-11 16:19:23 -0700</bug_when>
    <thetext>Created attachment 428326
[Patch] logging for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759146</commentid>
    <comment_count>9</comment_count>
      <attachid>428339</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-11 20:45:34 -0700</bug_when>
    <thetext>Created attachment 428339
[Patch] logging for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759183</commentid>
    <comment_count>10</comment_count>
      <attachid>428352</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-12 00:51:59 -0700</bug_when>
    <thetext>Created attachment 428352
[Patch] logging for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759319</commentid>
    <comment_count>11</comment_count>
      <attachid>428391</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-12 11:32:20 -0700</bug_when>
    <thetext>Created attachment 428391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760185</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-14 13:35:33 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 428391 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760190</commentid>
    <comment_count>13</comment_count>
      <attachid>428651</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-14 13:44:49 -0700</bug_when>
    <thetext>Created attachment 428651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760212</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-14 14:34:54 -0700</bug_when>
    <thetext>Committed r277505 (237736@main): &lt;https://commits.webkit.org/237736@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428651.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428209</attachid>
            <date>2021-05-10 15:02:01 -0700</date>
            <delta_ts>2021-05-10 18:40:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225615-20210510160200.patch</filename>
            <type>text/plain</type>
            <size>73148</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzBiMGY2NGNhODFhZGVhYTRkNTY2NzZhOWExYWMxOGRhYjdiOTc3Yy4uYjNjMDFlMDZh
NTllMGQxMDQyY2FiOGRiMmY1MmQ4OWY2OWYxZmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0
YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxsIHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisg
ICAgICAgICAtIHRoZSBtb3N0IHJlY2VudCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAg
ICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5kLWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8
aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yYCkKKyAgICAgICAgIC0gdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJh
Y2tncm91bmQgY29sb3IKKyAgICAgICAgTW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdp
bGwgbm90IGhhdmUgYW55IGVmZmVjdCB1bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBy
dW5sb29wLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0lu
dGVybmFsLnlhbWw6CisgICAgICAgIFJlbW92ZSB0aGUgZXhwZXJpbWVudGFsIHNldHRpbmdzIGBV
c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmBhbmQKKyAg
ICAgICAgYFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhh
dCBjbGllbnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFy
ZWEgYmFja2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yOl1gLgorCiAyMDIxLTA1LTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXYXJuaW5ncyBhYm91dCB1bnVzZWQgZmlsZXN5
c3RlbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NmZlNDQyNjkzYjU5NmJkNzE3NzQ0Y2FmYTVj
YzM4MzlmODliMzA0Li42Yjk0YmIyM2MwNWMxNDA4OGJmMjFlM2M3N2M0Yjk1OTZlOTI0YjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMDUtMTAgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgYC1bV0tXZWJWaWV3IF9wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgdG8gYC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl1gIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI1NjE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU2ODA5ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRoYXQgd2lsbCBy
ZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9zdCByZWNlbnQg
bm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFja2dyb3VuZC1j
b2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0aGUgY3VycmVu
dCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAgICAgICAtIHRo
ZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisgICAgICAgIE1v
ZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3QgdW50
aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAgICBUZXN0czog
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZAorICAgICAgICAgICAgICAg
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IKKyAgICAg
ICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVCbGVuZGVk
Q29sb3IKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5N
dWx0aXBsZVNvbGlkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuS1ZPCisgICAgICAgICAgICAgICBXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcKKworICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
OiBBZGRlZC4KKyAgICAgICAgSG9sZCB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBmb3IgYHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVuCisgICAg
ICAgIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENvbG9yKToK
KyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBsZWRQYWdl
VG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAgYFVzZVRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGllbnRzIGNh
biBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFja2dyb3Vu
ZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1g
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIEl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2Fy
eSB0byBmb3JjZSB0aGUgb3ZlcnNjcm9sbCBhcmVhIHRvIHJlZHJhdyBzaW5jZSB0aGF0J2xsIGJl
IGhhbmRsZWQgYnkKKyAgICAgICAgYSBjbGllbnQgY2FsbGluZyBgLVtXS1dlYlZpZXcgc2V0VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gIChwb3NzaWJseSBpbiByZXNwb25zZSB0byBhCisgICAg
ICAgIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9yXWAgS1ZPIG5vdGlmaWNhdGlvbikuCisKIDIwMjEt
MDUtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W21hY09TXSBTZXQgdGhlIC1pc1NvdXJjZUVkaXRhYmxlIHByb3BlcnR5IHdoZW4gcHJlc2VudGlu
ZyB3ZWJwYWdlIHRyYW5zbGF0aW9uIHBvcHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNlNzczZjY5OThkOGUwOGNj
MmNhZDY1OTYwYzFhY2I4YzRmYzk4MzkuLmY3NWM5ODVlOGY2NzU1MmYxNjRmZTdmMzM4Y2Q2ZDYx
Zjk5YWZlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjEtMDUtMTAgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgYC1bV0tXZWJWaWV3
IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgdG8gYC1bV0tXZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl1gIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NjE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU2ODA5
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBgdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRo
YXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9z
dCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFj
a2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0
aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAg
ICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisg
ICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBl
ZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3I6XSk6IEFkZGVkLgorICAgICAgICAoK1tXS1dlYlZpZXcgYXV0b21hdGljYWxs
eU5vdGlmaWVzT2JzZXJ2ZXJzT2ZVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdKTogQWRkZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgIChi
YXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIChzY3JvbGxWaWV3QmFja2dy
b3VuZENvbG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVz
ZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAg
ICAgICAgYFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhh
dCBjbGllbnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFy
ZWEgYmFja2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yOl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgU3RvcmUgdGhlIGNsaWVu
dC1vdmVycmlkZW4gdmFsdWUgZm9yIGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIGFuZCBtYW5h
Z2Ugc3RhdGUgY2hhbmdlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxD
aGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UpOiBBZGRlZC4KKyAgICAgICAgQWRkIE9iakMgS1ZPIHN1cHBvcnQgZm9yIGAtW1dLV2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdYC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29udGVudFZpZXdC
YWNrZ3JvdW5kQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBnZXQgdGhl
IGBiYWNrZ3JvdW5kQ29sb3JgIG9mIHRoZSBgV0tDb250ZW50Vmlld2AuIFRoaXMgaXMgbmVlZGVk
IG9uIGlPUworICAgICAgICBiZWNhdXNlIGBzY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yYCAobm93
IGBXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCkKKyAgICAg
ICAgd291bGQgdXNlIHRoaXMgdmFsdWUgYmVmb3JlIGZhbGxpbmcgYmFjayB0byB0aGUgdW5kZXJs
eWluZyBwbGF0Zm9ybSB2aWV3J3MgYmFja2dyb3VuZCBjb2xvci4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSk6IEFkZGVkLgorICAgICAgICBQYXNzIHRoZSBjbGllbnQtb3ZlcnJpZGVuIHZh
bHVlIGZvciBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCB0byB0aGUgV2ViUHJvY2VzcyBzbyB0
aGF0IGl0CisgICAgICAgIGNhbiBiZSB1c2VkIHdoZW4gZHJhd2luZyB0aGUgb3ZlcnNjcm9sbCBs
YXllci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdCk6CisgICAgICAg
IEdvIGJhY2sgdG8gdXNpbmcgdGhlIGBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JgIChiZWZv
cmUgcjI3MzA4MykuCisKIDIwMjEtMDUtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTZXQgdGhlIC1pc1NvdXJjZUVkaXRhYmxlIHBy
b3BlcnR5IHdoZW4gcHJlc2VudGluZyB3ZWJwYWdlIHRyYW5zbGF0aW9uIHBvcHVwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5h
bC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbAppbmRleCA5MzU3ZWU5ZDhmMzQ0YTAzYmNiOGNhMDBiZTJhZjJkMzQ5ZTZmYWEx
Li45Y2M3ZTE5MzAyOGRiN2YxMTM4YmVlNmNhMWU0NjExNzc5NGJjZmU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
CisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVy
bmFsLnlhbWwKQEAgLTc0OSwzMCArNzQ5LDYgQEAgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
Z0VuYWJsZWQ6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZGVmYXVsdFVzZUdQVVByb2Nl
c3NGb3JET01SZW5kZXJpbmdFbmFibGVkKCkKIAotVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNj
cm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5h
bWU6ICJVc2Ugc2FtcGxlZCBwYWdlIHRvcCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3Vu
ZCBjb2xvciIKLSAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiVXNlIHNhbXBsZWQgcGFnZSB0
b3AgY29sb3IgZm9yIHNjcm9sbCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1
ZToKLSAgICBXZWJLaXRMZWdhY3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoK
LSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNl
Ci0KLVVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOgotICB0eXBlOiBi
b29sCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiVXNlIHRoZW1lLWNvbG9yIGZvciBzY3JvbGwgYXJl
YSBiYWNrZ3JvdW5kIGNvbG9yIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgdGhl
bWUtY29sb3IgZm9yIHNjcm9sbCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1
ZToKLSAgICBXZWJLaXRMZWdhY3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoK
LSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNl
Ci0KICMgRklYTUU6IFJlbW92ZSBvbmNlIDxyZGFyOi8vNzM4MzA5NjE+IGhhcyBiZWVuIGZpeGVk
CiBVc2VpVHVuZXNBVk91dHB1dENvbnRleHQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGQ5MGRiMjgxN2RjNzEyMzljYmY4OTkxMGVhZWMwNDE3NWM1YTUwYTQuLjFm
NjYzZTQyOGUxM2JmZTgzYmY3MDE5NTQ3MmUzOThkODE4ZmRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMzg2MiwxMyArMzg2Miw2IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JD
aGFuZ2VkKCkKIAogICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOwotCi0jaWYgRU5BQkxF
KFJVQkJFUl9CQU5ESU5HKQotICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7Ci0g
ICAgICAgIGlmICh2aWV3LT51c2VzQ29tcG9zaXRpbmcoKSkKLSAgICAgICAgICAgIHZpZXctPmNv
bXBvc2l0b3IoKS51cGRhdGVMYXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsK
LSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCiBzdGF0aWMgYm9v
bCBpc1ZhbGlkUGFnZVNhbXBsZUxvY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50
UG9pbnQmIGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMDNmODIzMjBiYzIxYzQyZmY4
ZWZiZDAyNjRhZDA5OTBjMDUyMmQ5MC4uMGNmN2ZlYzZhOTUxZjAwNjFkNGNlOWFlM2U4MjFmZTBh
N2E3YzVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTYzLDYgKzI1NjMsMjUgQEAgQ29sb3Ig
UGFnZTo6c2FtcGxlZFBhZ2VUb3BDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50LT5z
YW1wbGVkUGFnZVRvcENvbG9yKCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUoQ29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlk
ZSkKK3sKKyAgICBpZiAodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0gbV91bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdURk1vdmUodW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsK
KworI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
bWFpbkZyYW1lKCkudmlldygpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJh
bWVWaWV3LT5yZW5kZXJWaWV3KCkpIHsKKyAgICAgICAgICAgIGlmIChyZW5kZXJWaWV3LT51c2Vz
Q29tcG9zaXRpbmcoKSkKKyAgICAgICAgICAgICAgICByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCku
dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQorfQorCiAvLyBUaGVzZSBh
cmUgbWFnaWNhbCBjb25zdGFudHMgdGhhdCBtaWdodCBiZSB0d2Vha2VkIG92ZXIgdGltZS4KIHN0
YXRpYyBjb25zdCBkb3VibGUgZ01pbmltdW1QYWludGVkQXJlYVJhdGlvID0gMC4xOwogc3RhdGlj
IGNvbnN0IGRvdWJsZSBnTWF4aW11bVVucGFpbnRlZEFyZWFSYXRpbyA9IDAuMDQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCmluZGV4IDZkZDA3ZTFiYTkxZjMxNGRhNjBlMmFmM2M3NDA5Y2E1MzgyZWRlNTEuLjMxYTQy
YTk3MTFhZWRjMTg3ZjU3MzJiN2Q2ZTBmZDZkNWU0MTBkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02
MjMsNiArNjIzLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHNh
bXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdDsKIAorICAgIENvbG9yIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUoQ29sb3ImJik7CisKICAgICBib29sIGlzQ291bnRpbmdSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHMoKSBjb25zdDsKICAgICB2b2lkIHNldElzQ291bnRpbmdSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHMoYm9vbCBpc0NvdW50aW5nKSB7IG1faXNDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cyA9IGlzQ291bnRpbmc7IH0KICAgICB2b2lkIHN0YXJ0Q291bnRpbmdS
ZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsKQEAgLTExNTIsNiArMTE1NSw4IEBAIHByaXZhdGU6
CiAKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsKIAor
ICAgIENvbG9yIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CisKICAgICBjb25z
dCBib29sIG1faHR0cHNVcGdyYWRlRW5hYmxlZCB7IHRydWUgfTsKICAgICBtdXRhYmxlIE1lZGlh
U2Vzc2lvbkdyb3VwSWRlbnRpZmllciBtX21lZGlhU2Vzc2lvbkdyb3VwSWRlbnRpZmllcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IGY4Nzc0NTcyYjRiNTJlNGFhNzkxZmM4N2JmODUyYjA2ZmNjMmUyMWMuLmU5YmQ4
YTk5MzE4YzM0NDY4ZjMxYmE3ZGE4ZmI2NjBkNWQ3OGY1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0zOTIzLDExICsz
OTIzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9yT3Zlcmhh
bmdBcmVhc0JhY2tncm91bmRDb2xvcigpCiAgICAgaWYgKCFtX2xheWVyRm9yT3ZlcmhhbmdBcmVh
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwotICAgIGlm
IChwYWdlKCkuc2V0dGluZ3MoKS51c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRD
b2xvcigpKQotICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkudGhlbWVDb2xvcigpOwot
ICAgIGlmIChwYWdlKCkuc2V0dGluZ3MoKS51c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvcigpICYmICFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkuc2FtcGxlZFBhZ2VUb3BDb2xvcigpOworICAg
IGF1dG8gYmFja2dyb3VuZENvbG9yID0gcGFnZSgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBi
YWNrZ3JvdW5kQ29sb3IgPSBtX3Jvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IDhmOTU0M2Ez
N2Q2Yzc5ZmQ2ZTliZGE3M2ViYmZhZTUwNDY4ODQwMjMuLmM3YjNhYWFmNzQ3NDMyNzdmOWI1MGMw
MzUyZGI5YzQ3MGE3ZDg2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3LmgKQEAgLTU3Niw2ICs1NzYsMjAgQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVu
dGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0
ZWIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TQ29sb3IgKnRo
ZW1lQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAor
LyohIEBhYnN0cmFjdCBUaGUgY29sb3IgZHJhd24gYmVoaW5kIHRoZSBhY3RpdmUgcGFnZS4KKyBA
ZGlzY3Vzc2lvbiBBIGNvbG9yIGRlcml2ZWQgZnJvbSB0aGUgY29udGVudCBvZiB0aGUgYWN0aXZl
IHBhZ2UsIHN1Y2ggYXMgYnkgYmxlbmRpbmcgdGhlIGJhY2tncm91bmQgY29sb3Igb2YKKyB0aGUg
PGh0bWw+IGFuZCA8Ym9keT4gZWxlbWVudHMgd2l0aCB0aGUgQGxpbmsgYmFja2dyb3VuZENvbG9y
IEAvbGluayBvZiB0aGlzIEBsaW5rIFdLV2ViVmlldyBAL2xpbmsuIFVzZWQgYXMKKyB0aGUgYmFj
a2dyb3VuZCBjb2xvciB1bmRlciB0aGUgcGFnZSdzIGNvbnRlbnQsIHN1Y2ggYXMgZm9yIHNjcm9s
bCBib3VuY2luZyBhcmVhcy4gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlCisgb3duZXIgYXBwbGlj
YXRpb24gZm9yIGN1c3RvbSBzdHlsaW5nIHdpdGhvdXQgaGF2aW5nIHRvIG1vZGlmeSB0aGUgcGFn
ZSdzIHN0eWxlLgorIHRoZSBiYWNrZ3JvdW5kIG9mIHNjcm9sbCBib3VuY2luZyBhcmVhcy4KKyBA
bGluayBXS1dlYlZpZXcgQC9saW5rIGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxp
YW50IGZvciB0aGlzIHByb3BlcnR5LgorICovCisjaWYgVEFSR0VUX09TX0lQSE9ORQorQHByb3Bl
cnR5IChub25hdG9taWMsIG51bGxfcmVzZXR0YWJsZSwgY29weSkgVUlDb2xvciAqdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKyNlbHNl
CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbF9yZXNldHRhYmxlLCBjb3B5KSBOU0NvbG9yICp1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSk7CisjZW5kaWYKKwogQGVuZAogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGYyOTk5Y2QwYjUx
YjVhOTZlZjAwMWY1YTM0OTQwODBkMjg5ZTFmNzYuLjAxMmFjMWMwMjkzOGQxZTc3YmRiNjhiYWI4
MDdkZDk5NWRiOTg5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMTY3Nyw2ICsxNjc3LDIxIEBAIC0gKENvY29hQ29sb3IgKil0aGVt
ZUNvbG9yCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IodGhlbWVDb2xvcik7CiB9
CiAKKy0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1
cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcihfcGFnZS0+dW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
KCkpOworfQorCistICh2b2lkKXNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjooQ29jb2FDb2xv
ciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlCit7CisgICAgX3BhZ2UtPnNldFVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlLkNHQ29sb3IpOworfQorCisrIChCT09MKWF1dG9tYXRpY2FsbHlOb3RpZmllc09ic2Vy
dmVyc09mVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yCit7CisgICAgcmV0dXJuIE5POworfQorCiBA
ZW5kCiAKICNwcmFnbWEgbWFyayAtCkBAIC0zMDI2LDExICszMDQxLDEzIEBAIC0gKHZvaWQpX3Nl
dENhblVzZUNyZWRlbnRpYWxTdG9yYWdlOihCT09MKWNhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiAg
ICAgX3BhZ2UtPnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGNhblVzZUNyZWRlbnRpYWxTdG9y
YWdlKTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9y
XWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAtIChDb2NvYUNvbG9yICopX3RoZW1lQ29sb3IKIHsK
ICAgICByZXR1cm4gW3NlbGYgdGhlbWVDb2xvcl07CiB9CiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xk
IGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8v
Nzc3ODk3MzI+CiAtIChDb2NvYUNvbG9yICopX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcgog
ewogICAgIGF1dG8gcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID0gX3BhZ2UtPnBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTlkNTkyNWFhNzc4ODYyNWVkYTE2
OWQ4NGIzNWQwOTEyNDk2OTczYS4uNGE0OGM0M2VhZmExYWQ0ZmI1Mjk3NjY5MGI3ZDljNjE4YmVk
N2IxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC0zODAsMTAgKzM4MCwxMSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4K
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNDb2xvciAqX3RoZW1lQ29sb3IgV0tf
QVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgidGhlbWVDb2xvciIsIG1hY29zKFdLX01B
Q19UQkEsIFdLX01BQ19UQkEpKTsKICNlbmRpZgogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtX
S1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5
NzMyPgogI2lmIFRBUkdFVF9PU19JUEhPTkUKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgVUlDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxF
KGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJQ29s
b3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9S
RVBMQUNFTUVOVCgidW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIiwgaW9zKFdLX0lPU19UQkEsIFdL
X0lPU19UQkEpKTsKICNlbHNlCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQ29s
b3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TQ29sb3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgV0tfQVBJX0RF
UFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgidW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIiwgbWFj
b3MoMTAuMTAsIFdLX01BQ19UQkEpKTsKICNlbmRpZgogCiAvLyBPbmx5IHNldCBpZiBgLVtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF9zYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZV1gIGlz
IGEgcG9zaXRpdmUgbnVtYmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQppbmRleCBlMGFjOWU5ZjIzNzQwOWRhYWU5ODU2ZWJmMmZlY2VhMjVl
ZjYxN2FiLi44MzRiMmNmZmUwODRhZDhjZjgyYzMzZjQ0MDczMmQ4NDFmNmM4MGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtNDkw
LDEwICs0OTAsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Q29sb3IgYmFzZVNjcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJuIGNvbG9yOwog
ICAgIH0KIAotICAgIGlmICghd2ViVmlldy0+X3BhZ2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0K
LSAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2UtPnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKTsK
KyAgICByZXR1cm4gd2ViVmlldy51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcjsKIH0K
IAogc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJW
aWV3ICp3ZWJWaWV3KQpAQCAtNTA3LDE3ICs1MDQsNiBAQCBzdGF0aWMgV2ViQ29yZTo6Q29sb3Ig
c2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcgKndlYlZpZXcpCiAKICAgICBXZWJD
b3JlOjpDb2xvciBjb2xvciA9IGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKHdlYlZpZXcp
OwogCi0gICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkgJiYgd2ViVmlldy0+X2NvbnRlbnRWaWV3KQot
ICAgICAgICBjb2xvciA9IFt3ZWJWaWV3LT5fY29udGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yOwotCi0gICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpIHsKLSNpZiBIQVZFKE9TX0RBUktf
TU9ERV9TVVBQT1JUKQotICAgICAgICBjb2xvciA9IFVJQ29sb3Iuc3lzdGVtQmFja2dyb3VuZENv
bG9yLkNHQ29sb3I7Ci0jZWxzZQotICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yOjp3aGl0
ZTsKLSNlbmRpZgotICAgIH0KLQogICAgIENHRmxvYXQgem9vbVNjYWxlID0gY29udGVudFpvb21T
Y2FsZSh3ZWJWaWV3KTsKICAgICBDR0Zsb2F0IG1pbmltdW1ab29tU2NhbGUgPSBbd2ViVmlldy0+
X3Njcm9sbFZpZXcgbWluaW11bVpvb21TY2FsZV07CiAgICAgaWYgKHpvb21TY2FsZSA8IG1pbmlt
dW1ab29tU2NhbGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBjODhhM2Q0MjMzOTMyZmQzNTQwM2E3MDE3MzJhYmE1
MmZmZGVhOWI0Li4yYTk4ZWRlMzIyMzQxZGFiYmJhMmZmNGI3MGYwMGY0OGI5ZGI2MTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKK2NsYXNzIENvbG9yOwog
CiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0OwogfQpAQCAtNTMsNiArNTQsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHRoZW1lQ29sb3JXaWxsQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCB0aGVtZUNvbG9y
RGlkQ2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JXaWxs
Q2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UoKSBmaW5hbDsKICAgICB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFu
Z2UoKSBmaW5hbDsKICAgICB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5n
ZSgpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvcldpbGxDaGFuZ2UoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCmluZGV4IGRkYjQxZWI0YjU2N2UyNzUyN2U4N2I1ZDliNmE0MTBhMTY0Njk3NzQu
LmQ4NWE2ZTg5OGU2NDViNzI2MTIzYTZlYzNmNzUyNmNkYmFkYTA5NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAt
NDcsMjIgKzQ3LDM4IEBAIFBhZ2VDbGllbnRJbXBsQ29jb2E6On5QYWdlQ2xpZW50SW1wbENvY29h
KCkgPSBkZWZhdWx0Owogdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp0aGVtZUNvbG9yV2lsbENo
YW5nZSgpCiB7CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ0aGVtZUNv
bG9yIl07CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29s
b3JdYCBTUEkgPHJkYXI6Ly83NjY2MjY0ND4KICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1
ZUZvcktleTpAIl90aGVtZUNvbG9yIl07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6
dGhlbWVDb2xvckRpZENoYW5nZSgpCiB7CiAgICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZv
cktleTpAInRoZW1lQ29sb3IiXTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogICAgIFttX3dlYlZpZXcg
ZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJfdGhlbWVDb2xvciJdOwogfQogCit2b2lkIFBhZ2VDbGll
bnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKQoreworICAg
IFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAidW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yIl07Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKCkKK3sKKyAgICBbbV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5
OkAidW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIl07Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGxD
b2NvYTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSgpCiB7CisgICAgLy8g
RklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1
ZUZvcktleTpAIl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiXTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbENvY29hOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQog
eworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAgICAgW21fd2ViVmlldyBkaWRD
aGFuZ2VWYWx1ZUZvcktleTpAIl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDQxN2UxMWQ0OTY2MDdhMzAwY2Zi
NjVmZWQ2YzdmNGNhY2UwYzkyNmQuLmJhNjA5MzBjNTUwOTA5OGQ2N2RmYjA3ZTE2ZTVlOWViN2E2
NTRlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ5MCw2ICs0OTAs
OCBAQCBwdWJsaWM6CiAjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9F
VkVOVF9IQU5ETElORykKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzQ2FuY2Vs
YWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9sbEV2ZW50ICosIHZvaWQgKF5j
b21wbGV0aW9uKShCT09MIGhhbmRsZWQpKSA9IDA7CiAjZW5kaWYKKworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6Q29sb3IgY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IoKSA9IDA7CiAjZW5kaWYKIAog
ICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KQEAgLTUxNCw2ICs1MTYsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDb2xvcldpbGxDaGFuZ2UoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgdGhlbWVDb2xvckRpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzYW1wbGVkUGFnZVRvcENvbG9yV2lsbENoYW5nZSgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCmluZGV4IDQ4ZDk0NjMyNzU4
NDljMDJjMjYzMGM0OWI0OTFkNTBmNjcxMzYzMGYuLjIzMzE5MmE4ZjE0MTFlOTU2OWM5MGExODAw
ODRiODEzYTdiMGQxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdT
bmFwc2hvdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNo
b3RTdG9yZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cmVj
b3JkU25hcHNob3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkJhY2tGb3J3YXIKIAog
ICAgIHNuYXBzaG90LT5zZXRSZW5kZXJUcmVlU2l6ZSh3ZWJQYWdlUHJveHkucmVuZGVyVHJlZVNp
emUoKSk7CiAgICAgc25hcHNob3QtPnNldERldmljZVNjYWxlRmFjdG9yKHdlYlBhZ2VQcm94eS5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBzbmFwc2hvdC0+c2V0QmFja2dyb3VuZENvbG9yKHdl
YlBhZ2VQcm94eS5zY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkpOworICAgIHNuYXBzaG90LT5z
ZXRCYWNrZ3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
cigpKTsKICAgICBzbmFwc2hvdC0+c2V0Vmlld1Njcm9sbFBvc2l0aW9uKFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludCh3ZWJQYWdlUHJveHkudmlld1Njcm9sbFBvc2l0aW9uKCkpKTsKIAogICAgIGl0
ZW0uc2V0U25hcHNob3QoV1RGTW92ZShzbmFwc2hvdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmVkZGViNDU5N2YwYTk0ZTdlYzczNmU4ZjY1ZmY2MmYx
YThiOWEyOC4uN2FhNTk3Y2Y0N2MzNjhhY2I3YTljN2Q2NDQ1MWU0YzViOGU3MjZiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xOTEzLDE1ICsxOTEzLDUy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVbmRlcmxheUNvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xv
cikpOwogfQogCi1Db2xvciBXZWJQYWdlUHJveHk6OnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdAorQ29sb3IgV2ViUGFnZVByb3h5Ojp1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogewotICAgIGlmIChtX3ByZWZlcmVuY2VzLT51c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvcigpICYmIG1fdGhlbWVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiBtX3RoZW1lQ29sb3I7CisgICAgaWYgKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZTsKIAotICAgIGlmIChtX3ByZWZlcmVuY2VzLT51c2VTYW1wbGVkUGFnZVRvcENv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcigpICYmIG1fc2FtcGxlZFBhZ2VUb3BDb2xv
ci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29sb3I7CisgICAg
aWYgKG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCi0gICAgcmV0dXJuIG1fcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yOworICAgIHJldHVybiBwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUoQ29sb3ImJiBuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVy
cmlkZSkKK3sKKyAgICBpZiAobmV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0g
bV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IoKTsKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlID0g
c3RkOjpleGNoYW5nZShtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlLCBuZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7CisgICAgYm9vbCBjaGFuZ2VzVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yID0gIWVxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKG9sZFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciwgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpOworICAgIG1fdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPSBXVEZNb3ZlKG9sZFVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKTsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2ls
bENoYW5nZSgpOworCisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdU
Rk1vdmUobmV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgaWYgKGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKTsKKworICAgIGlmIChtX3BlbmRpbmdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZVRvRGlzcGF0Y2gpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRj
aCA9IHRydWU7CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX3BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZVRvRGlzcGF0Y2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bV9wZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rpc3BhdGNoID0gZmFs
c2U7CisKKyAgICAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSht
X3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCkBAIC04NTUxLDEzICs4NTg4
LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0aGVtZUNvbG9yQ2hhbmdlZChjb25zdCBDb2xvciYg
dGhlbWVDb2xvcikKICAgICBwYWdlQ2xpZW50KCkudGhlbWVDb2xvckRpZENoYW5nZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KGNvbnN0IENvbG9yJiBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKGNvbnN0IENvbG9yJiBu
ZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCiB7Ci0gICAgaWYgKG1fcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yID09IHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKKyAgICBpZiAo
bV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPT0gbmV3UGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvciA9IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpOworICAgIGF1dG8gb2xkUGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yID0gc3RkOjpleGNoYW5nZShtX3BhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvciwgbmV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKyAgICBib29sIGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSAhZXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3Iob2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBXVEZNb3ZlKG9sZFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvcik7CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcikKKyAgICAgICAgcGFnZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cldpbGxDaGFuZ2UoKTsKICAgICBwYWdlQ2xpZW50KCkucGFnZUV4dGVuZGVkQmFja2dyb3VuZENv
bG9yV2lsbENoYW5nZSgpOwotICAgIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID0gcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOworCisgICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3IgPSBuZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBpZiAoY2hhbmdl
c1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFnZUNsaWVudCgpLnVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOwogICAgIHBhZ2VDbGllbnQoKS5wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKTsKIH0KIApAQCAtODU3MSw2ICs4NjE5LDE1IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzYW1wbGVkUGFnZVRvcENvbG9yQ2hhbmdlZChjb25zdCBDb2xv
ciYgc2FtcGxlZFBhZ2VUb3BDb2xvcikKICAgICBwYWdlQ2xpZW50KCkuc2FtcGxlZFBhZ2VUb3BD
b2xvckRpZENoYW5nZSgpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisKK0NvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsK
K30KKworI2VuZGlmIC8vICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQor
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDViNDU3ZGZiNjAzMWVmNjM5YWQz
YWUzZmNiZmZmYWU2YTZkODU3MDIuLmU1N2E2MTExMGM4ZmUwZWQ1NjZjNmRmYTgzNThlZGU0OGZm
YzZlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02NjksNyAr
NjY5LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6Q29sb3Igc2FtcGxlZFBhZ2VUb3BDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlZFBhZ2VUb3BDb2xvcjsgfQogCi0gICAgV2ViQ29y
ZTo6Q29sb3Igc2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdlYkNvcmU6
OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkNv
bG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV91
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsgfQorICAgIHZvaWQgc2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3ImJik7CiAKICAgICB2b2lkIHZp
ZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUo
KTsKQEAgLTIxMDUsNiArMjEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aGVtZUNvbG9yQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAgICAgdm9pZCBzYW1w
bGVkUGFnZVRvcENvbG9yQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIFdlYkNv
cmU6OkNvbG9yIHBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXpl
UGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAgICAgdm9pZCBkaWRCbG9ja0luc2Vj
dXJlUGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBs
dWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBwYWdlVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpOwpAQCAtMjY1MCwxMCAr
MjY1MywxMyBAQCBwcml2YXRlOgogICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdN
b2RlIHsgTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzIH07CiAKICAgICBXZWJDb3JlOjpDb2xv
ciBtX3RoZW1lQ29sb3I7CisgICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5Q29sb3I7CiAgICAg
V2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAgICAgV2ViQ29y
ZTo6Q29sb3IgbV9zYW1wbGVkUGFnZVRvcENvbG9yOwogCisgICAgYm9vbCBtX3BlbmRpbmdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZVRvRGlzcGF0Y2ggeyBmYWxzZSB9OworCiAgICAg
Ym9vbCBtX3VzZUZpeGVkTGF5b3V0IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
Zml4ZWRMYXlvdXRTaXplOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3
RXhwb3NlZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCmluZGV4IDNmYmUxYjE3ZmY2NjA0NDllOTkzZWY3ZThhZmMwYmEwMDI0ZmQ4N2Eu
LjM5ZDM3MTdhNjNkMmFkNjY0NmJkMDMyYWI0NjE2ZDYwZWNlYmE1ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yOTMsNiArMjkz
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3Jv
bGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkgZmluYWw7CiAjZW5kaWYKIAorICAgIFdlYkNvcmU6OkNvbG9yIGNv
bnRlbnRWaWV3QmFja2dyb3VuZENvbG9yKCkgZmluYWw7CisKICAgICBXZWFrT2JqQ1B0cjxXS0Nv
bnRlbnRWaWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJn
ZXQ+IG1fdW5kb1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNDBiNzYyMzYzOWZmYWQ0MWI0NDI0NjhlYjJlMTgx
YWEzNGYwMTY1My4uN2I4Yjc3Y2U4NGYxNDVlMTlkNjFlMTg1OGJmYmQ1ZWRkOWJmYTY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtMTAwNSw2ICsxMDA1LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhCiAgICAgW21fY29u
dGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOldURk1vdmUoY2FsbGJhY2spXTsKIH0K
IAorV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVudEltcGw6OmNvbnRlbnRWaWV3QmFja2dyb3VuZENv
bG9yKCkKK3sKKyAgICByZXR1cm4gW21fY29udGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA3N2M4MDZkNDJhMWMxNGJmYzIwMDU4MmZjOGVjZjczNjZjM2I4MDVkLi4zMmIw
ZjI4YTU2ZjZlNzVlZWJmNThlNzU1OTU2MzZjZGM2MTgxOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE1NjQsNiArMTU2NCwxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbgogICAgIHBhZ2VDbGllbnQoKS5zaG93RGF0YURldGVj
dG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihwb3NpdGlvbkluZm8pOwogfQogCitDb2xvciBX
ZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sK
KyAgICBpZiAoYXV0byBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvciA9IHBhZ2VDbGllbnQoKS5j
b250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpOyBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcjsKKwor
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgcmV0dXJuIFVJQ29sb3Iuc3lzdGVt
QmFja2dyb3VuZENvbG9yLkNHQ29sb3I7CisjZWxzZQorICAgIHJldHVybiBVSUNvbG9yLndoaXRl
Q29sb3IuQ0dDb2xvcjsKKyNlbmRpZgorfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNjhi
MDU4OGQ3YTQ2ZGE2YzA3MjViZDJkYzlmNzFhMDhhYmZiZThkZi4uN2MwMmFlOGEwZDRlZDM4OTNi
YTNiMjA3NWQwMmZhZGNhZjk4ZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03MTAsNiArNzEwLDE1IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgdmlld1JlCiB9CiAjZW5kaWYKIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1Mp
CisgICAgcmV0dXJuIE5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xvci5DR0NvbG9yOworI2Vs
c2UKKyAgICByZXR1cm4gTlNDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDkwYWU4YTk3YjZj
ZTQ5MzI1OTNiNDkyZGNiMzAxNjhjNjliMWVlZmEuLjdmNjU2YzY3MmY0M2Q3M2RlOTUyOTQ2NTVm
YjZmOTcxZTI0NTM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0yNDQ3LDYgKzI0NDcsMTEgQEAgdm9pZCBXZWJQYWdlOjpwb3N0SW5qZWN0
ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXQK
ICAgICBpbmplY3RlZEJ1bmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UodGhpcywgbWVzc2Fn
ZU5hbWUsIHdlYlByb2Nlc3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yJiYgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpCit7CisgICAgbV9wYWdlLT5zZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlk
ZShXVEZNb3ZlKHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKSk7Cit9CisKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlOjpzZXRIZWFkZXJQYWdlQmFubmVy
KFBhZ2VCYW5uZXIqIHBhZ2VCYW5uZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggZWU0NDczYWRjNGI5ODBlMGRiOGQ3YTNlMDM0ODdiYjJmZTg5OGZi
Yy4uMTRmMWY5ZTAyODhiMzM4YjFkM2NiNWRlOWVmY2EzNzNiMzgwMGY2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjA3LDYgKzYwNyw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAorICAgIHZvaWQgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3ImJik7CisKICAgICB2b2lk
IHNldFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdW5kZXJs
YXlDb2xvciA9IGNvbG9yOyB9CiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMzdhNjU5Yzkx
YjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4zYjdmNzA0MTAwNTlkMGFiOGUyMDVkMmI0
YmFlMGRhZGYwMDNhNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM5LDYgKzM5LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNv
bnRlbnRJbnNldCkKIAogICAgIFNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3Ip
CisgICAgU2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3Ig
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCiAKICAgICBWaWV3V2lsbFN0YXJ0TGl2
ZVJlc2l6ZSgpCiAgICAgVmlld1dpbGxFbmRMaXZlUmVzaXplKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOTY1ZjY5ZWU3MTRkZWNiY2E4OWMz
ZGIyN2NmNjY4ZTcxYTE1ODQzLi5mYWFiYjBkMzk4OTMwZjEwMWE5MDc0YzZmM2FjYmY0NzBlOWUy
ODYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgorCisgICAgICAgIFByb21vdGUgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JdYCBTUEkgdG8gYC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl1g
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1
NjE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU2ODA5ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tOiBSZW5hbWVkIGZy
b20gUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tLgorICAgICAgICAoZGVmYXVsdEJhY2tn
cm91bmRDb2xvcik6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IuT25Mb2FkKToKKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tX
ZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZUJsZW5kZWRDb2xvcik6IEFkZGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlw
bGVTb2xpZENvbG9ycyk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzKTogQWRkZWQuCisgICAgICAgICgt
W1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIGluaXRXaXRoV2ViVmll
dzpdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6
XSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IuS1ZPKToKKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
Lk1hdGNoZXNTY3JvbGxWaWV3KTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZVN0eWxlcyk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLV2ViVmlld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvck9ic2VydmVyIGluaXRXaXRoV2Vi
VmlldzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6
Y29udGV4dDpdKTogRGVsZXRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdX
aXRoU2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UpOgorICAgICAgICAoVEVTVC5TYW1w
bGVkUGFnZVRvcENvbG9yLkV4cGVyaW1lbnRhbFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW06CisgICAgICAgIChjcmVh
dGVXZWJWaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3LkV4cGVyaW1lbnRh
bFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBsZWRQYWdlVG9w
Q29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAgYFVzZVRoZW1l
Q29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGllbnRzIGNhbiBv
dmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBj
b2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjEtMDUtMDcgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVzZSB0ZXN0LXR1YmUgZW1vamkgZm9yIEVXUyBzdGF0dXMgYnViYmxl
cyBmb3IgdGVzdGVyIHF1ZXVlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYTQ5NTEyZmZk
M2VhYTk3OGU1ZjZjYjA4ZDYzZTBhNTM4MmQxZjUyLi5iZGY1NDRmMDg4MDgyYWY5NzIzOTYyZWE3
ZTI3MTgyZjRjMDFlOTYzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODcxLDcgKzg3MSw3
IEBACiAJCTk1MDk1RjIwMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwOTVGMUYy
NjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gKi87IH07CiAJCTkzRkNE
QjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDREIzMzI2MzYzMTU2MDA0NkREN0Qg
LyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9OwogCQk5NTBFNENDMTI1MkU3NTI0MDA3MTY1OUYg
LyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0
Lm1tICovOyB9OwotCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvci5tbSAqLzsgfTsKKwkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFdLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gKi87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2MUZF
OSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1Ro
ZW1lQ29sb3IubW0gKi87IH07CiAJCTk1QjZCM0I3MjUxRUJGMkYwMEZDNDM4MiAvKiBNZWRpYURv
Y3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTVCNkIzQjYyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gKi87IH07CiAJCTk5
ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDQTFDRkZBRUVFMDA4
RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICovOyB9OwpAQCAtMjU2Nyw3ICsyNTY3LDcg
QEAKIAkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYW1wbGVkUGFnZVRvcENv
bG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZDREIzMzI2MzYzMTU2MDA0
NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU29ydGVkQXJyYXlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQ
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZp
ZXdUaGVtZUNvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tXZWJWaWV3VGhlbWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVC
NkIzQjYyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYURvY3VtZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4
dElucHV0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3VGV4dElucHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ3OSw3ICsz
NDc5LDYgQEAKIAkJCQkzN0EyMkFBNTFEQ0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJp
bmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gKi8sCiAJCQkJQ0VBNkNGMjIxOUNDRjVCRDAw
NjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLywKIAkJCQkyREEyNTg2RTIyNUM2N0RD
MDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSAqLywKLQkJCQk5NTNBQkIz
NDI1QzBENjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovLAog
CQkJCTJEM0NBM0E0MjIxREYyMzkwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSAqLywK
IAkJCQk1MTI0MkNEQTIzN0I3OTFFMDBFRUQ5QzEgLyogUGFnZVpvb20ubW0gKi8sCiAJCQkJRjQ0
Qzc5RkIyMEY5RTUwQzAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi8sCkBA
IC0zNjIxLDYgKzM2MjAsNyBAQAogCQkJCUNEN0Y4OURCMjJBODZDREEwMEQ2ODNBRSAvKiBXS1dl
YlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5YmFjay5tbSAqLywKIAkJCQk5OTg0RkFDQTFDRkZBRUVF
MDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICovLAogCQkJCTk1QTUyNDk0MjU4MUEx
MEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tICovLAorCQkJCTk1M0FCQjM0MjVD
MEQ2ODEwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gKi8s
CiAJCQkpOwogCQkJbmFtZSA9ICJXZWJLaXQgQ29jb2EiOwogCQkJcGF0aCA9IFdlYktpdENvY29h
OwpAQCAtNTU3Myw3ICs1NTczLDYgQEAKIAkJCQkwRjM0MDc3NjIzMDM3RkRDMDA2MEExQTAgLyog
T3ZlcmZsb3dTY3JvbGxWaWV3VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTA0QkMxRjI1
NDcyMzcxMDBDMDc4QzkgLyogT3ZlcnJpZGVBcHBsZUxhbmd1YWdlc1ByZWZlcmVuY2UubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyREEyNTg2RjIyNUM2N0RDMDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3
cG9ydEFyZ3VtZW50cy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRD
OEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NCNERBOTFDODNBRTczMDBDQzY5MTggLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjA3MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9hZEJhc2ljLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjA4MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9hZERpZENo
YW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1
NSw2ICs1ODU0LDcgQEAKIAkJCQlDRDdGODlEQzIyQTg2Q0RBMDBENjgzQUUgLyogV0tXZWJWaWV3
U3VzcGVuZEFsbE1lZGlhUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTg0RkFDQzFD
RkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTVBNTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4g
U291cmNlcyAqLywKKwkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3NEM4RkEyMkRG
QkE5NjAwREEyREFCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMTREMzA0NjI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzMmY0NWFjMDhhNGUxMThkOWM0
MWFhY2VkNzVjYTExMDc4MjAwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpbXBvcnQgIkNvY29hQ29sb3IuaCIK
LSNpbXBvcnQgIlRlc3RDb2NvYS5oIgotI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICAgIEVY
UEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7IFwKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmluZyAqKWFjdHVhbCk7Ci0KLWNvbnN0
ZXhwciBDR0Zsb2F0IHdoaXRlQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAxLCAxLCAxIH07Ci1j
b25zdGV4cHIgQ0dGbG9hdCByZWRDb2xvckNvbXBvbmVudHNbNF0gPSB7IDEsIDAsIDAsIDEgfTsK
LWNvbnN0ZXhwciBDR0Zsb2F0IGJsdWVDb2xvckNvbXBvbmVudHNbNF0gPSB7IDAsIDAsIDEsIDEg
fTsKLQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIE9uTG9hZCkKLXsKLSAgICBh
dXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBvbmVudHMpKTsKLSAg
ICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdl
dCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0Fu
ZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkgeyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8
c3R5bGU+IGJvZHkgeyBub3QtYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5bGU+Il07Ci0K
LSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHdoaXRlQ29sb3IuZ2V0KCkpKTsKLX0KLQotVEVT
VChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIE11bHRpcGxlU3R5bGVzKQotewotICAgIGF1
dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JD
cmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIGJsdWVDb2xvckNvbXBvbmVudHMpKTsKLQotICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJW
aWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVz
UGFpbnQ6QCI8c3R5bGU+IGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gYm9keSB7IGJh
Y2tncm91bmQtY29sb3I6IGJsdWU7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Ci19Ci0KLUBpbnRlcmZhY2UgV0tXZWJWaWV3UGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgOiBOU09iamVjdAotCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwotCi1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2ViVmlldzsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBOU1N0cmluZyAqc3RhdGU7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdLV2ViVmlld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvck9ic2VydmVyCi0KLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKLXsKLSAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9zdGF0
ZSA9IEAiYmVmb3JlLWluaXQiOwotCi0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIFtfd2Vi
VmlldyBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJfcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsIGNvbnRleHQ6
bmlsXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Ci17Ci0gICAgaWYgKFtf
c3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWluaXQiXSkgewotICAgICAgICBfc3RhdGUg
PSBAImFmdGVyLWluaXQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3Rh
dGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWxvYWQiXSkgewotICAgICAgICBfc3RhdGUgPSBA
ImFmdGVyLWxvYWQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUg
aXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNzcy1jbGFzcy1hZGRlZCJdKSB7Ci0gICAgICAgIF9z
dGF0ZSA9IEAiYWZ0ZXItY3NzLWNsYXNzLWFkZGVkIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtY2hh
bmdlZCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY3NzLWNsYXNzLWNoYW5nZWQiOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5n
OkAiYmVmb3JlLWNzcy1jbGFzcy1yZW1vdmVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRl
ci1jc3MtY2xhc3MtcmVtb3ZlZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1AZW5kCi0KLVRFU1QoUGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yLCBLVk8pCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBh
dXRvIHdoaXRlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0
KCksIHdoaXRlQ29sb3JDb21wb25lbnRzKSk7Ci0gICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0Yo
Q0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7
Ci0gICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3Bh
Y2UuZ2V0KCksIGJsdWVDb2xvckNvbXBvbmVudHMpKTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7Ci0gICAgYXV0byB0aGVtZUNvbG9yT2JzZXJ2ZXIgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgYWxsb2NdIGluaXRX
aXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRl
ci1pbml0IiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAgIEVYUEVDVF9UUlVFKCFb
d2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXSk7Ci0KLSAgICBbdGhlbWVDb2xv
ck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWxvYWQiXTsKLSAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1Bh
aW50OkAiPHN0eWxlPiBib2R5LnJlZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSBib2R5LmJs
dWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IDwvc3R5bGU+Il07Ci0gICAgRVhQRUNUX05T
U1RSSU5HX0VRKCJhZnRlci1sb2FkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgd2hpdGVDb2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1l
Q29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXTsKLSAgICBb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFz
c05hbWUgPSAncmVkJyJdOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1hZGRlZCIsIFt0
aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVm
b3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl07Ci0gICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ2JsdWUnIl07Ci0gICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklO
R19FUSgiYWZ0ZXItY3NzLWNsYXNzLWNoYW5nZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRl
XSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKLQotICAg
IFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQi
XTsKLSAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5jbGFzc05hbWUgPSAnJyJdOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1yZW1v
dmVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dD
b2xvciwgd2hpdGVDb2xvci5nZXQoKSkpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCmluZGV4
IDdmMjcyMWI2NWMwNzAyMjEzOTQyNTlkNmIwN2FhNjJiZTkzYzcyMjEuLjhiM2YxMThjZGMzODM5
OWI3NmM5YmQyMjJiZjQyOGY1ODU4ODE0NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KQEAg
LTgxLDIwICs4MSwxMiBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogCiBAZW5kCiAKLWVudW0g
Y2xhc3MgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Ig
OiBib29sIHsgWWVzLCBObyB9Owotc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKGRvdWJsZSBzYW1w
bGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JN
aW5IZWlnaHQgPSAwLCBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91
bmRDb2xvciB1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
ciA9IFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpO
bykKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhTYW1w
bGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZShkb3VibGUgc2FtcGxlZFBhZ2VUb3BDb2xvck1h
eERpZmZlcmVuY2UsIGRvdWJsZSBzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0ID0gMCkKIHsK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIF9zZXRTYW1wbGVkUGFnZVRvcENv
bG9yTWF4RGlmZmVyZW5jZTpzYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZV07CiAgICAg
W2NvbmZpZ3VyYXRpb24gX3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNaW5IZWlnaHQ6c2FtcGxlZFBh
Z2VUb3BDb2xvck1pbkhlaWdodF07CiAKLSAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJl
ICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0g
ICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiVXNlU2FtcGxlZFBhZ2VU
b3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IiXSkgewotICAgICAgICAgICAgW1tj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDoodXNlU2FtcGxlZFBhZ2VUb3BD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPT0gVXNlU2FtcGxlZFBhZ2VUb3BDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1
cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIH0KIApAQCAtMzU4LDM0ICszNTAsMyBAQCBURVNUKFNhbXBsZWRQYWdlVG9wQ29sb3IsIERJ
U0FCTEVEX0Rpc3BsYXlQMykKICAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1syXSwgMS4w
MCwgMS4wMSk7CiAgICAgRVhQRUNUX0VRKGNvbXBvbmVudHNbM10sIDEpOwogfQotCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLQotLy8gVGhlcmUncyBubyBBUEkvU1BJIHRvIGdldCB0aGUgYmFj
a2dyb3VuZCBjb2xvciBvZiB0aGUgc2Nyb2xsIGFyZWEgb24gbWFjT1MuCi0KLVRFU1QoU2FtcGxl
ZFBhZ2VUb3BDb2xvciwgRXhwZXJpbWVudGFsVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAgYXV0byB3ZWJWaWV3V2l0aG91dFRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gY3JlYXRlV2ViVmlld1dpdGhTYW1wbGVk
UGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSg1LCAwLCBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9y
U2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6Tm8pOwotICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3
V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVkUGFn
ZVRvcENvbG9yXSk7Ci0KLSAgICBbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvciBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxB
bGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OmNyZWF0ZUhUTUxHcmFkaWVudFdpdGhDb2xvclN0
b3BzKCJyaWdodCJfcywgeyAicmVkIl9zLCAiYmx1ZSJfcyB9KV07Ci0gICAgRVhQRUNUX05VTEwo
W3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3Nh
bXBsZWRQYWdlVG9wQ29sb3JdKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZp
ZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmll
d10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwotCi0g
ICAgd2FpdEZvclNhbXBsZWRQYWdlVG9wQ29sb3JUb0NoYW5nZUZvckhUTUwod2ViVmlld1dpdGhv
dXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvci5nZXQoKSwgY3JlYXRlSFRN
TEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJyZWQiX3MgfSkp
OwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0uQ0dDb2xv
ciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihb
d2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3Jv
bGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7
Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IgPSBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNl
KDUsIDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
OjpZZXMpOwotICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7Ci0KLSAgICBbd2ViVmll
d1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OmNy
ZWF0ZUhUTUxHcmFkaWVudFdpdGhDb2xvclN0b3BzKCJyaWdodCJfcywgeyAicmVkIl9zLCAiYmx1
ZSJfcyB9KV07Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLSAgICBFWFBFQ1Rf
RVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNr
Z3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IpLCBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwotCi0gICAgd2FpdEZvclNhbXBsZWRQYWdlVG9wQ29sb3JUb0NoYW5n
ZUZvckhUTUwod2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
ci5nZXQoKSwgY3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJy
ZWQiX3MsICJyZWQiX3MgfSkpOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmll
d1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VU
b3BDb2xvcl0uQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjpyZWQpOwotICAgIEVYUEVDVF9FUShX
ZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91
bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6OkNv
bG9yOjpyZWQpOwotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVD
b2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3
VGhlbWVDb2xvci5tbQppbmRleCBiZjJhNmYwZTRkMTM1M2E4N2Q2ZjY1NzJkMjY1Njk2NGUzMjMy
ZDBjLi40MWZlZTZjYzg5OGRkOTRmYjY2NzU2ODA0NGU4OTZlM2RlYmJiZGNiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29s
b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdUaGVtZUNvbG9yLm1tCkBAIC0yMTAsNTIgKzIxMCwzIEBAIFRFU1QoV0tXZWJWaWV3VGhlbWVD
b2xvciwgTWV0YUVsZW1lbnRPdmVycmlkZXNBcHBsaWNhdGlvbk1hbmlmZXN0KQogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotLy8gVGhlcmUncyBubyBBUEkvU1BJIHRvIGdldCB0aGUgYmFja2dyb3VuZCBjb2xv
ciBvZiB0aGUgc2Nyb2xsIGFyZWEgb24gbWFjT1MuCi0KLWVudW0gY2xhc3MgVXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgOiBib29sIHsgWWVzLCBObyB9Owotc3RhdGlj
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3KFVzZVRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChfV0tJbnRlcm5hbERlYnVn
RmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
XSkgewotICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIlVzZVRoZW1l
Q29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIl0pIHsKLSAgICAgICAgICAgIFtbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6KHVzZVRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yID09IFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yOjpZZXMpIGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci19Ci0KLVRFU1QoV0tXZWJW
aWV3VGhlbWVDb2xvciwgRXhwZXJpbWVudGFsVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNr
Z3JvdW5kQ29sb3IpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIHJlZENv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xv
ckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0
byB3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0g
Y3JlYXRlV2ViVmlldyhVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6
Tm8pOwotICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXSk7Ci0KLSAgICBbd2ViVmlld1dpdGhvdXRU
aGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPGJvZHkg
c3R5bGU9J2JhY2tncm91bmQtY29sb3I6IGJsdWUnPiJdOwotICAgIEVYUEVDVF9UUlVFKCFbd2Vi
Vmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNv
bG9yXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhv
dXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNr
Z3JvdW5kQ29sb3IuQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Ci0KLSAgICBbd2ViVmlld1dp
dGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAi
PG1ldGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+PGJvZHkgc3R5bGU9J2JhY2tn
cm91bmQtY29sb3I6IGJsdWUnPiJdOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Ig
dGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVl
Q29sb3IuZ2V0KCkpKTsKLQotICAgIGF1dG8gd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZpZXcoVXNlVGhlbWVDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0
aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLQot
ICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJh
bWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0gICAg
RVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9y
KFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9s
bFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKLQotICAg
IFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVz
UGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVkJz48Ym9keSBzdHls
ZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRD
b2xvciB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwotICAgIEVYUEVDVF9U
UlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKSk7Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNGJmYzgyNzY3ZGYwYjhjYWUwNjA5MDM4NzFkYjkyOTA0OTYyMzcyCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0KQEAgLTAsMCArMSwyNzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiQ29jb2FDb2xvci5oIgorI2ltcG9ydCAiVGVz
dENvY29hLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjZGVmaW5lIEVY
UEVDVF9JTl9SQU5HRShhY3R1YWwsIG1pbiwgbWF4KSBcCisgICAgRVhQRUNUX0dFKGFjdHVhbCwg
bWluKTsgXAorICAgIEVYUEVDVF9MRShhY3R1YWwsIG1heCk7CisKKyNkZWZpbmUgRVhQRUNUX05T
U1RSSU5HX0VRKGV4cGVjdGVkLCBhY3R1YWwpIFwKKyAgICBFWFBFQ1RfVFJVRShbYWN0dWFsIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOyBcCisgICAgRVhQRUNUX1dLX1NUUkVRKGV4
cGVjdGVkLCAoTlNTdHJpbmcgKilhY3R1YWwpOworCitzdGF0aWMgUmV0YWluUHRyPENvY29hQ29s
b3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKQoreworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NV
UFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gTlNDb2xvci5jb250cm9sQmFja2dy
b3VuZENvbG9yOworI2VsaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkgJiYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5kQ29sb3I7Cisj
ZWxzZQorICAgIHJldHVybiBbQ29jb2FDb2xvciB3aGl0ZUNvbG9yXTsKKyNlbmRpZgorfQorCitU
RVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgT25Mb2FkKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtk
ZWZhdWx0QmFja2dyb3VuZENvbG9yKCkgQ0dDb2xvcl0pKTsKK30KKworVEVTVChXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIFNpbmdsZVNvbGlkQ29sb3IpCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1
bHRCYWNrZ3JvdW5kQ29sb3IoKSBDR0NvbG9yXSkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWlu
dDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOwor
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOwor
fQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgU2luZ2xlQmxlbmRl
ZENvbG9yKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkgQ0dDb2xvcl0pKTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbElt
bWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2JhKDI1NSwgMCwgMCwgMC41KTsgfSA8L3N0eWxlPiJdOworICAgIGF1dG8gY29tcG9uZW50
cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0uQ0dDb2xvcik7CisgICAgRVhQRUNUX0VRKGNvbXBvbmVudHNbMF0sIDEpOworICAgIEVYUEVD
VF9JTl9SQU5HRShjb21wb25lbnRzWzFdLCAwLjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfSU5fUkFO
R0UoY29tcG9uZW50c1syXSwgMC40NSwgMC41NSk7CisgICAgRVhQRUNUX0VRKGNvbXBvbmVudHNb
M10sIDEpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgTXVs
dGlwbGVTb2xpZENvbG9ycykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcigpIENHQ29s
b3JdKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0
VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBodG1sIHsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5
bGU+Il07CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0Nv
bG9yKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBNdWx0
aXBsZUJsZW5kZWRDb2xvcnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCld
KTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKSBDR0Nv
bG9yXSkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gaHRtbCB7IGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOyB9IGJvZHkgeyBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2JhKDAsIDAsIDI1NSwgMC41KTsgfSA8L3N0eWxlPiJdOworICAgIGF1dG8gY29tcG9u
ZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvcik7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMF0sIDAuNDUs
IDAuNTUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzFdLCAwLjIsIDAuMjUpOwor
ICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAwLjcsIDAuNzUpOworICAgIEVYUEVD
VF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworQGludGVyZmFjZSBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3N0YXRlID0gQCJiZWZv
cmUtaW5pdCI7CisKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgW193ZWJWaWV3IGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInVuZGVyUGFnZUJhY2tncm91bmRDb2xvciIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmlu
ZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNo
YW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxU
b1N0cmluZzpAImJlZm9yZS1pbml0Il0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1pbml0
IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0
cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFm
dGVyLWNzcy1jbGFzcy1hZGRlZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
W19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXSkgewor
ICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1jaGFuZ2VkIjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1j
c3MtY2xhc3MtcmVtb3ZlZCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY3NzLWNsYXNz
LXJlbW92ZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNF
cXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vbm51bGwtb3ZlcnJpZGUiXSkgeworICAgICAgICBfc3Rh
dGUgPSBAImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW51bGwtb3ZlcnJpZGUi
XSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW51bGwtb3ZlcnJpZGUiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJub3QtcmVhY2hlZCIsIF9z
dGF0ZSk7Cit9CisKK0BlbmQKKworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IsIEtWTykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1
dG8gdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1pbml0IiwgW3Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkgQ0dDb2xvcl0pKTsKKworICAgIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdl
Il07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGls
QWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keS5yZWQgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IH0gYm9keS5ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSA8
L3N0eWxlPiJdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKSBDR0NvbG9yXSkpOworCisgICAgW3Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFz
cy1hZGRlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5l
eHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3Nz
LWNsYXNzLWFkZGVkIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7
CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91
bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cjpbQ29jb2FDb2xvciByZWRDb2xvcl1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxk
LW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsK
KyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsK
KworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3Vs
ZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
Om5pbF07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2Vk
Il07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmJvZHkuY2xhc3NOYW1lID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNz
LWNoYW5nZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgYmx1ZUNvbG9yXS5DR0NvbG9yKSk7CisK
KyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQt
bm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpb
Q29jb2FDb2xvciBibHVlQ29sb3JdXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1u
b3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7Cisg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOwor
CisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxk
LW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6
bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1yZW1vdmVk
Il07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmJvZHkuY2xhc3NOYW1lID0gJyciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRh
dGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtcmVt
b3ZlZCIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcigpIENHQ29sb3JdKSk7CisK
KyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQt
bm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpk
ZWZhdWx0QmFja2dyb3VuZENvbG9yKCkuZ2V0KCldOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
c2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3Rh
dGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKSBD
R0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0
YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hh
bmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkgQ0dDb2xvcl0pKTsKKwor
ICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1u
b25udWxsLW92ZXJyaWRlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOltDb2NvYUNvbG9yIHJlZENvbG9yXV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRl
ci1ub25udWxsLW92ZXJyaWRlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0
YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0Nv
bG9yKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6
QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpbQ29jb2FDb2xvciByZWRDb2xvcl1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
c2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3Rh
dGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29s
b3IpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpA
InNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ3JlZCciXTsKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VR
KCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
dGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dD
b2xvcikpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRl
OkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnYmx1ZSciXTsKKyAgICBbd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5H
X0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZl
ciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0u
Q0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0
YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJyJdOworICAgIFt3ZWJW
aWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdf
RVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVy
IHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5D
R0NvbG9yKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3Rh
dGU6QCJiZWZvcmUtbnVsbC1vdmVycmlkZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbnVsbC1v
dmVycmlkZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcigpIENHQ29sb3JdKSk7
Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisvLyBUaGVyZSdzIG5vIEFQSS9TUEkg
dG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4K
KworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE1hdGNoZXNTY3JvbGxW
aWV3KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNU
X1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkgQ0dDb2xvcl0pKTsKKyAgICBF
WFBFQ1RfTlVMTChbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IpOworCisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRp
YXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJl
ZDsgfSA8L3N0eWxlPiJdOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dl
YlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRD
b2xvcl0uQ0dDb2xvcikpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dl
YlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJl
ZENvbG9yXS5DR0NvbG9yKSk7CisKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3I6W0NvY29hQ29sb3IgYmx1ZUNvbG9yXV07CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtD
b2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3Is
IFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworfQorCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428234</attachid>
            <date>2021-05-10 18:40:08 -0700</date>
            <delta_ts>2021-05-12 11:32:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225615-20210510194007.patch</filename>
            <type>text/plain</type>
            <size>72707</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOWQ3OGI0NGY2MmZjZjMyNDUzNzZmMDI5ZTg2Y2Y0NjFlNjFjMjM0NC4uYTdiMDY2NjFi
NTcwOTkyYmNhMzEzYTdmZjc2Mzg0ZmIyYTM4YmI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIEltcGxlbWVudCA8Zm9ybT4ucmVxdWVzdFN1Ym1pdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTE1MmQ4MDdjMzczZmEzYzViN2I4YTgxYmVkYmIxNmNhMmQzYmUyZC4uZjVkM2E5ZTg4MWNmMDli
YWI4YTU4ZjA2MjE3YTA2YjJiMWY2MzhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisy
MDIxLTA1LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQ
cm9tb3RlIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRv
IGAtW1dLV2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzY1NjgwOTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVo
LgorCisgICAgICAgIGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0
YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxsIHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisg
ICAgICAgICAtIHRoZSBtb3N0IHJlY2VudCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAg
ICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5kLWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8
aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yYCkKKyAgICAgICAgIC0gdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJh
Y2tncm91bmQgY29sb3IKKyAgICAgICAgTW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdp
bGwgbm90IGhhdmUgYW55IGVmZmVjdCB1bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBy
dW5sb29wLgorCisgICAgICAgIFRlc3RzOiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IuT25Mb2FkCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IuU2luZ2xlU29saWRDb2xvcgorICAgICAgICAgICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yLlNpbmdsZUJsZW5kZWRDb2xvcgorICAgICAgICAgICAgICAgV0tXZWJWaWV3
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxlU29saWRDb2xvcnMKKyAgICAgICAgICAg
ICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZUJsZW5kZWRDb2xv
cnMKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5LVk8K
KyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NYXRjaGVz
U2Nyb2xsVmlldworCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjp1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk6IEFkZGVkLgorICAgICAgICBIb2xkIHRoZSBjbGll
bnQtb3ZlcnJpZGVuIHZhbHVlIGZvciBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBzbyB0aGF0
IGl0IGNhbiBiZSB1c2VkIHdoZW4KKyAgICAgICAgZHJhd2luZyB0aGUgb3ZlcnNjcm9sbCBsYXll
ci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvck92ZXJo
YW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRh
bCBzZXR0aW5ncyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3JgIGFuZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3JgIG5vdyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAg
IG92ZXJzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKToKKyAgICAg
ICAgSXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGZvcmNlIHRoZSBvdmVyc2Nyb2xsIGFyZWEg
dG8gcmVkcmF3IHNpbmNlIHRoYXQnbGwgYmUgaGFuZGxlZCBieQorICAgICAgICBhIGNsaWVudCBj
YWxsaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6XWAgKHBvc3Np
Ymx5IGluIHJlc3BvbnNlIHRvIGEKKyAgICAgICAgYC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdYCBL
Vk8gbm90aWZpY2F0aW9uKS4KKwogMjAyMS0wNS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzcyMjIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGY3Yzk1NGFiMTcwNjYyNjQ1NDBmNGM0ZWYxOGY0NDcyZWY0NDE3MDAuLjlj
NzBlM2QwZTdhNjAzMDVkMDZlY2JjZTM0NzEzMThlNGE5YzMzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzEgQEAKKzIwMjEtMDUtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgor
CisgICAgICAgIFByb21vdGUgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JdYCBTUEkgdG8gYC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl1gIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NjE1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU2ODA5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBX
ZW5zb24gSHNpZWguCisKKyAgICAgICAgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgaXMgYSBg
bnVsbF9yZXNldHRhYmxlYCBwcm9wZXJ0eSB0aGF0IHdpbGwgcmV0dXJuIChpbiBvcmRlciBvZiB2
YWxpZGl0eSkKKyAgICAgICAgIC0gdGhlIG1vc3QgcmVjZW50IG5vbi1udWxsIHZhbHVlIHByb3Zp
ZGVkCisgICAgICAgICAtIHRoZSBDU1MgYGJhY2tncm91bmQtY29sb3JgIG9mIHRoZSBgPGJvZHk+
YCBhbmQvb3IgYDxodG1sPmAgKHRoaXMgaXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYF9wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3JgKQorICAgICAgICAgLSB0aGUgdW5kZXJseWluZyBwbGF0Zm9y
bSB2aWV3J3MgYmFja2dyb3VuZCBjb2xvcgorICAgICAgICBNb2RpZmljYXRpb25zIHRvIHRoaXMg
cHJvcGVydHkgd2lsbCBub3QgaGF2ZSBhbnkgZWZmZWN0IHVudGlsIGNvbnRyb2wgaXMgcmV0dXJu
ZWQgdG8gdGhlIHJ1bmxvb3AuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXSk6IEFkZGVkLgorICAgICAgICAo
LVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl0pOiBBZGRlZC4KKyAgICAg
ICAgKCtbV0tXZWJWaWV3IGF1dG9tYXRpY2FsbHlOb3RpZmllc09ic2VydmVyc09mVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXSk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoYmFzZVNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Ip
OgorICAgICAgICAoc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIFJlbW92ZSB0
aGUgZXhwZXJpbWVudGFsIHNldHRpbmdzIGBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvcmAgYW5kCisgICAgICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQgY2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRl
ZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVhIGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1b
V0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpdYC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRk
ZWQuCisgICAgICAgIFN0b3JlIHRoZSBjbGllbnQtb3ZlcnJpZGVuIHZhbHVlIGZvciBgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yYCBhbmQgbWFuYWdlIHN0YXRlIGNoYW5nZXMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnQ6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxD
aGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIEFkZCBPYmpD
IEtWTyBzdXBwb3J0IGZvciBgLVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmNvbnRlbnRWaWV3QmFja2dyb3VuZENvbG9yKTogQWRkZWQuCisgICAg
ICAgIFByb3ZpZGUgYSB3YXkgdG8gZ2V0IHRoZSBgYmFja2dyb3VuZENvbG9yYCBvZiB0aGUgYFdL
Q29udGVudFZpZXdgLiBUaGlzIGlzIG5lZWRlZCBvbiBpT1MKKyAgICAgICAgYmVjYXVzZSBgc2Ny
b2xsVmlld0JhY2tncm91bmRDb2xvcmAgKG5vdyBgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcmApCisgICAgICAgIHdvdWxkIHVzZSB0aGlzIHZhbHVlIGJlZm9y
ZSBmYWxsaW5nIGJhY2sgdG8gdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91
bmQgY29sb3IuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOiBBZGRlZC4KKyAgICAgICAg
UGFzcyB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBmb3IgYHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcmAgdG8gdGhlIFdlYlByb2Nlc3Mgc28gdGhhdCBpdAorICAgICAgICBjYW4gYmUgdXNlZCB3
aGVuIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Vmlld1NuYXBzaG90U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9y
ZTo6cmVjb3JkU25hcHNob3QpOgorICAgICAgICBHbyBiYWNrIHRvIHVzaW5nIHRoZSBgcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yYCAoYmVmb3JlIHIyNzMwODMpLgorCiAyMDIxLTA1LTEwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgV2Vi
Q29yZTo6SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlIGFuIGVudW0gY2xhc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFs
LnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sCmluZGV4IGI1OThhYTZhMDQ4MzJhNzBmOTc4ZGEyOTA5MWEyOWFlN2FiODk1ZDcu
LmZhMWQ3YjExODY1ODkyNDcxNjFjYmNjNGFjNzkxZjkyZDIxMzE0MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
KysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJu
YWwueWFtbApAQCAtNzYwLDMwICs3NjAsNiBAQCBVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5n
RW5hYmxlZDoKICAgICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiBkZWZhdWx0VXNlR1BVUHJvY2Vz
c0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQoKQogCi1Vc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Ny
b2xsQXJlYUJhY2tncm91bmRDb2xvcjoKLSAgdHlwZTogYm9vbAotICBodW1hblJlYWRhYmxlTmFt
ZTogIlVzZSBzYW1wbGVkIHBhZ2UgdG9wIGNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5k
IGNvbG9yIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2Ugc2FtcGxlZCBwYWdlIHRv
cCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgZGVmYXVsdFZhbHVl
OgotICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0Ogot
ICAgICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UK
LQotVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ci0gIHR5cGU6IGJv
b2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IiCi0gIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIlVzZSB0aGVt
ZS1jb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgZGVmYXVsdFZhbHVl
OgotICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0Ogot
ICAgICAgZGVmYXVsdDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UK
LQogIyBGSVhNRTogUmVtb3ZlIG9uY2UgPHJkYXI6Ly83MzgzMDk2MT4gaGFzIGJlZW4gZml4ZWQK
IFVzZWlUdW5lc0FWT3V0cHV0Q29udGV4dDoKICAgdHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggY2UxMWY0OWVhN2ZmNDliMGNmMDZiYjczZWUwOTcxOTY5OTljMTk3ZC4uYjY5
NjZmYzliM2M4NjYzYzYyOWY1NjNmMjg5Yjg2NmVkMDRjMjRiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0zOTAxLDEzICszOTAxLDYgQEAgdm9pZCBEb2N1bWVudDo6dGhlbWVDb2xvckNo
YW5nZWQoKQogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLnRoZW1lQ29sb3JDaGFuZ2VkKCk7Ci0KLSNpZiBFTkFCTEUo
UlVCQkVSX0JBTkRJTkcpCi0gICAgaWYgKGF1dG8qIHZpZXcgPSByZW5kZXJWaWV3KCkpIHsKLSAg
ICAgICAgaWYgKHZpZXctPnVzZXNDb21wb3NpdGluZygpKQotICAgICAgICAgICAgdmlldy0+Y29t
cG9zaXRvcigpLnVwZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xvcigpOwot
ICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiB9CiAKIHN0YXRpYyBib29s
IGlzVmFsaWRQYWdlU2FtcGxlTG9jYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBJbnRQ
b2ludCYgbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0YjFkYjQ2ZTAzMzJhNGQ4ZTRh
YjlkZTc1ODVmOTRiZjFlNTljYjJlLi42YTdmYzViMThlNGMxMThlOGZiNTZlOWYyZGVjNWU0MGMw
YmE5YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1NjMsNiArMjU2MywyNSBAQCBDb2xvciBQ
YWdlOjpzYW1wbGVkUGFnZVRvcENvbG9yKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPnNh
bXBsZWRQYWdlVG9wQ29sb3IoKTsKIH0KIAordm9pZCBQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZShDb2xvciYmIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KQoreworICAgIGlmICh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9PSBtX3VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlID0gV1RGTW92ZSh1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZSk7CisKKyAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwor
CisjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQorICAgIGlmIChhdXRvIGZyYW1lVmlldyA9IG1h
a2VSZWZQdHIobWFpbkZyYW1lKCkudmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogcmVuZGVy
VmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVy
Vmlldy0+dXNlc0NvbXBvc2l0aW5nKCkpCisgICAgICAgICAgICAgICAgcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLnVwZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xvcigpOwor
ICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShSVUJCRVJfQkFORElORykKK30KKwog
Ly8gVGhlc2UgYXJlIG1hZ2ljYWwgY29uc3RhbnRzIHRoYXQgbWlnaHQgYmUgdHdlYWtlZCBvdmVy
IHRpbWUuCiBzdGF0aWMgY29uc3QgZG91YmxlIGdNaW5pbXVtUGFpbnRlZEFyZWFSYXRpbyA9IDAu
MTsKIHN0YXRpYyBjb25zdCBkb3VibGUgZ01heGltdW1VbnBhaW50ZWRBcmVhUmF0aW8gPSAwLjA0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCA2ZGQwN2UxYmE5MWYzMTRkYTYwZTJhZjNjNzQwOWNhNTM4MmVk
ZTUxLi4zMWE0MmE5NzExYWVkYzE4N2Y1NzMyYjdkNmUwZmQ2ZDVlNDEwZDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtNjIzLDYgKzYyMyw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xv
ciBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBDb2xvciBzYW1wbGVkUGFnZVRvcENvbG9yKCkgY29uc3Q7CiAKKyAgICBDb2xvciB1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yT3ZlcnJpZGU7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKENvbG9yJiYpOworCiAgICAgYm9vbCBpc0NvdW50
aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJc0NvdW50
aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKGJvb2wgaXNDb3VudGluZykgeyBtX2lzQ291bnRp
bmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgPSBpc0NvdW50aW5nOyB9CiAgICAgdm9pZCBzdGFy
dENvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCk7CkBAIC0xMTUyLDYgKzExNTUsOCBA
QCBwcml2YXRlOgogCiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1l
c3RhbXA7CiAKKyAgICBDb2xvciBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwor
CiAgICAgY29uc3QgYm9vbCBtX2h0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CiAgICAgbXV0
YWJsZSBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgbV9tZWRpYVNlc3Npb25Hcm91cElkZW50
aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAppbmRleCBmODc3NDU3MmI0YjUyZTRhYTc5MWZjODdiZjg1MmIwNmZjYzJl
MjFjLi5lOWJkOGE5OTMxOGMzNDQ2OGYzMWJhN2RhOGZiNjYwZDVkNzhmNTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
MzkyMywxMSArMzkyMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKQogICAgIGlmICghbV9sYXllckZvck92
ZXJoYW5nQXJlYXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xv
cjsKLSAgICBpZiAocGFnZSgpLnNldHRpbmdzKCkudXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3IoKSkKLSAgICAgICAgYmFja2dyb3VuZENvbG9yID0gcGFnZSgpLnRoZW1l
Q29sb3IoKTsKLSAgICBpZiAocGFnZSgpLnNldHRpbmdzKCkudXNlU2FtcGxlZFBhZ2VUb3BDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSAmJiAhYmFja2dyb3VuZENvbG9yLmlzVmFs
aWQoKSkKLSAgICAgICAgYmFja2dyb3VuZENvbG9yID0gcGFnZSgpLnNhbXBsZWRQYWdlVG9wQ29s
b3IoKTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IHBhZ2UoKS51bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZSgpOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gbV9yb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRl
eCBmOTlhZGJlNjFkNGZkZWIwNjdjYWEyNmEyMTA1YjlhYjQ2ZGRjMWQ4Li5hYTlhNjdlNzZmYTQw
ODE3ZWRjOGE0MmExYzU0Y2UxN2VjNTE1OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC01ODAsNiArNTgwLDIwIEBAIFRoZSB1bmlmb3Jt
IHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJl
bGF0ZWQgcGFzdGViCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBO
U0NvbG9yICp0aGVtZUNvbG9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOwog
I2VuZGlmCiAKKy8qISBAYWJzdHJhY3QgVGhlIGNvbG9yIGRyYXduIGJlaGluZCB0aGUgYWN0aXZl
IHBhZ2UuCisgQGRpc2N1c3Npb24gQSBjb2xvciBkZXJpdmVkIGZyb20gdGhlIGNvbnRlbnQgb2Yg
dGhlIGFjdGl2ZSBwYWdlLCBzdWNoIGFzIGJ5IGJsZW5kaW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9y
IG9mCisgdGhlIDxodG1sPiBhbmQgPGJvZHk+IGVsZW1lbnRzIHdpdGggdGhlIEBsaW5rIGJhY2tn
cm91bmRDb2xvciBAL2xpbmsgb2YgdGhpcyBAbGluayBXS1dlYlZpZXcgQC9saW5rLiBVc2VkIGFz
CisgdGhlIGJhY2tncm91bmQgY29sb3IgdW5kZXIgdGhlIHBhZ2UncyBjb250ZW50LCBzdWNoIGFz
IGZvciBzY3JvbGwgYm91bmNpbmcgYXJlYXMuIENhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZQorIG93
bmVyIGFwcGxpY2F0aW9uIGZvciBjdXN0b20gc3R5bGluZyB3aXRob3V0IGhhdmluZyB0byBtb2Rp
ZnkgdGhlIHBhZ2UncyBzdHlsZS4KKyB0aGUgYmFja2dyb3VuZCBvZiBzY3JvbGwgYm91bmNpbmcg
YXJlYXMuCisgQGxpbmsgV0tXZWJWaWV3IEAvbGluayBpcyBrZXktdmFsdWUgb2JzZXJ2aW5nIChL
Vk8pIGNvbXBsaWFudCBmb3IgdGhpcyBwcm9wZXJ0eS4KKyAqLworI2lmIFRBUkdFVF9PU19JUEhP
TkUKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsX3Jlc2V0dGFibGUsIGNvcHkpIFVJQ29sb3Ig
KnVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CisjZWxzZQorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxfcmVzZXR0YWJsZSwgY29weSkg
TlNDb2xvciAqdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSkpOworI2VuZGlmCisKIEBlbmQKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAy
YjZjNmY4ZWNiYjFlNTBlMjExN2QyNmYxYzA4MmJjYTA4YTJkMjZjLi5mYjE2MzhkMDM1MDk5YTMx
NGQ0NjkyZGU3ZmNhOTcyZTZjNjEwNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NzcsNiArMTY3NywyMSBAQCAtIChDb2NvYUNv
bG9yICopdGhlbWVDb2xvcgogICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHRoZW1l
Q29sb3IpOwogfQogCistIChDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yCit7
CisgICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IoX3BhZ2UtPnVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpKTsKK30KKworLSAodm9pZClzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6
KENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZQoreworICAgIF9w
YWdlLT5zZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSh1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZS5DR0NvbG9yKTsKK30KKworKyAoQk9PTClhdXRvbWF0aWNhbGx5Tm90
aWZpZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBO
TzsKK30KKwogQGVuZAogCiAjcHJhZ21hIG1hcmsgLQpAQCAtMzAyNiwxMSArMzA0MSwxMyBAQCAt
ICh2b2lkKV9zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZTooQk9PTCljYW5Vc2VDcmVkZW50aWFs
U3RvcmFnZQogICAgIF9wYWdlLT5zZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShjYW5Vc2VDcmVk
ZW50aWFsU3RvcmFnZSk7CiB9CiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBf
dGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogLSAoQ29jb2FDb2xvciAqKV90aGVt
ZUNvbG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIHRoZW1lQ29sb3JdOwogfQogCisvLyBGSVhNRTog
UmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQ
SSA8cmRhcjovLzc3Nzg5NzMyPgogLSAoQ29jb2FDb2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3IKIHsKICAgICBhdXRvIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IF9wYWdl
LT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk5ZDU5MjVhYTc3
ODg2MjVlZGExNjlkODRiMzVkMDkxMjQ5Njk3M2EuLjRhNDhjNDNlYWZhMWFkNGZiNTI5NzY2OTBi
N2Q5YzYxOGJlZDdiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzgwLDEwICszODAsMTEgQEAgZm9yIHRoaXMg
cHJvcGVydHkuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQ29sb3IgKl90aGVt
ZUNvbG9yIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoInRoZW1lQ29sb3IiLCBt
YWNvcyhXS19NQUNfVEJBLCBXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAorLy8gRklYTUU6IFJlbW92
ZSBvbGQgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJk
YXI6Ly83Nzc4OTczMj4KICNpZiBUQVJHRVRfT1NfSVBIT05FCi1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIFVJQ29sb3IgKl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBVSUNvbG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoInVuZGVyUGFnZUJhY2tncm91bmRDb2xvciIsIGlvcyhXS19J
T1NfVEJBLCBXS19JT1NfVEJBKSk7CiAjZWxzZQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU0NvbG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoInVuZGVyUGFnZUJhY2tncm91bmRD
b2xvciIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAogLy8gT25seSBzZXQg
aWYgYC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZl
cmVuY2VdYCBpcyBhIHBvc2l0aXZlIG51bWJlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggZTBhYzllOWYyMzc0MDlkYWFlOTg1NmVi
ZjJmZWNlYTI1ZWY2MTdhYi4uMzJjZDY3Y2ZjOWY3MzdlMjRjYTkxOGQwMTQ4MDBkOWIyN2FhODBi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Q29sb3IgYmFzZVNjcm9sbFZp
ZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgIGlmICghd2ViVmlldy0+
X3BhZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2Ut
PnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2Ut
PnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpOwogfQogCiBzdGF0aWMgV2ViQ29yZTo6Q29sb3Ig
c2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcgKndlYlZpZXcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXgg
Yzg4YTNkNDIzMzkzMmZkMzU0MDNhNzAxNzMyYWJhNTJmZmRlYTliNC4uMmE5OGVkZTMyMjM0MWRh
YmJiYTJmZjRiNzBmMDBmNDhiOWRiNjE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFz
cyBBdHRhY2htZW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXI7CitjbGFzcyBDb2xvcjsKIAogc3RydWN0IEFwcEhpZ2hsaWdodDsKIH0K
QEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5n
ZSgpIGZpbmFsOwogICAgIHZvaWQgdGhlbWVDb2xvckRpZENoYW5nZSgpIGZpbmFsOworICAgIHZv
aWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSgpIGZpbmFsOworICAgIHZvaWQg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBwYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBwYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKSBmaW5hbDsKICAgICB2b2lkIHNhbXBs
ZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCBkZGI0MWViNGI1
NjdlMjc1MjdlODdiNWQ5YjZhNDEwYTE2NDY5Nzc0Li5kODVhNmU4OThlNjQ1YjcyNjEyM2E2ZWMz
Zjc1MjZjZGJhZGEwOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KQEAgLTQ3LDIyICs0NywzOCBAQCBQYWdlQ2xpZW50
SW1wbENvY29hOjp+UGFnZUNsaWVudEltcGxDb2NvYSgpID0gZGVmYXVsdDsKIHZvaWQgUGFnZUNs
aWVudEltcGxDb2NvYTo6dGhlbWVDb2xvcldpbGxDaGFuZ2UoKQogewogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVDb2xvciJdOworCisgICAgLy8gRklYTUU6IFJl
bW92ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+
CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJfdGhlbWVDb2xvciJdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnRoZW1lQ29sb3JEaWRDaGFuZ2UoKQogewog
ICAgIFttX3dlYlZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJ0aGVtZUNvbG9yIl07CisKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkgPHJk
YXI6Ly83NjY2MjY0ND4KICAgICBbbV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3Ro
ZW1lQ29sb3IiXTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCkKK3sKKyAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1
ZUZvcktleTpAInVuZGVyUGFnZUJhY2tncm91bmRDb2xvciJdOworfQorCit2b2lkIFBhZ2VDbGll
bnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpCit7CisgICAg
W21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAInVuZGVyUGFnZUJhY2tncm91bmRDb2xv
ciJdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcldpbGxDaGFuZ2UoKQogeworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+
CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yIl07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6cGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9s
ZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjov
Lzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJfcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yIl07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCA0MTdlMTFkNDk2NjA3YTMwMGNmYjY1ZmVkNmM3ZjRjYWNlMGM5MjZkLi5iYTYw
OTMwYzU1MDkwOThkNjdkZmIwN2UxNmU1ZTllYjdhNjU0ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC00OTAsNiArNDkwLDggQEAgcHVibGljOgogI2lmIEhBVkUoVUlT
Q1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZp
ZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSkg
PSAwOwogI2VuZGlmCisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbnRlbnRWaWV3QmFj
a2dyb3VuZENvbG9yKCkgPSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENy
ZWF0aW9uCkBAIC01MTQsNiArNTE2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHRo
ZW1lQ29sb3JXaWxsQ2hhbmdlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ29sb3JEaWRD
aGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2ls
bENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JE
aWRDaGFuZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENv
bG9yV2lsbENoYW5nZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JEaWRDaGFuZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlZFBhZ2VUb3BD
b2xvcldpbGxDaGFuZ2UoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdTbmFwc2hvdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmNwcAppbmRleCA0OGQ5NDYzMjc1ODQ5YzAyYzI2MzBjNDliNDkxZDUwZjY3MTM2
MzBmLi4yMzMxOTJhOGYxNDExZTk1NjljOTBhMTgwMDg0YjgxM2E3YjBkMTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYg
d2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAKICAgICBzbmFwc2hvdC0+c2V0UmVuZGVyVHJl
ZVNpemUod2ViUGFnZVByb3h5LnJlbmRlclRyZWVTaXplKCkpOwogICAgIHNuYXBzaG90LT5zZXRE
ZXZpY2VTY2FsZUZhY3Rvcih3ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
c25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkuc2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvcigpKTsKKyAgICBzbmFwc2hvdC0+c2V0QmFja2dyb3VuZENvbG9yKHdlYlBhZ2VQ
cm94eS5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgc25hcHNob3QtPnNldFZp
ZXdTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQod2ViUGFnZVByb3h5LnZp
ZXdTY3JvbGxQb3NpdGlvbigpKSk7CiAKICAgICBpdGVtLnNldFNuYXBzaG90KFdURk1vdmUoc25h
cHNob3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJl
MWRjNzM4ZDJjNWI3NjFmOGQ2NGExZGRkNzdkMmY4MDdhMDYyN2EuLmEzYjU1NDFmYTk2MTQ4MGI3
ZDEyODFhMWE4NWFiMDU5YjgyMjAwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTkxMywxNSArMTkxMyw1MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VW5kZXJsYXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFVuZGVybGF5Q29sb3IoY29sb3IpKTsKIH0KIAotQ29sb3IgV2ViUGFnZVBy
b3h5OjpzY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK0NvbG9yIFdlYlBhZ2VQcm94
eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcmVmZXJl
bmNlcy0+dXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSAmJiBtX3Ro
ZW1lQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbV90aGVtZUNvbG9yOworICAgIGlm
IChtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CiAKLSAgICBpZiAobV9w
cmVmZXJlbmNlcy0+dXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IoKSAmJiBtX3NhbXBsZWRQYWdlVG9wQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gbV9zYW1wbGVkUGFnZVRvcENvbG9yOworICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcjsKIAotICAgIHJldHVybiBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKyAg
ICByZXR1cm4gcGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKENvbG9yJiYg
bmV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCit7CisgICAgaWYgKG5ld1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlID09IG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7CisgICAgYXV0byBvbGRVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IHN0ZDo6ZXhjaGFuZ2UobV91bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPdmVycmlkZSwgbmV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJp
ZGUpOworICAgIGJvb2wgY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9ICFlcXVhbEln
bm9yaW5nU2VtYW50aWNDb2xvcihvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlID0gV1RGTW92ZShvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7CisKKyAg
ICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFnZUNsaWVu
dCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKTsKKworICAgIG1fdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPSBXVEZNb3ZlKG5ld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKTsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yKQorICAgICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hh
bmdlKCk7CisKKyAgICBpZiAobV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGVUb0Rpc3BhdGNoKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc1BlbmRpbmdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZVRvRGlzcGF0Y2ggPSB0cnVlOworCisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICghbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rp
c3BhdGNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faGFzUGVuZGluZ1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCA9IGZhbHNlOworCisgICAgICAg
IGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUobV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZSkpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQpAQCAtODU0NywxMyArODU4NCwyNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dGhlbWVDb2xvckNoYW5nZWQoY29uc3QgQ29sb3ImIHRoZW1lQ29sb3IpCiAg
ICAgcGFnZUNsaWVudCgpLnRoZW1lQ29sb3JEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBDb2xvciYg
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKQordm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBDb2xvciYgbmV3UGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKQogewotICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ciA9PSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCisgICAgaWYgKG1fcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yID09IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYXV0byBvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBhdXRvIG9sZFBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvciA9IHN0ZDo6ZXhjaGFuZ2UobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIG5l
d1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcik7CisgICAgYm9vbCBjaGFuZ2VzVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yID0gIWVxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKG9sZFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciwgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpOworICAgIG1fcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID0gV1RGTW92ZShvbGRQYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3IpOworCisgICAgaWYgKGNoYW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisg
ICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7
CiAgICAgcGFnZUNsaWVudCgpLnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2Uo
KTsKLSAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IHBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcjsKKworICAgIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID0gbmV3UGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOworCisgICAgaWYgKGNoYW5nZXNVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoKTsKICAgICBwYWdlQ2xpZW50KCkucGFnZUV4dGVuZGVkQmFja2dyb3VuZENv
bG9yRGlkQ2hhbmdlKCk7CiB9CiAKQEAgLTg1NjcsNiArODYxNSwxNSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5nZWQoY29uc3QgQ29sb3ImIHNhbXBsZWRQYWdl
VG9wQ29sb3IpCiAgICAgcGFnZUNsaWVudCgpLnNhbXBsZWRQYWdlVG9wQ29sb3JEaWRDaGFuZ2Uo
KTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKKworQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0
Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbG9y
Ojp0cmFuc3BhcmVudEJsYWNrOworfQorCisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDViNDU3ZGZiNjAzMWVmNjM5YWQzYWUz
ZmNiZmZmYWU2YTZkODU3MDIuLmI2MzE2NjlmODdjYTVlYzZiMDI1NmIyYjM5YTQ3NzE0MDYzNzdh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02NjksNyArNjY5
LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6Q29sb3Igc2FtcGxlZFBhZ2VUb3BDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlZFBhZ2VUb3BDb2xvcjsgfQogCi0gICAgV2ViQ29yZTo6
Q29sb3Igc2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkNv
bG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkNvbG9y
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV91bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsgfQorICAgIHZvaWQgc2V0VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3ImJik7CiAKICAgICB2b2lkIHZpZXdX
aWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsK
QEAgLTIxMDUsNiArMjEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aGVtZUNvbG9yQ2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAgICAgdm9pZCBzYW1wbGVk
UGFnZVRvcENvbG9yQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIFdlYkNvcmU6
OkNvbG9yIHBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAgICAgdm9pZCBkaWRCbG9ja0luc2VjdXJl
UGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdp
blVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBw
YWdlVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpOwpAQCAtMjY1MCwxMCArMjY1
MywxMyBAQCBwcml2YXRlOgogICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2Rl
IHsgTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzIH07CiAKICAgICBXZWJDb3JlOjpDb2xvciBt
X3RoZW1lQ29sb3I7CisgICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5Q29sb3I7CiAgICAgV2Vi
Q29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAgICAgV2ViQ29yZTo6
Q29sb3IgbV9zYW1wbGVkUGFnZVRvcENvbG9yOwogCisgICAgYm9vbCBtX2hhc1BlbmRpbmdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZVRvRGlzcGF0Y2ggeyBmYWxzZSB9OworCiAgICAg
Ym9vbCBtX3VzZUZpeGVkTGF5b3V0IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
Zml4ZWRMYXlvdXRTaXplOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3
RXhwb3NlZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCmluZGV4IDNmYmUxYjE3ZmY2NjA0NDllOTkzZWY3ZThhZmMwYmEwMDI0ZmQ4N2Eu
LjM5ZDM3MTdhNjNkMmFkNjY0NmJkMDMyYWI0NjE2ZDYwZWNlYmE1ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yOTMsNiArMjkz
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3Jv
bGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkgZmluYWw7CiAjZW5kaWYKIAorICAgIFdlYkNvcmU6OkNvbG9yIGNv
bnRlbnRWaWV3QmFja2dyb3VuZENvbG9yKCkgZmluYWw7CisKICAgICBXZWFrT2JqQ1B0cjxXS0Nv
bnRlbnRWaWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJn
ZXQ+IG1fdW5kb1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNDBiNzYyMzYzOWZmYWQ0MWI0NDI0NjhlYjJlMTgx
YWEzNGYwMTY1My4uN2I4Yjc3Y2U4NGYxNDVlMTlkNjFlMTg1OGJmYmQ1ZWRkOWJmYTY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtMTAwNSw2ICsxMDA1LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJ1bk1vZGFsSmF2YVNj
cmlwdERpYWxvZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhCiAgICAgW21fY29u
dGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOldURk1vdmUoY2FsbGJhY2spXTsKIH0K
IAorV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVudEltcGw6OmNvbnRlbnRWaWV3QmFja2dyb3VuZENv
bG9yKCkKK3sKKyAgICByZXR1cm4gW21fY29udGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA3N2M4MDZkNDJhMWMxNGJmYzIwMDU4MmZjOGVjZjczNjZjM2I4MDVkLi4zMmIw
ZjI4YTU2ZjZlNzVlZWJmNThlNzU1OTU2MzZjZGM2MTgxOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE1NjQsNiArMTU2NCwxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbgogICAgIHBhZ2VDbGllbnQoKS5zaG93RGF0YURldGVj
dG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihwb3NpdGlvbkluZm8pOwogfQogCitDb2xvciBX
ZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sK
KyAgICBpZiAoYXV0byBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvciA9IHBhZ2VDbGllbnQoKS5j
b250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpOyBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcjsKKwor
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgcmV0dXJuIFVJQ29sb3Iuc3lzdGVt
QmFja2dyb3VuZENvbG9yLkNHQ29sb3I7CisjZWxzZQorICAgIHJldHVybiBVSUNvbG9yLndoaXRl
Q29sb3IuQ0dDb2xvcjsKKyNlbmRpZgorfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNjhi
MDU4OGQ3YTQ2ZGE2YzA3MjViZDJkYzlmNzFhMDhhYmZiZThkZi4uN2MwMmFlOGEwZDRlZDM4OTNi
YTNiMjA3NWQwMmZhZGNhZjk4ZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03MTAsNiArNzEwLDE1IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgdmlld1JlCiB9CiAjZW5kaWYKIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1Mp
CisgICAgcmV0dXJuIE5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xvci5DR0NvbG9yOworI2Vs
c2UKKyAgICByZXR1cm4gTlNDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk4NjQ2ZmU0Yjk3
YTEyYmE1ZWNkYTBlY2M3ZTUyYTEzM2IwZmM0NDguLjI0MzViMTNhYjY4NGJhZDAwNjFkYjIyYzhj
ZjkwMmU1MzA4Y2IzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0yNDQ4LDYgKzI0NDgsMTEgQEAgdm9pZCBXZWJQYWdlOjpwb3N0SW5qZWN0
ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXQK
ICAgICBpbmplY3RlZEJ1bmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UodGhpcywgbWVzc2Fn
ZU5hbWUsIHdlYlByb2Nlc3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yJiYgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpCit7CisgICAgbV9wYWdlLT5zZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlk
ZShXVEZNb3ZlKHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKSk7Cit9CisKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlOjpzZXRIZWFkZXJQYWdlQmFubmVy
KFBhZ2VCYW5uZXIqIHBhZ2VCYW5uZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggZWU0NDczYWRjNGI5ODBlMGRiOGQ3YTNlMDM0ODdiYjJmZTg5OGZi
Yy4uMTRmMWY5ZTAyODhiMzM4YjFkM2NiNWRlOWVmY2EzNzNiMzgwMGY2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjA3LDYgKzYwNyw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAorICAgIHZvaWQgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3ImJik7CisKICAgICB2b2lk
IHNldFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdW5kZXJs
YXlDb2xvciA9IGNvbG9yOyB9CiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMzdhNjU5Yzkx
YjM4OTJlMmI4ZjkzOGM2MjZjZGNmZTg5ZTQxOTA0Li4zYjdmNzA0MTAwNTlkMGFiOGUyMDVkMmI0
YmFlMGRhZGYwMDNhNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM5LDYgKzM5LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNv
bnRlbnRJbnNldCkKIAogICAgIFNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3Ip
CisgICAgU2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3Ig
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCiAKICAgICBWaWV3V2lsbFN0YXJ0TGl2
ZVJlc2l6ZSgpCiAgICAgVmlld1dpbGxFbmRMaXZlUmVzaXplKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhM2JlNWVjZGIxMmRjYmRjMzczOWYy
N2NmOTM4MzYwMDY5ODE4YjY1Li5lNjU3Y2NjNWY4NGI4NjYyN2Q4Y2ViODJhMGZlMzUxMWZiYTMz
OGQxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgorCisgICAgICAgIFByb21vdGUgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JdYCBTUEkgdG8gYC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl1g
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1
NjE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU2ODA5ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbTogUmVuYW1lZCBmcm9t
IFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbS4KKyAgICAgICAgKGRlZmF1bHRCYWNrZ3Jv
dW5kQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yLk9uTG9hZCk6CisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvci5TaW5nbGVTb2xpZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2Vi
Vmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVCbGVuZGVkQ29sb3IpOiBBZGRlZC4K
KyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxl
U29saWRDb2xvcnMpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yLk11bHRpcGxlQmxlbmRlZENvbG9ycyk6IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBpbml0V2l0aFdlYlZpZXc6
XSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0p
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
LktWTyk6CisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5N
YXRjaGVzU2Nyb2xsVmlldyk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVTdHlsZXMpOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBpbml0V2l0aFdlYlZp
ZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlld1BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvck9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNv
bnRleHQ6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW06CisgICAgICAgIChjcmVhdGVXZWJWaWV3V2l0
aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKToKKyAgICAgICAgKFRFU1QuU2FtcGxl
ZFBhZ2VUb3BDb2xvci5FeHBlcmltZW50YWxVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tOgorICAgICAgICAoY3JlYXRl
V2ViVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChURVNULldLV2ViVmlldy5FeHBlcmltZW50YWxV
c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcik6IERlbGV0ZWQuCisgICAg
ICAgIFJlbW92ZSB0aGUgZXhwZXJpbWVudGFsIHNldHRpbmdzIGBVc2VTYW1wbGVkUGFnZVRvcENv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgYW5kCisgICAgICAgIGBVc2VUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQgY2xpZW50cyBjYW4gb3Zl
cnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVhIGJhY2tncm91bmQgY29s
b3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpdYC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIxLTA1LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gUGFnZXMgd2l0aCBzZXJ2aWNlIHdvcmtlcnMgZG8gbm90IHN1c3BlbmQg
cHJvbXB0bHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmNkZWFiNGY0OWQ3Nzk5N2QwYjEz
ZGE4MmFkZGNjYzI5ZTczYzNiMy4uMGJhZWVkZTk3YThmOTIyYTdiOTE3YmI1M2E0MGZkNzgyZjZi
ZDJhYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg3MSw3ICs4NzEsNyBAQAogCQk5NTA5
NUYyMDI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUwMDAw
RDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5M0ZDREIzNDI2MzYzMTU2
MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFy
cmF5TWFwLmNwcCAqLzsgfTsKIAkJOTUwRTRDQzEyNTJFNzUyNDAwNzE2NTlGIC8qIGlPU1N0eWx1
c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLzsgfTsK
LQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1M0FC
QjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi87
IH07CisJCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yLm1tICovOyB9OwogCQk5NUE1MjQ5NTI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJW
aWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1t
ICovOyB9OwogCQk5NUI2QjNCNzI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1bWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QjZCM0I2MjUx
RUJGMkYwMEZDNDM4MiAvKiBNZWRpYURvY3VtZW50Lm1tICovOyB9OwogCQk5OTg0RkFDQzFDRkZB
RjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdL
V2ViVmlld1RleHRJbnB1dC5tbSAqLzsgfTsKQEAgLTI1NjgsNyArMjU2OCw3IEBACiAJCTk1MDk1
RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1wbGVkUGFnZVRvcENvbG9yLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2FtcGxlZFBhZ2VUb3BDb2xvci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNv
cnRlZEFycmF5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNv
cnRlZEFycmF5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRTRDQzAy
NTJFNzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBpT1NTdHlsdXNTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1Ro
ZW1lQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1QjZCM0I2MjUxRUJG
MkYwMEZDNDM4MiAvKiBNZWRpYURvY3VtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVkaWFEb2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1RleHRJbnB1
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0ODIsNyArMzQ4Miw2IEBACiAJ
CQkJMzdBMjJBQTUxRENBQTI3MjAwQUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHNBZnRlckNyYXNoLm1tICovLAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBP
cGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8sCiAJCQkJMkRBMjU4NkUyMjVDNjdEQzAwQjQ1QzFDIC8q
IE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gKi8sCi0JCQkJOTUzQUJCMzQyNUMwRDY4MTAw
NEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLywKIAkJCQkyRDNDQTNB
NDIyMURGMjM5MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVnaW4ubW0gKi8sCiAJCQkJNTEyNDJD
REEyMzdCNzkxRTAwRUVEOUMxIC8qIFBhZ2Vab29tLm1tICovLAogCQkJCUY0NEM3OUZCMjBGOUU1
MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tICovLApAQCAtMzYyNiw2ICsz
NjI1LDcgQEAKIAkJCQlDRDdGODlEQjIyQTg2Q0RBMDBENjgzQUUgLyogV0tXZWJWaWV3U3VzcGVu
ZEFsbE1lZGlhUGxheWJhY2subW0gKi8sCiAJCQkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8q
IFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLywKIAkJCQk5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkg
LyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLywKKwkJCQk5NTNBQkIzNDI1QzBENjgxMDA0QzhC
NzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tICovLAogCQkJKTsKIAkJ
CW5hbWUgPSAiV2ViS2l0IENvY29hIjsKIAkJCXBhdGggPSBXZWJLaXRDb2NvYTsKQEAgLTU1Nzgs
NyArNTU3OCw2IEBACiAJCQkJMEYzNDA3NzYyMzAzN0ZEQzAwNjBBMUEwIC8qIE92ZXJmbG93U2Ny
b2xsVmlld1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzEwNEJDMUYyNTQ3MjM3MTAwQzA3
OEM5IC8qIE92ZXJyaWRlQXBwbGVMYW5ndWFnZXNQcmVmZXJlbmNlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkRBMjU4NkYyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVu
dHMubW0gaW4gU291cmNlcyAqLywKLQkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDQjREQTkx
QzgzQUU3MzAwQ0M2OTE4IC8qIFBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YwNzFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxvYWRCYXNpYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0YwODFBNDExQUU2MDA0NDdDNEMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NjAsNiArNTg1OSw3
IEBACiAJCQkJQ0Q3Rjg5REMyMkE4NkNEQTAwRDY4M0FFIC8qIFdLV2ViVmlld1N1c3BlbmRBbGxN
ZWRpYVBsYXliYWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQx
OThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk1QTUyNDk1
MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDNzRDOEZBMjJERkJBOTYwMERBMkRB
QiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDMwNDYy
NEI0QzNCQTAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUM2
NERDMzIxRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MzJmNDVhYzA4YTRlMTE4ZDljNDFhYWNlZDc1Y2Ex
MTA3ODIwMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3IubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCi0jaW1wb3J0ICJU
ZXN0Q29jb2EuaCIKLSNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNkZWZpbmUg
RVhQRUNUX05TU1RSSU5HX0VRKGV4cGVjdGVkLCBhY3R1YWwpIFwKLSAgICBFWFBFQ1RfVFJVRShb
YWN0dWFsIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOyBcCi0gICAgRVhQRUNUX1dL
X1NUUkVRKGV4cGVjdGVkLCAoTlNTdHJpbmcgKilhY3R1YWwpOwotCi1jb25zdGV4cHIgQ0dGbG9h
dCB3aGl0ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMSwgMSwgMSB9OwotY29uc3RleHByIENH
RmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAwLCAwLCAxIH07Ci1jb25zdGV4cHIg
Q0dGbG9hdCBibHVlQ29sb3JDb21wb25lbnRzWzRdID0geyAwLCAwLCAxLCAxIH07Ci0KLVRFU1Qo
UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLCBPbkxvYWQpCi17Ci0gICAgYXV0byBzUkdCQ29s
b3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpKTsKLSAgICBhdXRvIHdoaXRlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JH
QkNvbG9yU3BhY2UuZ2V0KCksIHdoaXRlQ29sb3JDb21wb25lbnRzKSk7Ci0gICAgYXV0byByZWRD
b2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29s
b3JDb21wb25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwot
ICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXSk7
Ci0KLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxB
bGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB9IDwvc3R5bGU+Il07Ci0KLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKSk7Ci0KLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5
IHsgbm90LWJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOwotCi0gICAgRVhQRUNU
X1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci19Ci0KLVRFU1QoUGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yLCBNdWx0aXBsZVN0eWxlcykKLXsKLSAgICBhdXRvIHNSR0JDb2xv
clNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNl
U1JHQikpOwotICAgIGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlldyBfcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yXSk7Ci0KLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0
eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IGJvZHkgeyBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOyB9IDwvc3R5bGU+Il07Ci0KLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGJs
dWVDb2xvci5nZXQoKSkpOwotfQotCi1AaW50ZXJmYWNlIFdLV2ViVmlld1BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvck9ic2VydmVyIDogTlNPYmplY3QKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKLQotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZpZXc7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNTdHJpbmcgKnN0YXRlOwotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdQ
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlcgotCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Ci17Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfc3RhdGUgPSBAImJlZm9y
ZS1pbml0IjsKLQotICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBbX3dlYlZpZXcgYWRkT2Jz
ZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0
cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAq
KWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAotewotICAgIGlmIChbX3N0YXRlIGlzRXF1
YWxUb1N0cmluZzpAImJlZm9yZS1pbml0Il0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1p
bml0IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChbX3N0YXRlIGlzRXF1YWxU
b1N0cmluZzpAImJlZm9yZS1sb2FkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1sb2Fk
IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0
cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXSkgewotICAgICAgICBfc3RhdGUgPSBAImFm
dGVyLWNzcy1jbGFzcy1hZGRlZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
W19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXSkgewot
ICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1jaGFuZ2VkIjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1j
c3MtY2xhc3MtcmVtb3ZlZCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY3NzLWNsYXNz
LXJlbW92ZWQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotQGVuZAotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvciwgS1ZPKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byB3aGl0ZUNv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCB3aGl0ZUNv
bG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8g
Ymx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBi
bHVlQ29sb3JDb21wb25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KV0pOwotICAgIGF1dG8gdGhlbWVDb2xvck9ic2VydmVyID0gYWRvcHROUyhbW1dLV2ViVmlld1Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvck9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItaW5pdCIsIFt0
aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZlciBz
ZXRTdGF0ZTpAImJlZm9yZS1sb2FkIl07Ci0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHls
ZT4gYm9keS5yZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gYm9keS5ibHVlIHsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsgfSA8L3N0eWxlPiJdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItbG9hZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIHdoaXRlQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2
ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWFkZGVkIl07Ci0gICAgW3dlYlZpZXcgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ3Jl
ZCciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAg
RVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiLCBbdGhlbWVDb2xvck9i
c2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQo
KSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xh
c3MtY2hhbmdlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdibHVlJyJdOwotICAgIFt3ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVy
LWNzcy1jbGFzcy1jaGFuZ2VkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xv
ck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1yZW1vdmVkIl07Ci0gICAgW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NO
YW1lID0gJyciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtcmVtb3ZlZCIsIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHdoaXRl
Q29sb3IuZ2V0KCkpKTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQppbmRleCA3ZjI3MjFiNjVj
MDcwMjIxMzk0MjU5ZDZiMDdhYTYyYmU5M2M3MjIxLi44YjNmMTE4Y2RjMzgzOTliNzZjOWJkMjIy
YmY0MjhmNTg1ODgxNDYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCkBAIC04MSwyMCArODEs
MTIgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGgg
b2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KIAogQGVuZAogCi1lbnVtIGNsYXNzIFVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIDogYm9vbCB7IFll
cywgTm8gfTsKLXN0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dp
dGhTYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZShkb3VibGUgc2FtcGxlZFBhZ2VUb3BD
b2xvck1heERpZmZlcmVuY2UsIGRvdWJsZSBzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0ID0g
MCwgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBVc2VTYW1w
bGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6Tm8pCitzdGF0aWMg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VUb3BD
b2xvck1heERpZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNl
LCBkb3VibGUgc2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDApCiB7CiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZl
cmVuY2U6c2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2VdOwogICAgIFtjb25maWd1cmF0
aW9uIF9zZXRTYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0OnNhbXBsZWRQYWdlVG9wQ29sb3JN
aW5IZWlnaHRdOwogCi0gICAgZm9yIChfV0tJbnRlcm5hbERlYnVnRmVhdHVyZSAqZmVhdHVyZSBp
biBbV0tQcmVmZXJlbmNlcyBfaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzXSkgewotICAgICAgICBpZiAo
W2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIlVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIl0pIHsKLSAgICAgICAgICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6KHVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yID09IFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yOjpZZXMpIGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVd
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiB9CiAKQEAg
LTM1OCwzNCArMzUwLDMgQEAgVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBESVNBQkxFRF9EaXNw
bGF5UDMpCiAgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMl0sIDEuMDAsIDEuMDEpOwog
ICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKIH0KLQotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0KLS8vIFRoZXJlJ3Mgbm8gQVBJL1NQSSB0byBnZXQgdGhlIGJhY2tncm91bmQgY29s
b3Igb2YgdGhlIHNjcm9sbCBhcmVhIG9uIG1hY09TLgotCi1URVNUKFNhbXBsZWRQYWdlVG9wQ29s
b3IsIEV4cGVyaW1lbnRhbFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKQotewotICAgIGF1dG8gd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VUb3BDb2xv
ck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3I6Ok5vKTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVt
ZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0p
OwotCi0gICAgW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRl
Q2hpbGRGcmFtZXNQYWludDpjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQi
X3MsIHsgInJlZCJfcywgImJsdWUiX3MgfSldOwotICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3V2l0
aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVkUGFnZVRv
cENvbG9yXSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91
bmRDb2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIHdhaXRGb3JT
YW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdlYlZpZXdXaXRob3V0VGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IuZ2V0KCksIGNyZWF0ZUhUTUxHcmFkaWVudFdp
dGhDb2xvclN0b3BzKCJyaWdodCJfcywgeyAicmVkIl9zLCAicmVkIl9zIH0pKTsKLSAgICBFWFBF
Q1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNHQ29sb3IpLCBXZWJDb3Jl
OjpDb2xvcjo6cmVkKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXdXaXRo
b3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFj
a2dyb3VuZENvbG9yLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwotCi0gICAgYXV0
byB3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gY3Jl
YXRlV2ViVmlld1dpdGhTYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSg1LCAwLCBVc2VT
YW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKTsKLSAg
ICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91
bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpjcmVhdGVIVE1MR3Jh
ZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgImJsdWUiX3MgfSldOwot
ICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6
OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6Ondo
aXRlKTsKLQotICAgIHdhaXRGb3JTYW1wbGVkUGFnZVRvcENvbG9yVG9DaGFuZ2VGb3JIVE1MKHdl
YlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IuZ2V0KCksIGNy
ZWF0ZUhUTUxHcmFkaWVudFdpdGhDb2xvclN0b3BzKCJyaWdodCJfcywgeyAicmVkIl9zLCAicmVk
Il9zIH0pKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXdXaXRoVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdLkNH
Q29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsKLSAgICBFWFBFQ1RfRVEoV2ViQ29yZTo6Q29s
b3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Ny
b2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IpLCBXZWJDb3JlOjpDb2xvcjo6cmVkKTsK
LX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3Iu
bW0KaW5kZXggYjU3ZWRhNzE4MzQ1OTAxNTBmODc1OTRhYWQ0MTYwMjBlZmQzNDNlOS4uM2RiZDg2
MzAxNWFjMmNmNGU3MTQwNTBkNzVkMGM5YzI1OWI2ZmJiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xv
ci5tbQpAQCAtMzIxLDUyICszMjEsMyBAQCBURVNUKFdLV2ViVmlld1RoZW1lQ29sb3IsIE1ldGFF
bGVtZW50T3ZlcnJpZGVzQXBwbGljYXRpb25NYW5pZmVzdCkKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLS8v
IFRoZXJlJ3Mgbm8gQVBJL1NQSSB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHNj
cm9sbCBhcmVhIG9uIG1hY09TLgotCi1lbnVtIGNsYXNzIFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yIDogYm9vbCB7IFllcywgTm8gfTsKLXN0YXRpYyBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlldyhVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvciB1c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikK
LXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZl
YXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKLSAgICAg
ICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJVc2VUaGVtZUNvbG9yRm9yU2Ny
b2xsQXJlYUJhY2tncm91bmRDb2xvciJdKSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOih1c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvciA9PSBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6
WWVzKSBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotfQotCi1URVNUKFdLV2ViVmlld1RoZW1lQ29s
b3IsIEV4cGVyaW1lbnRhbFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
KQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byByZWRDb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRz
KSk7Ci0gICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2UuZ2V0KCksIGJsdWVDb2xvckNvbXBvbmVudHMpKTsKLQotICAgIGF1dG8gd2ViVmlld1dp
dGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZp
ZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKTsKLSAgICBF
WFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3Jv
dW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5k
V2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0eWxlPSdiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRob3V0
VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9y
LkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRob3V0VGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9
J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3Jd
LkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFs
VG9Db2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRD
b2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgp
KSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3Jv
dW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yOjpZZXMpOwotICAgIEVYUEVDVF9UUlVFKCFbd2ViVmlld1dpdGhUaGVtZUNvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXSk7Ci0KLSAgICBbd2ViVmll
d1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAi
PGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IGJsdWUnPiJdOwotICAgIEVYUEVDVF9UUlVF
KCFbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciB0aGVt
ZUNvbG9yXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dp
dGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNr
Z3JvdW5kQ29sb3IuQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Ci0KLSAgICBbd2ViVmlld1dp
dGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPG1l
dGEgbmFtZT0ndGhlbWUtY29sb3InIGNvbnRlbnQ9J3JlZCc+PGJvZHkgc3R5bGU9J2JhY2tncm91
bmQtY29sb3I6IGJsdWUnPiJdOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVD
b2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCByZWRDb2xvci5nZXQo
KSkpOwotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE2NjM0Mzcx
YTljMjllYzgwZjI0NmNjYTM2ZGViYjdjYTdhNzkwMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yLm1tCkBAIC0wLDAgKzEsMjg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgIkNvY29hQ29sb3IuaCIKKyNpbXBvcnQgIlRlc3RDb2NvYS5oIgor
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2RlZmluZSBFWFBFQ1RfSU5fUkFO
R0UoYWN0dWFsLCBtaW4sIG1heCkgXAorICAgIEVYUEVDVF9HRShhY3R1YWwsIG1pbik7IFwKKyAg
ICBFWFBFQ1RfTEUoYWN0dWFsLCBtYXgpOworCisjZGVmaW5lIEVYUEVDVF9OU1NUUklOR19FUShl
eHBlY3RlZCwgYWN0dWFsKSBcCisgICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKTsgXAorICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwgKE5T
U3RyaW5nICopYWN0dWFsKTsKKworc3RhdGljIFJldGFpblB0cjxDb2NvYUNvbG9yPiBkZWZhdWx0
QmFja2dyb3VuZENvbG9yKFRlc3RXS1dlYlZpZXcgKndlYlZpZXcpCit7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBpZiAoV0tDb250ZW50VmlldyAqY29udGVudFZpZXcgPSB3ZWJWaWV3
LndrQ29udGVudFZpZXcpCisgICAgICAgIHJldHVybiBjb250ZW50Vmlldy5iYWNrZ3JvdW5kQ29s
b3I7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh3ZWJWaWV3KTsKKyNlbmRpZgorCisjaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBOU0Nv
bG9yLmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3I7CisjZWxpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQ
T1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiBVSUNvbG9yLnN5c3RlbUJh
Y2tncm91bmRDb2xvcjsKKyNlbHNlCisgICAgcmV0dXJuIFtDb2NvYUNvbG9yIHdoaXRlQ29sb3Jd
OworI2VuZGlmCit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBP
bkxvYWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dD
b2xvcl0pKTsKK30KKworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIFNp
bmdsZVNvbGlkQ29sb3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsK
KyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5n
ZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJv
ZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKK30KKworVEVTVChXS1dl
YlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIFNpbmdsZUJsZW5kZWRDb2xvcikKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9y
LCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1t
ZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMjU1LCAwLCAwLCAwLjUpOyB9IDwvc3R5bGU+Il07CisgICAgYXV0byBjb21wb25lbnRz
ID0gQ0dDb2xvckdldENvbXBvbmVudHMoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yKTsKKyAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1swXSwgMSk7CisgICAgRVhQRUNU
X0lOX1JBTkdFKGNvbXBvbmVudHNbMV0sIDAuNDUsIDAuNTUpOworICAgIEVYUEVDVF9JTl9SQU5H
RShjb21wb25lbnRzWzJdLCAwLjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1sz
XSwgMSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBNdWx0
aXBsZVNvbGlkQ29sb3JzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcu
Z2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBo
dG1sIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjog
cmVkOyB9IDwvc3R5bGU+Il07CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJl
ZENvbG9yXS5DR0NvbG9yKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yLCBNdWx0aXBsZUJsZW5kZWRDb2xvcnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJW
aWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5k
Q29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFp
bnQ6QCI8c3R5bGU+IGh0bWwgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMCwgMCwgMC41
KTsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuNSk7IH0gPC9z
dHlsZT4iXTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOworICAgIEVYUEVDVF9JTl9S
QU5HRShjb21wb25lbnRzWzBdLCAwLjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29t
cG9uZW50c1sxXSwgMC4yLCAwLjI1KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1sy
XSwgMC43LCAwLjc1KTsKKyAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1szXSwgMSk7Cit9CisKK0Bp
bnRlcmZhY2UgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgOiBOU09i
amVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3OworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2ViVmll
dzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqc3RhdGU7CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2Vy
dmVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9zdGF0ZSA9IEAiYmVmb3JlLWluaXQiOworCisgICAgX3dlYlZpZXcgPSB3ZWJW
aWV3OworICAgIFtfd2ViVmlldyBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRp
YWwgY29udGV4dDpuaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3Qg
Y2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sK
KyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtaW5pdCJdKSB7CisgICAg
ICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWFkZGVkIl0p
IHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3Jl
LWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xh
c3MtY2hhbmdlZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXSkgeworICAgICAgICBf
c3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1ub25udWxsLW92
ZXJyaWRlIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1ub25udWxsLW92ZXJyaWRlIjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmlu
ZzpAImJlZm9yZS1udWxsLW92ZXJyaWRlIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1u
dWxsLW92ZXJyaWRlIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVYUEVDVF9OU1NU
UklOR19FUSgibm90LXJlYWNoZWQiLCBfc3RhdGUpOworfQorCitAZW5kCisKK1RFU1QoV0tXZWJW
aWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBLVk8pCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBhdXRvIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2Vy
dmVyID0gYWRvcHROUyhbW1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVy
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIEVYUEVDVF9OU1NU
UklOR19FUSgiYWZ0ZXItaW5pdCIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
dGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3
ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZy
YW1lc1BhaW50OkAiPHN0eWxlPiBib2R5LnJlZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSBi
b2R5LmJsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IDwvc3R5bGU+Il07CisgICAgRVhQ
RUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJh
Y2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1hZGRl
ZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNz
LWFkZGVkIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisKKyAg
ICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90
LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29j
b2FDb2xvciByZWRDb2xvcl1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1j
aGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKworICAg
IFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3Qt
Y2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOm5pbF07
CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBb
Q29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl07Cisg
ICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHku
Y2xhc3NOYW1lID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRp
b25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLWNoYW5n
ZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgYmx1ZUNvbG9yXS5DR0NvbG9yKSk7CisKKyAgICBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNo
YW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FD
b2xvciBibHVlQ29sb3JdXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hh
bmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworCisgICAg
W3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1j
aGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6bmlsXTsK
KyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtD
b2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1yZW1vdmVkIl07Cisg
ICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHku
Y2xhc3NOYW1lID0gJyciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtcmVtb3ZlZCIs
IFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9U
UlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9y
XSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAi
c2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3I6ZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKS5nZXQoKV07CisgICAg
RVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRv
Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVs
dEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2Ui
XTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6bmlsXTsKKyAgICBF
WFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0
QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbm9ubnVsbC1vdmVy
cmlkZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FD
b2xvciByZWRDb2xvcl1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbm9ubnVsbC1v
dmVycmlkZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworCisg
ICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5v
dC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0Nv
Y29hQ29sb3IgcmVkQ29sb3JdXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3Qt
Y2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisKKyAg
ICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90
LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5l
eHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5v
dC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKwor
ICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1u
b3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxk
LW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsK
KyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsK
KworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3Vs
ZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJyciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9y
TmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQt
bm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwor
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOwor
CisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3Jl
LW51bGwtb3ZlcnJpZGUiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLW51bGwtb3ZlcnJpZGUiLCBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0p
KTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKy8vIFRoZXJlJ3Mgbm8gQVBJL1NQ
SSB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHNjcm9sbCBhcmVhIG9uIG1hY09T
LgorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgTWF0Y2hlc1Njcm9s
bFZpZXcpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dD
b2xvcl0pKTsKKyAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5k
Q29sb3IpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBb
Q29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3Is
IFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisKKyAgICBbd2ViVmlldyBzZXRVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgYmx1ZUNvbG9yXV07CisgICAgRVhQRUNU
X1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworICAgIEVYUEVD
VF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3Vu
ZENvbG9yLkNHQ29sb3IsIFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworfQorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428306</attachid>
            <date>2021-05-11 12:28:34 -0700</date>
            <delta_ts>2021-05-11 16:19:37 -0700</delta_ts>
            <desc>[Patch] logging for EWS</desc>
            <filename>bug-225615-20210511132833.patch</filename>
            <type>text/plain</type>
            <size>77880</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmI5MGEyOWZhMDBmNjljZGZkYjM0OGMxNDA1NzA3MTQ5NTAzZGQyNi4uNGFiYzcyMzcw
OTdmM2U1Y2E2NWQ4MmVhY2EzNjE0MWY0ZjZkZThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgYFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVJgIHNob3VsZCBwcmludCB0
aGUgUElEIGJlZm9yZSBzbGVlcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2MzZlYTQ3ZTAyNDJmOWJlMTcx
MTIwNzkxYjZhMWQ3MTg5NjUxM2YuLmMxMTJlMzYwOTFiNWQwYmNkNDI5MjMyNTFkOTk3MTcyYzcy
NzIyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBgLVtXS1dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBgLVtXS1dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTY4MDk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRoYXQg
d2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9zdCBy
ZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFja2dy
b3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0aGUg
Y3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAgICAg
ICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisgICAg
ICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBlZmZl
Y3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAgICBU
ZXN0czogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZAorICAgICAgICAg
ICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IK
KyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVC
bGVuZGVkQ29sb3IKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzCisgICAgICAgICAgICAgICBX
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuS1ZPCisgICAgICAgICAgICAgICBXS1dl
YlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcKKworICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpOiBBZGRlZC4KKyAgICAgICAgSG9sZCB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBm
b3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVu
CisgICAgICAgIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBs
ZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAg
YFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGll
bnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFj
a2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOl1gLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIEl0J3Mgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeSB0byBmb3JjZSB0aGUgb3ZlcnNjcm9sbCBhcmVhIHRvIHJlZHJhdyBzaW5jZSB0aGF0
J2xsIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgYSBjbGllbnQgY2FsbGluZyBgLVtXS1dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gIChwb3NzaWJseSBpbiByZXNwb25zZSB0byBh
CisgICAgICAgIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9yXWAgS1ZPIG5vdGlmaWNhdGlvbikuCisK
IDIwMjEtMDUtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlciByYXRoZXIgdGhhbiBJbWFnZURhdGEgaW4gcGxhdGZvcm0vIGNvZGUgdG8g
Zml4IGxheWVyaW5nIHZpb2xhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZjQ1ZDBkOWY4ODJjMzUxMTE4ODFl
NjQ2MDU2ZGMwOGNkOTI0ZDI0Li5kNjU5MmNkZWU4ZGY0OThlZmNjMTNhZWZmZmQyM2RjNDBlYzU2
MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA1LTEwICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NjgwOTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIGB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxs
IHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisgICAgICAgICAtIHRoZSBtb3N0IHJlY2Vu
dCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAgICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5k
LWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJy
ZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yYCkKKyAgICAgICAgIC0g
dGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAg
TW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCB1
bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBydW5sb29wLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpdKTogQWRkZWQuCisgICAgICAgICgrW1dLV2ViVmlldyBhdXRvbWF0aWNhbGx5Tm90aWZp
ZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOiBBZGRlZC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGJhc2VTY3Jv
bGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBg
VXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVu
dHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNr
Z3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6XWAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAgICBTdG9yZSB0aGUgY2xpZW50LW92ZXJy
aWRlbiB2YWx1ZSBmb3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgYW5kIG1hbmFnZSBzdGF0
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6IEFk
ZGVkLgorICAgICAgICBBZGQgT2JqQyBLVk8gc3VwcG9ydCBmb3IgYC1bV0tXZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcik6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgYGJhY2tn
cm91bmRDb2xvcmAgb2YgdGhlIGBXS0NvbnRlbnRWaWV3YC4gVGhpcyBpcyBuZWVkZWQgb24gaU9T
CisgICAgICAgIGJlY2F1c2UgYHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3JgIChub3cgYFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgKQorICAgICAgICB3b3Vs
ZCB1c2UgdGhpcyB2YWx1ZSBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZSB1bmRlcmx5aW5nIHBs
YXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKTogQWRkZWQuCisgICAgICAgIFBhc3MgdGhlIGNsaWVudC1vdmVycmlkZW4gdmFsdWUgZm9y
IGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIHRvIHRoZSBXZWJQcm9jZXNzIHNvIHRoYXQgaXQK
KyAgICAgICAgY2FuIGJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBvdmVyc2Nyb2xsIGxheWVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgR28gYmFj
ayB0byB1c2luZyB0aGUgYHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmAgKGJlZm9yZSByMjcz
MDgzKS4KKwogMjAyMS0wNS0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIFBpeGVsQnVmZmVyIHJhdGhlciB0aGFuIEltYWdlRGF0YSBpbiBwbGF0Zm9ybS8g
Y29kZSB0byBmaXggbGF5ZXJpbmcgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCBi
NTk4YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3Li5mYTFkN2IxMTg2NTg5MjQ3
MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTc2MCwz
MCArNzYwLDYgQEAgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ6CiAgICAgV2Vi
S2l0OgogICAgICAgZGVmYXVsdDogZGVmYXVsdFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCkKIAotVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJVc2Ugc2FtcGxlZCBw
YWdlIHRvcCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiVXNlIHNhbXBsZWQgcGFnZSB0b3AgY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KLVVzZVRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVXNlIHRoZW1lLWNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9y
IgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KICMgRklYTUU6IFJlbW92
ZSBvbmNlIDxyZGFyOi8vNzM4MzA5NjE+IGhhcyBiZWVuIGZpeGVkCiBVc2VpVHVuZXNBVk91dHB1
dENvbnRleHQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNlMTFm
NDllYTdmZjQ5YjBjZjA2YmI3M2VlMDk3MTk2OTk5YzE5N2QuLmI2OTY2ZmM5YjNjODY2M2M2Mjlm
NTYzZjI4OWI4NjZlZDA0YzI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzkwMSwx
MyArMzkwMSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIAogICAgIGlm
IChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOwotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQot
ICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7Ci0gICAgICAgIGlmICh2aWV3LT51
c2VzQ29tcG9zaXRpbmcoKSkKLSAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkUGFnZVNhbXBs
ZUxvY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNGIxZGI0NmUwMzMyYTRkOGU0YWI5ZGU3NTg1Zjk0YmYxZTU5
Y2IyZS4uNmE3ZmM1YjE4ZTRjMTE4ZThmYjU2ZTlmMmRlYzVlNDBjMGJhOWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNTYzLDYgKzI1NjMsMjUgQEAgQ29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VU
b3BDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50LT5zYW1wbGVkUGFnZVRvcENvbG9y
KCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKK3sKKyAgICBpZiAodW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZSA9IFdURk1vdmUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
OworCisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKKworI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKKyAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFt
ZSgpLnZpZXcoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKSkgeworICAgICAgICAgICAgaWYgKHJlbmRlclZpZXctPnVzZXNDb21wb3Np
dGluZygpKQorICAgICAgICAgICAgICAgIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCit9CisKIC8vIFRoZXNlIGFyZSBtYWdp
Y2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGljIGNv
bnN0IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNmRkMDdlMWJhOTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uMzFhNDJhOTcxMWFl
ZGMxODdmNTczMmI3ZDZlMGZkNmQ1ZTQxMGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYyMyw2ICs2
MjMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Igc2FtcGxlZFBh
Z2VUb3BDb2xvcigpIGNvbnN0OwogCisgICAgQ29sb3IgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZShDb2xvciYmKTsKKwogICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQogICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cygpOwpAQCAtMTE1Miw2ICsxMTU1LDggQEAgcHJpdmF0ZToKIAogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCisgICAgQ29s
b3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsKKwogICAgIGNvbnN0IGJvb2wg
bV9odHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9u
R3JvdXBJZGVudGlmaWVyIG1fbWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggZjg3NzQ1NzJiNGI1MmU0YWE3OTFmYzg3YmY4NTJiMDZmY2MyZTIxYy4uZTliZDhhOTkzMThj
MzQ0NjhmMzFiYTdkYThmYjY2MGQ1ZDc4ZjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM5MjMsMTEgKzM5MjMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFz
QmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIW1fbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKHBhZ2Uo
KS5zZXR0aW5ncygpLnVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkp
Ci0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IHBhZ2UoKS50aGVtZUNvbG9yKCk7Ci0gICAgaWYg
KHBhZ2UoKS5zZXR0aW5ncygpLnVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yKCkgJiYgIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGJh
Y2tncm91bmRDb2xvciA9IHBhZ2UoKS5zYW1wbGVkUGFnZVRvcENvbG9yKCk7CisgICAgYXV0byBi
YWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
KTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IG1fcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZjk5YWRiZTYxZDRmZGVi
MDY3Y2FhMjZhMjEwNWI5YWI0NmRkYzFkOC4uYWE5YTY3ZTc2ZmE0MDgxN2VkYzhhNDJhMWM1NGNl
MTdlYzUxNTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcuaApAQCAtNTgwLDYgKzU4MCwyMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIg
a1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNDb2xvciAqdGhlbWVDb2xv
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKICNlbmRpZgogCisvKiEgQGFi
c3RyYWN0IFRoZSBjb2xvciBkcmF3biBiZWhpbmQgdGhlIGFjdGl2ZSBwYWdlLgorIEBkaXNjdXNz
aW9uIEEgY29sb3IgZGVyaXZlZCBmcm9tIHRoZSBjb250ZW50IG9mIHRoZSBhY3RpdmUgcGFnZSwg
c3VjaCBhcyBieSBibGVuZGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorIHRoZSA8aHRtbD4g
YW5kIDxib2R5PiBlbGVtZW50cyB3aXRoIHRoZSBAbGluayBiYWNrZ3JvdW5kQ29sb3IgQC9saW5r
IG9mIHRoaXMgQGxpbmsgV0tXZWJWaWV3IEAvbGluay4gVXNlZCBhcworIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHVuZGVyIHRoZSBwYWdlJ3MgY29udGVudCwgc3VjaCBhcyBmb3Igc2Nyb2xsIGJvdW5j
aW5nIGFyZWFzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKKyBvd25lciBhcHBsaWNhdGlvbiBm
b3IgY3VzdG9tIHN0eWxpbmcgd2l0aG91dCBoYXZpbmcgdG8gbW9kaWZ5IHRoZSBwYWdlJ3Mgc3R5
bGUuCisgdGhlIGJhY2tncm91bmQgb2Ygc2Nyb2xsIGJvdW5jaW5nIGFyZWFzLgorIEBsaW5rIFdL
V2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQgZm9y
IHRoaXMgcHJvcGVydHkuCisgKi8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5v
bmF0b21pYywgbnVsbF9yZXNldHRhYmxlLCBjb3B5KSBVSUNvbG9yICp1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworI2Vsc2UKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsX3Jlc2V0dGFibGUsIGNvcHkpIE5TQ29sb3IgKnVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKyNl
bmRpZgorCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjU4MjQxM2FjYWNlMWQzNTNi
ZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4uZjQxZDNmM2NkY2Y4N2NhODgzOGMxMDhhYTQwOTUzZDUz
MzI5OGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNjc3LDYgKzE2NzcsMjEgQEAgLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IK
ICAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcih0aGVtZUNvbG9yKTsKIH0KIAorLSAo
Q29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBXZWJD
b3JlOjpwbGF0Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSk7Cit9
CisKKy0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKK3sKKyAgICBfcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUu
Q0dDb2xvcik7Cit9CisKKysgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzT2ZV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gTk87Cit9CisKIEBlbmQKIAog
I3ByYWdtYSBtYXJrIC0KQEAgLTMwNDAsMTEgKzMwNTUsMTMgQEAgLSAodm9pZClfc2V0Q2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKICAgICBfcGFn
ZS0+c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwog
fQogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkg
PHJkYXI6Ly83NjY2MjY0ND4KIC0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgogewogICAgIHJl
dHVybiBbc2VsZiB0aGVtZUNvbG9yXTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tX
ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTcz
Mj4KIC0gKENvY29hQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAg
YXV0byBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0NjkyYWMz
NjIxYjkzYmVlY2MwLi43NThkMmM1NzJkZmEwYWJkNjkzOTc0ZWY2MTY4OWY2OWJlZjY2MmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTM4MCwxMCArMzgwLDExIEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfdGhlbWVDb2xvciBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJ0aGVtZUNvbG9yIiwgbWFjb3MoV0tfTUFDX1RCQSwg
V0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUNv
bG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdL
X0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBpb3MoV0tfSU9TX1RCQSwgV0tfSU9TX1RC
QSkpOwogI2Vsc2UKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBtYWNvcygxMC4x
MCwgV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIC8vIE9ubHkgc2V0IGlmIGAtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXWAgaXMgYSBwb3Np
dGl2ZSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCmluZGV4IGUwYWM5ZTlmMjM3NDA5ZGFhZTk4NTZlYmYyZmVjZWEyNWVmNjE3YWIu
LjMyY2Q2N2NmYzlmNzM3ZTI0Y2E5MThkMDE0ODAwZDliMjdhYTgwYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC00OTMsNyArNDkz
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
KFdLV2ViVmlldyAqd2ViVmlldykKICAgICBpZiAoIXdlYlZpZXctPl9wYWdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT5zY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT51bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGM4OGEzZDQyMzM5MzJmZDM1
NDAzYTcwMTczMmFiYTUyZmZkZWE5YjQuLjJhOThlZGUzMjIzNDFkYWJiYmEyZmY0YjcwZjAwZjQ4
YjlkYjYxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwor
Y2xhc3MgQ29sb3I7CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQ7CiB9CkBAIC01Myw2ICs1NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGhlbWVDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKICAgICB2
b2lkIHRoZW1lQ29sb3JEaWRDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvckRpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVkUGFnZVRvcENvbG9yV2ls
bENoYW5nZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZGRiNDFlYjRiNTY3ZTI3NTI3ZTg3YjVkOWI2
YTQxMGExNjQ2OTc3NC4uZDg1YTZlODk4ZTY0NWI3MjYxMjNhNmVjM2Y3NTI2Y2RiYWRhMDk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC00NywyMiArNDcsMzggQEAgUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VD
bGllbnRJbXBsQ29jb2EoKSA9IGRlZmF1bHQ7CiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnRo
ZW1lQ29sb3JXaWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZv
cktleTpAInRoZW1lQ29sb3IiXTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3RoZW1lQ29sb3IiXTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjp0aGVtZUNvbG9yRGlkQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IGRp
ZENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVDb2xvciJdOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAg
ICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAIl90aGVtZUNvbG9yIl07CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENo
YW5nZSgpCit7CisgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQoreworICAgIFttX3dlYlZpZXcgZGlkQ2hh
bmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwogdm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdl
KCkKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciJdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ckRpZENoYW5nZSgpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICAgICBb
bV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvciJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNDE3ZTEx
ZDQ5NjYwN2EzMDBjZmI2NWZlZDZjN2Y0Y2FjZTBjOTI2ZC4uYmE2MDkzMGM1NTA5MDk4ZDY3ZGZi
MDdlMTZlNWU5ZWI3YTY1NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtNDkwLDYgKzQ5MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpID0gMDsKICNlbmRpZgorCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpID0g
MDsKICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpAQCAtNTE0LDYg
KzUxNiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5n
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yRGlkQ2hhbmdlKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5k
ZXggNDhkOTQ2MzI3NTg0OWMwMmMyNjMwYzQ5YjQ5MWQ1MGY2NzEzNjMwZi4uMjMzMTkyYThmMTQx
MWU5NTY5YzkwYTE4MDA4NGI4MTNhN2IwZDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFZpZXdTbmFw
c2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2Vi
QmFja0ZvcndhcgogCiAgICAgc25hcHNob3QtPnNldFJlbmRlclRyZWVTaXplKHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKTsKICAgICBzbmFwc2hvdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
d2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHNuYXBzaG90LT5zZXRCYWNr
Z3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSk7Cisg
ICAgc25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKCkpOwogICAgIHNuYXBzaG90LT5zZXRWaWV3U2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KHdlYlBhZ2VQcm94eS52aWV3U2Nyb2xsUG9zaXRpb24o
KSkpOwogCiAgICAgaXRlbS5zZXRTbmFwc2hvdChXVEZNb3ZlKHNuYXBzaG90KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhk
NjRhMWRkZDc3ZDJmODA3YTA2MjdhLi5hM2I1NTQxZmE5NjE0ODBiN2QxMjgxYTFhODVhYjA1OWI4
MjIwMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE5
MTMsMTUgKzE5MTMsNTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRl
cmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBXZWJQYWdlUHJveHk6OnVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV90aGVtZUNvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIG1fdGhlbWVDb2xvcjsKKyAgICBpZiAobV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwogCi0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV9zYW1w
bGVkUGFnZVRvcENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2FtcGxlZFBhZ2VU
b3BDb2xvcjsKKyAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgcmV0dXJuIHBsYXRmb3Jt
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShDb2xvciYmIG5ld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIGlmIChuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSA9PSBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpOworICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUgPSBzdGQ6OmV4Y2hhbmdlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUsIG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKTsKKyAgICBib29sIGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSAhZXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3Iob2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdURk1vdmUob2xk
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgaWYgKGNoYW5nZXNVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7CisKKyAgICBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlID0gV1RGTW92ZShuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7
CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFn
ZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOworCisgICAgaWYg
KG1faGFzUGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoID0gdHJ1ZTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faGFzUGVu
ZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2hhc1BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZVRvRGlzcGF0Y2ggPSBmYWxzZTsKKworICAgICAgICBpZiAoaGFzUnVubmluZ1By
b2Nlc3MoKSkKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJp
ZGUpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZl
UmVzaXplKCkKQEAgLTg1NDcsMTMgKzg1ODQsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRoZW1l
Q29sb3JDaGFuZ2VkKGNvbnN0IENvbG9yJiB0aGVtZUNvbG9yKQogICAgIHBhZ2VDbGllbnQoKS50
aGVtZUNvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoY29uc3QgQ29sb3ImIHBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoY29uc3QgQ29sb3ImIG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikK
IHsKLSAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPT0gcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKQorICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9
PSBuZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yKCk7CisgICAgYXV0byBvbGRQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBzdGQ6OmV4
Y2hhbmdlKG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLCBuZXdQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IpOworICAgIGJvb2wgY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9
ICFlcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcihvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Is
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvciA9IFdURk1vdmUob2xkUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKworICAg
IGlmIChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50
KCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSgpOwogICAgIHBhZ2VDbGllbnQo
KS5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7Ci0gICAgbV9wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAg
ICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcjsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAg
ICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAg
ICAgcGFnZUNsaWVudCgpLnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOwog
fQogCkBAIC04NTY3LDYgKzg2MTUsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhbXBsZWRQYWdl
VG9wQ29sb3JDaGFuZ2VkKGNvbnN0IENvbG9yJiBzYW1wbGVkUGFnZVRvcENvbG9yKQogICAgIHBh
Z2VDbGllbnQoKS5zYW1wbGVkUGFnZVRvcENvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCisKK0NvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
azsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA1YjQ1N2RmYjYwMzFlZjYzOWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAy
Li5iNjMxNjY5Zjg3Y2E1ZWM2YjAyNTZiMmIzOWE0NzcxNDA2Mzc3YTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjY5LDcgKzY2OSw5IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OkNvbG9yIHNhbXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3NhbXBsZWRQYWdlVG9wQ29sb3I7IH0KIAotICAgIFdlYkNvcmU6OkNvbG9yIHNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKFdlYkNvcmU6OkNvbG9yJiYpOwogCiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6
ZSgpOwogICAgIHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CkBAIC0yMTA1LDYgKzIxMDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKICAgICB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICBXZWJDb3JlOjpDb2xvciBwbGF0Zm9ybVVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBh
Z2VVUkxTdHJpbmcpOwogICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9v
bCByZXBsYWNlbWVudE9ic2N1cmVkKTsKQEAgLTI2NTAsMTAgKzI2NTMsMTMgQEAgcHJpdmF0ZToK
ICAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0aW5nTW9kZSB7IExheWVySG9zdGluZ01v
ZGU6OkluUHJvY2VzcyB9OwogCiAgICAgV2ViQ29yZTo6Q29sb3IgbV90aGVtZUNvbG9yOworICAg
IFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fc2FtcGxlZFBh
Z2VUb3BDb2xvcjsKIAorICAgIGJvb2wgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoIHsgZmFsc2UgfTsKKwogICAgIGJvb2wgbV91c2VGaXhlZExh
eW91dCB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAz
ZmJlMWIxN2ZmNjYwNDQ5ZTk5M2VmN2U4YWZjMGJhMDAyNGZkODdhLi4zOWQzNzE3YTYzZDJhZDY2
NDZiZDAzMmFiNDYxNmQ2MGVjZWJhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVBc3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxW
aWV3ICosIFVJU2Nyb2xsRXZlbnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkp
IGZpbmFsOwogI2VuZGlmCiAKKyAgICBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcigpIGZpbmFsOworCiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250
ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCmluZGV4IDQwYjc2MjM2MzlmZmFkNDFiNDQyNDY4ZWIyZTE4MWFhMzRmMDE2NTMuLjdiOGI3
N2NlODRmMTQ1ZTE5ZDYxZTE4NThiZmJkNWVkZDliZmE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTEwMDUsNiArMTAwNSwx
MSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYQogICAgIFttX2NvbnRlbnRWaWV3IHJ1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZzpXVEZNb3ZlKGNhbGxiYWNrKV07CiB9CiAKK1dlYkNvcmU6OkNvbG9y
IFBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpCit7CisgICAgcmV0
dXJuIFttX2NvbnRlbnRWaWV3IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNzdjODA2
ZDQyYTFjMTRiZmMyMDA1ODJmYzhlY2Y3MzY2YzNiODA1ZC4uMzJiMGYyOGE1NmY2ZTc1ZWViZjU4
ZTc1NTk1NjM2Y2RjNjE4MTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNTY0LDYgKzE1NjQsMTcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW4KICAgICBwYWdlQ2xpZW50KCkuc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9u
SW5mb3JtYXRpb24ocG9zaXRpb25JbmZvKTsKIH0KIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0
Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gY29u
dGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBwYWdlQ2xpZW50KCkuY29udGVudFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoKTsgY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm4gY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3I7CisKKyNpZiBIQVZFKE9TX0RBUktf
TU9ERV9TVVBQT1JUKQorICAgIHJldHVybiBVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5D
R0NvbG9yOworI2Vsc2UKKyAgICByZXR1cm4gVUlDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7Cisj
ZW5kaWYKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDY4YjA1ODhkN2E0NmRhNmMwNzI1
YmQyZGM5ZjcxYTA4YWJmYmU4ZGYuLjdjMDJhZThhMGQ0ZWQzODkzYmEzYjIwNzVkMDJmYWRjYWY5
OGQ2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNzEwLDYgKzcxMCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlVW5pdmVy
c2FsQWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZQogfQogI2Vu
ZGlmCiAKK0NvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAoreworI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHJldHVybiBOU0Nv
bG9yLmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcjsKKyNlbHNlCisgICAgcmV0dXJuIE5T
Q29sb3Iud2hpdGVDb2xvci5DR0NvbG9yOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ODY0NmZlNGI5N2ExMmJhNWVjZGEwZWNjN2U1
MmExMzNiMGZjNDQ4Li4yNDM1YjEzYWI2ODRiYWQwMDYxZGIyMmM4Y2Y5MDJlNTMwOGNiMzNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQ0
OCw2ICsyNDQ4LDExIEBAIHZvaWQgV2ViUGFnZTo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0CiAgICAgaW5qZWN0ZWRCdW5k
bGUtPmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNz
LnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShXZWJD
b3JlOjpDb2xvciYmIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIG1f
cGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV1RGTW92ZSh1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIHZvaWQgV2ViUGFnZTo6c2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKiBwYWdl
QmFubmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGVlNDQ3M2FkYzRiOTgwZTBkYjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLjE0ZjFmOWUwMjg4YjMz
OGIxZDNjYjVkZTllZmNhMzczYjM4MDBmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYwNyw2ICs2MDcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IGNvbnN0IFVzZXJEYXRhJik7CiAKKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yJiYpOworCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsg
fQogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Vu
ZGVybGF5Q29sb3I7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTM3YTY1OWM5MWIzODkyZTJiOGY5MzhjNjI2
Y2RjZmU4OWU0MTkwNC4uM2I3ZjcwNDEwMDU5ZDBhYjhlMjA1ZDJiNGJhZTBkYWRmMDAzYTZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0zOSw2ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAKICAg
ICBTZXRVbmRlcmxheUNvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIFNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKQogCiAgICAgVmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgIFZp
ZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmU4MDhmZWUzNDZmODY3NzdiMjI2NjljMDViZTZlZDk0YjQwNzZl
ZS4uZTkzMGI1YWExOWM0OWNkYjJjYWJhZWQwZmIwOTEwYmYwMDMwM2MzMyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisy
MDIxLTA1LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQ
cm9tb3RlIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRv
IGAtW1dLV2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzY1NjgwOTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVo
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW06IFJlbmFtZWQgZnJvbSBQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IubW0uCisgICAgICAgIChkZWZhdWx0QmFja2dyb3VuZENvbG9yKTogQWRkZWQu
CisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5PbkxvYWQp
OgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xl
U29saWRDb2xvcik6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IuU2luZ2xlQmxlbmRlZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzKTogQWRk
ZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0
aXBsZUJsZW5kZWRDb2xvcnMpOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQWRkZWQuCisgICAgICAg
IChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5LVk8pOgorICAgICAgICAo
VEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcp
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
Lk11bHRpcGxlU3R5bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVk
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFn
ZVRvcENvbG9yLm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld1dpdGhTYW1wbGVkUGFnZVRvcENv
bG9yTWF4RGlmZmVyZW5jZSk6CisgICAgICAgIChURVNULlNhbXBsZWRQYWdlVG9wQ29sb3IuRXhw
ZXJpbWVudGFsVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tXZWJWaWV3VGhlbWVDb2xvci5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXcpOiBEZWxldGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXcuRXhwZXJpbWVudGFsVXNlVGhlbWVDb2xvckZvclNj
cm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhlIGV4
cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0
CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2Vi
VmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
NS0xMCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcmVmbGlnaHQgcmVxdWVzdHMgbm90IHByb3Blcmx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5k
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRj
Y2MyOWU3M2MzYjMuLjBiYWVlZGU5N2E4ZjkyMmE3YjkxN2JiNTNhNDBmZDc4MmY2YmQyYWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzEsNyArODcxLDcgQEAKIAkJOTUwOTVGMjAyNjJG
RkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyog
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTNGQ0RCMzQyNjM2MzE1NjAwNDZERDdE
IC8qIFNvcnRlZEFycmF5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5j
cHAgKi87IH07CiAJCTk1MEU0Q0MxMjUyRTc1MjQwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRTRD
QzAyNTJFNzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi87IH07Ci0JCTk1M0FC
QjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNBQkIzNDI1QzBE
NjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovOyB9OworCQk5
NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUz
QUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1l
Q29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsK
IAkJOTVCNkIzQjcyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUI2QjNCNjI1MUVCRjJGMDBG
QzQzODIgLyogTWVkaWFEb2N1bWVudC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQx
OThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdU
ZXh0SW5wdXQubW0gKi87IH07CkBAIC0yNTY4LDcgKzI1NjgsNyBAQAogCQk5NTA5NUYxRjI2MkZG
RkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJh
eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJh
eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1MjMw
MDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gaU9TU3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmll
d1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUI2QjNCNjI1MUVCRjJGMDBGQzQz
ODIgLyogTWVkaWFEb2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1lZGlhRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDgyLDcgKzM0ODIsNiBAQAogCQkJCTM3QTIy
QUE1MURDQUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0
ZXJDcmFzaC5tbSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENs
b3NlV2luZG93Lm1tICovLAogCQkJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzLm1tICovLAotCQkJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAv
KiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8sCiAJCQkJMkQzQ0EzQTQyMjFERjIz
OTAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tICovLAogCQkJCTUxMjQyQ0RBMjM3Qjc5
MUUwMEVFRDlDMSAvKiBQYWdlWm9vbS5tbSAqLywKIAkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3
OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLywKQEAgLTM2MjYsNiArMzYyNSw3IEBA
CiAJCQkJQ0Q3Rjg5REIyMkE4NkNEQTAwRDY4M0FFIC8qIFdLV2ViVmlld1N1c3BlbmRBbGxNZWRp
YVBsYXliYWNrLm1tICovLAogCQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZp
ZXdUZXh0SW5wdXQubW0gKi8sCiAJCQkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2Vi
Vmlld1RoZW1lQ29sb3IubW0gKi8sCisJCQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0g
IldlYktpdCBDb2NvYSI7CiAJCQlwYXRoID0gV2ViS2l0Q29jb2E7CkBAIC01NTc4LDcgKzU1Nzgs
NiBAQAogCQkJCTBGMzQwNzc2MjMwMzdGREMwMDYwQTFBMCAvKiBPdmVyZmxvd1Njcm9sbFZpZXdU
ZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBP
dmVycmlkZUFwcGxlTGFuZ3VhZ2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJE
QTI1ODZGMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMw
MENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQx
MUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODYwLDYgKzU4NTksNyBAQAogCQkJ
CUNEN0Y4OURDMjJBODZDREEwMEQ2ODNBRSAvKiBXS1dlYlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5
YmFjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBX
S1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NUE1MjQ5NTI1ODFBMTBE
MDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1
M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzc0QzhGQTIyREZCQTk2MDBEQTJEQUIgLyogV1RG
U3RyaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMxNEQzMDQ2MjRCNEMzQkEw
MDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3
NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NTMyZjQ1YWMwOGE0ZTExOGQ5YzQxYWFjZWQ3NWNhMTEwNzgyMDAz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLQotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgotI2ltcG9ydCAiVGVzdENvY29h
LmgiCi0jaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi0jZGVmaW5lIEVYUEVDVF9O
U1NUUklOR19FUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsgXAotICAgIEVYUEVDVF9XS19TVFJFUShl
eHBlY3RlZCwgKE5TU3RyaW5nICopYWN0dWFsKTsKLQotY29uc3RleHByIENHRmxvYXQgd2hpdGVD
b2xvckNvbXBvbmVudHNbNF0gPSB7IDEsIDEsIDEsIDEgfTsKLWNvbnN0ZXhwciBDR0Zsb2F0IHJl
ZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9OwotY29uc3RleHByIENHRmxvYXQg
Ymx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwgMSB9OwotCi1URVNUKFBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvciwgT25Mb2FkKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7
Ci0gICAgYXV0byB3aGl0ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNw
YWNlLmdldCgpLCB3aGl0ZUNvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBh
ZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9u
ZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBFWFBF
Q1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRp
YXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJl
ZDsgfSA8L3N0eWxlPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSkpOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IG5vdC1i
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgd2hpdGVDb2xvci5nZXQoKSkpOwotfQotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvciwgTXVsdGlwbGVTdHlsZXMpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
LSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFj
ZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcl0pOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9k
eSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmx1
ZTsgfSA8L3N0eWxlPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3Iu
Z2V0KCkpKTsKLX0KLQotQGludGVyZmFjZSBXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciA6IE5TT2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tXZWJWaWV3ICp3ZWJWaWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICpzdGF0ZTsKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7
Ci0KLSAgICBfd2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNl
bGYgZm9yS2V5UGF0aDpAIl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNL
ZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwotCi0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2Ug
Y29udGV4dDoodm9pZCAqKWNvbnRleHQKLXsKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJiZWZvcmUtaW5pdCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJiZWZvcmUtbG9hZCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbG9hZCI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJi
ZWZvcmUtY3NzLWNsYXNzLWFkZGVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3Mt
Y2xhc3MtYWRkZWQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUg
aXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKLSAgICAgICAg
X3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNz
LXJlbW92ZWQiXSkgewotICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVk
IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLUBlbmQKLQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIEtW
TykKLXsKLSAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFk
b3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBv
bmVudHMpKTsKLSAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9y
Q29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAg
ICBhdXRvIHRoZW1lQ29sb3JPYnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcu
Z2V0KCldKTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWluaXQiLCBbdGhlbWVDb2xv
ck9ic2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JdKTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6
QCJiZWZvcmUtbG9hZCJdOwotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
Z0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHku
cmVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQtY29s
b3I6IGJsdWU7IH0gPC9zdHlsZT4iXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxv
YWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0
YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1hZGRlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07Ci0g
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9O
U1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLWFkZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBz
dGF0ZV0pOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQot
ICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5n
ZWQiXTsKLSAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgPSAnYmx1ZSciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xh
c3MtY2hhbmdlZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZl
ciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOwotICAgIFt3ZWJWaWV3IG9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcn
Il07Ci0gICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVY
UEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdGhlbWVDb2xvck9i
c2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdl
dCgpKSk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KaW5kZXggN2YyNzIxYjY1YzA3MDIyMTM5
NDI1OWQ2YjA3YWE2MmJlOTNjNzIyMS4uOGIzZjExOGNkYzM4Mzk5Yjc2YzliZDIyMmJmNDI4ZjU4
NTg4MTQ2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQpAQCAtODEsMjAgKzgxLDEyIEBAIC0g
KHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0
OihpZClvYmplY3QgY2hhbmdlOihOCiAKIEBlbmQKIAotZW51bSBjbGFzcyBVc2VTYW1wbGVkUGFn
ZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07
Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxl
ZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhE
aWZmZXJlbmNlLCBkb3VibGUgc2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDAsIFVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVNhbXBsZWRQ
YWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gVXNlU2FtcGxlZFBhZ2VU
b3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKQorc3RhdGljIFJldGFpblB0
cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhE
aWZmZXJlbmNlKGRvdWJsZSBzYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91Ymxl
IHNhbXBsZWRQYWdlVG9wQ29sb3JNaW5IZWlnaHQgPSAwKQogewogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgW2NvbmZpZ3VyYXRpb24gX3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlOnNh
bXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0
U2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodDpzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0
XTsKIAotICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJl
ZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKLSAgICAgICAgaWYgKFtmZWF0dXJl
LmtleSBpc0VxdWFsVG9TdHJpbmc6QCJVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvciJdKSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOih1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvciA9PSBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvcjo6WWVzKSBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogfQogCkBAIC0zNTgsMzQg
KzM1MCwzIEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgRElTQUJMRURfRGlzcGxheVAzKQog
ICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAxLjAwLCAxLjAxKTsKICAgICBFWFBF
Q1RfRVEoY29tcG9uZW50c1szXSwgMSk7CiB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
Ci0vLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRo
ZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KLQotVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBFeHBl
cmltZW50YWxVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
cikKLXsKLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNr
Z3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZm
ZXJlbmNlKDUsIDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAg
IFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJh
bWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJy
ZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVt
ZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0p
OwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3Iu
Q0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxlZFBh
Z2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JT
dG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdl
YkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6
OnJlZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1l
Q29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRD
b2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIGF1dG8gd2ViVmll
d1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZp
ZXdXaXRoU2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBh
Z2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNU
X05VTEwoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Ig
X3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdh
aXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0
aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBF
Q1RfTlVMTChbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
ciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihb
d2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxW
aWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0K
LSAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0
aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1M
R3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7
Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwg
V2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJW
aWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXdd
LmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci19Ci0KLSNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCmluZGV4
IGI1N2VkYTcxODM0NTkwMTUwZjg3NTk0YWFkNDE2MDIwZWZkMzQzZTkuLjNkYmQ4NjMwMTVhYzJj
ZjRlNzE0MDUwZDc1ZDBjOWMyNTliNmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAg
LTMyMSw1MiArMzIxLDMgQEAgVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE92
ZXJyaWRlc0FwcGxpY2F0aW9uTWFuaWZlc3QpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdz
IG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJl
YSBvbiBtYWNPUy4KLQotZW51bSBjbGFzcyBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IGNyZWF0ZVdlYlZpZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IgdXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGlu
IFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0gICAgICAgIGlmIChb
ZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3IiXSkgewotICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0RW5hYmxlZDoodXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IgPT0gVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9y
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKLX0KLQotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBFeHBl
cmltZW50YWxVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAg
ICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29s
b3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAg
IGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdl
dCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX1RS
VUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IHRoZW1lQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRp
bEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1j
b2xvcjogYmx1ZSc+Il07Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1Rf
VFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9y
LCBibHVlQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdh
aXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1j
b2xvcicgY29udGVudD0ncmVkJz48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+
Il07Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhvdXRU
aGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXS5DR0NvbG9y
LCByZWRDb2xvci5nZXQoKSkpOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Ny
b2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0g
ICAgYXV0byB3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
ID0gY3JlYXRlV2ViVmlldyhVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
cjo6WWVzKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZp
ZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0p
OwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENv
bG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9
J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBz
Y3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZmE3NWNhMzQ5NjFmNzNm
OTdlNzk4ZTZmZjVmNWY1NjMyNTNmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ci5tbQpAQCAtMCwwICsxLDMxOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaW1wb3J0ICJDb2NvYUNvbG9yLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKyNkZWZpbmUgRVhQRUNUX0lOX1JBTkdFKGFj
dHVhbCwgbWluLCBtYXgpIFwKKyAgICBFWFBFQ1RfR0UoYWN0dWFsLCBtaW4pOyBcCisgICAgRVhQ
RUNUX0xFKGFjdHVhbCwgbWF4KTsKKworI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0
ZWQsIGFjdHVhbCkgXAorICAgIEVYUEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7IFwKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmlu
ZyAqKWFjdHVhbCk7CisKK3N0YXRpYyBSZXRhaW5QdHI8Q29jb2FDb2xvcj4gZGVmYXVsdEJhY2tn
cm91bmRDb2xvcihUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3KQoreworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgaWYgKFdLQ29udGVudFZpZXcgKmNvbnRlbnRWaWV3ID0gd2ViVmlldy53a0Nv
bnRlbnRWaWV3KQorICAgICAgICByZXR1cm4gY29udGVudFZpZXcuYmFja2dyb3VuZENvbG9yOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0od2ViVmlldyk7CisjZW5kaWYKKworI2lmIEhBVkUoT1Nf
REFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gTlNDb2xvci5j
b250cm9sQmFja2dyb3VuZENvbG9yOworI2VsaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkg
JiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gVUlDb2xvci5zeXN0ZW1CYWNrZ3Jv
dW5kQ29sb3I7CisjZWxzZQorICAgIHJldHVybiBbQ29jb2FDb2xvciB3aGl0ZUNvbG9yXTsKKyNl
bmRpZgorfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgT25Mb2Fk
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgQUxXQVlTX0xP
R19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW2Rl
ZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dD
b2xvcl0pKTsKK30KKworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIFNp
bmdsZVNvbGlkQ29sb3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsK
KyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJD
b3JlOjpDb2xvcihbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9y
XSkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJW
aWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHls
ZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOworICAgIEFMV0FZ
U19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9y
KFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Is
IFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yLCBTaW5nbGVCbGVuZGVkQ29sb3IpCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0
cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihbZGVmYXVsdEJhY2tncm91bmRD
b2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBb
ZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRp
YXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJn
YmEoMjU1LCAwLCAwLCAwLjUpOyB9IDwvc3R5bGU+Il07CisgICAgQUxXQVlTX0xPR19XSVRIX1NU
UkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yKSk7CisgICAgYXV0byBjb21wb25lbnRzID0gQ0dDb2xvckdldENvbXBv
bmVudHMoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKTsKKyAgICBF
WFBFQ1RfRVEoY29tcG9uZW50c1swXSwgMSk7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVu
dHNbMV0sIDAuNDUsIDAuNTUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAw
LjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1szXSwgMSk7Cit9CisKK1RFU1Qo
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBNdWx0aXBsZVNvbGlkQ29sb3JzKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgQUxXQVlTX0xPR19X
SVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW2RlZmF1
bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBFWFBFQ1Rf
VFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xv
cl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRV
bnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGh0bWwgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBibHVlOyB9IGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHls
ZT4iXTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xv
cihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8
PCBXZWJDb3JlOjpDb2xvcihbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworfQorCitU
RVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgTXVsdGlwbGVCbGVuZGVkQ29s
b3JzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgQUxXQVlT
X0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3Io
W2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkg
Q0dDb2xvcl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0Fu
ZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGh0bWwgeyBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMCwgMCwgMC41KTsgfSBib2R5IHsgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuNSk7IH0gPC9zdHlsZT4iXTsKKyAgICBhdXRvIGNv
bXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzBdLCAw
LjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1sxXSwgMC4yLCAwLjI1
KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1syXSwgMC43LCAwLjc1KTsKKyAgICBF
WFBFQ1RfRVEoY29tcG9uZW50c1szXSwgMSk7Cit9CisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OworCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2ViVmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU1N0cmluZyAqc3RhdGU7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyCisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9zdGF0ZSA9IEAi
YmVmb3JlLWluaXQiOworCisgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIFtfd2ViVmlldyBh
ZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOworCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNT
dHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkg
KiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAgICBpZiAoW19zdGF0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJiZWZvcmUtaW5pdCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXIt
aW5pdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFs
VG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWFkZGVkIl0pIHsKKyAgICAgICAgX3N0YXRlID0g
QCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0p
IHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZv
cmUtY3NzLWNsYXNzLXJlbW92ZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1j
bGFzcy1yZW1vdmVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRl
IGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1ub25udWxsLW92ZXJyaWRlIl0pIHsKKyAgICAgICAg
X3N0YXRlID0gQCJhZnRlci1ub25udWxsLW92ZXJyaWRlIjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1udWxsLW92ZXJy
aWRlIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1udWxsLW92ZXJyaWRlIjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEVYUEVDVF9OU1NUUklOR19FUSgibm90LXJlYWNoZWQi
LCBfc3RhdGUpOworfQorCitAZW5kCisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yLCBLVk8pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAg
ICBhdXRvIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyID0gYWRvcHROUyhbW1dLV2Vi
Vmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldy5nZXQoKV0pOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItaW5pdCIs
IFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19M
T0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtk
ZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENH
Q29sb3JdKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3Rh
dGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5
bGU+IGJvZHkucmVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7IH0gPC9zdHlsZT4iXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEo
InNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0
YXRlXSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIg
PDwgV2ViQ29yZTo6Q29sb3IoW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkg
Q0dDb2xvcl0pKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29s
b3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXTsKKyAgICBb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFz
c05hbWUgPSAncmVkJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1hZGRlZCIsIFt1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0df
V0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtDb2Nv
YUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFs
VG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2Nv
YUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3
IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciByZWRDb2xvcl1dOworICAg
IEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0
cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihbQ29jb2FDb2xvciByZWRDb2xv
cl0uQ0dDb2xvcikpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciByZWRDb2xv
cl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNl
dFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3Qt
Y2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAg
QUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6
Q29sb3IoW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dD
b2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKworICAgIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtY2hhbmdl
ZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5ib2R5LmNsYXNzTmFtZSA9ICdibHVlJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFz
cy1jaGFuZ2VkIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7Cisg
ICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29y
ZTo6Q29sb3IoW0NvY29hQ29sb3IgYmx1ZUNvbG9yXS5DR0NvbG9yKSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IsIFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2Ui
XTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3Ig
Ymx1ZUNvbG9yXV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIs
IFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19M
T0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtD
b2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBb
Q29jb2FDb2xvciBibHVlQ29sb3JdLkNHQ29sb3IpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dl
YlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOm5pbF07CisgICAgRVhQRUNUX05TU1RS
SU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNv
cmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwg
IiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtDb2NvYUNvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcikp
OworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FDb2xvciBibHVlQ29sb3JdLkNHQ29sb3Ip
KTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJl
Zm9yZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19F
USgiYWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2Jz
ZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJD
b3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8
ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3
LmdldCgpKSBDR0NvbG9yXSkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tn
cm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAg
ICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6ZGVmYXVsdEJhY2tncm91bmRD
b2xvcih3ZWJWaWV3LmdldCgpKS5nZXQoKV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91
bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0p
OworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdl
YkNvcmU6OkNvbG9yKFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29s
b3JdKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdl
YlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNl
dFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
c2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3Rh
dGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xv
cihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8
PCBXZWJDb3JlOjpDb2xvcihbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBD
R0NvbG9yXSkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xv
cih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLW5vbm51bGwtb3ZlcnJpZGUiXTsKKyAgICBb
d2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgcmVkQ29sb3Jd
XTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiLCBbdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJ
VEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihbQ29jb2FD
b2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRv
Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbQ29jb2FD
b2xvciByZWRDb2xvcl0uQ0dDb2xvcikpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBz
ZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgcmVkQ29sb3JdXTsKKyAgICBF
WFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJl
YW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW0NvY29hQ29sb3IgcmVkQ29sb3Jd
LkNHQ29sb3IpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3Jd
LkNHQ29sb3IpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRT
dGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ3JlZCciXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RS
SU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNv
cmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwg
IiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7
CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91
bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdibHVlJyJdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNo
b3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwg
V2ViQ29yZTo6Q29sb3IoW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKworICAgIFt1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hh
bmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LmJvZHkuY2xhc3NOYW1lID0gJyciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNl
bnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5n
ZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZ
U19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9y
KFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Is
IFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbnVsbC1vdmVycmlkZSJdOworICAg
IFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9O
U1NUUklOR19FUSgiYWZ0ZXItbnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8
IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xv
cikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdl
YlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0
QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7Cit9CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisvLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KKworVEVTVChXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE1hdGNoZXNTY3JvbGxWaWV3KQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVB
TShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW2RlZmF1bHRCYWNrZ3Jv
dW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBFWFBFQ1RfVFJVRShDR0Nv
bG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xv
ciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAg
ICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmll
dyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcikpOworICAgIEVYUEVDVF9OVUxM
KFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvcik7CisKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZy
YW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5
bGU+Il07CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIg
PDwgV2ViQ29yZTo6Q29sb3IoW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBB
TFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyBz
Y3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6
OkNvbG9yKFtDb2NvYUNvbG9yIHJlZENvbG9yXS5DR0NvbG9yKSk7CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3Iu
Q0dDb2xvciwgW0NvY29hQ29sb3IgcmVkQ29sb3JdLkNHQ29sb3IpKTsKKworICAgIFt3ZWJWaWV3
IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBibHVlQ29sb3JdXTsKKyAg
ICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3Jl
OjpDb2xvcihbQ29jb2FDb2xvciBibHVlQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW0NvY29hQ29sb3IgYmx1ZUNvbG9yXS5DR0NvbG9yKSk7CisgICAgQUxXQVlTX0xP
R19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgc2Nyb2xsVmll
d10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihb
Q29jb2FDb2xvciBibHVlQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9y
LCBbQ29jb2FDb2xvciBibHVlQ29sb3JdLkNHQ29sb3IpKTsKK30KKworI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428326</attachid>
            <date>2021-05-11 16:19:23 -0700</date>
            <delta_ts>2021-05-11 20:46:31 -0700</delta_ts>
            <desc>[Patch] logging for EWS</desc>
            <filename>bug-225615-20210511171922.patch</filename>
            <type>text/plain</type>
            <size>78753</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmI5MGEyOWZhMDBmNjljZGZkYjM0OGMxNDA1NzA3MTQ5NTAzZGQyNi4uNGFiYzcyMzcw
OTdmM2U1Y2E2NWQ4MmVhY2EzNjE0MWY0ZjZkZThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgYFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVJgIHNob3VsZCBwcmludCB0
aGUgUElEIGJlZm9yZSBzbGVlcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2MzZlYTQ3ZTAyNDJmOWJlMTcx
MTIwNzkxYjZhMWQ3MTg5NjUxM2YuLmMxMTJlMzYwOTFiNWQwYmNkNDI5MjMyNTFkOTk3MTcyYzcy
NzIyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBgLVtXS1dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBgLVtXS1dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTY4MDk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRoYXQg
d2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9zdCBy
ZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFja2dy
b3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0aGUg
Y3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAgICAg
ICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisgICAg
ICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBlZmZl
Y3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAgICBU
ZXN0czogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZAorICAgICAgICAg
ICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IK
KyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVC
bGVuZGVkQ29sb3IKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzCisgICAgICAgICAgICAgICBX
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuS1ZPCisgICAgICAgICAgICAgICBXS1dl
YlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcKKworICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpOiBBZGRlZC4KKyAgICAgICAgSG9sZCB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBm
b3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVu
CisgICAgICAgIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBs
ZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAg
YFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGll
bnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFj
a2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOl1gLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIEl0J3Mgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeSB0byBmb3JjZSB0aGUgb3ZlcnNjcm9sbCBhcmVhIHRvIHJlZHJhdyBzaW5jZSB0aGF0
J2xsIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgYSBjbGllbnQgY2FsbGluZyBgLVtXS1dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gIChwb3NzaWJseSBpbiByZXNwb25zZSB0byBh
CisgICAgICAgIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9yXWAgS1ZPIG5vdGlmaWNhdGlvbikuCisK
IDIwMjEtMDUtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlciByYXRoZXIgdGhhbiBJbWFnZURhdGEgaW4gcGxhdGZvcm0vIGNvZGUgdG8g
Zml4IGxheWVyaW5nIHZpb2xhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZjQ1ZDBkOWY4ODJjMzUxMTE4ODFl
NjQ2MDU2ZGMwOGNkOTI0ZDI0Li5kNjU5MmNkZWU4ZGY0OThlZmNjMTNhZWZmZmQyM2RjNDBlYzU2
MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA1LTEwICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NjgwOTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIGB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxs
IHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisgICAgICAgICAtIHRoZSBtb3N0IHJlY2Vu
dCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAgICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5k
LWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJy
ZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yYCkKKyAgICAgICAgIC0g
dGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAg
TW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCB1
bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBydW5sb29wLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpdKTogQWRkZWQuCisgICAgICAgICgrW1dLV2ViVmlldyBhdXRvbWF0aWNhbGx5Tm90aWZp
ZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOiBBZGRlZC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGJhc2VTY3Jv
bGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBg
VXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVu
dHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNr
Z3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6XWAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAgICBTdG9yZSB0aGUgY2xpZW50LW92ZXJy
aWRlbiB2YWx1ZSBmb3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgYW5kIG1hbmFnZSBzdGF0
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6IEFk
ZGVkLgorICAgICAgICBBZGQgT2JqQyBLVk8gc3VwcG9ydCBmb3IgYC1bV0tXZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcik6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgYGJhY2tn
cm91bmRDb2xvcmAgb2YgdGhlIGBXS0NvbnRlbnRWaWV3YC4gVGhpcyBpcyBuZWVkZWQgb24gaU9T
CisgICAgICAgIGJlY2F1c2UgYHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3JgIChub3cgYFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgKQorICAgICAgICB3b3Vs
ZCB1c2UgdGhpcyB2YWx1ZSBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZSB1bmRlcmx5aW5nIHBs
YXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKTogQWRkZWQuCisgICAgICAgIFBhc3MgdGhlIGNsaWVudC1vdmVycmlkZW4gdmFsdWUgZm9y
IGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIHRvIHRoZSBXZWJQcm9jZXNzIHNvIHRoYXQgaXQK
KyAgICAgICAgY2FuIGJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBvdmVyc2Nyb2xsIGxheWVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgR28gYmFj
ayB0byB1c2luZyB0aGUgYHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmAgKGJlZm9yZSByMjcz
MDgzKS4KKwogMjAyMS0wNS0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIFBpeGVsQnVmZmVyIHJhdGhlciB0aGFuIEltYWdlRGF0YSBpbiBwbGF0Zm9ybS8g
Y29kZSB0byBmaXggbGF5ZXJpbmcgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCBi
NTk4YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3Li5mYTFkN2IxMTg2NTg5MjQ3
MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTc2MCwz
MCArNzYwLDYgQEAgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ6CiAgICAgV2Vi
S2l0OgogICAgICAgZGVmYXVsdDogZGVmYXVsdFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCkKIAotVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJVc2Ugc2FtcGxlZCBw
YWdlIHRvcCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiVXNlIHNhbXBsZWQgcGFnZSB0b3AgY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KLVVzZVRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVXNlIHRoZW1lLWNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9y
IgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KICMgRklYTUU6IFJlbW92
ZSBvbmNlIDxyZGFyOi8vNzM4MzA5NjE+IGhhcyBiZWVuIGZpeGVkCiBVc2VpVHVuZXNBVk91dHB1
dENvbnRleHQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNlMTFm
NDllYTdmZjQ5YjBjZjA2YmI3M2VlMDk3MTk2OTk5YzE5N2QuLmI2OTY2ZmM5YjNjODY2M2M2Mjlm
NTYzZjI4OWI4NjZlZDA0YzI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzkwMSwx
MyArMzkwMSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIAogICAgIGlm
IChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOwotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQot
ICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7Ci0gICAgICAgIGlmICh2aWV3LT51
c2VzQ29tcG9zaXRpbmcoKSkKLSAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkUGFnZVNhbXBs
ZUxvY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNGIxZGI0NmUwMzMyYTRkOGU0YWI5ZGU3NTg1Zjk0YmYxZTU5
Y2IyZS4uNmE3ZmM1YjE4ZTRjMTE4ZThmYjU2ZTlmMmRlYzVlNDBjMGJhOWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNTYzLDYgKzI1NjMsMjUgQEAgQ29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VU
b3BDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50LT5zYW1wbGVkUGFnZVRvcENvbG9y
KCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKK3sKKyAgICBpZiAodW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZSA9IFdURk1vdmUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
OworCisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKKworI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKKyAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFt
ZSgpLnZpZXcoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKSkgeworICAgICAgICAgICAgaWYgKHJlbmRlclZpZXctPnVzZXNDb21wb3Np
dGluZygpKQorICAgICAgICAgICAgICAgIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCit9CisKIC8vIFRoZXNlIGFyZSBtYWdp
Y2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGljIGNv
bnN0IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNmRkMDdlMWJhOTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uMzFhNDJhOTcxMWFl
ZGMxODdmNTczMmI3ZDZlMGZkNmQ1ZTQxMGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYyMyw2ICs2
MjMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Igc2FtcGxlZFBh
Z2VUb3BDb2xvcigpIGNvbnN0OwogCisgICAgQ29sb3IgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZShDb2xvciYmKTsKKwogICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQogICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cygpOwpAQCAtMTE1Miw2ICsxMTU1LDggQEAgcHJpdmF0ZToKIAogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCisgICAgQ29s
b3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsKKwogICAgIGNvbnN0IGJvb2wg
bV9odHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9u
R3JvdXBJZGVudGlmaWVyIG1fbWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggZjg3NzQ1NzJiNGI1MmU0YWE3OTFmYzg3YmY4NTJiMDZmY2MyZTIxYy4uZTliZDhhOTkzMThj
MzQ0NjhmMzFiYTdkYThmYjY2MGQ1ZDc4ZjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM5MjMsMTEgKzM5MjMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFz
QmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIW1fbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKHBhZ2Uo
KS5zZXR0aW5ncygpLnVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkp
Ci0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IHBhZ2UoKS50aGVtZUNvbG9yKCk7Ci0gICAgaWYg
KHBhZ2UoKS5zZXR0aW5ncygpLnVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yKCkgJiYgIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGJh
Y2tncm91bmRDb2xvciA9IHBhZ2UoKS5zYW1wbGVkUGFnZVRvcENvbG9yKCk7CisgICAgYXV0byBi
YWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
KTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IG1fcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZjk5YWRiZTYxZDRmZGVi
MDY3Y2FhMjZhMjEwNWI5YWI0NmRkYzFkOC4uYWE5YTY3ZTc2ZmE0MDgxN2VkYzhhNDJhMWM1NGNl
MTdlYzUxNTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcuaApAQCAtNTgwLDYgKzU4MCwyMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIg
a1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNDb2xvciAqdGhlbWVDb2xv
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKICNlbmRpZgogCisvKiEgQGFi
c3RyYWN0IFRoZSBjb2xvciBkcmF3biBiZWhpbmQgdGhlIGFjdGl2ZSBwYWdlLgorIEBkaXNjdXNz
aW9uIEEgY29sb3IgZGVyaXZlZCBmcm9tIHRoZSBjb250ZW50IG9mIHRoZSBhY3RpdmUgcGFnZSwg
c3VjaCBhcyBieSBibGVuZGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorIHRoZSA8aHRtbD4g
YW5kIDxib2R5PiBlbGVtZW50cyB3aXRoIHRoZSBAbGluayBiYWNrZ3JvdW5kQ29sb3IgQC9saW5r
IG9mIHRoaXMgQGxpbmsgV0tXZWJWaWV3IEAvbGluay4gVXNlZCBhcworIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHVuZGVyIHRoZSBwYWdlJ3MgY29udGVudCwgc3VjaCBhcyBmb3Igc2Nyb2xsIGJvdW5j
aW5nIGFyZWFzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKKyBvd25lciBhcHBsaWNhdGlvbiBm
b3IgY3VzdG9tIHN0eWxpbmcgd2l0aG91dCBoYXZpbmcgdG8gbW9kaWZ5IHRoZSBwYWdlJ3Mgc3R5
bGUuCisgdGhlIGJhY2tncm91bmQgb2Ygc2Nyb2xsIGJvdW5jaW5nIGFyZWFzLgorIEBsaW5rIFdL
V2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQgZm9y
IHRoaXMgcHJvcGVydHkuCisgKi8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5v
bmF0b21pYywgbnVsbF9yZXNldHRhYmxlLCBjb3B5KSBVSUNvbG9yICp1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworI2Vsc2UKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsX3Jlc2V0dGFibGUsIGNvcHkpIE5TQ29sb3IgKnVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKyNl
bmRpZgorCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjU4MjQxM2FjYWNlMWQzNTNi
ZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4uZjQxZDNmM2NkY2Y4N2NhODgzOGMxMDhhYTQwOTUzZDUz
MzI5OGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNjc3LDYgKzE2NzcsMjEgQEAgLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IK
ICAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcih0aGVtZUNvbG9yKTsKIH0KIAorLSAo
Q29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBXZWJD
b3JlOjpwbGF0Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSk7Cit9
CisKKy0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKK3sKKyAgICBfcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUu
Q0dDb2xvcik7Cit9CisKKysgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzT2ZV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gTk87Cit9CisKIEBlbmQKIAog
I3ByYWdtYSBtYXJrIC0KQEAgLTMwNDAsMTEgKzMwNTUsMTMgQEAgLSAodm9pZClfc2V0Q2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKICAgICBfcGFn
ZS0+c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwog
fQogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkg
PHJkYXI6Ly83NjY2MjY0ND4KIC0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgogewogICAgIHJl
dHVybiBbc2VsZiB0aGVtZUNvbG9yXTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tX
ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTcz
Mj4KIC0gKENvY29hQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAg
YXV0byBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0NjkyYWMz
NjIxYjkzYmVlY2MwLi43NThkMmM1NzJkZmEwYWJkNjkzOTc0ZWY2MTY4OWY2OWJlZjY2MmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTM4MCwxMCArMzgwLDExIEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfdGhlbWVDb2xvciBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJ0aGVtZUNvbG9yIiwgbWFjb3MoV0tfTUFDX1RCQSwg
V0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUNv
bG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdL
X0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBpb3MoV0tfSU9TX1RCQSwgV0tfSU9TX1RC
QSkpOwogI2Vsc2UKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBtYWNvcygxMC4x
MCwgV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIC8vIE9ubHkgc2V0IGlmIGAtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXWAgaXMgYSBwb3Np
dGl2ZSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCmluZGV4IGUwYWM5ZTlmMjM3NDA5ZGFhZTk4NTZlYmYyZmVjZWEyNWVmNjE3YWIu
LjMyY2Q2N2NmYzlmNzM3ZTI0Y2E5MThkMDE0ODAwZDliMjdhYTgwYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC00OTMsNyArNDkz
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
KFdLV2ViVmlldyAqd2ViVmlldykKICAgICBpZiAoIXdlYlZpZXctPl9wYWdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT5zY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT51bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGM4OGEzZDQyMzM5MzJmZDM1
NDAzYTcwMTczMmFiYTUyZmZkZWE5YjQuLjJhOThlZGUzMjIzNDFkYWJiYmEyZmY0YjcwZjAwZjQ4
YjlkYjYxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwor
Y2xhc3MgQ29sb3I7CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQ7CiB9CkBAIC01Myw2ICs1NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGhlbWVDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKICAgICB2
b2lkIHRoZW1lQ29sb3JEaWRDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvckRpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVkUGFnZVRvcENvbG9yV2ls
bENoYW5nZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZGRiNDFlYjRiNTY3ZTI3NTI3ZTg3YjVkOWI2
YTQxMGExNjQ2OTc3NC4uZDg1YTZlODk4ZTY0NWI3MjYxMjNhNmVjM2Y3NTI2Y2RiYWRhMDk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC00NywyMiArNDcsMzggQEAgUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VD
bGllbnRJbXBsQ29jb2EoKSA9IGRlZmF1bHQ7CiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnRo
ZW1lQ29sb3JXaWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZv
cktleTpAInRoZW1lQ29sb3IiXTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3RoZW1lQ29sb3IiXTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjp0aGVtZUNvbG9yRGlkQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IGRp
ZENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVDb2xvciJdOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAg
ICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAIl90aGVtZUNvbG9yIl07CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENo
YW5nZSgpCit7CisgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQoreworICAgIFttX3dlYlZpZXcgZGlkQ2hh
bmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwogdm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdl
KCkKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciJdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ckRpZENoYW5nZSgpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICAgICBb
bV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvciJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNDE3ZTEx
ZDQ5NjYwN2EzMDBjZmI2NWZlZDZjN2Y0Y2FjZTBjOTI2ZC4uYmE2MDkzMGM1NTA5MDk4ZDY3ZGZi
MDdlMTZlNWU5ZWI3YTY1NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtNDkwLDYgKzQ5MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpID0gMDsKICNlbmRpZgorCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpID0g
MDsKICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpAQCAtNTE0LDYg
KzUxNiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5n
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yRGlkQ2hhbmdlKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5k
ZXggNDhkOTQ2MzI3NTg0OWMwMmMyNjMwYzQ5YjQ5MWQ1MGY2NzEzNjMwZi4uMjMzMTkyYThmMTQx
MWU5NTY5YzkwYTE4MDA4NGI4MTNhN2IwZDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFZpZXdTbmFw
c2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2Vi
QmFja0ZvcndhcgogCiAgICAgc25hcHNob3QtPnNldFJlbmRlclRyZWVTaXplKHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKTsKICAgICBzbmFwc2hvdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
d2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHNuYXBzaG90LT5zZXRCYWNr
Z3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSk7Cisg
ICAgc25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKCkpOwogICAgIHNuYXBzaG90LT5zZXRWaWV3U2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KHdlYlBhZ2VQcm94eS52aWV3U2Nyb2xsUG9zaXRpb24o
KSkpOwogCiAgICAgaXRlbS5zZXRTbmFwc2hvdChXVEZNb3ZlKHNuYXBzaG90KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhk
NjRhMWRkZDc3ZDJmODA3YTA2MjdhLi5hM2I1NTQxZmE5NjE0ODBiN2QxMjgxYTFhODVhYjA1OWI4
MjIwMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE5
MTMsMTUgKzE5MTMsNTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRl
cmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBXZWJQYWdlUHJveHk6OnVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV90aGVtZUNvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIG1fdGhlbWVDb2xvcjsKKyAgICBpZiAobV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwogCi0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV9zYW1w
bGVkUGFnZVRvcENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2FtcGxlZFBhZ2VU
b3BDb2xvcjsKKyAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgcmV0dXJuIHBsYXRmb3Jt
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShDb2xvciYmIG5ld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIGlmIChuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSA9PSBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpOworICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUgPSBzdGQ6OmV4Y2hhbmdlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUsIG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKTsKKyAgICBib29sIGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSAhZXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3Iob2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdURk1vdmUob2xk
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgaWYgKGNoYW5nZXNVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7CisKKyAgICBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlID0gV1RGTW92ZShuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7
CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFn
ZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOworCisgICAgaWYg
KG1faGFzUGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoID0gdHJ1ZTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faGFzUGVu
ZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2hhc1BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZVRvRGlzcGF0Y2ggPSBmYWxzZTsKKworICAgICAgICBpZiAoaGFzUnVubmluZ1By
b2Nlc3MoKSkKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJp
ZGUpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZl
UmVzaXplKCkKQEAgLTg1NDcsMTMgKzg1ODQsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRoZW1l
Q29sb3JDaGFuZ2VkKGNvbnN0IENvbG9yJiB0aGVtZUNvbG9yKQogICAgIHBhZ2VDbGllbnQoKS50
aGVtZUNvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoY29uc3QgQ29sb3ImIHBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoY29uc3QgQ29sb3ImIG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikK
IHsKLSAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPT0gcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKQorICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9
PSBuZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yKCk7CisgICAgYXV0byBvbGRQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBzdGQ6OmV4
Y2hhbmdlKG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLCBuZXdQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IpOworICAgIGJvb2wgY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9
ICFlcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcihvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Is
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvciA9IFdURk1vdmUob2xkUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKworICAg
IGlmIChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50
KCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSgpOwogICAgIHBhZ2VDbGllbnQo
KS5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7Ci0gICAgbV9wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAg
ICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcjsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAg
ICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAg
ICAgcGFnZUNsaWVudCgpLnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOwog
fQogCkBAIC04NTY3LDYgKzg2MTUsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhbXBsZWRQYWdl
VG9wQ29sb3JDaGFuZ2VkKGNvbnN0IENvbG9yJiBzYW1wbGVkUGFnZVRvcENvbG9yKQogICAgIHBh
Z2VDbGllbnQoKS5zYW1wbGVkUGFnZVRvcENvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCisKK0NvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
azsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA1YjQ1N2RmYjYwMzFlZjYzOWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAy
Li5iNjMxNjY5Zjg3Y2E1ZWM2YjAyNTZiMmIzOWE0NzcxNDA2Mzc3YTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjY5LDcgKzY2OSw5IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OkNvbG9yIHNhbXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3NhbXBsZWRQYWdlVG9wQ29sb3I7IH0KIAotICAgIFdlYkNvcmU6OkNvbG9yIHNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKFdlYkNvcmU6OkNvbG9yJiYpOwogCiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6
ZSgpOwogICAgIHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CkBAIC0yMTA1LDYgKzIxMDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKICAgICB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShj
b25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICBXZWJDb3JlOjpDb2xvciBwbGF0Zm9ybVVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBh
Z2VVUkxTdHJpbmcpOwogICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9v
bCByZXBsYWNlbWVudE9ic2N1cmVkKTsKQEAgLTI2NTAsMTAgKzI2NTMsMTMgQEAgcHJpdmF0ZToK
ICAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0aW5nTW9kZSB7IExheWVySG9zdGluZ01v
ZGU6OkluUHJvY2VzcyB9OwogCiAgICAgV2ViQ29yZTo6Q29sb3IgbV90aGVtZUNvbG9yOworICAg
IFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fc2FtcGxlZFBh
Z2VUb3BDb2xvcjsKIAorICAgIGJvb2wgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoIHsgZmFsc2UgfTsKKwogICAgIGJvb2wgbV91c2VGaXhlZExh
eW91dCB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAz
ZmJlMWIxN2ZmNjYwNDQ5ZTk5M2VmN2U4YWZjMGJhMDAyNGZkODdhLi4zOWQzNzE3YTYzZDJhZDY2
NDZiZDAzMmFiNDYxNmQ2MGVjZWJhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVBc3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxW
aWV3ICosIFVJU2Nyb2xsRXZlbnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkp
IGZpbmFsOwogI2VuZGlmCiAKKyAgICBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcigpIGZpbmFsOworCiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250
ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCmluZGV4IDQwYjc2MjM2MzlmZmFkNDFiNDQyNDY4ZWIyZTE4MWFhMzRmMDE2NTMuLjdiOGI3
N2NlODRmMTQ1ZTE5ZDYxZTE4NThiZmJkNWVkZDliZmE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTEwMDUsNiArMTAwNSwx
MSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYQogICAgIFttX2NvbnRlbnRWaWV3IHJ1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZzpXVEZNb3ZlKGNhbGxiYWNrKV07CiB9CiAKK1dlYkNvcmU6OkNvbG9y
IFBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpCit7CisgICAgcmV0
dXJuIFttX2NvbnRlbnRWaWV3IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNzdjODA2
ZDQyYTFjMTRiZmMyMDA1ODJmYzhlY2Y3MzY2YzNiODA1ZC4uMzJiMGYyOGE1NmY2ZTc1ZWViZjU4
ZTc1NTk1NjM2Y2RjNjE4MTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNTY0LDYgKzE1NjQsMTcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW4KICAgICBwYWdlQ2xpZW50KCkuc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9u
SW5mb3JtYXRpb24ocG9zaXRpb25JbmZvKTsKIH0KIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0
Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gY29u
dGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBwYWdlQ2xpZW50KCkuY29udGVudFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoKTsgY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm4gY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3I7CisKKyNpZiBIQVZFKE9TX0RBUktf
TU9ERV9TVVBQT1JUKQorICAgIHJldHVybiBVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5D
R0NvbG9yOworI2Vsc2UKKyAgICByZXR1cm4gVUlDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7Cisj
ZW5kaWYKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDY4YjA1ODhkN2E0NmRhNmMwNzI1
YmQyZGM5ZjcxYTA4YWJmYmU4ZGYuLjdjMDJhZThhMGQ0ZWQzODkzYmEzYjIwNzVkMDJmYWRjYWY5
OGQ2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNzEwLDYgKzcxMCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlVW5pdmVy
c2FsQWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZQogfQogI2Vu
ZGlmCiAKK0NvbG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAoreworI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHJldHVybiBOU0Nv
bG9yLmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcjsKKyNlbHNlCisgICAgcmV0dXJuIE5T
Q29sb3Iud2hpdGVDb2xvci5DR0NvbG9yOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ODY0NmZlNGI5N2ExMmJhNWVjZGEwZWNjN2U1
MmExMzNiMGZjNDQ4Li4yNDM1YjEzYWI2ODRiYWQwMDYxZGIyMmM4Y2Y5MDJlNTMwOGNiMzNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQ0
OCw2ICsyNDQ4LDExIEBAIHZvaWQgV2ViUGFnZTo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0CiAgICAgaW5qZWN0ZWRCdW5k
bGUtPmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNz
LnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShXZWJD
b3JlOjpDb2xvciYmIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIG1f
cGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV1RGTW92ZSh1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKIHZvaWQgV2ViUGFnZTo6c2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKiBwYWdl
QmFubmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGVlNDQ3M2FkYzRiOTgwZTBkYjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLjE0ZjFmOWUwMjg4YjMz
OGIxZDNjYjVkZTllZmNhMzczYjM4MDBmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYwNyw2ICs2MDcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IGNvbnN0IFVzZXJEYXRhJik7CiAKKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yJiYpOworCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsg
fQogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Vu
ZGVybGF5Q29sb3I7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTM3YTY1OWM5MWIzODkyZTJiOGY5MzhjNjI2
Y2RjZmU4OWU0MTkwNC4uM2I3ZjcwNDEwMDU5ZDBhYjhlMjA1ZDJiNGJhZTBkYWRmMDAzYTZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0zOSw2ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAKICAg
ICBTZXRVbmRlcmxheUNvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIFNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKQogCiAgICAgVmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgIFZp
ZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmU4MDhmZWUzNDZmODY3NzdiMjI2NjljMDViZTZlZDk0YjQwNzZl
ZS4uZTkzMGI1YWExOWM0OWNkYjJjYWJhZWQwZmIwOTEwYmYwMDMwM2MzMyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisy
MDIxLTA1LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQ
cm9tb3RlIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRv
IGAtW1dLV2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzY1NjgwOTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVo
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW06IFJlbmFtZWQgZnJvbSBQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IubW0uCisgICAgICAgIChkZWZhdWx0QmFja2dyb3VuZENvbG9yKTogQWRkZWQu
CisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5PbkxvYWQp
OgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xl
U29saWRDb2xvcik6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IuU2luZ2xlQmxlbmRlZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzKTogQWRk
ZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0
aXBsZUJsZW5kZWRDb2xvcnMpOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQWRkZWQuCisgICAgICAg
IChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5LVk8pOgorICAgICAgICAo
VEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcp
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
Lk11bHRpcGxlU3R5bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVk
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFn
ZVRvcENvbG9yLm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld1dpdGhTYW1wbGVkUGFnZVRvcENv
bG9yTWF4RGlmZmVyZW5jZSk6CisgICAgICAgIChURVNULlNhbXBsZWRQYWdlVG9wQ29sb3IuRXhw
ZXJpbWVudGFsVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tXZWJWaWV3VGhlbWVDb2xvci5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXcpOiBEZWxldGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXcuRXhwZXJpbWVudGFsVXNlVGhlbWVDb2xvckZvclNj
cm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhlIGV4
cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0
CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2Vi
VmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0w
NS0xMCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcmVmbGlnaHQgcmVxdWVzdHMgbm90IHByb3Blcmx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5k
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRj
Y2MyOWU3M2MzYjMuLjBiYWVlZGU5N2E4ZjkyMmE3YjkxN2JiNTNhNDBmZDc4MmY2YmQyYWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzEsNyArODcxLDcgQEAKIAkJOTUwOTVGMjAyNjJG
RkZBNTAwMDBEOTIwIC8qIFNhbXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyog
U2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLzsgfTsKIAkJOTNGQ0RCMzQyNjM2MzE1NjAwNDZERDdE
IC8qIFNvcnRlZEFycmF5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5j
cHAgKi87IH07CiAJCTk1MEU0Q0MxMjUyRTc1MjQwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRTRD
QzAyNTJFNzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi87IH07Ci0JCTk1M0FC
QjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNBQkIzNDI1QzBE
NjgxMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovOyB9OworCQk5
NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUz
QUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1l
Q29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsK
IAkJOTVCNkIzQjcyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUI2QjNCNjI1MUVCRjJGMDBG
QzQzODIgLyogTWVkaWFEb2N1bWVudC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQx
OThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdU
ZXh0SW5wdXQubW0gKi87IH07CkBAIC0yNTY4LDcgKzI1NjgsNyBAQAogCQk5NTA5NUYxRjI2MkZG
RkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJh
eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJh
eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1MjMw
MDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gaU9TU3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmll
d1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9y
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUI2QjNCNjI1MUVCRjJGMDBGQzQz
ODIgLyogTWVkaWFEb2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1lZGlhRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDgyLDcgKzM0ODIsNiBAQAogCQkJCTM3QTIy
QUE1MURDQUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0
ZXJDcmFzaC5tbSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENs
b3NlV2luZG93Lm1tICovLAogCQkJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzLm1tICovLAotCQkJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAv
KiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8sCiAJCQkJMkQzQ0EzQTQyMjFERjIz
OTAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tICovLAogCQkJCTUxMjQyQ0RBMjM3Qjc5
MUUwMEVFRDlDMSAvKiBQYWdlWm9vbS5tbSAqLywKIAkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3
OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLywKQEAgLTM2MjYsNiArMzYyNSw3IEBA
CiAJCQkJQ0Q3Rjg5REIyMkE4NkNEQTAwRDY4M0FFIC8qIFdLV2ViVmlld1N1c3BlbmRBbGxNZWRp
YVBsYXliYWNrLm1tICovLAogCQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZp
ZXdUZXh0SW5wdXQubW0gKi8sCiAJCQkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2Vi
Vmlld1RoZW1lQ29sb3IubW0gKi8sCisJCQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0g
IldlYktpdCBDb2NvYSI7CiAJCQlwYXRoID0gV2ViS2l0Q29jb2E7CkBAIC01NTc4LDcgKzU1Nzgs
NiBAQAogCQkJCTBGMzQwNzc2MjMwMzdGREMwMDYwQTFBMCAvKiBPdmVyZmxvd1Njcm9sbFZpZXdU
ZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBP
dmVycmlkZUFwcGxlTGFuZ3VhZ2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJE
QTI1ODZGMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMw
MENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQx
MUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODYwLDYgKzU4NTksNyBAQAogCQkJ
CUNEN0Y4OURDMjJBODZDREEwMEQ2ODNBRSAvKiBXS1dlYlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5
YmFjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBX
S1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NUE1MjQ5NTI1ODFBMTBE
MDA0NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1
M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzc0QzhGQTIyREZCQTk2MDBEQTJEQUIgLyogV1RG
U3RyaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMxNEQzMDQ2MjRCNEMzQkEw
MDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3
NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NTMyZjQ1YWMwOGE0ZTExOGQ5YzQxYWFjZWQ3NWNhMTEwNzgyMDAz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLQotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgotI2ltcG9ydCAiVGVzdENvY29h
LmgiCi0jaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi0jZGVmaW5lIEVYUEVDVF9O
U1NUUklOR19FUShleHBlY3RlZCwgYWN0dWFsKSBcCi0gICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsgXAotICAgIEVYUEVDVF9XS19TVFJFUShl
eHBlY3RlZCwgKE5TU3RyaW5nICopYWN0dWFsKTsKLQotY29uc3RleHByIENHRmxvYXQgd2hpdGVD
b2xvckNvbXBvbmVudHNbNF0gPSB7IDEsIDEsIDEsIDEgfTsKLWNvbnN0ZXhwciBDR0Zsb2F0IHJl
ZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9OwotY29uc3RleHByIENHRmxvYXQg
Ymx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwgMSB9OwotCi1URVNUKFBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvciwgT25Mb2FkKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7
Ci0gICAgYXV0byB3aGl0ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNw
YWNlLmdldCgpLCB3aGl0ZUNvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBh
ZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9u
ZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBFWFBF
Q1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRp
YXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJl
ZDsgfSA8L3N0eWxlPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSkpOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IG5vdC1i
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgd2hpdGVDb2xvci5nZXQoKSkpOwotfQotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvciwgTXVsdGlwbGVTdHlsZXMpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
LSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFj
ZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcl0pOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9k
eSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmx1
ZTsgfSA8L3N0eWxlPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3Iu
Z2V0KCkpKTsKLX0KLQotQGludGVyZmFjZSBXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciA6IE5TT2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tXZWJWaWV3ICp3ZWJWaWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICpzdGF0ZTsKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7
Ci0KLSAgICBfd2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNl
bGYgZm9yS2V5UGF0aDpAIl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNL
ZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwotCi0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2Ug
Y29udGV4dDoodm9pZCAqKWNvbnRleHQKLXsKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJiZWZvcmUtaW5pdCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJiZWZvcmUtbG9hZCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbG9hZCI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJi
ZWZvcmUtY3NzLWNsYXNzLWFkZGVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3Mt
Y2xhc3MtYWRkZWQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUg
aXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKLSAgICAgICAg
X3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNz
LXJlbW92ZWQiXSkgewotICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVk
IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLUBlbmQKLQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIEtW
TykKLXsKLSAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFk
b3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBv
bmVudHMpKTsKLSAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9y
Q29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAg
ICBhdXRvIHRoZW1lQ29sb3JPYnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcu
Z2V0KCldKTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWluaXQiLCBbdGhlbWVDb2xv
ck9ic2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JdKTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6
QCJiZWZvcmUtbG9hZCJdOwotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
Z0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHku
cmVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQtY29s
b3I6IGJsdWU7IH0gPC9zdHlsZT4iXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxv
YWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0
YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1hZGRlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07Ci0g
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9O
U1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLWFkZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBz
dGF0ZV0pOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQot
ICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5n
ZWQiXTsKLSAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgPSAnYmx1ZSciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xh
c3MtY2hhbmdlZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZl
ciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOwotICAgIFt3ZWJWaWV3IG9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcn
Il07Ci0gICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVY
UEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdGhlbWVDb2xvck9i
c2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdl
dCgpKSk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KaW5kZXggN2YyNzIxYjY1YzA3MDIyMTM5
NDI1OWQ2YjA3YWE2MmJlOTNjNzIyMS4uOGIzZjExOGNkYzM4Mzk5Yjc2YzliZDIyMmJmNDI4ZjU4
NTg4MTQ2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQpAQCAtODEsMjAgKzgxLDEyIEBAIC0g
KHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0
OihpZClvYmplY3QgY2hhbmdlOihOCiAKIEBlbmQKIAotZW51bSBjbGFzcyBVc2VTYW1wbGVkUGFn
ZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07
Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxl
ZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhE
aWZmZXJlbmNlLCBkb3VibGUgc2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDAsIFVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVNhbXBsZWRQ
YWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gVXNlU2FtcGxlZFBhZ2VU
b3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKQorc3RhdGljIFJldGFpblB0
cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhE
aWZmZXJlbmNlKGRvdWJsZSBzYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91Ymxl
IHNhbXBsZWRQYWdlVG9wQ29sb3JNaW5IZWlnaHQgPSAwKQogewogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgW2NvbmZpZ3VyYXRpb24gX3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlOnNh
bXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0
U2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodDpzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0
XTsKIAotICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJl
ZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKLSAgICAgICAgaWYgKFtmZWF0dXJl
LmtleSBpc0VxdWFsVG9TdHJpbmc6QCJVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvciJdKSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOih1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvciA9PSBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvcjo6WWVzKSBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogfQogCkBAIC0zNTgsMzQg
KzM1MCwzIEBAIFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgRElTQUJMRURfRGlzcGxheVAzKQog
ICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAxLjAwLCAxLjAxKTsKICAgICBFWFBF
Q1RfRVEoY29tcG9uZW50c1szXSwgMSk7CiB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
Ci0vLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRo
ZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KLQotVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBFeHBl
cmltZW50YWxVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
cikKLXsKLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNr
Z3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZm
ZXJlbmNlKDUsIDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAg
IFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJh
bWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJy
ZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVt
ZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0p
OwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3Iu
Q0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxlZFBh
Z2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JT
dG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdl
YkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6
OnJlZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1l
Q29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRD
b2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIGF1dG8gd2ViVmll
d1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZp
ZXdXaXRoU2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBh
Z2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNU
X05VTEwoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Ig
X3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdh
aXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0
aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBF
Q1RfTlVMTChbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
ciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihb
d2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxW
aWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0K
LSAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0
aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1M
R3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7
Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwg
V2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJW
aWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXdd
LmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci19Ci0KLSNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCmluZGV4
IGI1N2VkYTcxODM0NTkwMTUwZjg3NTk0YWFkNDE2MDIwZWZkMzQzZTkuLjNkYmQ4NjMwMTVhYzJj
ZjRlNzE0MDUwZDc1ZDBjOWMyNTliNmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAg
LTMyMSw1MiArMzIxLDMgQEAgVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE92
ZXJyaWRlc0FwcGxpY2F0aW9uTWFuaWZlc3QpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdz
IG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJl
YSBvbiBtYWNPUy4KLQotZW51bSBjbGFzcyBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IGNyZWF0ZVdlYlZpZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IgdXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGlu
IFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0gICAgICAgIGlmIChb
ZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3IiXSkgewotICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXSBfc2V0RW5hYmxlZDoodXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IgPT0gVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9y
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKLX0KLQotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBFeHBl
cmltZW50YWxVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAg
ICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29s
b3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAg
IGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdl
dCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX1RS
VUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IHRoZW1lQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRp
bEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1j
b2xvcjogYmx1ZSc+Il07Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1Rf
VFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9y
LCBibHVlQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdh
aXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1j
b2xvcicgY29udGVudD0ncmVkJz48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+
Il07Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhvdXRU
aGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXS5DR0NvbG9y
LCByZWRDb2xvci5nZXQoKSkpOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Ny
b2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0g
ICAgYXV0byB3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
ID0gY3JlYXRlV2ViVmlldyhVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
cjo6WWVzKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZp
ZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0p
OwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENv
bG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9
J3RoZW1lLWNvbG9yJyBjb250ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBz
Y3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLX0K
LQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MTI4ZDY2ZjEwZTNmZTVj
MTJhNjgyYTQyMTI0ODE1YWQ0MDFkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ci5tbQpAQCAtMCwwICsxLDMzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaW1wb3J0ICJDb2NvYUNvbG9yLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKyNkZWZpbmUgRVhQRUNUX0lOX1JBTkdFKGFj
dHVhbCwgbWluLCBtYXgpIFwKKyAgICBFWFBFQ1RfR0UoYWN0dWFsLCBtaW4pOyBcCisgICAgRVhQ
RUNUX0xFKGFjdHVhbCwgbWF4KTsKKworI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0
ZWQsIGFjdHVhbCkgXAorICAgIEVYUEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7IFwKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmlu
ZyAqKWFjdHVhbCk7CisKK2NvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0XSA9
IHsgMSwgMCwgMCwgMSB9OworY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50c1s0
XSA9IHsgMCwgMCwgMSwgMSB9OworCitzdGF0aWMgUmV0YWluUHRyPENvY29hQ29sb3I+IGRlZmF1
bHRCYWNrZ3JvdW5kQ29sb3IoVGVzdFdLV2ViVmlldyAqd2ViVmlldykKK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIGlmIChDb2NvYUNvbG9yICpjb250ZW50Vmlld0JhY2tncm91bmRD
b2xvciA9IHdlYlZpZXcud2tDb250ZW50Vmlldy5iYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHJl
dHVybiBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHdlYlZpZXcpOworI2VuZGlmCisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKSAmJiBQ
TEFURk9STShNQUMpCisgICAgcmV0dXJuIE5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xvcjsK
KyNlbGlmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgcmV0dXJuIFVJQ29sb3Iuc3lzdGVtQmFja2dyb3VuZENvbG9yOworI2Vsc2UKKyAgICBy
ZXR1cm4gW0NvY29hQ29sb3Igd2hpdGVDb2xvcl07CisjZW5kaWYKK30KKworVEVTVChXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE9uTG9hZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8
IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xv
cikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdl
YlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0
QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7Cit9CisKK1RFU1QoV0tX
ZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBTaW5nbGVTb2xpZENvbG9yKQoreworICAg
IGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9T
VFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtkZWZhdWx0QmFj
a2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7
CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxB
bGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB9IDwvc3R5bGU+Il07CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJl
YW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IocmVkQ29sb3IuZ2V0KCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30KKworVEVTVChXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIFNpbmdsZUJsZW5kZWRDb2xvcikKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJF
QU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtkZWZhdWx0QmFja2dy
b3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJ
bW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xv
cjogcmdiYSgyNTUsIDAsIDAsIDAuNSk7IH0gPC9zdHlsZT4iXTsKKyAgICBBTFdBWVNfTE9HX1dJ
VEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IpKTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0
Q29tcG9uZW50cyhbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOwor
ICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzBdLCAxKTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29t
cG9uZW50c1sxXSwgMC40NSwgMC41NSk7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNb
Ml0sIDAuNDUsIDAuNTUpOworICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKwor
VEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE11bHRpcGxlU29saWRDb2xv
cnMpCit7CisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVu
dHMpKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgQUxXQVlT
X0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3Io
W2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkg
Q0dDb2xvcl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0Fu
ZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGh0bWwgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0g
PC9zdHlsZT4iXTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3Jl
OjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIg
dnMgIiA8PCBXZWJDb3JlOjpDb2xvcihyZWRDb2xvci5nZXQoKSkpOworICAgIEVYUEVDVF9UUlVF
KENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvciwgTXVsdGlwbGVCbGVuZGVkQ29sb3JzKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0g
PDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Io
d2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1
bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNo
aWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGh0bWwgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1
NSwgMCwgMCwgMC41KTsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAyNTUs
IDAuNSk7IH0gPC9zdHlsZT4iXTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8
PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IpKTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhbd2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOworICAgIEVYUEVDVF9JTl9SQU5H
RShjb21wb25lbnRzWzBdLCAwLjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9u
ZW50c1sxXSwgMC4yLCAwLjI1KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1syXSwg
MC43LCAwLjc1KTsKKyAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1szXSwgMSk7Cit9CisKK0BpbnRl
cmZhY2UgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgOiBOU09iamVj
dAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
OworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2ViVmlldzsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqc3RhdGU7CisKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVy
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9zdGF0ZSA9IEAiYmVmb3JlLWluaXQiOworCisgICAgX3dlYlZpZXcgPSB3ZWJWaWV3
OworICAgIFtfd2ViVmlldyBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwg
Y29udGV4dDpuaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAg
ICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtaW5pdCJdKSB7CisgICAgICAg
IF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWFkZGVkIl0pIHsK
KyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNz
cy1jbGFzcy1jaGFuZ2VkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3Mt
Y2hhbmdlZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXSkgeworICAgICAgICBfc3Rh
dGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1ub25udWxsLW92ZXJy
aWRlIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1ub25udWxsLW92ZXJyaWRlIjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpA
ImJlZm9yZS1udWxsLW92ZXJyaWRlIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1udWxs
LW92ZXJyaWRlIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEVYUEVDVF9OU1NUUklO
R19FUSgibm90LXJlYWNoZWQiLCBfc3RhdGUpOworfQorCitAZW5kCisKK1RFU1QoV0tXZWJWaWV3
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBLVk8pCit7CisgICAgYXV0byBzUkdCQ29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0Ip
KTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNw
YWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBhdXRvIGJsdWVDb2xvciA9IGFk
b3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9u
ZW50cykpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBhdXRv
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyID0gYWRvcHROUyhbW1dLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
Vmlldy5nZXQoKV0pOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItaW5pdCIsIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0dfV0lU
SF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKFtkZWZhdWx0
QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3Jd
KSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJz
aG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJv
ZHkucmVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQt
Y29sb3I6IGJsdWU7IH0gPC9zdHlsZT4iXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3Vs
ZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7
CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dl
YlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2Vi
Q29yZTo6Q29sb3IoW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xv
cl0pKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2Vi
Vmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXTsKKyAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAncmVkJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1hZGRlZCIsIFt1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9T
VFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKHJlZENvbG9yLmdl
dCgpKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNo
YW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FD
b2xvciBjb2xvcldpdGhDR0NvbG9yOnJlZENvbG9yLmdldCgpXV07CisgICAgRVhQRUNUX05TU1RS
SU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNv
cmU6OkNvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwg
IiB2cyAiIDw8IFdlYkNvcmU6OkNvbG9yKHJlZENvbG9yLmdldCgpKSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3
IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9OU1NUUklOR19F
USgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIg
c3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpD
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMg
IiA8PCBXZWJDb3JlOjpDb2xvcihyZWRDb2xvci5nZXQoKSkpOworICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl07CisgICAgW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1l
ID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVd
OworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLWNoYW5nZWQiLCBbdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJ
VEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihibHVlQ29s
b3IuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisK
KyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQt
bm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpb
Q29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOmJsdWVDb2xvci5nZXQoKV1dOworICAgIEVYUEVD
VF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8
PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihibHVlQ29sb3IuZ2V0KCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAg
IFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9O
U1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBX
ZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Ip
IDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihibHVlQ29sb3IuZ2V0KCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXTsK
KyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9k
eS5jbGFzc05hbWUgPSAnJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVk
IiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgQUxXQVlT
X0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3Io
W2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkg
Q0dDb2xvcl0pKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRT
dGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yOmRlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkuZ2V0KCld
OworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RS
RUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihbZGVmYXVsdEJhY2tn
cm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOwor
CisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxk
LW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6
bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgQUxXQVlTX0xPR19XSVRI
X1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW2RlZmF1bHRC
YWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0p
KTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJl
Zm9yZS1ub25udWxsLW92ZXJyaWRlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3IuZ2V0KCldXTsK
KyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiLCBbdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhf
U1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihyZWRDb2xvci5n
ZXQoKSkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAg
W3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1j
aGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29h
Q29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1dOworICAgIEVYUEVDVF9OU1NU
UklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2Jz
ZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJD
b3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8
ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihyZWRDb2xvci5nZXQoKSkpOworICAgIEVYUEVDVF9U
UlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAncmVkJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVB
TShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IocmVkQ29sb3IuZ2V0KCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdl
Il07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmJvZHkuY2xhc3NOYW1lID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFu
Z2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBBTFdB
WVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xv
cihyZWRDb2xvci5nZXQoKSkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQo
KSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAi
c2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJyJdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNo
b3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwg
V2ViQ29yZTo6Q29sb3IocmVkQ29sb3IuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwg
cmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZl
ciBzZXRTdGF0ZTpAImJlZm9yZS1udWxsLW92ZXJyaWRlIl07CisgICAgW3dlYlZpZXcgc2V0VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yOm5pbF07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRl
ci1udWxsLW92ZXJyaWRlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yKSA8PCAiIHZzICIgPDwg
V2ViQ29yZTo6Q29sb3IoW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dD
b2xvcl0pKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Io
d2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKKy8vIFRoZXJlJ3Mgbm8gQVBJL1NQSSB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2Yg
dGhlIHNjcm9sbCBhcmVhIG9uIG1hY09TLgorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciwgTWF0Y2hlc1Njcm9sbFZpZXcpCit7CisgICAgYXV0byBzUkdCQ29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0Ip
KTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNw
YWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBhdXRvIGJsdWVDb2xvciA9IGFk
b3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9u
ZW50cykpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBBTFdB
WVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBXZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xv
cihbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgp
KSBDR0NvbG9yXSkpOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNv
cmU6OkNvbG9yKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSA8
PCAiIHZzICIgPDwgV2ViQ29yZTo6Q29sb3IoW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmll
dy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9y
KFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBbZGVmYXVsdEJh
Y2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRG
cmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0
eWxlPiJdOworICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8IFdlYkNvcmU6OkNv
bG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcikgPDwgIiB2cyAi
IDw8IFdlYkNvcmU6OkNvbG9yKHJlZENvbG9yLmdldCgpKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIHJlZENvbG9yLmdldCgpKSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0g
PDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNH
Q29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihyZWRDb2xvci5nZXQoKSkpOworICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFj
a2dyb3VuZENvbG9yLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbd2ViVmlldyBz
ZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpi
bHVlQ29sb3IuZ2V0KCldXTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCBX
ZWJDb3JlOjpDb2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Ip
IDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihibHVlQ29sb3IuZ2V0KCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisgICAgQUxXQVlTX0xPR19XSVRIX1NU
UkVBTShzdHJlYW0gPDwgV2ViQ29yZTo6Q29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dy
b3VuZENvbG9yLkNHQ29sb3IpIDw8ICIgdnMgIiA8PCBXZWJDb3JlOjpDb2xvcihibHVlQ29sb3Iu
Z2V0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHNj
cm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKK30K
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428339</attachid>
            <date>2021-05-11 20:45:34 -0700</date>
            <delta_ts>2021-05-12 00:52:08 -0700</delta_ts>
            <desc>[Patch] logging for EWS</desc>
            <filename>bug-225615-20210511214533.patch</filename>
            <type>text/plain</type>
            <size>77111</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmI5MGEyOWZhMDBmNjljZGZkYjM0OGMxNDA1NzA3MTQ5NTAzZGQyNi4uNGFiYzcyMzcw
OTdmM2U1Y2E2NWQ4MmVhY2EzNjE0MWY0ZjZkZThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgYFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVJgIHNob3VsZCBwcmludCB0
aGUgUElEIGJlZm9yZSBzbGVlcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2MzZlYTQ3ZTAyNDJmOWJlMTcx
MTIwNzkxYjZhMWQ3MTg5NjUxM2YuLmMxMTJlMzYwOTFiNWQwYmNkNDI5MjMyNTFkOTk3MTcyYzcy
NzIyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBgLVtXS1dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBgLVtXS1dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTY4MDk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRoYXQg
d2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9zdCBy
ZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFja2dy
b3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0aGUg
Y3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAgICAg
ICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisgICAg
ICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBlZmZl
Y3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAgICBU
ZXN0czogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZAorICAgICAgICAg
ICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IK
KyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVC
bGVuZGVkQ29sb3IKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzCisgICAgICAgICAgICAgICBX
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuS1ZPCisgICAgICAgICAgICAgICBXS1dl
YlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcKKworICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpOiBBZGRlZC4KKyAgICAgICAgSG9sZCB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBm
b3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVu
CisgICAgICAgIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBs
ZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAg
YFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGll
bnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFj
a2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOl1gLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIEl0J3Mgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeSB0byBmb3JjZSB0aGUgb3ZlcnNjcm9sbCBhcmVhIHRvIHJlZHJhdyBzaW5jZSB0aGF0
J2xsIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgYSBjbGllbnQgY2FsbGluZyBgLVtXS1dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gIChwb3NzaWJseSBpbiByZXNwb25zZSB0byBh
CisgICAgICAgIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9yXWAgS1ZPIG5vdGlmaWNhdGlvbikuCisK
IDIwMjEtMDUtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlciByYXRoZXIgdGhhbiBJbWFnZURhdGEgaW4gcGxhdGZvcm0vIGNvZGUgdG8g
Zml4IGxheWVyaW5nIHZpb2xhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZjQ1ZDBkOWY4ODJjMzUxMTE4ODFl
NjQ2MDU2ZGMwOGNkOTI0ZDI0Li5kNjU5MmNkZWU4ZGY0OThlZmNjMTNhZWZmZmQyM2RjNDBlYzU2
MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA1LTEwICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NjgwOTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIGB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxs
IHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisgICAgICAgICAtIHRoZSBtb3N0IHJlY2Vu
dCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAgICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5k
LWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJy
ZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yYCkKKyAgICAgICAgIC0g
dGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAg
TW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCB1
bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBydW5sb29wLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpdKTogQWRkZWQuCisgICAgICAgICgrW1dLV2ViVmlldyBhdXRvbWF0aWNhbGx5Tm90aWZp
ZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOiBBZGRlZC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGJhc2VTY3Jv
bGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBg
VXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVu
dHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNr
Z3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6XWAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAgICBTdG9yZSB0aGUgY2xpZW50LW92ZXJy
aWRlbiB2YWx1ZSBmb3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgYW5kIG1hbmFnZSBzdGF0
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6IEFk
ZGVkLgorICAgICAgICBBZGQgT2JqQyBLVk8gc3VwcG9ydCBmb3IgYC1bV0tXZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcik6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgYGJhY2tn
cm91bmRDb2xvcmAgb2YgdGhlIGBXS0NvbnRlbnRWaWV3YC4gVGhpcyBpcyBuZWVkZWQgb24gaU9T
CisgICAgICAgIGJlY2F1c2UgYHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3JgIChub3cgYFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgKQorICAgICAgICB3b3Vs
ZCB1c2UgdGhpcyB2YWx1ZSBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZSB1bmRlcmx5aW5nIHBs
YXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKTogQWRkZWQuCisgICAgICAgIFBhc3MgdGhlIGNsaWVudC1vdmVycmlkZW4gdmFsdWUgZm9y
IGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIHRvIHRoZSBXZWJQcm9jZXNzIHNvIHRoYXQgaXQK
KyAgICAgICAgY2FuIGJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBvdmVyc2Nyb2xsIGxheWVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgR28gYmFj
ayB0byB1c2luZyB0aGUgYHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmAgKGJlZm9yZSByMjcz
MDgzKS4KKwogMjAyMS0wNS0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIFBpeGVsQnVmZmVyIHJhdGhlciB0aGFuIEltYWdlRGF0YSBpbiBwbGF0Zm9ybS8g
Y29kZSB0byBmaXggbGF5ZXJpbmcgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCBi
NTk4YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3Li5mYTFkN2IxMTg2NTg5MjQ3
MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTc2MCwz
MCArNzYwLDYgQEAgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ6CiAgICAgV2Vi
S2l0OgogICAgICAgZGVmYXVsdDogZGVmYXVsdFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCkKIAotVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJVc2Ugc2FtcGxlZCBw
YWdlIHRvcCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiVXNlIHNhbXBsZWQgcGFnZSB0b3AgY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KLVVzZVRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVXNlIHRoZW1lLWNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9y
IgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KICMgRklYTUU6IFJlbW92
ZSBvbmNlIDxyZGFyOi8vNzM4MzA5NjE+IGhhcyBiZWVuIGZpeGVkCiBVc2VpVHVuZXNBVk91dHB1
dENvbnRleHQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNlMTFm
NDllYTdmZjQ5YjBjZjA2YmI3M2VlMDk3MTk2OTk5YzE5N2QuLmI2OTY2ZmM5YjNjODY2M2M2Mjlm
NTYzZjI4OWI4NjZlZDA0YzI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzkwMSwx
MyArMzkwMSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIAogICAgIGlm
IChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOwotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQot
ICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7Ci0gICAgICAgIGlmICh2aWV3LT51
c2VzQ29tcG9zaXRpbmcoKSkKLSAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkUGFnZVNhbXBs
ZUxvY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNGIxZGI0NmUwMzMyYTRkOGU0YWI5ZGU3NTg1Zjk0YmYxZTU5
Y2IyZS4uNmE3ZmM1YjE4ZTRjMTE4ZThmYjU2ZTlmMmRlYzVlNDBjMGJhOWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNTYzLDYgKzI1NjMsMjUgQEAgQ29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VU
b3BDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50LT5zYW1wbGVkUGFnZVRvcENvbG9y
KCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKK3sKKyAgICBpZiAodW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZSA9IFdURk1vdmUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
OworCisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKKworI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKKyAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFt
ZSgpLnZpZXcoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKSkgeworICAgICAgICAgICAgaWYgKHJlbmRlclZpZXctPnVzZXNDb21wb3Np
dGluZygpKQorICAgICAgICAgICAgICAgIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCit9CisKIC8vIFRoZXNlIGFyZSBtYWdp
Y2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGljIGNv
bnN0IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNmRkMDdlMWJhOTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uMzFhNDJhOTcxMWFl
ZGMxODdmNTczMmI3ZDZlMGZkNmQ1ZTQxMGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYyMyw2ICs2
MjMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Igc2FtcGxlZFBh
Z2VUb3BDb2xvcigpIGNvbnN0OwogCisgICAgQ29sb3IgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZShDb2xvciYmKTsKKwogICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQogICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cygpOwpAQCAtMTE1Miw2ICsxMTU1LDggQEAgcHJpdmF0ZToKIAogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCisgICAgQ29s
b3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsKKwogICAgIGNvbnN0IGJvb2wg
bV9odHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9u
R3JvdXBJZGVudGlmaWVyIG1fbWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggZjg3NzQ1NzJiNGI1MmU0YWE3OTFmYzg3YmY4NTJiMDZmY2MyZTIxYy4uZTliZDhhOTkzMThj
MzQ0NjhmMzFiYTdkYThmYjY2MGQ1ZDc4ZjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM5MjMsMTEgKzM5MjMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFz
QmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIW1fbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKHBhZ2Uo
KS5zZXR0aW5ncygpLnVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkp
Ci0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IHBhZ2UoKS50aGVtZUNvbG9yKCk7Ci0gICAgaWYg
KHBhZ2UoKS5zZXR0aW5ncygpLnVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yKCkgJiYgIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGJh
Y2tncm91bmRDb2xvciA9IHBhZ2UoKS5zYW1wbGVkUGFnZVRvcENvbG9yKCk7CisgICAgYXV0byBi
YWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
KTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IG1fcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZjk5YWRiZTYxZDRmZGVi
MDY3Y2FhMjZhMjEwNWI5YWI0NmRkYzFkOC4uYWE5YTY3ZTc2ZmE0MDgxN2VkYzhhNDJhMWM1NGNl
MTdlYzUxNTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcuaApAQCAtNTgwLDYgKzU4MCwyMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIg
a1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNDb2xvciAqdGhlbWVDb2xv
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKICNlbmRpZgogCisvKiEgQGFi
c3RyYWN0IFRoZSBjb2xvciBkcmF3biBiZWhpbmQgdGhlIGFjdGl2ZSBwYWdlLgorIEBkaXNjdXNz
aW9uIEEgY29sb3IgZGVyaXZlZCBmcm9tIHRoZSBjb250ZW50IG9mIHRoZSBhY3RpdmUgcGFnZSwg
c3VjaCBhcyBieSBibGVuZGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorIHRoZSA8aHRtbD4g
YW5kIDxib2R5PiBlbGVtZW50cyB3aXRoIHRoZSBAbGluayBiYWNrZ3JvdW5kQ29sb3IgQC9saW5r
IG9mIHRoaXMgQGxpbmsgV0tXZWJWaWV3IEAvbGluay4gVXNlZCBhcworIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHVuZGVyIHRoZSBwYWdlJ3MgY29udGVudCwgc3VjaCBhcyBmb3Igc2Nyb2xsIGJvdW5j
aW5nIGFyZWFzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKKyBvd25lciBhcHBsaWNhdGlvbiBm
b3IgY3VzdG9tIHN0eWxpbmcgd2l0aG91dCBoYXZpbmcgdG8gbW9kaWZ5IHRoZSBwYWdlJ3Mgc3R5
bGUuCisgdGhlIGJhY2tncm91bmQgb2Ygc2Nyb2xsIGJvdW5jaW5nIGFyZWFzLgorIEBsaW5rIFdL
V2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQgZm9y
IHRoaXMgcHJvcGVydHkuCisgKi8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5v
bmF0b21pYywgbnVsbF9yZXNldHRhYmxlLCBjb3B5KSBVSUNvbG9yICp1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworI2Vsc2UKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsX3Jlc2V0dGFibGUsIGNvcHkpIE5TQ29sb3IgKnVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKyNl
bmRpZgorCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjU4MjQxM2FjYWNlMWQzNTNi
ZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4uZjQxZDNmM2NkY2Y4N2NhODgzOGMxMDhhYTQwOTUzZDUz
MzI5OGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNjc3LDYgKzE2NzcsMjEgQEAgLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IK
ICAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcih0aGVtZUNvbG9yKTsKIH0KIAorLSAo
Q29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBXZWJD
b3JlOjpwbGF0Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSk7Cit9
CisKKy0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKK3sKKyAgICBfcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUu
Q0dDb2xvcik7Cit9CisKKysgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzT2ZV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gTk87Cit9CisKIEBlbmQKIAog
I3ByYWdtYSBtYXJrIC0KQEAgLTMwNDAsMTEgKzMwNTUsMTMgQEAgLSAodm9pZClfc2V0Q2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKICAgICBfcGFn
ZS0+c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwog
fQogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkg
PHJkYXI6Ly83NjY2MjY0ND4KIC0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgogewogICAgIHJl
dHVybiBbc2VsZiB0aGVtZUNvbG9yXTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tX
ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTcz
Mj4KIC0gKENvY29hQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAg
YXV0byBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0NjkyYWMz
NjIxYjkzYmVlY2MwLi43NThkMmM1NzJkZmEwYWJkNjkzOTc0ZWY2MTY4OWY2OWJlZjY2MmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTM4MCwxMCArMzgwLDExIEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfdGhlbWVDb2xvciBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJ0aGVtZUNvbG9yIiwgbWFjb3MoV0tfTUFDX1RCQSwg
V0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUNv
bG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdL
X0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBpb3MoV0tfSU9TX1RCQSwgV0tfSU9TX1RC
QSkpOwogI2Vsc2UKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBtYWNvcygxMC4x
MCwgV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIC8vIE9ubHkgc2V0IGlmIGAtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXWAgaXMgYSBwb3Np
dGl2ZSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCmluZGV4IGUwYWM5ZTlmMjM3NDA5ZGFhZTk4NTZlYmYyZmVjZWEyNWVmNjE3YWIu
LjMyY2Q2N2NmYzlmNzM3ZTI0Y2E5MThkMDE0ODAwZDliMjdhYTgwYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC00OTMsNyArNDkz
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
KFdLV2ViVmlldyAqd2ViVmlldykKICAgICBpZiAoIXdlYlZpZXctPl9wYWdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT5zY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT51bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGM4OGEzZDQyMzM5MzJmZDM1
NDAzYTcwMTczMmFiYTUyZmZkZWE5YjQuLjJhOThlZGUzMjIzNDFkYWJiYmEyZmY0YjcwZjAwZjQ4
YjlkYjYxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwor
Y2xhc3MgQ29sb3I7CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQ7CiB9CkBAIC01Myw2ICs1NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGhlbWVDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKICAgICB2
b2lkIHRoZW1lQ29sb3JEaWRDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvckRpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVkUGFnZVRvcENvbG9yV2ls
bENoYW5nZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZGRiNDFlYjRiNTY3ZTI3NTI3ZTg3YjVkOWI2
YTQxMGExNjQ2OTc3NC4uZDg1YTZlODk4ZTY0NWI3MjYxMjNhNmVjM2Y3NTI2Y2RiYWRhMDk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC00NywyMiArNDcsMzggQEAgUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VD
bGllbnRJbXBsQ29jb2EoKSA9IGRlZmF1bHQ7CiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnRo
ZW1lQ29sb3JXaWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZv
cktleTpAInRoZW1lQ29sb3IiXTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3RoZW1lQ29sb3IiXTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjp0aGVtZUNvbG9yRGlkQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IGRp
ZENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVDb2xvciJdOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAg
ICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAIl90aGVtZUNvbG9yIl07CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENo
YW5nZSgpCit7CisgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQoreworICAgIFttX3dlYlZpZXcgZGlkQ2hh
bmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwogdm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdl
KCkKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciJdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ckRpZENoYW5nZSgpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICAgICBb
bV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvciJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNDE3ZTEx
ZDQ5NjYwN2EzMDBjZmI2NWZlZDZjN2Y0Y2FjZTBjOTI2ZC4uYmE2MDkzMGM1NTA5MDk4ZDY3ZGZi
MDdlMTZlNWU5ZWI3YTY1NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtNDkwLDYgKzQ5MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpID0gMDsKICNlbmRpZgorCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpID0g
MDsKICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpAQCAtNTE0LDYg
KzUxNiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5n
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yRGlkQ2hhbmdlKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5k
ZXggNDhkOTQ2MzI3NTg0OWMwMmMyNjMwYzQ5YjQ5MWQ1MGY2NzEzNjMwZi4uMjMzMTkyYThmMTQx
MWU5NTY5YzkwYTE4MDA4NGI4MTNhN2IwZDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFZpZXdTbmFw
c2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2Vi
QmFja0ZvcndhcgogCiAgICAgc25hcHNob3QtPnNldFJlbmRlclRyZWVTaXplKHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKTsKICAgICBzbmFwc2hvdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
d2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHNuYXBzaG90LT5zZXRCYWNr
Z3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSk7Cisg
ICAgc25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKCkpOwogICAgIHNuYXBzaG90LT5zZXRWaWV3U2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KHdlYlBhZ2VQcm94eS52aWV3U2Nyb2xsUG9zaXRpb24o
KSkpOwogCiAgICAgaXRlbS5zZXRTbmFwc2hvdChXVEZNb3ZlKHNuYXBzaG90KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhk
NjRhMWRkZDc3ZDJmODA3YTA2MjdhLi45YmExMDJhZWNmNzZlMmEyNDU4MGNlZGJhZGE0ODRlZTdk
OWJjYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE5
MTMsMTUgKzE5MTMsNTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRl
cmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBXZWJQYWdlUHJveHk6OnVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV90aGVtZUNvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIG1fdGhlbWVDb2xvcjsKKyAgICBpZiAobV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwogCi0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV9zYW1w
bGVkUGFnZVRvcENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2FtcGxlZFBhZ2VU
b3BDb2xvcjsKKyAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgcmV0dXJuIHBsYXRmb3Jt
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShDb2xvciYmIG5ld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIGlmIChuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSA9PSBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpOworICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUgPSBzdGQ6OmV4Y2hhbmdlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUsIG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKTsKKyAgICBib29sIGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSAhZXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3Iob2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdURk1vdmUob2xk
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgaWYgKGNoYW5nZXNVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7CisKKyAgICBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlID0gV1RGTW92ZShuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7
CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFn
ZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOworCisgICAgaWYg
KG1faGFzUGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoID0gdHJ1ZTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faGFzUGVu
ZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2hhc1BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZVRvRGlzcGF0Y2ggPSBmYWxzZTsKKworICAgICAgICBkaWRDaGFuZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKKworICAgICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKQEAgLTg1NDcs
MTMgKzg1ODYsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRoZW1lQ29sb3JDaGFuZ2VkKGNvbnN0
IENvbG9yJiB0aGVtZUNvbG9yKQogICAgIHBhZ2VDbGllbnQoKS50aGVtZUNvbG9yRGlkQ2hhbmdl
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JE
aWRDaGFuZ2UoY29uc3QgQ29sb3ImIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoY29uc3Qg
Q29sb3ImIG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKIHsKLSAgICBpZiAobV9wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPT0gcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKQor
ICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9PSBuZXdQYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gb2xkVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7CisgICAgYXV0byBv
bGRQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBzdGQ6OmV4Y2hhbmdlKG1fcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yLCBuZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpOworICAg
IGJvb2wgY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9ICFlcXVhbElnbm9yaW5nU2Vt
YW50aWNDb2xvcihvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcigpKTsKKyAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IFdURk1vdmUo
b2xkUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yV2lsbENoYW5nZSgpOwogICAgIHBhZ2VDbGllbnQoKS5wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7Ci0gICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3IgPSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBtX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvciA9IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKworICAgIGlm
IChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCku
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAgICAgcGFnZUNsaWVudCgpLnBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOwogfQogCkBAIC04NTY3LDYgKzg2
MTcsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhbXBsZWRQYWdlVG9wQ29sb3JDaGFuZ2VkKGNv
bnN0IENvbG9yJiBzYW1wbGVkUGFnZVRvcENvbG9yKQogICAgIHBhZ2VDbGllbnQoKS5zYW1wbGVk
UGFnZVRvcENvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK0Nv
bG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAoreworICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKK30KKworI2VuZGlmIC8v
ICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdl
VVJMU3RyaW5nKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YjQ1N2RmYjYwMzFlZjYzOWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAyLi5iNjMxNjY5Zjg3Y2E1ZWM2
YjAyNTZiMmIzOWE0NzcxNDA2Mzc3YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNjY5LDcgKzY2OSw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkNvbG9y
IHNhbXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29s
b3I7IH0KIAotICAgIFdlYkNvcmU6OkNvbG9yIHNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7IH0KKyAg
ICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9y
JiYpOwogCiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmll
d1dpbGxFbmRMaXZlUmVzaXplKCk7CkBAIC0yMTA1LDYgKzIxMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKICAgICB2b2lk
IHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOwogICAgIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKKyAgICBXZWJDb3JlOjpDb2xvciBwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQg
ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogICAg
IHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1
cmVkKTsKQEAgLTI2NTAsMTAgKzI2NTMsMTMgQEAgcHJpdmF0ZToKICAgICBMYXllckhvc3RpbmdN
b2RlIG1fbGF5ZXJIb3N0aW5nTW9kZSB7IExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzcyB9Owog
CiAgICAgV2ViQ29yZTo6Q29sb3IgbV90aGVtZUNvbG9yOworICAgIFdlYkNvcmU6OkNvbG9yIG1f
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV91
bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fc2FtcGxlZFBhZ2VUb3BDb2xvcjsKIAorICAg
IGJvb2wgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rpc3Bh
dGNoIHsgZmFsc2UgfTsKKwogICAgIGJvb2wgbV91c2VGaXhlZExheW91dCB7IGZhbHNlIH07CiAg
ICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsKICAgICBPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAzZmJlMWIxN2ZmNjYwNDQ5ZTk5
M2VmN2U4YWZjMGJhMDAyNGZkODdhLi4zOWQzNzE3YTYzZDJhZDY2NDZiZDAzMmFiNDYxNmQ2MGVj
ZWJhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpIGZpbmFsOwogI2VuZGlmCiAK
KyAgICBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpIGZpbmFsOwor
CiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRh
aW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDQwYjc2MjM2
MzlmZmFkNDFiNDQyNDY4ZWIyZTE4MWFhMzRmMDE2NTMuLjdiOGI3N2NlODRmMTQ1ZTE5ZDYxZTE4
NThiZmJkNWVkZDliZmE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTEwMDUsNiArMTAwNSwxMSBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYQogICAgIFttX2NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzpX
VEZNb3ZlKGNhbGxiYWNrKV07CiB9CiAKK1dlYkNvcmU6OkNvbG9yIFBhZ2VDbGllbnRJbXBsOjpj
b250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpCit7CisgICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3
IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNzdjODA2ZDQyYTFjMTRiZmMyMDA1ODJm
YzhlY2Y3MzY2YzNiODA1ZC4uMzJiMGYyOGE1NmY2ZTc1ZWViZjU4ZTc1NTk1NjM2Y2RjNjE4MTlh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0xNTY0LDYgKzE1NjQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dEYXRhRGV0ZWN0
b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW4KICAgICBwYWdl
Q2xpZW50KCkuc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24ocG9zaXRp
b25JbmZvKTsKIH0KIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gY29udGVudFZpZXdCYWNrZ3JvdW5k
Q29sb3IgPSBwYWdlQ2xpZW50KCkuY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsgY29udGVu
dFZpZXdCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gY29udGVudFZp
ZXdCYWNrZ3JvdW5kQ29sb3I7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAg
IHJldHVybiBVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5DR0NvbG9yOworI2Vsc2UKKyAg
ICByZXR1cm4gVUlDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisjZW5kaWYKK30KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCmluZGV4IDY4YjA1ODhkN2E0NmRhNmMwNzI1YmQyZGM5ZjcxYTA4YWJmYmU4
ZGYuLjdjMDJhZThhMGQ0ZWQzODkzYmEzYjIwNzVkMDJmYWRjYWY5OGQ2ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNzEwLDYgKzcx
MCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3Vz
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZQogfQogI2VuZGlmCiAKK0NvbG9yIFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworI2lm
IEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHJldHVybiBOU0NvbG9yLmNvbnRyb2xCYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvcjsKKyNlbHNlCisgICAgcmV0dXJuIE5TQ29sb3Iud2hpdGVDb2xvci5D
R0NvbG9yOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA5ODY0NmZlNGI5N2ExMmJhNWVjZGEwZWNjN2U1MmExMzNiMGZjNDQ4Li4yNDM1
YjEzYWI2ODRiYWQwMDYxZGIyMmM4Y2Y5MDJlNTMwOGNiMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQ0OCw2ICsyNDQ4LDExIEBAIHZv
aWQgV2ViUGFnZTo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYW1lLCBjb25zdCBVc2VyRGF0CiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVNZXNz
YWdlVG9QYWdlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpz
ZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShXZWJDb3JlOjpDb2xvciYmIHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIG1fcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV1RGTW92ZSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
dmVycmlkZSkpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgV2ViUGFn
ZTo6c2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKiBwYWdlQmFubmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVlNDQ3M2FkYzRiOTgwZTBk
YjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLjE0ZjFmOWUwMjg4YjMzOGIxZDNjYjVkZTllZmNhMzcz
YjM4MDBmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTYwNyw2ICs2MDcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwb3N0SW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJik7
CiAKKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6
OkNvbG9yJiYpOworCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikgeyBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNv
bG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggZTM3YTY1OWM5MWIzODkyZTJiOGY5MzhjNjI2Y2RjZmU4OWU0MTkwNC4uM2I3
ZjcwNDEwMDU5ZDBhYjhlMjA1ZDJiNGJhZTBkYWRmMDAzYTZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zOSw2
ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRv
cENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAKICAgICBTZXRVbmRlcmxheUNvbG9y
KFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIFNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKFdlYkNvcmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQog
CiAgICAgVmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgIFZpZXdXaWxsRW5kTGl2ZVJlc2l6
ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZmU4MDhmZWUzNDZmODY3NzdiMjI2NjljMDViZTZlZDk0YjQwNzZlZS4uZTkzMGI1YWExOWM0OWNk
YjJjYWJhZWQwZmIwOTEwYmYwMDMwM2MzMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA1LTEwICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1Njgw
OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IubW06IFJlbmFtZWQgZnJvbSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0uCisg
ICAgICAgIChkZWZhdWx0QmFja2dyb3VuZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5PbkxvYWQpOgorICAgICAgICAoVEVTVC5X
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xlU29saWRDb2xvcik6IEFkZGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xl
QmxlbmRlZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzKTogQWRkZWQuCisgICAgICAgIChURVNU
LldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZUJsZW5kZWRDb2xvcnMp
OiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2Jz
ZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9i
amVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvci5LVk8pOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcpOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxlU3R5bGVzKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZp
ZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tOgorICAg
ICAgICAoY3JlYXRlV2ViVmlld1dpdGhTYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSk6
CisgICAgICAgIChURVNULlNhbXBsZWRQYWdlVG9wQ29sb3IuRXhwZXJpbWVudGFsVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xv
ci5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXcpOiBEZWxldGVkLgorICAgICAgICAoVEVTVC5X
S1dlYlZpZXcuRXhwZXJpbWVudGFsVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5n
cyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFu
ZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5v
dyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3Jv
bGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNS0xMCAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVmbGlnaHQgcmVxdWVz
dHMgbm90IHByb3Blcmx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRjY2MyOWU3M2MzYjMuLjBiYWVl
ZGU5N2E4ZjkyMmE3YjkxN2JiNTNhNDBmZDc4MmY2YmQyYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NzEsNyArODcxLDcgQEAKIAkJOTUwOTVGMjAyNjJGRkZBNTAwMDBEOTIwIC8qIFNh
bXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbSAqLzsgfTsKIAkJOTNGQ0RCMzQyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkNE
QjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi87IH07CiAJCTk1MEU0
Q0MxMjUyRTc1MjQwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlG
IC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi87IH07Ci0JCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3
MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovOyB9OworCQk5NTNBQkIzNTI1QzBENjgyMDA0
QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4
QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVB
NTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0
NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsKIAkJOTVCNkIzQjcyNTFFQkYy
RjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUI2QjNCNjI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1
bWVudC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1Rl
eHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07
CkBAIC0yNTY4LDcgKzI1NjgsNyBAQAogCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2Ft
cGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHls
dXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gaU9T
U3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTUzQUJCMzQy
NUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUzQUJCMzQyNUMwRDY4MTAw
NEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVBNTI0OTQyNTgxQTEw
RDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NUI2QjNCNjI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1bWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhRG9jdW1l
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhE
MTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNDgyLDcgKzM0ODIsNiBAQAogCQkJCTM3QTIyQUE1MURDQUEyNzIwMEFGQkZD
NCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFzaC5tbSAqLywKIAkJ
CQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovLAog
CQkJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRz
Lm1tICovLAotCQkJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IubW0gKi8sCiAJCQkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBhZ2VP
dmVybGF5UGx1Z2luLm1tICovLAogCQkJCTUxMjQyQ0RBMjM3Qjc5MUUwMEVFRDlDMSAvKiBQYWdl
Wm9vbS5tbSAqLywKIAkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRU
b2tlblBsdWdJbi5tbSAqLywKQEAgLTM2MjYsNiArMzYyNSw3IEBACiAJCQkJQ0Q3Rjg5REIyMkE4
NkNEQTAwRDY4M0FFIC8qIFdLV2ViVmlld1N1c3BlbmRBbGxNZWRpYVBsYXliYWNrLm1tICovLAog
CQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8s
CiAJCQkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0g
Ki8sCisJCQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gIldlYktpdCBDb2NvYSI7CiAJ
CQlwYXRoID0gV2ViS2l0Q29jb2E7CkBAIC01NTc4LDcgKzU1NzgsNiBAQAogCQkJCTBGMzQwNzc2
MjMwMzdGREMwMDYwQTFBMCAvKiBPdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBPdmVycmlkZUFwcGxlTGFuZ3Vh
Z2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQTI1ODZGMjI1QzY3REMwMEI0
NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdlR3Jv
dXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBh
Z2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3
QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC01ODYwLDYgKzU4NTksNyBAQAogCQkJCUNEN0Y4OURDMjJBODZDREEw
MEQ2ODNBRSAvKiBXS1dlYlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5YmFjay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5NUE1MjQ5NTI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJW
aWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRD
OEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Qzc0QzhGQTIyREZCQTk2MDBEQTJEQUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRw
b2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NTMyZjQ1YWMwOGE0ZTExOGQ5YzQxYWFjZWQ3NWNhMTEwNzgyMDAzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lt
cG9ydCAiQ29jb2FDb2xvci5oIgotI2ltcG9ydCAiVGVzdENvY29hLmgiCi0jaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotCi0jZGVmaW5lIEVYUEVDVF9OU1NUUklOR19FUShleHBlY3Rl
ZCwgYWN0dWFsKSBcCi0gICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsgXAotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwgKE5TU3RyaW5n
ICopYWN0dWFsKTsKLQotY29uc3RleHByIENHRmxvYXQgd2hpdGVDb2xvckNvbXBvbmVudHNbNF0g
PSB7IDEsIDEsIDEsIDEgfTsKLWNvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0
XSA9IHsgMSwgMCwgMCwgMSB9OwotY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50
c1s0XSA9IHsgMCwgMCwgMSwgMSB9OwotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ciwgT25Mb2FkKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byB3aGl0ZUNv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCB3aGl0ZUNv
bG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWlu
dDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOwot
Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwotCi0gICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRl
Q2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IG5vdC1iYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgd2hpdGVDb2xv
ci5nZXQoKSkpOwotfQotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciwgTXVsdGlw
bGVTdHlsZXMpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGJsdWVDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9y
Q29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAg
ICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwot
Ci0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29s
b3I6IHJlZDsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSA8L3N0eWxlPiJdOwot
Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKLX0KLQotQGlu
dGVyZmFjZSBXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5T
T2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJW
aWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7Ci0KLSAgICBfd2ViVmlldyA9
IHdlYlZpZXc7Ci0gICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAIl9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNv
bnRleHQKLXsKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtaW5pdCJd
KSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtbG9hZCJdKSB7
Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbG9hZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWFk
ZGVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAi
YmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1j
c3MtY2xhc3MtY2hhbmdlZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19z
dGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXSkgewotICAg
ICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUBlbmQK
LQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIEtWTykKLXsKLSAgICBhdXRvIHNS
R0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRv
IHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBy
ZWRDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0g
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBhdXRvIHRoZW1lQ29sb3JP
YnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoImFmdGVyLWluaXQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7
Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Jd
KTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbG9hZCJdOwot
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbElt
bWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkucmVkIHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gPC9zdHls
ZT4iXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxvYWQiLCBbdGhlbWVDb2xvck9i
c2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdl
dCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1j
bGFzcy1hZGRlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07Ci0gICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXIt
Y3NzLWNsYXNzLWFkZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAgIEVYUEVD
VF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt0aGVtZUNvbG9yT2Jz
ZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXTsKLSAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAnYmx1ZSciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCIsIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVD
b2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9y
ZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07Ci0gICAgW3dlYlZpZXcg
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Ci0g
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci19CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9w
Q29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQ
YWdlVG9wQ29sb3IubW0KaW5kZXggN2YyNzIxYjY1YzA3MDIyMTM5NDI1OWQ2YjA3YWE2MmJlOTNj
NzIyMS4uOGIzZjExOGNkYzM4Mzk5Yjc2YzliZDIyMmJmNDI4ZjU4NTg4MTQ2MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENv
bG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxl
ZFBhZ2VUb3BDb2xvci5tbQpAQCAtODEsMjAgKzgxLDEyIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdl
OihOCiAKIEBlbmQKIAotZW51bSBjbGFzcyBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VUb3BDb2xvck1heERp
ZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlLCBkb3VibGUg
c2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yID0gVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKQorc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBj
cmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKGRvdWJsZSBz
YW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29s
b3JNaW5IZWlnaHQgPSAwKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
X3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlOnNhbXBsZWRQYWdlVG9wQ29sb3JN
YXhEaWZmZXJlbmNlXTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2FtcGxlZFBhZ2VUb3BDb2xv
ck1pbkhlaWdodDpzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0XTsKIAotICAgIGZvciAoX1dL
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2ludGVybmFs
RGVidWdGZWF0dXJlc10pIHsKLSAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJp
bmc6QCJVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciJd
KSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
Oih1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9PSBV
c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKSBm
b3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogfQogCkBAIC0zNTgsMzQgKzM1MCwzIEBAIFRFU1QoU2Ft
cGxlZFBhZ2VUb3BDb2xvciwgRElTQUJMRURfRGlzcGxheVAzKQogICAgIEVYUEVDVF9JTl9SQU5H
RShjb21wb25lbnRzWzJdLCAxLjAwLCAxLjAxKTsKICAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1sz
XSwgMSk7CiB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQ
SS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBt
YWNPUy4KLQotVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBFeHBlcmltZW50YWxVc2VTYW1wbGVk
UGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHdl
YlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVh
dGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKDUsIDAsIFVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAg
RVhQRUNUX05VTEwoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3Jv
dW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRN
TEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0p
XTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVYUEVDVF9FUShX
ZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6
OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdl
Rm9ySFRNTCh3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENv
bG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsg
InJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJW
aWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVk
UGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci0gICAgRVhQRUNU
X0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSwgV2Vi
Q29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIGF1dG8gd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9y
U2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VU
b3BDb2xvck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRo
VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29s
b3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0
Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dp
dGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BD
b2xvcl0pOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29s
b3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxl
ZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JT
dG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdl
YkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJl
ZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5D
R0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCmluZGV4IGI1N2VkYTcxODM0NTkwMTUw
Zjg3NTk0YWFkNDE2MDIwZWZkMzQzZTkuLjNkYmQ4NjMwMTVhYzJjZjRlNzE0MDUwZDc1ZDBjOWMy
NTliNmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAgLTMyMSw1MiArMzIxLDMgQEAg
VEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE92ZXJyaWRlc0FwcGxpY2F0aW9u
TWFuaWZlc3QpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0K
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KLQotZW51
bSBjbGFzcyBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wg
eyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZp
ZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBm
b3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9p
bnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0gICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVh
bFRvU3RyaW5nOkAiVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IiXSkg
ewotICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDoo
dXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPT0gVXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1
cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLX0KLQotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBFeHBlcmltZW50YWxVc2VUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHNSR0JDb2xvclNw
YWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JH
QikpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gYmx1ZUNvbG9yID0g
YWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21w
b25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91
dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLQot
ICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxk
RnJhbWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0g
ICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENv
bG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkp
KTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVk
Jz48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0gICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkp
OwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRob3V0VGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3Vu
ZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgYXV0byB3ZWJWaWV3V2l0
aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gY3JlYXRlV2ViVmlldyhV
c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKTsKLSAgICBFWFBF
Q1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGls
QWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotICAgIEVYUEVDVF9UUlVF
KENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVD
b2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250
ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdl
dCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhU
aGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLX0KLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NmRlODg5ODI0YzUxY2Y3NTE3YTQ3NGQ0MzRhNDYzYWVk
YWYyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQpAQCAtMCwwICsxLDMz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJDb2NvYUNv
bG9yLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNkZWZpbmUgRVhQRUNUX0lOX1JBTkdFKGFjdHVhbCwgbWluLCBtYXgpIFwKKyAg
ICBFWFBFQ1RfR0UoYWN0dWFsLCBtaW4pOyBcCisgICAgRVhQRUNUX0xFKGFjdHVhbCwgbWF4KTsK
KworI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorICAgIEVY
UEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7IFwKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmluZyAqKWFjdHVhbCk7CisKK2NvbnN0
ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9OworY29u
c3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwgMSB9Owor
CitzdGF0aWMgUmV0YWluUHRyPENvY29hQ29sb3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoVGVz
dFdLV2ViVmlldyAqd2ViVmlldykKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlm
IChXS0NvbnRlbnRWaWV3ICpjb250ZW50VmlldyA9IHdlYlZpZXcud2tDb250ZW50Vmlldykgewor
ICAgICAgICBpZiAoQ29jb2FDb2xvciAqY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBjb250
ZW50Vmlldy5iYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgICAgICByZXR1cm4gY29udGVudFZpZXdC
YWNrZ3JvdW5kQ29sb3I7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0od2ViVmlldyk7
CisjZW5kaWYKKworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1B
QykKKyAgICByZXR1cm4gTlNDb2xvci5jb250cm9sQmFja2dyb3VuZENvbG9yOworI2VsaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1
cm4gVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5kQ29sb3I7CisjZWxzZQorICAgIHJldHVybiBbQ29j
b2FDb2xvciB3aGl0ZUNvbG9yXTsKKyNlbmRpZgorfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciwgT25Mb2FkKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CisgICAgTlNMb2coQCI2NiAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5n
ZXQoKSkgQ0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dl
YlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91
bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworfQorCitURVNUKFdLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvciwgU2luZ2xlU29saWRDb2xvcikKK3sKKyAgICBhdXRvIHNS
R0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUo
c1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0xvZyhAIjc2ICVAIHZzICVAIiwgW3dl
YlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91
bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Is
IFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1l
ZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjog
cmVkOyB9IDwvc3R5bGU+Il07CisgICAgTlNMb2coQCI4MCAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpOworICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvciwgU2luZ2xlQmxlbmRlZENvbG9yKQoreworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNMb2coQCI4NyAlQCB2cyAlQCIsIFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3Jv
dW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9y
LCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1t
ZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMjU1LCAwLCAwLCAwLjUpOyB9IDwvc3R5bGU+Il07CisgICAgTlNMb2coQCI5MSAlQCIs
IFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcik7CisgICAgYXV0byBj
b21wb25lbnRzID0gQ0dDb2xvckdldENvbXBvbmVudHMoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yXS5DR0NvbG9yKTsKKyAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1swXSwgMSk7Cisg
ICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMV0sIDAuNDUsIDAuNTUpOworICAgIEVYUEVD
VF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAwLjQ1LCAwLjU1KTsKKyAgICBFWFBFQ1RfRVEoY29t
cG9uZW50c1szXSwgMSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yLCBNdWx0aXBsZVNvbGlkQ29sb3JzKQoreworICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBh
ZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Cisg
ICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5n
ZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKV0pOworICAgIE5TTG9nKEAiMTA1ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3
LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihb
d2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dy
b3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1l
c1BhaW50OkAiPHN0eWxlPiBodG1sIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSBib2R5IHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5bGU+Il07CisgICAgTlNMb2coQCIxMDkgJUAg
dnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENv
bG9yLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKK30K
KworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE11bHRpcGxlQmxlbmRl
ZENvbG9ycykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5T
TG9nKEAiMTE2ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcu
Z2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBo
dG1sIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuNSk7IH0gYm9keSB7IGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMjU1LCAwLjUpOyB9IDwvc3R5bGU+Il07CisgICAg
TlNMb2coQCIxMjAgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IpOworICAgIGF1dG8gY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKFt3ZWJWaWV3
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcik7CisgICAgRVhQRUNUX0lOX1JBTkdF
KGNvbXBvbmVudHNbMF0sIDAuNDUsIDAuNTUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25l
bnRzWzFdLCAwLjIsIDAuMjUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAw
LjcsIDAuNzUpOworICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworQGludGVy
ZmFjZSBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5TT2JqZWN0
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJWaWV3Owor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKKworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7CisKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7
CisgICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvciIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBj
b250ZXh0Om5pbF07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFu
Z2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAg
IGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1pbml0Il0pIHsKKyAgICAgICAg
X3N0YXRlID0gQCJhZnRlci1pbml0IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXSkgewor
ICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1hZGRlZCI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3Nz
LWNsYXNzLWNoYW5nZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1j
aGFuZ2VkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1
YWxUb1N0cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtcmVtb3ZlZCJdKSB7CisgICAgICAgIF9zdGF0
ZSA9IEAiYWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vbm51bGwtb3ZlcnJp
ZGUiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAi
YmVmb3JlLW51bGwtb3ZlcnJpZGUiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW51bGwt
b3ZlcnJpZGUiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRVhQRUNUX05TU1RSSU5H
X0VRKCJub3QtcmVhY2hlZCIsIF9zdGF0ZSk7Cit9CisKK0BlbmQKKworVEVTVChXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIEtWTykKK3sKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNl
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikp
OworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3Bh
Y2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAgIGF1dG8gYmx1ZUNvbG9yID0gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21wb25l
bnRzKSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8g
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJW
aWV3LmdldCgpXSk7CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1pbml0IiwgW3VuZGVy
UGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIxOTggJUAg
dnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZh
dWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKTsKKyAgICBFWFBFQ1Rf
VFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xv
cl0pKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpA
InNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4g
Ym9keS5yZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gYm9keS5ibHVlIHsgYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsgfSA8L3N0eWxlPiJdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hv
dWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVd
KTsKKyAgICBOU0xvZyhAIjIwNCAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkg
Q0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xv
cih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1hZGRlZCJdOworICAgIFt3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNz
TmFtZSA9ICdyZWQnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRh
dGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLWFkZGVkIiwgW3Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIyMTEg
JUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJW
aWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsK
KworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3Vs
ZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
OltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3IuZ2V0KCldXTsKKyAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIyMTcgJUAgdnMgJUAiLCBbd2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07Cisg
ICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOm5pbF07CisgICAgRVhQRUNU
X05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjIzICVAIHZzICVAIiwgW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQi
XTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5jbGFzc05hbWUgPSAnYmx1ZSciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNl
bnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3Mt
Y2hhbmdlZCIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAg
IE5TTG9nKEAiMjMwICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVh
bFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVl
Q29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
ZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Ymx1ZUNvbG9yLmdl
dCgpXV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjM2ICVA
IHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVl
Q29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsK
KworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3Vs
ZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
Om5pbF07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjQyICVA
IHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVl
Q29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsK
KworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9y
ZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07CisgICAgW3dlYlZpZXcg
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2
ZXIgc3RhdGVdKTsKKyAgICBOU0xvZyhAIjI0OSAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmll
dy5nZXQoKSkgQ0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tn
cm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAg
ICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6ZGVmYXVsdEJhY2tncm91bmRD
b2xvcih3ZWJWaWV3LmdldCgpKS5nZXQoKV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91
bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0p
OworICAgIE5TTG9nKEAiMjU1ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBD
R0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9y
KHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3
IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9OU1NUUklOR19F
USgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIg
c3RhdGVdKTsKKyAgICBOU0xvZyhAIjI2MSAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5n
ZXQoKSkgQ0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dl
YlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91
bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLW5vbm51bGwtb3ZlcnJpZGUiXTsK
KyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29s
b3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItbm9ubnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZl
ciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjY3ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3
IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9y
OnJlZENvbG9yLmdldCgpXV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNo
YW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5T
TG9nKEAiMjczICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yLCByZWRDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9y
LmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3Rh
dGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07CisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklO
R19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2
ZXIgc3RhdGVdKTsKKyAgICBOU0xvZyhAIjI4MCAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9U
UlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAnYmx1ZSciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjg3ICVAIHZzICVA
IiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNo
YW5nZSJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFu
Z2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBOU0xv
ZyhAIjI5NCAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dD
b2xvciwgcmVkQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRl
OkAiYmVmb3JlLW51bGwtb3ZlcnJpZGUiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLW51bGwtb3Zl
cnJpZGUiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBO
U0xvZyhAIjMwMCAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0p
OworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3
LmdldCgpKSBDR0NvbG9yXSkpOworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworLy8g
VGhlcmUncyBubyBBUEkvU1BJIHRvIGdldCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgc2Ny
b2xsIGFyZWEgb24gbWFjT1MuCisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yLCBNYXRjaGVzU2Nyb2xsVmlldykKK3sKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRv
cHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAg
IGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0
KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAgIGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihD
R0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5TTG9nKEAiMzE1
ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBb
ZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENH
Q29sb3JdKSk7CisgICAgTlNMb2coQCIzMTcgJUAgdnMgJUAiLCBbd2ViVmlldyBzY3JvbGxWaWV3
XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmll
dy5nZXQoKSkgQ0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIFtkZWZhdWx0QmFj
a2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZy
YW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5
bGU+Il07CisgICAgTlNMb2coQCIzMjEgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dD
b2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKyAgICBOU0xvZyhAIjMyMyAlQCB2cyAlQCIsIFt3ZWJW
aWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3
XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt3ZWJW
aWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0Nv
bG9yOmJsdWVDb2xvci5nZXQoKV1dOworICAgIE5TTG9nKEAiMzI3ICVAIHZzICVAIiwgW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpOwor
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKKyAgICBOU0xvZyhAIjMy
OSAlQCB2cyAlQCIsIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9y
LCBibHVlQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5n
ZXQoKSkpOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428352</attachid>
            <date>2021-05-12 00:51:59 -0700</date>
            <delta_ts>2021-05-12 11:32:17 -0700</delta_ts>
            <desc>[Patch] logging for EWS</desc>
            <filename>bug-225615-20210512015158.patch</filename>
            <type>text/plain</type>
            <size>78103</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmI5MGEyOWZhMDBmNjljZGZkYjM0OGMxNDA1NzA3MTQ5NTAzZGQyNi4uNGFiYzcyMzcw
OTdmM2U1Y2E2NWQ4MmVhY2EzNjE0MWY0ZjZkZThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgYFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVJgIHNob3VsZCBwcmludCB0
aGUgUElEIGJlZm9yZSBzbGVlcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2MzZlYTQ3ZTAyNDJmOWJlMTcx
MTIwNzkxYjZhMWQ3MTg5NjUxM2YuLmMxMTJlMzYwOTFiNWQwYmNkNDI5MjMyNTFkOTk3MTcyYzcy
NzIyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBgLVtXS1dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBgLVtXS1dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTY4MDk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRoYXQg
d2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9zdCBy
ZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFja2dy
b3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0aGUg
Y3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAgICAg
ICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisgICAg
ICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBlZmZl
Y3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAgICBU
ZXN0czogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZAorICAgICAgICAg
ICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IK
KyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVC
bGVuZGVkQ29sb3IKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzCisgICAgICAgICAgICAgICBX
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuS1ZPCisgICAgICAgICAgICAgICBXS1dl
YlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcKKworICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpOiBBZGRlZC4KKyAgICAgICAgSG9sZCB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBm
b3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVu
CisgICAgICAgIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBs
ZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAg
YFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGll
bnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFj
a2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOl1gLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIEl0J3Mgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeSB0byBmb3JjZSB0aGUgb3ZlcnNjcm9sbCBhcmVhIHRvIHJlZHJhdyBzaW5jZSB0aGF0
J2xsIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgYSBjbGllbnQgY2FsbGluZyBgLVtXS1dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gIChwb3NzaWJseSBpbiByZXNwb25zZSB0byBh
CisgICAgICAgIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9yXWAgS1ZPIG5vdGlmaWNhdGlvbikuCisK
IDIwMjEtMDUtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlciByYXRoZXIgdGhhbiBJbWFnZURhdGEgaW4gcGxhdGZvcm0vIGNvZGUgdG8g
Zml4IGxheWVyaW5nIHZpb2xhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZjQ1ZDBkOWY4ODJjMzUxMTE4ODFl
NjQ2MDU2ZGMwOGNkOTI0ZDI0Li5kNjU5MmNkZWU4ZGY0OThlZmNjMTNhZWZmZmQyM2RjNDBlYzU2
MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA1LTEwICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NjgwOTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIGB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxs
IHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisgICAgICAgICAtIHRoZSBtb3N0IHJlY2Vu
dCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAgICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5k
LWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJy
ZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yYCkKKyAgICAgICAgIC0g
dGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAg
TW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCB1
bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBydW5sb29wLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpdKTogQWRkZWQuCisgICAgICAgICgrW1dLV2ViVmlldyBhdXRvbWF0aWNhbGx5Tm90aWZp
ZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOiBBZGRlZC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGJhc2VTY3Jv
bGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBg
VXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVu
dHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNr
Z3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6XWAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAgICBTdG9yZSB0aGUgY2xpZW50LW92ZXJy
aWRlbiB2YWx1ZSBmb3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgYW5kIG1hbmFnZSBzdGF0
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6IEFk
ZGVkLgorICAgICAgICBBZGQgT2JqQyBLVk8gc3VwcG9ydCBmb3IgYC1bV0tXZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcik6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgYGJhY2tn
cm91bmRDb2xvcmAgb2YgdGhlIGBXS0NvbnRlbnRWaWV3YC4gVGhpcyBpcyBuZWVkZWQgb24gaU9T
CisgICAgICAgIGJlY2F1c2UgYHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3JgIChub3cgYFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgKQorICAgICAgICB3b3Vs
ZCB1c2UgdGhpcyB2YWx1ZSBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZSB1bmRlcmx5aW5nIHBs
YXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKTogQWRkZWQuCisgICAgICAgIFBhc3MgdGhlIGNsaWVudC1vdmVycmlkZW4gdmFsdWUgZm9y
IGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIHRvIHRoZSBXZWJQcm9jZXNzIHNvIHRoYXQgaXQK
KyAgICAgICAgY2FuIGJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBvdmVyc2Nyb2xsIGxheWVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgR28gYmFj
ayB0byB1c2luZyB0aGUgYHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmAgKGJlZm9yZSByMjcz
MDgzKS4KKwogMjAyMS0wNS0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIFBpeGVsQnVmZmVyIHJhdGhlciB0aGFuIEltYWdlRGF0YSBpbiBwbGF0Zm9ybS8g
Y29kZSB0byBmaXggbGF5ZXJpbmcgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCBi
NTk4YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3Li5mYTFkN2IxMTg2NTg5MjQ3
MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTc2MCwz
MCArNzYwLDYgQEAgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ6CiAgICAgV2Vi
S2l0OgogICAgICAgZGVmYXVsdDogZGVmYXVsdFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCkKIAotVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJVc2Ugc2FtcGxlZCBw
YWdlIHRvcCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiVXNlIHNhbXBsZWQgcGFnZSB0b3AgY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KLVVzZVRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVXNlIHRoZW1lLWNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9y
IgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KICMgRklYTUU6IFJlbW92
ZSBvbmNlIDxyZGFyOi8vNzM4MzA5NjE+IGhhcyBiZWVuIGZpeGVkCiBVc2VpVHVuZXNBVk91dHB1
dENvbnRleHQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNlMTFm
NDllYTdmZjQ5YjBjZjA2YmI3M2VlMDk3MTk2OTk5YzE5N2QuLmI2OTY2ZmM5YjNjODY2M2M2Mjlm
NTYzZjI4OWI4NjZlZDA0YzI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzkwMSwx
MyArMzkwMSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIAogICAgIGlm
IChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOwotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQot
ICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7Ci0gICAgICAgIGlmICh2aWV3LT51
c2VzQ29tcG9zaXRpbmcoKSkKLSAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkUGFnZVNhbXBs
ZUxvY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNGIxZGI0NmUwMzMyYTRkOGU0YWI5ZGU3NTg1Zjk0YmYxZTU5
Y2IyZS4uNmE3ZmM1YjE4ZTRjMTE4ZThmYjU2ZTlmMmRlYzVlNDBjMGJhOWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNTYzLDYgKzI1NjMsMjUgQEAgQ29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VU
b3BDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50LT5zYW1wbGVkUGFnZVRvcENvbG9y
KCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKK3sKKyAgICBpZiAodW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZSA9IFdURk1vdmUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
OworCisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKKworI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKKyAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFt
ZSgpLnZpZXcoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKSkgeworICAgICAgICAgICAgaWYgKHJlbmRlclZpZXctPnVzZXNDb21wb3Np
dGluZygpKQorICAgICAgICAgICAgICAgIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCit9CisKIC8vIFRoZXNlIGFyZSBtYWdp
Y2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGljIGNv
bnN0IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNmRkMDdlMWJhOTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uMzFhNDJhOTcxMWFl
ZGMxODdmNTczMmI3ZDZlMGZkNmQ1ZTQxMGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYyMyw2ICs2
MjMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Igc2FtcGxlZFBh
Z2VUb3BDb2xvcigpIGNvbnN0OwogCisgICAgQ29sb3IgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZShDb2xvciYmKTsKKwogICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQogICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cygpOwpAQCAtMTE1Miw2ICsxMTU1LDggQEAgcHJpdmF0ZToKIAogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCisgICAgQ29s
b3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsKKwogICAgIGNvbnN0IGJvb2wg
bV9odHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9u
R3JvdXBJZGVudGlmaWVyIG1fbWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggZjg3NzQ1NzJiNGI1MmU0YWE3OTFmYzg3YmY4NTJiMDZmY2MyZTIxYy4uZTliZDhhOTkzMThj
MzQ0NjhmMzFiYTdkYThmYjY2MGQ1ZDc4ZjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM5MjMsMTEgKzM5MjMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFz
QmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIW1fbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKHBhZ2Uo
KS5zZXR0aW5ncygpLnVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkp
Ci0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IHBhZ2UoKS50aGVtZUNvbG9yKCk7Ci0gICAgaWYg
KHBhZ2UoKS5zZXR0aW5ncygpLnVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yKCkgJiYgIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGJh
Y2tncm91bmRDb2xvciA9IHBhZ2UoKS5zYW1wbGVkUGFnZVRvcENvbG9yKCk7CisgICAgYXV0byBi
YWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
KTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IG1fcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZjk5YWRiZTYxZDRmZGVi
MDY3Y2FhMjZhMjEwNWI5YWI0NmRkYzFkOC4uYWE5YTY3ZTc2ZmE0MDgxN2VkYzhhNDJhMWM1NGNl
MTdlYzUxNTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcuaApAQCAtNTgwLDYgKzU4MCwyMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIg
a1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNDb2xvciAqdGhlbWVDb2xv
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKICNlbmRpZgogCisvKiEgQGFi
c3RyYWN0IFRoZSBjb2xvciBkcmF3biBiZWhpbmQgdGhlIGFjdGl2ZSBwYWdlLgorIEBkaXNjdXNz
aW9uIEEgY29sb3IgZGVyaXZlZCBmcm9tIHRoZSBjb250ZW50IG9mIHRoZSBhY3RpdmUgcGFnZSwg
c3VjaCBhcyBieSBibGVuZGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorIHRoZSA8aHRtbD4g
YW5kIDxib2R5PiBlbGVtZW50cyB3aXRoIHRoZSBAbGluayBiYWNrZ3JvdW5kQ29sb3IgQC9saW5r
IG9mIHRoaXMgQGxpbmsgV0tXZWJWaWV3IEAvbGluay4gVXNlZCBhcworIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHVuZGVyIHRoZSBwYWdlJ3MgY29udGVudCwgc3VjaCBhcyBmb3Igc2Nyb2xsIGJvdW5j
aW5nIGFyZWFzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKKyBvd25lciBhcHBsaWNhdGlvbiBm
b3IgY3VzdG9tIHN0eWxpbmcgd2l0aG91dCBoYXZpbmcgdG8gbW9kaWZ5IHRoZSBwYWdlJ3Mgc3R5
bGUuCisgdGhlIGJhY2tncm91bmQgb2Ygc2Nyb2xsIGJvdW5jaW5nIGFyZWFzLgorIEBsaW5rIFdL
V2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQgZm9y
IHRoaXMgcHJvcGVydHkuCisgKi8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5v
bmF0b21pYywgbnVsbF9yZXNldHRhYmxlLCBjb3B5KSBVSUNvbG9yICp1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworI2Vsc2UKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsX3Jlc2V0dGFibGUsIGNvcHkpIE5TQ29sb3IgKnVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKyNl
bmRpZgorCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjU4MjQxM2FjYWNlMWQzNTNi
ZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4uZjQxZDNmM2NkY2Y4N2NhODgzOGMxMDhhYTQwOTUzZDUz
MzI5OGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNjc3LDYgKzE2NzcsMjEgQEAgLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IK
ICAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcih0aGVtZUNvbG9yKTsKIH0KIAorLSAo
Q29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBXZWJD
b3JlOjpwbGF0Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSk7Cit9
CisKKy0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKK3sKKyAgICBfcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUu
Q0dDb2xvcik7Cit9CisKKysgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzT2ZV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gTk87Cit9CisKIEBlbmQKIAog
I3ByYWdtYSBtYXJrIC0KQEAgLTMwNDAsMTEgKzMwNTUsMTMgQEAgLSAodm9pZClfc2V0Q2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKICAgICBfcGFn
ZS0+c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwog
fQogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkg
PHJkYXI6Ly83NjY2MjY0ND4KIC0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgogewogICAgIHJl
dHVybiBbc2VsZiB0aGVtZUNvbG9yXTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tX
ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTcz
Mj4KIC0gKENvY29hQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAg
YXV0byBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0NjkyYWMz
NjIxYjkzYmVlY2MwLi43NThkMmM1NzJkZmEwYWJkNjkzOTc0ZWY2MTY4OWY2OWJlZjY2MmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTM4MCwxMCArMzgwLDExIEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfdGhlbWVDb2xvciBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJ0aGVtZUNvbG9yIiwgbWFjb3MoV0tfTUFDX1RCQSwg
V0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUNv
bG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdL
X0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBpb3MoV0tfSU9TX1RCQSwgV0tfSU9TX1RC
QSkpOwogI2Vsc2UKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBtYWNvcygxMC4x
MCwgV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIC8vIE9ubHkgc2V0IGlmIGAtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXWAgaXMgYSBwb3Np
dGl2ZSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCmluZGV4IGUwYWM5ZTlmMjM3NDA5ZGFhZTk4NTZlYmYyZmVjZWEyNWVmNjE3YWIu
LjMyY2Q2N2NmYzlmNzM3ZTI0Y2E5MThkMDE0ODAwZDliMjdhYTgwYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC00OTMsNyArNDkz
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
KFdLV2ViVmlldyAqd2ViVmlldykKICAgICBpZiAoIXdlYlZpZXctPl9wYWdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT5zY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT51bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGM4OGEzZDQyMzM5MzJmZDM1
NDAzYTcwMTczMmFiYTUyZmZkZWE5YjQuLjJhOThlZGUzMjIzNDFkYWJiYmEyZmY0YjcwZjAwZjQ4
YjlkYjYxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwor
Y2xhc3MgQ29sb3I7CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQ7CiB9CkBAIC01Myw2ICs1NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGhlbWVDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKICAgICB2
b2lkIHRoZW1lQ29sb3JEaWRDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvckRpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVkUGFnZVRvcENvbG9yV2ls
bENoYW5nZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZGRiNDFlYjRiNTY3ZTI3NTI3ZTg3YjVkOWI2
YTQxMGExNjQ2OTc3NC4uZDg1YTZlODk4ZTY0NWI3MjYxMjNhNmVjM2Y3NTI2Y2RiYWRhMDk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC00NywyMiArNDcsMzggQEAgUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VD
bGllbnRJbXBsQ29jb2EoKSA9IGRlZmF1bHQ7CiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnRo
ZW1lQ29sb3JXaWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZv
cktleTpAInRoZW1lQ29sb3IiXTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3RoZW1lQ29sb3IiXTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjp0aGVtZUNvbG9yRGlkQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IGRp
ZENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVDb2xvciJdOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAg
ICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAIl90aGVtZUNvbG9yIl07CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENo
YW5nZSgpCit7CisgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQoreworICAgIFttX3dlYlZpZXcgZGlkQ2hh
bmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwogdm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdl
KCkKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciJdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ckRpZENoYW5nZSgpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICAgICBb
bV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvciJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNDE3ZTEx
ZDQ5NjYwN2EzMDBjZmI2NWZlZDZjN2Y0Y2FjZTBjOTI2ZC4uYmE2MDkzMGM1NTA5MDk4ZDY3ZGZi
MDdlMTZlNWU5ZWI3YTY1NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtNDkwLDYgKzQ5MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpID0gMDsKICNlbmRpZgorCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpID0g
MDsKICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpAQCAtNTE0LDYg
KzUxNiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5n
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yRGlkQ2hhbmdlKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5k
ZXggNDhkOTQ2MzI3NTg0OWMwMmMyNjMwYzQ5YjQ5MWQ1MGY2NzEzNjMwZi4uMjMzMTkyYThmMTQx
MWU5NTY5YzkwYTE4MDA4NGI4MTNhN2IwZDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFZpZXdTbmFw
c2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2Vi
QmFja0ZvcndhcgogCiAgICAgc25hcHNob3QtPnNldFJlbmRlclRyZWVTaXplKHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKTsKICAgICBzbmFwc2hvdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
d2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHNuYXBzaG90LT5zZXRCYWNr
Z3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSk7Cisg
ICAgc25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKCkpOwogICAgIHNuYXBzaG90LT5zZXRWaWV3U2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KHdlYlBhZ2VQcm94eS52aWV3U2Nyb2xsUG9zaXRpb24o
KSkpOwogCiAgICAgaXRlbS5zZXRTbmFwc2hvdChXVEZNb3ZlKHNuYXBzaG90KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhk
NjRhMWRkZDc3ZDJmODA3YTA2MjdhLi45YmExMDJhZWNmNzZlMmEyNDU4MGNlZGJhZGE0ODRlZTdk
OWJjYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE5
MTMsMTUgKzE5MTMsNTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRl
cmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBXZWJQYWdlUHJveHk6OnVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV90aGVtZUNvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIG1fdGhlbWVDb2xvcjsKKyAgICBpZiAobV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwogCi0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV9zYW1w
bGVkUGFnZVRvcENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2FtcGxlZFBhZ2VU
b3BDb2xvcjsKKyAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgcmV0dXJuIHBsYXRmb3Jt
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShDb2xvciYmIG5ld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIGlmIChuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSA9PSBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpOworICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUgPSBzdGQ6OmV4Y2hhbmdlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUsIG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKTsKKyAgICBib29sIGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSAhZXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3Iob2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdURk1vdmUob2xk
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgaWYgKGNoYW5nZXNVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7CisKKyAgICBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlID0gV1RGTW92ZShuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7
CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFn
ZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOworCisgICAgaWYg
KG1faGFzUGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoID0gdHJ1ZTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faGFzUGVu
ZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2hhc1BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZVRvRGlzcGF0Y2ggPSBmYWxzZTsKKworICAgICAgICBkaWRDaGFuZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKKworICAgICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKQEAgLTg1NDcs
MTMgKzg1ODYsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRoZW1lQ29sb3JDaGFuZ2VkKGNvbnN0
IENvbG9yJiB0aGVtZUNvbG9yKQogICAgIHBhZ2VDbGllbnQoKS50aGVtZUNvbG9yRGlkQ2hhbmdl
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JE
aWRDaGFuZ2UoY29uc3QgQ29sb3ImIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoY29uc3Qg
Q29sb3ImIG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKIHsKLSAgICBpZiAobV9wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPT0gcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKQor
ICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9PSBuZXdQYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gb2xkVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7CisgICAgYXV0byBv
bGRQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBzdGQ6OmV4Y2hhbmdlKG1fcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yLCBuZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpOworICAg
IGJvb2wgY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9ICFlcXVhbElnbm9yaW5nU2Vt
YW50aWNDb2xvcihvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcigpKTsKKyAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IFdURk1vdmUo
b2xkUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yV2lsbENoYW5nZSgpOwogICAgIHBhZ2VDbGllbnQoKS5wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7Ci0gICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3IgPSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBtX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvciA9IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKworICAgIGlm
IChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCku
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAgICAgcGFnZUNsaWVudCgpLnBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOwogfQogCkBAIC04NTY3LDYgKzg2
MTcsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhbXBsZWRQYWdlVG9wQ29sb3JDaGFuZ2VkKGNv
bnN0IENvbG9yJiBzYW1wbGVkUGFnZVRvcENvbG9yKQogICAgIHBhZ2VDbGllbnQoKS5zYW1wbGVk
UGFnZVRvcENvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK0Nv
bG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAoreworICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKK30KKworI2VuZGlmIC8v
ICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdl
VVJMU3RyaW5nKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YjQ1N2RmYjYwMzFlZjYzOWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAyLi5iNjMxNjY5Zjg3Y2E1ZWM2
YjAyNTZiMmIzOWE0NzcxNDA2Mzc3YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNjY5LDcgKzY2OSw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkNvbG9y
IHNhbXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29s
b3I7IH0KIAotICAgIFdlYkNvcmU6OkNvbG9yIHNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7IH0KKyAg
ICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9y
JiYpOwogCiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmll
d1dpbGxFbmRMaXZlUmVzaXplKCk7CkBAIC0yMTA1LDYgKzIxMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKICAgICB2b2lk
IHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOwogICAgIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKKyAgICBXZWJDb3JlOjpDb2xvciBwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQg
ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogICAg
IHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1
cmVkKTsKQEAgLTI2NTAsMTAgKzI2NTMsMTMgQEAgcHJpdmF0ZToKICAgICBMYXllckhvc3RpbmdN
b2RlIG1fbGF5ZXJIb3N0aW5nTW9kZSB7IExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzcyB9Owog
CiAgICAgV2ViQ29yZTo6Q29sb3IgbV90aGVtZUNvbG9yOworICAgIFdlYkNvcmU6OkNvbG9yIG1f
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV91
bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fc2FtcGxlZFBhZ2VUb3BDb2xvcjsKIAorICAg
IGJvb2wgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rpc3Bh
dGNoIHsgZmFsc2UgfTsKKwogICAgIGJvb2wgbV91c2VGaXhlZExheW91dCB7IGZhbHNlIH07CiAg
ICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsKICAgICBPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAzZmJlMWIxN2ZmNjYwNDQ5ZTk5
M2VmN2U4YWZjMGJhMDAyNGZkODdhLi4zOWQzNzE3YTYzZDJhZDY2NDZiZDAzMmFiNDYxNmQ2MGVj
ZWJhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpIGZpbmFsOwogI2VuZGlmCiAK
KyAgICBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpIGZpbmFsOwor
CiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRh
aW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDQwYjc2MjM2
MzlmZmFkNDFiNDQyNDY4ZWIyZTE4MWFhMzRmMDE2NTMuLjdiOGI3N2NlODRmMTQ1ZTE5ZDYxZTE4
NThiZmJkNWVkZDliZmE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTEwMDUsNiArMTAwNSwxMSBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYQogICAgIFttX2NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzpX
VEZNb3ZlKGNhbGxiYWNrKV07CiB9CiAKK1dlYkNvcmU6OkNvbG9yIFBhZ2VDbGllbnRJbXBsOjpj
b250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpCit7CisgICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3
IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNzdjODA2ZDQyYTFjMTRiZmMyMDA1ODJm
YzhlY2Y3MzY2YzNiODA1ZC4uMzJiMGYyOGE1NmY2ZTc1ZWViZjU4ZTc1NTk1NjM2Y2RjNjE4MTlh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0xNTY0LDYgKzE1NjQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dEYXRhRGV0ZWN0
b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW4KICAgICBwYWdl
Q2xpZW50KCkuc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24ocG9zaXRp
b25JbmZvKTsKIH0KIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gY29udGVudFZpZXdCYWNrZ3JvdW5k
Q29sb3IgPSBwYWdlQ2xpZW50KCkuY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsgY29udGVu
dFZpZXdCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gY29udGVudFZp
ZXdCYWNrZ3JvdW5kQ29sb3I7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAg
IHJldHVybiBVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5DR0NvbG9yOworI2Vsc2UKKyAg
ICByZXR1cm4gVUlDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisjZW5kaWYKK30KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCmluZGV4IDY4YjA1ODhkN2E0NmRhNmMwNzI1YmQyZGM5ZjcxYTA4YWJmYmU4
ZGYuLjdjMDJhZThhMGQ0ZWQzODkzYmEzYjIwNzVkMDJmYWRjYWY5OGQ2ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNzEwLDYgKzcx
MCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3Vz
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZQogfQogI2VuZGlmCiAKK0NvbG9yIFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworI2lm
IEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHJldHVybiBOU0NvbG9yLmNvbnRyb2xCYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvcjsKKyNlbHNlCisgICAgcmV0dXJuIE5TQ29sb3Iud2hpdGVDb2xvci5D
R0NvbG9yOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA5ODY0NmZlNGI5N2ExMmJhNWVjZGEwZWNjN2U1MmExMzNiMGZjNDQ4Li4yNDM1
YjEzYWI2ODRiYWQwMDYxZGIyMmM4Y2Y5MDJlNTMwOGNiMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQ0OCw2ICsyNDQ4LDExIEBAIHZv
aWQgV2ViUGFnZTo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYW1lLCBjb25zdCBVc2VyRGF0CiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVNZXNz
YWdlVG9QYWdlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpz
ZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShXZWJDb3JlOjpDb2xvciYmIHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIG1fcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV1RGTW92ZSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
dmVycmlkZSkpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgV2ViUGFn
ZTo6c2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKiBwYWdlQmFubmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVlNDQ3M2FkYzRiOTgwZTBk
YjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLjE0ZjFmOWUwMjg4YjMzOGIxZDNjYjVkZTllZmNhMzcz
YjM4MDBmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTYwNyw2ICs2MDcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwb3N0SW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJik7
CiAKKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6
OkNvbG9yJiYpOworCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikgeyBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNv
bG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggZTM3YTY1OWM5MWIzODkyZTJiOGY5MzhjNjI2Y2RjZmU4OWU0MTkwNC4uM2I3
ZjcwNDEwMDU5ZDBhYjhlMjA1ZDJiNGJhZTBkYWRmMDAzYTZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zOSw2
ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRv
cENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAKICAgICBTZXRVbmRlcmxheUNvbG9y
KFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIFNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKFdlYkNvcmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQog
CiAgICAgVmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgIFZpZXdXaWxsRW5kTGl2ZVJlc2l6
ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZmU4MDhmZWUzNDZmODY3NzdiMjI2NjljMDViZTZlZDk0YjQwNzZlZS4uZTkzMGI1YWExOWM0OWNk
YjJjYWJhZWQwZmIwOTEwYmYwMDMwM2MzMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA1LTEwICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1Njgw
OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IubW06IFJlbmFtZWQgZnJvbSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0uCisg
ICAgICAgIChkZWZhdWx0QmFja2dyb3VuZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5PbkxvYWQpOgorICAgICAgICAoVEVTVC5X
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xlU29saWRDb2xvcik6IEFkZGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xl
QmxlbmRlZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzKTogQWRkZWQuCisgICAgICAgIChURVNU
LldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZUJsZW5kZWRDb2xvcnMp
OiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2Jz
ZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9i
amVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvci5LVk8pOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcpOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxlU3R5bGVzKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZp
ZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tOgorICAg
ICAgICAoY3JlYXRlV2ViVmlld1dpdGhTYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSk6
CisgICAgICAgIChURVNULlNhbXBsZWRQYWdlVG9wQ29sb3IuRXhwZXJpbWVudGFsVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xv
ci5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXcpOiBEZWxldGVkLgorICAgICAgICAoVEVTVC5X
S1dlYlZpZXcuRXhwZXJpbWVudGFsVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5n
cyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFu
ZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5v
dyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3Jv
bGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNS0xMCAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVmbGlnaHQgcmVxdWVz
dHMgbm90IHByb3Blcmx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRjY2MyOWU3M2MzYjMuLjBiYWVl
ZGU5N2E4ZjkyMmE3YjkxN2JiNTNhNDBmZDc4MmY2YmQyYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NzEsNyArODcxLDcgQEAKIAkJOTUwOTVGMjAyNjJGRkZBNTAwMDBEOTIwIC8qIFNh
bXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbSAqLzsgfTsKIAkJOTNGQ0RCMzQyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkNE
QjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi87IH07CiAJCTk1MEU0
Q0MxMjUyRTc1MjQwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlG
IC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi87IH07Ci0JCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3
MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovOyB9OworCQk5NTNBQkIzNTI1QzBENjgyMDA0
QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4
QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVB
NTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0
NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsKIAkJOTVCNkIzQjcyNTFFQkYy
RjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUI2QjNCNjI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1
bWVudC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1Rl
eHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07
CkBAIC0yNTY4LDcgKzI1NjgsNyBAQAogCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2Ft
cGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHls
dXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gaU9T
U3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTUzQUJCMzQy
NUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUzQUJCMzQyNUMwRDY4MTAw
NEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVBNTI0OTQyNTgxQTEw
RDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NUI2QjNCNjI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1bWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhRG9jdW1l
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhE
MTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNDgyLDcgKzM0ODIsNiBAQAogCQkJCTM3QTIyQUE1MURDQUEyNzIwMEFGQkZD
NCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFzaC5tbSAqLywKIAkJ
CQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovLAog
CQkJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRz
Lm1tICovLAotCQkJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IubW0gKi8sCiAJCQkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBhZ2VP
dmVybGF5UGx1Z2luLm1tICovLAogCQkJCTUxMjQyQ0RBMjM3Qjc5MUUwMEVFRDlDMSAvKiBQYWdl
Wm9vbS5tbSAqLywKIAkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRU
b2tlblBsdWdJbi5tbSAqLywKQEAgLTM2MjYsNiArMzYyNSw3IEBACiAJCQkJQ0Q3Rjg5REIyMkE4
NkNEQTAwRDY4M0FFIC8qIFdLV2ViVmlld1N1c3BlbmRBbGxNZWRpYVBsYXliYWNrLm1tICovLAog
CQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8s
CiAJCQkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0g
Ki8sCisJCQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gIldlYktpdCBDb2NvYSI7CiAJ
CQlwYXRoID0gV2ViS2l0Q29jb2E7CkBAIC01NTc4LDcgKzU1NzgsNiBAQAogCQkJCTBGMzQwNzc2
MjMwMzdGREMwMDYwQTFBMCAvKiBPdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBPdmVycmlkZUFwcGxlTGFuZ3Vh
Z2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQTI1ODZGMjI1QzY3REMwMEI0
NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdlR3Jv
dXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBh
Z2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3
QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC01ODYwLDYgKzU4NTksNyBAQAogCQkJCUNEN0Y4OURDMjJBODZDREEw
MEQ2ODNBRSAvKiBXS1dlYlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5YmFjay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5NUE1MjQ5NTI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJW
aWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRD
OEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Qzc0QzhGQTIyREZCQTk2MDBEQTJEQUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRw
b2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NTMyZjQ1YWMwOGE0ZTExOGQ5YzQxYWFjZWQ3NWNhMTEwNzgyMDAzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lt
cG9ydCAiQ29jb2FDb2xvci5oIgotI2ltcG9ydCAiVGVzdENvY29hLmgiCi0jaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotCi0jZGVmaW5lIEVYUEVDVF9OU1NUUklOR19FUShleHBlY3Rl
ZCwgYWN0dWFsKSBcCi0gICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsgXAotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwgKE5TU3RyaW5n
ICopYWN0dWFsKTsKLQotY29uc3RleHByIENHRmxvYXQgd2hpdGVDb2xvckNvbXBvbmVudHNbNF0g
PSB7IDEsIDEsIDEsIDEgfTsKLWNvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0
XSA9IHsgMSwgMCwgMCwgMSB9OwotY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50
c1s0XSA9IHsgMCwgMCwgMSwgMSB9OwotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ciwgT25Mb2FkKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byB3aGl0ZUNv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCB3aGl0ZUNv
bG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWlu
dDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOwot
Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwotCi0gICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRl
Q2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IG5vdC1iYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgd2hpdGVDb2xv
ci5nZXQoKSkpOwotfQotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciwgTXVsdGlw
bGVTdHlsZXMpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGJsdWVDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9y
Q29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAg
ICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwot
Ci0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29s
b3I6IHJlZDsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSA8L3N0eWxlPiJdOwot
Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKLX0KLQotQGlu
dGVyZmFjZSBXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5T
T2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJW
aWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7Ci0KLSAgICBfd2ViVmlldyA9
IHdlYlZpZXc7Ci0gICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAIl9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNv
bnRleHQKLXsKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtaW5pdCJd
KSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtbG9hZCJdKSB7
Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbG9hZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWFk
ZGVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAi
YmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1j
c3MtY2xhc3MtY2hhbmdlZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19z
dGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXSkgewotICAg
ICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUBlbmQK
LQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIEtWTykKLXsKLSAgICBhdXRvIHNS
R0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRv
IHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBy
ZWRDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0g
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBhdXRvIHRoZW1lQ29sb3JP
YnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoImFmdGVyLWluaXQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7
Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Jd
KTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbG9hZCJdOwot
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbElt
bWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkucmVkIHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gPC9zdHls
ZT4iXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxvYWQiLCBbdGhlbWVDb2xvck9i
c2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdl
dCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1j
bGFzcy1hZGRlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07Ci0gICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXIt
Y3NzLWNsYXNzLWFkZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAgIEVYUEVD
VF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt0aGVtZUNvbG9yT2Jz
ZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXTsKLSAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAnYmx1ZSciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCIsIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVD
b2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9y
ZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07Ci0gICAgW3dlYlZpZXcg
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Ci0g
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci19CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9w
Q29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQ
YWdlVG9wQ29sb3IubW0KaW5kZXggN2YyNzIxYjY1YzA3MDIyMTM5NDI1OWQ2YjA3YWE2MmJlOTNj
NzIyMS4uOGIzZjExOGNkYzM4Mzk5Yjc2YzliZDIyMmJmNDI4ZjU4NTg4MTQ2MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENv
bG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxl
ZFBhZ2VUb3BDb2xvci5tbQpAQCAtODEsMjAgKzgxLDEyIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdl
OihOCiAKIEBlbmQKIAotZW51bSBjbGFzcyBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VUb3BDb2xvck1heERp
ZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlLCBkb3VibGUg
c2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yID0gVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKQorc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBj
cmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKGRvdWJsZSBz
YW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29s
b3JNaW5IZWlnaHQgPSAwKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
X3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlOnNhbXBsZWRQYWdlVG9wQ29sb3JN
YXhEaWZmZXJlbmNlXTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2FtcGxlZFBhZ2VUb3BDb2xv
ck1pbkhlaWdodDpzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0XTsKIAotICAgIGZvciAoX1dL
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2ludGVybmFs
RGVidWdGZWF0dXJlc10pIHsKLSAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJp
bmc6QCJVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciJd
KSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
Oih1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9PSBV
c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKSBm
b3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogfQogCkBAIC0zNTgsMzQgKzM1MCwzIEBAIFRFU1QoU2Ft
cGxlZFBhZ2VUb3BDb2xvciwgRElTQUJMRURfRGlzcGxheVAzKQogICAgIEVYUEVDVF9JTl9SQU5H
RShjb21wb25lbnRzWzJdLCAxLjAwLCAxLjAxKTsKICAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1sz
XSwgMSk7CiB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQ
SS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBt
YWNPUy4KLQotVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBFeHBlcmltZW50YWxVc2VTYW1wbGVk
UGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHdl
YlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVh
dGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKDUsIDAsIFVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAg
RVhQRUNUX05VTEwoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3Jv
dW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRN
TEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0p
XTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVYUEVDVF9FUShX
ZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6
OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdl
Rm9ySFRNTCh3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENv
bG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsg
InJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJW
aWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVk
UGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci0gICAgRVhQRUNU
X0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSwgV2Vi
Q29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIGF1dG8gd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9y
U2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VU
b3BDb2xvck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRo
VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29s
b3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0
Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dp
dGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BD
b2xvcl0pOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29s
b3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxl
ZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JT
dG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdl
YkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJl
ZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5D
R0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCmluZGV4IGI1N2VkYTcxODM0NTkwMTUw
Zjg3NTk0YWFkNDE2MDIwZWZkMzQzZTkuLjNkYmQ4NjMwMTVhYzJjZjRlNzE0MDUwZDc1ZDBjOWMy
NTliNmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAgLTMyMSw1MiArMzIxLDMgQEAg
VEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE92ZXJyaWRlc0FwcGxpY2F0aW9u
TWFuaWZlc3QpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0K
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KLQotZW51
bSBjbGFzcyBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wg
eyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZp
ZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBm
b3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9p
bnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0gICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVh
bFRvU3RyaW5nOkAiVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IiXSkg
ewotICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDoo
dXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPT0gVXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1
cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLX0KLQotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBFeHBlcmltZW50YWxVc2VUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHNSR0JDb2xvclNw
YWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JH
QikpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gYmx1ZUNvbG9yID0g
YWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21w
b25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91
dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLQot
ICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxk
RnJhbWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0g
ICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENv
bG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkp
KTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVk
Jz48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0gICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkp
OwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRob3V0VGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3Vu
ZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgYXV0byB3ZWJWaWV3V2l0
aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gY3JlYXRlV2ViVmlldyhV
c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKTsKLSAgICBFWFBF
Q1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGls
QWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotICAgIEVYUEVDVF9UUlVF
KENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVD
b2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250
ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdl
dCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhU
aGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLX0KLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0M2E5Nzk1OTM0YjY2NWY3OGQyODEyNTQ4M2EyNTA2N2Zj
OWFkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQpAQCAtMCwwICsxLDM0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJDb2NvYUNv
bG9yLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNkZWZpbmUgRVhQRUNUX0lOX1JBTkdFKGFjdHVhbCwgbWluLCBtYXgpIFwKKyAg
ICBFWFBFQ1RfR0UoYWN0dWFsLCBtaW4pOyBcCisgICAgRVhQRUNUX0xFKGFjdHVhbCwgbWF4KTsK
KworI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorICAgIEVY
UEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7IFwKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmluZyAqKWFjdHVhbCk7CisKK2NvbnN0
ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9OworY29u
c3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwgMSB9Owor
CitzdGF0aWMgUmV0YWluUHRyPENvY29hQ29sb3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoVGVz
dFdLV2ViVmlldyAqd2ViVmlldykKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlm
IChXS0NvbnRlbnRWaWV3ICpjb250ZW50VmlldyA9IHdlYlZpZXcud2tDb250ZW50Vmlldykgewor
ICAgICAgICBpZiAoQ29jb2FDb2xvciAqY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBjb250
ZW50Vmlldy5iYWNrZ3JvdW5kQ29sb3IpIHsKKyAgICAgICAgICAgIE5TTG9nKEAiY29udGVudFZp
ZXdCYWNrZ3JvdW5kQ29sb3IgJUAiLCBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvci5DR0NvbG9y
KTsKKyAgICAgICAgICAgIC8vIGBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcmAgY2FuIHNvbWV0
aW1lcyBiZSBhIG1vbm9jaHJvbWUgY29sb3IsIHNvIGNvbnZlcnQgaXQgdG8gc1JHQiBzbyB0aGUg
Y29tcGFyaXNvbnMgYmVsb3cgd29yay4KKyAgICAgICAgICAgIC8vIGBXZWJDb3JlOjpDb2xvclNw
YWNlYCBkb2Vzbid0IGhhdmUgYW4gZXF1aXZhbGVudCBtb25vY2hyb21lIGVudW0gdmFsdWUsIGJ1
dCB0cmVhdHMgYENHQ29sb3JgIHdpdGggb25seSB0d28gY29tcG9uZW50cyBhcyBtb25vY2hyb21l
IGFuZCBjb252ZXJ0cyB0aGVtIHRvIGBTUkdCYC4KKyAgICAgICAgICAgIGF1dG8gc1JHQkNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKSk7CisgICAgICAgICAgICBhdXRvIHNSR0JDb250ZW50Vmlld0JhY2tncm91bmRDb2xvciA9
IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUNvcHlCeU1hdGNoaW5nVG9Db2xvclNwYWNlKHNSR0JDb2xv
clNwYWNlLmdldCgpLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBjb250ZW50Vmlld0JhY2tn
cm91bmRDb2xvci5DR0NvbG9yLCBOVUxMKSk7CisgICAgICAgICAgICByZXR1cm4gW0NvY29hQ29s
b3IgY29sb3JXaXRoQ0dDb2xvcjpzUkdCQ29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IuZ2V0KCld
OworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0od2ViVmlldyk7Cisj
ZW5kaWYKKworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykK
KyAgICBOU0xvZyhAIk5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xvciAlQCIsIE5TQ29sb3Iu
Y29udHJvbEJhY2tncm91bmRDb2xvci5DR0NvbG9yKTsKKyAgICByZXR1cm4gTlNDb2xvci5jb250
cm9sQmFja2dyb3VuZENvbG9yOworI2VsaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBOU0xvZyhAIlVJQ29sb3Iuc3lzdGVtQmFja2dyb3Vu
ZENvbG9yICVAIiwgVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvcik7CisgICAg
cmV0dXJuIFVJQ29sb3Iuc3lzdGVtQmFja2dyb3VuZENvbG9yOworI2Vsc2UKKyAgICBOU0xvZyhA
IltDb2NvYUNvbG9yIHdoaXRlQ29sb3JdICVAIiwgW0NvY29hQ29sb3Igd2hpdGVDb2xvcl0uQ0dD
b2xvcik7CisgICAgcmV0dXJuIFtDb2NvYUNvbG9yIHdoaXRlQ29sb3JdOworI2VuZGlmCit9CisK
K1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBPbkxvYWQpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBOU0xvZyhAIjY2ICVAIHZzICVA
IiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJh
Y2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBTaW5nbGVTb2xp
ZENvbG9yKQoreworICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9
IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21w
b25lbnRzKSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIE5T
TG9nKEAiNzYgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKTsK
KyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5n
ZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJv
ZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKKyAgICBOU0xvZyhAIjgw
ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBy
ZWRDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBTaW5nbGVCbGVu
ZGVkQ29sb3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBO
U0xvZyhAIjg3ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5D
R0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcu
Z2V0KCkpIENHQ29sb3JdKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBi
b2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuNSk7IH0gPC9zdHlsZT4i
XTsKKyAgICBOU0xvZyhAIjkxICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
XS5DR0NvbG9yKTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhb
d2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOworICAgIEVYUEVDVF9F
UShjb21wb25lbnRzWzBdLCAxKTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1sxXSwg
MC40NSwgMC41NSk7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMl0sIDAuNDUsIDAu
NTUpOworICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworVEVTVChXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE11bHRpcGxlU29saWRDb2xvcnMpCit7CisgICAg
YXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgTlNMb2coQCIxMDUgJUAgdnMg
JUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0
QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0p
KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRp
bEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGh0bWwgeyBiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOyB9IGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4i
XTsKKyAgICBOU0xvZyhAIjEwOSAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9y
LCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvciwgTXVsdGlwbGVCbGVuZGVkQ29sb3JzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisgICAgTlNMb2coQCIxMTYgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdl
YlZpZXcuZ2V0KCkpIENHQ29sb3JdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRC
YWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxk
RnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGh0bWwgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwg
MCwgMCwgMC41KTsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAu
NSk7IH0gPC9zdHlsZT4iXTsKKyAgICBOU0xvZyhAIjEyMCAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcik7CisgICAgYXV0byBjb21wb25lbnRzID0gQ0dDb2xv
ckdldENvbXBvbmVudHMoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9y
KTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1swXSwgMC40NSwgMC41NSk7CisgICAg
RVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMV0sIDAuMiwgMC4yNSk7CisgICAgRVhQRUNUX0lO
X1JBTkdFKGNvbXBvbmVudHNbMl0sIDAuNywgMC43NSk7CisgICAgRVhQRUNUX0VRKGNvbXBvbmVu
dHNbM10sIDEpOworfQorCitAaW50ZXJmYWNlIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldzsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBXS1dlYlZpZXcgKndlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJp
bmcgKnN0YXRlOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfc3RhdGUgPSBAImJlZm9yZS1pbml0IjsKKwor
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBbX3dlYlZpZXcgYWRkT2JzZXJ2ZXI6c2VsZiBm
b3JLZXlQYXRoOkAidW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIiBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25Jbml0aWFsIGNvbnRleHQ6bmlsXTsKKworICAgIHJldHVybiBzZWxmOwor
fQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBv
Zk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6
KHZvaWQgKiljb250ZXh0Cit7CisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVm
b3JlLWluaXQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWluaXQiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3Jl
LWNzcy1jbGFzcy1hZGRlZCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY3NzLWNsYXNz
LWFkZGVkIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1
YWxUb1N0cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtY2hhbmdlZCJdKSB7CisgICAgICAgIF9zdGF0
ZSA9IEAiYWZ0ZXItY3NzLWNsYXNzLWNoYW5nZWQiOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLWNzcy1jbGFzcy1yZW1v
dmVkIl0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtcmVtb3ZlZCI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJiZWZvcmUtbm9ubnVsbC1vdmVycmlkZSJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXIt
bm9ubnVsbC1vdmVycmlkZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW19z
dGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtbnVsbC1vdmVycmlkZSJdKSB7CisgICAgICAg
IF9zdGF0ZSA9IEAiYWZ0ZXItbnVsbC1vdmVycmlkZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoIm5vdC1yZWFjaGVkIiwgX3N0YXRlKTsKK30KKwor
QGVuZAorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgS1ZPKQorewor
ICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7Cisg
ICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2Uu
Z2V0KCksIGJsdWVDb2xvckNvbXBvbmVudHMpKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApXSk7CisgICAgYXV0byB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBhbGxv
Y10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdf
RVEoImFmdGVyLWluaXQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVd
KTsKKyAgICBOU0xvZyhAIjE5OCAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkg
Q0dDb2xvcl0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xv
cih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGls
ZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5LnJlZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsg
fSBib2R5LmJsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IDwvc3R5bGU+Il07CisgICAg
RVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjA0ICVAIHZzICVAIiwgW3dl
YlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91
bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Is
IFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7CisKKyAg
ICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3Nz
LWNsYXNzLWFkZGVkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ3JlZCciXTsKKyAgICBbd2ViVmlldyB3YWl0
Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRl
ci1jc3MtY2xhc3MtYWRkZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3Rh
dGVdKTsKKyAgICBOU0xvZyhAIjIxMSAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRD
b2xvci5nZXQoKV1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2Ui
LCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBOU0xvZyhA
IjIxNyAlQCB2cyAlQCIsIFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xv
ciwgcmVkQ29sb3IuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQo
KSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAi
c2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwg
W3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIy
MjMgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Is
IHJlZENvbG9yLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkp
KTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJl
Zm9yZS1jc3MtY2xhc3MtY2hhbmdlZCJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdibHVlJyJdOworICAgIFt3
ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJ
TkdfRVEoImFmdGVyLWNzcy1jbGFzcy1jaGFuZ2VkIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIyMzAgJUAgdnMgJUAiLCBbd2ViVmlldyB1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAg
ICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JX
aXRoQ0dDb2xvcjpibHVlQ29sb3IuZ2V0KCldXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNo
b3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgTlNMb2coQCIyMzYgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIGJsdWVDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNo
b3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgTlNMb2coQCIyNDIgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIGJsdWVDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1yZW1vdmVkIl07CisgICAgW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1l
ID0gJyciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Cisg
ICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtcmVtb3ZlZCIsIFt1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjQ5ICVAIHZz
ICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVs
dEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3Jd
KSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJz
aG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpLmdldCgpXTsKKyAgICBF
WFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIyNTUgJUAgdnMgJUAiLCBbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3Vu
ZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwg
W2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKworICAg
IFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3Qt
Y2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOm5pbF07
CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjYxICVAIHZzICVA
IiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJh
Y2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7
CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZv
cmUtbm9ubnVsbC1vdmVycmlkZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOnJlZENvbG9yLmdldCgpXV07Cisg
ICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1ub25udWxsLW92ZXJyaWRlIiwgW3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIyNjcgJUAgdnMg
JUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9y
LmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAg
IFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3Qt
Y2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOltDb2Nv
YUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3IuZ2V0KCldXTsKKyAgICBFWFBFQ1RfTlNT
VFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHN0YXRlXSk7CisgICAgTlNMb2coQCIyNzMgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NO
YW1lID0gJ3JlZCciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjgwICVAIHZz
ICVAIiwgW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAg
ICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90
LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdibHVlJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1u
b3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7Cisg
ICAgTlNMb2coQCIyODcgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1
YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVk
Q29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
ZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJyciXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RS
SU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMjk0ICVAIHZzICVAIiwgW3dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSk7CisgICAgRVhQRUNU
X1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbnVsbC1vdmVycmlkZSJdOworICAgIFt3
ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVDVF9OU1NU
UklOR19FUSgiYWZ0ZXItbnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBzdGF0ZV0pOworICAgIE5TTG9nKEAiMzAwICVAIHZzICVAIiwgW3dlYlZpZXcgdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBbZGVmYXVsdEJhY2tncm91bmRDb2xvcih3
ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0
QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0KCkpIENHQ29sb3JdKSk7Cit9CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisvLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KKworVEVTVChXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE1hdGNoZXNTY3JvbGxWaWV3KQoreworICAgIGF1
dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNy
ZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgYXV0
byBibHVlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCks
IGJsdWVDb2xvckNvbXBvbmVudHMpKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CisgICAgTlNMb2coQCIzMTUgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IsIFtkZWZhdWx0QmFja2dyb3VuZENvbG9yKHdlYlZpZXcuZ2V0
KCkpIENHQ29sb3JdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJW
aWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5k
Q29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xvcl0pKTsKKyAgICBOU0xvZyhAIjMxNyAlQCB2cyAl
QCIsIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBbZGVmYXVs
dEJhY2tncm91bmRDb2xvcih3ZWJWaWV3LmdldCgpKSBDR0NvbG9yXSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29s
b3IuQ0dDb2xvciwgW2RlZmF1bHRCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldy5nZXQoKSkgQ0dDb2xv
cl0pKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRV
bnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKKyAgICBOU0xvZyhAIjMyMSAlQCB2cyAlQCIs
IFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0
KCkpOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworICAgIE5TTG9n
KEAiMzIzICVAIHZzICVAIiwgW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSkpOworCisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOltD
b2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Ymx1ZUNvbG9yLmdldCgpXV07CisgICAgTlNMb2co
QCIzMjcgJUAgdnMgJUAiLCBbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIGJsdWVDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xv
cihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5n
ZXQoKSkpOworICAgIE5TTG9nKEAiMzI5ICVAIHZzICVAIiwgW3dlYlZpZXcgc2Nyb2xsVmlld10u
YmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSk7CisgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29s
b3IuQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428391</attachid>
            <date>2021-05-12 11:32:20 -0700</date>
            <delta_ts>2021-05-14 13:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225615-20210512123219.patch</filename>
            <type>text/plain</type>
            <size>74011</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmI5MGEyOWZhMDBmNjljZGZkYjM0OGMxNDA1NzA3MTQ5NTAzZGQyNi4uODU2ZmNlOTQ1
YTQ2ODczNTYyYjIwZDVjYzA4ZTZmY2NlYmY5MjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgYFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVJgIHNob3VsZCBwcmludCB0
aGUgUElEIGJlZm9yZSBzbGVlcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2MzZlYTQ3ZTAyNDJmOWJlMTcx
MTIwNzkxYjZhMWQ3MTg5NjUxM2YuLjJmYmJkODViZDNiOTA2MTQwZmVjZTZmZmZjNzU4NjUxNzVl
OThlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNS0xMiAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBgLVtXS1dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBgLVtXS1dlYlZpZXcgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2NTY4MDk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBgdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3BlcnR5IHRoYXQg
d2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0aGUgbW9zdCBy
ZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENTUyBgYmFja2dy
b3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhpcyBpcyB0aGUg
Y3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmApCisgICAgICAg
ICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yCisgICAg
ICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZlIGFueSBlZmZl
Y3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKworICAgICAgICBU
ZXN0czogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZAorICAgICAgICAg
ICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZVNvbGlkQ29sb3IK
KyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVC
bGVuZGVkQ29sb3IKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzCisgICAgICAgICAgICAgICBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVCbGVuZGVkQ29sb3JzCisgICAgICAgICAgICAgICBX
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuS1ZPCisgICAgICAgICAgICAgICBXS1dl
YlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcKKworICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpOiBBZGRlZC4KKyAgICAgICAgSG9sZCB0aGUgY2xpZW50LW92ZXJyaWRlbiB2YWx1ZSBm
b3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVu
CisgICAgICAgIGRyYXdpbmcgdGhlIG92ZXJzY3JvbGwgbGF5ZXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGluZ3MgYFVzZVNhbXBs
ZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBhbmQKKyAgICAgICAg
YFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBub3cgdGhhdCBjbGll
bnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Nyb2xsIGFyZWEgYmFj
a2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOl1gLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCk6CisgICAgICAgIEl0J3Mgbm8gbG9uZ2VyIG5l
Y2Vzc2FyeSB0byBmb3JjZSB0aGUgb3ZlcnNjcm9sbCBhcmVhIHRvIHJlZHJhdyBzaW5jZSB0aGF0
J2xsIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgYSBjbGllbnQgY2FsbGluZyBgLVtXS1dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOl1gIChwb3NzaWJseSBpbiByZXNwb25zZSB0byBh
CisgICAgICAgIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9yXWAgS1ZPIG5vdGlmaWNhdGlvbikuCisK
IDIwMjEtMDUtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlciByYXRoZXIgdGhhbiBJbWFnZURhdGEgaW4gcGxhdGZvcm0vIGNvZGUgdG8g
Zml4IGxheWVyaW5nIHZpb2xhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZjQ1ZDBkOWY4ODJjMzUxMTE4ODFl
NjQ2MDU2ZGMwOGNkOTI0ZDI0Li44NjRjODJhZDA5ZDAyYjU0OThlOWE5MjljNDQxY2Y2ZjllNDBk
MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA1LTEyICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NjgwOTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIGB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JgIGlzIGEgYG51bGxfcmVzZXR0YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxs
IHJldHVybiAoaW4gb3JkZXIgb2YgdmFsaWRpdHkpCisgICAgICAgICAtIHRoZSBtb3N0IHJlY2Vu
dCBub24tbnVsbCB2YWx1ZSBwcm92aWRlZAorICAgICAgICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5k
LWNvbG9yYCBvZiB0aGUgYDxib2R5PmAgYW5kL29yIGA8aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJy
ZW50IHZhbHVlIG9mIGBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yYCkKKyAgICAgICAgIC0g
dGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAg
TW9kaWZpY2F0aW9ucyB0byB0aGlzIHByb3BlcnR5IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCB1
bnRpbCBjb250cm9sIGlzIHJldHVybmVkIHRvIHRoZSBydW5sb29wLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpdKTogQWRkZWQuCisgICAgICAgICgrW1dLV2ViVmlldyBhdXRvbWF0aWNhbGx5Tm90aWZp
ZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOiBBZGRlZC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKGJhc2VTY3Jv
bGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBg
VXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVu
dHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNr
Z3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6XWAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgorICAgICAgICBTdG9yZSB0aGUgY2xpZW50LW92ZXJy
aWRlbiB2YWx1ZSBmb3IgYHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcmAgYW5kIG1hbmFnZSBzdGF0
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojp1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSk6IEFk
ZGVkLgorICAgICAgICBBZGQgT2JqQyBLVk8gc3VwcG9ydCBmb3IgYC1bV0tXZWJWaWV3IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvcik6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgYGJhY2tn
cm91bmRDb2xvcmAgb2YgdGhlIGBXS0NvbnRlbnRWaWV3YC4gVGhpcyBpcyBuZWVkZWQgb24gaU9T
CisgICAgICAgIGJlY2F1c2UgYHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3JgIChub3cgYFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgKQorICAgICAgICB3b3Vs
ZCB1c2UgdGhpcyB2YWx1ZSBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZSB1bmRlcmx5aW5nIHBs
YXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlKTogQWRkZWQuCisgICAgICAgIFBhc3MgdGhlIGNsaWVudC1vdmVycmlkZW4gdmFsdWUgZm9y
IGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIHRvIHRoZSBXZWJQcm9jZXNzIHNvIHRoYXQgaXQK
KyAgICAgICAgY2FuIGJlIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBvdmVyc2Nyb2xsIGxheWVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgR28gYmFj
ayB0byB1c2luZyB0aGUgYHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmAgKGJlZm9yZSByMjcz
MDgzKS4KKwogMjAyMS0wNS0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIFBpeGVsQnVmZmVyIHJhdGhlciB0aGFuIEltYWdlRGF0YSBpbiBwbGF0Zm9ybS8g
Y29kZSB0byBmaXggbGF5ZXJpbmcgdmlvbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCBi
NTk4YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3Li5mYTFkN2IxMTg2NTg5MjQ3
MTYxY2JjYzRhYzc5MWY5MmQyMTMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTc2MCwz
MCArNzYwLDYgQEAgVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ6CiAgICAgV2Vi
S2l0OgogICAgICAgZGVmYXVsdDogZGVmYXVsdFVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdF
bmFibGVkKCkKIAotVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5SZWFkYWJsZU5hbWU6ICJVc2Ugc2FtcGxlZCBw
YWdlIHRvcCBjb2xvciBmb3Igc2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiVXNlIHNhbXBsZWQgcGFnZSB0b3AgY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KLVVzZVRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOgotICB0eXBlOiBib29sCi0gIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVXNlIHRoZW1lLWNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9y
IgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9s
bCBhcmVhIGJhY2tncm91bmQgY29sb3IiCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJLaXRMZWdh
Y3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQotICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCi0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0KICMgRklYTUU6IFJlbW92
ZSBvbmNlIDxyZGFyOi8vNzM4MzA5NjE+IGhhcyBiZWVuIGZpeGVkCiBVc2VpVHVuZXNBVk91dHB1
dENvbnRleHQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNlMTFm
NDllYTdmZjQ5YjBjZjA2YmI3M2VlMDk3MTk2OTk5YzE5N2QuLmI2OTY2ZmM5YjNjODY2M2M2Mjlm
NTYzZjI4OWI4NjZlZDA0YzI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzkwMSwx
MyArMzkwMSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2VkKCkKIAogICAgIGlm
IChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS50aGVtZUNvbG9yQ2hhbmdlZCgpOwotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQot
ICAgIGlmIChhdXRvKiB2aWV3ID0gcmVuZGVyVmlldygpKSB7Ci0gICAgICAgIGlmICh2aWV3LT51
c2VzQ29tcG9zaXRpbmcoKSkKLSAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogfQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkUGFnZVNhbXBs
ZUxvY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNGIxZGI0NmUwMzMyYTRkOGU0YWI5ZGU3NTg1Zjk0YmYxZTU5
Y2IyZS4uNmE3ZmM1YjE4ZTRjMTE4ZThmYjU2ZTlmMmRlYzVlNDBjMGJhOWJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yNTYzLDYgKzI1NjMsMjUgQEAgQ29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VU
b3BDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50LT5zYW1wbGVkUGFnZVRvcENvbG9y
KCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKK3sKKyAgICBpZiAodW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPT0gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZSA9IFdURk1vdmUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
OworCisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKKworI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKKyAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFt
ZSgpLnZpZXcoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKSkgeworICAgICAgICAgICAgaWYgKHJlbmRlclZpZXctPnVzZXNDb21wb3Np
dGluZygpKQorICAgICAgICAgICAgICAgIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCit9CisKIC8vIFRoZXNlIGFyZSBtYWdp
Y2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGljIGNv
bnN0IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNmRkMDdlMWJhOTFmMzE0ZGE2MGUyYWYzYzc0MDljYTUzODJlZGU1MS4uMzFhNDJhOTcxMWFl
ZGMxODdmNTczMmI3ZDZlMGZkNmQ1ZTQxMGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYyMyw2ICs2
MjMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Igc2FtcGxlZFBh
Z2VUb3BDb2xvcigpIGNvbnN0OwogCisgICAgQ29sb3IgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJy
aWRlOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZShDb2xvciYmKTsKKwogICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQogICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cygpOwpAQCAtMTE1Miw2ICsxMTU1LDggQEAgcHJpdmF0ZToKIAogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOwogCisgICAgQ29s
b3IgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsKKwogICAgIGNvbnN0IGJvb2wg
bV9odHRwc1VwZ3JhZGVFbmFibGVkIHsgdHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9u
R3JvdXBJZGVudGlmaWVyIG1fbWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggZjg3NzQ1NzJiNGI1MmU0YWE3OTFmYzg3YmY4NTJiMDZmY2MyZTIxYy4uZTliZDhhOTkzMThj
MzQ0NjhmMzFiYTdkYThmYjY2MGQ1ZDc4ZjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM5MjMsMTEgKzM5MjMsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFz
QmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIW1fbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgaWYgKHBhZ2Uo
KS5zZXR0aW5ncygpLnVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkp
Ci0gICAgICAgIGJhY2tncm91bmRDb2xvciA9IHBhZ2UoKS50aGVtZUNvbG9yKCk7Ci0gICAgaWYg
KHBhZ2UoKS5zZXR0aW5ncygpLnVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yKCkgJiYgIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGJh
Y2tncm91bmRDb2xvciA9IHBhZ2UoKS5zYW1wbGVkUGFnZVRvcENvbG9yKCk7CisgICAgYXV0byBi
YWNrZ3JvdW5kQ29sb3IgPSBwYWdlKCkudW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
KTsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IG1fcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZjk5YWRiZTYxZDRmZGVi
MDY3Y2FhMjZhMjEwNWI5YWI0NmRkYzFkOC4uYWE5YTY3ZTc2ZmE0MDgxN2VkYzhhNDJhMWM1NGNl
MTdlYzUxNTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcuaApAQCAtNTgwLDYgKzU4MCwyMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIg
a1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNDb2xvciAqdGhlbWVDb2xv
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKICNlbmRpZgogCisvKiEgQGFi
c3RyYWN0IFRoZSBjb2xvciBkcmF3biBiZWhpbmQgdGhlIGFjdGl2ZSBwYWdlLgorIEBkaXNjdXNz
aW9uIEEgY29sb3IgZGVyaXZlZCBmcm9tIHRoZSBjb250ZW50IG9mIHRoZSBhY3RpdmUgcGFnZSwg
c3VjaCBhcyBieSBibGVuZGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorIHRoZSA8aHRtbD4g
YW5kIDxib2R5PiBlbGVtZW50cyB3aXRoIHRoZSBAbGluayBiYWNrZ3JvdW5kQ29sb3IgQC9saW5r
IG9mIHRoaXMgQGxpbmsgV0tXZWJWaWV3IEAvbGluay4gVXNlZCBhcworIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHVuZGVyIHRoZSBwYWdlJ3MgY29udGVudCwgc3VjaCBhcyBmb3Igc2Nyb2xsIGJvdW5j
aW5nIGFyZWFzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKKyBvd25lciBhcHBsaWNhdGlvbiBm
b3IgY3VzdG9tIHN0eWxpbmcgd2l0aG91dCBoYXZpbmcgdG8gbW9kaWZ5IHRoZSBwYWdlJ3Mgc3R5
bGUuCisgdGhlIGJhY2tncm91bmQgb2Ygc2Nyb2xsIGJvdW5jaW5nIGFyZWFzLgorIEBsaW5rIFdL
V2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQgZm9y
IHRoaXMgcHJvcGVydHkuCisgKi8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5v
bmF0b21pYywgbnVsbF9yZXNldHRhYmxlLCBjb3B5KSBVSUNvbG9yICp1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworI2Vsc2UKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsX3Jlc2V0dGFibGUsIGNvcHkpIE5TQ29sb3IgKnVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKyNl
bmRpZgorCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjU4MjQxM2FjYWNlMWQzNTNi
ZjdmNzFlMjgwYzM0YjkxMGVhNGE2OC4uZjQxZDNmM2NkY2Y4N2NhODgzOGMxMDhhYTQwOTUzZDUz
MzI5OGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNjc3LDYgKzE2NzcsMjEgQEAgLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IK
ICAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcih0aGVtZUNvbG9yKTsKIH0KIAorLSAo
Q29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBXZWJD
b3JlOjpwbGF0Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSk7Cit9
CisKKy0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKK3sKKyAgICBfcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUodW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUu
Q0dDb2xvcik7Cit9CisKKysgKEJPT0wpYXV0b21hdGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzT2ZV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gTk87Cit9CisKIEBlbmQKIAog
I3ByYWdtYSBtYXJrIC0KQEAgLTMwNDAsMTEgKzMwNTUsMTMgQEAgLSAodm9pZClfc2V0Q2FuVXNl
Q3JlZGVudGlhbFN0b3JhZ2U6KEJPT0wpY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UKICAgICBfcGFn
ZS0+c2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOwog
fQogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkg
PHJkYXI6Ly83NjY2MjY0ND4KIC0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgogewogICAgIHJl
dHVybiBbc2VsZiB0aGVtZUNvbG9yXTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tX
ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTcz
Mj4KIC0gKENvY29hQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAg
YXV0byBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0NDliZjIzM2Y1NTZhOGQxY2Q5NmY0NjkyYWMz
NjIxYjkzYmVlY2MwLi43NThkMmM1NzJkZmEwYWJkNjkzOTc0ZWY2MTY4OWY2OWJlZjY2MmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTM4MCwxMCArMzgwLDExIEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfdGhlbWVDb2xvciBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJ0aGVtZUNvbG9yIiwgbWFjb3MoV0tfTUFDX1RCQSwg
V0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKKy8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUNv
bG9yICpfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdL
X0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBpb3MoV0tfSU9TX1RCQSwgV0tfSU9TX1RC
QSkpOwogI2Vsc2UKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNDb2xvciAqX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNDb2xvciAqX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBXS19BUElfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiLCBtYWNvcygxMC4x
MCwgV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIC8vIE9ubHkgc2V0IGlmIGAtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlXWAgaXMgYSBwb3Np
dGl2ZSBudW1iZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCmluZGV4IGUwYWM5ZTlmMjM3NDA5ZGFhZTk4NTZlYmYyZmVjZWEyNWVmNjE3YWIu
LjMyY2Q2N2NmYzlmNzM3ZTI0Y2E5MThkMDE0ODAwZDliMjdhYTgwYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC00OTMsNyArNDkz
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
KFdLV2ViVmlldyAqd2ViVmlldykKICAgICBpZiAoIXdlYlZpZXctPl9wYWdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT5zY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yKCk7CisgICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT51bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGM4OGEzZDQyMzM5MzJmZDM1
NDAzYTcwMTczMmFiYTUyZmZkZWE5YjQuLjJhOThlZGUzMjIzNDFkYWJiYmEyZmY0YjcwZjAwZjQ4
YjlkYjYxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwor
Y2xhc3MgQ29sb3I7CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQ7CiB9CkBAIC01Myw2ICs1NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGhlbWVDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKICAgICB2
b2lkIHRoZW1lQ29sb3JEaWRDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcldpbGxDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvckRpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVkUGFnZVRvcENvbG9yV2ls
bENoYW5nZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggZGRiNDFlYjRiNTY3ZTI3NTI3ZTg3YjVkOWI2
YTQxMGExNjQ2OTc3NC4uZDg1YTZlODk4ZTY0NWI3MjYxMjNhNmVjM2Y3NTI2Y2RiYWRhMDk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC00NywyMiArNDcsMzggQEAgUGFnZUNsaWVudEltcGxDb2NvYTo6flBhZ2VD
bGllbnRJbXBsQ29jb2EoKSA9IGRlZmF1bHQ7CiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnRo
ZW1lQ29sb3JXaWxsQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZv
cktleTpAInRoZW1lQ29sb3IiXTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3RoZW1lQ29sb3IiXTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjp0aGVtZUNvbG9yRGlkQ2hhbmdlKCkKIHsKICAgICBbbV93ZWJWaWV3IGRp
ZENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVDb2xvciJdOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAg
ICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAIl90aGVtZUNvbG9yIl07CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENo
YW5nZSgpCit7CisgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQoreworICAgIFttX3dlYlZpZXcgZGlkQ2hh
bmdlVmFsdWVGb3JLZXk6QCJ1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IiXTsKK30KKwogdm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdl
KCkKIHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcg
d2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciJdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ckRpZENoYW5nZSgpCiB7CisgICAgLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICAgICBb
bV93ZWJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvciJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNDE3ZTEx
ZDQ5NjYwN2EzMDBjZmI2NWZlZDZjN2Y0Y2FjZTBjOTI2ZC4uYmE2MDkzMGM1NTA5MDk4ZDY3ZGZi
MDdlMTZlNWU5ZWI3YTY1NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtNDkwLDYgKzQ5MCw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpID0gMDsKICNlbmRpZgorCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpID0g
MDsKICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpAQCAtNTE0LDYg
KzUxNiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5n
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNvbG9yRGlkQ2hhbmdlKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5k
ZXggNDhkOTQ2MzI3NTg0OWMwMmMyNjMwYzQ5YjQ5MWQ1MGY2NzEzNjMwZi4uMjMzMTkyYThmMTQx
MWU5NTY5YzkwYTE4MDA4NGI4MTNhN2IwZDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFZpZXdTbmFw
c2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2Vi
QmFja0ZvcndhcgogCiAgICAgc25hcHNob3QtPnNldFJlbmRlclRyZWVTaXplKHdlYlBhZ2VQcm94
eS5yZW5kZXJUcmVlU2l6ZSgpKTsKICAgICBzbmFwc2hvdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
d2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHNuYXBzaG90LT5zZXRCYWNr
Z3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSk7Cisg
ICAgc25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yKCkpOwogICAgIHNuYXBzaG90LT5zZXRWaWV3U2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KHdlYlBhZ2VQcm94eS52aWV3U2Nyb2xsUG9zaXRpb24o
KSkpOwogCiAgICAgaXRlbS5zZXRTbmFwc2hvdChXVEZNb3ZlKHNuYXBzaG90KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTFkYzczOGQyYzViNzYxZjhk
NjRhMWRkZDc3ZDJmODA3YTA2MjdhLi45YmExMDJhZWNmNzZlMmEyNDU4MGNlZGJhZGE0ODRlZTdk
OWJjYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE5
MTMsMTUgKzE5MTMsNTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRl
cmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQXJlYUJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CitDb2xvciBXZWJQYWdlUHJveHk6OnVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV90aGVtZUNvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIG1fdGhlbWVDb2xvcjsKKyAgICBpZiAobV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBtX3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOwogCi0gICAgaWYgKG1fcHJlZmVyZW5jZXMtPnVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yKCkgJiYgbV9zYW1w
bGVkUGFnZVRvcENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2FtcGxlZFBhZ2VU
b3BDb2xvcjsKKyAgICBpZiAobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBy
ZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgcmV0dXJuIHBsYXRmb3Jt
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShDb2xvciYmIG5ld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIGlmIChuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSA9PSBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIG9sZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9IHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvcigpOworICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUgPSBzdGQ6OmV4Y2hhbmdlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUsIG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKTsKKyAgICBib29sIGNo
YW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgPSAhZXF1YWxJZ25vcmluZ1NlbWFudGljQ29s
b3Iob2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9IFdURk1vdmUob2xk
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworCisgICAgaWYgKGNoYW5nZXNVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7CisKKyAgICBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlID0gV1RGTW92ZShuZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk7
CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcGFn
ZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOworCisgICAgaWYg
KG1faGFzUGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGVUb0Rpc3BhdGNoID0gdHJ1ZTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1faGFzUGVu
ZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9EaXNwYXRjaCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2hhc1BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZVRvRGlzcGF0Y2ggPSBmYWxzZTsKKworICAgICAgICBkaWRDaGFuZ2VCYWNrZ3Jv
dW5kQ29sb3IoKTsKKworICAgICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKQEAgLTg1NDcs
MTMgKzg1ODYsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRoZW1lQ29sb3JDaGFuZ2VkKGNvbnN0
IENvbG9yJiB0aGVtZUNvbG9yKQogICAgIHBhZ2VDbGllbnQoKS50aGVtZUNvbG9yRGlkQ2hhbmdl
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JE
aWRDaGFuZ2UoY29uc3QgQ29sb3ImIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoY29uc3Qg
Q29sb3ImIG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKIHsKLSAgICBpZiAobV9wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPT0gcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKQor
ICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9PSBuZXdQYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gb2xkVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCk7CisgICAgYXV0byBv
bGRQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBzdGQ6OmV4Y2hhbmdlKG1fcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yLCBuZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpOworICAg
IGJvb2wgY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciA9ICFlcXVhbElnbm9yaW5nU2Vt
YW50aWNDb2xvcihvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcigpKTsKKyAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IFdURk1vdmUo
b2xkUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKworICAgIGlmIChjaGFuZ2VzVW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCkudW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yV2lsbENoYW5nZSgpOwogICAgIHBhZ2VDbGllbnQoKS5wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCk7Ci0gICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3IgPSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBtX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvciA9IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKworICAgIGlm
IChjaGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCku
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAgICAgcGFnZUNsaWVudCgpLnBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpOwogfQogCkBAIC04NTY3LDYgKzg2
MTcsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhbXBsZWRQYWdlVG9wQ29sb3JDaGFuZ2VkKGNv
bnN0IENvbG9yJiBzYW1wbGVkUGFnZVRvcENvbG9yKQogICAgIHBhZ2VDbGllbnQoKS5zYW1wbGVk
UGFnZVRvcENvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK0Nv
bG9yIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAoreworICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKK30KKworI2VuZGlmIC8v
ICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdl
VVJMU3RyaW5nKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YjQ1N2RmYjYwMzFlZjYzOWFkM2FlM2ZjYmZmZmFlNmE2ZDg1NzAyLi5iNjMxNjY5Zjg3Y2E1ZWM2
YjAyNTZiMmIzOWE0NzcxNDA2Mzc3YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNjY5LDcgKzY2OSw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkNvbG9y
IHNhbXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29s
b3I7IH0KIAotICAgIFdlYkNvcmU6OkNvbG9yIHNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKKyAgICBXZWJDb3JlOjpDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7IH0KKyAg
ICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9y
JiYpOwogCiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmll
d1dpbGxFbmRMaXZlUmVzaXplKCk7CkBAIC0yMTA1LDYgKzIxMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdGhlbWVDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKICAgICB2b2lk
IHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOwogICAgIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKKyAgICBXZWJDb3JlOjpDb2xvciBwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQg
ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogICAg
IHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1
cmVkKTsKQEAgLTI2NTAsMTAgKzI2NTMsMTMgQEAgcHJpdmF0ZToKICAgICBMYXllckhvc3RpbmdN
b2RlIG1fbGF5ZXJIb3N0aW5nTW9kZSB7IExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzcyB9Owog
CiAgICAgV2ViQ29yZTo6Q29sb3IgbV90aGVtZUNvbG9yOworICAgIFdlYkNvcmU6OkNvbG9yIG1f
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV91
bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fc2FtcGxlZFBhZ2VUb3BDb2xvcjsKIAorICAg
IGJvb2wgbV9oYXNQZW5kaW5nVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rpc3Bh
dGNoIHsgZmFsc2UgfTsKKwogICAgIGJvb2wgbV91c2VGaXhlZExheW91dCB7IGZhbHNlIH07CiAg
ICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsKICAgICBPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAzZmJlMWIxN2ZmNjYwNDQ5ZTk5
M2VmN2U4YWZjMGJhMDAyNGZkODdhLi4zOWQzNzE3YTYzZDJhZDY2NDZiZDAzMmFiNDYxNmQ2MGVj
ZWJhNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBc3lu
Y2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZl
bnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpIGZpbmFsOwogI2VuZGlmCiAK
KyAgICBXZWJDb3JlOjpDb2xvciBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpIGZpbmFsOwor
CiAgICAgV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRh
aW5QdHI8V0tFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDQwYjc2MjM2
MzlmZmFkNDFiNDQyNDY4ZWIyZTE4MWFhMzRmMDE2NTMuLjdiOGI3N2NlODRmMTQ1ZTE5ZDYxZTE4
NThiZmJkNWVkZDliZmE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTEwMDUsNiArMTAwNSwxMSBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYQogICAgIFttX2NvbnRlbnRWaWV3IHJ1bk1vZGFsSmF2YVNjcmlwdERpYWxvZzpX
VEZNb3ZlKGNhbGxiYWNrKV07CiB9CiAKK1dlYkNvcmU6OkNvbG9yIFBhZ2VDbGllbnRJbXBsOjpj
b250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpCit7CisgICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3
IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xvcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNzdjODA2ZDQyYTFjMTRiZmMyMDA1ODJm
YzhlY2Y3MzY2YzNiODA1ZC4uMzJiMGYyOGE1NmY2ZTc1ZWViZjU4ZTc1NTk1NjM2Y2RjNjE4MTlh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0xNTY0LDYgKzE1NjQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dEYXRhRGV0ZWN0
b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW4KICAgICBwYWdl
Q2xpZW50KCkuc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24ocG9zaXRp
b25JbmZvKTsKIH0KIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gY29udGVudFZpZXdCYWNrZ3JvdW5k
Q29sb3IgPSBwYWdlQ2xpZW50KCkuY29udGVudFZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsgY29udGVu
dFZpZXdCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gY29udGVudFZp
ZXdCYWNrZ3JvdW5kQ29sb3I7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAg
IHJldHVybiBVSUNvbG9yLnN5c3RlbUJhY2tncm91bmRDb2xvci5DR0NvbG9yOworI2Vsc2UKKyAg
ICByZXR1cm4gVUlDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisjZW5kaWYKK30KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCmluZGV4IDY4YjA1ODhkN2E0NmRhNmMwNzI1YmQyZGM5ZjcxYTA4YWJmYmU4
ZGYuLjdjMDJhZThhMGQ0ZWQzODkzYmEzYjIwNzVkMDJmYWRjYWY5OGQ2ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNzEwLDYgKzcx
MCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3Vz
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZQogfQogI2VuZGlmCiAKK0NvbG9yIFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1VbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworI2lm
IEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIHJldHVybiBOU0NvbG9yLmNvbnRyb2xCYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvcjsKKyNlbHNlCisgICAgcmV0dXJuIE5TQ29sb3Iud2hpdGVDb2xvci5D
R0NvbG9yOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA5ODY0NmZlNGI5N2ExMmJhNWVjZGEwZWNjN2U1MmExMzNiMGZjNDQ4Li4yNDM1
YjEzYWI2ODRiYWQwMDYxZGIyMmM4Y2Y5MDJlNTMwOGNiMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjQ0OCw2ICsyNDQ4LDExIEBAIHZv
aWQgV2ViUGFnZTo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYW1lLCBjb25zdCBVc2VyRGF0CiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVNZXNz
YWdlVG9QYWdlKHRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpz
ZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShXZWJDb3JlOjpDb2xvciYmIHVuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIG1fcGFnZS0+c2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV1RGTW92ZSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
dmVycmlkZSkpOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHZvaWQgV2ViUGFn
ZTo6c2V0SGVhZGVyUGFnZUJhbm5lcihQYWdlQmFubmVyKiBwYWdlQmFubmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVlNDQ3M2FkYzRiOTgwZTBk
YjhkN2EzZTAzNDg3YmIyZmU4OThmYmMuLjE0ZjFmOWUwMjg4YjMzOGIxZDNjYjVkZTllZmNhMzcz
YjM4MDBmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTYwNyw2ICs2MDcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwb3N0SW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJik7
CiAKKyAgICB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6
OkNvbG9yJiYpOworCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikgeyBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNv
bG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggZTM3YTY1OWM5MWIzODkyZTJiOGY5MzhjNjI2Y2RjZmU4OWU0MTkwNC4uM2I3
ZjcwNDEwMDU5ZDBhYjhlMjA1ZDJiNGJhZTBkYWRmMDAzYTZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zOSw2
ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRv
cENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAKICAgICBTZXRVbmRlcmxheUNvbG9y
KFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIFNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlKFdlYkNvcmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQog
CiAgICAgVmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgIFZpZXdXaWxsRW5kTGl2ZVJlc2l6
ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZmU4MDhmZWUzNDZmODY3NzdiMjI2NjljMDViZTZlZDk0YjQwNzZlZS4uNGQ2YjllNDgwN2YwZjky
NTdjOTllODkwZGYzMThmODJlYWQyNjNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA1LTEyICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmll
dyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1Njgw
OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IubW06IFJlbmFtZWQgZnJvbSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0uCisg
ICAgICAgIChkZWZhdWx0QmFja2dyb3VuZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5PbkxvYWQpOgorICAgICAgICAoVEVTVC5X
S1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xlU29saWRDb2xvcik6IEFkZGVk
LgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xl
QmxlbmRlZENvbG9yKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5NdWx0aXBsZVNvbGlkQ29sb3JzKTogQWRkZWQuCisgICAgICAgIChURVNU
LldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5NdWx0aXBsZUJsZW5kZWRDb2xvcnMp
OiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2Jz
ZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9i
amVjdDpjaGFuZ2U6Y29udGV4dDpdKTogQWRkZWQuCisgICAgICAgIChURVNULldLV2ViVmlld1Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvci5LVk8pOgorICAgICAgICAoVEVTVC5XS1dlYlZpZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IuTWF0Y2hlc1Njcm9sbFZpZXcpOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxlU3R5bGVzKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZp
ZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENvbG9yLm1tOgorICAg
ICAgICAoY3JlYXRlV2ViVmlld1dpdGhTYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSk6
CisgICAgICAgIChURVNULlNhbXBsZWRQYWdlVG9wQ29sb3IuRXhwZXJpbWVudGFsVXNlU2FtcGxl
ZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xv
ci5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXcpOiBEZWxldGVkLgorICAgICAgICAoVEVTVC5X
S1dlYlZpZXcuRXhwZXJpbWVudGFsVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5n
cyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFu
ZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5v
dyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3Jv
bGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNS0xMCAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVmbGlnaHQgcmVxdWVz
dHMgbm90IHByb3Blcmx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGZjZGVhYjRmNDlkNzc5OTdkMGIxM2RhODJhZGRjY2MyOWU3M2MzYjMuLjBiYWVl
ZGU5N2E4ZjkyMmE3YjkxN2JiNTNhNDBmZDc4MmY2YmQyYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NzEsNyArODcxLDcgQEAKIAkJOTUwOTVGMjAyNjJGRkZBNTAwMDBEOTIwIC8qIFNh
bXBsZWRQYWdlVG9wQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xv
ci5tbSAqLzsgfTsKIAkJOTNGQ0RCMzQyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkNE
QjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi87IH07CiAJCTk1MEU0
Q0MxMjUyRTc1MjQwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlG
IC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gKi87IH07Ci0JCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3
MyAvKiBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNBQkIzNDI1QzBENjgxMDA0QzhCNzMgLyogUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovOyB9OworCQk5NTNBQkIzNTI1QzBENjgyMDA0
QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4
QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVB
NTI0OTUyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0
NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLzsgfTsKIAkJOTVCNkIzQjcyNTFFQkYy
RjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUI2QjNCNjI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1
bWVudC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1Rl
eHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07
CkBAIC0yNTY4LDcgKzI1NjgsNyBAQAogCQk5NTA5NUYxRjI2MkZGRkE1MDAwMEQ5MjAgLyogU2Ft
cGxlZFBhZ2VUb3BDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNhbXBsZWRQYWdlVG9wQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkNEQjMzMjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHls
dXNTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gaU9T
U3R5bHVzU3VwcG9ydC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTUzQUJCMzQy
NUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTUzQUJCMzQyNUMwRDY4MTAw
NEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVBNTI0OTQyNTgxQTEw
RDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NUI2QjNCNjI1MUVCRjJGMDBGQzQzODIgLyogTWVkaWFEb2N1bWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhRG9jdW1l
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhE
MTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNDgyLDcgKzM0ODIsNiBAQAogCQkJCTM3QTIyQUE1MURDQUEyNzIwMEFGQkZD
NCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFzaC5tbSAqLywKIAkJ
CQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovLAog
CQkJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRz
Lm1tICovLAotCQkJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IubW0gKi8sCiAJCQkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBhZ2VP
dmVybGF5UGx1Z2luLm1tICovLAogCQkJCTUxMjQyQ0RBMjM3Qjc5MUUwMEVFRDlDMSAvKiBQYWdl
Wm9vbS5tbSAqLywKIAkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRU
b2tlblBsdWdJbi5tbSAqLywKQEAgLTM2MjYsNiArMzYyNSw3IEBACiAJCQkJQ0Q3Rjg5REIyMkE4
NkNEQTAwRDY4M0FFIC8qIFdLV2ViVmlld1N1c3BlbmRBbGxNZWRpYVBsYXliYWNrLm1tICovLAog
CQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8s
CiAJCQkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0g
Ki8sCisJCQkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gIldlYktpdCBDb2NvYSI7CiAJ
CQlwYXRoID0gV2ViS2l0Q29jb2E7CkBAIC01NTc4LDcgKzU1NzgsNiBAQAogCQkJCTBGMzQwNzc2
MjMwMzdGREMwMDYwQTFBMCAvKiBPdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBPdmVycmlkZUFwcGxlTGFuZ3Vh
Z2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQTI1ODZGMjI1QzY3REMwMEI0
NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdlR3Jv
dXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBh
Z2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3
QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC01ODYwLDYgKzU4NTksNyBAQAogCQkJCUNEN0Y4OURDMjJBODZDREEw
MEQ2ODNBRSAvKiBXS1dlYlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5YmFjay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5NUE1MjQ5NTI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJW
aWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRD
OEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Qzc0QzhGQTIyREZCQTk2MDBEQTJEQUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRw
b2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NTMyZjQ1YWMwOGE0ZTExOGQ5YzQxYWFjZWQ3NWNhMTEwNzgyMDAzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lt
cG9ydCAiQ29jb2FDb2xvci5oIgotI2ltcG9ydCAiVGVzdENvY29hLmgiCi0jaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotCi0jZGVmaW5lIEVYUEVDVF9OU1NUUklOR19FUShleHBlY3Rl
ZCwgYWN0dWFsKSBcCi0gICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsgXAotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwgKE5TU3RyaW5n
ICopYWN0dWFsKTsKLQotY29uc3RleHByIENHRmxvYXQgd2hpdGVDb2xvckNvbXBvbmVudHNbNF0g
PSB7IDEsIDEsIDEsIDEgfTsKLWNvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0
XSA9IHsgMSwgMCwgMCwgMSB9OwotY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50
c1s0XSA9IHsgMCwgMCwgMSwgMSB9OwotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ciwgT25Mb2FkKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byB3aGl0ZUNv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCB3aGl0ZUNv
bG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWlu
dDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOwot
Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwotCi0gICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRl
Q2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IG5vdC1iYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgd2hpdGVDb2xv
ci5nZXQoKSkpOwotfQotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciwgTXVsdGlw
bGVTdHlsZXMpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGJsdWVDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9y
Q29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAg
ICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwot
Ci0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29s
b3I6IHJlZDsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSA8L3N0eWxlPiJdOwot
Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKLX0KLQotQGlu
dGVyZmFjZSBXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5T
T2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJW
aWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKLQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7Ci0KLSAgICBfd2ViVmlldyA9
IHdlYlZpZXc7Ci0gICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAIl9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNv
bnRleHQKLXsKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtaW5pdCJd
KSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtbG9hZCJdKSB7
Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbG9hZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWFk
ZGVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtYWRkZWQiOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAi
YmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1j
c3MtY2xhc3MtY2hhbmdlZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19z
dGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXSkgewotICAg
ICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUBlbmQK
LQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIEtWTykKLXsKLSAgICBhdXRvIHNS
R0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRv
IHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBy
ZWRDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0g
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBhdXRvIHRoZW1lQ29sb3JP
YnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoImFmdGVyLWluaXQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7
Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Jd
KTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbG9hZCJdOwot
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbElt
bWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkucmVkIHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gPC9zdHls
ZT4iXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxvYWQiLCBbdGhlbWVDb2xvck9i
c2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdl
dCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1j
bGFzcy1hZGRlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07Ci0gICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXIt
Y3NzLWNsYXNzLWFkZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwotICAgIEVYUEVD
VF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt0aGVtZUNvbG9yT2Jz
ZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXTsKLSAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAnYmx1ZSciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCIsIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVD
b2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAImJlZm9y
ZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07Ci0gICAgW3dlYlZpZXcg
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19FUSgi
YWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Ci0g
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci19CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9w
Q29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBsZWRQ
YWdlVG9wQ29sb3IubW0KaW5kZXggN2YyNzIxYjY1YzA3MDIyMTM5NDI1OWQ2YjA3YWE2MmJlOTNj
NzIyMS4uOGIzZjExOGNkYzM4Mzk5Yjc2YzliZDIyMmJmNDI4ZjU4NTg4MTQ2MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVkUGFnZVRvcENv
bG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2FtcGxl
ZFBhZ2VUb3BDb2xvci5tbQpAQCAtODEsMjAgKzgxLDEyIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdl
OihOCiAKIEBlbmQKIAotZW51bSBjbGFzcyBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VUb3BDb2xvck1heERp
ZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlLCBkb3VibGUg
c2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yID0gVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKQorc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBj
cmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKGRvdWJsZSBz
YW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29s
b3JNaW5IZWlnaHQgPSAwKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
X3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlOnNhbXBsZWRQYWdlVG9wQ29sb3JN
YXhEaWZmZXJlbmNlXTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2FtcGxlZFBhZ2VUb3BDb2xv
ck1pbkhlaWdodDpzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0XTsKIAotICAgIGZvciAoX1dL
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2ludGVybmFs
RGVidWdGZWF0dXJlc10pIHsKLSAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJp
bmc6QCJVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciJd
KSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
Oih1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9PSBV
c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKSBm
b3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogfQogCkBAIC0zNTgsMzQgKzM1MCwzIEBAIFRFU1QoU2Ft
cGxlZFBhZ2VUb3BDb2xvciwgRElTQUJMRURfRGlzcGxheVAzKQogICAgIEVYUEVDVF9JTl9SQU5H
RShjb21wb25lbnRzWzJdLCAxLjAwLCAxLjAxKTsKICAgICBFWFBFQ1RfRVEoY29tcG9uZW50c1sz
XSwgMSk7CiB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQ
SS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBt
YWNPUy4KLQotVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBFeHBlcmltZW50YWxVc2VTYW1wbGVk
UGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHdl
YlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVh
dGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKDUsIDAsIFVzZVNh
bXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAg
RVhQRUNUX05VTEwoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3Jv
dW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRN
TEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0p
XTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJl
YUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVYUEVDVF9FUShX
ZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6
OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdl
Rm9ySFRNTCh3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENv
bG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsg
InJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJW
aWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIF9zYW1wbGVk
UGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci0gICAgRVhQRUNU
X0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yKSwgV2Vi
Q29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIGF1dG8gd2ViVmlld1dpdGhUaGVtZUNvbG9yRm9y
U2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VU
b3BDb2xvck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9s
bEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRo
VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29s
b3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0
Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dp
dGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BD
b2xvcl0pOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29s
b3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxl
ZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JT
dG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdl
YkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJl
ZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5D
R0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCmluZGV4IGI1N2VkYTcxODM0NTkwMTUw
Zjg3NTk0YWFkNDE2MDIwZWZkMzQzZTkuLjNkYmQ4NjMwMTVhYzJjZjRlNzE0MDUwZDc1ZDBjOWMy
NTliNmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAgLTMyMSw1MiArMzIxLDMgQEAg
VEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE92ZXJyaWRlc0FwcGxpY2F0aW9u
TWFuaWZlc3QpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0K
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQSS9TUEkgdG8gZ2V0
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNPUy4KLQotZW51
bSBjbGFzcyBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wg
eyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZp
ZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBm
b3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9p
bnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0gICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVh
bFRvU3RyaW5nOkAiVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IiXSkg
ewotICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDoo
dXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPT0gVXNlVGhlbWVDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1
cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLX0KLQotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBFeHBlcmltZW50YWxVc2VUaGVtZUNv
bG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHNSR0JDb2xvclNw
YWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JH
QikpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gYmx1ZUNvbG9yID0g
YWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21w
b25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxB
cmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91
dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLQot
ICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxk
RnJhbWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0g
ICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENv
bG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkp
KTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3Vu
ZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0
ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29udGVudD0ncmVk
Jz48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0gICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkp
OwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRob3V0VGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3Vu
ZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgYXV0byB3ZWJWaWV3V2l0
aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gY3JlYXRlV2ViVmlldyhV
c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKTsKLSAgICBFWFBF
Q1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGls
QWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotICAgIEVYUEVDVF9UUlVF
KENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVD
b2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFC
YWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNvbG9yJyBjb250
ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdl
dCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhU
aGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3Jv
dW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLX0KLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhYzk2N2ViOTdkYzAwMDRiOGQxMDhmZTEyZjMwNDdlMTEz
OGQ2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQpAQCAtMCwwICsxLDMw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJDb2NvYUNv
bG9yLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNkZWZpbmUgRVhQRUNUX0lOX1JBTkdFKGFjdHVhbCwgbWluLCBtYXgpIFwKKyAg
ICBFWFBFQ1RfR0UoYWN0dWFsLCBtaW4pOyBcCisgICAgRVhQRUNUX0xFKGFjdHVhbCwgbWF4KTsK
KworI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAorICAgIEVY
UEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7IFwKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmluZyAqKWFjdHVhbCk7CisKK2NvbnN0
ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9OworY29u
c3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwgMSB9Owor
CitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKQorewor
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRv
IGNvbG9yID0gcmV0YWluUHRyKE5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xvcik7CisjZWxp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IGF1dG8gY29sb3IgPSByZXRhaW5QdHIoVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5kQ29sb3IpOwor
I2Vsc2UKKyAgICBhdXRvIGNvbG9yID0gcmV0YWluUHRyKFtDb2NvYUNvbG9yIHdoaXRlQ29sb3Jd
KTsKKyNlbmRpZgorCisgICAgLy8gU29tZSBvZiB0aGUgYWJvdmUgY2FuIHNvbWV0aW1lcyBiZSBh
IG1vbm9jaHJvbWUgY29sb3IsIHNvIGNvbnZlcnQgaXQgdG8gc1JHQiBzbyB0aGUgY29tcGFyaXNv
bnMgYmVsb3cgd29yay4KKyAgICAvLyBgV2ViQ29yZTo6Q29sb3JTcGFjZWAgZG9lc24ndCBoYXZl
IGFuIGVxdWl2YWxlbnQgbW9ub2Nocm9tZSBlbnVtIHZhbHVlLCBidXQgdHJlYXRzIGBDR0NvbG9y
YCB3aXRoIG9ubHkgdHdvIGNvbXBvbmVudHMgYXMgbW9ub2Nocm9tZSBhbmQgY29udmVydHMgdGhl
bSB0byBgU1JHQmAuCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHNSR0JDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUNvcHlCeU1hdGNoaW5nVG9Db2xvclNwYWNlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBbY29sb3IgQ0dDb2xv
cl0sIE5VTEwpKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yLmdldCgpOworfQorCitURVNUKFdLV2Vi
Vmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgT25Mb2FkKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xv
cihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IoKS5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciwgU2luZ2xlU29saWRDb2xvcikKK3sKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNl
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikp
OworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3Bh
Y2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJW
aWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRD
b2xvcigpLmdldCgpKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5
IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5bGU+Il07CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yLCBTaW5nbGVCbGVuZGVkQ29sb3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91
bmRDb2xvcigpLmdldCgpKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBi
b2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuNSk7IH0gPC9zdHlsZT4i
XTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhbd2ViVmlldyB1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOworICAgIEVYUEVDVF9FUShjb21wb25l
bnRzWzBdLCAxKTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1sxXSwgMC40NSwgMC41
NSk7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMl0sIDAuNDUsIDAuNTUpOworICAg
IEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworVEVTVChXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IsIE11bHRpcGxlU29saWRDb2xvcnMpCit7CisgICAgYXV0byBzUkdC
Q29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNS
R0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRC
YWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxz
dHlsZT4gaHRtbCB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gYm9keSB7IGJhY2tncm91bmQt
Y29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRv
Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwg
TXVsdGlwbGVCbGVuZGVkQ29sb3JzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5n
ZXQoKSkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gaHRtbCB7IGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOyB9IGJvZHkgeyBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2JhKDAsIDAsIDI1NSwgMC41KTsgfSA8L3N0eWxlPiJdOworICAgIGF1dG8gY29tcG9u
ZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvcik7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMF0sIDAuNDUs
IDAuNTUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzFdLCAwLjIsIDAuMjUpOwor
ICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAwLjcsIDAuNzUpOworICAgIEVYUEVD
VF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworQGludGVyZmFjZSBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3N0YXRlID0gQCJiZWZv
cmUtaW5pdCI7CisKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgW193ZWJWaWV3IGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInVuZGVyUGFnZUJhY2tncm91bmRDb2xvciIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmlu
ZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNo
YW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxU
b1N0cmluZzpAImJlZm9yZS1pbml0Il0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJhZnRlci1pbml0
IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0
cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFm
dGVyLWNzcy1jbGFzcy1hZGRlZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
W19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXSkgewor
ICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1jaGFuZ2VkIjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1j
c3MtY2xhc3MtcmVtb3ZlZCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItY3NzLWNsYXNz
LXJlbW92ZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNF
cXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vbm51bGwtb3ZlcnJpZGUiXSkgeworICAgICAgICBfc3Rh
dGUgPSBAImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW51bGwtb3ZlcnJpZGUi
XSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW51bGwtb3ZlcnJpZGUiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJub3QtcmVhY2hlZCIsIF9z
dGF0ZSk7Cit9CisKK0BlbmQKKworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IsIEtWTykKK3sKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3Ig
PSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29t
cG9uZW50cykpOworICAgIGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNS
R0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8gdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgRVhQ
RUNUX05TU1RSSU5HX0VRKCJhZnRlci1pbml0IiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3IoKS5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVy
IHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50
OkAiPHN0eWxlPiBib2R5LnJlZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSBib2R5LmJsdWUg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IDwvc3R5bGU+Il07CisgICAgRVhQRUNUX05TU1RS
SU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENv
bG9yKCkuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
ZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXTsKKyAgICBbd2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAncmVkJyJd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1hZGRlZCIsIFt1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRv
Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0
YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1d
OworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwg
cmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZl
ciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOm5pbF07CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQt
bm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwor
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFu
Z2VkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LmJvZHkuY2xhc3NOYW1lID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQ
cmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItY3NzLWNs
YXNzLWNoYW5nZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsK
KyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJd
OworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBj
b2xvcldpdGhDR0NvbG9yOmJsdWVDb2xvci5nZXQoKV1dOworICAgIEVYUEVDVF9OU1NUUklOR19F
USgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIg
c3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisKKyAg
ICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90
LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxd
OworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwg
Ymx1ZUNvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2
ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXTsKKyAgICBbd2ViVmlldyBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAn
JyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBF
WFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIiwgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRl
ZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2Vi
VmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dD
b2xvcjpkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkuZ2V0KCldXTsKKyAgICBFWFBFQ1RfTlNTVFJJ
TkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2Vy
dmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmll
dyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29s
b3IoKS5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNl
dFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3Qt
Y2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisg
ICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLW5v
bm51bGwtb3ZlcnJpZGUiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1dOworICAgIEVY
UEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbm9ubnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVh
bFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRD
b2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNl
dFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQo
KV1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0Nv
bG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xv
ciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ3JlZCci
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQ
RUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRl
OkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnYmx1ZSciXTsKKyAgICBbd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX05TU1RSSU5H
X0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZl
ciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisg
ICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5v
dC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0
UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3Qt
Y2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbnVsbC1vdmVycmlkZSJdOwor
ICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOworICAgIEVYUEVD
VF9OU1NUUklOR19FUSgiYWZ0ZXItbnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBkZWZhdWx0QmFj
a2dyb3VuZENvbG9yKCkuZ2V0KCkpKTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisK
Ky8vIFRoZXJlJ3Mgbm8gQVBJL1NQSSB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhl
IHNjcm9sbCBhcmVhIG9uIG1hY09TLgorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvciwgTWF0Y2hlc1Njcm9sbFZpZXcpCit7CisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
KyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNl
LmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50
cykpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1Rf
VFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0uQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvcigpLmdldCgpKSk7CisgICAgRVhQRUNU
X1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5k
Q29sb3IuQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvcigpLmdldCgpKSk7CisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlh
dGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmVk
OyB9IDwvc3R5bGU+Il07CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7
CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3
XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt3ZWJW
aWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0Nv
bG9yOmJsdWVDb2xvci5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3
IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Cisg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5i
YWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Cit9CisKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428651</attachid>
            <date>2021-05-14 13:44:49 -0700</date>
            <delta_ts>2021-05-14 14:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225615-20210514144448.patch</filename>
            <type>text/plain</type>
            <size>75901</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDAxYzJkNDYyMDRkZTFiMDJkNzcxMWM3MTg4OTg1ZGM1NTU0NDQ2Yi4uOWYxMzZlNmM5
NGNjNDljMGExMzAxMTQ3ZTQyZDhiOWU4YjI4MjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MS0wNS0xNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
bW90ZSBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBg
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFi
bGVgIHByb3BlcnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAg
ICAgICAgLSB0aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAg
IC0gdGhlIENTUyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0
bWw+YCAodGhpcyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcmApCisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNr
Z3JvdW5kIGNvbG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxs
IG5vdCBoYXZlIGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVu
bG9vcC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sOgorICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNl
U2FtcGxlZFBhZ2VUb3BDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgYW5kCisgICAg
ICAgIGBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQg
Y2xpZW50cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVh
IGJhY2tncm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjpdYC4KKwogMjAyMS0wNS0xMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYlhSXSBBbGxvdyBXZWJYUiB0byBiZSB0ZXN0ZWQgb24gUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYWU1OWFmNDI1Y2FhMmU5MTkzMDFiN2MyYzliNTc3MGQxMGZj
NmIyMC4uNTY2Y2FlM2JmMTUwZDU2N2I1ZTdhYjFhZDMxMzM0NTU3NzgzYTdmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTA1LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yXWAgU1BJIHRvIGAtW1dLV2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JdYCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTYxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY1NjgwOTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JgIGlzIGEgYG51bGxfcmVzZXR0YWJsZWAgcHJvcGVydHkgdGhhdCB3aWxsIHJldHVybiAoaW4g
b3JkZXIgb2YgdmFsaWRpdHkpCisgICAgICAgICAtIHRoZSBtb3N0IHJlY2VudCBub24tbnVsbCB2
YWx1ZSBwcm92aWRlZAorICAgICAgICAgLSB0aGUgQ1NTIGBiYWNrZ3JvdW5kLWNvbG9yYCBvZiB0
aGUgYDxib2R5PmAgYW5kL29yIGA8aHRtbD5gICh0aGlzIGlzIHRoZSBjdXJyZW50IHZhbHVlIG9m
IGBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yYCkKKyAgICAgICAgIC0gdGhlIHVuZGVybHlp
bmcgcGxhdGZvcm0gdmlldydzIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAgTW9kaWZpY2F0aW9u
cyB0byB0aGlzIHByb3BlcnR5IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCB1bnRpbCBjb250cm9s
IGlzIHJldHVybmVkIHRvIHRoZSBydW5sb29wLgorCisgICAgICAgIFRlc3RzOiBXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuT25Mb2FkCisgICAgICAgICAgICAgICBXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuU2luZ2xlU29saWRDb2xvcgorICAgICAgICAgICAgICAg
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLlNpbmdsZUJsZW5kZWRDb2xvcgorICAg
ICAgICAgICAgICAgV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxlU29s
aWRDb2xvcnMKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ci5NdWx0aXBsZUJsZW5kZWRDb2xvcnMKKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvci5LVk8KKyAgICAgICAgICAgICAgIFdLV2ViVmlld1VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvci5NYXRjaGVzU2Nyb2xsVmlldworCisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlk
ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSk6IEFkZGVkLgor
ICAgICAgICBIb2xkIHRoZSBjbGllbnQtb3ZlcnJpZGVuIHZhbHVlIGZvciBgdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yYCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIHdoZW4KKyAgICAgICAgZHJhd2lu
ZyB0aGUgb3ZlcnNjcm9sbCBsYXllci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVMYXllckZvck92ZXJoYW5nQXJlYXNCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBS
ZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBzZXR0aW5ncyBgVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIGFuZAorICAgICAgICBgVXNlVGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3JgIG5vdyB0aGF0IGNsaWVudHMgY2FuIG92ZXJyaWRl
IHRoZSBkZWZhdWx0CisgICAgICAgIG92ZXJzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIHVz
aW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6XWAuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRoZW1l
Q29sb3JDaGFuZ2VkKToKKyAgICAgICAgSXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGZvcmNl
IHRoZSBvdmVyc2Nyb2xsIGFyZWEgdG8gcmVkcmF3IHNpbmNlIHRoYXQnbGwgYmUgaGFuZGxlZCBi
eQorICAgICAgICBhIGNsaWVudCBjYWxsaW5nIGAtW1dLV2ViVmlldyBzZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3I6XWAgKHBvc3NpYmx5IGluIHJlc3BvbnNlIHRvIGEKKyAgICAgICAgYC1bV0tX
ZWJWaWV3IHRoZW1lQ29sb3JdYCBLVk8gbm90aWZpY2F0aW9uKS4KKwogMjAyMS0wNS0xMyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENoZWNrIGZvciBudWxsIGVsZW1l
bnQgaW4gcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjg3OTYzZTVj
MmUyZTE3OWIzNmMzODNiM2Y2YzJhZjk2M2U3YzVjMy4uZDE1YWJlMTFkNTg1Zjg1MmRjNTYxNmI2
OWUzMGI1OTE3YTQwMTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAyMS0wNS0xNCAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBgLVtX
S1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSB0byBgLVtXS1dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXWAgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU2MTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc2NTY4MDk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAg
ICBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCBpcyBhIGBudWxsX3Jlc2V0dGFibGVgIHByb3Bl
cnR5IHRoYXQgd2lsbCByZXR1cm4gKGluIG9yZGVyIG9mIHZhbGlkaXR5KQorICAgICAgICAgLSB0
aGUgbW9zdCByZWNlbnQgbm9uLW51bGwgdmFsdWUgcHJvdmlkZWQKKyAgICAgICAgIC0gdGhlIENT
UyBgYmFja2dyb3VuZC1jb2xvcmAgb2YgdGhlIGA8Ym9keT5gIGFuZC9vciBgPGh0bWw+YCAodGhp
cyBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcmAp
CisgICAgICAgICAtIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIHZpZXcncyBiYWNrZ3JvdW5kIGNv
bG9yCisgICAgICAgIE1vZGlmaWNhdGlvbnMgdG8gdGhpcyBwcm9wZXJ0eSB3aWxsIG5vdCBoYXZl
IGFueSBlZmZlY3QgdW50aWwgY29udHJvbCBpcyByZXR1cm5lZCB0byB0aGUgcnVubG9vcC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3I6XSk6IEFkZGVkLgorICAgICAgICAoK1tXS1dlYlZpZXcgYXV0b21h
dGljYWxseU5vdGlmaWVzT2JzZXJ2ZXJzT2ZVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdKTogQWRk
ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAg
ICAgIChiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIChzY3JvbGxWaWV3
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgc2V0dGlu
Z3MgYFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBh
bmQKKyAgICAgICAgYFVzZVRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yYCBu
b3cgdGhhdCBjbGllbnRzIGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdAorICAgICAgICBvdmVyc2Ny
b2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciB1c2luZyBgLVtXS1dlYlZpZXcgc2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yOl1gLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck92ZXJyaWRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1V
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgU3RvcmUgdGhl
IGNsaWVudC1vdmVycmlkZW4gdmFsdWUgZm9yIGB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JgIGFu
ZCBtYW5hZ2Ugc3RhdGUgY2hhbmdlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cldpbGxDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6dW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxD
b2NvYTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JE
aWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgQWRkIE9iakMgS1ZPIHN1cHBvcnQgZm9yIGAtW1dL
V2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdYC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29udGVu
dFZpZXdCYWNrZ3JvdW5kQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgUHJvdmlkZSBhIHdheSB0byBn
ZXQgdGhlIGBiYWNrZ3JvdW5kQ29sb3JgIG9mIHRoZSBgV0tDb250ZW50Vmlld2AuIFRoaXMgaXMg
bmVlZGVkIG9uIGlPUworICAgICAgICBiZWNhdXNlIGBzY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
YCAobm93IGBXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCkK
KyAgICAgICAgd291bGQgdXNlIHRoaXMgdmFsdWUgYmVmb3JlIGZhbGxpbmcgYmFjayB0byB0aGUg
dW5kZXJseWluZyBwbGF0Zm9ybSB2aWV3J3MgYmFja2dyb3VuZCBjb2xvci4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZSk6IEFkZGVkLgorICAgICAgICBQYXNzIHRoZSBjbGllbnQtb3ZlcnJp
ZGVuIHZhbHVlIGZvciBgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yYCB0byB0aGUgV2ViUHJvY2Vz
cyBzbyB0aGF0IGl0CisgICAgICAgIGNhbiBiZSB1c2VkIHdoZW4gZHJhd2luZyB0aGUgb3ZlcnNj
cm9sbCBsYXllci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdCk6Cisg
ICAgICAgIEdvIGJhY2sgdG8gdXNpbmcgdGhlIGBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Jg
IChiZWZvcmUgcjI3MzA4MykuCisKIDIwMjEtMDUtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBQbHVtYiBkYXRhIGRldGVjdG9yIHJl
c3VsdHMgdGhyb3VnaCBzb21lIHBsYXRmb3JtIG9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmlu
ZGV4IGI1OThhYTZhMDQ4MzJhNzBmOTc4ZGEyOTA5MWEyOWFlN2FiODk1ZDcuLmZhMWQ3YjExODY1
ODkyNDcxNjFjYmNjNGFjNzkxZjkyZDIxMzE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKKysrIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApAQCAt
NzYwLDMwICs3NjAsNiBAQCBVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZDoKICAg
ICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiBkZWZhdWx0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRl
cmluZ0VuYWJsZWQoKQogCi1Vc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tn
cm91bmRDb2xvcjoKLSAgdHlwZTogYm9vbAotICBodW1hblJlYWRhYmxlTmFtZTogIlVzZSBzYW1w
bGVkIHBhZ2UgdG9wIGNvbG9yIGZvciBzY3JvbGwgYXJlYSBiYWNrZ3JvdW5kIGNvbG9yIgotICBo
dW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2Ugc2FtcGxlZCBwYWdlIHRvcCBjb2xvciBmb3Ig
c2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYktp
dExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAgICAgZGVmYXVs
dDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQotVXNlVGhlbWVD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ci0gIHR5cGU6IGJvb2wKLSAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJVc2UgdGhlbWUtY29sb3IgZm9yIHNjcm9sbCBhcmVhIGJhY2tncm91bmQg
Y29sb3IiCi0gIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIlVzZSB0aGVtZS1jb2xvciBmb3Ig
c2Nyb2xsIGFyZWEgYmFja2dyb3VuZCBjb2xvciIKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYktp
dExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAgICAgZGVmYXVs
dDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQogIyBGSVhNRTog
UmVtb3ZlIG9uY2UgPHJkYXI6Ly83MzgzMDk2MT4gaGFzIGJlZW4gZml4ZWQKIFVzZWlUdW5lc0FW
T3V0cHV0Q29udGV4dDoKICAgdHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZWE0MmYzMzQxYTZhNTdlYTBjNWE5ZTExMTgyNGY1ZTUxMjBkZjAxYi4uZmUzNjgyZGZkYmM2YjI5
ZjU3MGQ2ZmE4Y2YzYTc5MmEzOTI3OTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0z
OTAxLDEzICszOTAxLDYgQEAgdm9pZCBEb2N1bWVudDo6dGhlbWVDb2xvckNoYW5nZWQoKQogCiAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLnRoZW1lQ29sb3JDaGFuZ2VkKCk7Ci0KLSNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCi0gICAgaWYgKGF1dG8qIHZpZXcgPSByZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgaWYgKHZp
ZXctPnVzZXNDb21wb3NpdGluZygpKQotICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLnVw
ZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xvcigpOwotICAgIH0KLSNlbmRp
ZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRQYWdl
U2FtcGxlTG9jYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBJbnRQb2ludCYgbG9jYXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyYzQ1YWI5YWU0ZjhhNDNkYjI5M2EwYTE2MmYwZjI4
OTE4NTBkOGU2Li5hYTEzNmJmOTI2MDcyZjM5ODgxMTI5YmU4NTMxYzQ4ZWE0NjZlYjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTI1NjMsNiArMjU2MywyNSBAQCBDb2xvciBQYWdlOjpzYW1wbGVk
UGFnZVRvcENvbG9yKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPnNhbXBsZWRQYWdlVG9w
Q29sb3IoKTsKIH0KIAordm9pZCBQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVy
cmlkZShDb2xvciYmIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKQoreworICAgIGlm
ICh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9PSBtX3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlID0gV1RGTW92ZSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVy
cmlkZSk7CisKKyAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOworCisjaWYgRU5BQkxF
KFJVQkJFUl9CQU5ESU5HKQorICAgIGlmIChhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIobWFp
bkZyYW1lKCkudmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1l
Vmlldy0+cmVuZGVyVmlldygpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyVmlldy0+dXNlc0Nv
bXBvc2l0aW5nKCkpCisgICAgICAgICAgICAgICAgcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnVw
ZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xvcigpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShSVUJCRVJfQkFORElORykKK30KKwogLy8gVGhlc2UgYXJl
IG1hZ2ljYWwgY29uc3RhbnRzIHRoYXQgbWlnaHQgYmUgdHdlYWtlZCBvdmVyIHRpbWUuCiBzdGF0
aWMgY29uc3QgZG91YmxlIGdNaW5pbXVtUGFpbnRlZEFyZWFSYXRpbyA9IDAuMTsKIHN0YXRpYyBj
b25zdCBkb3VibGUgZ01heGltdW1VbnBhaW50ZWRBcmVhUmF0aW8gPSAwLjA0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCA4MGM2MjM5YmFlZmRkZGIxMjhjODIxNjU0MDU0NjlkNmI5ZGJkYzU3Li4yMGQ2ZDk2
ZDc3NGUyMTcxM2Y0MzYxYzE2ZWE4YWNkMzQyYWVlYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjIz
LDYgKzYyMyw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBwYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBzYW1w
bGVkUGFnZVRvcENvbG9yKCkgY29uc3Q7CiAKKyAgICBDb2xvciB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T3ZlcnJpZGU7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKENvbG9yJiYpOworCiAgICAgYm9vbCBpc0NvdW50aW5nUmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJc0NvdW50aW5nUmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzKGJvb2wgaXNDb3VudGluZykgeyBtX2lzQ291bnRpbmdSZWxldmFudFJl
cGFpbnRlZE9iamVjdHMgPSBpc0NvdW50aW5nOyB9CiAgICAgdm9pZCBzdGFydENvdW50aW5nUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzKCk7CkBAIC0xMTUyLDYgKzExNTUsOCBAQCBwcml2YXRlOgog
CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7CiAKKyAg
ICBDb2xvciBtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlOworCiAgICAgY29uc3Qg
Ym9vbCBtX2h0dHBzVXBncmFkZUVuYWJsZWQgeyB0cnVlIH07CiAgICAgbXV0YWJsZSBNZWRpYVNl
c3Npb25Hcm91cElkZW50aWZpZXIgbV9tZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCBlNDY4NGU4M2IxZThlMWVkNjM3MjRlYjU1OWFiMjk4ZWI5OTg0ODUzLi42ZjBjZTgz
Y2RlNjU5MTliODFmOTkwYWU0ZmVlNjBmNjFlNjA0MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMzg4MiwxNSArMzg4
Miw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvck92ZXJoYW5n
QXJlYXNCYWNrZ3JvdW5kQ29sb3IoKQogCiAgICAgaWYgKG1fcmVuZGVyVmlldy5zZXR0aW5ncygp
LmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkpIHsKICAgICAgICAgYmFja2dyb3Vu
ZENvbG9yID0gKFsmXSB7Ci0gICAgICAgICAgICBpZiAocGFnZSgpLnNldHRpbmdzKCkudXNlVGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSkgewotICAgICAgICAgICAgICAg
IGlmIChhdXRvIHRoZW1lQ29sb3IgPSBwYWdlKCkudGhlbWVDb2xvcigpOyB0aGVtZUNvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoZW1lQ29sb3I7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwYWdlKCkuc2V0dGluZ3MoKS51c2VTYW1wbGVkUGFn
ZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcigpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gc2FtcGxlZFBhZ2VUb3BDb2xvciA9IHBhZ2UoKS5zYW1wbGVkUGFnZVRvcENv
bG9yKCk7IHNhbXBsZWRQYWdlVG9wQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2FtcGxlZFBhZ2VUb3BDb2xvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChhdXRvIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlID0gcGFnZSgpLnVuZGVy
UGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKCk7IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGU7CiAKICAgICAgICAgICAgIHJldHVybiBtX3Jvb3RFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcjsKICAgICAgICAgfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRleCBmOTlhZGJlNjFkNGZkZWIwNjdjYWEyNmEyMTA1
YjlhYjQ2ZGRjMWQ4Li5hYTlhNjdlNzZmYTQwODE3ZWRjOGE0MmExYzU0Y2UxN2VjNTE1OWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC01
ODAsNiArNTgwLDIwIEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJj
aGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBOU0NvbG9yICp0aGVtZUNvbG9yIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKKy8qISBAYWJzdHJhY3QgVGhlIGNv
bG9yIGRyYXduIGJlaGluZCB0aGUgYWN0aXZlIHBhZ2UuCisgQGRpc2N1c3Npb24gQSBjb2xvciBk
ZXJpdmVkIGZyb20gdGhlIGNvbnRlbnQgb2YgdGhlIGFjdGl2ZSBwYWdlLCBzdWNoIGFzIGJ5IGJs
ZW5kaW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mCisgdGhlIDxodG1sPiBhbmQgPGJvZHk+IGVs
ZW1lbnRzIHdpdGggdGhlIEBsaW5rIGJhY2tncm91bmRDb2xvciBAL2xpbmsgb2YgdGhpcyBAbGlu
ayBXS1dlYlZpZXcgQC9saW5rLiBVc2VkIGFzCisgdGhlIGJhY2tncm91bmQgY29sb3IgdW5kZXIg
dGhlIHBhZ2UncyBjb250ZW50LCBzdWNoIGFzIGZvciBzY3JvbGwgYm91bmNpbmcgYXJlYXMuIENh
biBiZSBvdmVycmlkZGVuIGJ5IHRoZQorIG93bmVyIGFwcGxpY2F0aW9uIGZvciBjdXN0b20gc3R5
bGluZyB3aXRob3V0IGhhdmluZyB0byBtb2RpZnkgdGhlIHBhZ2UncyBzdHlsZS4KKyB0aGUgYmFj
a2dyb3VuZCBvZiBzY3JvbGwgYm91bmNpbmcgYXJlYXMuCisgQGxpbmsgV0tXZWJWaWV3IEAvbGlu
ayBpcyBrZXktdmFsdWUgb2JzZXJ2aW5nIChLVk8pIGNvbXBsaWFudCBmb3IgdGhpcyBwcm9wZXJ0
eS4KKyAqLworI2lmIFRBUkdFVF9PU19JUEhPTkUKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxs
X3Jlc2V0dGFibGUsIGNvcHkpIFVJQ29sb3IgKnVuZGVyUGFnZUJhY2tncm91bmRDb2xvciBXS19B
UElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisjZWxzZQorQHByb3BlcnR5IChub25hdG9t
aWMsIG51bGxfcmVzZXR0YWJsZSwgY29weSkgTlNDb2xvciAqdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworI2VuZGlmCisKIEBlbmQK
IAogI2lmICFUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwZWI1YjMyMjlmM2FlZmQxN2JmNmI1MjJjNTQ0MjZk
YmRlMTI5ZTZiLi5mYjBjYzBjNGQ1MTBjYjVjYjk0OTBkOTUyZDNiMDQ4NjIyYWU2MDc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE3
MjEsNiArMTcyMSwyMSBAQCAtIChDb2NvYUNvbG9yICopdGhlbWVDb2xvcgogICAgIHJldHVybiBX
ZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHRoZW1lQ29sb3IpOwogfQogCistIChDb2NvYUNvbG9yICop
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3Jt
Q29sb3IoX3BhZ2UtPnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpKTsKK30KKworLSAodm9pZClz
ZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPdmVycmlkZQoreworICAgIF9wYWdlLT5zZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZS5DR0NvbG9yKTsKK30K
KworKyAoQk9PTClhdXRvbWF0aWNhbGx5Tm90aWZpZXNPYnNlcnZlcnNPZlVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcgoreworICAgIHJldHVybiBOTzsKK30KKwogQGVuZAogCiAjcHJhZ21hIG1hcmsg
LQpAQCAtMzE4OCwxMSArMzIwMywxMyBAQCAtICh2b2lkKV9zZXRDYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZTooQk9PTCljYW5Vc2VDcmVkZW50aWFsU3RvcmFnZQogICAgIF9wYWdlLT5zZXRDYW5Vc2VD
cmVkZW50aWFsU3RvcmFnZShjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSk7CiB9CiAKKy8vIEZJWE1F
OiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYy
NjQ0PgogLSAoQ29jb2FDb2xvciAqKV90aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIHRo
ZW1lQ29sb3JdOwogfQogCisvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogLSAoQ29jb2FD
b2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKIHsKICAgICBhdXRvIHBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvciA9IF9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Io
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDJkZmVhYmEwZGQ0Y2IzZDRlMDBlOWQ1ZmJhY2M4MzgyMDA3ZGYwY2Yu
LmFhZjM3ZDFkNGNkNTlkMzY3NTA1OGRjNzQ2M2RkZjJhYmM4ZjdmMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAt
MzgwLDEwICszODAsMTEgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIE5TQ29sb3IgKl90aGVtZUNvbG9yIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoInRoZW1lQ29sb3IiLCBtYWNvcyhXS19NQUNfVEJBLCBXS19NQUNfVEJBKSk7
CiAjZW5kaWYKIAorLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgPHJkYXI6Ly83Nzc4OTczMj4KICNpZiBUQVJHRVRfT1Nf
SVBIT05FCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJQ29sb3IgKl9wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUNvbG9yICpfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoInVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciIsIGlvcyhXS19JT1NfVEJBLCBXS19JT1NfVEJBKSk7CiAjZWxzZQot
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0NvbG9yICpf
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFD
RU1FTlQoInVuZGVyUGFnZUJhY2tncm91bmRDb2xvciIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJB
KSk7CiAjZW5kaWYKIAogLy8gT25seSBzZXQgaWYgYC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
c2FtcGxlZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2VdYCBpcyBhIHBvc2l0aXZlIG51bWJlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5k
ZXggNTVhY2IwOWNiOThjMzI1NzJjZTAzOTJiMDA1ZDA5ZTM4MTZjMGFiMy4uMWQzMjFkZDA3MTNk
NTZmMjU5NWYyNGRhZjllNzUzYjVjNjllN2QwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMg
V2ViQ29yZTo6Q29sb3IgYmFzZVNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3ICp3
ZWJWaWV3KQogICAgIGlmICghd2ViVmlldy0+X3BhZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2UtPnNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKTsK
KyAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2UtPnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpOwog
fQogCiBzdGF0aWMgV2ViQ29yZTo6Q29sb3Igc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dl
YlZpZXcgKndlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggYzg4YTNkNDIzMzkzMmZkMzU0MDNhNzAxNzMyYWJh
NTJmZmRlYTliNC4uMmE5OGVkZTMyMjM0MWRhYmJiYTJmZjRiNzBmMDBmNDhiOWRiNjE5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBBdHRhY2htZW50OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7CitjbGFzcyBDb2xvcjsK
IAogc3RydWN0IEFwcEhpZ2hsaWdodDsKIH0KQEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCB0aGVtZUNvbG9yV2lsbENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgdGhlbWVDb2xv
ckRpZENoYW5nZSgpIGZpbmFsOworICAgIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2ls
bENoYW5nZSgpIGZpbmFsOworICAgIHZvaWQgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hh
bmdlKCkgZmluYWw7CiAgICAgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hh
bmdlKCkgZmluYWw7CiAgICAgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UoKSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZWRQYWdlVG9wQ29sb3JXaWxsQ2hhbmdlKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50
SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudElt
cGxDb2NvYS5tbQppbmRleCBkZGI0MWViNGI1NjdlMjc1MjdlODdiNWQ5YjZhNDEwYTE2NDY5Nzc0
Li5kODVhNmU4OThlNjQ1YjcyNjEyM2E2ZWMzZjc1MjZjZGJhZGEwOTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KQEAg
LTQ3LDIyICs0NywzOCBAQCBQYWdlQ2xpZW50SW1wbENvY29hOjp+UGFnZUNsaWVudEltcGxDb2Nv
YSgpID0gZGVmYXVsdDsKIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dGhlbWVDb2xvcldpbGxD
aGFuZ2UoKQogewogICAgIFttX3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAidGhlbWVD
b2xvciJdOworCisgICAgLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNv
bG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFs
dWVGb3JLZXk6QCJfdGhlbWVDb2xvciJdOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6
OnRoZW1lQ29sb3JEaWRDaGFuZ2UoKQogewogICAgIFttX3dlYlZpZXcgZGlkQ2hhbmdlVmFsdWVG
b3JLZXk6QCJ0aGVtZUNvbG9yIl07CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dl
YlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkgPHJkYXI6Ly83NjY2MjY0ND4KICAgICBbbV93ZWJWaWV3
IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiX3RoZW1lQ29sb3IiXTsKIH0KIAordm9pZCBQYWdlQ2xp
ZW50SW1wbENvY29hOjp1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JXaWxsQ2hhbmdlKCkKK3sKKyAg
ICBbbV93ZWJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAInVuZGVyUGFnZUJhY2tncm91bmRD
b2xvciJdOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnVuZGVyUGFnZUJhY2tncm91
bmRDb2xvckRpZENoYW5nZSgpCit7CisgICAgW21fd2ViVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktl
eTpAInVuZGVyUGFnZUJhY2tncm91bmRDb2xvciJdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBs
Q29jb2E6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldpbGxDaGFuZ2UoKQogeworICAgIC8v
IEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENv
bG9yXWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+CiAgICAgW21fd2ViVmlldyB3aWxsQ2hhbmdlVmFs
dWVGb3JLZXk6QCJfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIl07CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGxDb2NvYTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkK
IHsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgogICAgIFttX3dlYlZpZXcgZGlk
Q2hhbmdlVmFsdWVGb3JLZXk6QCJfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIl07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhMzU3MzFlYzAxZDllNWUxNTAy
ZTYwNWU1MjgyZmVmMGIwNDVkNjg3Li4yMmQzOWM1ZDEyOTFiNDNiOTExYzU0MTBhMmYyNDQxNWQ5
Yjg5OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00OTAsNiArNDkw
LDggQEAgcHVibGljOgogI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNl
bGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkIChe
Y29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSkgPSAwOwogI2VuZGlmCisKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OkNvbG9yIGNvbnRlbnRWaWV3QmFja2dyb3VuZENvbG9yKCkgPSAwOwogI2VuZGlmCiAK
ICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCkBAIC01MTQsNiArNTE2LDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ29sb3JXaWxsQ2hhbmdlKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHRoZW1lQ29sb3JEaWRDaGFuZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yV2lsbENoYW5nZSgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2FtcGxlZFBhZ2VUb3BDb2xvcldpbGxDaGFuZ2UoKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcAppbmRleCA0OGQ5NDYzMjc1
ODQ5YzAyYzI2MzBjNDliNDkxZDUwZjY3MTM2MzBmLi4yMzMxOTJhOGYxNDExZTk1NjljOTBhMTgw
MDg0YjgxM2E3YjBkMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3
U25hcHNob3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBz
aG90U3RvcmUuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJl
Y29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAK
ICAgICBzbmFwc2hvdC0+c2V0UmVuZGVyVHJlZVNpemUod2ViUGFnZVByb3h5LnJlbmRlclRyZWVT
aXplKCkpOwogICAgIHNuYXBzaG90LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih3ZWJQYWdlUHJveHku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc25hcHNob3QtPnNldEJhY2tncm91bmRDb2xvcih3
ZWJQYWdlUHJveHkuc2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBzbmFwc2hvdC0+
c2V0QmFja2dyb3VuZENvbG9yKHdlYlBhZ2VQcm94eS5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3IoKSk7CiAgICAgc25hcHNob3QtPnNldFZpZXdTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQod2ViUGFnZVByb3h5LnZpZXdTY3JvbGxQb3NpdGlvbigpKSk7CiAKICAgICBp
dGVtLnNldFNuYXBzaG90KFdURk1vdmUoc25hcHNob3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc3YjMwN2ZiZTZjNmU5NmY1NTgxMDJlYzc1OWI1YWEy
YjJjNjhkYzkuLmMyODdhZmRkYmM5MmY0MDI5ODliMWVjNzkzM2JlMTViZGNiYmJmMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTkxMSwxNSArMTkxMSw1
NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5kZXJsYXlDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29sb3IoY29s
b3IpKTsKIH0KIAotQ29sb3IgV2ViUGFnZVByb3h5OjpzY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKK0NvbG9yIFdlYlBhZ2VQcm94eTo6dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9wcmVmZXJlbmNlcy0+dXNlVGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3IoKSAmJiBtX3RoZW1lQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gbV90aGVtZUNvbG9yOworICAgIGlmIChtX3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92
ZXJyaWRlLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIG1fdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGU7CiAKLSAgICBpZiAobV9wcmVmZXJlbmNlcy0+dXNlU2FtcGxlZFBhZ2VUb3BD
b2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IoKSAmJiBtX3NhbXBsZWRQYWdlVG9wQ29s
b3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbV9zYW1wbGVkUGFnZVRvcENvbG9yOworICAg
IGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKIAotICAgIHJldHVybiBtX3BhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKyAgICByZXR1cm4gcGxhdGZvcm1VbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKENvbG9yJiYgbmV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3Zl
cnJpZGUpCit7CisgICAgaWYgKG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlID09
IG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gb2xkVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yID0gdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yKCk7CisgICAgYXV0byBvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSA9
IHN0ZDo6ZXhjaGFuZ2UobV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSwgbmV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpOworICAgIGJvb2wgY2hhbmdlc1VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciA9ICFlcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcihvbGRVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IsIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpKTsKKyAgICBtX3Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlID0gV1RGTW92ZShvbGRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZSk7CisKKyAgICBpZiAoY2hhbmdlc1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvcikKKyAgICAgICAgcGFnZUNsaWVudCgpLnVuZGVyUGFnZUJhY2tncm91bmRDb2xvcldp
bGxDaGFuZ2UoKTsKKworICAgIG1fdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUgPSBX
VEZNb3ZlKG5ld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKTsKKworICAgIGlmIChj
aGFuZ2VzVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKQorICAgICAgICBwYWdlQ2xpZW50KCkudW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CisKKyAgICBpZiAobV9oYXNQZW5kaW5n
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rpc3BhdGNoKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2hhc1BlbmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZVRv
RGlzcGF0Y2ggPSB0cnVlOworCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghbV9oYXNQZW5kaW5nVW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yT3ZlcnJpZGVUb0Rpc3BhdGNoKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1faGFzUGVuZGluZ1VuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlVG9E
aXNwYXRjaCA9IGZhbHNlOworCisgICAgICAgIGRpZENoYW5nZUJhY2tncm91bmRDb2xvcigpOwor
CisgICAgICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUobV91bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQpAQCAtODU1OCwxMyArODU5NywyNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGhlbWVDb2xvckNoYW5nZWQoY29uc3QgQ29sb3ImIHRoZW1l
Q29sb3IpCiAgICAgcGFnZUNsaWVudCgpLnRoZW1lQ29sb3JEaWRDaGFuZ2UoKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25z
dCBDb2xvciYgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKQordm9pZCBXZWJQYWdlUHJveHk6
OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBDb2xvciYgbmV3UGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKQogewotICAgIGlmIChtX3BhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvciA9PSBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCisgICAgaWYgKG1fcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID09IG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
cikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBvbGRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IgPSB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBhdXRvIG9sZFBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvciA9IHN0ZDo6ZXhjaGFuZ2UobV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3IsIG5ld1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcik7CisgICAgYm9vbCBjaGFuZ2Vz
VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yID0gIWVxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKG9s
ZFVuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpOwor
ICAgIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID0gV1RGTW92ZShvbGRQYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKGNoYW5nZXNVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JXaWxs
Q2hhbmdlKCk7CiAgICAgcGFnZUNsaWVudCgpLnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcldp
bGxDaGFuZ2UoKTsKLSAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IHBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcjsKKworICAgIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
ID0gbmV3UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOworCisgICAgaWYgKGNoYW5nZXNVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIHBhZ2VDbGllbnQoKS51bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JEaWRDaGFuZ2UoKTsKICAgICBwYWdlQ2xpZW50KCkucGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiB9CiAKQEAgLTg1NzgsNiArODYyOCwxNSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2FtcGxlZFBhZ2VUb3BDb2xvckNoYW5nZWQoY29uc3QgQ29sb3ImIHNh
bXBsZWRQYWdlVG9wQ29sb3IpCiAgICAgcGFnZUNsaWVudCgpLnNhbXBsZWRQYWdlVG9wQ29sb3JE
aWRDaGFuZ2UoKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKKworQ29sb3IgV2ViUGFnZVBy
b3h5OjpwbGF0Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOworfQorCisjZW5kaWYgLy8gIVBMQVRGT1JNKENP
Q09BKQorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBiMzM3ZjQ0YmU5N2I4
MDg4ODgwMWNlMGZlMzI4MGY2MTQyZDRlYjMuLjhkYzFiNzY0MmFhZjQ1MjA4ZjQ0MGM3YTFmMDY4
MDFkZTE5ODhhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02
NzIsNyArNjcyLDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6Q29sb3Igc2FtcGxlZFBhZ2VU
b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlZFBhZ2VUb3BDb2xvcjsgfQogCi0gICAg
V2ViQ29yZTo6Q29sb3Igc2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdl
YkNvcmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdlYkNv
cmU6OkNvbG9yIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gbV91bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZTsgfQorICAgIHZvaWQgc2V0VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3ImJik7CiAKICAgICB2
b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVS
ZXNpemUoKTsKQEAgLTIxMDgsNiArMjExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aGVtZUNv
bG9yQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAgICAgdm9p
ZCBzYW1wbGVkUGFnZVRvcENvbG9yQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAg
IFdlYkNvcmU6OkNvbG9yIHBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0
aWFsaXplUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAgICAgdm9pZCBkaWRCbG9j
a0luc2VjdXJlUGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpOwpAQCAtMjY1
MiwxMCArMjY1NSwxMyBAQCBwcml2YXRlOgogICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhv
c3RpbmdNb2RlIHsgTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzIH07CiAKICAgICBXZWJDb3Jl
OjpDb2xvciBtX3RoZW1lQ29sb3I7CisgICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5Q29sb3I7
CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAgICAg
V2ViQ29yZTo6Q29sb3IgbV9zYW1wbGVkUGFnZVRvcENvbG9yOwogCisgICAgYm9vbCBtX2hhc1Bl
bmRpbmdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZVRvRGlzcGF0Y2ggeyBmYWxzZSB9
OworCiAgICAgYm9vbCBtX3VzZUZpeGVkTGF5b3V0IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fZml4ZWRMYXlvdXRTaXplOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gbV92aWV3RXhwb3NlZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDgxZmIwMTgzM2NlZTllNWQ5MTU5NTQxOGQyYjVhMGFl
NGI4NDRjY2QuLjY1YTUwNDNkZTQ4ZWM4YWVlNjAwNjVhNzk4ZDFkMDk1OWE1ZTFkNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0y
OTMsNiArMjkzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNl
bGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkIChe
Y29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSkgZmluYWw7CiAjZW5kaWYKIAorICAgIFdlYkNvcmU6
OkNvbG9yIGNvbnRlbnRWaWV3QmFja2dyb3VuZENvbG9yKCkgZmluYWw7CisKICAgICBXZWFrT2Jq
Q1B0cjxXS0NvbnRlbnRWaWV3PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRv
clVuZG9UYXJnZXQ+IG1fdW5kb1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggOGMzYzhmMjQyMWNmMGNjMmIzZjUw
Mzc0ZDE5ZmI1YzIyYzE1OTk1NC4uMjIyYzU2NGQ4Y2NlM2FmOWUwMDUwOTQ4YjM0NTc4NWRhYzc3
MWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQpAQCAtMTAwOCw2ICsxMDA4LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJ1bk1v
ZGFsSmF2YVNjcmlwdERpYWxvZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhCiAg
ICAgW21fY29udGVudFZpZXcgcnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nOldURk1vdmUoY2FsbGJh
Y2spXTsKIH0KIAorV2ViQ29yZTo6Q29sb3IgUGFnZUNsaWVudEltcGw6OmNvbnRlbnRWaWV3QmFj
a2dyb3VuZENvbG9yKCkKK3sKKyAgICByZXR1cm4gW21fY29udGVudFZpZXcgYmFja2dyb3VuZENv
bG9yXS5DR0NvbG9yOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQppbmRleCA3N2M4MDZkNDJhMWMxNGJmYzIwMDU4MmZjOGVjZjczNjZjM2I4
MDVkLi4zMmIwZjI4YTU2ZjZlNzVlZWJmNThlNzU1OTU2MzZjZGM2MTgxOWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE1NjQsNiAr
MTU2NCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0
aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbgogICAgIHBhZ2VDbGllbnQoKS5zaG93
RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihwb3NpdGlvbkluZm8pOwogfQog
CitDb2xvciBXZWJQYWdlUHJveHk6OnBsYXRmb3JtVW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkg
Y29uc3QKK3sKKyAgICBpZiAoYXV0byBjb250ZW50Vmlld0JhY2tncm91bmRDb2xvciA9IHBhZ2VD
bGllbnQoKS5jb250ZW50Vmlld0JhY2tncm91bmRDb2xvcigpOyBjb250ZW50Vmlld0JhY2tncm91
bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBjb250ZW50Vmlld0JhY2tncm91bmRD
b2xvcjsKKworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgcmV0dXJuIFVJQ29s
b3Iuc3lzdGVtQmFja2dyb3VuZENvbG9yLkNHQ29sb3I7CisjZWxzZQorICAgIHJldHVybiBVSUNv
bG9yLndoaXRlQ29sb3IuQ0dDb2xvcjsKKyNlbmRpZgorfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
aW5kZXggNjhiMDU4OGQ3YTQ2ZGE2YzA3MjViZDJkYzlmNzFhMDhhYmZiZThkZi4uN2MwMmFlOGEw
ZDRlZDM4OTNiYTNiMjA3NWQwMmZhZGNhZjk4ZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03MTAsNiArNzEwLDE1IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgdmlld1JlCiB9CiAjZW5kaWYKIAorQ29sb3IgV2ViUGFnZVByb3h5OjpwbGF0
Zm9ybVVuZGVyUGFnZUJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisjaWYgRU5BQkxFKERBUktf
TU9ERV9DU1MpCisgICAgcmV0dXJuIE5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xvci5DR0Nv
bG9yOworI2Vsc2UKKyAgICByZXR1cm4gTlNDb2xvci53aGl0ZUNvbG9yLkNHQ29sb3I7CisjZW5k
aWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg3
NTE2NTc3MjQ5MjZlN2E4MTMxNGU2MWM3ODc5MWJhYzZiZmQ3MTcuLjk0MjVjMmRhNzc1M2IyYjgz
OGVjMmUxZDcxZjBiZWQ4YWUwNTY4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNDQ4LDYgKzI0NDgsMTEgQEAgdm9pZCBXZWJQYWdlOjpw
b3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0
IFVzZXJEYXQKICAgICBpbmplY3RlZEJ1bmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UodGhp
cywgbWVzc2FnZU5hbWUsIHdlYlByb2Nlc3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck92ZXJyaWRlKFdlYkNvcmU6OkNvbG9yJiYgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yT3ZlcnJpZGUpCit7CisgICAgbV9wYWdlLT5zZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPdmVycmlkZShXVEZNb3ZlKHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKSk7Cit9
CisKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdm9pZCBXZWJQYWdlOjpzZXRIZWFkZXJQ
YWdlQmFubmVyKFBhZ2VCYW5uZXIqIHBhZ2VCYW5uZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggODM4NGUxZmUzOWQyNmY3NjM5ZDliNGZlZGI0NjA3
OTcwMDUwYmM2MS4uZTYwZDJlMmZlY2MzNjNkNWI0YTJmMjE1ZDc2ZWFhNWY0Yjk1ZmQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjA4LDYgKzYw
OCw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAorICAgIHZvaWQg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6Q29sb3ImJik7CisK
ICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7
IG1fdW5kZXJsYXlDb2xvciA9IGNvbG9yOyB9CiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAz
Zjk2MWQ0ODNkMjM0OWVlOTYwOWIzYjM0Njc5NzkwN2YyNmM1Y2YzLi5hYjI0N2U3MGE0ZmNjMDE2
MWZlZjQwY2U2YmQyZWQxNWQyMjFkZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM5LDYgKzM5LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VG9wQ29udGVudEluc2V0
KGZsb2F0IGNvbnRlbnRJbnNldCkKIAogICAgIFNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Q29s
b3IgY29sb3IpCisgICAgU2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29y
ZTo6Q29sb3IgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCiAKICAgICBWaWV3V2ls
bFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgVmlld1dpbGxFbmRMaXZlUmVzaXplKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzY2E0M2ZmNmY0NzVh
ZjgxYzkwZTlmOTQ0ZTQ0YWY1MTYzM2IyMjU1Li43MWM3NGI2MTUxZWQ5ZmJjNjZmYTVkMjQ2OTM3
MmNmMmViYTY4OWZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDUtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgYC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JdYCBTUEkgdG8gYC1bV0tXZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcl1gIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1NjE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjU2ODA5ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbTogUmVu
YW1lZCBmcm9tIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbS4KKyAgICAgICAgKGRlZmF1
bHRCYWNrZ3JvdW5kQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yLk9uTG9hZCk6CisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVTb2xpZENvbG9yKTogQWRkZWQuCisgICAgICAgIChU
RVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5TaW5nbGVCbGVuZGVkQ29sb3Ip
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
Lk11bHRpcGxlU29saWRDb2xvcnMpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yLk11bHRpcGxlQmxlbmRlZENvbG9ycyk6IEFkZGVkLgorICAg
ICAgICAoLVtXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBpbml0V2l0
aFdlYlZpZXc6XSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpj
b250ZXh0Ol0pOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yLktWTyk6CisgICAgICAgIChURVNULldLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvci5NYXRjaGVzU2Nyb2xsVmlldyk6IEFkZGVkLgorICAgICAgICAoVEVTVC5XS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IuTXVsdGlwbGVTdHlsZXMpOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBpbml0
V2l0aFdlYlZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlld1BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvck9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6
Y2hhbmdlOmNvbnRleHQ6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NhbXBsZWRQYWdlVG9wQ29sb3IubW06CisgICAgICAgIChjcmVhdGVX
ZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKToKKyAgICAgICAgKFRF
U1QuU2FtcGxlZFBhZ2VUb3BDb2xvci5FeHBlcmltZW50YWxVc2VTYW1wbGVkUGFnZVRvcENvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tOgorICAgICAg
ICAoY3JlYXRlV2ViVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChURVNULldLV2ViVmlldy5FeHBl
cmltZW50YWxVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcik6IERlbGV0
ZWQuCisgICAgICAgIFJlbW92ZSB0aGUgZXhwZXJpbWVudGFsIHNldHRpbmdzIGBVc2VTYW1wbGVk
UGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgYW5kCisgICAgICAgIGBV
c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcmAgbm93IHRoYXQgY2xpZW50
cyBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgb3ZlcnNjcm9sbCBhcmVhIGJhY2tn
cm91bmQgY29sb3IgdXNpbmcgYC1bV0tXZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cjpdYC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA1LTEzICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICByZXBvcnQtbm9uLWluY2x1c2l2ZS1sYW5ndWFnZSBzaG91
bGQgc2tpcCBzeW1saW5rcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMjBlZjc0NGJmYWQ3
MGQ4YzczOGRjMGQ4YTgxZjI4N2NjMTkwZTlhLi42NDZmODQyMDdhMGVlMzg5OGFjN2M5OWFhN2Iz
YjhiNWQyODQ4ZTM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODc0LDcgKzg3NCw3IEBA
CiAJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDREIzMzI2MzYzMTU2
MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9OwogCQk5NTA5NUYyMDI2MkZGRkE1
MDAwMEQ5MjAgLyogU2FtcGxlZFBhZ2VUb3BDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDk1RjFGMjYyRkZGQTUwMDAwRDkyMCAvKiBTYW1w
bGVkUGFnZVRvcENvbG9yLm1tICovOyB9OwogCQk5NTBFNENDMTI1MkU3NTI0MDA3MTY1OUYgLyog
aU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1t
ICovOyB9OwotCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ci5tbSAqLzsgfTsKKwkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFdLV2ViVmlld1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IubW0gKi87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2MUZFOSAv
KiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmlld1RoZW1l
Q29sb3IubW0gKi87IH07CiAJCTk1QjZCM0I3MjUxRUJGMkYwMEZDNDM4MiAvKiBNZWRpYURvY3Vt
ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVC
NkIzQjYyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gKi87IH07CiAJCTk5ODRG
QUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDQTFDRkZBRUVFMDA4RDE5
OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICovOyB9OwpAQCAtMjU3Niw3ICsyNTc2LDcgQEAK
IAkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwOTVGMUYyNjJGRkZBNTAwMDBEOTIwIC8qIFNhbXBs
ZWRQYWdlVG9wQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTYW1wbGVkUGFnZVRvcENvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IGlPU1N0eWx1c1N1cHBvcnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1QTUyNDk0MjU4MUExMEQwMDQ2MUZFOSAvKiBXS1dlYlZpZXdU
aGVtZUNvbG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tX
ZWJWaWV3VGhlbWVDb2xvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVCNkIz
QjYyNTFFQkYyRjAwRkM0MzgyIC8qIE1lZGlhRG9jdW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYURvY3VtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElu
cHV0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3
VGV4dElucHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ4Myw4ICszNDgz
LDggQEAKIAkJCQk2MzUxOTkyNzIyMjc1QzZBMDA4OTBBRDMgLyogTmF2aWdhdGlvbkFjdGlvbi5t
bSAqLywKIAkJCQk1QzhCQzc5ODIxOENGM0U5MDA4MTM4ODYgLyogTmV0d29ya1Byb2Nlc3MubW0g
Ki8sCiAJCQkJNUNBRTQ2MzcyMDE5MzdDRDAwNTE2MTBGIC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hO
b25QZXJzaXN0ZW50RGF0YVN0b3JlLm1tICovLAotCQkJCTQ2QTgwRjI1MjY0QzI5RDQwMEVFRjIw
RCAvKiBOb3RpZmljYXRpb25BUEkubW0gKi8sCiAJCQkJQ0RDRkZFQzAyMkUyNjhENTAwREY0MjIz
IC8qIE5vUGF1c2VXaGVuU3dpdGNoaW5nVGFicy5tbSAqLywKKwkJCQk0NkE4MEYyNTI2NEMyOUQ0
MDBFRUYyMEQgLyogTm90aWZpY2F0aW9uQVBJLm1tICovLAogCQkJCUNEMkQwRDE5MjEzNDY1NTYw
MDE4Qzc4NCAvKiBOb3dQbGF5aW5nLm1tICovLAogCQkJCTJFQ0ZGNTU0MUQ5QjEyRjgwMEI1NTM5
NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSAqLywKIAkJCQlBMTBGMDQ3QzFFM0FEMjlD
MDBDOTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLywKQEAgLTM0OTMsNyArMzQ5Myw2
IEBACiAJCQkJMzdBMjJBQTUxRENBQTI3MjAwQUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHNBZnRlckNyYXNoLm1tICovLAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVB
NyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8sCiAJCQkJMkRBMjU4NkUyMjVDNjdEQzAwQjQ1
QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gKi8sCi0JCQkJOTUzQUJCMzQyNUMw
RDY4MTAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLywKIAkJCQky
RDNDQTNBNDIyMURGMjM5MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVnaW4ubW0gKi8sCiAJCQkJ
NTEyNDJDREEyMzdCNzkxRTAwRUVEOUMxIC8qIFBhZ2Vab29tLm1tICovLAogCQkJCUY0NEM3OUZC
MjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tICovLApAQCAtMzYz
Nyw2ICszNjM2LDcgQEAKIAkJCQlDRDdGODlEQjIyQTg2Q0RBMDBENjgzQUUgLyogV0tXZWJWaWV3
U3VzcGVuZEFsbE1lZGlhUGxheWJhY2subW0gKi8sCiAJCQkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQx
OThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLywKIAkJCQk5NUE1MjQ5NDI1ODFBMTBEMDA0
NjFGRTkgLyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLywKKwkJCQk5NTNBQkIzNDI1QzBENjgx
MDA0QzhCNzMgLyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tICovLAogCQkJ
KTsKIAkJCW5hbWUgPSAiV2ViS2l0IENvY29hIjsKIAkJCXBhdGggPSBXZWJLaXRDb2NvYTsKQEAg
LTU0NTIsNyArNTQ1Miw2IEBACiAJCQkJQ0RCMjEzQkQyNEVGNTIyODAwRkRFMzAxIC8qIEZ1bGxz
Y3JlZW5Gb2N1cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERTc3RDI1MjVBNjU5MUMwMEQ0MTE1
RSAvKiBGdWxsc2NyZWVuUG9pbnRlckxlYXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0REQzdD
NjkyNUZGRjZEMDAwMjI0Mjc4IC8qIEZ1bGxzY3JlZW5SZW1vdmVOb2RlQmVmb3JlRW50ZXIubW0g
aW4gU291cmNlcyAqLywKLQkJCQk0NkE4MEYyNjI2NEMyOUQ0MDBFRUYyMEQgLyogTm90aWZpY2F0
aW9uQVBJLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCRkNDNDUxQTlGRjQ1MzAwQTdCNjkxIC8q
IEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNEQjc5
NjkxRUY2M0IzQzAwQkZBNUU1IC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RUY4MUE0MTFBRTYwMDQ0N0M0QyAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTU1ODMsNiArNTU4Miw3IEBACiAJCQkJN0NDRTdGMDUxQTQxMUFFNjAwNDQ3QzRDIC8qIE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjU2NTFGNzFGQ0U0RERDMDAzMTBGQkMgLyogTm9IaXN0b3J5SXRlbVNjcm9sbFRvRnJhZ21l
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4M0YyMkM2NDIwQjM1NUY4MDAzNDI3N0UgLyogTm9Q
b2xpY3lEZWxlZ2F0ZVJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDZBODBGMjYyNjRD
MjlENDAwRUVGMjBEIC8qIE5vdGlmaWNhdGlvbkFQSS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
MkQwRDFBMjEzNDY1NTYwMDE4Qzc4NCAvKiBOb3dQbGF5aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkVDRkY1NTUxRDlCMTJGODAwQjU1Mzk0IC8qIE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1OUYyNjcyNjBENDNFMzAwQjJEQTNDIC8qIE5vd1BsYXlp
bmdJbmZvVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NTk2LDcgKzU1OTYsNiBAQAogCQkJ
CTBGMzQwNzc2MjMwMzdGREMwMDYwQTFBMCAvKiBPdmVyZmxvd1Njcm9sbFZpZXdUZXN0cy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUMxMDRCQzFGMjU0NzIzNzEwMEMwNzhDOSAvKiBPdmVycmlkZUFw
cGxlTGFuZ3VhZ2VzUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQTI1ODZGMjI1
QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4QjczIC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMwMENDNjkxOCAv
KiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3
QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQx
MUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODc4LDYgKzU4NzcsNyBAQAogCQkJCUNEN0Y4OURD
MjJBODZDREEwMEQ2ODNBRSAvKiBXS1dlYlZpZXdTdXNwZW5kQWxsTWVkaWFQbGF5YmFjay5tbSBp
biBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdU
ZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NUE1MjQ5NTI1ODFBMTBEMDA0NjFGRTkg
LyogV0tXZWJWaWV3VGhlbWVDb2xvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk1M0FCQjM1MjVD
MEQ2ODIwMDRDOEI3MyAvKiBXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Qzc0QzhGQTIyREZCQTk2MDBEQTJEQUIgLyogV1RGU3RyaW5nVXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4MDM4NyAv
KiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRC
NTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2NTMyZjQ1YWMwOGE0ZTExOGQ5YzQxYWFjZWQ3NWNhMTEwNzgyMDAzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLQotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgotI2ltcG9ydCAiVGVzdENvY29hLmgiCi0jaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi0jZGVmaW5lIEVYUEVDVF9OU1NUUklOR19F
UShleHBlY3RlZCwgYWN0dWFsKSBcCi0gICAgRVhQRUNUX1RSVUUoW2FjdHVhbCBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKTsgXAotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwg
KE5TU3RyaW5nICopYWN0dWFsKTsKLQotY29uc3RleHByIENHRmxvYXQgd2hpdGVDb2xvckNvbXBv
bmVudHNbNF0gPSB7IDEsIDEsIDEsIDEgfTsKLWNvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29t
cG9uZW50c1s0XSA9IHsgMSwgMCwgMCwgMSB9OwotY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9y
Q29tcG9uZW50c1s0XSA9IHsgMCwgMCwgMSwgMSB9OwotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvciwgT25Mb2FkKQotewotICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0
byB3aGl0ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgp
LCB3aGl0ZUNvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENH
Q29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwot
Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBFWFBFQ1RfVFJVRSgh
W3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOwotCi0gICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRG
cmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0
eWxlPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBf
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwot
Ci0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxs
SW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IG5vdC1iYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7IH0gPC9zdHlsZT4iXTsKLQotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVh
bFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwg
d2hpdGVDb2xvci5nZXQoKSkpOwotfQotCi1URVNUKFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ciwgTXVsdGlwbGVTdHlsZXMpCi17Ci0gICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0Yo
Q0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRv
IGJsdWVDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwg
Ymx1ZUNvbG9yQ29tcG9uZW50cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvcl0pOwotCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gYm9keSB7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgfSBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfSA8L3N0
eWxlPiJdOwotCi0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBf
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsK
LX0KLQotQGludGVyZmFjZSBXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JPYnNl
cnZlciA6IE5TT2JqZWN0Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJW
aWV3ICp3ZWJWaWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdGF0
ZTsKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgX3N0YXRlID0gQCJiZWZvcmUtaW5pdCI7Ci0KLSAgICBf
d2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgW193ZWJWaWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5
UGF0aDpAIl9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9m
T2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoo
dm9pZCAqKWNvbnRleHQKLXsKLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZv
cmUtaW5pdCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItaW5pdCI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUt
bG9hZCJdKSB7Ci0gICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXItbG9hZCI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3Nz
LWNsYXNzLWFkZGVkIl0pIHsKLSAgICAgICAgX3N0YXRlID0gQCJhZnRlci1jc3MtY2xhc3MtYWRk
ZWQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRv
U3RyaW5nOkAiYmVmb3JlLWNzcy1jbGFzcy1jaGFuZ2VkIl0pIHsKLSAgICAgICAgX3N0YXRlID0g
QCJhZnRlci1jc3MtY2xhc3MtY2hhbmdlZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQi
XSkgewotICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLUBlbmQKLQotVEVTVChQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IsIEtWTykKLXsKLSAg
ICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gd2hpdGVDb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgd2hpdGVDb2xvckNvbXBvbmVudHMpKTsK
LSAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNl
LmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKLSAgICBhdXRvIGJsdWVDb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9yQ29tcG9uZW50
cykpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBhdXRvIHRo
ZW1lQ29sb3JPYnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdQYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsK
LSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWluaXQiLCBbdGhlbWVDb2xvck9ic2VydmVy
IHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3JdKTsKLQotICAgIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUt
bG9hZCJdOwotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRV
bnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8c3R5bGU+IGJvZHkucmVkIHsgYmFj
a2dyb3VuZC1jb2xvcjogcmVkOyB9IGJvZHkuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7
IH0gPC9zdHlsZT4iXTsKLSAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWxvYWQiLCBbdGhl
bWVDb2xvck9ic2VydmVyIHN0YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0
ZUNvbG9yLmdldCgpKSk7Ci0KLSAgICBbdGhlbWVDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVm
b3JlLWNzcy1jbGFzcy1hZGRlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICdyZWQnIl07Ci0gICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NUUklOR19F
USgiYWZ0ZXItY3NzLWNsYXNzLWFkZGVkIiwgW3RoZW1lQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwot
ICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgX3BhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLQotICAgIFt0aGVt
ZUNvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5nZWQiXTsKLSAg
ICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5j
bGFzc05hbWUgPSAnYmx1ZSciXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlv
blVwZGF0ZV07Ci0gICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1jc3MtY2xhc3MtY2hhbmdl
ZCIsIFt0aGVtZUNvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKFt3ZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdLkNHQ29s
b3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3RoZW1lQ29sb3JPYnNlcnZlciBzZXRTdGF0
ZTpAImJlZm9yZS1jc3MtY2xhc3MtcmVtb3ZlZCJdOwotICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnIl07Ci0gICAg
W3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgIEVYUEVDVF9OU1NU
UklOR19FUSgiYWZ0ZXItY3NzLWNsYXNzLXJlbW92ZWQiLCBbdGhlbWVDb2xvck9ic2VydmVyIHN0
YXRlXSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Ci19
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NhbXBs
ZWRQYWdlVG9wQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NhbXBsZWRQYWdlVG9wQ29sb3IubW0KaW5kZXggN2YyNzIxYjY1YzA3MDIyMTM5NDI1OWQ2YjA3
YWE2MmJlOTNjNzIyMS4uOGIzZjExOGNkYzM4Mzk5Yjc2YzliZDIyMmJmNDI4ZjU4NTg4MTQ2MCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TYW1wbGVk
UGFnZVRvcENvbG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2FtcGxlZFBhZ2VUb3BDb2xvci5tbQpAQCAtODEsMjAgKzgxLDEyIEBAIC0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmpl
Y3QgY2hhbmdlOihOCiAKIEBlbmQKIAotZW51bSBjbGFzcyBVc2VTYW1wbGVkUGFnZVRvcENvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoU2FtcGxlZFBhZ2VUb3BD
b2xvck1heERpZmZlcmVuY2UoZG91YmxlIHNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNl
LCBkb3VibGUgc2FtcGxlZFBhZ2VUb3BDb2xvck1pbkhlaWdodCA9IDAsIFVzZVNhbXBsZWRQYWdl
VG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHVzZVNhbXBsZWRQYWdlVG9wQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gVXNlU2FtcGxlZFBhZ2VUb3BDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Ok5vKQorc3RhdGljIFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNl
KGRvdWJsZSBzYW1wbGVkUGFnZVRvcENvbG9yTWF4RGlmZmVyZW5jZSwgZG91YmxlIHNhbXBsZWRQ
YWdlVG9wQ29sb3JNaW5IZWlnaHQgPSAwKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZp
Z3VyYXRpb24gX3NldFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlOnNhbXBsZWRQYWdl
VG9wQ29sb3JNYXhEaWZmZXJlbmNlXTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2FtcGxlZFBh
Z2VUb3BDb2xvck1pbkhlaWdodDpzYW1wbGVkUGFnZVRvcENvbG9yTWluSGVpZ2h0XTsKIAotICAg
IGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMg
X2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKLSAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0Vx
dWFsVG9TdHJpbmc6QCJVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91
bmRDb2xvciJdKSB7Ci0gICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOih1c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRD
b2xvciA9PSBVc2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
cjo6WWVzKSBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogfQogCkBAIC0zNTgsMzQgKzM1MCwzIEBA
IFRFU1QoU2FtcGxlZFBhZ2VUb3BDb2xvciwgRElTQUJMRURfRGlzcGxheVAzKQogICAgIEVYUEVD
VF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAxLjAwLCAxLjAxKTsKICAgICBFWFBFQ1RfRVEoY29t
cG9uZW50c1szXSwgMSk7CiB9Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVy
ZSdzIG5vIEFQSS9TUEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwg
YXJlYSBvbiBtYWNPUy4KLQotVEVTVChTYW1wbGVkUGFnZVRvcENvbG9yLCBFeHBlcmltZW50YWxV
c2VTYW1wbGVkUGFnZVRvcENvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAg
ICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29s
b3IgPSBjcmVhdGVXZWJWaWV3V2l0aFNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKDUs
IDAsIFVzZVNhbXBsZWRQYWdlVG9wQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpO
byk7Ci0gICAgRVhQRUNUX05VTEwoW3dlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFy
ZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3
V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6
Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3RvcHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJi
bHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9y
U2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVY
UEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9yRm9yU2Nyb2xs
QXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciks
IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0Rm9yU2FtcGxlZFBhZ2VUb3BDb2xv
clRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRXaXRoQ29sb3JTdG9wcygicmln
aHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNv
bG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9y
IF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci0g
ICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JT
Y3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0Nv
bG9yKSwgV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKLQotICAgIGF1dG8gd2ViVmlld1dpdGhUaGVt
ZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciA9IGNyZWF0ZVdlYlZpZXdXaXRoU2Ft
cGxlZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UoNSwgMCwgVXNlU2FtcGxlZFBhZ2VUb3BDb2xv
ckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6Olllcyk7Ci0gICAgRVhQRUNUX05VTEwoW3dl
YlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgX3NhbXBsZWRQ
YWdlVG9wQ29sb3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFs
bEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6Y3JlYXRlSFRNTEdyYWRpZW50V2l0aENvbG9yU3Rv
cHMoInJpZ2h0Il9zLCB7ICJyZWQiX3MsICJibHVlIl9zIH0pXTsKLSAgICBFWFBFQ1RfTlVMTChb
d2ViVmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBfc2FtcGxl
ZFBhZ2VUb3BDb2xvcl0pOwotICAgIEVYUEVDVF9FUShXZWJDb3JlOjpDb2xvcihbd2ViVmlld1dp
dGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3XS5iYWNr
Z3JvdW5kQ29sb3IuQ0dDb2xvciksIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Ci0KLSAgICB3YWl0
Rm9yU2FtcGxlZFBhZ2VUb3BDb2xvclRvQ2hhbmdlRm9ySFRNTCh3ZWJWaWV3V2l0aFRoZW1lQ29s
b3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yLmdldCgpLCBjcmVhdGVIVE1MR3JhZGllbnRX
aXRoQ29sb3JTdG9wcygicmlnaHQiX3MsIHsgInJlZCJfcywgInJlZCJfcyB9KSk7Ci0gICAgRVhQ
RUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIF9zYW1wbGVkUGFnZVRvcENvbG9yXS5DR0NvbG9yKSwgV2ViQ29yZTo6
Q29sb3I6OnJlZCk7Ci0gICAgRVhQRUNUX0VRKFdlYkNvcmU6OkNvbG9yKFt3ZWJWaWV3V2l0aFRo
ZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91
bmRDb2xvci5DR0NvbG9yKSwgV2ViQ29yZTo6Q29sb3I6OnJlZCk7Ci19Ci0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCmluZGV4IGI1N2VkYTcx
ODM0NTkwMTUwZjg3NTk0YWFkNDE2MDIwZWZkMzQzZTkuLjNkYmQ4NjMwMTVhYzJjZjRlNzE0MDUw
ZDc1ZDBjOWMyNTliNmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVDb2xvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0KQEAgLTMyMSw1MiAr
MzIxLDMgQEAgVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBNZXRhRWxlbWVudE92ZXJyaWRlc0Fw
cGxpY2F0aW9uTWFuaWZlc3QpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0vLyBUaGVyZSdzIG5vIEFQSS9T
UEkgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzY3JvbGwgYXJlYSBvbiBtYWNP
Uy4KLQotZW51bSBjbGFzcyBVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xv
ciA6IGJvb2wgeyBZZXMsIE5vIH07Ci1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNy
ZWF0ZVdlYlZpZXcoVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdXNl
VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IpCi17Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZl
cmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Ci0gICAgICAgIGlmIChbZmVhdHVyZS5r
ZXkgaXNFcXVhbFRvU3RyaW5nOkAiVXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5k
Q29sb3IiXSkgewotICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
RW5hYmxlZDoodXNlVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPT0gVXNl
VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3I6OlllcykgZm9ySW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLX0KLQotVEVTVChXS1dlYlZpZXdUaGVtZUNvbG9yLCBFeHBlcmltZW50YWxV
c2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcikKLXsKLSAgICBhdXRvIHNS
R0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xv
clNwYWNlU1JHQikpOwotICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUo
c1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8gYmx1
ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVl
Q29sb3JDb21wb25lbnRzKSk7Ci0KLSAgICBhdXRvIHdlYlZpZXdXaXRob3V0VGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgPSBjcmVhdGVXZWJWaWV3KFVzZVRoZW1lQ29sb3JG
b3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yOjpObyk7Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJW
aWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29s
b3JdKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dy
b3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFsbEltbWVk
aWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1
ZSc+Il07Ci0gICAgRVhQRUNUX1RSVUUoIVt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3Jv
bGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdKTsKLSAgICBFWFBFQ1RfVFJVRShDR0Nv
bG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFj
a2dyb3VuZENvbG9yIHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCBibHVlQ29s
b3IuZ2V0KCkpKTsKLQotICAgIFt3ZWJWaWV3V2l0aG91dFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVh
QmFja2dyb3VuZENvbG9yIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZ0FuZFdhaXRVbnRpbEFs
bEltbWVkaWF0ZUNoaWxkRnJhbWVzUGFpbnQ6QCI8bWV0YSBuYW1lPSd0aGVtZS1jb2xvcicgY29u
dGVudD0ncmVkJz48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZSc+Il07Ci0gICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlld1dpdGhvdXRUaGVtZUNvbG9y
Rm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xv
ci5nZXQoKSkpOwotICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdX
aXRob3V0VGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10u
YmFja2dyb3VuZENvbG9yLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgYXV0byB3
ZWJWaWV3V2l0aFRoZW1lQ29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yID0gY3JlYXRl
V2ViVmlldyhVc2VUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvcjo6WWVzKTsK
LSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNjcm9sbEFyZWFCYWNr
Z3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZv
clNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5k
V2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxib2R5IHN0eWxlPSdiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlJz4iXTsKLSAgICBFWFBFQ1RfVFJVRSghW3dlYlZpZXdXaXRoVGhl
bWVDb2xvckZvclNjcm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3IgdGhlbWVDb2xvcl0pOwotICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNj
cm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNHQ29s
b3IsIGJsdWVDb2xvci5nZXQoKSkpOwotCi0gICAgW3dlYlZpZXdXaXRoVGhlbWVDb2xvckZvclNj
cm9sbEFyZWFCYWNrZ3JvdW5kQ29sb3Igc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2Fp
dFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxtZXRhIG5hbWU9J3RoZW1lLWNv
bG9yJyBjb250ZW50PSdyZWQnPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBibHVlJz4i
XTsKLSAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3V2l0aFRoZW1l
Q29sb3JGb3JTY3JvbGxBcmVhQmFja2dyb3VuZENvbG9yIHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
Vmlld1dpdGhUaGVtZUNvbG9yRm9yU2Nyb2xsQXJlYUJhY2tncm91bmRDb2xvciBzY3JvbGxWaWV3
XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKLX0KLQotI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhYzk2N2ViOTdkYzAwMDRiOGQxMDhmZTEy
ZjMwNDdlMTEzOGQ2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQpAQCAt
MCwwICsxLDMwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0
ICJDb2NvYUNvbG9yLmgiCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKKyNkZWZpbmUgRVhQRUNUX0lOX1JBTkdFKGFjdHVhbCwgbWluLCBt
YXgpIFwKKyAgICBFWFBFQ1RfR0UoYWN0dWFsLCBtaW4pOyBcCisgICAgRVhQRUNUX0xFKGFjdHVh
bCwgbWF4KTsKKworI2RlZmluZSBFWFBFQ1RfTlNTVFJJTkdfRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
XAorICAgIEVYUEVDVF9UUlVFKFthY3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSk7IFwKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWQsIChOU1N0cmluZyAqKWFjdHVhbCk7
CisKK2NvbnN0ZXhwciBDR0Zsb2F0IHJlZENvbG9yQ29tcG9uZW50c1s0XSA9IHsgMSwgMCwgMCwg
MSB9OworY29uc3RleHByIENHRmxvYXQgYmx1ZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwgMCwg
MSwgMSB9OworCitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3I+IGRlZmF1bHRCYWNrZ3JvdW5kQ29s
b3IoKQoreworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykK
KyAgICBhdXRvIGNvbG9yID0gcmV0YWluUHRyKE5TQ29sb3IuY29udHJvbEJhY2tncm91bmRDb2xv
cik7CisjZWxpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGF1dG8gY29sb3IgPSByZXRhaW5QdHIoVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5k
Q29sb3IpOworI2Vsc2UKKyAgICBhdXRvIGNvbG9yID0gcmV0YWluUHRyKFtDb2NvYUNvbG9yIHdo
aXRlQ29sb3JdKTsKKyNlbmRpZgorCisgICAgLy8gU29tZSBvZiB0aGUgYWJvdmUgY2FuIHNvbWV0
aW1lcyBiZSBhIG1vbm9jaHJvbWUgY29sb3IsIHNvIGNvbnZlcnQgaXQgdG8gc1JHQiBzbyB0aGUg
Y29tcGFyaXNvbnMgYmVsb3cgd29yay4KKyAgICAvLyBgV2ViQ29yZTo6Q29sb3JTcGFjZWAgZG9l
c24ndCBoYXZlIGFuIGVxdWl2YWxlbnQgbW9ub2Nocm9tZSBlbnVtIHZhbHVlLCBidXQgdHJlYXRz
IGBDR0NvbG9yYCB3aXRoIG9ubHkgdHdvIGNvbXBvbmVudHMgYXMgbW9ub2Nocm9tZSBhbmQgY29u
dmVydHMgdGhlbSB0byBgU1JHQmAuCisgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0Yo
Q0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRv
IHNSR0JDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUNvcHlCeU1hdGNoaW5nVG9Db2xvclNw
YWNlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBbY29s
b3IgQ0dDb2xvcl0sIE5VTEwpKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yLmdldCgpOworfQorCitU
RVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgT25Mb2FkKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRl
ZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvciwgU2luZ2xlU29saWRDb2xvcikKK3sKKyAgICBhdXRvIHNSR0JD
b2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQikpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JH
QkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgZGVmYXVsdEJh
Y2tncm91bmRDb2xvcigpLmdldCgpKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0
eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9IDwvc3R5bGU+Il07CisgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3VW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yLCBTaW5nbGVCbGVuZGVkQ29sb3IpCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgZGVmYXVs
dEJhY2tncm91bmRDb2xvcigpLmdldCgpKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAi
PHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuNSk7IH0g
PC9zdHlsZT4iXTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhb
d2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IpOworICAgIEVYUEVDVF9F
UShjb21wb25lbnRzWzBdLCAxKTsKKyAgICBFWFBFQ1RfSU5fUkFOR0UoY29tcG9uZW50c1sxXSwg
MC40NSwgMC41NSk7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNbMl0sIDAuNDUsIDAu
NTUpOworICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworVEVTVChXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IsIE11bHRpcGxlU29saWRDb2xvcnMpCit7CisgICAg
YXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xv
ckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3Is
IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQ
YWludDpAIjxzdHlsZT4gaHRtbCB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0gYm9keSB7IGJh
Y2tncm91bmQtY29sb3I6IHJlZDsgfSA8L3N0eWxlPiJdOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9y
LCByZWRDb2xvci5nZXQoKSkpOworfQorCitURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvciwgTXVsdGlwbGVCbGVuZGVkQ29sb3JzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3IoKS5nZXQoKSkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nQW5kV2FpdFVudGlsQWxsSW1tZWRpYXRlQ2hpbGRGcmFtZXNQYWludDpAIjxzdHlsZT4gaHRt
bCB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOyB9IGJvZHkgeyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDI1NSwgMC41KTsgfSA8L3N0eWxlPiJdOworICAgIGF1
dG8gY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKFt3ZWJWaWV3IHVuZGVyUGFnZUJh
Y2tncm91bmRDb2xvcl0uQ0dDb2xvcik7CisgICAgRVhQRUNUX0lOX1JBTkdFKGNvbXBvbmVudHNb
MF0sIDAuNDUsIDAuNTUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzFdLCAwLjIs
IDAuMjUpOworICAgIEVYUEVDVF9JTl9SQU5HRShjb21wb25lbnRzWzJdLCAwLjcsIDAuNzUpOwor
ICAgIEVYUEVDVF9FUShjb21wb25lbnRzWzNdLCAxKTsKK30KKworQGludGVyZmFjZSBXS1dlYlZp
ZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA6IE5TT2JqZWN0CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdGF0ZTsKKworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3N0YXRl
ID0gQCJiZWZvcmUtaW5pdCI7CisKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgW193ZWJW
aWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInVuZGVyUGFnZUJhY2tncm91bmRDb2xv
ciIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCBjb250ZXh0Om5pbF07
CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
OihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIGlmIChbX3N0YXRl
IGlzRXF1YWxUb1N0cmluZzpAImJlZm9yZS1pbml0Il0pIHsKKyAgICAgICAgX3N0YXRlID0gQCJh
ZnRlci1pbml0IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlz
RXF1YWxUb1N0cmluZzpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXSkgeworICAgICAgICBfc3Rh
dGUgPSBAImFmdGVyLWNzcy1jbGFzcy1hZGRlZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoW19zdGF0ZSBpc0VxdWFsVG9TdHJpbmc6QCJiZWZvcmUtY3NzLWNsYXNzLWNoYW5n
ZWQiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLWNzcy1jbGFzcy1jaGFuZ2VkIjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbX3N0YXRlIGlzRXF1YWxUb1N0cmluZzpA
ImJlZm9yZS1jc3MtY2xhc3MtcmVtb3ZlZCJdKSB7CisgICAgICAgIF9zdGF0ZSA9IEAiYWZ0ZXIt
Y3NzLWNsYXNzLXJlbW92ZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFtf
c3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW5vbm51bGwtb3ZlcnJpZGUiXSkgeworICAg
ICAgICBfc3RhdGUgPSBAImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKFtfc3RhdGUgaXNFcXVhbFRvU3RyaW5nOkAiYmVmb3JlLW51bGwt
b3ZlcnJpZGUiXSkgeworICAgICAgICBfc3RhdGUgPSBAImFmdGVyLW51bGwtb3ZlcnJpZGUiOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJub3QtcmVh
Y2hlZCIsIF9zdGF0ZSk7Cit9CisKK0BlbmQKKworVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IsIEtWTykKK3sKKyAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihD
R0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8g
cmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJl
ZENvbG9yQ29tcG9uZW50cykpOworICAgIGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8gdW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJhZnRlci1pbml0IiwgW3VuZGVyUGFnZUJhY2tncm91
bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRC
YWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xv
ck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxBbGxJbW1lZGlhdGVDaGlsZEZy
YW1lc1BhaW50OkAiPHN0eWxlPiBib2R5LnJlZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfSBi
b2R5LmJsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IDwvc3R5bGU+Il07CisgICAgRVhQ
RUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBkZWZhdWx0QmFj
a2dyb3VuZENvbG9yKCkuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
YnNlcnZlciBzZXRTdGF0ZTpAImJlZm9yZS1jc3MtY2xhc3MtYWRkZWQiXTsKKyAgICBbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUg
PSAncmVkJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1hZGRlZCIsIFt1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29s
b3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9y
LCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2Vy
dmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xv
ci5nZXQoKV1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOm5pbF07CisgICAgRVhQRUNUX05TU1RSSU5HX0VR
KCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
dGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAg
W3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAiYmVmb3JlLWNzcy1j
bGFzcy1jaGFuZ2VkIl07CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ2JsdWUnIl07CisgICAgW3dlYlZpZXcgd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0
ZXItY3NzLWNsYXNzLWNoYW5nZWQiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIg
c3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisKKyAg
ICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90
LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29j
b2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOmJsdWVDb2xvci5nZXQoKV1dOworICAgIEVYUEVDVF9O
U1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgp
KSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJz
aG91bGQtbm90LWNoYW5nZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcjpuaWxdOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBb
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1RfVFJV
RShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0u
Q0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7CisKKyAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtY3NzLWNsYXNzLXJlbW92ZWQiXTsKKyAgICBb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFz
c05hbWUgPSAnJyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoImFmdGVyLWNzcy1jbGFzcy1yZW1vdmVkIiwgW3Vu
ZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisgICAgW3VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsK
KyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29s
b3JXaXRoQ0dDb2xvcjpkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkuZ2V0KCldXTsKKyAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRD
b2xvck9ic2VydmVyIHN0YXRlXSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xv
cihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IoKS5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6bmlsXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNo
b3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQo
KSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAi
YmVmb3JlLW5vbm51bGwtb3ZlcnJpZGUiXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1d
OworICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbm9ubnVsbC1vdmVycmlkZSIsIFt1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRD
b2xvci5nZXQoKV1dOworICAgIEVYUEVDVF9OU1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2Ui
LCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKKyAgICBFWFBFQ1Rf
VFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xv
cl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3JPYnNlcnZlciBzZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07CisgICAgW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xhc3NOYW1l
ID0gJ3JlZCciXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
CisgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBy
ZWRDb2xvci5nZXQoKSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVy
IHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnYmx1ZSciXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNU
X05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQo
KSkpOworCisgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNldFN0YXRlOkAi
c2hvdWxkLW5vdC1jaGFuZ2UiXTsKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJyJdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNo
b3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRl
XSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICBbdW5k
ZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3RhdGU6QCJiZWZvcmUtbnVsbC1vdmVy
cmlkZSJdOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpuaWxdOwor
ICAgIEVYUEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOworICAgIEVYUEVDVF9UUlVFKENHQ29sb3JF
cXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBk
ZWZhdWx0QmFja2dyb3VuZENvbG9yKCkuZ2V0KCkpKTsKK30KKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKy8vIFRoZXJlJ3Mgbm8gQVBJL1NQSSB0byBnZXQgdGhlIGJhY2tncm91bmQgY29s
b3Igb2YgdGhlIHNjcm9sbCBhcmVhIG9uIG1hY09TLgorCitURVNUKFdLV2ViVmlld1VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvciwgTWF0Y2hlc1Njcm9sbFZpZXcpCit7CisgICAgYXV0byBzUkdCQ29s
b3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZVNSR0IpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBhdXRvIGJsdWVDb2xv
ciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgYmx1ZUNvbG9y
Q29tcG9uZW50cykpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAg
ICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcl0uQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvcigpLmdldCgpKSk7Cisg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5i
YWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvcigpLmdldCgpKSk7
CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmdBbmRXYWl0VW50aWxB
bGxJbW1lZGlhdGVDaGlsZEZyYW1lc1BhaW50OkAiPHN0eWxlPiBib2R5IHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB9IDwvc3R5bGU+Il07CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9y
LmdldCgpKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBz
Y3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKwor
ICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xv
cldpdGhDR0NvbG9yOmJsdWVDb2xvci5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0
UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9y
KFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdl
dCgpKSk7CisgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyBzY3Jv
bGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgpKSk7Cit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>