<?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>176562</bug_id>
          
          <creation_ts>2017-09-07 13:42:54 -0700</creation_ts>
          <short_desc>Clean up Geolocation request handling</short_desc>
          <delta_ts>2017-09-27 12:43:14 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346523</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 13:42:54 -0700</bug_when>
    <thetext>Clean up Geolocation request handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346526</commentid>
    <comment_count>1</comment_count>
      <attachid>320170</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 13:44:52 -0700</bug_when>
    <thetext>Created attachment 320170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346542</commentid>
    <comment_count>2</comment_count>
      <attachid>320178</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 14:14:34 -0700</bug_when>
    <thetext>Created attachment 320178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346544</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 14:15:49 -0700</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>1346546</commentid>
    <comment_count>4</comment_count>
      <attachid>320179</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 14:19:19 -0700</bug_when>
    <thetext>Created attachment 320179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346549</commentid>
    <comment_count>5</comment_count>
      <attachid>320181</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 14:25:55 -0700</bug_when>
    <thetext>Created attachment 320181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346554</commentid>
    <comment_count>6</comment_count>
      <attachid>320181</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-09-07 14:39:38 -0700</bug_when>
    <thetext>Comment on attachment 320181
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5827
&gt; +    completionHandler = m_uiClient-&gt;decidePolicyForGeolocationPermissionRequest(*this, *frame, origin.get(), WTFMove(completionHandler));
&gt; +#if PLATFORM(IOS)
&gt; +    if (completionHandler)
&gt; +        completionHandler = m_pageClient.decidePolicyForGeolocationPermissionRequest(*frame, origin.get(), WTFMove(completionHandler));
&gt; +#endif
&gt; +    if (completionHandler)
&gt; +        completionHandler(false);

This looks SO weird, but you explained it. Maybe a comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346563</commentid>
    <comment_count>7</comment_count>
      <attachid>320186</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 14:50:15 -0700</bug_when>
    <thetext>Created attachment 320186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346577</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 15:20:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221764</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347284</commentid>
    <comment_count>9</comment_count>
      <attachid>320186</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 14:35:20 -0700</bug_when>
    <thetext>Comment on attachment 320186
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        Instead of passing a GeolocationPermissionRequestProxy&amp; to each client and returning a bool if the request will be handled,
&gt; +        pass a Function&lt;void(bool)&gt;&amp;&amp; completionHandler and return the function if it won&apos;t be handled.
&gt; +        This allows to temporarily support our UIClient/PageClient hybrid design while moving towards a sane design.

Why &quot;return the function if it won’t be handled”?

Seems like we could just have it &quot;not null out the function if it won’t be handled&quot; or &quot;not move the function if it won’t be handled&quot;, which is the same thing. The return value seems unneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347285</commentid>
    <comment_count>10</comment_count>
      <attachid>320186</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 14:36:58 -0700</bug_when>
    <thetext>Comment on attachment 320186
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        This allows to temporarily support our UIClient/PageClient hybrid design while moving towards a sane design.
&gt; 
&gt; Why &quot;return the function if it won’t be handled”?
&gt; 
&gt; Seems like we could just have it &quot;not null out the function if it won’t be handled&quot; or &quot;not move the function if it won’t be handled&quot;, which is the same thing. The return value seems unneeded.

Then I think the argument turns into a:

    Function&lt;void(bool)&gt;&amp;

Because it’s not safe to pass in a new object and then not look at it afterward. Anyway, that’s better than both taking and returning a Function I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353622</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:43:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693823&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320170</attachid>
            <date>2017-09-07 13:44:52 -0700</date>
            <delta_ts>2017-09-07 14:14:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176562-20170907134446.patch</filename>
            <type>text/plain</type>
            <size>22384</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgR2Vv
bG9jYXRpb24gcmVxdWVzdCBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBwYXNzaW5nIGEgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5JiB0byBlYWNoIGNsaWVudCBhbmQgcmV0dXJuaW5nIGEgYm9vbCBpZiB0
aGUgcmVxdWVzdCB3aWxsIGJlIGhhbmRsZWQsCisgICAgICAgIHBhc3MgYSBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyIGFuZCByZXR1cm4gdGhlIGZ1bmN0aW9uIGlmIGl0
IHdvbid0IGJlIGhhbmRsZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIHRlbXBvcmFyaWx5IHN1
cHBvcnQgb3VyIFVJQ2xpZW50L1BhZ2VDbGllbnQgaHlicmlkIGRlc2lnbiB3aGlsZSBtb3Zpbmcg
dG93YXJkcyBhIHNhbmUgZGVzaWduLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGdW5j
dGlvbjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKToKKyAgICAg
ICAgKC1bV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG93XSk6
CisgICAgICAgICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgZGVueV0pOgorICAgICAg
ICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpyZXF1ZXN0OnZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ol0pOiBEZWxldGVkLgorCiAyMDE3LTA5LTA3ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICAgTW92ZSBtb3JlIGNvZGUgZnJvbSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRvIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMjIxNzAxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWFuYWdl
ci0+ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG1fZ2VvbG9jYXRpb25J
RCwgdHJ1ZSk7Ci0gICAgbV9tYW5hZ2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZGVueSgpCkBAIC01
MSwxMiArNTEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Ogog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24obV9nZW9sb2NhdGlvbklELCBmYWxzZSk7Ci0gICAgbV9tYW5h
Z2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9tYW5hZ2VyID0g
MDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHlfaAotI2RlZmluZSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSogbWFuYWdlciwgdWludDY0X3QgZ2VvbG9jYXRpb25JRCkKICAgICB7CkBAIC01MSw2ICs1MSwy
MiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fZ2VvbG9jYXRpb25JRDsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAorY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IGNyZWF0ZShGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGFsbG93KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdm9p
ZCBkZW55KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQogCi0jZW5kaWYgLy8gR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5X2gKK3ByaXZhdGU6CisgICAgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgeyB9CisgICAgCisgICAgRnVuY3Rpb248dm9pZChib29sKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjIxNzA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTAgKzE0MSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8g
RklYTUU6IEFkb3B0IHRoZSBXS1VJRGVsZWdhdGVQcml2YXRlIGNhbGxiYWNrIG9uIGlPUyBhbmQg
cmVtb3ZlIHRoaXMuCisgICAgdmlydHVhbCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQ
STo6U2VjdXJpdHlPcmlnaW4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpID0gMDsKKyNl
bmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZy
YW1lKCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKCkgeyB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyMjE3NDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODExLDE0ICs1ODExLDIwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXIKICAgICAvLyBGSVhNRTogR2VvbG9jYXRp
b24gc2hvdWxkIHByb2JhYmx5IGJlIHVzaW5nIHRvU3RyaW5nKCkgYXMgaXRzIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBpbnN0ZWFkIG9mIGRhdGFiYXNlSWRlbnRpZmllcigpLgogICAgIGF1dG8gb3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgYXV0byByZXF1ZXN0ID0gbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcmVhdGVSZXF1ZXN0KGdlb2xvY2F0aW9uSUQpOwotCi0gICAgaWYgKG1fdWlDbGllbnQtPmRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMsICpmcmFtZSwg
b3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KG1fcGFnZUNsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KCpmcmFtZSwgb3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgcmVxdWVzdC0+ZGVueSgpOworICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyID0gW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXShib29sIGFsbG93ZWQpIHsK
KyAgICAgICAgaWYgKGFsbG93ZWQpCisgICAgICAgICAgICByZXF1ZXN0LT5hbGxvdygpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXF1ZXN0LT5kZW55KCk7CisgICAgfTsKKworICAgIGNv
bXBsZXRpb25IYW5kbGVyID0gbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgKmZyYW1lLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKGNvbXBsZXRpb25I
YW5kbGVyKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IG1fcGFnZUNsaWVudC5kZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgb3JpZ2luLmdldCgp
LCByZXF1ZXN0LmdldCgpKTsKKyNlbmRpZgorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShy
ZXZpc2lvbiAyMjE3NDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBzdHJ1Y3QgV2luZG93RmVhdHVy
ZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5hdGl2
ZVdlYldoZWVsRXZlbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKQEAg
LTEyNyw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJ1bk9w
ZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMqLCBX
ZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2Vj
dXJpdHlPcmlnaW4mLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5T3Jp
Z2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBXZWJL
aXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAy
MjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OworY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKIGNs
YXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgVXNlck1lZGlhUGVybWlz
c2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OwpA
QCAtMTMxLDcgKzEzMSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSGFuZGxlUmVmLCBB
UEkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSW5mb1JlZiwgQVBJOjpGcmFtZUluZm8pCiBX
S19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKIFdLX0FERF9BUElf
TUFQUElORyhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiwgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVm
LCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCitXS19BRERfQVBJX01BUFBJTkco
V0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiwgV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0hpdFRlc3RSZXN1bHRS
ZWYsIEFQSTo6SGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0ljb25EYXRhYmFz
ZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJ
KEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOwogfQogCiB2b2lkIFdLR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFJlZiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjE3NDMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUzLDEzICsxOTUzLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgZmlu
YWwKKyAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRv
QVBJKCZmcmFtZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQSSgmcGVybWlzc2lvblJlcXVlc3QpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgZmluYWwKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShyZXZpc2lv
biAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGFnZUNsb3NlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpIG92ZXJyaWRlOworICAgIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2Vi
RnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0JKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM3LDEwICsyMzcsMTAgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tcGxldGVTeW50aGV0aQogICAgIFttX2NvbnRlbnRW
aWV3IF9kaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrXTsKIH0KIAotYm9vbCBQYWdlQ2xpZW50SW1w
bDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpCitGdW5jdGlvbjx2b2lkKGJvb2wpPiBQYWdlQ2xp
ZW50SW1wbDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJG
cmFtZVByb3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFtbd3JhcHBlcihtX3dlYlZp
ZXctPl9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkgX2dlb2xvY2F0aW9uUHJvdmlkZXJd
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46b3JpZ2luLnNlY3Vy
aXR5T3JpZ2luKCkgZnJhbWU6ZnJhbWUgcmVxdWVzdDpyZXF1ZXN0IHZpZXc6bV93ZWJWaWV3XTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICBbW3dyYXBwZXIobV93ZWJWaWV3LT5fcGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkpIF9nZW9sb2NhdGlvblByb3ZpZGVyXSBkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOm9yaWdpbi5zZWN1cml0eU9yaWdpbigpIGZyYW1l
OmZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOldURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIHZpZXc6
bV93ZWJWaWV3XTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShyZXZpc2lvbiAyMjE3MDEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw2IEBAIHN0cnVjdCBIaWdobGlnaHQ7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3Mg
V2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgJKHJl
dmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLQmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKIH0KQEAgLTQyLDcgKzQxLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIDogTlNPYmplY3QKIC0oaWQp
aW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2w7
Ci0tKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBmcmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5
JilmcmFtZSByZXF1ZXN0OihXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eSYpcGVybWlzc2lvblJlcXVlc3QgdmlldzooV0tXZWJWaWV3Kil2aWV3OworLSh2b2lkKWRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdlYktpdDo6V2ViRnJhbWVQcm94eSYpZnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6KFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxl
ciB2aWV3OihXS1dlYlZpZXcqKXZpZXc7CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0JKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJ
U2VjdXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIu
aCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogI2ltcG9y
dCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tHZW9sb2NhdGlvbk1hbmFnZXIu
aCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgpAQCAtNjcsNyArNjYsNyBAQCBA
aW50ZXJmYWNlIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgCiBAZW5kCiAKIEBpbnRlcmZh
Y2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFsbG93RGVueVBv
bGljeUxpc3RlbmVyPgotLSAoaWQpaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5OihSZWZQ
dHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYmKXBlcm1pc3Npb25SZXF1ZXN0
UHJveHk7CistIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWRlbnlPbmx5VGhpc1JlcXVl
c3QgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQ7CiBAZW5kCiAKQEAgLTgzLDcgKzgyLDcgQEAgc3Rh
dGljIGlubGluZSBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogc3RydWN0IEdlb2xvY2F0aW9u
UmVxdWVzdERhdGEgewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwogICAgIFJl
ZlB0cjxXZWJGcmFtZVByb3h5PiBmcmFtZTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5PiBwZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHZp
ZXc7CiB9OwogCkBAIC0xNjgsMTMgKzE2NywxMyBAQCAtKGlkKWluaXRXaXRoUHJvY2Vzc1Bvb2w6
KFdlYlByb2Nlc3NQb29sCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0odm9pZClkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihTZWN1cml0eU9yaWdpbiYpb3JpZ2lu
IGZyYW1lOihXZWJGcmFtZVByb3h5JilmcmFtZSByZXF1ZXN0OihHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHkmKXBlcm1pc3Npb25SZXF1ZXN0IHZpZXc6KFdLV2ViVmlldyopY29udGVu
dFZpZXcKKy0odm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2lu
OihTZWN1cml0eU9yaWdpbiYpb3JpZ2luIGZyYW1lOihXZWJGcmFtZVByb3h5JilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjooV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5k
bGVyIHZpZXc6KFdLV2ViVmlldyopY29udGVudFZpZXcKIHsKICAgICAvLyBTdGVwIDE6IGFzayB0
aGUgdXNlciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCiAgICAgR2VvbG9jYXRpb25S
ZXF1ZXN0RGF0YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhOwogICAgIGdlb2xvY2F0aW9uUmVxdWVz
dERhdGEub3JpZ2luID0gJm9yaWdpbjsKICAgICBnZW9sb2NhdGlvblJlcXVlc3REYXRhLmZyYW1l
ID0gJmZyYW1lOwotICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEucGVybWlzc2lvblJlcXVlc3Qg
PSAmcGVybWlzc2lvblJlcXVlc3Q7CisgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5jb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGdlb2xvY2F0aW9u
UmVxdWVzdERhdGEudmlldyA9IGNvbnRlbnRWaWV3OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JD
b3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChnZW9sb2NhdGlvblJlcXVlc3REYXRhKTsK
ICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25dOwpAQCAtMTg5LDcgKzE4OCw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
R3JhbnRlZAogewogICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoZSB0aGlzIHBhcnRp
Y3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCiAgICAgVmVjdG9yPEdlb2xvY2F0aW9uUmVx
dWVzdERhdGE+IHJlcXVlc3RzID0gV1RGTW92ZShfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0
aW9uQXV0aG9yaXphdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZXF1ZXN0IDogcmVxdWVz
dHMpIHsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewogICAgICAgICBib29s
IHJlcXVpcmVzVXNlckF1dGhvcml6YXRpb24gPSB0cnVlOwogCiAgICAgICAgIGlkPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4+KFtyZXF1ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwpAQCAtMjAwLDExICsxOTksOCBAQCAt
ICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgICAgIFt1aURl
bGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKSByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVj
aXNpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3JlcXVlc3Qs
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAg
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBpZiAoYXV0aG9yaXpl
ZCkKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5wZXJtaXNzaW9uUmVxdWVzdC0+YWxsb3co
KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucGVy
bWlzc2lvblJlcXVlc3QtPmRlbnkoKTsKICAgICAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRpb25I
YW5kbGVyKGF1dGhvcml6ZWQpCiAgICAgICAgICAgICB9KS5nZXQoKV07CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTIyMSwxMCArMjE3LDEwIEBAIC0gKHZvaWQpZ2VvbG9jYXRp
b25BdXRob3JpemF0aW9uR3JhbnRlZAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlcXVpcmVz
VXNlckF1dGhvcml6YXRpb24pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxXS1dlYkFsbG93RGVu
eVBvbGljeUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXS1dlYkFsbG93RGVu
eVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6cmVx
dWVzdC5wZXJtaXNzaW9uUmVxdWVzdC5nZXQoKV0pOworICAgICAgICAgICAgUmV0YWluUHRyPFdL
V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+IHBvbGljeUxpc3RlbmVyID0gYWRvcHROUyhbW1dL
V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6V1RGTW92ZShyZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVyKV0pOwogICAgICAgICAgICAgZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihyZXF1ZXN0Lm9yaWdpbi5n
ZXQoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCksIHBvbGljeUxpc3RlbmVyLmdldCgpLCBbcmVxdWVz
dC52aWV3IHdpbmRvd10pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcXVlc3QucGVy
bWlzc2lvblJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRpb25I
YW5kbGVyKHRydWUpOwogICAgIH0KIH0KIApAQCAtMjMyLDcgKzIyOCw3IEBAIC0gKHZvaWQpZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiB7CiAgICAgVmVjdG9yPEdlb2xvY2F0aW9uUmVx
dWVzdERhdGE+IHJlcXVlc3RzID0gV1RGTW92ZShfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0
aW9uQXV0aG9yaXphdGlvbik7CiAgICAgZm9yIChjb25zdCBhdXRvJiByZXF1ZXN0RGF0YSA6IHJl
cXVlc3RzKQotICAgICAgICByZXF1ZXN0RGF0YS5wZXJtaXNzaW9uUmVxdWVzdC0+ZGVueSgpOwor
ICAgICAgICByZXF1ZXN0RGF0YS5jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKIC0gKHZv
aWQpcG9zaXRpb25DaGFuZ2VkOihfV0tHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb24KQEAg
LTMzMCwyNyArMzI2LDI3IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogCiAjIHByYWdtYSBt
YXJrIC0gSW1wbGVtZW50YXRpb24gb2YgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcgogQGlt
cGxlbWVudGF0aW9uIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgewotICAgIFJlZlB0cjxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5
OworICAgIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gX2NvbXBsZXRpb25IYW5kbGVyOwogfQog
Ci0tIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYpcGVybWlzc2lvblJlcXVlc3RQcm94eQorLSAoaWQp
aW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjooV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNl
bGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eSA9
IFdURk1vdmUocGVybWlzc2lvblJlcXVlc3RQcm94eSk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0g
KHZvaWQpYWxsb3cKIHsKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eS0+YWxsb3coKTsKKyAg
ICBfY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKIC0gKHZvaWQpZGVueQogewotICAgIF9w
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LT5kZW55KCk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKIH0KIAogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320178</attachid>
            <date>2017-09-07 14:14:34 -0700</date>
            <delta_ts>2017-09-07 14:19:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176562-20170907141433.patch</filename>
            <type>text/plain</type>
            <size>23863</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgR2Vv
bG9jYXRpb24gcmVxdWVzdCBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBwYXNzaW5nIGEgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5JiB0byBlYWNoIGNsaWVudCBhbmQgcmV0dXJuaW5nIGEgYm9vbCBpZiB0
aGUgcmVxdWVzdCB3aWxsIGJlIGhhbmRsZWQsCisgICAgICAgIHBhc3MgYSBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyIGFuZCByZXR1cm4gdGhlIGZ1bmN0aW9uIGlmIGl0
IHdvbid0IGJlIGhhbmRsZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIHRlbXBvcmFyaWx5IHN1
cHBvcnQgb3VyIFVJQ2xpZW50L1BhZ2VDbGllbnQgaHlicmlkIGRlc2lnbiB3aGlsZSBtb3Zpbmcg
dG93YXJkcyBhIHNhbmUgZGVzaWduLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGdW5j
dGlvbjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKToKKyAgICAg
ICAgKC1bV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG93XSk6
CisgICAgICAgICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgZGVueV0pOgorICAgICAg
ICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpyZXF1ZXN0OnZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ol0pOiBEZWxldGVkLgorCiAyMDE3LTA5LTA3ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICAgTW92ZSBtb3JlIGNvZGUgZnJvbSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRvIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMjIxNzAxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWFuYWdl
ci0+ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG1fZ2VvbG9jYXRpb25J
RCwgdHJ1ZSk7Ci0gICAgbV9tYW5hZ2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZGVueSgpCkBAIC01
MSwxMiArNTEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Ogog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24obV9nZW9sb2NhdGlvbklELCBmYWxzZSk7Ci0gICAgbV9tYW5h
Z2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9tYW5hZ2VyID0g
MDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHlfaAotI2RlZmluZSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSogbWFuYWdlciwgdWludDY0X3QgZ2VvbG9jYXRpb25JRCkKICAgICB7CkBAIC01MSw2ICs1MSwy
MiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fZ2VvbG9jYXRpb25JRDsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAorY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IGNyZWF0ZShGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGFsbG93KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdm9p
ZCBkZW55KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQogCi0jZW5kaWYgLy8gR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5X2gKK3ByaXZhdGU6CisgICAgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgeyB9CisgICAgCisgICAgRnVuY3Rpb248dm9pZChib29sKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjIxNzA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTAgKzE0MSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8g
RklYTUU6IEFkb3B0IHRoZSBXS1VJRGVsZWdhdGVQcml2YXRlIGNhbGxiYWNrIG9uIGlPUyBhbmQg
cmVtb3ZlIHRoaXMuCisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSB7IH07
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSB7
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDIyMTc0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4MTEsMTQgKzU4MTEsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIC8vIEZJWE1FOiBHZW9sb2NhdGlvbiBzaG91bGQg
cHJvYmFibHkgYmUgdXNpbmcgdG9TdHJpbmcoKSBhcyBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IGluc3RlYWQgb2YgZGF0YWJhc2VJZGVudGlmaWVyKCkuCiAgICAgYXV0byBvcmlnaW4gPSBBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBhdXRv
IHJlcXVlc3QgPSBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJl
cXVlc3QoZ2VvbG9jYXRpb25JRCk7Ci0KLSAgICBpZiAobV91aUNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgKmZyYW1lLCBvcmlnaW4uZ2V0
KCksIHJlcXVlc3QuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlQ2xp
ZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKmZyYW1lLCBv
cmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZXF1
ZXN0LT5kZW55KCk7CisgICAgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBp
ZiAoYWxsb3dlZCkKKyAgICAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKKyAgICB9OworCisgICAgY29tcGxldGlvbkhh
bmRsZXIgPSBtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gbV9wYWdlQ2xpZW50LmRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKmZyYW1lLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CShyZXZpc2lvbiAyMjE3NDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5h
dGl2ZVdlYldoZWVsRXZlbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
QEAgLTEyNyw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJ1
bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMq
LCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5
T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBX
ZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lv
biAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwotY2xhc3MgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OworY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSGFuZGxlUmVm
LCBBUEkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSW5mb1JlZiwgQVBJOjpGcmFtZUluZm8p
CiBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiwgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCitXS19BRERfQVBJX01BUFBJ
TkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiwg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0hpdFRlc3RSZXN1
bHRSZWYsIEFQSTo6SGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0ljb25EYXRh
YmFzZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuY3BwCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRv
QVBJKEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOwogfQogCiB2b2lkIFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjE3NDMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUzLDEzICsxOTUzLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgYm9v
bCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkg
ZmluYWwKKyAgICAgICAgRnVuY3Rpb248dm9pZChib29sKT4gZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkm
IGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZy
YW1lKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKCZwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5w
dHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAkocmV2aXNp
b24gMjIxNzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsMTEgKzE4MiwxMSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYs
IEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkm
IHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbAorICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
ID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoJnBl
cm1pc3Npb25SZXF1ZXN0KSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdD4gZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3
ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRvaW5IYW5kbGVyKSkucHRyKCkpKTsK
ICAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZpZXcsIFdF
QktJVF9QRVJNSVNTSU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQo
KSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCiAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRP
cmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0
KSBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
cmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikgb3Zl
cnJpZGU7CisgICAgRnVuY3Rpb248dm9pZChib29sKT4gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250
ZW50UHJvdmlkZXIpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzcsMTAgKzIzNywxMCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVN5
bnRoZXRpCiAgICAgW21fY29udGVudFZpZXcgX2RpZENvbXBsZXRlU3ludGhldGljQ2xpY2tdOwog
fQogCi1ib29sIFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKK0Z1bmN0
aW9uPHZvaWQoYm9vbCk+IFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgW1t3cmFwcGVyKG1fd2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
KSBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0
RnJvbU9yaWdpbjpvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSBmcmFtZTpmcmFtZSByZXF1ZXN0OnJl
cXVlc3QgdmlldzptX3dlYlZpZXddOwotICAgIHJldHVybiB0cnVlOworICAgIFtbd3JhcHBlciht
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkgX2dlb2xvY2F0aW9uUHJv
dmlkZXJdIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46b3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCkgZnJhbWU6ZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikgdmlldzptX3dlYlZpZXddOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5G
cmFtZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
LmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgc3RydWN0IEhpZ2hs
aWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwotY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MuaAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw5ICsyNyw5IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNPYmplY3QuaD4KICNpbXBv
cnQgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNs
YXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIH0KQEAgLTQyLDcgKzQy
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIDogTlNPYmplY3QKIC0oaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2w7Ci0tKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBm
cmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5JilmcmFtZSByZXF1ZXN0OihXZWJLaXQ6Okdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpcGVybWlzc2lvblJlcXVlc3QgdmlldzooV0tX
ZWJWaWV3Kil2aWV3OworLSh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdlYktpdDo6
V2ViRnJhbWVQcm94eSYpZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tXZWJWaWV3Kil2aWV3OwogQGVuZAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyMjE3
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0ICJBUElGcmFt
ZUluZm8uaCIKICNpbXBvcnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCi0jaW1wb3J0ICJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLR2VvbG9jYXRpb25NYW5hZ2VyLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwu
aCIKQEAgLTY3LDcgKzY2LDcgQEAgQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3Zp
ZGVyIAogQGVuZAogCiBAaW50ZXJmYWNlIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgOiBO
U09iamVjdDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4KLS0gKGlkKWluaXRXaXRoUGVybWlz
c2lvblJlcXVlc3RQcm94eTooUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eT4mJilwZXJtaXNzaW9uUmVxdWVzdFByb3h5OworLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQp
ZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKIEBlbmQKIApAQCAt
ODMsNyArODIsNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiBz
dHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW47CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IGZyYW1lOwotICAgIFJlZlB0cjxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHBlcm1pc3Npb25SZXF1ZXN0OworICAg
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyOwogICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHZpZXc7CiB9OwogCkBAIC0xNjgsMTMgKzE2NywxMyBAQCAtKGlkKWluaXRXaXRo
UHJvY2Vzc1Bvb2w6KFdlYlByb2Nlc3NQb29sCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0odm9p
ZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihTZWN1cml0eU9y
aWdpbiYpb3JpZ2luIGZyYW1lOihXZWJGcmFtZVByb3h5JilmcmFtZSByZXF1ZXN0OihHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKXBlcm1pc3Npb25SZXF1ZXN0IHZpZXc6KFdLV2Vi
VmlldyopY29udGVudFZpZXcKKy0odm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOihTZWN1cml0eU9yaWdpbiYpb3JpZ2luIGZyYW1lOihXZWJGcmFtZVByb3h5
JilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0
aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcqKWNvbnRlbnRWaWV3CiB7CiAgICAgLy8gU3RlcCAx
OiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgogICAgIEdlb2xv
Y2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YTsKICAgICBnZW9sb2NhdGlv
blJlcXVlc3REYXRhLm9yaWdpbiA9ICZvcmlnaW47CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0
YS5mcmFtZSA9ICZmcmFtZTsKLSAgICBnZW9sb2NhdGlvblJlcXVlc3REYXRhLnBlcm1pc3Npb25S
ZXF1ZXN0ID0gJnBlcm1pc3Npb25SZXF1ZXN0OworICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEu
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBnZW9s
b2NhdGlvblJlcXVlc3REYXRhLnZpZXcgPSBjb250ZW50VmlldzsKICAgICBfcmVxdWVzdHNXYWl0
aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoZ2VvbG9jYXRpb25SZXF1ZXN0
RGF0YSk7CiAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uXTsKQEAgLTE4OSw3ICsxODgsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQKIHsKICAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGUgdGhp
cyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0aW9uLgogICAgIFZlY3RvcjxHZW9sb2Nh
dGlvblJlcXVlc3REYXRhPiByZXF1ZXN0cyA9IFdURk1vdmUoX3JlcXVlc3RzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOwotICAgIGZvciAoY29uc3QgYXV0byYgcmVxdWVzdCA6
IHJlcXVlc3RzKSB7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKICAgICAg
ICAgYm9vbCByZXF1aXJlc1VzZXJBdXRob3JpemF0aW9uID0gdHJ1ZTsKIAogICAgICAgICBpZDxX
S1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+PihbcmVxdWVzdC52aWV3IFVJRGVsZWdhdGVdKTsKQEAgLTIwMCwxMSArMTk5
LDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgICAg
ICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpyZXF1ZXN0LnZpZXcuZ2V0KCkgcmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdl
dCgpIGRlY2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFty
ZXF1ZXN0LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKGF1
dGhvcml6ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucGVybWlzc2lvblJlcXVlc3Qt
PmFsbG93KCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LnBlcm1pc3Npb25SZXF1ZXN0LT5kZW55KCk7CiAgICAgICAgICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5jb21w
bGV0aW9uSGFuZGxlcihhdXRob3JpemVkKQogICAgICAgICAgICAgfSkuZ2V0KCldOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjEsMTAgKzIxNywxMCBAQCAtICh2b2lkKWdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgfQogCiAgICAgICAgIGlmIChy
ZXF1aXJlc1VzZXJBdXRob3JpemF0aW9uKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8V0tXZWJB
bGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4gcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV0tXZWJB
bGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OnJlcXVlc3QucGVybWlzc2lvblJlcXVlc3QuZ2V0KCldKTsKKyAgICAgICAgICAgIFJldGFp
blB0cjxXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0
TlMoW1tXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENvbXBsZXRp
b25IYW5kbGVyOldURk1vdmUocmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcildKTsKICAgICAgICAg
ICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVzdC5v
cmlnaW4uZ2V0KCksIHJlcXVlc3QuZnJhbWUtPnVybCgpLCBwb2xpY3lMaXN0ZW5lci5nZXQoKSwg
W3JlcXVlc3QudmlldyB3aW5kb3ddKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXF1
ZXN0LnBlcm1pc3Npb25SZXF1ZXN0LT5hbGxvdygpOworICAgICAgICAgICAgcmVxdWVzdC5jb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsKICAgICB9CiB9CiAKQEAgLTIzMiw3ICsyMjgsNyBAQCAtICh2
b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogewogICAgIFZlY3RvcjxHZW9sb2Nh
dGlvblJlcXVlc3REYXRhPiByZXF1ZXN0cyA9IFdURk1vdmUoX3JlcXVlc3RzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOwogICAgIGZvciAoY29uc3QgYXV0byYgcmVxdWVzdERh
dGEgOiByZXF1ZXN0cykKLSAgICAgICAgcmVxdWVzdERhdGEucGVybWlzc2lvblJlcXVlc3QtPmRl
bnkoKTsKKyAgICAgICAgcmVxdWVzdERhdGEuY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQog
CiAtICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooX1dLR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0
aW9uCkBAIC0zMzAsMjcgKzMyNiwyNyBAQCAtICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KIAogIyBw
cmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVu
ZXIKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsKLSAgICBS
ZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBfcGVybWlzc2lvblJlcXVl
c3RQcm94eTsKKyAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CiB9
CiAKLS0gKGlkKWluaXRXaXRoUGVybWlzc2lvblJlcXVlc3RQcm94eTooUmVmUHRyPEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4mJilwZXJtaXNzaW9uUmVxdWVzdFByb3h5CistIChp
ZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eSA9IFdU
Rk1vdmUocGVybWlzc2lvblJlcXVlc3RQcm94eSk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZv
aWQpYWxsb3cKIHsKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eS0+YWxsb3coKTsKKyAgICBf
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKIC0gKHZvaWQpZGVueQogewotICAgIF9wZXJt
aXNzaW9uUmVxdWVzdFByb3h5LT5kZW55KCk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKIH0KIAogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320179</attachid>
            <date>2017-09-07 14:19:19 -0700</date>
            <delta_ts>2017-09-07 14:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176562-20170907141918.patch</filename>
            <type>text/plain</type>
            <size>23863</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgR2Vv
bG9jYXRpb24gcmVxdWVzdCBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBwYXNzaW5nIGEgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5JiB0byBlYWNoIGNsaWVudCBhbmQgcmV0dXJuaW5nIGEgYm9vbCBpZiB0
aGUgcmVxdWVzdCB3aWxsIGJlIGhhbmRsZWQsCisgICAgICAgIHBhc3MgYSBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyIGFuZCByZXR1cm4gdGhlIGZ1bmN0aW9uIGlmIGl0
IHdvbid0IGJlIGhhbmRsZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIHRlbXBvcmFyaWx5IHN1
cHBvcnQgb3VyIFVJQ2xpZW50L1BhZ2VDbGllbnQgaHlicmlkIGRlc2lnbiB3aGlsZSBtb3Zpbmcg
dG93YXJkcyBhIHNhbmUgZGVzaWduLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGdW5j
dGlvbjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKToKKyAgICAg
ICAgKC1bV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG93XSk6
CisgICAgICAgICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgZGVueV0pOgorICAgICAg
ICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpyZXF1ZXN0OnZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ol0pOiBEZWxldGVkLgorCiAyMDE3LTA5LTA3ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICAgTW92ZSBtb3JlIGNvZGUgZnJvbSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRvIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMjIxNzAxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWFuYWdl
ci0+ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG1fZ2VvbG9jYXRpb25J
RCwgdHJ1ZSk7Ci0gICAgbV9tYW5hZ2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZGVueSgpCkBAIC01
MSwxMiArNTEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Ogog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24obV9nZW9sb2NhdGlvbklELCBmYWxzZSk7Ci0gICAgbV9tYW5h
Z2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9tYW5hZ2VyID0g
MDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHlfaAotI2RlZmluZSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSogbWFuYWdlciwgdWludDY0X3QgZ2VvbG9jYXRpb25JRCkKICAgICB7CkBAIC01MSw2ICs1MSwy
MiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fZ2VvbG9jYXRpb25JRDsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAorY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IGNyZWF0ZShGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGFsbG93KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdm9p
ZCBkZW55KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQogCi0jZW5kaWYgLy8gR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5X2gKK3ByaXZhdGU6CisgICAgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgeyB9CisgICAgCisgICAgRnVuY3Rpb248dm9pZChib29sKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjIxNzA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTAgKzE0MSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8g
RklYTUU6IEFkb3B0IHRoZSBXS1VJRGVsZWdhdGVQcml2YXRlIGNhbGxiYWNrIG9uIGlPUyBhbmQg
cmVtb3ZlIHRoaXMuCisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSB7IH07
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSB7
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDIyMTc0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4MTEsMTQgKzU4MTEsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIC8vIEZJWE1FOiBHZW9sb2NhdGlvbiBzaG91bGQg
cHJvYmFibHkgYmUgdXNpbmcgdG9TdHJpbmcoKSBhcyBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IGluc3RlYWQgb2YgZGF0YWJhc2VJZGVudGlmaWVyKCkuCiAgICAgYXV0byBvcmlnaW4gPSBBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBhdXRv
IHJlcXVlc3QgPSBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJl
cXVlc3QoZ2VvbG9jYXRpb25JRCk7Ci0KLSAgICBpZiAobV91aUNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgKmZyYW1lLCBvcmlnaW4uZ2V0
KCksIHJlcXVlc3QuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlQ2xp
ZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKmZyYW1lLCBv
cmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZXF1
ZXN0LT5kZW55KCk7CisgICAgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBp
ZiAoYWxsb3dlZCkKKyAgICAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKKyAgICB9OworCisgICAgY29tcGxldGlvbkhh
bmRsZXIgPSBtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gbV9wYWdlQ2xpZW50LmRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKmZyYW1lLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CShyZXZpc2lvbiAyMjE3NDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5h
dGl2ZVdlYldoZWVsRXZlbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
QEAgLTEyNyw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJ1
bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMq
LCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5
T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBX
ZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lv
biAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwotY2xhc3MgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OworY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSGFuZGxlUmVm
LCBBUEkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSW5mb1JlZiwgQVBJOjpGcmFtZUluZm8p
CiBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiwgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCitXS19BRERfQVBJX01BUFBJ
TkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiwg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0hpdFRlc3RSZXN1
bHRSZWYsIEFQSTo6SGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0ljb25EYXRh
YmFzZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuY3BwCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRv
QVBJKEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOwogfQogCiB2b2lkIFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjE3NDMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUzLDEzICsxOTUzLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgYm9v
bCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkg
ZmluYWwKKyAgICAgICAgRnVuY3Rpb248dm9pZChib29sKT4gZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkm
IGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZy
YW1lKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKCZwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5w
dHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAkocmV2aXNp
b24gMjIxNzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsMTEgKzE4MiwxMSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYs
IEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkm
IHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbAorICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGRlY2lk
ZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXRH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
ID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoJnBl
cm1pc3Npb25SZXF1ZXN0KSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdD4gZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3
ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkpKTsK
ICAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZpZXcsIFdF
QktJVF9QRVJNSVNTSU9OX1JFUVVFU1QoZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQo
KSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCiAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1l
ZGlhRG9jdW1lbnRPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRP
cmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0
KSBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
cmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikgb3Zl
cnJpZGU7CisgICAgRnVuY3Rpb248dm9pZChib29sKT4gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21Db250
ZW50UHJvdmlkZXIpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzcsMTAgKzIzNywxMCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVN5
bnRoZXRpCiAgICAgW21fY29udGVudFZpZXcgX2RpZENvbXBsZXRlU3ludGhldGljQ2xpY2tdOwog
fQogCi1ib29sIFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCkKK0Z1bmN0
aW9uPHZvaWQoYm9vbCk+IFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgW1t3cmFwcGVyKG1fd2ViVmlldy0+X3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
KSBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0
RnJvbU9yaWdpbjpvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSBmcmFtZTpmcmFtZSByZXF1ZXN0OnJl
cXVlc3QgdmlldzptX3dlYlZpZXddOwotICAgIHJldHVybiB0cnVlOworICAgIFtbd3JhcHBlciht
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkgX2dlb2xvY2F0aW9uUHJv
dmlkZXJdIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46b3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCkgZnJhbWU6ZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikgdmlldzptX3dlYlZpZXddOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5G
cmFtZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
LmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgc3RydWN0IEhpZ2hs
aWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwotY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MuaAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw5ICsyNyw5IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNPYmplY3QuaD4KICNpbXBv
cnQgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNs
YXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIH0KQEAgLTQyLDcgKzQy
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIEBpbnRlcmZhY2UgV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIDogTlNPYmplY3QKIC0oaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2w7Ci0tKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBm
cmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5JilmcmFtZSByZXF1ZXN0OihXZWJLaXQ6Okdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpcGVybWlzc2lvblJlcXVlc3QgdmlldzooV0tX
ZWJWaWV3Kil2aWV3OworLSh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdlYktpdDo6
V2ViRnJhbWVQcm94eSYpZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tXZWJWaWV3Kil2aWV3OwogQGVuZAogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyMjE3
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0ICJBUElGcmFt
ZUluZm8uaCIKICNpbXBvcnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0ICJDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCi0jaW1wb3J0ICJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLR2VvbG9jYXRpb25NYW5hZ2VyLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwu
aCIKQEAgLTY3LDcgKzY2LDcgQEAgQGludGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3Zp
ZGVyIAogQGVuZAogCiBAaW50ZXJmYWNlIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgOiBO
U09iamVjdDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4KLS0gKGlkKWluaXRXaXRoUGVybWlz
c2lvblJlcXVlc3RQcm94eTooUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eT4mJilwZXJtaXNzaW9uUmVxdWVzdFByb3h5OworLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQp
ZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVDsKIEBlbmQKIApAQCAt
ODMsNyArODIsNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiBz
dHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW47CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IGZyYW1lOwotICAgIFJlZlB0cjxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHBlcm1pc3Npb25SZXF1ZXN0OworICAg
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyOwogICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHZpZXc7CiB9OwogCkBAIC0xNjgsMTMgKzE2NywxMyBAQCAtKGlkKWluaXRXaXRo
UHJvY2Vzc1Bvb2w6KFdlYlByb2Nlc3NQb29sCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0odm9p
ZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihTZWN1cml0eU9y
aWdpbiYpb3JpZ2luIGZyYW1lOihXZWJGcmFtZVByb3h5JilmcmFtZSByZXF1ZXN0OihHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKXBlcm1pc3Npb25SZXF1ZXN0IHZpZXc6KFdLV2Vi
VmlldyopY29udGVudFZpZXcKKy0odm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOihTZWN1cml0eU9yaWdpbiYpb3JpZ2luIGZyYW1lOihXZWJGcmFtZVByb3h5
JilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0
aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcqKWNvbnRlbnRWaWV3CiB7CiAgICAgLy8gU3RlcCAx
OiBhc2sgdGhlIHVzZXIgaWYgdGhlIGFwcCBjYW4gdXNlIEdlb2xvY2F0aW9uLgogICAgIEdlb2xv
Y2F0aW9uUmVxdWVzdERhdGEgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YTsKICAgICBnZW9sb2NhdGlv
blJlcXVlc3REYXRhLm9yaWdpbiA9ICZvcmlnaW47CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0
YS5mcmFtZSA9ICZmcmFtZTsKLSAgICBnZW9sb2NhdGlvblJlcXVlc3REYXRhLnBlcm1pc3Npb25S
ZXF1ZXN0ID0gJnBlcm1pc3Npb25SZXF1ZXN0OworICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEu
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBnZW9s
b2NhdGlvblJlcXVlc3REYXRhLnZpZXcgPSBjb250ZW50VmlldzsKICAgICBfcmVxdWVzdHNXYWl0
aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hcHBlbmQoZ2VvbG9jYXRpb25SZXF1ZXN0
RGF0YSk7CiAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uXTsKQEAgLTE4OSw3ICsxODgsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkdyYW50ZWQKIHsKICAgICAvLyBTdGVwIDI6IGFzayB0aGUgdXNlciBpZiB0aGUgdGhp
cyBwYXJ0aWN1bGFyIHBhZ2UgY2FuIHVzZSBnZWxvY2F0aW9uLgogICAgIFZlY3RvcjxHZW9sb2Nh
dGlvblJlcXVlc3REYXRhPiByZXF1ZXN0cyA9IFdURk1vdmUoX3JlcXVlc3RzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOwotICAgIGZvciAoY29uc3QgYXV0byYgcmVxdWVzdCA6
IHJlcXVlc3RzKSB7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKICAgICAg
ICAgYm9vbCByZXF1aXJlc1VzZXJBdXRob3JpemF0aW9uID0gdHJ1ZTsKIAogICAgICAgICBpZDxX
S1VJRGVsZWdhdGVQcml2YXRlPiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+PihbcmVxdWVzdC52aWV3IFVJRGVsZWdhdGVdKTsKQEAgLTIwMCwxMSArMTk5
LDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgICAg
ICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpyZXF1ZXN0LnZpZXcuZ2V0KCkgcmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdl
dCgpIGRlY2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFty
ZXF1ZXN0LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKGF1
dGhvcml6ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucGVybWlzc2lvblJlcXVlc3Qt
PmFsbG93KCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LnBlcm1pc3Npb25SZXF1ZXN0LT5kZW55KCk7CiAgICAgICAgICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5jb21w
bGV0aW9uSGFuZGxlcihhdXRob3JpemVkKQogICAgICAgICAgICAgfSkuZ2V0KCldOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjEsMTAgKzIxNywxMCBAQCAtICh2b2lkKWdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgfQogCiAgICAgICAgIGlmIChy
ZXF1aXJlc1VzZXJBdXRob3JpemF0aW9uKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8V0tXZWJB
bGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4gcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV0tXZWJB
bGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OnJlcXVlc3QucGVybWlzc2lvblJlcXVlc3QuZ2V0KCldKTsKKyAgICAgICAgICAgIFJldGFp
blB0cjxXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0
TlMoW1tXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENvbXBsZXRp
b25IYW5kbGVyOldURk1vdmUocmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcildKTsKICAgICAgICAg
ICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVzdC5v
cmlnaW4uZ2V0KCksIHJlcXVlc3QuZnJhbWUtPnVybCgpLCBwb2xpY3lMaXN0ZW5lci5nZXQoKSwg
W3JlcXVlc3QudmlldyB3aW5kb3ddKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXF1
ZXN0LnBlcm1pc3Npb25SZXF1ZXN0LT5hbGxvdygpOworICAgICAgICAgICAgcmVxdWVzdC5jb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsKICAgICB9CiB9CiAKQEAgLTIzMiw3ICsyMjgsNyBAQCAtICh2
b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogewogICAgIFZlY3RvcjxHZW9sb2Nh
dGlvblJlcXVlc3REYXRhPiByZXF1ZXN0cyA9IFdURk1vdmUoX3JlcXVlc3RzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOwogICAgIGZvciAoY29uc3QgYXV0byYgcmVxdWVzdERh
dGEgOiByZXF1ZXN0cykKLSAgICAgICAgcmVxdWVzdERhdGEucGVybWlzc2lvblJlcXVlc3QtPmRl
bnkoKTsKKyAgICAgICAgcmVxdWVzdERhdGEuY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQog
CiAtICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooX1dLR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0
aW9uCkBAIC0zMzAsMjcgKzMyNiwyNyBAQCAtICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KIAogIyBw
cmFnbWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVu
ZXIKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsKLSAgICBS
ZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBfcGVybWlzc2lvblJlcXVl
c3RQcm94eTsKKyAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CiB9
CiAKLS0gKGlkKWluaXRXaXRoUGVybWlzc2lvblJlcXVlc3RQcm94eTooUmVmUHRyPEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4mJilwZXJtaXNzaW9uUmVxdWVzdFByb3h5CistIChp
ZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eSA9IFdU
Rk1vdmUocGVybWlzc2lvblJlcXVlc3RQcm94eSk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZv
aWQpYWxsb3cKIHsKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eS0+YWxsb3coKTsKKyAgICBf
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAKIC0gKHZvaWQpZGVueQogewotICAgIF9wZXJt
aXNzaW9uUmVxdWVzdFByb3h5LT5kZW55KCk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKIH0KIAogLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320181</attachid>
            <date>2017-09-07 14:25:55 -0700</date>
            <delta_ts>2017-09-07 14:50:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176562-20170907142554.patch</filename>
            <type>text/plain</type>
            <size>25788</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgR2Vv
bG9jYXRpb24gcmVxdWVzdCBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBwYXNzaW5nIGEgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5JiB0byBlYWNoIGNsaWVudCBhbmQgcmV0dXJuaW5nIGEgYm9vbCBpZiB0
aGUgcmVxdWVzdCB3aWxsIGJlIGhhbmRsZWQsCisgICAgICAgIHBhc3MgYSBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyIGFuZCByZXR1cm4gdGhlIGZ1bmN0aW9uIGlmIGl0
IHdvbid0IGJlIGhhbmRsZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIHRlbXBvcmFyaWx5IHN1
cHBvcnQgb3VyIFVJQ2xpZW50L1BhZ2VDbGllbnQgaHlicmlkIGRlc2lnbiB3aGlsZSBtb3Zpbmcg
dG93YXJkcyBhIHNhbmUgZGVzaWduLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjphbGxvdyk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGdW5j
dGlvbjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOnZpZXc6XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICgtW1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKToKKyAgICAg
ICAgKC1bV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGFsbG93XSk6
CisgICAgICAgICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgZGVueV0pOgorICAgICAg
ICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpmcmFtZTpyZXF1ZXN0OnZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Ol0pOiBEZWxldGVkLgorCiAyMDE3LTA5LTA3ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICAgTW92ZSBtb3JlIGNvZGUgZnJvbSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRvIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMjIxNzAxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWFuYWdl
ci0+ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG1fZ2VvbG9jYXRpb25J
RCwgdHJ1ZSk7Ci0gICAgbV9tYW5hZ2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZGVueSgpCkBAIC01
MSwxMiArNTEsMTIgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Ogog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9tYW5hZ2VyLT5kaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24obV9nZW9sb2NhdGlvbklELCBmYWxzZSk7Ci0gICAgbV9tYW5h
Z2VyID0gMDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgbV9tYW5hZ2VyID0g
MDsKKyAgICBtX21hbmFnZXIgPSBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHlfaAotI2RlZmluZSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk7CiAKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSogbWFuYWdlciwgdWludDY0X3QgZ2VvbG9jYXRpb25JRCkKICAgICB7CkBAIC01MSw2ICs1MSwy
MiBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fZ2VvbG9jYXRpb25JRDsKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAorY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IGNyZWF0ZShGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGFsbG93KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdm9p
ZCBkZW55KCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQogCi0jZW5kaWYgLy8gR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5X2gKK3ByaXZhdGU6CisgICAgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgeyB9CisgICAgCisgICAgRnVuY3Rpb248dm9pZChib29sKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjIxNzA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTAgKzE0MSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8g
RklYTUU6IEFkb3B0IHRoZSBXS1VJRGVsZWdhdGVQcml2YXRlIGNhbGxiYWNrIG9uIGlPUyBhbmQg
cmVtb3ZlIHRoaXMuCisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSB7IH07
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSB7
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDIyMTc0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4MTEsMTQgKzU4MTEsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIC8vIEZJWE1FOiBHZW9sb2NhdGlvbiBzaG91bGQg
cHJvYmFibHkgYmUgdXNpbmcgdG9TdHJpbmcoKSBhcyBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9u
IGluc3RlYWQgb2YgZGF0YWJhc2VJZGVudGlmaWVyKCkuCiAgICAgYXV0byBvcmlnaW4gPSBBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBhdXRv
IHJlcXVlc3QgPSBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJl
cXVlc3QoZ2VvbG9jYXRpb25JRCk7Ci0KLSAgICBpZiAobV91aUNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgKmZyYW1lLCBvcmlnaW4uZ2V0
KCksIHJlcXVlc3QuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlQ2xp
ZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKmZyYW1lLCBv
cmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZXF1
ZXN0LT5kZW55KCk7CisgICAgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBp
ZiAoYWxsb3dlZCkKKyAgICAgICAgICAgIHJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJlcXVlc3QtPmRlbnkoKTsKKyAgICB9OworCisgICAgY29tcGxldGlvbkhh
bmRsZXIgPSBtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gbV9wYWdlQ2xpZW50LmRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKmZyYW1lLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CShyZXZpc2lvbiAyMjE3NDMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5h
dGl2ZVdlYldoZWVsRXZlbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
QEAgLTEyNyw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJ1
bk9wZW5QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIE9wZW5QYW5lbFBhcmFtZXRlcnMq
LCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
U2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94
eSYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFNlY3VyaXR5
T3JpZ2luJiwgV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgU2VjdXJpdHlPcmlnaW4qLCBX
ZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KikgeyByZXR1cm4gZmFsc2U7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lv
biAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwotY2xhc3MgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OworY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSGFuZGxlUmVm
LCBBUEkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lSW5mb1JlZiwgQVBJOjpGcmFtZUluZm8p
CiBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiwgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCitXS19BRERfQVBJX01BUFBJ
TkcoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiwg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0hpdFRlc3RSZXN1
bHRSZWYsIEFQSTo6SGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0ljb25EYXRh
YmFzZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuY3BwCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRv
QVBJKEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkFQSVR5cGUpOwogfQogCiB2b2lkIFdL
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjE3NDMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUzLDEzICsxOTUzLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgYm9v
bCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkg
ZmluYWwKKyAgICAgICAgRnVuY3Rpb248dm9pZChib29sKT4gZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkm
IGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZy
YW1lKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKCZwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5w
dHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiBzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVy
ZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKIAogc3RydWN0IF9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSB7Ci0gICAgUmVmUHRyPEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdDsKKyAgICBSZWZQdHI8R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdDsKICAgICBib29sIG1hZGVEZWNpc2lvbjsK
IH07CiAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZ2VvbG9jYXRpb25f
cGVybWlzc2lvCiAgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKIH0KIAotV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHJlcXVlc3QpCitXZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRl
KEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgV2ViS2l0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9
IFdFQktJVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVCwgTlVMTCkpOwogICAgIGdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QtPnByaXYtPnJlcXVlc3QgPSByZXF1ZXN0OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCShy
ZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw0ICsyMSw0IEBACiAKICNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAKLVdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHkqKTsKK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qq
IHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCShyZXZpc2lvbiAyMjE3NDMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4MiwxMSArMTgyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0
eU9yaWdpbiYsIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJl
cXVlc3QpIGZpbmFsCisgICAgRnVuY3Rpb248dm9pZChib29sKT4gZGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5Jiwg
QVBJOjpTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsCiAgICAgewotICAgICAgICBHUmVmUHRyPFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3Q+IGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZSgmcGVybWlzc2lvblJlcXVl
c3QpKTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
PiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOwogICAgICAgICB3ZWJr
aXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0KG1fd2ViVmlldywgV0VCS0lUX1BFUk1JU1NJ
T05fUkVRVUVTVChnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmdldCgpKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBib29s
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJlcXVlc3QpIG92ZXJyaWRlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmln
aW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSBvdmVycmlkZTsKKyAgICBG
dW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9p
ZChib29sKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNywxMCAr
MjM3LDEwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbXBsZXRlU3ludGhldGkKICAgICBb
bV9jb250ZW50VmlldyBfZGlkQ29tcGxldGVTeW50aGV0aWNDbGlja107CiB9CiAKLWJvb2wgUGFn
ZUNsaWVudEltcGw6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0KQorRnVuY3Rpb248dm9pZChib29s
KT4gUGFnZUNsaWVudEltcGw6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QoV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBbW3dyYXBw
ZXIobV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkpIF9nZW9sb2NhdGlv
blByb3ZpZGVyXSBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOm9y
aWdpbi5zZWN1cml0eU9yaWdpbigpIGZyYW1lOmZyYW1lIHJlcXVlc3Q6cmVxdWVzdCB2aWV3Om1f
d2ViVmlld107Ci0gICAgcmV0dXJuIHRydWU7CisgICAgW1t3cmFwcGVyKG1fd2ViVmlldy0+X3Bh
Z2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpKSBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpvcmlnaW4uc2VjdXJpdHlPcmln
aW4oKSBmcmFtZTpmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSB2aWV3Om1fd2ViVmlld107CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAkocmV2aXNpb24g
MjIxNzAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBzdHJ1Y3QgSGlnaGxpZ2h0OwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7Ci1jbGFzcyBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDkg
QEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU09iamVjdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
QmFzZS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
Y2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgV2ViRnJhbWVQ
cm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogfQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIAogQGludGVyZmFjZSBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgOiBO
U09iamVjdAogLShpZClpbml0V2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Jilwcm9jZXNzUG9vbDsKLS0odm9pZClkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luOihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpb3JpZ2luIGZyYW1lOihXZWJLaXQ6
OldlYkZyYW1lUHJveHkmKWZyYW1lIHJlcXVlc3Q6KFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5JilwZXJtaXNzaW9uUmVxdWVzdCB2aWV3OihXS1dlYlZpZXcqKXZpZXc7
CistKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBmcmFtZTooV2ViS2l0OjpXZWJGcmFtZVByb3h5
JilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjooRnVuY3Rpb248dm9pZChib29sKT4mJiljb21wbGV0
aW9uSGFuZGxlciB2aWV3OihXS1dlYlZpZXcqKXZpZXc7CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2lt
cG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIuaCIKLSNpbXBvcnQgIkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tHZW9sb2NhdGlv
bk1hbmFnZXIuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgpAQCAtNjcsNyAr
NjYsNyBAQCBAaW50ZXJmYWNlIFdLTGVnYWN5Q29yZUxvY2F0aW9uUHJvdmlkZXIgCiBAZW5kCiAK
IEBpbnRlcmZhY2UgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0PFdlYkFs
bG93RGVueVBvbGljeUxpc3RlbmVyPgotLSAoaWQpaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5OihSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYmKXBlcm1pc3Np
b25SZXF1ZXN0UHJveHk7CistIChpZClpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkZW55T25seVRoaXNS
ZXF1ZXN0IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUOwogQGVuZAogCkBAIC04Myw3ICs4Miw3IEBA
IHN0YXRpYyBpbmxpbmUgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24KIHN0cnVjdCBHZW9sb2Nh
dGlvblJlcXVlc3REYXRhIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKICAg
ICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gZnJhbWU7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4gcGVybWlzc2lvblJlcXVlc3Q7CisgICAgRnVuY3Rpb248dm9p
ZChib29sKT4gY29tcGxldGlvbkhhbmRsZXI7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gdmll
dzsKIH07CiAKQEAgLTE2OCwxMyArMTY3LDEzIEBAIC0oaWQpaW5pdFdpdGhQcm9jZXNzUG9vbDoo
V2ViUHJvY2Vzc1Bvb2wKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSh2b2lkKWRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFNlY3VyaXR5T3JpZ2luJilvcmlnaW4g
ZnJhbWU6KFdlYkZyYW1lUHJveHkmKWZyYW1lIHJlcXVlc3Q6KEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eSYpcGVybWlzc2lvblJlcXVlc3QgdmlldzooV0tXZWJWaWV3Kiljb250ZW50
VmlldworLSh2b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46
KFNlY3VyaXR5T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdlYkZyYW1lUHJveHkmKWZyYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyIHZp
ZXc6KFdLV2ViVmlldyopY29udGVudFZpZXcKIHsKICAgICAvLyBTdGVwIDE6IGFzayB0aGUgdXNl
ciBpZiB0aGUgYXBwIGNhbiB1c2UgR2VvbG9jYXRpb24uCiAgICAgR2VvbG9jYXRpb25SZXF1ZXN0
RGF0YSBnZW9sb2NhdGlvblJlcXVlc3REYXRhOwogICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEu
b3JpZ2luID0gJm9yaWdpbjsKICAgICBnZW9sb2NhdGlvblJlcXVlc3REYXRhLmZyYW1lID0gJmZy
YW1lOwotICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEucGVybWlzc2lvblJlcXVlc3QgPSAmcGVy
bWlzc2lvblJlcXVlc3Q7CisgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5jb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGdlb2xvY2F0aW9uUmVxdWVz
dERhdGEudmlldyA9IGNvbnRlbnRWaWV3OwogICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9j
YXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChnZW9sb2NhdGlvblJlcXVlc3REYXRhKTsKICAgICBb
X2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25dOwpA
QCAtMTg5LDcgKzE4OCw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRl
ZAogewogICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRoZSB0aGlzIHBhcnRpY3VsYXIg
cGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCiAgICAgVmVjdG9yPEdlb2xvY2F0aW9uUmVxdWVzdERh
dGE+IHJlcXVlc3RzID0gV1RGTW92ZShfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0
aG9yaXphdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewogICAgICAgICBib29sIHJlcXVp
cmVzVXNlckF1dGhvcml6YXRpb24gPSB0cnVlOwogCiAgICAgICAgIGlkPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+
KFtyZXF1ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwpAQCAtMjAwLDExICsxOTksOCBAQCAtICh2b2lk
KWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgICAgIFt1aURlbGVnYXRl
IF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKSByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVjaXNpb25I
YW5kbGVyOkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW3JlcXVlc3QsIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBpZiAoYXV0aG9yaXplZCkKLSAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5wZXJtaXNzaW9uUmVxdWVzdC0+YWxsb3coKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucGVybWlzc2lv
blJlcXVlc3QtPmRlbnkoKTsKICAgICAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVy
KGF1dGhvcml6ZWQpCiAgICAgICAgICAgICB9KS5nZXQoKV07CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTIyMSwxMCArMjE3LDEwIEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlcXVpcmVzVXNlckF1
dGhvcml6YXRpb24pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxXS1dlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPiBwb2xpY3lMaXN0ZW5lciA9IGFkb3B0TlMoW1tXS1dlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6cmVxdWVzdC5w
ZXJtaXNzaW9uUmVxdWVzdC5nZXQoKV0pOworICAgICAgICAgICAgUmV0YWluUHRyPFdLV2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXI+IHBvbGljeUxpc3RlbmVyID0gYWRvcHROUyhbW1dLV2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6V1RG
TW92ZShyZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVyKV0pOwogICAgICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihyZXF1ZXN0Lm9yaWdpbi5nZXQoKSwg
cmVxdWVzdC5mcmFtZS0+dXJsKCksIHBvbGljeUxpc3RlbmVyLmdldCgpLCBbcmVxdWVzdC52aWV3
IHdpbmRvd10pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcXVlc3QucGVybWlzc2lv
blJlcXVlc3QtPmFsbG93KCk7CisgICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOwogICAgIH0KIH0KIApAQCAtMjMyLDcgKzIyOCw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRGVuaWVkCiB7CiAgICAgVmVjdG9yPEdlb2xvY2F0aW9uUmVxdWVzdERh
dGE+IHJlcXVlc3RzID0gV1RGTW92ZShfcmVxdWVzdHNXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0
aG9yaXphdGlvbik7CiAgICAgZm9yIChjb25zdCBhdXRvJiByZXF1ZXN0RGF0YSA6IHJlcXVlc3Rz
KQotICAgICAgICByZXF1ZXN0RGF0YS5wZXJtaXNzaW9uUmVxdWVzdC0+ZGVueSgpOworICAgICAg
ICByZXF1ZXN0RGF0YS5jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKIC0gKHZvaWQpcG9z
aXRpb25DaGFuZ2VkOihfV0tHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb24KQEAgLTMzMCwy
NyArMzI2LDI3IEBAIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogCiAjIHByYWdtYSBtYXJrIC0g
SW1wbGVtZW50YXRpb24gb2YgV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcgogQGltcGxlbWVu
dGF0aW9uIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgewotICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5OworICAg
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+IF9jb21wbGV0aW9uSGFuZGxlcjsKIH0KIAotLSAoaWQpaW5p
dFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5OihSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5PiYmKXBlcm1pc3Npb25SZXF1ZXN0UHJveHkKKy0gKGlkKWluaXRXaXRoQ29t
cGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIK
IHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5ID0gV1RGTW92ZShwZXJtaXNz
aW9uUmVxdWVzdFByb3h5KTsKKyAgICBfY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClhbGxvdwogewot
ICAgIF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5LT5hbGxvdygpOworICAgIF9jb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKIH0KIAogLSAodm9pZClkZW55CiB7Ci0gICAgX3Blcm1pc3Npb25SZXF1ZXN0
UHJveHktPmRlbnkoKTsKKyAgICBfY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiAtICh2
b2lkKWRlbnlPbmx5VGhpc1JlcXVlc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320186</attachid>
            <date>2017-09-07 14:50:15 -0700</date>
            <delta_ts>2017-09-07 15:20:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176562-20170907145014.patch</filename>
            <type>text/plain</type>
            <size>26852</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgR2Vv
bG9jYXRpb24gcmVxdWVzdCBoYW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkmIHRvIGVhY2ggY2xpZW50IGFuZCByZXR1cm5pbmcgYSBib29sIGlmIHRoZSBy
ZXF1ZXN0IHdpbGwgYmUgaGFuZGxlZCwKKyAgICAgICAgcGFzcyBhIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIgYW5kIHJldHVybiB0aGUgZnVuY3Rpb24gaWYgaXQgd29u
J3QgYmUgaGFuZGxlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdG8gdGVtcG9yYXJpbHkgc3VwcG9y
dCBvdXIgVUlDbGllbnQvUGFnZUNsaWVudCBoeWJyaWQgZGVzaWduIHdoaWxlIG1vdmluZyB0b3dh
cmRzIGEgc2FuZSBkZXNpZ24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpGdW5jdGlvbjx2b2lkKToKKyAgICAgICAgKEFQ
STo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdl
VUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OmFsbG93KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpkZW55KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OmFsbG93KToKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6ZGVueSk6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6
OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZ1bmN0aW9u
PHZvaWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6Y29tcGxldGlv
bkhhbmRsZXI6dmlldzpdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF0pOgorICAgICAgICAo
LVtXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIGluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgYWxsb3ddKToKKyAg
ICAgICAgKC1bV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBkZW55XSk6CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOmZyYW1lOnJlcXVlc3Q6dmlldzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6XSk6IERlbGV0ZWQuCisKIDIwMTctMDktMDcgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgICBNb3ZlIG1vcmUgY29kZSBmcm9tIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MgdG8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCShyZXZpc2lvbiAyMjE3MDEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjoKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tYW5hZ2VyLT5k
aWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obV9nZW9sb2NhdGlvbklELCB0
cnVlKTsKLSAgICBtX21hbmFnZXIgPSAwOworICAgIG1fbWFuYWdlciA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpkZW55KCkKQEAgLTUxLDEy
ICs1MSwxMiBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6CiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBtX21hbmFnZXItPmRpZFJlY2VpdmVHZW9sb2NhdGlvblBl
cm1pc3Npb25EZWNpc2lvbihtX2dlb2xvY2F0aW9uSUQsIGZhbHNlKTsKLSAgICBtX21hbmFnZXIg
PSAwOworICAgIG1fbWFuYWdlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX21hbmFnZXIgPSAwOwor
ICAgIG1fbWFuYWdlciA9IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxNiArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eV9o
Ci0jZGVmaW5lIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTsKIAotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdD4geworY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFBy
b3h5IDogcHVibGljIFJlZkNvdW50ZWQ8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJveHk+IGNyZWF0ZShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KiBt
YW5hZ2VyLCB1aW50NjRfdCBnZW9sb2NhdGlvbklEKQogICAgIHsKQEAgLTUxLDYgKzUxLDIyIEBA
IHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9nZW9sb2NhdGlvbklEOwogfTsKIAotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CitjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYWxsb3coKSB7IG1fY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KKyAgICB2b2lkIGRl
bnkoKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiAKLSNlbmRpZiAvLyBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHlfaAorcHJpdmF0ZToKKyAgICBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKKyAgICB7IH0KKyAgICAKKyAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAyMjE3MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMCArMTQxLDEwIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0
eU9yaWdpbiYsIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpCi0gICAgewotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhN
RTogQWRvcHQgdGhlIFdLVUlEZWxlZ2F0ZVByaXZhdGUgY2FsbGJhY2sgb24gaU9TIGFuZCByZW1v
dmUgdGhpcy4KKyAgICB2aXJ0dWFsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSA9IDA7CisjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSgpIHsgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSgpIHsgfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24g
MjIxNzQzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTgxMSwxNCArNTgxMSwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9i
YWJseSBiZSB1c2luZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5z
dGVhZCBvZiBkYXRhYmFzZUlkZW50aWZpZXIoKS4KICAgICBhdXRvIG9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIob3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGF1dG8gcmVx
dWVzdCA9IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVz
dChnZW9sb2NhdGlvbklEKTsKLQotICAgIGlmIChtX3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsIG9yaWdpbi5nZXQoKSwg
cmVxdWVzdC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3BhZ2VDbGllbnQu
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqZnJhbWUsIG9yaWdp
bi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJlcXVlc3Qt
PmRlbnkoKTsKKyAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFty
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0oYm9vbCBhbGxvd2VkKSB7CisgICAgICAgIGlmIChh
bGxvd2VkKQorICAgICAgICAgICAgcmVxdWVzdC0+YWxsb3coKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVxdWVzdC0+ZGVueSgpOworICAgIH07CisKKyAgICAvLyBGSVhNRTogT25jZSBp
T1MgbWlncmF0ZXMgdG8gdGhlIG5ldyBXS1VJRGVsZWdhdGUgU1BJLCBjbGVhbiB0aGlzIHVwCisg
ICAgLy8gYW5kIG1ha2UgaXQgb25lIFVJQ2xpZW50IGNhbGwgdGhhdCBjYWxscyB0aGUgY29tcGxl
dGlvbkhhbmRsZXIgd2l0aCBmYWxzZQorICAgIC8vIGlmIHRoZXJlIGlzIG5vIGRlbGVnYXRlIGlu
c3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBjb21wbGV0aW9uSGFuZGxlcgorICAgIC8vIGZvciBvdGhl
ciBjb2RlIHBhdGhzIHRvIHRyeS4KKyAgICBjb21wbGV0aW9uSGFuZGxlciA9IG1fdWlDbGllbnQt
PmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMsICpmcmFt
ZSwgb3JpZ2luLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIgPSBtX3BhZ2VDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCgqZnJhbWUsIG9yaWdpbi5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworI2VuZGlmCisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDIyMTc0MykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw2IEBAIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7Ci1jbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBj
bGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgTmF0aXZlV2ViV2hlZWxFdmVudDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwpAQCAtMTI3LDcgKzEyNiw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYktpdDo6V2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIFdl
YktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOyB9CiAg
ICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgU2VjdXJpdHlP
cmlnaW4mLCBTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNoZWNrVXNlck1l
ZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSYsIFNlY3VyaXR5T3JpZ2luJiwgU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBTZWN1cml0eU9yaWdpbiosIFdlYktpdDo6Tm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QqKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDIyMTcwMSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNz
IERvd25sb2FkUHJveHk7Ci1jbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk7
CitjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsK
IGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CkBAIC0xMzEsNyArMTMxLDcg
QEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLRnJhbWVIYW5kbGVSZWYsIEFQSQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLRnJhbWVJbmZvUmVmLCBBUEk6OkZyYW1lSW5mbykKIFdLX0FERF9BUElfTUFQUElO
RyhXS0ZyYW1lUmVmLCBXZWJGcmFtZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLR2VvbG9j
YXRpb25NYW5hZ2VyUmVmLCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSkKLVdLX0FERF9BUElf
TUFQUElORyhXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eSkKK1dLX0FERF9BUElfTUFQUElORyhXS0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYsIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmLCBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLSGl0VGVzdFJlc3VsdFJlZiwgQVBJOjpIaXRUZXN0
UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLSWNvbkRhdGFiYXNlUmVmLCBXZWJJY29uRGF0
YWJhc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIy
MTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpBUElUeXBlKTsKKyAgICByZXR1cm4gdG9BUEkoR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6QVBJVHlwZSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0QWxsb3coV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIyMTc0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTMsMTMgKzE5NTMsMTMg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHkmIHBlcm1pc3Npb25SZXF1ZXN0KSBmaW5hbAorICAgICAgICBGdW5j
dGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cik7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSgmb3JpZ2lu
KSwgdG9BUEkoJnBlcm1pc3Npb25SZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZm
cmFtZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQSShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChX
ZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlz
c2lvblJlcXVlc3QpIGZpbmFsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmNwcAkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHN0YXRp
YyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVy
bWlzc2lvblJlcXVlc3RJZmFjZSopOwogCiBzdHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlIHsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiByZXF1ZXN0OworICAgIFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0PiByZXF1ZXN0OwogICAgIGJvb2wgbWFkZURlY2lzaW9uOwogfTsKIApAQCAtMTE1LDcgKzEx
NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW8KICAgICBvYmpl
Y3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REaXNw
b3NlOwogfQogCi1XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiB3ZWJraXRHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q3JlYXRlKEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eSogcmVxdWVzdCkKK1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdl
YmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KiBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gV0VCS0lUX0dFT0xPQ0FUSU9O
X1BFUk1JU1NJT05fUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05f
UEVSTUlTU0lPTl9SRVFVRVNULCBOVUxMKSk7CiAgICAgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC0+cHJpdi0+cmVxdWVzdCA9IHJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgJKHJldmlzaW9uIDIyMTcwMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDQgKzIxLDQgQEAKIAog
I2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKIAotV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENyZWF0ZShXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSop
OworV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVSUNsaWVudC5jcHAJKHJldmlzaW9uIDIyMTc0MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDExICsxODIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgZmluYWwKKyAgICBG
dW5jdGlvbjx2b2lkKGJvb2wpPiBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7
Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Q3JlYXRlKCZwZXJtaXNzaW9uUmVxdWVzdCkpOworICAgICAgICBHUmVm
UHRyPFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dENyZWF0ZShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpLnB0cigpKSk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlz
c2lvblJlcXVlc3QobV93ZWJWaWV3LCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFVRVNUKGdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQ
STo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShyZXZpc2lvbiAyMjE3MDEp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFnZUNsb3Nl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eSYpIG92ZXJyaWRlOworICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94
eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHJl
dmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM3LDEwICsyMzcsMTAgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkQ29tcGxldGVTeW50aGV0aQogICAgIFttX2NvbnRlbnRWaWV3IF9kaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrXTsKIH0KIAotYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkmIHJlcXVlc3QpCitGdW5jdGlvbjx2b2lkKGJvb2wpPiBQYWdlQ2xpZW50SW1wbDo6
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5
JiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFtbd3JhcHBlcihtX3dlYlZpZXctPl9wYWdl
LT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46b3JpZ2luLnNlY3VyaXR5T3JpZ2lu
KCkgZnJhbWU6ZnJhbWUgcmVxdWVzdDpyZXF1ZXN0IHZpZXc6bV93ZWJWaWV3XTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICBbW3dyYXBwZXIobV93ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnByb2Nl
c3NQb29sKCkpIF9nZW9sb2NhdGlvblByb3ZpZGVyXSBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blJlcXVlc3RGcm9tT3JpZ2luOm9yaWdpbi5zZWN1cml0eU9yaWdpbigpIGZyYW1lOmZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOldURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIHZpZXc6bV93ZWJWaWV3
XTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShyZXZpc2lvbiAyMjE3MDEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw2IEBAIHN0cnVjdCBIaWdobGlnaHQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgRHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgV2ViRnJhbWVQ
cm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgJKHJldmlzaW9uIDIy
MTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TT2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tCYXNlLmg+CisjaW1wb3J0IDx3
dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CiB9CkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBA
aW50ZXJmYWNlIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyA6IE5TT2JqZWN0CiAtKGlkKWluaXRX
aXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sOwotLSh2
b2lkKWRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdlYktpdDo6V2ViRnJhbWVQcm94eSYpZnJh
bWUgcmVxdWVzdDooV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKXBl
cm1pc3Npb25SZXF1ZXN0IHZpZXc6KFdLV2ViVmlldyopdmlldzsKKy0odm9pZClkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYpb3JpZ2luIGZyYW1lOihXZWJLaXQ6OldlYkZyYW1lUHJveHkmKWZyYW1lIGNvbXBsZXRpb25I
YW5kbGVyOihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyIHZpZXc6KFdL
V2ViVmlldyopdmlldzsKIEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbQkocmV2aXNpb24gMjIxNzAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNiBAQAogI2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElTZWN1cml0eU9y
aWdpbi5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgotI2ltcG9y
dCAiR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCiAjaW1wb3J0ICJXS0ZyYW1l
SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9uTWFuYWdlci5oIgogI2ltcG9y
dCAiV0tQcm9jZXNzUG9vbEludGVybmFsLmgiCkBAIC02Nyw3ICs2Niw3IEBAIEBpbnRlcmZhY2Ug
V0tMZWdhY3lDb3JlTG9jYXRpb25Qcm92aWRlciAKIEBlbmQKIAogQGludGVyZmFjZSBXS1dlYkFs
bG93RGVueVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVu
ZXI+Ci0tIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYpcGVybWlzc2lvblJlcXVlc3RQcm94eTsKKy0g
KGlkKWluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpY29t
cGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWRlbnlPbmx5VGhpc1JlcXVlc3QgTk9fUkVUVVJOX0RV
RV9UT19BU1NFUlQ7CiBAZW5kCiAKQEAgLTgzLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSBSZWY8
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewog
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwogICAgIFJlZlB0cjxXZWJGcmFtZVBy
b3h5PiBmcmFtZTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
PiBwZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9u
SGFuZGxlcjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB2aWV3OwogfTsKIApAQCAtMTY4LDE1
ICsxNjcsMTUgQEAgLShpZClpbml0V2l0aFByb2Nlc3NQb29sOihXZWJQcm9jZXNzUG9vbAogICAg
IHJldHVybiBzZWxmOwogfQogCi0tKHZvaWQpZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1
ZXN0RnJvbU9yaWdpbjooU2VjdXJpdHlPcmlnaW4mKW9yaWdpbiBmcmFtZTooV2ViRnJhbWVQcm94
eSYpZnJhbWUgcmVxdWVzdDooR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5JilwZXJt
aXNzaW9uUmVxdWVzdCB2aWV3OihXS1dlYlZpZXcqKWNvbnRlbnRWaWV3CistKHZvaWQpZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooU2VjdXJpdHlPcmlnaW4mKW9y
aWdpbiBmcmFtZTooV2ViRnJhbWVQcm94eSYpZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIgdmlldzooV0tXZWJWaWV3Kiljb250
ZW50VmlldwogewogICAgIC8vIFN0ZXAgMTogYXNrIHRoZSB1c2VyIGlmIHRoZSBhcHAgY2FuIHVz
ZSBHZW9sb2NhdGlvbi4KICAgICBHZW9sb2NhdGlvblJlcXVlc3REYXRhIGdlb2xvY2F0aW9uUmVx
dWVzdERhdGE7CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5vcmlnaW4gPSAmb3JpZ2luOwog
ICAgIGdlb2xvY2F0aW9uUmVxdWVzdERhdGEuZnJhbWUgPSAmZnJhbWU7Ci0gICAgZ2VvbG9jYXRp
b25SZXF1ZXN0RGF0YS5wZXJtaXNzaW9uUmVxdWVzdCA9ICZwZXJtaXNzaW9uUmVxdWVzdDsKKyAg
ICBnZW9sb2NhdGlvblJlcXVlc3REYXRhLmNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS52aWV3ID0gY29udGVu
dFZpZXc7Ci0gICAgX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24u
YXBwZW5kKGdlb2xvY2F0aW9uUmVxdWVzdERhdGEpOworICAgIF9yZXF1ZXN0c1dhaXRpbmdGb3JD
b3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFwcGVuZChXVEZNb3ZlKGdlb2xvY2F0aW9uUmVxdWVz
dERhdGEpKTsKICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHJlcXVlc3RHZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25dOwogfQogQGVuZApAQCAtMTg5LDcgKzE4OCw3IEBAIC0gKHZvaWQpZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAogewogICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2Vy
IGlmIHRoZSB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCiAgICAgVmVj
dG9yPEdlb2xvY2F0aW9uUmVxdWVzdERhdGE+IHJlcXVlc3RzID0gV1RGTW92ZShfcmVxdWVzdHNX
YWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0
cykgewogICAgICAgICBib29sIHJlcXVpcmVzVXNlckF1dGhvcml6YXRpb24gPSB0cnVlOwogCiAg
ICAgICAgIGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxp
ZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtyZXF1ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwpAQCAt
MTk3LDE0ICsxOTYsMTIgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiAgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51
cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdy
YXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVl
c3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgICAgICAgICBbdWlE
ZWxlZ2F0ZSBfd2ViVmlldzpyZXF1ZXN0LnZpZXcuZ2V0KCkgcmVxdWVzdEdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRl
Y2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtyZXF1ZXN0
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CisgICAgICAg
ICAgICBXS1dlYlZpZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKKyAg
ICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUlu
Zm8uZ2V0KCkgZGVjaXNpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0oQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBs
ZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgaWYgKGF1dGhvcml6ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QucGVybWlzc2lvblJlcXVlc3QtPmFsbG93KCk7Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnBlcm1pc3Npb25SZXF1ZXN0LT5kZW55KCk7CiAg
ICAgICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKICAgICAg
ICAgICAgIH0pLmdldCgpXTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjIx
LDEwICsyMTgsMTAgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAocmVxdWlyZXNVc2VyQXV0aG9yaXphdGlvbikgewotICAg
ICAgICAgICAgUmV0YWluUHRyPFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+IHBvbGljeUxp
c3RlbmVyID0gYWRvcHROUyhbW1dLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgYWxsb2NdIGlu
aXRXaXRoUGVybWlzc2lvblJlcXVlc3RQcm94eTpyZXF1ZXN0LnBlcm1pc3Npb25SZXF1ZXN0Lmdl
dCgpXSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5l
cj4gcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtbV0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKHJlcXVlc3QuY29tcGxl
dGlvbkhhbmRsZXIpXSk7CiAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJl
cXVlc3RGcm9tT3JpZ2luKHJlcXVlc3Qub3JpZ2luLmdldCgpLCByZXF1ZXN0LmZyYW1lLT51cmwo
KSwgcG9saWN5TGlzdGVuZXIuZ2V0KCksIFtyZXF1ZXN0LnZpZXcgd2luZG93XSk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgcmVxdWVzdC5wZXJtaXNzaW9uUmVxdWVzdC0+YWxsb3coKTsK
KyAgICAgICAgICAgIHJlcXVlc3QuY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgfQogfQog
CkBAIC0yMzIsNyArMjI5LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5p
ZWQKIHsKICAgICBWZWN0b3I8R2VvbG9jYXRpb25SZXF1ZXN0RGF0YT4gcmVxdWVzdHMgPSBXVEZN
b3ZlKF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHJlcXVlc3REYXRhIDogcmVxdWVzdHMpCi0gICAgICAgIHJlcXVlc3RE
YXRhLnBlcm1pc3Npb25SZXF1ZXN0LT5kZW55KCk7CisgICAgICAgIHJlcXVlc3REYXRhLmNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAogLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KF9XS0dl
b2xvY2F0aW9uUG9zaXRpb24gKilwb3NpdGlvbgpAQCAtMzMwLDI3ICszMjcsMjcgQEAgLSAodm9p
ZClyZXNldEdlb2xvY2F0aW9uCiAKICMgcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBX
S1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyCiBAaW1wbGVtZW50YXRpb24gV0tXZWJBbGxvd0Rl
bnlQb2xpY3lMaXN0ZW5lciB7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcm94eT4gX3Blcm1pc3Npb25SZXF1ZXN0UHJveHk7CisgICAgRnVuY3Rpb248dm9pZChib29s
KT4gX2NvbXBsZXRpb25IYW5kbGVyOwogfQogCi0tIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYpcGVy
bWlzc2lvblJlcXVlc3RQcm94eQorLSAoaWQpaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjooRnVu
Y3Rpb248dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcgogewogICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3Bl
cm1pc3Npb25SZXF1ZXN0UHJveHkgPSBXVEZNb3ZlKHBlcm1pc3Npb25SZXF1ZXN0UHJveHkpOwor
ICAgIF9jb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAg
IHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKWFsbG93CiB7Ci0gICAgX3Blcm1pc3Npb25SZXF1
ZXN0UHJveHktPmFsbG93KCk7CisgICAgX2NvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCiAt
ICh2b2lkKWRlbnkKIHsKLSAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eS0+ZGVueSgpOworICAg
IF9jb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKIC0gKHZvaWQpZGVueU9ubHlUaGlzUmVx
dWVzdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>