<?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>211926</bug_id>
          
          <creation_ts>2020-05-14 15:19:19 -0700</creation_ts>
          <short_desc>Add baseURL version of _WKUserStyleSheet forWKWebView</short_desc>
          <delta_ts>2020-05-14 17:33:43 -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 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652816</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-05-14 15:19:19 -0700</bug_when>
    <thetext>The forWKWebView version of _WKUserStyleSheet should allow a baseURL to be supplied so it can appear in Web Inspector.

&lt;rdar://problem/62074675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652831</commentid>
    <comment_count>1</comment_count>
      <attachid>399419</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-05-14 15:34:42 -0700</bug_when>
    <thetext>Created attachment 399419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652871</commentid>
    <comment_count>2</comment_count>
      <attachid>399419</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-05-14 16:54:42 -0700</bug_when>
    <thetext>Comment on attachment 399419
Patch

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

r=me, with some comments/concerns

&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:130
&gt; +    auto addStyleSheet = [&amp;](const UserStyleSheet&amp; userStyleSheet) {

I&apos;d make this into a private member function, something like `createCSSStyleSheetForUserStyleSheet`.

&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:135
&gt; +        if (userStyleSheet.level() == UserStyleUserLevel)

I think it&apos;s better to check for `sheet-&gt;contents().isUserStyleSheet()` as that&apos;s going to give us the actual resolved level.

&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:-161
&gt; -    m_pageSpecificStyleSheets.append(WTFMove(sheet));

I think it would&apos;ve also been valid to `m_injectedStyleSheetToSource.set(sheet.copyRef(), userStyleSheet.source());` above this (and do a corresponding `removeFirstMatching in `removePageSpecificUserStyleSheet`), but I like the unified approach too :)

&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:166
&gt; +    bool removedStyleSheet = m_pageSpecificStyleSheets.removeFirstMatching([userStyleSheet](auto&amp; styleSheet) {

You should use `&amp;userStyleSheet` (or just `&amp;`) so it captures by reference instead of making a copy.

NIT: `const auto&amp;`

&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:-241
&gt; -    for (auto&amp; sheet : m_pageSpecificStyleSheets)
&gt; -        sheet-&gt;detachFromDocument();

I wonder if this was calling `detachFromDocument` more than once on the same `RefPtr&lt;CSSStyleSheet&gt;`, because I think the same `RefPtr&lt;CSSStyleSheet&gt;` could&apos;ve existed in `m_injectedUserStyleSheets`/`m_injectedAuthorStyleSheets` _and_ `m_pageSpecificStyleSheets` 🤔

&gt; Source/WebCore/dom/ExtensionStyleSheets.h:95
&gt; +    Vector&lt;UserStyleSheet&gt; m_pageSpecificStyleSheets;

This is the first time that we&apos;re holding on to the `UserStyleSheet` instead of a `RefPtr&lt;CSSStyleSheet&gt;` for it.  Is this problematic?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:52
&gt; +- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly baseURL:(NSURL *)baseURL level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Why `baseURL` instead of `sourceURL`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652875</commentid>
    <comment_count>3</comment_count>
      <attachid>399419</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-05-14 17:03:12 -0700</bug_when>
    <thetext>Comment on attachment 399419
Patch

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

&gt;&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:130
&gt;&gt; +    auto addStyleSheet = [&amp;](const UserStyleSheet&amp; userStyleSheet) {
&gt; 
&gt; I&apos;d make this into a private member function, something like `createCSSStyleSheetForUserStyleSheet`.

Eh, why?

&gt;&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:135
&gt;&gt; +        if (userStyleSheet.level() == UserStyleUserLevel)
&gt; 
&gt; I think it&apos;s better to check for `sheet-&gt;contents().isUserStyleSheet()` as that&apos;s going to give us the actual resolved level.

Okay

&gt;&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:-161
&gt;&gt; -    m_pageSpecificStyleSheets.append(WTFMove(sheet));
&gt; 
&gt; I think it would&apos;ve also been valid to `m_injectedStyleSheetToSource.set(sheet.copyRef(), userStyleSheet.source());` above this (and do a corresponding `removeFirstMatching in `removePageSpecificUserStyleSheet`), but I like the unified approach too :)

Nope, since `updateInjectedStyleSheetCache` clears the m_injectedStyleSheetToSource.

&gt;&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:166
&gt;&gt; +    bool removedStyleSheet = m_pageSpecificStyleSheets.removeFirstMatching([userStyleSheet](auto&amp; styleSheet) {
&gt; 
&gt; You should use `&amp;userStyleSheet` (or just `&amp;`) so it captures by reference instead of making a copy.
&gt; 
&gt; NIT: `const auto&amp;`

Okay

&gt;&gt; Source/WebCore/dom/ExtensionStyleSheets.cpp:-241
&gt;&gt; -        sheet-&gt;detachFromDocument();
&gt; 
&gt; I wonder if this was calling `detachFromDocument` more than once on the same `RefPtr&lt;CSSStyleSheet&gt;`, because I think the same `RefPtr&lt;CSSStyleSheet&gt;` could&apos;ve existed in `m_injectedUserStyleSheets`/`m_injectedAuthorStyleSheets` _and_ `m_pageSpecificStyleSheets` 🤔

I think so!

&gt;&gt; Source/WebCore/dom/ExtensionStyleSheets.h:95
&gt;&gt; +    Vector&lt;UserStyleSheet&gt; m_pageSpecificStyleSheets;
&gt; 
&gt; This is the first time that we&apos;re holding on to the `UserStyleSheet` instead of a `RefPtr&lt;CSSStyleSheet&gt;` for it.  Is this problematic?

Should be fine. We hold UserStyleSheet in vectors elsewhere.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h:52
&gt;&gt; +- (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly baseURL:(NSURL *)baseURL level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Why `baseURL` instead of `sourceURL`?

To match the other methods on this class. I agree it isn&apos;t great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652876</commentid>
    <comment_count>4</comment_count>
      <attachid>399428</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-05-14 17:03:37 -0700</bug_when>
    <thetext>Created attachment 399428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652887</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-14 17:33:42 -0700</bug_when>
    <thetext>Committed r261726: &lt;https://trac.webkit.org/changeset/261726&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399428.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399419</attachid>
            <date>2020-05-14 15:34:42 -0700</date>
            <delta_ts>2020-05-14 17:03:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211926-20200514153442.patch</filename>
            <type>text/plain</type>
            <size>15955</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE2OTEyZWQ3OGY2OGI2
NDFkNTE2MDcyZTQ2YzgwOGJkMmIyZDk1NS4uYmIwOThhYjc2ODVjOTUxMzMzNTg4MzViNGEzYjZi
ZmUyM2IzNmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzZVVSTCB2
ZXJzaW9uIG9mIF9XS1VzZXJTdHlsZVNoZWV0IGZvcldLV2ViVmlldy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTkyNgorICAgICAgICByZGFyOi8v
cHJvYmxlbS82MjA3NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvbnNvbGlkYXRlIHRoZSBwYXRocyB0YWtlbiBmb3IgYWRkaW5nIGEgVXNlclN0
eWxlU2hlZXQuIFRoZSBtX2luamVjdGVkU3R5bGVTaGVldFRvU291cmNlCisgICAgICAgIHdhcyBt
aXNzaW5nIGZvciBwYWdlIHNwZWNpZmljIHN0eWxlIHNoZWV0cyBzaW5jZSBpdCB3YXMgYW5vdGhl
ciBsb29wLgorCisgICAgICAgICogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlZFN0eWxlU2hl
ZXRDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6
aW5qZWN0UGFnZVNwZWNpZmljVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uU3R5bGVTaGVldHM6OnJlbW92ZVBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjpkZXRhY2hGcm9tRG9jdW1lbnQp
OgorICAgICAgICAqIGRvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oOgorCiAyMDIwLTA1LTE0ICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc291cmNl
VVJMIHRvIF9ldmFsdWF0ZUphdmFTY3JpcHQ6IHNvIHRoZSBzY3JpcHRzIGFwcGVhciBpbiBXZWIg
SW5zcGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOTBjZWI2ZTdmMTc4ZWVmNmJmMmU4OGIwYjkwMjkxODJm
MTZlNTY2Li4wZmQwZGE3NzE5NTM2NjViNGE5Yzc2M2I1ZmU3ZThiZTE2ZTQxMDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA1LTE0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzZVVSTCB2ZXJzaW9uIG9mIF9XS1VzZXJTdHls
ZVNoZWV0IGZvcldLV2ViVmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMTkyNgorICAgICAgICByZGFyOi8vcHJvYmxlbS82MjA3NDY3NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0
IGluaXRXaXRoU291cmNlOmZvcldLV2ViVmlldzpmb3JNYWluRnJhbWVPbmx5OmJhc2VVUkw6bGV2
ZWw6dXNlckNvbnRlbnRXb3JsZDpdKTogQWRkZWQuCisgICAgICAgICgtW19XS1VzZXJTdHlsZVNo
ZWV0IGluaXRXaXRoU291cmNlOmZvcldLV2ViVmlldzpmb3JNYWluRnJhbWVPbmx5OmxldmVsOnVz
ZXJDb250ZW50V29ybGQ6XSk6IENsZWFuIHVwIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IGluaXRp
YWxpemVyLgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JN
YWluRnJhbWVPbmx5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5p
dFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2ts
aXN0OnVzZXJDb250ZW50V29ybGQ6XSk6IERpdHRvLgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVT
aGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdh
Y3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOiBEaXR0by4KKyAgICAgICAg
KC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdh
Y3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6bGV2ZWw6dXNlckNvbnRlbnRXb3Js
ZDpdKTogRGl0dG8uCisKIDIwMjAtMDUtMTQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzb3VyY2VVUkwgdG8gX2V2YWx1YXRlSmF2YVNjcmlwdDog
c28gdGhlIHNjcmlwdHMgYXBwZWFyIGluIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAppbmRleCA4MTU4ZTU1OWU1MjRjY2VkNTkxZDEz
NzA0OGFiNTI5NmIxZTNjOGJiLi4zZTMxZTIyZmFjNjYxMzhmZWUyM2M5ZWJiN2M3Mzg0M2FiMjVl
OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKQEAg
LTEyNywxMiArMTI3LDE5IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUluamVj
dGVkU3R5bGVTaGVldENhY2hlKCkgY29uc3QKICAgICBpZiAoIW93bmluZ1BhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGZvciAoY29uc3QgYXV0byYgcGFnZVNwZWNpZmljU3R5bGVTaGVldCA6
IG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMpIHsKLSAgICAgICAgaWYgKHBhZ2VTcGVjaWZpY1N0
eWxlU2hlZXQtPmNvbnRlbnRzKCkuaXNVc2VyU3R5bGVTaGVldCgpKQotICAgICAgICAgICAgbV9p
bmplY3RlZFVzZXJTdHlsZVNoZWV0cy5hcHBlbmQocGFnZVNwZWNpZmljU3R5bGVTaGVldCk7Cisg
ICAgYXV0byBhZGRTdHlsZVNoZWV0ID0gWyZdKGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5
bGVTaGVldCkgeworICAgICAgICBhdXRvIHNoZWV0ID0gY3JlYXRlRXh0ZW5zaW9uc1N0eWxlU2hl
ZXQoY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fZG9jdW1lbnQpLCB1c2VyU3R5bGVTaGVldC51cmwo
KSwgdXNlclN0eWxlU2hlZXQuc291cmNlKCksIHVzZXJTdHlsZVNoZWV0LmxldmVsKCkpOworCisg
ICAgICAgIG1faW5qZWN0ZWRTdHlsZVNoZWV0VG9Tb3VyY2Uuc2V0KHNoZWV0LmNvcHlSZWYoKSwg
dXNlclN0eWxlU2hlZXQuc291cmNlKCkpOworCisgICAgICAgIGlmICh1c2VyU3R5bGVTaGVldC5s
ZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZlbCkKKyAgICAgICAgICAgIG1faW5qZWN0ZWRVc2Vy
U3R5bGVTaGVldHMuYXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9pbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzLmFwcGVuZChwYWdlU3BlY2lmaWNTdHls
ZVNoZWV0KTsKLSAgICB9CisgICAgICAgICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMu
YXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKKyAgICB9OworCisgICAgZm9yIChjb25zdCBhdXRvJiB1
c2VyU3R5bGVTaGVldCA6IG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMpCisgICAgICAgIGFkZFN0
eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpOwogCiAgICAgb3duaW5nUGFnZS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLmZvckVhY2hVc2VyU3R5bGVTaGVldChbJl0oY29uc3QgVXNlclN0eWxlU2hlZXQm
IHVzZXJTdHlsZVNoZWV0KSB7CiAgICAgICAgIGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkK
QEAgLTE0NCwyOCArMTUxLDIwIEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUlu
amVjdGVkU3R5bGVTaGVldENhY2hlKCkgY29uc3QKICAgICAgICAgaWYgKCFVc2VyQ29udGVudFVS
TFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50LnVybCgpLCB1c2VyU3R5bGVTaGVl
dC53aGl0ZWxpc3QoKSwgdXNlclN0eWxlU2hlZXQuYmxhY2tsaXN0KCkpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGF1dG8gc2hlZXQgPSBjcmVhdGVFeHRlbnNpb25zU3R5bGVTaGVl
dChjb25zdF9jYXN0PERvY3VtZW50Jj4obV9kb2N1bWVudCksIHVzZXJTdHlsZVNoZWV0LnVybCgp
LCB1c2VyU3R5bGVTaGVldC5zb3VyY2UoKSwgdXNlclN0eWxlU2hlZXQubGV2ZWwoKSk7Ci0KLSAg
ICAgICAgbV9pbmplY3RlZFN0eWxlU2hlZXRUb1NvdXJjZS5zZXQoc2hlZXQuY29weVJlZigpLCB1
c2VyU3R5bGVTaGVldC5zb3VyY2UoKSk7Ci0KLSAgICAgICAgaWYgKHVzZXJTdHlsZVNoZWV0Lmxl
dmVsKCkgPT0gVXNlclN0eWxlVXNlckxldmVsKQotICAgICAgICAgICAgbV9pbmplY3RlZFVzZXJT
dHlsZVNoZWV0cy5hcHBlbmQoV1RGTW92ZShzaGVldCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKFdURk1vdmUoc2hlZXQpKTsK
KyAgICAgICAgYWRkU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0
KGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBhdXRvIHNoZWV0
ID0gY3JlYXRlRXh0ZW5zaW9uc1N0eWxlU2hlZXQoY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fZG9j
dW1lbnQpLCB1c2VyU3R5bGVTaGVldC51cmwoKSwgdXNlclN0eWxlU2hlZXQuc291cmNlKCksIHVz
ZXJTdHlsZVNoZWV0LmxldmVsKCkpOwotICAgIG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMuYXBw
ZW5kKFdURk1vdmUoc2hlZXQpKTsKKyAgICBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzLmFwcGVu
ZCh1c2VyU3R5bGVTaGVldCk7CiAgICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hl
KCk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnJlbW92ZVBhZ2VTcGVjaWZpY1Vz
ZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAg
ICBib29sIHJlbW92ZWRTdHlsZVNoZWV0ID0gbV9wYWdlU3BlY2lmaWNTdHlsZVNoZWV0cy5yZW1v
dmVGaXJzdE1hdGNoaW5nKFt1c2VyU3R5bGVTaGVldF0oYXV0byYgY3NzU3R5bGVTaGVldCkgewot
ICAgICAgICByZXR1cm4gY3NzU3R5bGVTaGVldC0+Y29udGVudHMoKS5vcmlnaW5hbFVSTCgpID09
IHVzZXJTdHlsZVNoZWV0LnVybCgpOworICAgIGJvb2wgcmVtb3ZlZFN0eWxlU2hlZXQgPSBtX3Bh
Z2VTcGVjaWZpY1N0eWxlU2hlZXRzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoW3VzZXJTdHlsZVNoZWV0
XShhdXRvJiBzdHlsZVNoZWV0KSB7CisgICAgICAgIHJldHVybiBzdHlsZVNoZWV0LnVybCgpID09
IHVzZXJTdHlsZVNoZWV0LnVybCgpOwogICAgIH0pOwogCiAgICAgaWYgKHJlbW92ZWRTdHlsZVNo
ZWV0KQpAQCAtMjM3LDggKzIzNiw2IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OmRldGFj
aEZyb21Eb2N1bWVudCgpCiAgICAgICAgIHNoZWV0LT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsKICAg
ICBmb3IgKGF1dG8mIHNoZWV0IDogbV9hdXRob3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcpCiAgICAg
ICAgIHNoZWV0LT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsKLSAgICBmb3IgKGF1dG8mIHNoZWV0IDog
bV9wYWdlU3BlY2lmaWNTdHlsZVNoZWV0cykKLSAgICAgICAgc2hlZXQtPmRldGFjaEZyb21Eb2N1
bWVudCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9u
U3R5bGVTaGVldHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5o
CmluZGV4IGQ5MzQ0YjYwNTc4ZDNjNjViN2ZiYjc1YmQxOWJkNGNhY2QxNWE0OWIuLmRhOGIwYTk2
OGNkOGFiMWQ1NzM0NmQ5ZGI4NmM5OTA3OWM0NDM3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
eHRlbnNpb25TdHlsZVNoZWV0cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDYsNyAr
NDcsNiBAQCBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRD
b250ZW50czsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwotY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiAK
IGNsYXNzIEV4dGVuc2lvblN0eWxlU2hlZXRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4+IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+IG1fYXV0aG9yU3R5bGVTaGVldHNGb3JUZXN0aW5nOwotICAgIFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4+IG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHM7CisgICAgVmVjdG9yPFVz
ZXJTdHlsZVNoZWV0PiBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzOwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiBtX2NvbnRlbnRFeHRlbnNpb25TaGVldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCmluZGV4IDQ3ODBmMDgzNWRi
MjU2Y2NhODNiMzRhNmY4MTUzNTFiYTA2NjNmODUuLjZmYjI2NGY4ZjQ5MWQ4MDdhMTI0ZDBhMGRk
MDZiYTQxOGNjOWJkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC00OSw2ICs0OSw3IEBAIFdLX0NMQVNTX0FW
QUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSkKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilz
b3VyY2UgZm9yV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvck1haW5GcmFtZU9ubHk6
KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2ZWwgdXNl
ckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yV0tXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1l
T25seSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgbGV2ZWw6KF9XS1VzZXJTdHlsZUxldmVsKWxl
dmVsIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdv
cmxkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1h
aW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJy
YXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5
PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJD
b250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5G
cmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hp
dGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNr
bGlzdCBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNv
bnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhT
b3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZy
YW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0
ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2ts
aXN0IGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2
ZWwgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29y
bGQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5
bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5
bGVTaGVldC5tbQppbmRleCA0NDA1OWI5ZThiMmY5NTkyNDI4NmMwMmY4NTk0Njk4ODZjZGFkN2I5
Li4yMTBhMjczZGUyNzI0MmVlZjU2Nzc2MGZjOTgyYTdlNzhmMjQ0MDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1t
CkBAIC00NSw3ICs0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJp
bmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluCiAgICAgLy8gRklYTUU6
IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZv
cmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hv
dWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6
OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3Js
ZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFw
cGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsg
c291cmNlLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsg
fSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6
OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpAQCAtNTksNyArNTksMjAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0
cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlYKICAgICAvLyBGSVhN
RTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJl
Zm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBz
aG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwog
Ci0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQ
STo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
VG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2ZWwobGV2ZWwpLCBbd2ViVmll
dyBfcGFnZV0tPndlYlBhZ2VJRCgpIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNl
LCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2ZWwobGV2ZWwpLCBbd2Vi
VmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkLT5fY29udGVudFdvcmxkKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvcldLV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkg
YmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIGxldmVsOihfV0tVc2VyU3R5bGVMZXZlbClsZXZlbCB1
c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1
ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRo
aXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPworICAgIFdlYktpdDo6SW5pdGlhbGl6
ZVdlYktpdDIoKTsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIGJh
c2VVUkwsIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgQVBJOjp0b1dlYkNvcmVVc2VyU3R5
bGVMZXZlbChsZXZlbCksIFt3ZWJWaWV3IF9wYWdlXS0+d2ViUGFnZUlEKCkgfSwgKnVzZXJDb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC03Miw3ICs4NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZToo
TlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluCiAgICAgLy8g
RklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxv
dyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hl
cmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIo
KTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVT
aGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBtYWtlVmVjdG9yPFN0
cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlz
dCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVz
ZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVy
YXRlVW5pcXVlVVJMKCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtl
VmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNv
cmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3Js
ZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg1LDcgKzk4LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JN
YWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0
LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmpl
Y3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkg
YmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmlu
ZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgbWFrZVZlY3RvcjxT
dHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xp
c3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1
c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCBiYXNlVVJMLCBtYWtlVmVjdG9yPFN0cmlu
Zz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJD
b250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkBAIC05OCw3ICsxMTEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbgogICAg
IC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwg
YmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4u
IHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNX
VEZTdHJpbmddKSB9LCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZl
Y3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6OnRv
V2ViQ29yZVVzZXJTdHlsZUxldmVsKGxldmVsKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3Jh
cHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7
IHNvdXJjZSwgYmFzZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1h
a2VWZWN0b3I8U3RyaW5nPihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgQVBJ
Ojp0b1dlYkNvcmVVc2VyU3R5bGVMZXZlbChsZXZlbCkgfSwgKnVzZXJDb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399428</attachid>
            <date>2020-05-14 17:03:37 -0700</date>
            <delta_ts>2020-05-14 17:33:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211926-20200514170337.patch</filename>
            <type>text/plain</type>
            <size>15936</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE2OTEyZWQ3OGY2OGI2
NDFkNTE2MDcyZTQ2YzgwOGJkMmIyZDk1NS4uMDA1ZTJjYjdhNGM4YmY5YThlYmY2MzJkMTEzODg3
MzZlNTlmNGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzZVVSTCB2
ZXJzaW9uIG9mIF9XS1VzZXJTdHlsZVNoZWV0IGZvcldLV2ViVmlldy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTkyNgorICAgICAgICByZGFyOi8v
cHJvYmxlbS82MjA3NDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKwor
ICAgICAgICBDb25zb2xpZGF0ZSB0aGUgcGF0aHMgdGFrZW4gZm9yIGFkZGluZyBhIFVzZXJTdHls
ZVNoZWV0LiBUaGUgbV9pbmplY3RlZFN0eWxlU2hlZXRUb1NvdXJjZQorICAgICAgICB3YXMgbWlz
c2luZyBmb3IgcGFnZSBzcGVjaWZpYyBzdHlsZSBzaGVldHMgc2luY2UgaXQgd2FzIGFub3RoZXIg
bG9vcC4KKworICAgICAgICAqIGRvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6Omlu
amVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvblN0eWxlU2hlZXRzOjpyZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6ZGV0YWNoRnJvbURvY3VtZW50KToK
KyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuaDoKKwogMjAyMC0wNS0xNCAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvdXJjZVVS
TCB0byBfZXZhbHVhdGVKYXZhU2NyaXB0OiBzbyB0aGUgc2NyaXB0cyBhcHBlYXIgaW4gV2ViIElu
c3BlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYzkwY2ViNmU3ZjE3OGVlZjZiZjJlODhiMGI5MDI5MTgyZjE2
ZTU2Ni4uMzY0NTVlYjI2N2UxMWI1M2MzNTQ0MzQ5ODAyMzFmNmIyZDM1Y2M4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNS0xNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2VVUkwgdmVyc2lvbiBvZiBfV0tVc2VyU3R5bGVT
aGVldCBmb3JXS1dlYlZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTE5MjYKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNjIwNzQ2NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5p
dFdpdGhTb3VyY2U6Zm9yV0tXZWJWaWV3OmZvck1haW5GcmFtZU9ubHk6YmFzZVVSTDpsZXZlbDp1
c2VyQ29udGVudFdvcmxkOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQg
aW5pdFdpdGhTb3VyY2U6Zm9yV0tXZWJWaWV3OmZvck1haW5GcmFtZU9ubHk6bGV2ZWw6dXNlckNv
bnRlbnRXb3JsZDpdKTogQ2xlYW4gdXAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgaW5pdGlhbGl6
ZXIuCisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5G
cmFtZU9ubHk6XSk6IERpdHRvLgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0
aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6
dXNlckNvbnRlbnRXb3JsZDpdKTogRGl0dG8uCisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0
IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJs
YWNrbGlzdDpiYXNlVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6IERpdHRvLgorICAgICAgICAoLVtf
V0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDpsZXZlbDp1c2VyQ29udGVudFdvcmxkOl0p
OiBEaXR0by4KKwogMjAyMC0wNS0xNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHNvdXJjZVVSTCB0byBfZXZhbHVhdGVKYXZhU2NyaXB0OiBzbyB0
aGUgc2NyaXB0cyBhcHBlYXIgaW4gV2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCmluZGV4IDgxNThlNTU5ZTUyNGNjZWQ1OTFkMTM3MDQ4
YWI1Mjk2YjFlM2M4YmIuLmMwYmJhNDI5OTBlNDc5OTZiMzIwNzkxMzk1NjdkZmQ3ZjgxNjJmNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcApAQCAtMTI3
LDEyICsxMjcsMTkgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGUoKSBjb25zdAogICAgIGlmICghb3duaW5nUGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBwYWdlU3BlY2lmaWNTdHlsZVNoZWV0IDogbV9w
YWdlU3BlY2lmaWNTdHlsZVNoZWV0cykgewotICAgICAgICBpZiAocGFnZVNwZWNpZmljU3R5bGVT
aGVldC0+Y29udGVudHMoKS5pc1VzZXJTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICBtX2luamVj
dGVkVXNlclN0eWxlU2hlZXRzLmFwcGVuZChwYWdlU3BlY2lmaWNTdHlsZVNoZWV0KTsKKyAgICBh
dXRvIGFkZFN0eWxlU2hlZXQgPSBbJl0oY29uc3QgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNo
ZWV0KSB7CisgICAgICAgIGF1dG8gc2hlZXQgPSBjcmVhdGVFeHRlbnNpb25zU3R5bGVTaGVldChj
b25zdF9jYXN0PERvY3VtZW50Jj4obV9kb2N1bWVudCksIHVzZXJTdHlsZVNoZWV0LnVybCgpLCB1
c2VyU3R5bGVTaGVldC5zb3VyY2UoKSwgdXNlclN0eWxlU2hlZXQubGV2ZWwoKSk7CisKKyAgICAg
ICAgbV9pbmplY3RlZFN0eWxlU2hlZXRUb1NvdXJjZS5zZXQoc2hlZXQuY29weVJlZigpLCB1c2Vy
U3R5bGVTaGVldC5zb3VyY2UoKSk7CisKKyAgICAgICAgaWYgKHNoZWV0LT5jb250ZW50cygpLmlz
VXNlclN0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIG1faW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMu
YXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9pbmpl
Y3RlZEF1dGhvclN0eWxlU2hlZXRzLmFwcGVuZChwYWdlU3BlY2lmaWNTdHlsZVNoZWV0KTsKLSAg
ICB9CisgICAgICAgICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKFdURk1v
dmUoc2hlZXQpKTsKKyAgICB9OworCisgICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVl
dCA6IG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMpCisgICAgICAgIGFkZFN0eWxlU2hlZXQodXNl
clN0eWxlU2hlZXQpOwogCiAgICAgb3duaW5nUGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZv
ckVhY2hVc2VyU3R5bGVTaGVldChbJl0oY29uc3QgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNo
ZWV0KSB7CiAgICAgICAgIGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkKQEAgLTE0NCwyOCAr
MTUxLDIwIEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUluamVjdGVkU3R5bGVT
aGVldENhY2hlKCkgY29uc3QKICAgICAgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50LnVybCgpLCB1c2VyU3R5bGVTaGVldC53aGl0ZWxpc3Qo
KSwgdXNlclN0eWxlU2hlZXQuYmxhY2tsaXN0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGF1dG8gc2hlZXQgPSBjcmVhdGVFeHRlbnNpb25zU3R5bGVTaGVldChjb25zdF9jYXN0
PERvY3VtZW50Jj4obV9kb2N1bWVudCksIHVzZXJTdHlsZVNoZWV0LnVybCgpLCB1c2VyU3R5bGVT
aGVldC5zb3VyY2UoKSwgdXNlclN0eWxlU2hlZXQubGV2ZWwoKSk7Ci0KLSAgICAgICAgbV9pbmpl
Y3RlZFN0eWxlU2hlZXRUb1NvdXJjZS5zZXQoc2hlZXQuY29weVJlZigpLCB1c2VyU3R5bGVTaGVl
dC5zb3VyY2UoKSk7Ci0KLSAgICAgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmxldmVsKCkgPT0gVXNl
clN0eWxlVXNlckxldmVsKQotICAgICAgICAgICAgbV9pbmplY3RlZFVzZXJTdHlsZVNoZWV0cy5h
cHBlbmQoV1RGTW92ZShzaGVldCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2luamVj
dGVkQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKKyAgICAgICAgYWRk
U3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9u
U3R5bGVTaGVldHM6OmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KGNvbnN0IFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBhdXRvIHNoZWV0ID0gY3JlYXRlRXh0
ZW5zaW9uc1N0eWxlU2hlZXQoY29uc3RfY2FzdDxEb2N1bWVudCY+KG1fZG9jdW1lbnQpLCB1c2Vy
U3R5bGVTaGVldC51cmwoKSwgdXNlclN0eWxlU2hlZXQuc291cmNlKCksIHVzZXJTdHlsZVNoZWV0
LmxldmVsKCkpOwotICAgIG1fcGFnZVNwZWNpZmljU3R5bGVTaGVldHMuYXBwZW5kKFdURk1vdmUo
c2hlZXQpKTsKKyAgICBtX3BhZ2VTcGVjaWZpY1N0eWxlU2hlZXRzLmFwcGVuZCh1c2VyU3R5bGVT
aGVldCk7CiAgICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CiB9CiAKIHZv
aWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnJlbW92ZVBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0
KGNvbnN0IFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBib29sIHJlbW92
ZWRTdHlsZVNoZWV0ID0gbV9wYWdlU3BlY2lmaWNTdHlsZVNoZWV0cy5yZW1vdmVGaXJzdE1hdGNo
aW5nKFt1c2VyU3R5bGVTaGVldF0oYXV0byYgY3NzU3R5bGVTaGVldCkgewotICAgICAgICByZXR1
cm4gY3NzU3R5bGVTaGVldC0+Y29udGVudHMoKS5vcmlnaW5hbFVSTCgpID09IHVzZXJTdHlsZVNo
ZWV0LnVybCgpOworICAgIGJvb2wgcmVtb3ZlZFN0eWxlU2hlZXQgPSBtX3BhZ2VTcGVjaWZpY1N0
eWxlU2hlZXRzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIHN0eWxlU2hlZXQp
IHsKKyAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQudXJsKCkgPT0gdXNlclN0eWxlU2hlZXQudXJs
KCk7CiAgICAgfSk7CiAKICAgICBpZiAocmVtb3ZlZFN0eWxlU2hlZXQpCkBAIC0yMzcsOCArMjM2
LDYgQEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6ZGV0YWNoRnJvbURvY3VtZW50KCkKICAg
ICAgICAgc2hlZXQtPmRldGFjaEZyb21Eb2N1bWVudCgpOwogICAgIGZvciAoYXV0byYgc2hlZXQg
OiBtX2F1dGhvclN0eWxlU2hlZXRzRm9yVGVzdGluZykKICAgICAgICAgc2hlZXQtPmRldGFjaEZy
b21Eb2N1bWVudCgpOwotICAgIGZvciAoYXV0byYgc2hlZXQgOiBtX3BhZ2VTcGVjaWZpY1N0eWxl
U2hlZXRzKQotICAgICAgICBzaGVldC0+ZGV0YWNoRnJvbURvY3VtZW50KCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmgKaW5kZXggZDkzNDRiNjA1Nzhk
M2M2NWI3ZmJiNzViZDE5YmQ0Y2FjZDE1YTQ5Yi4uZGE4YjBhOTY4Y2Q4YWIxZDU3MzQ2ZDlkYjg2
Yzk5MDc5YzQ0MzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0
eWxlU2hlZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRz
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Niw3ICs0Nyw2IEBAIGNsYXNzIE5vZGU7
CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogY2xhc3MgU3R5
bGVTaGVldExpc3Q7Ci1jbGFzcyBVc2VyU3R5bGVTaGVldDsKIAogY2xhc3MgRXh0ZW5zaW9uU3R5
bGVTaGVldHMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTIsNyArOTIsNyBA
QCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV91c2VyU3R5
bGVTaGVldHM7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9hdXRob3JTdHls
ZVNoZWV0c0ZvclRlc3Rpbmc7Ci0gICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbV9w
YWdlU3BlY2lmaWNTdHlsZVNoZWV0czsKKyAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fcGFn
ZVNwZWNpZmljU3R5bGVTaGVldHM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fY29udGVudEV4dGVu
c2lvblNoZWV0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNDc4MGYwODM1ZGIyNTZjY2E4M2IzNGE2ZjgxNTM1
MWJhMDY2M2Y4NS4uNmZiMjY0ZjhmNDkxZDgwN2ExMjRkMGEwZGQwNmJhNDE4Y2M5YmRiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHls
ZVNoZWV0LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEy
KSwgaW9zKDEwLjApKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVP
bmx5IGxldmVsOihfV0tVc2VyU3R5bGVMZXZlbClsZXZlbCB1c2VyQ29udGVudFdvcmxkOihfV0tV
c2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGJhc2VVUkw6KE5TVVJM
ICopYmFzZVVSTCBsZXZlbDooX1dLVXNlclN0eWxlTGV2ZWwpbGV2ZWwgdXNlckNvbnRlbnRXb3Js
ZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClm
b3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxl
Z2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdh
Y3lCbGFja2xpc3QgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJD
b250ZW50V29ybGQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICop
c291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0
ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2ts
aXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGJhc2VVUkw6KE5TVVJM
ICopYmFzZVVSTCB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNv
bnRlbnRXb3JsZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilz
b3VyY2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRl
bGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xp
c3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lCbGFja2xpc3QgYmFzZVVSTDooTlNVUkwg
KiliYXNlVVJMIGxldmVsOihfV0tVc2VyU3R5bGVMZXZlbClsZXZlbCB1c2VyQ29udGVudFdvcmxk
OihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDQ0
MDU5YjllOGIyZjk1OTI0Mjg2YzAyZjg1OTQ2OTg4NmNkYWQ3YjkuLjIxMGEyNzNkZTI3MjQyZWVm
NTY3NzYwZmM5ODJhN2U3OGYyNDQwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTQ1LDcgKzQ1LDcgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWlu
RnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3
ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3Qg
Y29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/
CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVT
aGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIEFQSTo6VXNlclN0
eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5
ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1l
cywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdl
Q29udGVudFdvcmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OSw3ICs1OSwyMCBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvcldL
V2ViVmlldzooV0tXZWJWaWV3ICopd2ViVgogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3Qs
IHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVj
dCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBi
ZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6
Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCAgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgQVBJOjp0
b1dlYkNvcmVVc2VyU3R5bGVMZXZlbChsZXZlbCksIFt3ZWJWaWV3IF9wYWdlXS0+d2ViUGFnZUlE
KCkgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwor
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgQVBJ
Ojp0b1dlYkNvcmVVc2VyU3R5bGVMZXZlbChsZXZlbCksIFt3ZWJWaWV3IF9wYWdlXS0+d2ViUGFn
ZUlEKCkgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQp
OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJj
ZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZv
ck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBiYXNlVVJMOihOU1VSTCAqKWJh
c2VVUkwgbGV2ZWw6KF9XS1VzZXJTdHlsZUxldmVsKWxldmVsIHVzZXJDb250ZW50V29ybGQ6KF9X
S1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogSW4g
dGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0
aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQg
dGhpcyByZWFsbHkgYmU/CisgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOworCisgICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxm
LCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgYmFzZVVSTCwgeyB9LCB7IH0sIGZv
ck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzLCBBUEk6OnRvV2ViQ29yZVVzZXJTdHlsZUxldmVsKGxldmVsKSwgW3dl
YlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTcyLDcgKzg1
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBm
b3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0
ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpP
YmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFs
bHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxp
c3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25s
eSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFt
ZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdElu
V3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVl
dCB7IHNvdXJjZSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgbWFr
ZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeVdoaXRlbGlzdCksIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdh
Y3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtODUsNyArOTgsNyBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wp
Zm9yTWFpbgogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJh
dGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMg
ZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6Oklu
aXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RG
OjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3Jp
Z2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVs
aXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9u
bHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9j
b250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJ
bldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hl
ZXQgeyBzb3VyY2UsIGJhc2VVUkwsIG1ha2VWZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3Qp
LCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk4LDcg
KzExMSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3Vy
Y2UgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluCiAgICAgLy8gRklYTUU6IEluIHRoZSBB
UEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQ
STo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMg
cmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RG
OjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIG1ha2VW
ZWN0b3I8U3RyaW5nPihsZWdhY3lXaGl0ZWxpc3QpLCBtYWtlVmVjdG9yPFN0cmluZz4obGVnYWN5
QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2
ZWwobGV2ZWwpIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxl
U2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCBiYXNlVVJMLCBt
YWtlVmVjdG9yPFN0cmluZz4obGVnYWN5V2hpdGVsaXN0KSwgbWFrZVZlY3RvcjxTdHJpbmc+KGxl
Z2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6OnRvV2ViQ29yZVVzZXJTdHls
ZUxldmVsKGxldmVsKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRl
bnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>