<?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>167370</bug_id>
          
          <creation_ts>2017-01-24 05:44:24 -0800</creation_ts>
          <short_desc>[GTK] Add API to create ephemeral web views and deprecate the private browsing setting</short_desc>
          <delta_ts>2017-01-25 00:02:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1269407</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-24 05:44:24 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269408</commentid>
    <comment_count>1</comment_count>
      <attachid>299599</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-24 06:02:03 -0800</bug_when>
    <thetext>Created attachment 299599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269568</commentid>
    <comment_count>2</comment_count>
      <attachid>299599</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-24 14:56:09 -0800</bug_when>
    <thetext>Comment on attachment 299599
Patch

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

Looking forward to the Epiphany implementation. ;)

Nice tests.

&gt; Source/WebKit2/ChangeLog:23
&gt; +        (webkitWebViewConstructed): Check if the WebView is or should be ephemeral and create a non persistent website
&gt; +        data manager if it&apos;s an ephemeral web view in a non ephemeral web context.

What is the advantage to allowing users to create ephemeral web views in non-ephemeral web contexts? Is this really well-supported and unlikely to cause problems?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:506
&gt; + * Get whether a #WebKitWebContext is ephemeral.

It would probably be advantageous to expose this implementation detail, so the user has a better clue what is going on:

&quot;Get whether a #WebKitWebContext uses an ephemeral #WebKitWebsiteDataManager&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:508
&gt; + * Returns: %TRUE if @context is ephemeral or %FALSE otherwise.

You forgot the Since tag here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1002
&gt; +     * created with an ephemeral #WebKitWebContext will be ephemeral automatically,

Another comma splice. Last time I told you to use a semicolon. This one would work better split it into two sentences.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:322
&gt; +     * handles all websites data as non persistent, and nothing will be written to the client

non-persistent

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:426
&gt;   * Returns: the base directory for Website data, or %NULL if

Preexisting bug: it does not have (allow-none) so bindings are broken. You won&apos;t be able to null-check it from vala, for example.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:447
&gt;   * Returns: the base directory for Website cache, or %NULL if

(allow-none)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:468
&gt; + * Returns: the directory where local storage data is stored or %NULL if @manager is ephemeral.

(allow-none)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:491
&gt; + * Returns: the directory where HTTP disk cache is stored or %NULL if @manager is ephemeral.

(allow-none)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:516
&gt; + * Returns: the directory where offline web application cache is stored or %NULL if @manager is ephemeral.

(allow-none)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:539
&gt; + * Returns: the directory where IndexedDB databases are stored or %NULL if @manager is ephemeral.

(allow-none)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:562
&gt; + * Returns: the directory where WebSQL databases are stored or %NULL if @manager is ephemeral.

(allow-none)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269733</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-24 23:08:22 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 299599 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299599&amp;action=review
&gt; 
&gt; Looking forward to the Epiphany implementation. ;)
&gt; 
&gt; Nice tests.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:23
&gt; &gt; +        (webkitWebViewConstructed): Check if the WebView is or should be ephemeral and create a non persistent website
&gt; &gt; +        data manager if it&apos;s an ephemeral web view in a non ephemeral web context.
&gt; 
&gt; What is the advantage to allowing users to create ephemeral web views in
&gt; non-ephemeral web contexts? Is this really well-supported and unlikely to
&gt; cause problems?

Yes, it&apos;s well supported. It allows to open an incognito window in your normal browser instance, for example. It&apos;s not useful for epiphany because we use a new browser process for incognito mode. Note also that private browsing, or now ephemeral sessions, are per page. Allowing to create an ephemeral context is just a convenience way to avoid having to create all webviews ephemeral.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:506
&gt; &gt; + * Get whether a #WebKitWebContext is ephemeral.
&gt; 
&gt; It would probably be advantageous to expose this implementation detail, so
&gt; the user has a better clue what is going on:
&gt; 
&gt; &quot;Get whether a #WebKitWebContext uses an ephemeral #WebKitWebsiteDataManager&quot;

Ok, I think we can explain it, yes.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:508
&gt; &gt; + * Returns: %TRUE if @context is ephemeral or %FALSE otherwise.
&gt; 
&gt; You forgot the Since tag here.

Oops.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1002
&gt; &gt; +     * created with an ephemeral #WebKitWebContext will be ephemeral automatically,
&gt; 
&gt; Another comma splice. Last time I told you to use a semicolon. This one
&gt; would work better split it into two sentences.

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:322
&gt; &gt; +     * handles all websites data as non persistent, and nothing will be written to the client
&gt; 
&gt; non-persistent

Sure.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:426
&gt; &gt;   * Returns: the base directory for Website data, or %NULL if
&gt; 
&gt; Preexisting bug: it does not have (allow-none) so bindings are broken. You
&gt; won&apos;t be able to null-check it from vala, for example.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:447
&gt; &gt;   * Returns: the base directory for Website cache, or %NULL if
&gt; 
&gt; (allow-none)

Ah, ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:468
&gt; &gt; + * Returns: the directory where local storage data is stored or %NULL if @manager is ephemeral.
&gt; 
&gt; (allow-none)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:491
&gt; &gt; + * Returns: the directory where HTTP disk cache is stored or %NULL if @manager is ephemeral.
&gt; 
&gt; (allow-none)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:516
&gt; &gt; + * Returns: the directory where offline web application cache is stored or %NULL if @manager is ephemeral.
&gt; 
&gt; (allow-none)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:539
&gt; &gt; + * Returns: the directory where IndexedDB databases are stored or %NULL if @manager is ephemeral.
&gt; 
&gt; (allow-none)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:562
&gt; &gt; + * Returns: the directory where WebSQL databases are stored or %NULL if @manager is ephemeral.
&gt; 
&gt; (allow-none)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269749</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-25 00:02:36 -0800</bug_when>
    <thetext>Committed r211138: &lt;http://trac.webkit.org/changeset/211138&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299599</attachid>
            <date>2017-01-24 06:02:03 -0800</date>
            <delta_ts>2017-01-24 14:56:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ephemeral.diff</filename>
            <type>text/plain</type>
            <size>53761</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MmMzYjBmZTM1My4uZDJlNzc5YjQyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNy0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEFQSSB0byBjcmVhdGUgZXBoZW1lcmFsIHdl
YiB2aWV3cyBhbmQgZGVwcmVjYXRlIHRoZSBwcml2YXRlIGJyb3dzaW5nIHNldHRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzM3MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdG8gY3Jl
YXRlIGVwaGVtZXJhbCBXZWJLaXRXZWJWaWV3LCBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgYW5k
IFdlYktpdFdlYkNvbnRleHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KTogSWdub3Jl
IGRlcHJlY2F0aW9uIHdhcm5pbmdzLgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0
eSk6IERpdHRvLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQpOiBNYXJrIFdl
YktpdFNldHRpbmdzOmVuYWJsZS1wcml2YXRlLWJyb3dzaW5nIGFzIGRlcHJlY2F0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJf
Y29udGV4dF9uZXdfZXBoZW1lcmFsKTogQ3JlYXRlIGFuIGVwaGVtZXJhbCBXZWJLaXRXZWJDb250
ZXh0LiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW50IG1ldGhvZCB0bworICAgICAgICBjcmVhdGUg
YSBXZWJLaXRXZWJDb250ZXh0IHdpdGggYW4gZXBoZW1lcmFsIFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciB3aXRob3V0IGhhdmluZyB0byBkZWFsIHdpdGggdGhlIG1hbmFnZXIuCisgICAgICAgICh3
ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKTogUmV0dXJuIHdoZXRoZXIgdGhlIGNvbnRl
eHQgaXMgZXBoZW1lcmFsLgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JX
ZWJWaWV3KTogQ29uZmlndXJlIHBhZ2Ugd2l0aCB0aGUgd2ViIHZpZXcgV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyIGlmIGl0IGhhcyBvbmUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKTogQ2hlY2sgaWYgdGhl
IFdlYlZpZXcgaXMgb3Igc2hvdWxkIGJlIGVwaGVtZXJhbCBhbmQgY3JlYXRlIGEgbm9uIHBlcnNp
c3RlbnQgd2Vic2l0ZQorICAgICAgICBkYXRhIG1hbmFnZXIgaWYgaXQncyBhbiBlcGhlbWVyYWwg
d2ViIHZpZXcgaW4gYSBub24gZXBoZW1lcmFsIHdlYiBjb250ZXh0LgorICAgICAgICAod2Via2l0
V2ViVmlld1NldFByb3BlcnR5KTogQWRkIHNldHRlciBmb3IgaXMtZXBoZW1lcmFsIHByb3BlcnR5
LgorICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KTogQWRkIGdldHRlciBmb3IgaXMt
ZXBoZW1lcmFsIHByb3BlcnR5LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQp
OiBBZGQgaXMtZXBoZW1lcmFsIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0hhbmRs
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogQ2hlY2sgYWxzbyB3aGV0aGVyIHdlYiB2aWV3IGlz
IGVwaGVtZXJhbC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIp
OiBIZWxwZXIgcHJpdmF0ZSB0byByZXR1cm4gdGhlIHdlYiB2aWV3IGRhdGEgbWFuYWdlci4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KTogQWxzbyBzZXQgaXMtZXBo
ZW1lcmFsIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgY29udGV4dC4KKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19pc19lcGhlbWVyYWwpOiBSZXR1cm4gd2hldGhlciB0aGUgdmlldyBpcyBlcGhl
bWVyYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb3BlcnR5KTogQWRkIHNldHRlciBmb3Ig
aXMtZXBoZW1lcmFsIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
U2V0UHJvcGVydHkpOiBBZGQgZ2V0dGVyIGZvciBpcy1lcGhlbWVyYWwgcHJvcGVydHkuCisgICAg
ICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdCk6IEFkZCBpcy1lcGhl
bWVyYWwgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3
X2VwaGVtZXJhbCk6IENyZWF0ZSBhIG5ldyBlcGhlbWVyYWwgV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbCk6
IFJldHVybiB3aGV0aGVyIHRoZSB3ZWJzaXRlIGRhdGEgbWFuYWdlciBpcyBlcGhlbWVyYWwuCisg
ICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Jhc2VfZGF0YV9kaXJlY3Rv
cnkpOiBSZXR1cm4gbnVsbHB0ciBpZiBtYW5hZ2VyIGlzIGVwaGVtZXJhbC4KKyAgICAgICAgKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFn
ZV9kaXJlY3RvcnkpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3Rvcnkp
OiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhl
ZGRiX2RpcmVjdG9yeSk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4K
KwogMjAxNy0wMS0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gQWRkIEFQSSB0byBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8g
aGFuZGxlIHdlYnNpdGUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IDgzMzkyMWI4YjEzLi4xNjFiYzM5ZmZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmNwcApAQCAtMjM1LDcgKzIzNSw5IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzU2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAgICAg
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9jaGFyc2V0KHNldHRpbmdzLCBnX3ZhbHVl
X2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0VOQUJM
RV9QUklWQVRFX0JST1dTSU5HOgorICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FU
SU9OUzsKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2lu
ZyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBHX0dOVUNf
RU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9F
TkFCTEVfREVWRUxPUEVSX0VYVFJBUzoKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkp
OwpAQCAtNDAyLDcgKzQwNCw5IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsCiAgICAgICAgIGdf
dmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9kZWZhdWx0X2NoYXJz
ZXQoc2V0dGluZ3MpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0VOQUJMRV9QUklW
QVRFX0JST1dTSU5HOgorICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsK
ICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfcHJpdmF0ZV9icm93c2luZyhzZXR0aW5ncykpOworICAgICAgICBHX0dOVUNfRU5EX0lH
Tk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FTkFCTEVf
REVWRUxPUEVSX0VYVFJBUzoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncykpOwpAQCAt
ODMxLDYgKzgzNSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdl
YktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAqCiAgICAgICogRGV0ZXJtaW5lcyB3aGV0
aGVyIG9yIG5vdCBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuIFByaXZhdGUgYnJvd3NpbmcK
ICAgICAgKiB3aWxsIGRpc2FibGUgaGlzdG9yeSwgY2FjaGUgYW5kIGZvcm0gYXV0by1maWxsIGZv
ciBhbnkgcGFnZXMgdmlzaXRlZC4KKyAgICAgKgorICAgICAqIERlcHJlY2F0ZWQ6IDIuMTYuIFVz
ZSAjV2ViS2l0V2ViVmlldzppcy1lcGhlbWVyYWwgb3IgI1dlYktpdFdlYkNvbnRleHQ6aXMtZXBo
ZW1lcmFsIGluc3RlYWQuCiAgICAgICovCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnT2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0VOQUJMRV9QUklWQVRFX0JST1dTSU5HLApAQCAtMjE0Myw2ICsyMTQ5LDggQEAgdm9pZCB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfY2hhcnNldChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGNvbnN0IGdjaGFyKgogICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLXByaXZh
dGUtYnJvd3NpbmcgcHJvcGVydHkuCiAgKgogICogUmV0dXJuczogJVRSVUUgSWYgcHJpdmF0ZSBi
cm93c2luZyBpcyBlbmFibGVkIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogRGVwcmVjYXRl
ZDogMi4xNi4gVXNlICNXZWJLaXRXZWJWaWV3OmlzLWVwaGVtZXJhbCBvciAjV2ViS2l0V2ViQ29u
dGV4dDppcy1lcGhlbWVyYWwgaW5zdGVhZC4KICAqLwogZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7
CkBAIC0yMTUyLDExICsyMTYwLDEzIEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3ByaXZhdGVfYnJvd3NpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogfQogCiAvKioK
LSAqIHdlYmtpdF9zZXR0aW5nc19zZXRfcHJpdmF0ZV9jYXJldF9icm93c2luZzoKKyAqIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmc6CiAgKiBAc2V0dGluZ3M6IGEg
I1dlYktpdFNldHRpbmdzCiAgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CiAgKgogICogU2V0
IHRoZSAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLXByaXZhdGUtYnJvd3NpbmcgcHJvcGVydHkuCisg
KgorICogRGVwcmVjYXRlZDogMi4xNi4gVXNlICNXZWJLaXRXZWJWaWV3OmlzLWVwaGVtZXJhbCBv
ciAjV2ViS2l0V2ViQ29udGV4dDppcy1lcGhlbWVyYWwgaW5zdGVhZC4KICAqLwogdm9pZCB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCmluZGV4IGU2NDczZjJiNjA3Li4zZjRjMzhi
ODRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5oCkBAIC0yMzYsMTAgKzIzNiwxMCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZGVmYXVsdF9jaGFyc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKmRlZmF1bHRf
Y2hhcnNldCk7CiAKLVdFQktJVF9BUEkgZ2Jvb2xlYW4KK1dFQktJVF9ERVBSRUNBVEVEIGdib29s
ZWFuCiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKIAotV0VCS0lUX0FQSSB2b2lk
CitXRUJLSVRfREVQUkVDQVRFRCB2b2lkCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2
YXRlX2Jyb3dzaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuICAgICAgICBlbmFibGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBiOTNl
NjQzNmUxMi4uY2ZiMWFiODA0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAog
ICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2Jq
ZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnBy
aXY7Ci0gICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikgeworICAgIGlmIChwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhl
bWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkgewogICAgICAgICBjb25maWd1
cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxf
c3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwogICAg
ICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CkBAIC00NDksNiArNDQ5LDIzIEBAIFdl
YktpdFdlYkNvbnRleHQqIHdlYmtpdF93ZWJfY29udGV4dF9uZXcodm9pZCkKIH0KIAogLyoqCisg
KiB3ZWJraXRfd2ViX2NvbnRleHRfbmV3X2VwaGVtZXJhbDoKKyAqCisgKiBDcmVhdGUgYSBuZXcg
ZXBoZW1lcmFsICNXZWJLaXRXZWJDb250ZXh0LiBBbGwgI1dlYktpdFdlYlZpZXc8IS0tIC0+cyBh
c3NvY2lhdGVkIHRoaXMKKyAqIGNvbnRleHQgd2lsbCBhbHNvIGJlIGVwaGVtZXJhbC4gV2Vic2l0
ZXMgd2lsbCBub3Qgc3RvcmUgYW55IGRhdGEgaW4gdGhlIGNsaWVudCBzdG9yYWdlLgorICogVGhp
cyBpcyBub3JtYWxseSB1c2VkIHRvIGltcGxlbWVudCBwcml2YXRlIGluc3RhbmNlcy4KKyAqCisg
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3IGVwaGVtZXJhbCAjV2ViS2l0V2ViQ29u
dGV4dC4KKyAqCisgKiBTaW5jZTogMi4xNgorICovCitXZWJLaXRXZWJDb250ZXh0KiB3ZWJraXRf
d2ViX2NvbnRleHRfbmV3X2VwaGVtZXJhbCgpCit7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXI+IG1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX25ld19lcGhlbWVyYWwoKSk7CisgICAgcmV0dXJuIFdFQktJVF9XRUJfQ09OVEVYVChnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIs
IG1hbmFnZXIuZ2V0KCksIG51bGxwdHIpKTsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX2NvbnRl
eHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXI6CiAgKiBAbWFuYWdlcjogYSAjV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyCiAgKgpAQCAtNDgzLDYgKzUwMCwyMSBAQCBXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIo
V2ViS2l0V2ViQwogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWw6
CisgKiBAY29udGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKgorICogR2V0IHdoZXRoZXIg
YSAjV2ViS2l0V2ViQ29udGV4dCBpcyBlcGhlbWVyYWwuCisgKgorICogUmV0dXJuczogJVRSVUUg
aWYgQGNvbnRleHQgaXMgZXBoZW1lcmFsIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKi8KK2dib29s
ZWFuIHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQo
Y29udGV4dCksIEZBTFNFKTsKKworICAgIHJldHVybiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfaXNfZXBoZW1lcmFsKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSk7
Cit9CisKKy8qKgogICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbDoKICAqIEBj
b250ZXh0OiB0aGUgI1dlYktpdFdlYkNvbnRleHQKICAqIEBjYWNoZV9tb2RlbDogYSAjV2ViS2l0
Q2FjaGVNb2RlbApAQCAtMTQyNiw3ICsxNDU4LDExIEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dENy
ZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZp
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHdlYmtpdFNldHRpbmdzR2V0
UHJlZmVyZW5jZXMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSkpOwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZShyZWxhdGVkVmlldyA/IHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVs
bHB0cik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250ZW50Q29udHJvbGxlcih1
c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpIDogbnVsbHB0cik7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUoJndlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KTsKKworICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IHdlYmtpdFdlYlZp
ZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIod2ViVmlldyk7CisgICAgaWYgKCFtYW5hZ2VyKQorICAg
ICAgICBtYW5hZ2VyID0gY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKCZ3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJHZXREYXRhU3RvcmUobWFuYWdlcikpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2Uod2ViVmlld0Jhc2UsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5o
CmluZGV4IGExYzZmOGIyOGIyLi41YWUxNjY2NTUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMTY3LDExICsxNjcs
MTcgQEAgV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250ZXh0ICoKIHdlYmtpdF93ZWJfY29udGV4dF9u
ZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2Vi
S2l0V2ViQ29udGV4dCAqCit3ZWJraXRfd2ViX2NvbnRleHRfbmV3X2VwaGVtZXJhbCAgICAgICAg
ICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYkNvbnRleHQgKgogd2Vi
a2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyICAgIChXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIgICAgICAqbWFuYWdlcik7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyICoKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOwog
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
KTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVs
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgICAgICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRDYWNoZU1vZGVsICAgICAgICAgICAgICAgY2FjaGVfbW9kZWwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA3MDA2
Mzk5NDZmNC4uMDlkODg1ZDg3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xNTMsNiArMTUzLDcgQEAgZW51bSB7CiAg
ICAgUFJPUF9aT09NX0xFVkVMLAogICAgIFBST1BfSVNfTE9BRElORywKICAgICBQUk9QX0lTX1BM
QVlJTkdfQVVESU8sCisgICAgUFJPUF9JU19FUEhFTUVSQUwsCiAgICAgUFJPUF9FRElUQUJMRQog
fTsKIApAQCAtMTc3LDYgKzE3OCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewog
ICAgIENTdHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nOwogICAgIENTdHJpbmcgYWN0aXZlVVJJOwog
ICAgIGJvb2wgaXNMb2FkaW5nOworICAgIGJvb2wgaXNFcGhlbWVyYWw7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPiBsb2FkT2JzZXJ2ZXI7CiAKQEAgLTIwOCw2
ICsyMTAsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBTbmFwc2hvdFJl
c3VsdHNNYXAgc25hcHNob3RSZXN1bHRzTWFwOwogICAgIEdSZWZQdHI8V2ViS2l0QXV0aGVudGlj
YXRpb25SZXF1ZXN0PiBhdXRoZW50aWNhdGlvblJlcXVlc3Q7CiAKKyAgICBHUmVmUHRyPFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwogfTsKIAogc3RhdGljIGd1
aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNjQxLDEzICs2NDQsMjAgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAog
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKICAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgaWYgKHBy
aXYtPnJlbGF0ZWRWaWV3KQorICAgIGlmIChwcml2LT5yZWxhdGVkVmlldykgewogICAgICAgICBw
cml2LT5jb250ZXh0ID0gd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHByaXYtPnJlbGF0ZWRW
aWV3KTsKLSAgICBlbHNlIGlmICghcHJpdi0+Y29udGV4dCkKKyAgICAgICAgcHJpdi0+aXNFcGhl
bWVyYWwgPSB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHByaXYtPnJlbGF0ZWRWaWV3KTsK
KyAgICB9IGVsc2UgaWYgKCFwcml2LT5jb250ZXh0KQogICAgICAgICBwcml2LT5jb250ZXh0ID0g
d2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CisgICAgZWxzZSBpZiAoIXByaXYtPmlz
RXBoZW1lcmFsKQorICAgICAgICBwcml2LT5pc0VwaGVtZXJhbCA9IHdlYmtpdF93ZWJfY29udGV4
dF9pc19lcGhlbWVyYWwocHJpdi0+Y29udGV4dC5nZXQoKSk7CisKICAgICBpZiAoIXByaXYtPnNl
dHRpbmdzKQogICAgICAgICBwcml2LT5zZXR0aW5ncyA9IGFkb3B0R1JlZih3ZWJraXRfc2V0dGlu
Z3NfbmV3KCkpOwogCisgICAgaWYgKHByaXYtPmlzRXBoZW1lcmFsICYmICF3ZWJraXRfd2ViX2Nv
bnRleHRfaXNfZXBoZW1lcmFsKHByaXYtPmNvbnRleHQuZ2V0KCkpKQorICAgICAgICBwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X25ld19lcGhlbWVyYWwoKSk7CisKICAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldl
YlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRlbnRNYW5h
Z2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CiAKICAgICBwcml2LT5sb2FkT2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CkBAIC03
MDEsNiArNzExLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfWk9P
TV9MRVZFTDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF96b29tX2xldmVsKHdlYlZpZXcs
IGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfSVNfRVBIRU1FUkFMOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT5pc0VwaGVtZXJhbCA9IGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1Bf
RURJVEFCTEU6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUod2ViVmlldywg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTc0NCw2ICs3
NTcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9JU19QTEFZSU5H
X0FVRElPOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfaXNfcGxheWluZ19hdWRpbyh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9JU19FUEhFTUVSQUw6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdl
YmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldykpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBST1BfRURJVEFCTEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZSh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTc2LDYgKzk5MiwyOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEQUJMRSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzppcy1lcGhl
bWVyYWw6CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHRoZSAjV2ViS2l0V2ViVmlldyBpcyBlcGhl
bWVyYWwuIEFuIGVwaGVtZXJhbCB3ZWIgdmlldyBuZXZlciB3cml0ZXMKKyAgICAgKiB3ZWJzaXRl
IGRhdGEgdG8gdGhlIGNsaWVudCBzdG9yYWdlLCBubyBtYXR0ZXIgd2hhdCAjV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyCisgICAgICogaXRzIGNvbnRleHQgaXMgdXNpbmcuIFRoaXMgaXMgbm9ybWFs
bHkgdXNlZCB0byBpbXBsZW1lbnQgcHJpdmF0ZSBicm93c2luZyBtb2RlLgorICAgICAqIFRoaXMg
aXMgYSAlR19QQVJBTV9DT05TVFJVQ1RfT05MWSBwcm9wZXJ0eSwgc28geW91IGhhdmUgdG8gY3Jl
YXRlIGEgZXBoZW1lcmFsCisgICAgICogI1dlYktpdFdlYlZpZXcgYW5kIGl0IGNhbid0IGJlIGNo
YW5nZWQuIE5vdGUgdGhhdCBhbGwgI1dlYktpdFdlYlZpZXc8IS0tIC0tPnMKKyAgICAgKiBjcmVh
dGVkIHdpdGggYW4gZXBoZW1lcmFsICNXZWJLaXRXZWJDb250ZXh0IHdpbGwgYmUgZXBoZW1lcmFs
IGF1dG9tYXRpY2FsbHksCisgICAgICogc2VlIGFsc28gd2Via2l0X3dlYl9jb250ZXh0X25ld19l
cGhlbWVyYWwoKS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjE2CisgICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAg
ICAgICBQUk9QX0lTX0VQSEVNRVJBTCwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisg
ICAgICAgICAgICAiaXMtZXBoZW1lcmFsIiwKKyAgICAgICAgICAgICJJcyBFcGhlbWVyYWwiLAor
ICAgICAgICAgICAgXygiV2hldGhlciB0aGUgd2ViIHZpZXcgaXMgZXBoZW1lcmFsIiksCisgICAg
ICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8q
KgogICAgICAqIFdlYktpdFdlYlZpZXc6ZWRpdGFibGU6CiAgICAgICoKICAgICAgKiBXaGV0aGVy
IHRoZSBwYWdlcyBsb2FkZWQgaW5zaWRlICNXZWJLaXRXZWJWaWV3IGFyZSBlZGl0YWJsZS4gRm9y
IG1vcmUKQEAgLTIwMjEsNyArMjA2MCw5IEBAIHZvaWQgd2Via2l0V2ViVmlld1N1Ym1pdEZvcm1S
ZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEZvcm1TdWJtaXNzaW9uCiAKIHZv
aWQgd2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKQogewotICAgIGdib29sZWFuIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKHdlYlZpZXctPnByaXYtPnNl
dHRpbmdzLmdldCgpKTsKKyAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyAg
ICBnYm9vbGVhbiBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2ViVmlldy0+cHJpdi0+aXNFcGhl
bWVyYWwgfHwgd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3ZWJW
aWV3LT5wcml2LT5zZXR0aW5ncy5nZXQoKSk7CisgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVD
QVRJT05TOwogICAgIHdlYlZpZXctPnByaXYtPmF1dGhlbnRpY2F0aW9uUmVxdWVzdCA9IGFkb3B0
R1JlZih3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVlc3RDcmVhdGUoYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpKTsKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1
ZTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbQVVUSEVOVElDQVRFXSwgMCwg
d2ViVmlldy0+cHJpdi0+YXV0aGVudGljYXRpb25SZXF1ZXN0LmdldCgpLCAmcmV0dXJuVmFsdWUp
OwpAQCAtMjA2NCw2ICsyMTA1LDExIEBAIHZvaWQgd2Via2l0V2ViVmlld1JlcXVlc3RJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2lucyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBJbnN0CiAjZW5kaWYK
IH0KIAorV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJWaWV3R2V0V2Vic2l0ZURh
dGFNYW5hZ2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIHdlYlZpZXct
PnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2Vi
X3ZpZXdfbmV3OgogICoKQEAgLTIwOTUsNyArMjE0MSwxMCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93
ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCAw
KTsKIAotICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJf
VklFVywgIndlYi1jb250ZXh0IiwgY29udGV4dCwgTlVMTCkpOworICAgIHJldHVybiBHVEtfV0lE
R0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAgICAgICAgImlzLWVwaGVt
ZXJhbCIsIHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCksCisgICAgICAg
ICJ3ZWItY29udGV4dCIsIGNvbnRleHQsCisgICAgICAgIG51bGxwdHIpKTsKIH0KIAogLyoqCkBA
IC0yMTk5LDYgKzIyNDgsMjcgQEAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXcKIH0KIAogLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRX
ZWJWaWV3CisgKgorICogR2V0IHdoZXRoZXIgYSAjV2ViS2l0V2ViVmlldyBpcyBlcGhlbWVyYWwu
IFRvIGNyZWF0ZSBhbiBlcGhlbWVyYWwgI1dlYktpdFdlYlZpZXcgeW91IG5lZWQgdG8KKyAqIHVz
ZSBnX29iamVjdF9uZXcoKSBhbmQgcGFzcyBpcy1lcGhlbWVyYWwgcHJvcGVyeSB3aXRoICVUUlVF
IHZhbHVlLiBTZWUKKyAqICNXZWJLaXRXZWJWaWV3OmlzLWVwaGVtZXJhbCBmb3IgbW9yZSBkZXRh
aWxzLgorICogSWYgQHdlYl92aWV3IHdhcyBjcmVhdGVkIHdpdGggYSBlcGhlbWVyYWwgI1dlYktp
dFdlYlZpZXc6cmVsYXRlZC12aWV3IG9yIGFuCisgKiBlcGhlbWVyYWwgI1dlYktpdFdlYlZpZXc6
d2ViLWNvbnRleHQgaXQgd2lsbCBhbHNvIGJlIGVwaGVtZXJhbC4KKyAqCisgKiBSZXR1cm5zOiAl
VFJVRSBpZiBAd2ViX3ZpZXcgaXMgZXBoZW1lcmFsIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgor
ICogU2luY2U6IDIuMTYKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJh
bChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOworCisgICAgcmV0dXJuIHdlYlZpZXct
PnByaXYtPmlzRXBoZW1lcmFsOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld190cnlfY2xv
c2U6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggNzAwOTY4ZmM0NjEu
LjcwNTE2NTg1MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCkBAIC0yNzQsNiArMjc0LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193
aXRoX3JlbGF0ZWRfdmlldyAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQ
SSBHdGtXaWRnZXQgKgogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICAqdXNlcl9jb250ZW50X21hbmFn
ZXIpOwogCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFs
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldyk7CisKIFdFQktJVF9BUEkgV2ViS2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDYxZTBhNTUyNGE3Li4yNDBk
NzMwODg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC02Niw1ICs2Niw2IEBAIHZvaWQgd2Via2l0V2Vi
Vmlld1dlYlByb2Nlc3NDcmFzaGVkKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmll
d0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdTZWxlY3Rpb25EaWRDaGFuZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3
UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6
Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKTsKK1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcihXZWJL
aXRXZWJWaWV3Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBhZjc1Yzg3NjNlYy4uZGFmZTRlODA2OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAtNTYsNiArNTYsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKICAqIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4gVG8gZ2V0IHRoZSBXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgb2YgYSAjV2ViS2l0V2ViQ29udGV4dAogICogeW91IGNhbiB1
c2Ugd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcigpLgogICoKKyAq
IEEgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIGNhbiBhbHNvIGJlIGVwaGVtZXJhbCBhbmQgdGhl
biBhbGwgdGhlIGRpcmVjdG9yaWVzIGNvbmZpZ3VyYXRpb24KKyAqIGlzIG5vdCBuZWVkZWQgYmVj
YXVzZSB3ZWJzaXRlIGRhdGEgd2lsbCBuZXZlciBwZXJzaXN0LiBZb3UgY2FuIGNyZWF0ZSBhbiBl
cGhlbWVyYWwgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCisgKiB3aXRoIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9uZXdfZXBoZW1lcmFsKCkuIFRoZW4geW91IGNhbiBwYXNzIGFuIGVwaGVt
ZXJhbCBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgdG8KKyAqIGEgI1dlYktpdFdlYkNvbnRleHQg
dG8gbWFrZSBpdCBlcGhlbWVyYWwgb3IgdXNlIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1l
cmFsKCkgYW5kIHRoZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqIHdpbGwgYmUgYXV0b21h
dGljYWxseSBjcmVhdGVkIGJ5IHRoZSAjV2ViS2l0V2ViQ29udGV4dC4KKyAqCiAgKiBXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIgY2FuIGFsc28gYmUgdXNlZCB0byBmZXRjaCB3ZWJzaXRlcyBkYXRh
LCByZW1vdmUgZGF0YQogICogc3RvcmVkIGJ5IHBhcnRpY3VsYXIgd2Vic2l0ZXMsIG9yIGNsZWFy
IGRhdGEgZm9yIGFsbCB3ZWJzaXRlcyBtb2RpZmllZCBzaW5jZSBhIGdpdmVuCiAgKiBwZXJpb2Qg
b2YgdGltZS4KQEAgLTcyLDcgKzc4LDggQEAgZW51bSB7CiAgICAgUFJPUF9ESVNLX0NBQ0hFX0RJ
UkVDVE9SWSwKICAgICBQUk9QX0FQUExJQ0FUSU9OX0NBQ0hFX0RJUkVDVE9SWSwKICAgICBQUk9Q
X0lOREVYRUREQl9ESVJFQ1RPUlksCi0gICAgUFJPUF9XRUJTUUxfRElSRUNUT1JZCisgICAgUFJP
UF9XRUJTUUxfRElSRUNUT1JZLAorICAgIFBST1BfSVNfRVBIRU1FUkFMCiB9OwogCiBzdHJ1Y3Qg
X1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewpAQCAtMTE0LDYgKzEyMSw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElELCBHCiAgICAgY2FzZSBQUk9QX1dFQlNRTF9ESVJFQ1RPUlk6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KG1hbmFnZXIpKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0xNDUs
NiArMTU1LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclNldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjCiAgICAgY2FzZSBQUk9QX1dFQlNR
TF9ESVJFQ1RPUlk6CiAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNl
dChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0lTX0VQSEVNRVJBTDoKKyAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KQorICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMzAwLDYgKzMxNCwy
NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdChX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgXygiVGhlIGRpcmVjdG9y
eSB3aGVyZSBXZWJTUUwgZGF0YWJhc2VzIHdpbGwgYmUgc3RvcmVkIiksCiAgICAgICAgICAgICBu
dWxscHRyLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCisgICAg
ICogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmlzLWVwaGVtZXJhbDoKKyAgICAgKgorICAgICAq
IFdoZXRoZXIgdGhlICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaXMgZXBoZW1lcmFsLiBBbiBl
cGhlbWVyYWwgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgorICAgICAqIGhhbmRsZXMgYWxsIHdl
YnNpdGVzIGRhdGEgYXMgbm9uIHBlcnNpc3RlbnQsIGFuZCBub3RoaW5nIHdpbGwgYmUgd3JpdHRl
biB0byB0aGUgY2xpZW50CisgICAgICogc3RvcmFnZS4gTm90ZSB0aGF0IGlmIHlvdSBjcmVhdGUg
YW4gZXBoZW1lcmFsICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgYWxsIG90aGVyIGNvbnN0cnVj
dGlvbgorICAgICAqIHBhcmFtZXRlcnMgdG8gY29uZmlndXJlIGRhdGEgZGlyZWN0b3JpZXMgd2ls
bCBiZSBpZ25vcmVkLgorICAgICAqCisgICAgICogU2luY2U6IDIuMTYKKyAgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisg
ICAgICAgIFBST1BfSVNfRVBIRU1FUkFMLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
KyAgICAgICAgICAgICJpcy1lcGhlbWVyYWwiLAorICAgICAgICAgICAgIklzIEVwaGVtZXJhbCIs
CisgICAgICAgICAgICBfKCJXaGV0aGVyIHRoZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaXMg
ZXBoZW1lcmFsIiksCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKIH0KIAogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJDcmVhdGUoV2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3Vy
YXRpb24pCkBAIC0zNTMsMTMgKzM4Nyw0NCBAQCBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoY29uc3QgZ2NoYXIqIGZpcnN0T3B0aQogfQog
CiAvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXdfZXBoZW1lcmFsOgorICoK
KyAqIENyZWF0ZXMgYW4gZXBoZW1lcmFsICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuIFNlZSAj
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmlzLWVwaGVtZXJhbCBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgZXBoZW1lcmFsICNXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuCisgKgorICogU2luY2U6IDIuMTYKKyAqLworV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgp
Cit7CisgICAgcmV0dXJuIFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsICJpcy1lcGhlbWVyYWwiLCBUUlVFLCBu
dWxscHRyKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2Vw
aGVtZXJhbDoKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqCisg
KiBHZXQgd2hldGhlciBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaXMgZXBoZW1lcmFsLiBT
ZWUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjo6aXMtZXBoZW1lcmxhIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQG1hbmFnZXIgaXMgZXBoZXJhbCBvciAlRkFM
U0Ugb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
KiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRF
X0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgRkFMU0UpOworCisgICAgcmV0dXJuIG1hbmFnZXItPnBy
aXYtPndlYnNpdGVEYXRhU3RvcmUgJiYgIW1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUt
PmlzUGVyc2lzdGVudCgpOworfQorCisvKioKICAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeToKICAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIKICAqCiAgKiBHZXQgdGhlICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6YmFz
ZS1kYXRhLWRpcmVjdG9yeSBwcm9wZXJ0eS4KICAqCiAgKiBSZXR1cm5zOiB0aGUgYmFzZSBkaXJl
Y3RvcnkgZm9yIFdlYnNpdGUgZGF0YSwgb3IgJU5VTEwgaWYKLSAqICAgICNXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXI6YmFzZS1kYXRhLWRpcmVjdG9yeSB3YXMgbm90IHByb3ZpZGVkLgorICogICAg
I1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpiYXNlLWRhdGEtZGlyZWN0b3J5IHdhcyBub3QgcHJv
dmlkZWQgb3IgQG1hbmFnZXIgaXMgZXBoZW1lcmFsLgogICoKICAqIFNpbmNlOiAyLjEwCiAgKi8K
QEAgLTM2Nyw2ICs0MzIsOSBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVEYQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwg
bnVsbHB0cik7CiAKKyAgICBpZiAobWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSAmJiAh
bWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPmJhc2VEYXRhRGly
ZWN0b3J5LmdldCgpOwogfQogCkBAIC0zNzcsNyArNDQ1LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeShXZWJLaXRXZWJz
aXRlRGEKICAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpiYXNlLWNhY2hlLWRp
cmVjdG9yeSBwcm9wZXJ0eS4KICAqCiAgKiBSZXR1cm5zOiB0aGUgYmFzZSBkaXJlY3RvcnkgZm9y
IFdlYnNpdGUgY2FjaGUsIG9yICVOVUxMIGlmCi0gKiAgICAjV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyOmJhc2UtY2FjaGUtZGlyZWN0b3J5IHdhcyBub3QgcHJvdmlkZWQuCisgKiAgICAjV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyOmJhc2UtY2FjaGUtZGlyZWN0b3J5IHdhcyBub3QgcHJvdmlkZWQg
b3IgQG1hbmFnZXIgaXMgZXBoZW1lcmFsLgogICoKICAqIFNpbmNlOiAyLjEwCiAgKi8KQEAgLTM4
NSw2ICs0NTMsOSBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9iYXNlX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0
cik7CiAKKyAgICBpZiAobWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSAmJiAhbWFuYWdl
ci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPmJhc2VDYWNoZURpcmVjdG9y
eS5nZXQoKTsKIH0KIApAQCAtMzk0LDcgKzQ2NSw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Jhc2VfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVE
CiAgKgogICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmxvY2FsLXN0b3JhZ2Ut
ZGlyZWN0b3J5IHByb3BlcnR5LgogICoKLSAqIFJldHVybnM6IHRoZSBkaXJlY3Rvcnkgd2hlcmUg
bG9jYWwgc3RvcmFnZSBkYXRhIGlzIHN0b3JlZC4KKyAqIFJldHVybnM6IHRoZSBkaXJlY3Rvcnkg
d2hlcmUgbG9jYWwgc3RvcmFnZSBkYXRhIGlzIHN0b3JlZCBvciAlTlVMTCBpZiBAbWFuYWdlciBp
cyBlcGhlbWVyYWwuCiAgKgogICogU2luY2U6IDIuMTAKICAqLwpAQCAtNDAzLDYgKzQ3NCw5IEBA
IGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3Jh
Z2VfZGlyZWN0b3J5KFdlYktpdFdlYnNpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsKIAogICAgIFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OworICAgIGlm
IChwcml2LT53ZWJzaXRlRGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5pc1Bl
cnNpc3RlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBpZiAoIXByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSkKICAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5
LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmdldCgpOwpAQCAtNDE0LDcgKzQ4OCw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KFdlYktp
dFdlYnNpCiAgKgogICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmRpc2stY2Fj
aGUtZGlyZWN0b3J5IHByb3BlcnR5LgogICoKLSAqIFJldHVybnM6IHRoZSBkaXJlY3Rvcnkgd2hl
cmUgSFRUUCBkaXNrIGNhY2hlIGlzIHN0b3JlZC4KKyAqIFJldHVybnM6IHRoZSBkaXJlY3Rvcnkg
d2hlcmUgSFRUUCBkaXNrIGNhY2hlIGlzIHN0b3JlZCBvciAlTlVMTCBpZiBAbWFuYWdlciBpcyBl
cGhlbWVyYWwuCiAgKgogICogU2luY2U6IDIuMTAKICAqLwpAQCAtNDIzLDYgKzQ5Nyw5IEBAIGNv
bnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGly
ZWN0b3J5KFdlYktpdFdlYnNpdGVECiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsKIAogICAgIFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OworICAgIGlmIChw
cml2LT53ZWJzaXRlRGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5pc1BlcnNp
c3RlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBpZiAoIXByaXYtPmRpc2tD
YWNoZURpcmVjdG9yeSkgewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgYWxyZWFk
eSBoYXMgdGhlIHN1YmRpcmVjdG9yeS4KICAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5
LnJlc2V0KGdfc3RyZHVwKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKQEAg
LTQzNiw3ICs1MTMsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAogICoKICAqIEdldCB0aGUg
I1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpvZmZsaW5lLWFwcGxpY2F0aW9uLWNhY2hlLWRpcmVj
dG9yeSBwcm9wZXJ0eS4KICAqCi0gKiBSZXR1cm5zOiB0aGUgZGlyZWN0b3J5IHdoZXJlIG9mZmxp
bmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHN0b3JlZC4KKyAqIFJldHVybnM6IHRoZSBkaXJl
Y3Rvcnkgd2hlcmUgb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24gY2FjaGUgaXMgc3RvcmVkIG9yICVO
VUxMIGlmIEBtYW5hZ2VyIGlzIGVwaGVtZXJhbC4KICAqCiAgKiBTaW5jZTogMi4xMAogICovCkBA
IC00NDUsNiArNTIyLDkgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIG51bGxw
dHIpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IG1hbmFn
ZXItPnByaXY7CisgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhU3RvcmUgJiYgIXByaXYtPndlYnNp
dGVEYXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwog
ICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkKICAgICAgICAgcHJpdi0+
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkp
OwogICAgIHJldHVybiBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpOwpAQCAt
NDU2LDcgKzUzNiw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5CiAgKgogICogR2V0IHRoZSAj
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOmluZGV4ZWRkYi1kaXJlY3RvcnkgcHJvcGVydHkuCiAg
KgotICogUmV0dXJuczogdGhlIGRpcmVjdG9yeSB3aGVyZSBJbmRleGVkREIgZGF0YWJhc2VzIGFy
ZSBzdG9yZWQuCisgKiBSZXR1cm5zOiB0aGUgZGlyZWN0b3J5IHdoZXJlIEluZGV4ZWREQiBkYXRh
YmFzZXMgYXJlIHN0b3JlZCBvciAlTlVMTCBpZiBAbWFuYWdlciBpcyBlcGhlbWVyYWwuCiAgKgog
ICogU2luY2U6IDIuMTAKICAqLwpAQCAtNDY1LDYgKzU0NSw5IEBAIGNvbnN0IGdjaGFyKiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkoV2ViS2l0V2Vi
c2l0ZURhCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9N
QU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsKIAogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
clByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OworICAgIGlmIChwcml2LT53ZWJzaXRlRGF0
YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBpZiAoIXByaXYtPmluZGV4ZWREQkRpcmVjdG9yeSkK
ICAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkuZ2V0KCk7CkBA
IC00NzYsNyArNTU5LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRGEKICAqCiAgKiBHZXQgdGhl
ICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6d2Vic3FsLWRpcmVjdG9yeSBwcm9wZXJ0eS4KICAq
Ci0gKiBSZXR1cm5zOiB0aGUgZGlyZWN0b3J5IHdoZXJlIFdlYlNRTCBkYXRhYmFzZXMgYXJlIHN0
b3JlZC4KKyAqIFJldHVybnM6IHRoZSBkaXJlY3Rvcnkgd2hlcmUgV2ViU1FMIGRhdGFiYXNlcyBh
cmUgc3RvcmVkIG9yICVOVUxMIGlmIEBtYW5hZ2VyIGlzIGVwaGVtZXJhbC4KICAqCiAgKiBTaW5j
ZTogMi4xMAogICovCkBAIC00ODUsNiArNTY4LDkgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRGF0YU0K
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIo
bWFuYWdlciksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0
ZSogcHJpdiA9IG1hbmFnZXItPnByaXY7CisgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhU3RvcmUg
JiYgIXByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgIGlmICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQogICAgICAgICBw
cml2LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAg
cmV0dXJuIHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgK
aW5kZXggMjE2MjRhYTNjNjYuLmEyZTc0NGNlYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaApA
QCAtNjIsNiArNjIsMTIgQEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkgV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgICAgICAgICAg
ICAgICpmaXJzdF9vcHRpb25fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKK1dFQktJVF9BUEkg
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICoKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9u
ZXdfZXBoZW1lcmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJ
VF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBt
YW5hZ2VyKTsKKwogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2Jhc2VfZGF0YV9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKaW5kZXggMDUzNTQ1NDI4ZDEuLjQzZmE1Yjg3ZGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMzAsNyArMzAsOSBAQCBXZWJLaXRUTFNFcnJvcnNQb2xp
Y3kKIFdlYktpdE5ldHdvcmtQcm94eU1vZGUKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dAogd2Via2l0X3dlYl9jb250ZXh0X25ldword2Via2l0X3dlYl9jb250ZXh0X25ld19lcGhlbWVy
YWwKIHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcgord2Vi
a2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbAogd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJz
aXRlX2RhdGFfbWFuYWdlcgogd2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbAogd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbApAQCAtMTU4LDYgKzE2MCw3IEBAIHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVs
YXRlZF92aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgord2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbAogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VzZXJfY29udGVudF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfdHJ5X2Nsb3NlCkBAIC0xMjM3
LDYgKzEyNDAsOCBAQCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF90eXBlCiA8RklMRT5XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXI8L0ZJTEU+CiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9uZXdfZXBoZW1lcmFsCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFs
CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Jhc2VfZGF0YV9kaXJlY3RvcnkKIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkKIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZGExMDVlZjE0
Zi4uMDlmMzgyOGM4ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNy0wMS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEFQSSB0byBjcmVh
dGUgZXBoZW1lcmFsIHdlYiB2aWV3cyBhbmQgZGVwcmVjYXRlIHRoZSBwcml2YXRlIGJyb3dzaW5n
IHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NzM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzZXZlcmFsIHRlc3QgY2FzZXMgb2YgZXBoZW1lcmFsIHdlYiB2aWV3cy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0aGVudGljYXRpb24uY3Bw
OgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHA6Cisg
ICAgICAgIChlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQpOgorICAgICAgICAodGVzdENvb2tpZU1h
bmFnZXJFcGhlbWVyYWwpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAg
KHRlc3RXZWJLaXRTZXR0aW5ncyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0
RXBoZW1lcmFsKToKKyAgICAgICAgKGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCk6CisgICAgICAg
ICh0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAoZXBoZW1lcmFsVmlld2xvYWRDaGFuZ2VkKToKKyAgICAgICAgKHRlc3RX
ZWJWaWV3RXBoZW1lcmFsKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChl
cGhlbWVyYWxWaWV3bG9hZENoYW5nZWQpOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhRXBoZW1l
cmFsKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMTctMDEtMjMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8g
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyIHRvIGhhbmRsZSB3ZWJzaXRlIGRhdGEKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QXV0aGVudGljYXRp
b24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RBdXRoZW50
aWNhdGlvbi5jcHAKaW5kZXggYmJkNGU1ZDlhOTAuLjljZDlmNWU3YWU0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRpY2F0aW9uLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEF1dGhlbnRp
Y2F0aW9uLmNwcApAQCAtMTg3LDcgKzE4Nyw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0
aGVudGljYXRpb25Ob0NyZWRlbnRpYWwoQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uCiBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uU3RvcmFnZShBdXRoZW50aWNhdGlv
blRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gRW5hYmxlIHByaXZhdGUgYnJv
d3NpbmcgYmVmb3JlIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgdG8gdGVzdCB0aGF0IGNyZWRlbnRp
YWxzIGNhbid0IGJlIHNhdmVkLgorICAgIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05T
OwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcod2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpLCBUUlVFKTsKKyAgICBHX0dO
VUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvYXV0aC10ZXN0Lmh0bWwiKS5kYXRhKCkpOwogICAgIFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCA9IHRlc3QtPndhaXRGb3JBdXRoZW50aWNhdGlvblJl
cXVlc3QoKTsKICAgICBnX2Fzc2VydCghd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0
X3Byb3Bvc2VkX2NyZWRlbnRpYWwocmVxdWVzdCkpOwpAQCAtMTk2LDcgKzE5OCw5IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVz
dCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgLy8gSWYgV2ViS2l0IGhhcyBiZWVuIGNvbXBpbGVkIHdp
dGggbGlic2VjcmV0LCBhbmQgcHJpdmF0ZSBicm93c2luZyBpcyBkaXNhYmxlZAogICAgIC8vIHRo
ZW4gY2hlY2sgdGhhdCBjcmVkZW50aWFscyBjYW4gYmUgc2F2ZWQuCiAjaWYgVVNFKExJQlNFQ1JF
VCkKKyAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKHdlYmtpdF93ZWJfdmlld19nZXRfc2V0
dGluZ3ModGVzdC0+bV93ZWJWaWV3KSwgRkFMU0UpOworICAgIEdfR05VQ19FTkRfSUdOT1JFX0RF
UFJFQ0FUSU9OUzsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9h
dXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CiAgICAgcmVxdWVzdCA9IHRlc3QtPndhaXRGb3JBdXRo
ZW50aWNhdGlvblJlcXVlc3QoKTsKICAgICBnX2Fzc2VydCghd2Via2l0X2F1dGhlbnRpY2F0aW9u
X3JlcXVlc3RfZ2V0X3Byb3Bvc2VkX2NyZWRlbnRpYWwocmVxdWVzdCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdl
ci5jcHAKaW5kZXggMWU4NDJjZDA0Y2MuLjQ4OWQ3M2FmY2I0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5j
cHAKQEAgLTI5MCw2ICsyOTAsMzggQEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJz
aXN0ZW50U3RvcmFnZShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICBnX2Fz
c2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMCk7CiB9
CiAKK3N0YXRpYyB2b2lkIGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBXZWJWaWV3VGVzdCogdGVzdCkKK3sK
KyAgICBpZiAobG9hZEV2ZW50ICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1
cm47CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXcsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOwor
ICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFu
YWdlckVwaGVtZXJhbChDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sK
KyAgICB0ZXN0LT5zZXRBY2NlcHRQb2xpY3koV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBUX0FM
V0FZUyk7CisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NPT0tJRV9QRVJT
SVNURU5UX1NUT1JBR0VfVEVYVCk7CisgICAgY2hhcioqIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21h
aW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Ry
dl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4g
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCisgICAgICAgICJ3ZWItY29udGV4dCIsIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0
ZXN0LT5tX3dlYlZpZXcpLAorICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKKyAgICAgICAg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2Vi
Vmlldy5nZXQoKSkpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1l
cmFsKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOworCisgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LmdldCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFD
SyhlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQpLCB0ZXN0KTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF91cmkod2ViVmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0
bWwiKS5kYXRhKCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKwor
ICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlucyk7
CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKK30K
Kwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVz
c2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRD
b250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01F
VEhPRF9HRVQpIHsKQEAgLTMxOCw2ICszNTAsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgQ29v
a2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIsICJkZWxldGUtY29va2ll
cyIsIHRlc3RDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llcyk7CiAgICAgQ29va2llTWFuYWdlclRl
c3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIsICJjb29raWVzLWNoYW5nZWQiLCB0ZXN0Q29v
a2llTWFuYWdlckNvb2tpZXNDaGFuZ2VkKTsKICAgICBDb29raWVNYW5hZ2VyVGVzdDo6YWRkKCJX
ZWJLaXRDb29raWVNYW5hZ2VyIiwgInBlcnNpc3RlbnQtc3RvcmFnZSIsIHRlc3RDb29raWVNYW5h
Z2VyUGVyc2lzdGVudFN0b3JhZ2UpOworICAgIENvb2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktp
dENvb2tpZU1hbmFnZXIiLCAiZXBoZW1lcmFsIiwgdGVzdENvb2tpZU1hbmFnZXJFcGhlbWVyYWwp
OwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYTY3NjZm
YWI0OWUuLmM0NjQ2ZWZjY2Y5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYktpdFNldHRpbmdzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMTU4LDkgKzE1
OCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50
ZXIpCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJzZXQoc2V0dGluZ3MsICJ1
dGY4Iik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9j
aGFyc2V0KHNldHRpbmdzKSwgPT0sICJ1dGY4Iik7CiAKKyAgICBHX0dOVUNfQkVHSU5fSUdOT1JF
X0RFUFJFQ0FUSU9OUzsKICAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
cHJpdmF0ZV9icm93c2luZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0dGluZ3MsIFRSVUUpOwogICAgIGdfYXNzZXJ0KHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0dGluZ3MpKTsKKyAgICBH
X0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAKICAgICBnX2Fzc2VydCghd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncykpOwogICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMoc2V0dGluZ3MsIFRSVUUpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJL
aXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMTk3Yjc3NzE3YjAuLmE4YjE4MWNkNGMwIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTQwLDYgKzQwLDQwIEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJDb250ZXh0RGVmYXVsdChUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpICE9IHRlc3QtPm1fd2ViQ29u
dGV4dC5nZXQoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0RXBoZW1lcmFsKFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gQnkgZGVmYXVsdCB3ZWIgY29udGV4
dHMgYXJlIG5vdCBlcGhlbWVyYWwuCisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4dF9p
c19lcGhlbWVyYWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpKTsKKyAgICBnX2Fz
c2VydCghd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCkpKTsKKworICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0
X2dldF9kZWZhdWx0KCkpOworICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFO
QUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9pc19lcGhlbWVyYWwobWFuYWdlcikpOworICAgIG1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7Cisg
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKyAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5h
Z2VyKSk7CisKKyAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92
aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29u
dGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFs
KHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4gY29udGV4
dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X2VwaGVtZXJhbCgpKTsKKyAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQuZ2V0KCkpKTsK
KyAgICBtYW5hZ2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdl
cihjb250ZXh0LmdldCgpKTsKKyAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01B
TkFHRVIobWFuYWdlcikpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9pc19lcGhlbWVyYWwobWFuYWdlcikpOworCisgICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
Vyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChjb250ZXh0LmdldCgpKSk7CisgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CisK
KyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gZXBoZW1lcmFsTWFuYWdlciA9
IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgpKTsK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKGVw
aGVtZXJhbE1hbmFnZXIuZ2V0KCkpKTsKKyAgICBjb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF93
ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcihlcGhlbWVyYWxNYW5hZ2Vy
LmdldCgpKSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChj
b250ZXh0LmdldCgpKSk7Cit9CisKIGNsYXNzIFBsdWdpbnNUZXN0OiBwdWJsaWMgVGVzdCB7CiBw
dWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShQbHVnaW5zVGVzdCk7CkBAIC02NDIs
NiArNjc2LDE0IEBAIHB1YmxpYzoKICAgICBXZWJLaXRUZXN0U2VydmVyIG1fcHJveHlTZXJ2ZXI7
CiB9OwogCitzdGF0aWMgdm9pZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgV2ViVmlld1Rlc3QqIHRlc3Qp
Cit7CisgICAgaWYgKGxvYWRFdmVudCAhPSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkKKyAgICAgICAg
cmV0dXJuOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQpLCB0ZXN0
KTsKKyAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYkNv
bnRleHRQcm94eVNldHRpbmdzKFByb3h5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAg
ICAvLyBQcm94eSBVUkkgaXMgdW5zZXQgYnkgZGVmYXVsdC4gUmVxdWVzdHMgdG8ga1NlcnZlciBz
aG91bGQgYmUgcmVjZWl2ZWQgYnkga1NlcnZlci4KQEAgLTY1OCw2ICs3MDAsMzAgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKFByb3h5VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcobWFpblJlc291cmNlRGF0YSwgPT0sIHBy
b3h5U2VydmVyUG9ydEFzU3RyaW5nLmdldCgpKTsKICAgICB3ZWJraXRfbmV0d29ya19wcm94eV9z
ZXR0aW5nc19mcmVlKHNldHRpbmdzKTsKIAorICAgIC8vIFByb3h5IHNldHRpbmdzIGFsc28gYWZm
ZWN0IGVwaGVtZXJhbCB3ZWIgdmlld3MuCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywK
KyAgICAgICAgIndlYi1jb250ZXh0IiwgdGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLAorICAgICAg
ICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKKyAgICAgICAgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKHdlYmtpdF93ZWJfdmlld19nZXRf
Y29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOworCisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3
LmdldCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhlcGhlbWVyYWxWaWV3bG9hZENoYW5n
ZWQpLCB0ZXN0KTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldy5nZXQoKSwg
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VjaG9Qb3J0IikuZGF0YSgpKTsKKyAgICBnX21haW5f
bG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291
cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHdlYlZpZXcuZ2V0KCkpOwor
ICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKKyAgICB3ZWJr
aXRfd2ViX3Jlc291cmNlX2dldF9kYXRhKHJlc291cmNlLCBudWxscHRyLCBbXShHT2JqZWN0KiBv
YmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAg
ICBzaXplX3QgZGF0YVNpemU7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGF0YShyZWludGVy
cHJldF9jYXN0PGNoYXIqPih3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJL
SVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwgJmRhdGFTaXplLCBudWxscHRyKSkpOwor
ICAgICAgICBnX2Fzc2VydChkYXRhKTsKKyAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0
PFByb3h5VGVzdCo+KHVzZXJEYXRhKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm94eVNl
cnZlclBvcnRBc1N0cmluZyA9IHRlc3QtPnByb3h5U2VydmVyUG9ydEFzU3RyaW5nKCk7CisgICAg
ICAgIEFTU0VSVF9DTVBfQ1NUUklORyhDU3RyaW5nKGRhdGEuZ2V0KCksIGRhdGFTaXplKSwgPT0s
IHByb3h5U2VydmVyUG9ydEFzU3RyaW5nLmdldCgpKTsKKyAgICAgICAgdGVzdC0+cXVpdE1haW5M
b29wKCk7CisgICAgICAgIH0sIHRlc3QpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21h
aW5Mb29wKTsKKwogICAgIC8vIFJlbW92ZSB0aGUgcHJveHkuIFJlcXVlc3RzIHRvIGtTZXJ2ZXIg
c2hvdWxkIGJlIHJlY2VpdmVkIGJ5IGtTZXJ2ZXIgYWdhaW4uCiAgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9uZXR3b3JrX3Byb3h5X3NldHRpbmdzKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwg
V0VCS0lUX05FVFdPUktfUFJPWFlfTU9ERV9OT19QUk9YWSwgbnVsbHB0cik7CiAgICAgbWFpblJl
c291cmNlRGF0YSA9IHRlc3QtPmxvYWRVUklBbmRHZXRNYWluUmVzb3VyY2VEYXRhKGtTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi9lY2hvUG9ydCIpLmRhdGEoKSk7CkBAIC02OTksNiArNzY1LDcgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKICAg
ICBUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAiZGVmYXVsdC1jb250ZXh0IiwgdGVzdFdl
YkNvbnRleHREZWZhdWx0KTsKKyAgICBUZXN0OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAiZXBo
ZW1lcmFsIiwgdGVzdFdlYkNvbnRleHRFcGhlbWVyYWwpOwogICAgIFBsdWdpbnNUZXN0OjphZGQo
IldlYktpdFdlYkNvbnRleHQiLCAiZ2V0LXBsdWdpbnMiLCB0ZXN0V2ViQ29udGV4dEdldFBsdWdp
bnMpOwogICAgIFVSSVNjaGVtZVRlc3Q6OmFkZCgiV2ViS2l0V2ViQ29udGV4dCIsICJ1cmktc2No
ZW1lIiwgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
Q29udGV4dCIsICJzcGVsbC1jaGVja2VyIiwgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMjE1YTE3ZTZkZWQuLjgzNDZhYTBmMjU4IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vi
S2l0V2ViVmlldy5jcHAKQEAgLTk0LDYgKzk0LDUxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
V2ViQ29udGV4dExpZmV0aW1lKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGdfb2JqZWN0X3VucmVmKHdlYkNvbnRleHQyKTsKIH0KIAorc3RhdGljIHZvaWQgZXBoZW1lcmFs
Vmlld2xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBs
b2FkRXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQoreworICAgIGlmIChsb2FkRXZlbnQgIT0gV0VC
S0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJldHVybjsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZXBo
ZW1lcmFsVmlld2xvYWRDaGFuZ2VkKSwgdGVzdCk7CisgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQoreworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfZXBo
ZW1lcmFsKHRlc3QtPm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRl
eHRfaXNfZXBoZW1lcmFsKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZp
ZXcpKSk7CisgICAgYXV0byogbWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXIodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsKKyAgICBnX2Fzc2VydCgh
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CisgICAg
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKG1hbmFnZXIsIFdFQktJVF9XRUJTSVRF
X0RBVEFfRElTS19DQUNIRSwgMCwgbnVsbHB0ciwgW10oR09iamVjdCogbWFuYWdlciwgR0FzeW5j
UmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9maW5pc2goV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VS
KG1hbmFnZXIpLCByZXN1bHQsIG51bGxwdHIpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJWaWV3
VGVzdCo+KHVzZXJEYXRhKS0+cXVpdE1haW5Mb29wKCk7CisgICAgfSwgdGVzdCk7CisgICAgZ19t
YWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworCisgICAgLy8gQSBXZWJWaWV3IG9uIGEg
bm9uIGVwaGVtZXJhbCBjb250ZXh0IGNhbiBiZSBlcGhlbWVyYWwuCisgICAgR1JlZlB0cjxXZWJL
aXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfVklFVywKKyAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCisgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAorICAgICAgICBudWxscHRyKSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4
dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkp
KSk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJsb2FkLWNoYW5nZWQi
LCBHX0NBTExCQUNLKGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOworICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LmdldCgpLCBnU2VydmVyLT5nZXRVUklGb3JQYXRo
KCIvIikuZGF0YSgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisK
KyAgICAvLyBEaXNrIGNhY2hlIGRlbGF5cyB0aGUgc3RvcmluZyBvZiBpbml0aWFsIHJlc291cmNl
cyBmb3IgMSBzZWNvbmQgdG8gYXZvaWQKKyAgICAvLyBhZmZlY3RpbmcgZWFybHkgcGFnZSBsb2Fk
LiBTbywgd2FpdCAxIHNlY29uZCBoZXJlIHRvIG1ha2Ugc3VyZSByZXNvdXJjZXMKKyAgICAvLyBo
YXZlIGFscmVhZHkgYmVlbiBzdG9yZWQuCisgICAgdGVzdC0+d2FpdCgxKTsKKworICAgIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaChtYW5hZ2VyLCBXRUJLSVRfV0VCU0lURV9EQVRB
X0RJU0tfQ0FDSEUsIG51bGxwdHIsIFtdKEdPYmplY3QqIG1hbmFnZXIsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGlj
X2Nhc3Q8V2ViVmlld1Rlc3QqPih1c2VyRGF0YSk7CisgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2hfZmluaXNoKFdFQktJVF9XRUJTSVRFX0RBVEFfTUFO
QUdFUihtYW5hZ2VyKSwgcmVzdWx0LCBudWxscHRyKSk7CisgICAgICAgIHRlc3QtPnF1aXRNYWlu
TG9vcCgpOworICAgIH0sIHRlc3QpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5M
b29wKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDdXN0b21DaGFyc2V0KFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRVUkkoZ1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CkBAIC0xMDE0LDYgKzEwNTksNyBAQCB2b2lkIGJl
Zm9yZUFsbCgpCiAKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndlYi1j
b250ZXh0IiwgdGVzdFdlYlZpZXdXZWJDb250ZXh0KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIndlYi1jb250ZXh0LWxpZmV0aW1lIiwgdGVzdFdlYlZpZXdXZWJDb250
ZXh0TGlmZXRpbWUpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZXBo
ZW1lcmFsIiwgdGVzdFdlYlZpZXdFcGhlbWVyYWwpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAiY3VzdG9tLWNoYXJzZXQiLCB0ZXN0V2ViVmlld0N1c3RvbUNoYXJzZXQp
OwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0
V2ViVmlld1NldHRpbmdzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
Inpvb20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZlbCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4
IDE2OTAyYzA1MDU1Li5jODY5ZWVhZDMyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTIwNyw2ICsy
MDcsNTcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRl
RGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoYmFzZURhdGFN
YW5hZ2VyLmdldCgpKSwgPT0sIFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSk7CiB9CiAKK3N0YXRpYyB2
b2lkIGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBXZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBpZiAobG9h
ZEV2ZW50ICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47CisgICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXcsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOworICAgIHRlc3QtPnF1
aXRNYWluTG9vcCgpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwo
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1JlZlB0cjxXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXI+IG1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX25ld19lcGhlbWVyYWwoKSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeShtYW5h
Z2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KG1h
bmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNo
ZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJl
Y3RvcnkobWFuYWdlci5nZXQoKSkpOworCisgICAgLy8gQ29uZmlndXJhdGlvbiBpcyBpZ25vcmVk
IHdoZW4gaXMtZXBoZW1lcmFsIGlzIHVzZWQuCisgICAgbWFuYWdlciA9IGFkb3B0R1JlZihXRUJL
SVRfV0VCU0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVf
REFUQV9NQU5BR0VSLCAiYmFzZS1kYXRhLWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJlY3Rvcnko
KSwgImlzLWVwaGVtZXJhbCIsIFRSVUUsIG51bGxwdHIpKSk7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyLmdldCgpKSk7CisgICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVj
dG9yeShtYW5hZ2VyLmdldCgpKSk7CisKKyAgICAvLyBOb24gcGVyc2lzdGVudCBkYXRhIGNhbiBi
ZSBxdWVyaWVkIGluIGFuIGVwaGVtZXJhbCBtYW5hZ2VyLgorICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Q29udGV4dD4gd2ViQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dp
dGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2ViQ29udGV4dC5nZXQoKSkpOworICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGVw
aGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOworICAgIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3VyaSh3ZWJWaWV3LmdldCgpLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5kYXRh
KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKworICAgIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaChtYW5hZ2VyLmdldCgpLCBXRUJLSVRfV0VCU0lU
RV9EQVRBX01FTU9SWV9DQUNIRSwgbnVsbHB0ciwgW10oR09iamVjdCogbWFuYWdlciwgR0FzeW5j
UmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIGF1dG8qIHRlc3Qg
PSBzdGF0aWNfY2FzdDxXZWJWaWV3VGVzdCo+KHVzZXJEYXRhKTsKKyAgICAgICAgR0xpc3QqIGRh
dGFMaXN0ID0gd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaChXRUJLSVRf
V0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIHJlc3VsdCwgbnVsbHB0cik7CisgICAgICAg
IGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVu
Z3RoKGRhdGFMaXN0KSwgPT0sIDEpOworICAgICAgICBXZWJLaXRXZWJzaXRlRGF0YSogZGF0YSA9
IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOworICAgICAg
ICBnX2Fzc2VydChkYXRhKTsKKyAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9
IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiLyIpLmRhdGEoKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9k
YXRhX2dldF9uYW1lKGRhdGEpLCA9PSwgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChv
cmlnaW4pKTsKKyAgICAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwor
ICAgICAgICBnX2xpc3RfZnJlZV9mdWxsKGRhdGFMaXN0LCByZWludGVycHJldF9jYXN0PEdEZXN0
cm95Tm90aWZ5Pih3ZWJraXRfd2Vic2l0ZV9kYXRhX3VucmVmKSk7CisgICAgICAgIHRlc3QtPnF1
aXRNYWluTG9vcCgpOworICAgIH0sIHRlc3QpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5t
X21haW5Mb29wKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ2FjaGUoV2Vic2l0
ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBXZWJL
aXRXZWJzaXRlRGF0YVR5cGVzIGNhY2hlVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRl
RGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSB8IFdFQktJVF9XRUJT
SVRFX0RBVEFfRElTS19DQUNIRSk7CkBAIC00NDAsNiArNDkxLDcgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKICAgICBXZWJzaXRlRGF0YVRl
c3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiY29uZmlndXJhdGlvbiIsIHRlc3RXZWJzaXRl
RGF0YUNvbmZpZ3VyYXRpb24pOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYnNpdGVE
YXRhIiwgImVwaGVtZXJhbCIsIHRlc3RXZWJzaXRlRGF0YUVwaGVtZXJhbCk7CiAgICAgV2Vic2l0
ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImNhY2hlIiwgdGVzdFdlYnNpdGVE
YXRhQ2FjaGUpOwogICAgIFdlYnNpdGVEYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIs
ICJzdG9yYWdlIiwgdGVzdFdlYnNpdGVEYXRhU3RvcmFnZSk7CiAgICAgV2Vic2l0ZURhdGFUZXN0
OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImRhdGFiYXNlcyIsIHRlc3RXZWJzaXRlRGF0YURh
dGFiYXNlcyk7Cg==
</data>
<flag name="review"
          id="321540"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>