<?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>172869</bug_id>
          
          <creation_ts>2017-06-02 12:57:46 -0700</creation_ts>
          <short_desc>Prevent scheme handlers from handling all built-in URL schemes</short_desc>
          <delta_ts>2017-06-02 16:07: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>WebKit2</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315175</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-02 12:57:46 -0700</bug_when>
    <thetext>Prevent scheme handlers from handling all built-in URL schemes

&lt;rdar://problem/32404790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315213</commentid>
    <comment_count>1</comment_count>
      <attachid>311860</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-02 14:25:57 -0700</bug_when>
    <thetext>Created attachment 311860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315222</commentid>
    <comment_count>2</comment_count>
      <attachid>311860</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-06-02 14:47:37 -0700</bug_when>
    <thetext>Comment on attachment 311860
Patch

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

&gt; Source/WebCore/platform/SchemeRegistry.cpp:63
&gt; +        // Other misc schemes that the SchemeRegistry doesn&apos;t know about.
&gt; +        schemes.get().add(&quot;webkit-fake-url&quot;);
&gt; +#if PLATFORM(MAC)
&gt; +        schemes.get().add(&quot;safari-extension&quot;);
&gt; +#endif

There&apos;s also x-apple-ql-id (QLPreviewProtocol()) and x-apple-content-filter (ContentFilter::urlScheme()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315229</commentid>
    <comment_count>3</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-06-02 14:57:22 -0700</bug_when>
    <thetext>What happens if someone tries to register schemes used by system apps (tel:, mailto:, etc.)? Those were probably hijackable by NSURLProtocol, so maybe they should be hijackable here too. Just wondering if you&apos;d thought about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315235</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-02 15:02:59 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #3)
&gt; What happens if someone tries to register schemes used by system apps (tel:,
&gt; mailto:, etc.)? Those were probably hijackable by NSURLProtocol, so maybe
&gt; they should be hijackable here too. Just wondering if you&apos;d thought about it.

We have thought about it, and they definitely get to be hijackable. They are not URLs WebKit handles internally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315242</commentid>
    <comment_count>5</comment_count>
      <attachid>311870</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-02 15:11:19 -0700</bug_when>
    <thetext>Created attachment 311870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315246</commentid>
    <comment_count>6</comment_count>
      <attachid>311870</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-06-02 15:15:28 -0700</bug_when>
    <thetext>Comment on attachment 311870
Patch

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

&gt; Source/WebCore/platform/SchemeRegistry.cpp:73
&gt; +#if PLATFORM(IOS)
&gt; +        schemes.get().add(QLPreviewProtocol());
&gt; +#endif

This might break tvOS and watchOS builds. I&apos;d use USE(QUICK_LOOK) instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315250</commentid>
    <comment_count>7</comment_count>
      <attachid>311874</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-02 15:17:47 -0700</bug_when>
    <thetext>Created attachment 311874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315265</commentid>
    <comment_count>8</comment_count>
      <attachid>311874</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-02 16:07:12 -0700</bug_when>
    <thetext>Comment on attachment 311874
Patch

Clearing flags on attachment: 311874

Committed r217738: &lt;http://trac.webkit.org/changeset/217738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315266</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-02 16:07:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311860</attachid>
            <date>2017-06-02 14:25:57 -0700</date>
            <delta_ts>2017-06-02 15:11:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172869-20170602142557.patch</filename>
            <type>text/plain</type>
            <size>14221</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3NWY2MDBiOWJiMTBk
YzAxNDBjZGI0ODk4YWNkMzkwMTI0MzllZS4uMTg4ZWVkYTI5ZGFiOTg4ODAwMDE0NzY1YzFlYzZi
Zjc4YTg2NzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2ZW50IHNjaGVtZSBo
YW5kbGVycyBmcm9tIGhhbmRsaW5nIGFsbCBidWlsdC1pbiBVUkwgc2NoZW1lcy4KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyNDA0NzkwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Mjg2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBy
ZWZhY3RvcnMgU2NoZW1lUmVnaXN0cnkgdG8ga2VlcCBhIGJhc2UsIGNvbnN0YW50IHNldCBvZiBl
YWNoIG9mIHRoZSBzcGVjaWFsCisgICAgICAgIFVSTCBzY2hlbWVzIHRoYXQgV2ViS2l0IGtub3dz
IGFib3V0IGJ5IGRlZmF1bHQuCisgICAgICAgIAorICAgICAgICBJdCB0aGVuIGV4cG9zZXMgdGhh
dCBsaXN0IHRocm91Z2ggYSBuZXcgbWV0aG9kIHRvIHN1cHBvcnQgV0syIEFQSS4KKworICAgICAg
ICAqIHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1
aWx0aW5TY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNlY3VyZVNjaGVtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmVt
cHR5RG9jdW1lbnRTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3RTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5
OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsdGluQ09SU0VuYWJsZWRTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNPUlNFbmFibGVk
U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2No
ZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCiAyMDE3LTA1LTMx
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCA8
Y2hyb25vPiBvdXQgb2YgU3RkTGliRXh0cmFzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiNDRkMTJlNTAzYzk4
NTAwYTFhMGNmYTMxOTMyNDRkYzJhNmUyOTIxLi5jYzBiMzhmNjM3ZmU3Y2FiMzc2ZGIzMTNmNjE2
NDA5MDI1MTViNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDIgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByZXZlbnQgc2NoZW1l
IGhhbmRsZXJzIGZyb20gaGFuZGxpbmcgYWxsIGJ1aWx0LWluIFVSTCBzY2hlbWVzLgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzI0MDQ3OTA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKCtbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6XSk6IENoZWNrIGFnYWluc3QgV2ViQ29y
ZSdzIG5ldyBtYXN0ZXIgbGlzdCBvZiBVUkwgc2NoZW1lcy4KKwogMjAxNy0wNS0zMSAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgPGNocm9ubz4g
b3V0IG9mIFN0ZExpYkV4dHJhcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdp
c3RyeS5jcHAKaW5kZXggNjRlMzU2Mzk2ZGM5ZGY5MTIzMzZiZDhiZmViYmRmYzM1NzAxZGNjZS4u
ZmQ4NTRhNmI5NzhmNDE0MWZjODQ0OTU3ODY3MzY4NThiYmY1ZTQ2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMjUsMjAgKzI1LDY3IEBACiAgKi8K
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorCisjaW5j
bHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMg
Y29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpOworc3RhdGljIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpOworc3RhdGljIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCk7CitzdGF0
aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcygpOwor
c3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RTY2hlbWVzKCk7CitzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5DT1JT
RW5hYmxlZFNjaGVtZXMoKTsKKworc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0
aW5TY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
c2NoZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCisgICAgICAg
ICAgICBzY2hlbWVzLmdldCgpLmFkZChzY2hlbWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHNjaGVtZSA6IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkpCisgICAgICAgICAgICBzY2hlbWVzLmdl
dCgpLmFkZChzY2hlbWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0
aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKSkKKyAgICAgICAgICAgIHNjaGVtZXMuZ2V0KCku
YWRkKHNjaGVtZSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpbkVt
cHR5RG9jdW1lbnRTY2hlbWVzKCkpCisgICAgICAgICAgICBzY2hlbWVzLmdldCgpLmFkZChzY2hl
bWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5DYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKSkKKyAgICAgICAgICAgIHNjaGVtZXMuZ2V0KCkuYWRk
KHNjaGVtZSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpbkNPUlNF
bmFibGVkU2NoZW1lcygpKQorICAgICAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsK
KworICAgICAgICAvLyBPdGhlciBtaXNjIHNjaGVtZXMgdGhhdCB0aGUgU2NoZW1lUmVnaXN0cnkg
ZG9lc24ndCBrbm93IGFib3V0LgorICAgICAgICBzY2hlbWVzLmdldCgpLmFkZCgid2Via2l0LWZh
a2UtdXJsIik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBzY2hlbWVzLmdldCgpLmFkZCgi
c2FmYXJpLWV4dGVuc2lvbiIpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7
Cit9CisKK2NvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOworICAgIGlm
IChzY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVzLmdldCgpLmFkZCgi
ZmlsZSIpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBzY2hlbWVzLmdldCgpLmFkZCgi
YXBwbGV3ZWJkYXRhIik7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gc2NoZW1lczsKK30K
Kwogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGxvY2FsVVJMU2NoZW1lcygpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGxvY2FsU2NoZW1lczsKIAogICAgIGlmIChs
b2NhbFNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxvY2FsU2NoZW1lcy5nZXQo
KS5hZGQoImZpbGUiKTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbG9jYWxTY2hlbWVz
LmdldCgpLmFkZCgiYXBwbGV3ZWJkYXRhIik7Ci0jZW5kaWYKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCisgICAgICAgICAgICBsb2Nh
bFNjaGVtZXMuZ2V0KCkuYWRkKHNjaGVtZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGxvY2FsU2No
ZW1lczsKQEAgLTUwLDQ0ICs5Nyw4MSBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlz
b2xhdGVkVVJMU2NoZW1lcygpCiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiB9
CiAKK2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBzY2hlbWVzOworICAgIGlmIChz
Y2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVzLmdldCgpLmFwcGVuZCgi
aHR0cHMiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hcHBlbmQoImFib3V0Iik7CisgICAgICAg
IHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJkYXRhIik7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBw
ZW5kKCJ3c3MiKTsKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICAgICAg
c2NoZW1lcy5nZXQoKS5hcHBlbmQoInJlc291cmNlIik7CisjZW5kaWYKKyAgICAgICAgc2NoZW1l
cy5nZXQoKS5zaHJpbmtUb0ZpdCgpOworICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOworfQor
CiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNlY3VyZVNjaGVtZXM7CiAKICAgICBpZiAoc2Vj
dXJlU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQo
KS5hZGQoImh0dHBzIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91dCIp
OwotICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiZGF0YSIpOwotICAgICAgICBzZWN1
cmVTY2hlbWVzLmdldCgpLmFkZCgid3NzIik7Ci0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCi0gICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJyZXNvdXJjZSIpOwotI2Vu
ZGlmCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpblNlY3VyZVNjaGVt
ZXMoKSkKKyAgICAgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKHNjaGVtZSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHNlY3VyZVNjaGVtZXM7CiB9CiAKK2NvbnN0IFZlY3RvcjxTdHJpbmc+
JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNjaGVtZXMuZ2V0KCku
aXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJhYm91dCIpOworICAg
ICAgICBzY2hlbWVzLmdldCgpLmFwcGVuZCgiamF2YXNjcmlwdCIpOworICAgICAgICAvLyBUaGlz
IGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUuCisgICAgICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKKyAgICAgICAgc2NoZW1lcy5n
ZXQoKS5hcHBlbmQoImRhdGEiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5zaHJpbmtUb0ZpdCgp
OworICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2NoZW1lc01h
cCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogCiAgICAgaWYgKHNj
aGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiYWJvdXQiKTsKLSAgICAgICAgc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOwotICAgICAgICAvLyBUaGlz
IGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUuCi0gICAgICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKLSAgICAgICAgc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiZGF0YSIpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHNjaGVtZSA6IGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKSkKKyAgICAgICAg
ICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQoc2NoZW1lKTsKICAgICB9CiAK
ICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogfQogCitjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNjaGVtZXMuZ2V0
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJhYm91dCIpOwor
ICAgICAgICBzY2hlbWVzLmdldCgpLnNocmlua1RvRml0KCk7CisgICAgfQorCisgICAgcmV0dXJu
IHNjaGVtZXM7Cit9CisKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0eURvY3VtZW50U2NoZW1l
cygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGVtcHR5RG9j
dW1lbnRTY2hlbWVzOwogCi0gICAgaWYgKGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmlzRW1w
dHkoKSkKLSAgICAgICAgZW1wdHlEb2N1bWVudFNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91dCIpOwor
ICAgIGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKSkK
KyAgICAgICAgICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmFkZChzY2hlbWUpOworICAg
IH0KIAogICAgIHJldHVybiBlbXB0eURvY3VtZW50U2NoZW1lczsKIH0KQEAgLTk4LDEyICsxODIs
MjQgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBz
Y2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGEKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAor
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gc2No
ZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1l
cy5nZXQoKS5hcHBlbmQoImJsb2IiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5zaHJpbmtUb0Zp
dCgpOworICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2NoZW1l
c01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RT
Y2hlbWVzOwogCiAgICAgaWYgKGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5nZXQo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVz
LmdldCgpLmFkZCgiYmxvYiIpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1
aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKSkKKyAgICAgICAgICAgIGNh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsKICAgICB9
CiAKICAgICByZXR1cm4gY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzOwpAQCAtMTIy
LDEyICsyMTgsOSBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9j
YWwoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVS
TFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUsICJmaWxlIikpCisgICAgaWYg
KGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpKQogICAgICAgICByZXR1
cm47Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHNjaGVtZSwgImFwcGxld2ViZGF0YSIpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYK
KwogICAgIGxvY2FsVVJMU2NoZW1lcygpLnJlbW92ZShzY2hlbWUpOwogfQogCkBAIC0xNDgsMTQg
KzI0MSwyNiBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VB
Y2Nlc3NJblByaXZhdGVCcm93c2luZygpCiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFi
YXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiB9CiAKK2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
dWlsdGluQ09SU0VuYWJsZWRTY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgp
KSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJodHRwIik7CisgICAgICAgIHNjaGVt
ZXMuZ2V0KCkuYXBwZW5kKCJodHRwcyIpOworICAgICAgICBzY2hlbWVzLmdldCgpLnNocmlua1Rv
Rml0KCk7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKIHN0YXRpYyBVUkxTY2hl
bWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogewogICAgIC8vIEZJWE1FOiBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE2MAogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVUkxTY2hlbWVzTWFwPiBDT1JTRW5hYmxlZFNjaGVtZXM7CiAKICAgICBpZiAoQ09SU0Vu
YWJsZWRTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBDT1JTRW5hYmxlZFNjaGVt
ZXMuZ2V0KCkuYWRkKCJodHRwIik7Ci0gICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5nZXQoKS5h
ZGQoImh0dHBzIik7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpbkNP
UlNFbmFibGVkU2NoZW1lcygpKQorICAgICAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgp
LmFkZChzY2hlbWUpOwogICAgIH0KIAogICAgIHJldHVybiBDT1JTRW5hYmxlZFNjaGVtZXM7CkBA
IC0zNjMsNCArNDY4LDkgQEAgYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9uU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBT
Y2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQorewor
ICAgIHJldHVybiBhbGxCdWlsdGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFy
c2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgKaW5kZXggY2Q2ZjRiZWY1
YWYyMThmZGUzNDM2MjM5MGM2NTExYjdlMWQ0NWVkYy4uOWMwYTYwYTdmMmYxNjQ0MTcwOThhNzQ4
NDU0YTNlMmM3NGJjOTdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2No
ZW1lUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3Ry
eS5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVVJMU2NoZW1l
c01hcCYgbG9jYWxTY2hlbWVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJik7Ci0KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBpc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJik7CisgICAg
CiAgICAgLy8gU2VjdXJlIHNjaGVtZXMgZG8gbm90IHRyaWdnZXIgbWl4ZWQgY29udGVudCB3YXJu
aW5ncy4gRm9yIGV4YW1wbGUsCiAgICAgLy8gaHR0cHMgYW5kIGRhdGEgYXJlIHNlY3VyZSBzY2hl
bWVzIGJlY2F1c2UgdGhleSBjYW5ub3QgYmUgY29ycnVwdGVkIGJ5CiAgICAgLy8gYWN0aXZlIG5l
dHdvcmsgYXR0YWNrZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA2NDkyZGZmMWYzNmI3MDUzYjA5YTBmMWFjODg3OTAxMWFkZTBj
ODVhLi4xNjQyMDU4MjdmNGYwZWVmODg1NjljYzA5MTQ3ZDEwNzE4ZDVlODJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTksOSAr
OTksOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRTdHJlYW0u
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlk
YXRpb25CdWJibGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4KQEAgLTM2MzAsNyArMzYzMCw3IEBAIC0gKGlk
IDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3Ry
aW5nICopdXJsU2NoZW1lCiAKICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNTdHJpbmcgKil1
cmxTY2hlbWUKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hl
bWUodXJsU2NoZW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OmlzQnVp
bHRpblNjaGVtZSh1cmxTY2hlbWUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTEzOWYzY2EzZjU4YjVkOTgzNGVlYWY1MjFk
ODY0NTdhYjE3YmMyZC4uNjg4MGE5YmZlZDQ5NDc4MjU2NTI0YzFkYjQyYTk3ZWY3OGMxNTdhYyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE3LTA2LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBQcmV2ZW50IHNjaGVtZSBoYW5kbGVycyBmcm9tIGhhbmRsaW5nIGFsbCBidWls
dC1pbiBVUkwgc2NoZW1lcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNDA0NzkwPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisKIDIwMTctMDUtMzEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IDxj
aHJvbm8+IG91dCBvZiBTdGRMaWJFeHRyYXMuaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpp
bmRleCAyZjllZDNlZmIyZWY1NmVlMjFmMDFkNGI0MDQwOGNmYmI2M2Y3OTc0Li40NjM5NzhhZGQ3
NTM2ZjBiMjYxNzE4ZDgwYmFmMWQ1NTA3NzM2OTE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIt
MS5tbQpAQCAtMTQ3LDUgKzE0Nyw0MSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIE5vTUlNRVR5
cGUpCiAgICAgRVhQRUNUX1RSVUUoW1toYW5kbGVyLmdldCgpLnN0b3BwZWRVUkxzIG9iamVjdEF0
SW5kZXg6MF0gaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Rpbmc6bWFpbiJdXSk7
CiB9CiAKK3N0YXRpYyBOU1N0cmluZyAqc2NoZW1lc1tdID0geworICAgIEAiYWJvdXQiLAorICAg
IEAiYXBwbGV3ZWJkYXRhIiwKKyAgICBAImJsb2IiLAorICAgIEAiZGF0YSIsCisgICAgQCJmaWxl
IiwKKyAgICBAImZ0cCIsCisgICAgQCJnb3BoZXIiLAorICAgIEAiaHR0cCIsCisgICAgQCJodHRw
cyIsCisgICAgQCJqYXZhc2NyaXB0IiwKKyAgICBAInNhZmFyaS1leHRlbnNpb24iLAorICAgIEAi
d2Via2l0LWZha2UtdXJsIiwKKyAgICBAIndzIiwKKyAgICBAIndzcyIsCit9OworCitURVNUKFVS
TFNjaGVtZUhhbmRsZXIsIEJ1aWx0aW5TY2hlbWVzKQoreworICAgIFJldGFpblB0cjxXS1dlYlZp
ZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8U2NoZW1lSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aERhdGE6bmlsIG1p
bWVUeXBlOm5pbF0pOworCisgICAgZm9yIChOU1N0cmluZyAqc2NoZW1lIDogc2NoZW1lcykgewor
ICAgICAgICBFWFBFQ1RfVFJVRShbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6c2NoZW1lXSk7
CisKKyAgICAgICAgYm9vbCBleGNlcHRpb25SYWlzZWQgPSBmYWxzZTsKKyAgICAgICAgQHRyeSB7
CisgICAgICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOnNjaGVtZV07CisgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoTlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24sIGV4Y2VwdGlvbi5uYW1lKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblJh
aXNlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX1RSVUUoZXhjZXB0aW9uUmFp
c2VkKTsKKyAgICB9Cit9CisKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311870</attachid>
            <date>2017-06-02 15:11:19 -0700</date>
            <delta_ts>2017-06-02 15:17:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172869-20170602151119.patch</filename>
            <type>text/plain</type>
            <size>14649</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3NWY2MDBiOWJiMTBk
YzAxNDBjZGI0ODk4YWNkMzkwMTI0MzllZS4uYTFlYTA4ZDRjN2VkZjRiMDFmZjMwYzgyYTliMzc0
Mjk3ODkyNTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2ZW50IHNjaGVtZSBo
YW5kbGVycyBmcm9tIGhhbmRsaW5nIGFsbCBidWlsdC1pbiBVUkwgc2NoZW1lcy4KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyNDA0NzkwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Mjg2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisK
KyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdC4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFj
dG9ycyBTY2hlbWVSZWdpc3RyeSB0byBrZWVwIGEgYmFzZSwgY29uc3RhbnQgc2V0IG9mIGVhY2gg
b2YgdGhlIHNwZWNpYWwKKyAgICAgICAgVVJMIHNjaGVtZXMgdGhhdCBXZWJLaXQga25vd3MgYWJv
dXQgYnkgZGVmYXVsdC4KKyAgICAgICAgCisgICAgICAgIEl0IHRoZW4gZXhwb3NlcyB0aGF0IGxp
c3QgdGhyb3VnaCBhIG5ldyBtZXRob2QgdG8gc3VwcG9ydCBXSzIgQVBJLgorCisgICAgICAgICog
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsQnVpbHRp
blNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpbkxvY2FsVVJMU2NoZW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2NhbFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVp
bHRpblNlY3VyZVNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2VjdXJlU2NoZW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlE
b2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpbkNhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpjYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJl
bW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0
aW5DT1JTRW5hYmxlZFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q09SU0VuYWJsZWRTY2hl
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5Lmg6CisKIDIwMTctMDUtMzEgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IDxjaHJv
bm8+IG91dCBvZiBTdGRMaWJFeHRyYXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI0NGQxMmU1MDNjOTg1MDBh
MWEwY2ZhMzE5MzI0NGRjMmE2ZTI5MjEuLmU3NjlhMzA3M2U4NzdlMDliYWI2ODdhYzllMTRjMDcw
OGQ0YTg0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0wMiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBzY2hlbWUgaGFu
ZGxlcnMgZnJvbSBoYW5kbGluZyBhbGwgYnVpbHQtaW4gVVJMIHNjaGVtZXMuCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMjQwNDc5MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI4NjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgrW1dL
V2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOl0pOiBDaGVjayBhZ2FpbnN0IFdlYkNvcmUncyBuZXcg
bWFzdGVyIGxpc3Qgb2YgVVJMIHNjaGVtZXMuCisKIDIwMTctMDUtMzEgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IDxjaHJvbm8+IG91dCBvZiBT
dGRMaWJFeHRyYXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3Bw
CmluZGV4IDY0ZTM1NjM5NmRjOWRmOTEyMzM2YmQ4YmZlYmJkZmMzNTcwMWRjY2UuLmQwYThjNDI4
ZWYxMjkxMzU1YTQ4OGMyNmEwMzQ2NzVlYjVkZWU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTI1LDIwICsyNSw4MCBAQAogICovCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIlVS
TFBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaW5jbHVk
ZSAiQ29udGVudEZpbHRlci5oIgorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUg
IlF1aWNrTG9vay5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNv
bnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKTsKK3N0YXRpYyBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKTsKK3N0YXRpYyBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpOworc3RhdGlj
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKTsKK3N0
YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lcygpOworc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluQ09SU0Vu
YWJsZWRTY2hlbWVzKCk7CisKK3N0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBhbGxCdWlsdGlu
U2NoZW1lcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNj
aGVtZXM7CisgICAgaWYgKHNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpKQorICAgICAgICAg
ICAgc2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
Y2hlbWUgOiBidWlsdGluU2VjdXJlU2NoZW1lcygpKQorICAgICAgICAgICAgc2NoZW1lcy5nZXQo
KS5hZGQoc2NoZW1lKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGlu
U2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkpCisgICAgICAgICAgICBzY2hlbWVzLmdldCgpLmFk
ZChzY2hlbWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5FbXB0
eURvY3VtZW50U2NoZW1lcygpKQorICAgICAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1l
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluQ2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3RTY2hlbWVzKCkpCisgICAgICAgICAgICBzY2hlbWVzLmdldCgpLmFkZChz
Y2hlbWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5DT1JTRW5h
YmxlZFNjaGVtZXMoKSkKKyAgICAgICAgICAgIHNjaGVtZXMuZ2V0KCkuYWRkKHNjaGVtZSk7CisK
KyAgICAgICAgLy8gT3RoZXIgbWlzYyBzY2hlbWVzIHRoYXQgdGhlIFNjaGVtZVJlZ2lzdHJ5IGRv
ZXNuJ3Qga25vdyBhYm91dC4KKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoIndlYmtpdC1mYWtl
LXVybCIpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoInNh
ZmFyaS1leHRlbnNpb24iKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgc2No
ZW1lcy5nZXQoKS5hZGQoUUxQcmV2aWV3UHJvdG9jb2woKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYWRkKENvbnRlbnRGaWx0
ZXI6OnVybFNjaGVtZSgpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOwor
fQorCitjb25zdCBVUkxTY2hlbWVzTWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKKyAgICBpZiAo
c2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoImZp
bGUiKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoImFw
cGxld2ViZGF0YSIpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisK
IHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBsb2NhbFNjaGVtZXM7CiAKICAgICBpZiAobG9j
YWxTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBsb2NhbFNjaGVtZXMuZ2V0KCku
YWRkKCJmaWxlIik7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGxvY2FsU2NoZW1lcy5n
ZXQoKS5hZGQoImFwcGxld2ViZGF0YSIpOwotI2VuZGlmCisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgc2NoZW1lIDogYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpKQorICAgICAgICAgICAgbG9jYWxT
Y2hlbWVzLmdldCgpLmFkZChzY2hlbWUpOwogICAgIH0KIAogICAgIHJldHVybiBsb2NhbFNjaGVt
ZXM7CkBAIC01MCw0NCArMTEwLDgxIEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5SXNv
bGF0ZWRVUkxTY2hlbWVzKCkKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKIH0K
IAorY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNj
aGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJo
dHRwcyIpOworICAgICAgICBzY2hlbWVzLmdldCgpLmFwcGVuZCgiYWJvdXQiKTsKKyAgICAgICAg
c2NoZW1lcy5nZXQoKS5hcHBlbmQoImRhdGEiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hcHBl
bmQoIndzcyIpOworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgICAgICBz
Y2hlbWVzLmdldCgpLmFwcGVuZCgicmVzb3VyY2UiKTsKKyNlbmRpZgorICAgICAgICBzY2hlbWVz
LmdldCgpLnNocmlua1RvRml0KCk7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisK
IHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVzKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2VjdXJlU2NoZW1lczsKIAogICAgIGlmIChzZWN1
cmVTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgp
LmFkZCgiaHR0cHMiKTsKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoImFib3V0Iik7
Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJkYXRhIik7Ci0gICAgICAgIHNlY3Vy
ZVNjaGVtZXMuZ2V0KCkuYWRkKCJ3c3MiKTsKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoInJlc291cmNlIik7Ci0jZW5k
aWYKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluU2VjdXJlU2NoZW1l
cygpKQorICAgICAgICAgICAgc2VjdXJlU2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsKICAgICB9
CiAKICAgICByZXR1cm4gc2VjdXJlU2NoZW1lczsKIH0KIAorY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gc2NoZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hcHBlbmQoImFib3V0Iik7CisgICAg
ICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIC8vIFRoaXMg
aXMgYSB3aWxsZnVsIHZpb2xhdGlvbiBvZiBIVE1MNS4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg4NQorICAgICAgICBzY2hlbWVzLmdl
dCgpLmFwcGVuZCgiZGF0YSIpOworICAgICAgICBzY2hlbWVzLmdldCgpLnNocmlua1RvRml0KCk7
CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKIHN0YXRpYyBVUkxTY2hlbWVzTWFw
JiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiAKICAgICBpZiAoc2No
ZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVz
V2l0aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuYWRkKCJhYm91dCIpOwotICAgICAgICBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuYWRkKCJqYXZhc2NyaXB0Iik7Ci0gICAgICAgIC8vIFRoaXMg
aXMgYSB3aWxsZnVsIHZpb2xhdGlvbiBvZiBIVE1MNS4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg4NQotICAgICAgICBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnMuZ2V0KCkuYWRkKCJkYXRhIik7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgc2NoZW1lIDogYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpKQorICAgICAgICAg
ICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZChzY2hlbWUpOwogICAgIH0KIAog
ICAgIHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiB9CiAKK2NvbnN0IFZlY3RvcjxT
dHJpbmc+JiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gc2NoZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQo
KS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hcHBlbmQoImFib3V0Iik7Cisg
ICAgICAgIHNjaGVtZXMuZ2V0KCkuc2hyaW5rVG9GaXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
c2NoZW1lczsKK30KKwogc3RhdGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVz
KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZW1wdHlEb2N1
bWVudFNjaGVtZXM7CiAKLSAgICBpZiAoZW1wdHlEb2N1bWVudFNjaGVtZXMuZ2V0KCkuaXNFbXB0
eSgpKQotICAgICAgICBlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5hZGQoImFib3V0Iik7Cisg
ICAgaWYgKGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcygpKQor
ICAgICAgICAgICAgZW1wdHlEb2N1bWVudFNjaGVtZXMuZ2V0KCkuYWRkKHNjaGVtZSk7CisgICAg
fQogCiAgICAgcmV0dXJuIGVtcHR5RG9jdW1lbnRTY2hlbWVzOwogfQpAQCAtOTgsMTIgKzE5NSwy
NCBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHNj
aGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCitj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBzY2hl
bWVzOworICAgIGlmIChzY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVz
LmdldCgpLmFwcGVuZCgiYmxvYiIpOworICAgICAgICBzY2hlbWVzLmdldCgpLnNocmlua1RvRml0
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXM7CiAKICAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdldCgp
LmlzRW1wdHkoKSkgewotICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMu
Z2V0KCkuYWRkKCJibG9iIik7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVp
bHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpKQorICAgICAgICAgICAgY2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzLmdldCgpLmFkZChzY2hlbWUpOwogICAgIH0K
IAogICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXM7CkBAIC0xMjIs
MTIgKzIzMSw5IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2Nh
bChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIAogdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJM
U2NoZW1lUmVnaXN0ZXJlZEFzTG9jYWwoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNjaGVtZSwgImZpbGUiKSkKKyAgICBpZiAo
YnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkpCiAgICAgICAgIHJldHVy
bjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc2NoZW1lLCAiYXBwbGV3ZWJkYXRhIikpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgor
CiAgICAgbG9jYWxVUkxTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAgLTE0OCwxNCAr
MjU0LDI2IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nKCkKICAgICByZXR1cm4gc2NoZW1lc0FsbG93aW5nRGF0YWJh
c2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzsKIH0KIAorY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1
aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gc2NoZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hcHBlbmQoImh0dHAiKTsKKyAgICAgICAgc2NoZW1l
cy5nZXQoKS5hcHBlbmQoImh0dHBzIik7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuc2hyaW5rVG9G
aXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2NoZW1lczsKK30KKwogc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiB7CiAgICAgLy8gRklYTUU6IGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTYwCiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTFNjaGVtZXNNYXA+IENPUlNFbmFibGVkU2NoZW1lczsKIAogICAgIGlmIChDT1JTRW5h
YmxlZFNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIENPUlNFbmFibGVkU2NoZW1l
cy5nZXQoKS5hZGQoImh0dHAiKTsKLSAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdldCgpLmFk
ZCgiaHR0cHMiKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluQ09S
U0VuYWJsZWRTY2hlbWVzKCkpCisgICAgICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuZ2V0KCku
YWRkKHNjaGVtZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIENPUlNFbmFibGVkU2NoZW1lczsKQEAg
LTM2Myw0ICs0ODEsOSBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNj
aGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7Cisg
ICAgcmV0dXJuIGFsbEJ1aWx0aW5TY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBVUkxQYXJz
ZXI6OmlzU3BlY2lhbFNjaGVtZShzY2hlbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaAppbmRleCBjZDZmNGJlZjVh
ZjIxOGZkZTM0MzYyMzkwYzY1MTFiN2UxZDQ1ZWRjLi45YzBhNjBhN2YyZjE2NDQxNzA5OGE3NDg0
NTRhM2UyYzc0YmM5N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5
LmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVz
TWFwJiBsb2NhbFNjaGVtZXMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKTsKLQorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzQnVpbHRpblNjaGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICAK
ICAgICAvLyBTZWN1cmUgc2NoZW1lcyBkbyBub3QgdHJpZ2dlciBtaXhlZCBjb250ZW50IHdhcm5p
bmdzLiBGb3IgZXhhbXBsZSwKICAgICAvLyBodHRwcyBhbmQgZGF0YSBhcmUgc2VjdXJlIHNjaGVt
ZXMgYmVjYXVzZSB0aGV5IGNhbm5vdCBiZSBjb3JydXB0ZWQgYnkKICAgICAvLyBhY3RpdmUgbmV0
d29yayBhdHRhY2tlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IDY0OTJkZmYxZjM2YjcwNTNiMDlhMGYxYWM4ODc5MDExYWRlMGM4
NWEuLjE2NDIwNTgyN2Y0ZjBlZWY4ODU2OWNjMDkxNDdkMTA3MThkNWU4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC05OSw5ICs5
OSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVE
YXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFN0cmVhbS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRh
dGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgpAQCAtMzYzMCw3ICszNjMwLDcgQEAgLSAoaWQg
PFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNTdHJp
bmcgKil1cmxTY2hlbWUKIAogKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVy
bFNjaGVtZQogewotICAgIHJldHVybiBXZWJDb3JlOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVt
ZSh1cmxTY2hlbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWls
dGluU2NoZW1lKHVybFNjaGVtZSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MTM5ZjNjYTNmNThiNWQ5ODM0ZWVhZjUyMWQ4
NjQ1N2FiMTdiYzJkLi4yNWVlYjlmZjBjNTY0MzZjYjg3MDk0YWMyOWJiMmU5Zjc2YWI0NjJlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTctMDYtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFByZXZlbnQgc2NoZW1lIGhhbmRsZXJzIGZyb20gaGFuZGxpbmcgYWxsIGJ1aWx0
LWluIFVSTCBzY2hlbWVzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI0MDQ3OTA+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tOgorCiAyMDE3LTA1LTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCA8Y2hyb25v
PiBvdXQgb2YgU3RkTGliRXh0cmFzLmgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXgg
MmY5ZWQzZWZiMmVmNTZlZTIxZjAxZDRiNDA0MDhjZmJiNjNmNzk3NC4uMmU5OGI2MzExOTk3Yjg0
ZThmNjllMmM4ODQxMzcxYThmZjFlNDEyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
QEAgLTE0Nyw1ICsxNDcsNDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBOb01JTUVUeXBlKQog
ICAgIEVYUEVDVF9UUlVFKFtbaGFuZGxlci5nZXQoKS5zdG9wcGVkVVJMcyBvYmplY3RBdEluZGV4
OjBdIGlzRXF1YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4iXV0pOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnNjaGVtZXNbXSA9IHsKKyAgICBAImFib3V0IiwKKyAgICBAImFw
cGxld2ViZGF0YSIsCisgICAgQCJibG9iIiwKKyAgICBAImRhdGEiLAorICAgIEAiZmlsZSIsCisg
ICAgQCJmdHAiLAorICAgIEAiZ29waGVyIiwKKyAgICBAImh0dHAiLAorICAgIEAiaHR0cHMiLAor
ICAgIEAiamF2YXNjcmlwdCIsCisgICAgQCJ3ZWJraXQtZmFrZS11cmwiLAorICAgIEAid3MiLAor
ICAgIEAid3NzIiwKKyNpZiBQTEFURk9STShNQUMpCisgICAgQCJzYWZhcmktZXh0ZW5zaW9uIiwK
KyNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBAIngtYXBwbGUtY29u
dGVudC1maWx0ZXIiLAorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAgIEAieC1hcHBsZS1x
bC1pZCIsCisjZW5kaWYKK307CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgQnVpbHRpblNjaGVt
ZXMpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoRGF0YTpuaWwgbWltZVR5cGU6bmlsXSk7CisKKyAgICBmb3IgKE5T
U3RyaW5nICpzY2hlbWUgOiBzY2hlbWVzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtXS1dlYlZp
ZXcgaGFuZGxlc1VSTFNjaGVtZTpzY2hlbWVdKTsKKworICAgICAgICBib29sIGV4Y2VwdGlvblJh
aXNlZCA9IGZhbHNlOworICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6c2NoZW1lXTsK
KyAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwgZXhjZXB0aW9uLm5h
bWUpOworICAgICAgICAgICAgZXhjZXB0aW9uUmFpc2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBFWFBFQ1RfVFJVRShleGNlcHRpb25SYWlzZWQpOworICAgIH0KK30KKwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311874</attachid>
            <date>2017-06-02 15:17:47 -0700</date>
            <delta_ts>2017-06-02 16:07:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172869-20170602151746.patch</filename>
            <type>text/plain</type>
            <size>14655</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3NWY2MDBiOWJiMTBk
YzAxNDBjZGI0ODk4YWNkMzkwMTI0MzllZS4uYTFlYTA4ZDRjN2VkZjRiMDFmZjMwYzgyYTliMzc0
Mjk3ODkyNTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmV2ZW50IHNjaGVtZSBo
YW5kbGVycyBmcm9tIGhhbmRsaW5nIGFsbCBidWlsdC1pbiBVUkwgc2NoZW1lcy4KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyNDA0NzkwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Mjg2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisK
KyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdC4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFj
dG9ycyBTY2hlbWVSZWdpc3RyeSB0byBrZWVwIGEgYmFzZSwgY29uc3RhbnQgc2V0IG9mIGVhY2gg
b2YgdGhlIHNwZWNpYWwKKyAgICAgICAgVVJMIHNjaGVtZXMgdGhhdCBXZWJLaXQga25vd3MgYWJv
dXQgYnkgZGVmYXVsdC4KKyAgICAgICAgCisgICAgICAgIEl0IHRoZW4gZXhwb3NlcyB0aGF0IGxp
c3QgdGhyb3VnaCBhIG5ldyBtZXRob2QgdG8gc3VwcG9ydCBXSzIgQVBJLgorCisgICAgICAgICog
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsQnVpbHRp
blNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpbkxvY2FsVVJMU2NoZW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2NhbFVSTFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVp
bHRpblNlY3VyZVNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2VjdXJlU2NoZW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZW1wdHlE
b2N1bWVudFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpbkNhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpjYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJl
bW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0
aW5DT1JTRW5hYmxlZFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q09SU0VuYWJsZWRTY2hl
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5Lmg6CisKIDIwMTctMDUtMzEgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IDxjaHJv
bm8+IG91dCBvZiBTdGRMaWJFeHRyYXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI0NGQxMmU1MDNjOTg1MDBh
MWEwY2ZhMzE5MzI0NGRjMmE2ZTI5MjEuLmU3NjlhMzA3M2U4NzdlMDliYWI2ODdhYzllMTRjMDcw
OGQ0YTg0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0wMiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBzY2hlbWUgaGFu
ZGxlcnMgZnJvbSBoYW5kbGluZyBhbGwgYnVpbHQtaW4gVVJMIHNjaGVtZXMuCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMjQwNDc5MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI4NjkKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgrW1dL
V2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOl0pOiBDaGVjayBhZ2FpbnN0IFdlYkNvcmUncyBuZXcg
bWFzdGVyIGxpc3Qgb2YgVVJMIHNjaGVtZXMuCisKIDIwMTctMDUtMzEgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IDxjaHJvbm8+IG91dCBvZiBT
dGRMaWJFeHRyYXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3Bw
CmluZGV4IDY0ZTM1NjM5NmRjOWRmOTEyMzM2YmQ4YmZlYmJkZmMzNTcwMWRjY2UuLjYwNzYxNTgw
YWY0ZjBiMTI4NDQ1YzllMDVjOTI3ZmJjNDA4NjliOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTI1LDIwICsyNSw4MCBAQAogICovCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIlVS
TFBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaW5jbHVk
ZSAiQ29udGVudEZpbHRlci5oIgorI2VuZGlmCisjaWYgVVNFKFFVSUNLX0xPT0spCisjaW5jbHVk
ZSAiUXVpY2tMb29rLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMg
Y29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpOworc3RhdGljIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpOworc3RhdGljIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCk7CitzdGF0
aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcygpOwor
c3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RTY2hlbWVzKCk7CitzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5DT1JT
RW5hYmxlZFNjaGVtZXMoKTsKKworc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0
aW5TY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
c2NoZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCisgICAgICAg
ICAgICBzY2hlbWVzLmdldCgpLmFkZChzY2hlbWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHNjaGVtZSA6IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkpCisgICAgICAgICAgICBzY2hlbWVzLmdl
dCgpLmFkZChzY2hlbWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0
aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKSkKKyAgICAgICAgICAgIHNjaGVtZXMuZ2V0KCku
YWRkKHNjaGVtZSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpbkVt
cHR5RG9jdW1lbnRTY2hlbWVzKCkpCisgICAgICAgICAgICBzY2hlbWVzLmdldCgpLmFkZChzY2hl
bWUpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5DYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKSkKKyAgICAgICAgICAgIHNjaGVtZXMuZ2V0KCkuYWRk
KHNjaGVtZSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpbkNPUlNF
bmFibGVkU2NoZW1lcygpKQorICAgICAgICAgICAgc2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsK
KworICAgICAgICAvLyBPdGhlciBtaXNjIHNjaGVtZXMgdGhhdCB0aGUgU2NoZW1lUmVnaXN0cnkg
ZG9lc24ndCBrbm93IGFib3V0LgorICAgICAgICBzY2hlbWVzLmdldCgpLmFkZCgid2Via2l0LWZh
a2UtdXJsIik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBzY2hlbWVzLmdldCgpLmFkZCgi
c2FmYXJpLWV4dGVuc2lvbiIpOworI2VuZGlmCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgICAg
IHNjaGVtZXMuZ2V0KCkuYWRkKFFMUHJldmlld1Byb3RvY29sKCkpOworI2VuZGlmCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgICAgICBzY2hlbWVzLmdldCgpLmFkZChDb250ZW50
RmlsdGVyOjp1cmxTY2hlbWUoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gc2NoZW1l
czsKK30KKworY29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXM7CisgICAg
aWYgKHNjaGVtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYWRk
KCJmaWxlIik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYWRk
KCJhcHBsZXdlYmRhdGEiKTsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOwor
fQorCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gbG9jYWxTY2hlbWVzOwogCiAgICAgaWYg
KGxvY2FsU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbG9jYWxTY2hlbWVzLmdl
dCgpLmFkZCgiZmlsZSIpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBsb2NhbFNjaGVt
ZXMuZ2V0KCkuYWRkKCJhcHBsZXdlYmRhdGEiKTsKLSNlbmRpZgorICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKSkKKyAgICAgICAgICAgIGxv
Y2FsU2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsKICAgICB9CiAKICAgICByZXR1cm4gbG9jYWxT
Y2hlbWVzOwpAQCAtNTAsNDQgKzExMCw4MSBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxh
eUlzb2xhdGVkVVJMU2NoZW1lcygpCiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7
CiB9CiAKK2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBzY2hlbWVzOworICAgIGlm
IChzY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVzLmdldCgpLmFwcGVu
ZCgiaHR0cHMiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5hcHBlbmQoImFib3V0Iik7CisgICAg
ICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJkYXRhIik7CisgICAgICAgIHNjaGVtZXMuZ2V0KCku
YXBwZW5kKCJ3c3MiKTsKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICAg
ICAgc2NoZW1lcy5nZXQoKS5hcHBlbmQoInJlc291cmNlIik7CisjZW5kaWYKKyAgICAgICAgc2No
ZW1lcy5nZXQoKS5zaHJpbmtUb0ZpdCgpOworICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOwor
fQorCiBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNlY3VyZVNjaGVtZXM7CiAKICAgICBpZiAo
c2VjdXJlU2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2VjdXJlU2NoZW1lcy5n
ZXQoKS5hZGQoImh0dHBzIik7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91
dCIpOwotICAgICAgICBzZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgiZGF0YSIpOwotICAgICAgICBz
ZWN1cmVTY2hlbWVzLmdldCgpLmFkZCgid3NzIik7Ci0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCi0gICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKCJyZXNvdXJjZSIpOwot
I2VuZGlmCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRpblNlY3VyZVNj
aGVtZXMoKSkKKyAgICAgICAgICAgIHNlY3VyZVNjaGVtZXMuZ2V0KCkuYWRkKHNjaGVtZSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHNlY3VyZVNjaGVtZXM7CiB9CiAKK2NvbnN0IFZlY3RvcjxTdHJp
bmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNjaGVtZXMuZ2V0
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJhYm91dCIpOwor
ICAgICAgICBzY2hlbWVzLmdldCgpLmFwcGVuZCgiamF2YXNjcmlwdCIpOworICAgICAgICAvLyBU
aGlzIGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUuCisgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKKyAgICAgICAgc2NoZW1l
cy5nZXQoKS5hcHBlbmQoImRhdGEiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5zaHJpbmtUb0Zp
dCgpOworICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2NoZW1l
c01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogCiAgICAgaWYg
KHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2No
ZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiYWJvdXQiKTsKLSAgICAgICAgc2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiamF2YXNjcmlwdCIpOwotICAgICAgICAvLyBU
aGlzIGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUuCi0gICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKLSAgICAgICAgc2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zLmdldCgpLmFkZCgiZGF0YSIpOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHNjaGVtZSA6IGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKSkKKyAgICAg
ICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5nZXQoKS5hZGQoc2NoZW1lKTsKICAgICB9
CiAKICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zOwogfQogCitjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNjaGVtZXMu
Z2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJhYm91dCIp
OworICAgICAgICBzY2hlbWVzLmdldCgpLnNocmlua1RvRml0KCk7CisgICAgfQorCisgICAgcmV0
dXJuIHNjaGVtZXM7Cit9CisKIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0eURvY3VtZW50U2No
ZW1lcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGVtcHR5
RG9jdW1lbnRTY2hlbWVzOwogCi0gICAgaWYgKGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgZW1wdHlEb2N1bWVudFNjaGVtZXMuZ2V0KCkuYWRkKCJhYm91dCIp
OworICAgIGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMo
KSkKKyAgICAgICAgICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzLmdldCgpLmFkZChzY2hlbWUpOwor
ICAgIH0KIAogICAgIHJldHVybiBlbXB0eURvY3VtZW50U2NoZW1lczsKIH0KQEAgLTk4LDEyICsx
OTUsMjQgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGEKICAgICByZXR1cm4gc2NoZW1lczsKIH0K
IAorY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dFNjaGVtZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4g
c2NoZW1lczsKKyAgICBpZiAoc2NoZW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2No
ZW1lcy5nZXQoKS5hcHBlbmQoImJsb2IiKTsKKyAgICAgICAgc2NoZW1lcy5nZXQoKS5zaHJpbmtU
b0ZpdCgpOworICAgIH0KKworICAgIHJldHVybiBzY2hlbWVzOworfQorCiBzdGF0aWMgVVJMU2No
ZW1lc01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gY2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3RTY2hlbWVzOwogCiAgICAgaWYgKGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5n
ZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hl
bWVzLmdldCgpLmFkZCgiYmxvYiIpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6
IGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKSkKKyAgICAgICAgICAg
IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcy5nZXQoKS5hZGQoc2NoZW1lKTsKICAg
ICB9CiAKICAgICByZXR1cm4gY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzOwpAQCAt
MTIyLDEyICsyMzEsOSBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
TG9jYWwoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAKIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlbW92
ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUsICJmaWxlIikpCisgICAg
aWYgKGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpKQogICAgICAgICBy
ZXR1cm47Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHNjaGVtZSwgImFwcGxld2ViZGF0YSIpKQotICAgICAgICByZXR1cm47Ci0jZW5k
aWYKKwogICAgIGxvY2FsVVJMU2NoZW1lcygpLnJlbW92ZShzY2hlbWUpOwogfQogCkBAIC0xNDgs
MTQgKzI1NCwyNiBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJh
c2VBY2Nlc3NJblByaXZhdGVCcm93c2luZygpCiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0Rh
dGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiB9CiAKK2NvbnN0IFZlY3RvcjxTdHJpbmc+
JiBidWlsdGluQ09SU0VuYWJsZWRTY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPFN0cmluZz4+IHNjaGVtZXM7CisgICAgaWYgKHNjaGVtZXMuZ2V0KCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIHNjaGVtZXMuZ2V0KCkuYXBwZW5kKCJodHRwIik7CisgICAgICAgIHNj
aGVtZXMuZ2V0KCkuYXBwZW5kKCJodHRwcyIpOworICAgICAgICBzY2hlbWVzLmdldCgpLnNocmlu
a1RvRml0KCk7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKIHN0YXRpYyBVUkxT
Y2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogewogICAgIC8vIEZJWE1FOiBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE2MAogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBDT1JTRW5hYmxlZFNjaGVtZXM7CiAKICAgICBpZiAoQ09S
U0VuYWJsZWRTY2hlbWVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBDT1JTRW5hYmxlZFNj
aGVtZXMuZ2V0KCkuYWRkKCJodHRwIik7Ci0gICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5nZXQo
KS5hZGQoImh0dHBzIik7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogYnVpbHRp
bkNPUlNFbmFibGVkU2NoZW1lcygpKQorICAgICAgICAgICAgQ09SU0VuYWJsZWRTY2hlbWVzLmdl
dCgpLmFkZChzY2hlbWUpOwogICAgIH0KIAogICAgIHJldHVybiBDT1JTRW5hYmxlZFNjaGVtZXM7
CkBAIC0zNjMsNCArNDgxLDkgQEAgYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9u
U2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQor
eworICAgIHJldHVybiBhbGxCdWlsdGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJM
UGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgKaW5kZXggY2Q2ZjRi
ZWY1YWYyMThmZGUzNDM2MjM5MGM2NTExYjdlMWQ0NWVkYy4uOWMwYTYwYTdmMmYxNjQ0MTcwOThh
NzQ4NDU0YTNlMmM3NGJjOTdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NoZW1lUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdp
c3RyeS5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVVJMU2No
ZW1lc01hcCYgbG9jYWxTY2hlbWVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJik7Ci0KKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJik7Cisg
ICAgCiAgICAgLy8gU2VjdXJlIHNjaGVtZXMgZG8gbm90IHRyaWdnZXIgbWl4ZWQgY29udGVudCB3
YXJuaW5ncy4gRm9yIGV4YW1wbGUsCiAgICAgLy8gaHR0cHMgYW5kIGRhdGEgYXJlIHNlY3VyZSBz
Y2hlbWVzIGJlY2F1c2UgdGhleSBjYW5ub3QgYmUgY29ycnVwdGVkIGJ5CiAgICAgLy8gYWN0aXZl
IG5ldHdvcmsgYXR0YWNrZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCA2NDkyZGZmMWYzNmI3MDUzYjA5YTBmMWFjODg3OTAxMWFk
ZTBjODVhLi4xNjQyMDU4MjdmNGYwZWVmODg1NjljYzA5MTQ3ZDEwNzE4ZDVlODJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTks
OSArOTksOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRTdHJl
YW0uaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zh
bGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4KQEAgLTM2MzAsNyArMzYzMCw3IEBAIC0g
KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5T
U3RyaW5nICopdXJsU2NoZW1lCiAKICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNTdHJpbmcg
Kil1cmxTY2hlbWUKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NwZWNpYWxT
Y2hlbWUodXJsU2NoZW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6Omlz
QnVpbHRpblNjaGVtZSh1cmxTY2hlbWUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTEzOWYzY2EzZjU4YjVkOTgzNGVlYWY1
MjFkODY0NTdhYjE3YmMyZC4uMjVlZWI5ZmYwYzU2NDM2Y2I4NzA5NGFjMjliYjJlOWY3NmFiNDYy
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE3LTA2LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBQcmV2ZW50IHNjaGVtZSBoYW5kbGVycyBmcm9tIGhhbmRsaW5nIGFsbCBi
dWlsdC1pbiBVUkwgc2NoZW1lcy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNDA0NzkwPiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKwogMjAxNy0wNS0zMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgPGNo
cm9ubz4gb3V0IG9mIFN0ZExpYkV4dHJhcy5oCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCmlu
ZGV4IDJmOWVkM2VmYjJlZjU2ZWUyMWYwMWQ0YjQwNDA4Y2ZiYjYzZjc5NzQuLmI4MzI3MzYzNTRj
YzI5ZjQxODM2ZTg3NTlhYzg1MTk4N2M2YzYyZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0x
Lm1tCkBAIC0xNDcsNSArMTQ3LDQ5IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTm9NSU1FVHlw
ZSkKICAgICBFWFBFQ1RfVFJVRShbW2hhbmRsZXIuZ2V0KCkuc3RvcHBlZFVSTHMgb2JqZWN0QXRJ
bmRleDowXSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzptYWluIl1dKTsK
IH0KIAorc3RhdGljIE5TU3RyaW5nICpzY2hlbWVzW10gPSB7CisgICAgQCJhYm91dCIsCisgICAg
QCJhcHBsZXdlYmRhdGEiLAorICAgIEAiYmxvYiIsCisgICAgQCJkYXRhIiwKKyAgICBAImZpbGUi
LAorICAgIEAiZnRwIiwKKyAgICBAImdvcGhlciIsCisgICAgQCJodHRwIiwKKyAgICBAImh0dHBz
IiwKKyAgICBAImphdmFzY3JpcHQiLAorICAgIEAid2Via2l0LWZha2UtdXJsIiwKKyAgICBAIndz
IiwKKyAgICBAIndzcyIsCisjaWYgUExBVEZPUk0oTUFDKQorICAgIEAic2FmYXJpLWV4dGVuc2lv
biIsCisjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgQCJ4LWFwcGxl
LWNvbnRlbnQtZmlsdGVyIiwKKyNlbmRpZgorI2lmIFVTRShRVUlDS19MT09LKQorICAgIEAieC1h
cHBsZS1xbC1pZCIsCisjZW5kaWYKK307CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgQnVpbHRp
blNjaGVtZXMpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIFJldGFpblB0cjxTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjaGVt
ZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoRGF0YTpuaWwgbWltZVR5cGU6bmlsXSk7CisKKyAgICBm
b3IgKE5TU3RyaW5nICpzY2hlbWUgOiBzY2hlbWVzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtX
S1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTpzY2hlbWVdKTsKKworICAgICAgICBib29sIGV4Y2Vw
dGlvblJhaXNlZCA9IGZhbHNlOworICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAgIFtjb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6c2No
ZW1lXTsKKyAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwgZXhjZXB0
aW9uLm5hbWUpOworICAgICAgICAgICAgZXhjZXB0aW9uUmFpc2VkID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBFWFBFQ1RfVFJVRShleGNlcHRpb25SYWlzZWQpOworICAgIH0KK30KKwogCiAj
ZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>