<?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>181423</bug_id>
          
          <creation_ts>2018-01-08 18:44:41 -0800</creation_ts>
          <short_desc>Merge sync and async code paths for getting context menus</short_desc>
          <delta_ts>2018-01-16 13:58:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>181564</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1387060</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-08 18:44:41 -0800</bug_when>
    <thetext>Merge sync and async code paths for getting context menus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387064</commentid>
    <comment_count>1</comment_count>
      <attachid>330777</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-08 18:53:08 -0800</bug_when>
    <thetext>Created attachment 330777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387065</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-08 18:53:34 -0800</bug_when>
    <thetext>Could someone double check that context menus on linux work as before?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387067</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-08 18:56:42 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387085</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-08 19:41:37 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Could someone double check that context menus on linux work as before?

I can look at it tomorrow, sure.

Note:

lib/libwebkit2gtk-4.0.so.37.26.1: error: undefined reference to &apos;WebKit::WebContextMenuListenerProxy::useContextMenuItems(WTF::Vector&lt;WTF::Ref&lt;WebKit::WebContextMenuItem, WTF::DumbPtrTraits&lt;WebKit::WebContextMenuItem&gt; &gt;, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;&amp;)&apos;
lib/libwebkit2gtk-4.0.so.37.26.1: error: undefined reference to &apos;WebKit::WebContextMenuListenerProxy::WebContextMenuListenerProxy(WebKit::WebContextMenuProxy*)&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387114</commentid>
    <comment_count>5</comment_count>
      <attachid>330794</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-08 22:15:05 -0800</bug_when>
    <thetext>Created attachment 330794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387294</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-09 09:23:08 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Could someone double check that context menus on linux work as before?

Yes, they&apos;re working fine!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388026</commentid>
    <comment_count>7</comment_count>
      <attachid>330794</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-01-10 19:22:29 -0800</bug_when>
    <thetext>Comment on attachment 330794
Patch

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

r=me

&gt; Source/WebKit/UIProcess/API/glib/WebKitContextMenuClient.cpp:51
&gt;          webkitWebViewPopulateContextMenu(m_webView, menuItems, hitTestResultData, variant.get());
&gt; -        return true;
&gt; +        contextMenuListener.useContextMenuItems({ });

So Glib does something special in `webkitWebViewPopulateContextMenu` instead of passing the new items to `contextMenuListener.useContextMenuItems`? I&apos;m surprised this always passes an empty list to useContextMenuItems.

Edit: Oh I think I see, gtk/WebContextMenuProxyGtk.cpp calls this with a mostly stub WebContextMenuListenerProxy, since WebContextMenuProxyGtk::showContextMenuWithItems does nothing (and which you just removed). I suppose it could be a real WebContextMenuListenerProxy that does the webkitWebViewPopulateContextMenu call instead of happening here in the client? Seems like it would amount to doing the same thing in the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388330</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-11 11:23:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/r226789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388331</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-11 11:24:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/36444419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388403</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-11 13:15:49 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/226794/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388534</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 16:13:25 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 181564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388536</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-11 16:14:15 -0800</bug_when>
    <thetext>This broke API tests 
  WebKit.ContextMenuImgWithVideo
  _WKDownload.RedirectedDownload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389735</commentid>
    <comment_count>13</comment_count>
      <attachid>330794</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-16 13:52:44 -0800</bug_when>
    <thetext>Comment on attachment 330794
Patch

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

&gt; Source/WebKit/UIProcess/API/APIContextMenuClient.h:54
&gt; +    virtual void getContextMenuFromProposedMenu(WebKit::WebPageProxy&amp;, Vector&lt;Ref&lt;WebKit::WebContextMenuItem&gt;&gt;&amp;&amp; /* proposedMenu */, WebKit::WebContextMenuListenerProxy&amp; listener, const WebKit::WebHitTestResultData&amp;, API::Object* /* userData */) { listener.useContextMenuItems({ }); }

This broke the tests.  Instead of calling the listener with an empty list, I needed to move proposedMenu into the listener.  Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389736</commentid>
    <comment_count>14</comment_count>
      <attachid>331427</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-16 13:52:58 -0800</bug_when>
    <thetext>Created attachment 331427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389738</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-16 13:58:50 -0800</bug_when>
    <thetext>http://trac.webkit.org/r227001</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330777</attachid>
            <date>2018-01-08 18:53:08 -0800</date>
            <delta_ts>2018-01-08 22:15:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181423-20180108185307.patch</filename>
            <type>text/plain</type>
            <size>17041</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY2MDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTAxLTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2Ugc3luYyBh
bmQgYXN5bmMgY29kZSBwYXRocyBmb3IgZ2V0dGluZyBjb250ZXh0IG1lbnVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE0MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGF0IGEgbWVzcy4gIFdlIGhh
ZCBhIGNvZGUgcGF0aCBmb3IgYXN5bmNocm9ub3VzIGNvbnRleHQgbWVudSBnZW5lcmF0aW9uIGFu
ZCBhIGRpZmZlcmVudCBvbmUgZm9yIHN5bmNocm9ub3VzIGNvbnRleHQgbWVudSBnZW5lcmF0aW9u
LgorICAgICAgICBUaGlzIG1ha2VzIGl0IHNvIHRoZXJlIGlzIGp1c3Qgb25lLiAgQXQgdGhlIEFQ
SSBsZXZlbCB3ZSBzZWUgaWYgdGhlcmUgaXMgYW4gYXN5bmNocm9ub3VzIGRlbGVnYXRlIHRvIGNh
bGwsIHRoZW4gc3luY2hyb25vdXMuCisgICAgICAgIFRoZXJlIGlzIGEgc3VidGxlIHRoZW9yZXRp
Y2FsIGNoYW5nZSBpbiBiZWhhdmlvdXIgYmVjYXVzZSBtX3BhZ2UuY29udGV4dE1lbnVDbGllbnQo
KS5zaG93Q29udGV4dE1lbnUgaXMgbm93IGNhbGxlZCBmb3IgdGhlIGFzeW5jaHJvbm91cworICAg
ICAgICBjYXNlIGFuZCBpdCB3YXNuJ3QgYmVmb3JlLCBidXQgdGhlIG9uZSBDIEFQSSBjbGllbnQg
dGhhdCB1c2VzIHRoaXMgaGFzIG51bGxwdHIgYXMgaXQncyBXS1BhZ2VTaG93Q29udGV4dE1lbnVD
YWxsYmFjaywgc28gd2Ugd29uJ3QgYnJlYWsgYW55dGhpbmchCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51
Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAoQVBJOjpD
b250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0
azo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dD
b250ZXh0TWVudVdpdGhJdGVtcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4
dE1lbnVXaXRoSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFj
OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViQ29udGV4dE1l
bnVQcm94eVdQRS5oOgorCiAyMDE4LTAxLTA4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI2NTMyIGFu
ZCByMjI2NTQwLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRN
ZW51UHJveHkuaAkocmV2aXNpb24gMjI2NjAyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29udGV4dE1lbnVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51
SXRlbT4+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMo
VmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICBXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNl
ckRhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVu
dUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiAyMjYzNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKKyNpbmNsdWRlICJXZWJD
b250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHku
aCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgPFdlYktpdC9X
S0Jhc2UuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgSW50UG9pbnQ7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtOwogY2xhc3MgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIH0KQEAgLTUxLDggKzUxLDcgQEAgY2xh
c3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRleHRNZW51
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6Oldl
YkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUgKi8sIFZlY3RvcjxSZWY8V2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9tTWVudSAqLywgY29uc3QgV2ViS2l0OjpX
ZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgV2ViS2l0OjpXZWJDb250
ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRh
JiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mJiAvKiBwcm9w
b3NlZE1lbnUgKi8sIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5JiBsaXN0ZW5l
ciwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0KiAvKiB1
c2VyRGF0YSAqLykgeyBsaXN0ZW5lci51c2VDb250ZXh0TWVudUl0ZW1zKHsgfSk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtPj4mKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4
dE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjYzNjkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MTgsMTMgKzgxOCwyOSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVu
dChXS1BhCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgZ2V0Q29udGV4
dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJl
ZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFZlY3Rv
cjxSZWY8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgY3VzdG9tTWVudSwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
KFdlYlBhZ2VQcm94eSYgcGFnZSwgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRl
bT4+JiYgcHJvcG9zZWRNZW51VmVjdG9yLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51TGlzdGVuZXJQ
cm94eSYgY29udGV4dE1lbnVMaXN0ZW5lciwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhp
dFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAobV9jbGllbnQuYmFzZS52ZXJzaW9uID49IDQgJiYgbV9jbGllbnQuZ2V0Q29udGV4dE1l
bnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7CisgICAgICAgICAgICAgICAgcHJvcG9z
ZWRNZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQorICAgICAgICAgICAgICAgICAgICBwcm9w
b3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gd2ViSGl0VGVzdFJlc3VsdCA9IEFQSTo6SGl0
VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKKyAgICAgICAgICAgICAgICBt
X2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyh0b0FQSSgmcGFnZSks
IHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkucHRy
KCkpLCB0b0FQSSgmY29udGV4dE1lbnVMaXN0ZW5lciksIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQu
cHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSAmJiAhbV9j
bGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjApIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudUxpc3RlbmVyLnVzZUNvbnRleHRNZW51
SXRlbXMoV1RGTW92ZShwcm9wb3NlZE1lbnVWZWN0b3IpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNp
b24gPj0gMiAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNl
LnZlcnNpb24gPj0gMiAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
KSB7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnVMaXN0ZW5lci51c2VDb250ZXh0TWVudUl0
ZW1zKFdURk1vdmUocHJvcG9zZWRNZW51VmVjdG9yKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0
Pj4gcHJvcG9zZWRNZW51SXRlbXM7CiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwpAQCAtODQxLDkg
Kzg1Nyw5IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKIAogICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01l
bnUpKTsKIAotICAgICAgICAgICAgY3VzdG9tTWVudS5jbGVhcigpOwotCisgICAgICAgICAgICBW
ZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+IGN1c3RvbU1lbnU7CiAgICAgICAgICAgICBz
aXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUoKSA6IDA7CisgICAgICAgICAgICBj
dXN0b21NZW51LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmV3U2l6ZSk7CiAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewogICAgICAgICAgICAgICAgIFdl
YkNvbnRleHRNZW51SXRlbSogaXRlbSA9IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+KGkp
OwogICAgICAgICAgICAgICAgIGlmICghaXRlbSkgewpAQCAtODUxLDI3ICs4NjcsMTAgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBjdXN0b21N
ZW51LmFwcGVuZCgqaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS51bmNoZWNrZWRB
cHBlbmQoKml0ZW0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
QXN5bmMoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUxpc3RlbmVyUHJveHkqIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQuYmFzZS52ZXJzaW9uIDwgNCB8
fCAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6
T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7Ci0gICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVt
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwotCi0g
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9y
KQotICAgICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChtZW51
SXRlbS5wdHIoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IHdl
YkhpdFRlc3RSZXN1bHQgPSBBUEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0
RGF0YSk7Ci0gICAgICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1l
bnVBc3luYyh0b0FQSSgmcGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHBy
b3Bvc2VkTWVudUl0ZW1zKSkucHRyKCkpLCB0b0FQSShjb250ZXh0TWVudUxpc3RlbmVyKSwgdG9B
UEkod2ViSGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBj
b250ZXh0TWVudUxpc3RlbmVyLnVzZUNvbnRleHRNZW51SXRlbXMoV1RGTW92ZShjdXN0b21NZW51
KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bURhdGEpIG92ZXJyaWRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiAy
MjYzNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0
TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dShXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JiBw
cm9wb3NlZE1lbnUsIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mLCBjb25zdCBXZWJI
aXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSkgb3ZlcnJpZGUKKyAgICB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQ
YWdlUHJveHkmLCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mJiBwcm9w
b3NlZE1lbnUsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5JiBjb250ZXh0TWVu
dUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQ7CiAgICAgICAgIGlmICh1c2VyRGF0YSkgewpAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBwcm9wb3NlZE1lbnUpCiAg
ICAgICAgICAgICBtZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKGl0ZW0tPmRhdGEoKSk7CiAgICAg
ICAgIHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KG1fd2ViVmlldywgbWVudUl0ZW1z
LCBoaXRUZXN0UmVzdWx0RGF0YSwgdmFyaWFudC5nZXQoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBjb250ZXh0TWVudUxpc3RlbmVyLnVzZUNvbnRleHRNZW51SXRlbXMoeyB9KTsK
ICAgICB9CiAKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3Bw
CShyZXZpc2lvbiAyMjY2MDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29u
dGV4dE1lbnVQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxNCArMTQ5LDExIEBA
IHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvdygpCiAgICAgICAgICAgICBwcm9wb3Nl
ZEFQSUl0ZW1zLmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVtKSk7CiAgICAg
fQogCi0gICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVtczsKLSAg
ICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwotCi0gICAgaWYgKG1fcGFnZS0+Y29udGV4
dE1lbnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoKm1fcGFnZSwgcHJv
cG9zZWRBUElJdGVtcywgY2xpZW50SXRlbXMsIG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0RGF0
YSgpLCBtX3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1fdXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKSkKLSAgICAgICAgdXNlUHJvcG9zZWRJdGVtcyA9IGZhbHNlOwot
Ci0gICAgY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYgaXRlbXMgPSB1c2VQ
cm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6IGNsaWVudEl0ZW1zOworICAgIG1fcGFn
ZS0+Y29udGV4dE1lbnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoKm1f
cGFnZSwgV1RGTW92ZShwcm9wb3NlZEFQSUl0ZW1zKSwgV2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5OjpjcmVhdGUodGhpcykuZ2V0KCksIG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgp
LCBtX3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1fdXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKK30KIAordm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYmIGl0
ZW1zKQorewogICAgIGlmICghaXRlbXMuaXNFbXB0eSgpKQogICAgICAgICBwb3B1bGF0ZShpdGVt
cyk7CiAKQEAgLTE3MSwxMiArMTY4LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpz
aG93KCkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gbV9wYWdlLT5jdXJy
ZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpOwogICAgIGNvbnN0IEdka0V2ZW50KiBldmVu
dCA9IG1vdXNlRXZlbnQgPyBtb3VzZUV2ZW50LT5uYXRpdmVFdmVudCgpIDogMDsKICAgICBndGtf
bWVudV9hdHRhY2hfdG9fd2lkZ2V0KG1fbWVudSwgR1RLX1dJREdFVChtX3dlYlZpZXcpLCBudWxs
cHRyKTsKLSAgICBndGtfbWVudV9wb3B1cChtX21lbnUsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8R3RrTWVudVBvc2l0aW9uRnVuYz4obWVudVBvc2l0aW9uRnVuY3Rpb24pLCB0
aGlzLAotICAgICAgICAgICAgICAgICAgIGV2ZW50ID8gZXZlbnQtPmJ1dHRvbi5idXR0b24gOiAz
LCBldmVudCA/IGV2ZW50LT5idXR0b24udGltZSA6IEdES19DVVJSRU5UX1RJTUUpOwotfQotCi12
b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25z
dCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JikKLXsKKyAgICBndGtfbWVudV9wb3B1
cChtX21lbnUsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R3RrTWVudVBvc2l0
aW9uRnVuYz4obWVudVBvc2l0aW9uRnVuY3Rpb24pLCB0aGlzLCBldmVudCA/IGV2ZW50LT5idXR0
b24uYnV0dG9uIDogMywgZXZlbnQgPyBldmVudC0+YnV0dG9uLnRpbWUgOiBHREtfQ1VSUkVOVF9U
SU1FKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0azo6V2ViQ29udGV4dE1lbnVQcm94eUd0
ayhHdGtXaWRnZXQqIHdlYlZpZXcsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
aAkocmV2aXNpb24gMjI2NjAyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRNZW51UHJveHlHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiwgV2Vi
UGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgc2hvdygpIG92ZXJyaWRlOwotICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0
ZW1zKGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51
SXRlbT4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKEdNZW51KiwgY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtR2xpYiYpOwogICAgIEdSZWZQdHI8R01lbnU+IGJ1aWxkTWVudShjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4mKTsKICAgICB2b2lkIHBvcHVsYXRlKGNvbnN0
IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAkocmV2aXNp
b24gMjI2NjAyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51
UHJveHlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKIAogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwotICAgIHZvaWQgc2hvd0NvbnRl
eHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8UmVmPFdl
YkNvbnRleHRNZW51SXRlbT4+JiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpCiAgICAgdm9pZCBjbGVhclNlcnZpY2VzTWVudSgpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHJl
dmlzaW9uIDIyNjYwMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsOCArNDUxLDE0IEBAIFJldGFp
blB0cjxOU01lbnVJdGVtPiBXZWJDb250ZXh0TWVudVByb3gKICAgICB9CiB9CiAKLXZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3Rv
cjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVu
dUl0ZW0+PiYmIGl0ZW1zKQogeworICAgIGlmIChtX3BhZ2UuY29udGV4dE1lbnVDbGllbnQoKS5z
aG93Q29udGV4dE1lbnUobV9wYWdlLCBtX2NvbnRleHQubWVudUxvY2F0aW9uKCksIGl0ZW1zKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRhdGE7CiAgICAgZGF0
YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGl0ZW1zLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBp
dGVtIDogaXRlbXMpCkBAIC00NzgsOSArNDg0LDYgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
TWFjOjpzaG93Q29udGV4dAogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fY29udGV4dC5tZW51SXRl
bXMoKSkKICAgICAgICAgcHJvcG9zZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUoaXRlbSkpOwogCi0gICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBj
bGllbnRJdGVtczsKLSAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwotCiAgICAgaWYg
KG1fY29udGV4dE1lbnVMaXN0ZW5lcikgewogICAgICAgICBtX2NvbnRleHRNZW51TGlzdGVuZXIt
PmludmFsaWRhdGUoKTsKICAgICAgICAgbV9jb250ZXh0TWVudUxpc3RlbmVyID0gbnVsbHB0cjsK
QEAgLTQ4OCwyMiArNDkxLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29u
dGV4dAogCiAgICAgbV9jb250ZXh0TWVudUxpc3RlbmVyID0gV2ViQ29udGV4dE1lbnVMaXN0ZW5l
clByb3h5OjpjcmVhdGUodGhpcyk7CiAKLSAgICBpZiAobV9wYWdlLmNvbnRleHRNZW51Q2xpZW50
KCkuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMobV9wYWdlLCBwcm9wb3NlZEFQ
SUl0ZW1zLCBtX2NvbnRleHRNZW51TGlzdGVuZXIuZ2V0KCksIG1fY29udGV4dC53ZWJIaXRUZXN0
UmVzdWx0RGF0YSgpLCBtX3BhZ2UucHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
bV91c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
SVhNRTogR2V0IHJpZCBvZiB0aGVzZSB0d28gY2xpZW50IGNhbGxzIG9uY2Ugd2UgZG9uJ3QgbmVl
ZCB0byBzdXBwb3J0IHRoZSBDIFNQSS4KLSAgICBpZiAobV9wYWdlLmNvbnRleHRNZW51Q2xpZW50
KCkuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KG1fcGFnZSwgcHJvcG9zZWRBUElJdGVt
cywgY2xpZW50SXRlbXMsIG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBtX3BhZ2Uu
cHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobV91c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpKQotICAgICAgICB1c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7Ci0KLSAgICBpZiAobV9w
YWdlLmNvbnRleHRNZW51Q2xpZW50KCkuc2hvd0NvbnRleHRNZW51KG1fcGFnZSwgbV9jb250ZXh0
Lm1lbnVMb2NhdGlvbigpLCB1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6IGNs
aWVudEl0ZW1zKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYmIGl0ZW1zID0gV1RGTW92
ZSh1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6IGNsaWVudEl0ZW1zKTsKLSAg
ICAKLSAgICBpZiAoaXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoaXRlbXMpOworICAgIG1fcGFnZS5jb250ZXh0TWVudUNsaWVu
dCgpLmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShtX3BhZ2UsIFdURk1vdmUocHJvcG9z
ZWRBUElJdGVtcyksICptX2NvbnRleHRNZW51TGlzdGVuZXIsIG1fY29udGV4dC53ZWJIaXRUZXN0
UmVzdWx0RGF0YSgpLCBtX3BhZ2UucHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
bV91c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiBOU1dpbmRvdyAqV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6d2luZG93KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJveHlXUEUuaAkocmV2aXNpb24gMjI2NjAy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJveHlXUEUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlXUEUoV1RGTW92ZShjb250ZXh0KSwg
dXNlckRhdGEpKTsKICAgICB9CiAKLSAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhj
b25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JikgZmluYWwgeyB9CisgICAgdm9p
ZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+
PiYmKSBmaW5hbCB7IH0KICAgICB2b2lkIHNob3coKSBmaW5hbCB7IH07CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330794</attachid>
            <date>2018-01-08 22:15:05 -0800</date>
            <delta_ts>2018-01-16 13:52:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181423-20180108221504.patch</filename>
            <type>text/plain</type>
            <size>18130</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY2MTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTAxLTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2Ugc3luYyBh
bmQgYXN5bmMgY29kZSBwYXRocyBmb3IgZ2V0dGluZyBjb250ZXh0IG1lbnVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE0MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGF0IGEgbWVzcy4gIFdlIGhh
ZCBhIGNvZGUgcGF0aCBmb3IgYXN5bmNocm9ub3VzIGNvbnRleHQgbWVudSBnZW5lcmF0aW9uIGFu
ZCBhIGRpZmZlcmVudCBvbmUgZm9yIHN5bmNocm9ub3VzIGNvbnRleHQgbWVudSBnZW5lcmF0aW9u
LgorICAgICAgICBUaGlzIG1ha2VzIGl0IHNvIHRoZXJlIGlzIGp1c3Qgb25lLiAgQXQgdGhlIEFQ
SSBsZXZlbCB3ZSBzZWUgaWYgdGhlcmUgaXMgYW4gYXN5bmNocm9ub3VzIGRlbGVnYXRlIHRvIGNh
bGwsIHRoZW4gc3luY2hyb25vdXMuCisgICAgICAgIFRoZXJlIGlzIGEgc3VidGxlIHRoZW9yZXRp
Y2FsIGNoYW5nZSBpbiBiZWhhdmlvdXIgYmVjYXVzZSBtX3BhZ2UuY29udGV4dE1lbnVDbGllbnQo
KS5zaG93Q29udGV4dE1lbnUgaXMgbm93IGNhbGxlZCBmb3IgdGhlIGFzeW5jaHJvbm91cworICAg
ICAgICBjYXNlIGFuZCBpdCB3YXNuJ3QgYmVmb3JlLCBidXQgdGhlIG9uZSBDIEFQSSBjbGllbnQg
dGhhdCB1c2VzIHRoaXMgaGFzIG51bGxwdHIgYXMgaXQncyBXS1BhZ2VTaG93Q29udGV4dE1lbnVD
YWxsYmFjaywgc28gd2Ugd29uJ3QgYnJlYWsgYW55dGhpbmchCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51
Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAoQVBJOjpD
b250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0
azo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dD
b250ZXh0TWVudVdpdGhJdGVtcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4
dE1lbnVXaXRoSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFj
OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViQ29udGV4dE1l
bnVQcm94eVdQRS5oOgorCiAyMDE4LTAxLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSBl
eHBvc2luZyBXZWJQcm9jZXNzIGNyYXNoIHJlYXNvbgpJbmRleDogU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAyMjY2MTIpCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAgc2V0KFdlYktpdF9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuY3BwCisgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHlD
bGllbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDIyNjYxMikK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE2
OCw3ICsxNjgsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgVUlQcm9jZXNz
L0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9Q
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJDb250
ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4
dE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNv
bnRleHRNZW51UHJveHkuaAkocmV2aXNpb24gMjI2NjEyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRl
eHRNZW51SXRlbT4+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRo
SXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYmKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICBXZWJDb250ZXh0TWVudVByb3h5KENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29u
c3QgVXNlckRhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZXh0TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiAyMjY2MTIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKKyNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUxpc3RlbmVy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgPFdl
YktpdC9XS0Jhc2UuaD4KQEAgLTQwLDcgKzQxLDYgQEAgY2xhc3MgSW50UG9pbnQ7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtOwogY2xhc3MgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIH0KQEAgLTUxLDggKzUxLDcg
QEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRl
eHRNZW51Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVjdG9yPFJlZjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUgKi8sIFZlY3RvcjxSZWY8
V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgLyogY3VzdG9tTWVudSAqLywgY29uc3QgV2Vi
S2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJv
cG9zZWRNZW51QXN5bmMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdl
YktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIC8qIHByb3Bvc2VkTWVudSAqLywgV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkqLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mJiAv
KiBwcm9wb3NlZE1lbnUgKi8sIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5JiBs
aXN0ZW5lciwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0
KiAvKiB1c2VyRGF0YSAqLykgeyBsaXN0ZW5lci51c2VDb250ZXh0TWVudUl0ZW1zKHsgfSk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtPj4mKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoaWRl
Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjY2
MTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MTgsMTMgKzgxOCwyOSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVu
dUNsaWVudChXS1BhCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgVmVj
dG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBwcm9wb3NlZE1lbnVWZWN0b3Is
IFZlY3RvcjxSZWY8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgY3VzdG9tTWVudSwgY29u
c3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRN
ZW51SXRlbT4+JiYgcHJvcG9zZWRNZW51VmVjdG9yLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51TGlz
dGVuZXJQcm94eSYgY29udGV4dE1lbnVMaXN0ZW5lciwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERh
dGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJv
cG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBpZiAobV9jbGllbnQuYmFzZS52ZXJzaW9uID49IDQgJiYgbV9jbGllbnQuZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7CisgICAgICAgICAgICAgICAg
cHJvcG9zZWRNZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0
b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9yKQorICAgICAgICAgICAgICAgICAg
ICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0ucHRyKCkpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gd2ViSGl0VGVzdFJlc3VsdCA9IEFQ
STo6SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVBc3luYyh0b0FQSSgm
cGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHByb3Bvc2VkTWVudUl0ZW1z
KSkucHRyKCkpLCB0b0FQSSgmY29udGV4dE1lbnVMaXN0ZW5lciksIHRvQVBJKHdlYkhpdFRlc3RS
ZXN1bHQucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSAm
JiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjApIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudUxpc3RlbmVyLnVzZUNvbnRl
eHRNZW51SXRlbXMoV1RGTW92ZShwcm9wb3NlZE1lbnVWZWN0b3IpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNl
LnZlcnNpb24gPj0gMiAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtX2NsaWVu
dC5iYXNlLnZlcnNpb24gPj0gMiAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51KSB7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnVMaXN0ZW5lci51c2VDb250ZXh0
TWVudUl0ZW1zKFdURk1vdmUocHJvcG9zZWRNZW51VmVjdG9yKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6
T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7CiAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVt
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwpAQCAt
ODQxLDkgKzg1Nyw5IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEK
IAogICAgICAgICAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gYWRvcHRSZWYodG9JbXBs
KG5ld01lbnUpKTsKIAotICAgICAgICAgICAgY3VzdG9tTWVudS5jbGVhcigpOwotCisgICAgICAg
ICAgICBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+IGN1c3RvbU1lbnU7CiAgICAgICAg
ICAgICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUoKSA6IDA7CisgICAgICAg
ICAgICBjdXN0b21NZW51LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmV3U2l6ZSk7CiAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewogICAgICAgICAgICAg
ICAgIFdlYkNvbnRleHRNZW51SXRlbSogaXRlbSA9IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0
ZW0+KGkpOwogICAgICAgICAgICAgICAgIGlmICghaXRlbSkgewpAQCAtODUxLDI3ICs4NjcsMTAg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBj
dXN0b21NZW51LmFwcGVuZCgqaXRlbSk7CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS51bmNo
ZWNrZWRBcHBlbmQoKml0ZW0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51QXN5bmMoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtPj4mIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250
ZXh0TWVudUxpc3RlbmVyUHJveHkqIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRl
c3RSZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQuYmFzZS52ZXJzaW9u
IDwgNCB8fCAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7Ci0gICAgICAgICAgICBwcm9wb3NlZE1l
bnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkp
OwotCi0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51
VmVjdG9yKQotICAgICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVu
ZChtZW51SXRlbS5wdHIoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1
bHQ+IHdlYkhpdFRlc3RSZXN1bHQgPSBBUEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0
UmVzdWx0RGF0YSk7Ci0gICAgICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnVBc3luYyh0b0FQSSgmcGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkucHRyKCkpLCB0b0FQSShjb250ZXh0TWVudUxpc3RlbmVy
KSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBjb250ZXh0TWVudUxpc3RlbmVyLnVzZUNvbnRleHRNZW51SXRlbXMoV1RGTW92ZShjdXN0
b21NZW51KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0
YSYgaXRlbURhdGEpIG92ZXJyaWRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZp
c2lvbiAyMjY2MTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRD
b250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudShXZWJQYWdlUHJveHkmLCBjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRl
bT4+JiBwcm9wb3NlZE1lbnUsIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mLCBjb25z
dCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dShXZWJQYWdlUHJveHkmLCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4m
JiBwcm9wb3NlZE1lbnUsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5JiBjb250
ZXh0TWVudUxpc3RlbmVyLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3Vs
dERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdS
ZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQ7CiAgICAgICAgIGlmICh1c2VyRGF0YSkgewpAQCAtNDgs
NyArNDgsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBwcm9wb3NlZE1l
bnUpCiAgICAgICAgICAgICBtZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKGl0ZW0tPmRhdGEoKSk7
CiAgICAgICAgIHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KG1fd2ViVmlldywgbWVu
dUl0ZW1zLCBoaXRUZXN0UmVzdWx0RGF0YSwgdmFyaWFudC5nZXQoKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBjb250ZXh0TWVudUxpc3RlbmVyLnVzZUNvbnRleHRNZW51SXRlbXMo
eyB9KTsKICAgICB9CiAKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlH
dGsuY3BwCShyZXZpc2lvbiAyMjY2MTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxNCArMTQ5
LDExIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvdygpCiAgICAgICAgICAgICBw
cm9wb3NlZEFQSUl0ZW1zLmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVtKSk7
CiAgICAgfQogCi0gICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVt
czsKLSAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwotCi0gICAgaWYgKG1fcGFnZS0+
Y29udGV4dE1lbnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoKm1fcGFn
ZSwgcHJvcG9zZWRBUElJdGVtcywgY2xpZW50SXRlbXMsIG1fY29udGV4dC53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpLCBtX3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1f
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKSkKLSAgICAgICAgdXNlUHJvcG9zZWRJdGVtcyA9IGZh
bHNlOwotCi0gICAgY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYgaXRlbXMg
PSB1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6IGNsaWVudEl0ZW1zOworICAg
IG1fcGFnZS0+Y29udGV4dE1lbnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1l
bnUoKm1fcGFnZSwgV1RGTW92ZShwcm9wb3NlZEFQSUl0ZW1zKSwgV2ViQ29udGV4dE1lbnVMaXN0
ZW5lclByb3h5OjpjcmVhdGUodGhpcykuZ2V0KCksIG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpLCBtX3BhZ2UtPnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1fdXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKK30KIAordm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3Rr
OjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+
PiYmIGl0ZW1zKQorewogICAgIGlmICghaXRlbXMuaXNFbXB0eSgpKQogICAgICAgICBwb3B1bGF0
ZShpdGVtcyk7CiAKQEAgLTE3MSwxMiArMTY4LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
R3RrOjpzaG93KCkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gbV9wYWdl
LT5jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpOwogICAgIGNvbnN0IEdka0V2ZW50
KiBldmVudCA9IG1vdXNlRXZlbnQgPyBtb3VzZUV2ZW50LT5uYXRpdmVFdmVudCgpIDogMDsKICAg
ICBndGtfbWVudV9hdHRhY2hfdG9fd2lkZ2V0KG1fbWVudSwgR1RLX1dJREdFVChtX3dlYlZpZXcp
LCBudWxscHRyKTsKLSAgICBndGtfbWVudV9wb3B1cChtX21lbnUsIG51bGxwdHIsIG51bGxwdHIs
IHJlaW50ZXJwcmV0X2Nhc3Q8R3RrTWVudVBvc2l0aW9uRnVuYz4obWVudVBvc2l0aW9uRnVuY3Rp
b24pLCB0aGlzLAotICAgICAgICAgICAgICAgICAgIGV2ZW50ID8gZXZlbnQtPmJ1dHRvbi5idXR0
b24gOiAzLCBldmVudCA/IGV2ZW50LT5idXR0b24udGltZSA6IEdES19DVVJSRU5UX1RJTUUpOwot
fQotCi12b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dDb250ZXh0TWVudVdpdGhJdGVt
cyhjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JikKLXsKKyAgICBndGtfbWVu
dV9wb3B1cChtX21lbnUsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R3RrTWVu
dVBvc2l0aW9uRnVuYz4obWVudVBvc2l0aW9uRnVuY3Rpb24pLCB0aGlzLCBldmVudCA/IGV2ZW50
LT5idXR0b24uYnV0dG9uIDogMywgZXZlbnQgPyBldmVudC0+YnV0dG9uLnRpbWUgOiBHREtfQ1VS
UkVOVF9USU1FKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0azo6V2ViQ29udGV4dE1lbnVQ
cm94eUd0ayhHdGtXaWRnZXQqIHdlYlZpZXcsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1l
bnVDb250ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJv
eHlHdGsuaAkocmV2aXNpb24gMjI2NjEyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0
KiwgV2ViUGFnZVByb3h5JiwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmLCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgc2hvdygpIG92ZXJyaWRlOwotICAgIHZvaWQgc2hvd0NvbnRleHRNZW51
V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8UmVmPFdlYkNvbnRl
eHRNZW51SXRlbT4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwZW5kKEdNZW51KiwgY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtR2xpYiYpOwogICAgIEdSZWZQdHI8R01lbnU+IGJ1aWxkTWVudShj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4mKTsKICAgICB2b2lkIHBvcHVsYXRl
KGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaAko
cmV2aXNpb24gMjI2NjEyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRl
eHRNZW51UHJveHlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlNYWMoKTsKIAogICAgIHZvaWQgY29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwotICAgIHZvaWQgc2hv
d0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVt
Pj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8
UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpCiAgICAgdm9pZCBjbGVhclNlcnZpY2VzTWVudSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
bW0JKHJldmlzaW9uIDIyNjYxMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsOCArNDUxLDE0IEBA
IFJldGFpblB0cjxOU01lbnVJdGVtPiBXZWJDb250ZXh0TWVudVByb3gKICAgICB9CiB9CiAKLXZv
aWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGNvbnN0
IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIGl0ZW1zKQordm9pZCBXZWJDb250ZXh0
TWVudVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250
ZXh0TWVudUl0ZW0+PiYmIGl0ZW1zKQogeworICAgIGlmIChtX3BhZ2UuY29udGV4dE1lbnVDbGll
bnQoKS5zaG93Q29udGV4dE1lbnUobV9wYWdlLCBtX2NvbnRleHQubWVudUxvY2F0aW9uKCksIGl0
ZW1zKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRhdGE7CiAg
ICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGl0ZW1zLnNpemUoKSk7CiAgICAgZm9yIChh
dXRvJiBpdGVtIDogaXRlbXMpCkBAIC00NzgsOSArNDg0LDYgQEAgdm9pZCBXZWJDb250ZXh0TWVu
dVByb3h5TWFjOjpzaG93Q29udGV4dAogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fY29udGV4dC5t
ZW51SXRlbXMoKSkKICAgICAgICAgcHJvcG9zZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1l
bnVJdGVtOjpjcmVhdGUoaXRlbSkpOwogCi0gICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0
ZW0+PiBjbGllbnRJdGVtczsKLSAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOwotCiAg
ICAgaWYgKG1fY29udGV4dE1lbnVMaXN0ZW5lcikgewogICAgICAgICBtX2NvbnRleHRNZW51TGlz
dGVuZXItPmludmFsaWRhdGUoKTsKICAgICAgICAgbV9jb250ZXh0TWVudUxpc3RlbmVyID0gbnVs
bHB0cjsKQEAgLTQ4OCwyMiArNDkxLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpz
aG93Q29udGV4dAogCiAgICAgbV9jb250ZXh0TWVudUxpc3RlbmVyID0gV2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5OjpjcmVhdGUodGhpcyk7CiAKLSAgICBpZiAobV9wYWdlLmNvbnRleHRNZW51
Q2xpZW50KCkuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMobV9wYWdlLCBwcm9w
b3NlZEFQSUl0ZW1zLCBtX2NvbnRleHRNZW51TGlzdGVuZXIuZ2V0KCksIG1fY29udGV4dC53ZWJI
aXRUZXN0UmVzdWx0RGF0YSgpLCBtX3BhZ2UucHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHMobV91c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGVzZSB0d28gY2xpZW50IGNhbGxzIG9uY2Ugd2UgZG9u
J3QgbmVlZCB0byBzdXBwb3J0IHRoZSBDIFNQSS4KLSAgICBpZiAobV9wYWdlLmNvbnRleHRNZW51
Q2xpZW50KCkuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KG1fcGFnZSwgcHJvcG9zZWRB
UElJdGVtcywgY2xpZW50SXRlbXMsIG1fY29udGV4dC53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBt
X3BhZ2UucHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobV91c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpKQotICAgICAgICB1c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7Ci0KLSAgICBp
ZiAobV9wYWdlLmNvbnRleHRNZW51Q2xpZW50KCkuc2hvd0NvbnRleHRNZW51KG1fcGFnZSwgbV9j
b250ZXh0Lm1lbnVMb2NhdGlvbigpLCB1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVt
cyA6IGNsaWVudEl0ZW1zKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYmIGl0ZW1zID0g
V1RGTW92ZSh1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRBUElJdGVtcyA6IGNsaWVudEl0ZW1z
KTsKLSAgICAKLSAgICBpZiAoaXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoaXRlbXMpOworICAgIG1fcGFnZS5jb250ZXh0TWVu
dUNsaWVudCgpLmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShtX3BhZ2UsIFdURk1vdmUo
cHJvcG9zZWRBUElJdGVtcyksICptX2NvbnRleHRNZW51TGlzdGVuZXIsIG1fY29udGV4dC53ZWJI
aXRUZXN0UmVzdWx0RGF0YSgpLCBtX3BhZ2UucHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHMobV91c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiBOU1dpbmRvdyAqV2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6d2luZG93KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJveHlXUEUuaAkocmV2aXNpb24g
MjI2NjEyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYkNvbnRleHRNZW51UHJv
eHlXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51UHJveHlXUEUoV1RGTW92ZShjb250
ZXh0KSwgdXNlckRhdGEpKTsKICAgICB9CiAKLSAgICB2b2lkIHNob3dDb250ZXh0TWVudVdpdGhJ
dGVtcyhjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVu
dUl0ZW0+PiYmKSBmaW5hbCB7IH0KICAgICB2b2lkIHNob3coKSBmaW5hbCB7IH07CiAKIHByaXZh
dGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331427</attachid>
            <date>2018-01-16 13:52:58 -0800</date>
            <delta_ts>2018-01-16 13:58:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181423-20180116135257.patch</filename>
            <type>text/plain</type>
            <size>18131</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY5OTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTAxLTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2Ugc3luYyBh
bmQgYXN5bmMgY29kZSBwYXRocyBmb3IgZ2V0dGluZyBjb250ZXh0IG1lbnVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE0MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGF0IGEgbWVzcy4gIFdlIGhh
ZCBhIGNvZGUgcGF0aCBmb3IgYXN5bmNocm9ub3VzIGNvbnRleHQgbWVudSBnZW5lcmF0aW9uIGFu
ZCBhIGRpZmZlcmVudCBvbmUgZm9yIHN5bmNocm9ub3VzIGNvbnRleHQgbWVudSBnZW5lcmF0aW9u
LgorICAgICAgICBUaGlzIG1ha2VzIGl0IHNvIHRoZXJlIGlzIGp1c3Qgb25lLiAgQXQgdGhlIEFQ
SSBsZXZlbCB3ZSBzZWUgaWYgdGhlcmUgaXMgYW4gYXN5bmNocm9ub3VzIGRlbGVnYXRlIHRvIGNh
bGwsIHRoZW4gc3luY2hyb25vdXMuCisgICAgICAgIFRoZXJlIGlzIGEgc3VidGxlIHRoZW9yZXRp
Y2FsIGNoYW5nZSBpbiBiZWhhdmlvdXIgYmVjYXVzZSBtX3BhZ2UuY29udGV4dE1lbnVDbGllbnQo
KS5zaG93Q29udGV4dE1lbnUgaXMgbm93IGNhbGxlZCBmb3IgdGhlIGFzeW5jaHJvbm91cworICAg
ICAgICBjYXNlIGFuZCBpdCB3YXNuJ3QgYmVmb3JlLCBidXQgdGhlIG9uZSBDIEFQSSBjbGllbnQg
dGhhdCB1c2VzIHRoaXMgaGFzIG51bGxwdHIgYXMgaXQncyBXS1BhZ2VTaG93Q29udGV4dE1lbnVD
YWxsYmFjaywgc28gd2Ugd29uJ3QgYnJlYWsgYW55dGhpbmchCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51
Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAoQVBJOjpD
b250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmMpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0
azo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dD
b250ZXh0TWVudVdpdGhJdGVtcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzaG93Q29udGV4
dE1lbnVXaXRoSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFj
OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViQ29udGV4dE1l
bnVQcm94eVdQRS5oOgorCiAyMDE4LTAxLTE2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBEb24ndCBsaW5rIFdlYktpdCB0YXJnZXQgZGlyZWN0
bHkgdG8gSmF2YVNjcmlwdENvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI2
OTk1KQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzEyLDYgKzMxMiw3IEBAIHNldChXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJDb250
ZXh0Q2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorICAg
IFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNz
L1dlYkNvbnRleHRNZW51UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmNwcApJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMjY5OTUpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDYg
QEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9IaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAKICAgICBVSVByb2Nlc3MvUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKLSAgICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0
ZW5lclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnku
Y3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51UHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVBy
b3h5LmgJKHJldmlzaW9uIDIyNjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNv
bnRleHRNZW51UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29udGV4dE1lbnVXaXRoSXRlbXMoY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+
PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3Rv
cjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2Vi
Q29udGV4dE1lbnVQcm94eShDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRh
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4
dE1lbnVDbGllbnQuaAkocmV2aXNpb24gMjI2OTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCisjaW5jbHVkZSAiV2ViQ29udGV4
dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdERhdGEuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+CkBAIC00MCw3ICs0MSw2IEBAIGNsYXNzIEludFBvaW50OwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKLWNsYXNzIFdlYkNvbnRleHRNZW51SXRlbTsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRl
bURhdGE7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiB9CkBAIC01MSw4ICs1MSw3IEBAIGNsYXNzIENv
bnRleHRNZW51Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVu
dCgpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW0+PiYgLyogcHJvcG9zZWRNZW51ICovLCBWZWN0b3I8UmVmPFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtPj4mIC8qIGN1c3RvbU1lbnUgKi8sIGNvbnN0IFdlYktpdDo6V2ViSGl0
VGVzdFJlc3VsdERhdGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFz
eW5jKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbT4+JiAvKiBwcm9wb3NlZE1lbnUgKi8sIFdlYktpdDo6V2ViQ29udGV4dE1l
bnVMaXN0ZW5lclByb3h5KiwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQ
STo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiYgcHJvcG9zZWRNZW51
LCBXZWJLaXQ6OldlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eSYgbGlzdGVuZXIsIGNvbnN0IFdl
YktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8p
IHsgbGlzdGVuZXIudXNlQ29udGV4dE1lbnVJdGVtcyhXVEZNb3ZlKHByb3Bvc2VkTWVudSkpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikgeyB9
CiAgICAgdmlydHVhbCBib29sIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbT4+JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGlk
ZUNvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjI2
OTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODE4LDEzICs4MTgsMjkgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1l
bnVDbGllbnQoV0tQYQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFZl
Y3RvcjxSZWY8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgcHJvcG9zZWRNZW51VmVjdG9y
LCBWZWN0b3I8UmVmPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtPj4mIGN1c3RvbU1lbnUsIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudShXZWJQYWdlUHJveHkmIHBhZ2UsIFZlY3RvcjxSZWY8V2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW0+PiYmIHByb3Bvc2VkTWVudVZlY3RvciwgV2ViS2l0OjpXZWJDb250ZXh0TWVudUxp
c3RlbmVyUHJveHkmIGNvbnRleHRNZW51TGlzdGVuZXIsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHRE
YXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVBy
b3Bvc2VkTWVudSAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSA0ICYmIG1fY2xpZW50LmdldENv
bnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKSB7CisgICAgICAgICAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHByb3Bvc2VkTWVudUl0ZW1zOworICAgICAgICAgICAgICAg
IHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocHJvcG9zZWRNZW51VmVj
dG9yLnNpemUoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZlY3RvcikKKyAgICAgICAgICAgICAgICAg
ICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKG1lbnVJdGVtLnB0cigpKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhdXRvIHdlYkhpdFRlc3RSZXN1bHQgPSBB
UEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0YSk7CisgICAgICAgICAg
ICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51QXN5bmModG9BUEko
JnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShwcm9wb3NlZE1lbnVJdGVt
cykpLnB0cigpKSwgdG9BUEkoJmNvbnRleHRNZW51TGlzdGVuZXIpLCB0b0FQSSh3ZWJIaXRUZXN0
UmVzdWx0LnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUg
JiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKSB7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnVMaXN0ZW5lci51c2VDb250
ZXh0TWVudUl0ZW1zKFdURk1vdmUocHJvcG9zZWRNZW51VmVjdG9yKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobV9jbGllbnQuYmFz
ZS52ZXJzaW9uID49IDIgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAobV9jbGll
bnQuYmFzZS52ZXJzaW9uID49IDIgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudSkgeworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51TGlzdGVuZXIudXNlQ29udGV4
dE1lbnVJdGVtcyhXVEZNb3ZlKHByb3Bvc2VkTWVudVZlY3RvcikpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6
Ok9iamVjdD4+IHByb3Bvc2VkTWVudUl0ZW1zOwogICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRl
bXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6ZSgpKTsKQEAg
LTg0MSw5ICs4NTcsOSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1Bh
CiAKICAgICAgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1w
bChuZXdNZW51KSk7CiAKLSAgICAgICAgICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKLQorICAgICAg
ICAgICAgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjdXN0b21NZW51OwogICAgICAg
ICAgICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOworICAgICAg
ICAgICAgY3VzdG9tTWVudS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5ld1NpemUpOwogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdTaXplOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBXZWJDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJ
dGVtPihpKTsKICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHsKQEAgLTg1MSwyNyArODY3LDEw
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGEKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Y3VzdG9tTWVudS5hcHBlbmQoKml0ZW0pOworICAgICAgICAgICAgICAgIGN1c3RvbU1lbnUudW5j
aGVja2VkQXBwZW5kKCppdGVtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudUFzeW5jKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6
OldlYkNvbnRleHRNZW51SXRlbT4+JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVMaXN0ZW5lclByb3h5KiBjb250ZXh0TWVudUxpc3RlbmVyLCBjb25zdCBXZWJIaXRU
ZXN0UmVzdWx0RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lv
biA8IDQgfHwgIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+IHByb3Bvc2VkTWVudUl0ZW1zOwotICAgICAgICAgICAgcHJvcG9zZWRN
ZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6ZSgp
KTsKLQotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVu
dVZlY3RvcikKLSAgICAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBl
bmQobWVudUl0ZW0ucHRyKCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8QVBJOjpIaXRUZXN0UmVz
dWx0PiB3ZWJIaXRUZXN0UmVzdWx0ID0gQVBJOjpIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVz
dFJlc3VsdERhdGEpOwotICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJv
cG9zZWRNZW51QXN5bmModG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RG
TW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLnB0cigpKSwgdG9BUEkoY29udGV4dE1lbnVMaXN0ZW5l
ciksIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgY29udGV4dE1lbnVMaXN0ZW5lci51c2VDb250ZXh0TWVudUl0ZW1zKFdURk1vdmUoY3Vz
dG9tTWVudSkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBjdXN0b21Db250ZXh0TWVudUl0
ZW1TZWxlY3RlZChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmIGl0ZW1EYXRhKSBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAkocmV2
aXNpb24gMjI2OTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q29udGV4dE1lbnVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUoV2ViUGFnZVByb3h5JiwgY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0
ZW0+PiYgcHJvcG9zZWRNZW51LCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JiwgY29u
c3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCisgICAgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1l
bnUoV2ViUGFnZVByb3h5JiwgVmVjdG9yPFJlZjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+
JiYgcHJvcG9zZWRNZW51LCBXZWJLaXQ6OldlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eSYgY29u
dGV4dE1lbnVMaXN0ZW5lciwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1
bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBH
UmVmUHRyPEdWYXJpYW50PiB2YXJpYW50OwogICAgICAgICBpZiAodXNlckRhdGEpIHsKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogcHJvcG9zZWRN
ZW51KQogICAgICAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChpdGVtLT5kYXRhKCkp
OwogICAgICAgICB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShtX3dlYlZpZXcsIG1l
bnVJdGVtcywgaGl0VGVzdFJlc3VsdERhdGEsIHZhcmlhbnQuZ2V0KCkpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgY29udGV4dE1lbnVMaXN0ZW5lci51c2VDb250ZXh0TWVudUl0ZW1z
KHsgfSk7CiAgICAgfQogCiAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5
R3RrLmNwcAkocmV2aXNpb24gMjI2OTk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTQgKzE0
OSwxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3coKQogICAgICAgICAgICAg
cHJvcG9zZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbSkp
OwogICAgIH0KIAotICAgIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4gY2xpZW50SXRl
bXM7Ci0gICAgYm9vbCB1c2VQcm9wb3NlZEl0ZW1zID0gdHJ1ZTsKLQotICAgIGlmIChtX3BhZ2Ut
PmNvbnRleHRNZW51Q2xpZW50KCkuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KCptX3Bh
Z2UsIHByb3Bvc2VkQVBJSXRlbXMsIGNsaWVudEl0ZW1zLCBtX2NvbnRleHQud2ViSGl0VGVzdFJl
c3VsdERhdGEoKSwgbV9wYWdlLT5wcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyht
X3VzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSkpCi0gICAgICAgIHVzZVByb3Bvc2VkSXRlbXMgPSBm
YWxzZTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIGl0ZW1z
ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkQVBJSXRlbXMgOiBjbGllbnRJdGVtczsKKyAg
ICBtX3BhZ2UtPmNvbnRleHRNZW51Q2xpZW50KCkuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51KCptX3BhZ2UsIFdURk1vdmUocHJvcG9zZWRBUElJdGVtcyksIFdlYkNvbnRleHRNZW51TGlz
dGVuZXJQcm94eTo6Y3JlYXRlKHRoaXMpLmdldCgpLCBtX2NvbnRleHQud2ViSGl0VGVzdFJlc3Vs
dERhdGEoKSwgbV9wYWdlLT5wcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtX3Vz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Cit9CiAKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVt
Pj4mJiBpdGVtcykKK3sKICAgICBpZiAoIWl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcG9wdWxh
dGUoaXRlbXMpOwogCkBAIC0xNzEsMTIgKzE2OCw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94
eUd0azo6c2hvdygpCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudCogbW91c2VFdmVudCA9IG1fcGFn
ZS0+Y3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKTsKICAgICBjb25zdCBHZGtFdmVu
dCogZXZlbnQgPSBtb3VzZUV2ZW50ID8gbW91c2VFdmVudC0+bmF0aXZlRXZlbnQoKSA6IDA7CiAg
ICAgZ3RrX21lbnVfYXR0YWNoX3RvX3dpZGdldChtX21lbnUsIEdUS19XSURHRVQobV93ZWJWaWV3
KSwgbnVsbHB0cik7Ci0gICAgZ3RrX21lbnVfcG9wdXAobV9tZW51LCBudWxscHRyLCBudWxscHRy
LCByZWludGVycHJldF9jYXN0PEd0a01lbnVQb3NpdGlvbkZ1bmM+KG1lbnVQb3NpdGlvbkZ1bmN0
aW9uKSwgdGhpcywKLSAgICAgICAgICAgICAgICAgICBldmVudCA/IGV2ZW50LT5idXR0b24uYnV0
dG9uIDogMywgZXZlbnQgPyBldmVudC0+YnV0dG9uLnRpbWUgOiBHREtfQ1VSUkVOVF9USU1FKTsK
LX0KLQotdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29udGV4dE1lbnVXaXRoSXRl
bXMoY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYpCi17CisgICAgZ3RrX21l
bnVfcG9wdXAobV9tZW51LCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEd0a01l
bnVQb3NpdGlvbkZ1bmM+KG1lbnVQb3NpdGlvbkZ1bmN0aW9uKSwgdGhpcywgZXZlbnQgPyBldmVu
dC0+YnV0dG9uLmJ1dHRvbiA6IDMsIGV2ZW50ID8gZXZlbnQtPmJ1dHRvbi50aW1lIDogR0RLX0NV
UlJFTlRfVElNRSk7CiB9CiAKIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51
UHJveHlHdGsoR3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRN
ZW51Q29udGV4dERhdGEmJiBjb250ZXh0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVBy
b3h5R3RrLmgJKHJldmlzaW9uIDIyNjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdl
dCosIFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIHNob3coKSBvdmVycmlkZTsKLSAgICB2b2lkIHNob3dDb250ZXh0TWVu
dVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250
ZXh0TWVudUl0ZW0+PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGVuZChHTWVudSosIGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbUdsaWImKTsKICAgICBHUmVmUHRyPEdNZW51PiBidWlsZE1lbnUo
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+Jik7CiAgICAgdm9pZCBwb3B1bGF0
ZShjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+Jik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgJ
KHJldmlzaW9uIDIyNjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWVudVByb3h5TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIH5XZWJDb250ZXh0TWVudVByb3h5TWFjKCk7CiAKICAgICB2b2lkIGNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKLSAgICB2b2lkIHNo
b3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRl
bT4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9y
PFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tCShyZXZpc2lvbiAyMjY5OTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUxLDggKzQ1MSwxNCBA
QCBSZXRhaW5QdHI8TlNNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVQcm94CiAgICAgfQogfQogCi12
b2lkIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhjb25z
dCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+JiBpdGVtcykKK3ZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29u
dGV4dE1lbnVJdGVtPj4mJiBpdGVtcykKIHsKKyAgICBpZiAobV9wYWdlLmNvbnRleHRNZW51Q2xp
ZW50KCkuc2hvd0NvbnRleHRNZW51KG1fcGFnZSwgbV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpLCBp
dGVtcykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpdGVtcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBkYXRhOwog
ICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpdGVtcy5zaXplKCkpOwogICAgIGZvciAo
YXV0byYgaXRlbSA6IGl0ZW1zKQpAQCAtNDc4LDkgKzQ4NCw2IEBAIHZvaWQgV2ViQ29udGV4dE1l
bnVQcm94eU1hYzo6c2hvd0NvbnRleHQKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2NvbnRleHQu
bWVudUl0ZW1zKCkpCiAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdlYkNvbnRleHRN
ZW51SXRlbTo6Y3JlYXRlKGl0ZW0pKTsKIAotICAgIFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJ
dGVtPj4gY2xpZW50SXRlbXM7Ci0gICAgYm9vbCB1c2VQcm9wb3NlZEl0ZW1zID0gdHJ1ZTsKLQog
ICAgIGlmIChtX2NvbnRleHRNZW51TGlzdGVuZXIpIHsKICAgICAgICAgbV9jb250ZXh0TWVudUxp
c3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fY29udGV4dE1lbnVMaXN0ZW5lciA9IG51
bGxwdHI7CkBAIC00ODgsMjIgKzQ5MSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2hvd0NvbnRleHQKIAogICAgIG1fY29udGV4dE1lbnVMaXN0ZW5lciA9IFdlYkNvbnRleHRNZW51
TGlzdGVuZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogCi0gICAgaWYgKG1fcGFnZS5jb250ZXh0TWVu
dUNsaWVudCgpLmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudUFzeW5jKG1fcGFnZSwgcHJv
cG9zZWRBUElJdGVtcywgbV9jb250ZXh0TWVudUxpc3RlbmVyLmdldCgpLCBtX2NvbnRleHQud2Vi
SGl0VGVzdFJlc3VsdERhdGEoKSwgbV9wYWdlLnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKG1fdXNlckRhdGEub2JqZWN0KCkpLmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlc2UgdHdvIGNsaWVudCBjYWxscyBvbmNlIHdlIGRv
bid0IG5lZWQgdG8gc3VwcG9ydCB0aGUgQyBTUEkuCi0gICAgaWYgKG1fcGFnZS5jb250ZXh0TWVu
dUNsaWVudCgpLmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShtX3BhZ2UsIHByb3Bvc2Vk
QVBJSXRlbXMsIGNsaWVudEl0ZW1zLCBtX2NvbnRleHQud2ViSGl0VGVzdFJlc3VsdERhdGEoKSwg
bV9wYWdlLnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1fdXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKSkKLSAgICAgICAgdXNlUHJvcG9zZWRJdGVtcyA9IGZhbHNlOwotCi0gICAg
aWYgKG1fcGFnZS5jb250ZXh0TWVudUNsaWVudCgpLnNob3dDb250ZXh0TWVudShtX3BhZ2UsIG1f
Y29udGV4dC5tZW51TG9jYXRpb24oKSwgdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkQVBJSXRl
bXMgOiBjbGllbnRJdGVtcykpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mJiBpdGVtcyA9
IFdURk1vdmUodXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkQVBJSXRlbXMgOiBjbGllbnRJdGVt
cyk7Ci0gICAgCi0gICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKGl0ZW1zKTsKKyAgICBtX3BhZ2UuY29udGV4dE1l
bnVDbGllbnQoKS5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUobV9wYWdlLCBXVEZNb3Zl
KHByb3Bvc2VkQVBJSXRlbXMpLCAqbV9jb250ZXh0TWVudUxpc3RlbmVyLCBtX2NvbnRleHQud2Vi
SGl0VGVzdFJlc3VsdERhdGEoKSwgbV9wYWdlLnByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKG1fdXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogTlNXaW5kb3cgKldlYkNv
bnRleHRNZW51UHJveHlNYWM6OndpbmRvdygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93cGUvV2ViQ29udGV4dE1lbnVQcm94eVdQRS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJDb250ZXh0TWVudVByb3h5V1BFLmgJKHJldmlzaW9u
IDIyNjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJDb250ZXh0TWVudVBy
b3h5V1BFLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudVByb3h5V1BFKFdURk1vdmUoY29u
dGV4dCksIHVzZXJEYXRhKSk7CiAgICAgfQogCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnVXaXRo
SXRlbXMoY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYpIGZpbmFsIHsgfQor
ICAgIHZvaWQgc2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29udGV4dE1l
bnVJdGVtPj4mJikgZmluYWwgeyB9CiAgICAgdm9pZCBzaG93KCkgZmluYWwgeyB9OwogCiBwcml2
YXRlOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>