<?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>182749</bug_id>
          
          <creation_ts>2018-02-13 15:06:49 -0800</creation_ts>
          <short_desc>Web Automation: combine session commands to resize and move top-level browsing contexts</short_desc>
          <delta_ts>2018-02-27 12:23:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebDriver</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>aestes</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398802</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-13 15:06:49 -0800</bug_when>
    <thetext>In the W3C dialect, this is the same endpoint (Set Window Rect). There&apos;s no point having two separate commands as they both set the window frame under the hood.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398803</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-13 15:07:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/37515170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398868</commentid>
    <comment_count>2</comment_count>
      <attachid>333752</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-13 17:24:34 -0800</bug_when>
    <thetext>Created attachment 333752
Proposed Fix

Self-reminder to land this manually with Internal changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398996</commentid>
    <comment_count>3</comment_count>
      <attachid>333752</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-13 23:49:10 -0800</bug_when>
    <thetext>Comment on attachment 333752
Proposed Fix

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

&gt; Source/WebDriver/Session.cpp:726
&gt; -    m_host-&gt;sendCommandToBackend(ASCIILiteral(&quot;moveWindowOfBrowsingContext&quot;), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&amp;&amp; response) {
&gt; +    m_host-&gt;sendCommandToBackend(ASCIILiteral(&quot;setWindowFrameOfBrowsingContext&quot;), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&amp;&amp; response) {

We no longer need these method, we can simplify the whole thing by removing moveToplevelBrowsingContextWindow and resizeToplevelBrowsingContextWindow. then we can simply send a single message from setWindowRect directly.

&gt; Source/WebKit/UIProcess/Automation/Automation.json:293
&gt; +            &quot;description&quot;: &quot;Moves and/or resizes the window of the specified top-level browsing context to the specified size and origin. Either the size or origin may be omitted, but not both.&quot;,

Both can be omitted according to the spec, there are more actions to be performed by setWindowRect like exiting fullscreen and restoring the window, those should happen even if position and size doesn&apos;t don&apos;t change.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:324
&gt; +    if (!optionalOriginObject &amp;&amp; !optionalSizeObject)
&gt; +        FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(MissingParameter, &quot;Either size or origin must be specified.&quot;);

This breaks all imported/w3c/webdriver/tests/set_window_rect.py::test_no_change tests. We could add FIXMEs below for the additional actions, exiting fullscreen and restoring the window, covered by imported/w3c/webdriver/tests/set_window_rect.py::test_fully_exit_fullscreen, imported/w3c/webdriver/tests/set_window_rect.py::test_restore_from_minimized and imported/w3c/webdriver/tests/set_window_rect.py::test_restore_from_maximized currently marked as expected failures, because we don&apos;t implement fullscreen/maximize/minimize yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398997</commentid>
    <comment_count>4</comment_count>
      <attachid>333772</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-13 23:52:45 -0800</bug_when>
    <thetext>Created attachment 333772
Updated patch

I&apos;ve only changed the WebDriver implementation to send a single command from setWindowRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399079</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-14 09:02:08 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; Comment on attachment 333752 [details]
&gt; Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333752&amp;action=review
&gt; 
&gt; &gt; Source/WebDriver/Session.cpp:726
&gt; &gt; -    m_host-&gt;sendCommandToBackend(ASCIILiteral(&quot;moveWindowOfBrowsingContext&quot;), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&amp;&amp; response) {
&gt; &gt; +    m_host-&gt;sendCommandToBackend(ASCIILiteral(&quot;setWindowFrameOfBrowsingContext&quot;), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&amp;&amp; response) {
&gt; 
&gt; We no longer need these method, we can simplify the whole thing by removing
&gt; moveToplevelBrowsingContextWindow and resizeToplevelBrowsingContextWindow.
&gt; then we can simply send a single message from setWindowRect directly.

Good point. I was trying to minimize changes since I can&apos;t easily build GTK right now.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/Automation.json:293
&gt; &gt; +            &quot;description&quot;: &quot;Moves and/or resizes the window of the specified top-level browsing context to the specified size and origin. Either the size or origin may be omitted, but not both.&quot;,
&gt; 
&gt; Both can be omitted according to the spec, there are more actions to be
&gt; performed by setWindowRect like exiting fullscreen and restoring the window,
&gt; those should happen even if position and size doesn&apos;t don&apos;t change.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:324
&gt; &gt; +    if (!optionalOriginObject &amp;&amp; !optionalSizeObject)
&gt; &gt; +        FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(MissingParameter, &quot;Either size or origin must be specified.&quot;);
&gt; 
&gt; This breaks all
&gt; imported/w3c/webdriver/tests/set_window_rect.py::test_no_change tests. We
&gt; could add FIXMEs below for the additional actions, exiting fullscreen and
&gt; restoring the window, covered by
&gt; imported/w3c/webdriver/tests/set_window_rect.py::test_fully_exit_fullscreen,
&gt; imported/w3c/webdriver/tests/set_window_rect.py::test_restore_from_minimized
&gt; and
&gt; imported/w3c/webdriver/tests/set_window_rect.py::test_restore_from_maximized
&gt; currently marked as expected failures, because we don&apos;t implement
&gt; fullscreen/maximize/minimize yet.


That&apos;s a good point, and I think we should support that use case (running Set Window Rect just for side effects). I&apos;ll remove that branch and update the protocol definition accordingly.

I&apos;ll also add FIXMEs. I&apos;m in the process of figuring out how to implement minimize/maximize/fullscreen in Cocoa ports, but it&apos;s likely that we&apos;ll want the WebKit-side session to take care of un-fullscreening and de-miniaturizing where appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399111</commentid>
    <comment_count>6</comment_count>
      <attachid>333772</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-14 10:12:58 -0800</bug_when>
    <thetext>Comment on attachment 333772
Updated patch

Marking this obsolete, adding a revised patch with Carlos&apos; changes and suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399189</commentid>
    <comment_count>7</comment_count>
      <attachid>333824</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-14 11:30:53 -0800</bug_when>
    <thetext>Created attachment 333824
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399242</commentid>
    <comment_count>8</comment_count>
      <attachid>333824</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-02-14 14:06:22 -0800</bug_when>
    <thetext>Comment on attachment 333824
Patch v2

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

&gt; Source/WebDriver/Session.cpp:747
&gt; +        RefPtr&lt;JSON::Object&gt; parameters = JSON::Object::create();

I&apos;d use auto here, unless you really need this to be a RefPtr (maybe sendCommandToBackend() needs a copyable lambda?).

&gt; Source/WebDriver/Session.cpp:750
&gt; +            RefPtr&lt;JSON::Object&gt; windowOrigin = JSON::Object::create();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399384</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-14 22:29:59 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #5)
[...] 
&gt; I&apos;ll also add FIXMEs. I&apos;m in the process of figuring out how to implement
&gt; minimize/maximize/fullscreen in Cocoa ports, but it&apos;s likely that we&apos;ll want
&gt; the WebKit-side session to take care of un-fullscreening and
&gt; de-miniaturizing where appropriate.

Maybe we can simply add a new message setWindowStateOfBrowsingContext that receives either fullscreen, maximize or minimize. In the WebKit side we just need platform hooks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399385</commentid>
    <comment_count>10</comment_count>
      <attachid>333824</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-14 22:33:10 -0800</bug_when>
    <thetext>Comment on attachment 333824
Patch v2

LGTM, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399578</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-15 13:01:20 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9)
&gt; (In reply to Brian Burg from comment #5)
&gt; [...] 
&gt; &gt; I&apos;ll also add FIXMEs. I&apos;m in the process of figuring out how to implement
&gt; &gt; minimize/maximize/fullscreen in Cocoa ports, but it&apos;s likely that we&apos;ll want
&gt; &gt; the WebKit-side session to take care of un-fullscreening and
&gt; &gt; de-miniaturizing where appropriate.
&gt; 
&gt; Maybe we can simply add a new message setWindowStateOfBrowsingContext that
&gt; receives either fullscreen, maximize or minimize. In the WebKit side we just
&gt; need platform hooks.

I&apos;m going to hook this up to safaridriver and experiment to see what&apos;s natural. Let&apos;s use a different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400953</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-20 16:43:56 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9)
&gt; (In reply to Brian Burg from comment #5)
&gt; [...] 
&gt; &gt; I&apos;ll also add FIXMEs. I&apos;m in the process of figuring out how to implement
&gt; &gt; minimize/maximize/fullscreen in Cocoa ports, but it&apos;s likely that we&apos;ll want
&gt; &gt; the WebKit-side session to take care of un-fullscreening and
&gt; &gt; de-miniaturizing where appropriate.
&gt; 
&gt; Maybe we can simply add a new message setWindowStateOfBrowsingContext that
&gt; receives either fullscreen, maximize or minimize. In the WebKit side we just
&gt; need platform hooks.

The current state of things is that we can fullscreen/unfullscreen purely through WebFullScreenManagerProxy and a JS atom. Minimize/maximize will need an AutomationClient delegate method for both operations. And, the automation command to set the window rect is sufficient for internal purposes when we are asked to unfullscreen + restore the window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401011</commentid>
    <comment_count>13</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-02-20 20:13:49 -0800</bug_when>
    <thetext>Committed r228856: &lt;https://trac.webkit.org/changeset/228856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333752</attachid>
            <date>2018-02-13 17:24:34 -0800</date>
            <delta_ts>2018-02-13 23:52:45 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-182749-20180213172433.patch</filename>
            <type>text/plain</type>
            <size>16627</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4Mzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJhOWNlMmU1MzdjYzRiZjhlOTczZGQ5
M2Q5NzAyYWY0YThlZWY5OWMuLjM5MTU5MjI1NWIwNWQzOTFjMDI2OTg0ZWUwODZmY2M5ZGQ4YjVl
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDItMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21t
YW5kcyB0byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NDkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3NTE1MTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuaDogYWRkIGEgZ2V0RG91Ymxl
KCkgaW1wbGVtZW50YXRpb24gdGhhdCByZXR1cm5zIGEgc3RkOjpvcHRpb25hbDxUPgorICAgICAg
ICByYXRoZXIgdGhhbiB1c2luZyBhbiBvdXQtcGFyYW1ldGVyLiBJJ2QgbGlrZSB0byBtb3ZlIG1v
cmUgY29kZSB0byB0aGlzIHN0eWxlLgorCiAyMDE4LTAyLTA5ICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVc2UgUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SIG9uIGFueSBub24tV2luZG93cyBwb3J0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpp
bmRleCBkNGExZDg0MDk4MDc0ZTc4NTFjODViNzVjODA0ZjQ4NDkyMmE5ZTdlLi44NzI3NTJjMGRk
ZWNkYmQ1ZGQ0YmZjNDRmMTY3MDY4NDFkZjFlZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE4LTAyLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBBdXRvbWF0aW9uOiBjb21iaW5lIHNlc3Npb24gY29tbWFuZHMgdG8gcmVzaXplIGFu
ZCBtb3ZlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNzUxNTE3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgbmV3IGNvbW1hbmQgY2FuIHRha2UgZWl0aGVyIHNpemUgb3Igb3JpZ2luLCBzbyB1
c2UgdGhlIHNhbWUgY29tbWFuZCBhcmd1bWVudHMuCisKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bW92ZVRvcGxldmVsQnJvd3NpbmdDb250ZXh0
V2luZG93KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6cmVzaXplVG9wbGV2ZWxCcm93
c2luZ0NvbnRleHRXaW5kb3cpOgorCiAyMDE4LTAxLTMwICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBNYWtlIFdURiBoZWFkZXJzIGNvcGll
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBmZGY3ODliZDUwNjc5OTUzNzBmNmUyZmMwN2U0MWZiMTZjOTA2MGRmLi40
ZTE2YmYyNWFkOGRlNDFlMzUxZWYwYjMzOGFmZDEwMzE4ZjZiYTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAyLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBBdXRvbWF0aW9uOiBjb21iaW5lIHNlc3Npb24gY29tbWFuZHMgdG8gcmVzaXpl
IGFuZCBtb3ZlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzQ5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNzUxNTE3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW5jZSBtb3ZpbmcgYW5kIHJlc2l6aW5nIHRoZSB3aW5kb3cgYXJlIGJvdGggYWNj
b21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlIHdpbmRvdyBmcmFtZSwKKyAgICAgICAgYW5kIHRoZSBX
M0MgV2ViRHJpdmVyIHNwZWNpZmljYXRpb24gaGFzIGEgR2V0L1NldCBXaW5kb3cgUmVjdCBjb21t
YW5kLCBpdCdzIHRpbWUgdG8KKyAgICAgICAgZGVkdXBsaWNhdGUgdGhlc2UgdHdvIG1ldGhvZHMg
d2hpY2ggYmFzaWNhbGx5IGRvIHRoZSBzYW1lIHRoaW5nLgorCisgICAgICAgIEFkb3B0IG1vZGVy
biBKU09OOjpWYWx1ZSBnZXR0ZXJzIHRoYXQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+LiBJ
IGhhdmUgYmVlbiB0cnlpbmcKKyAgICAgICAgdG8gbW92ZSB0aGUgcHJvdG9jb2wgb3ZlciB0byB0
aGlzIHN0eWxlIHdob2xlc2FsZSwgYnV0IGl0IGlzIHByb2JhYmx5IGVhc2llciB0byBkbworICAg
ICAgICB0aGlzIGNvbnZlcnNpb24gaW4gc21hbGxlciBwaWVjZXMuIEFuZCBzbywgSSBoYXZlIHN0
YXJ0ZWQgdG8gZG8gc28uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgY292ZXJlZCBieSBleGlz
dGluZyBXZWJEcml2ZXIgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9B
dXRvbWF0aW9uLmpzb246IEFkZCBuZXcgY29tbWFuZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNpemVXaW5kb3dPZkJy
b3dzaW5nQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisKIDIwMTgtMDIt
MTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRp
b246IGRvbid0IHJldHVybiBhbiBlcnJvciBpZiByZXNpemluZy9tb3ZpbmcgYSB3aW5kb3cgaGFz
IG5vIGVmZmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oIGIvU291
cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCmluZGV4IGExNmZmMmNlMTFlYjFlYTgyYjNiN2Q0MDk2
NzNhMzc4OTc2ZjI4OTkuLjgzN2Q3M2E0Y2Y1ZjZiMjA5OGUwNWU0M2ZkODJkOTg1ZTFkYTVmMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9KU09OVmFsdWVzLmgKQEAgLTIxNyw2ICsyMTcsMTkgQEAgcHJvdGVjdGVkOgogICAgICAg
ICByZXR1cm4gdmFsdWUtPmFzSW50ZWdlcihvdXRwdXQpOwogICAgIH0KIAorICAgIHRlbXBsYXRl
PGNsYXNzIFQ+IHN0ZDo6b3B0aW9uYWw8VD4gZ2V0TnVtYmVyKGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIFJlZlB0cjxWYWx1ZT4gdmFsdWU7CisgICAgICAgIGlmICgh
Z2V0VmFsdWUobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgCisgICAgICAgIFQgcmVzdWx0OworICAgICAgICBpZiAoIXZhbHVlLT5hc0RvdWJs
ZShyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIGJvb2wgZ2V0U3RyaW5nKGNv
bnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBvdXRwdXQpIGNvbnN0OwogICAgIGJvb2wgZ2V0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmUHRyPE9iamVjdD4mKSBjb25zdDsKICAgICBib29s
IGdldEFycmF5KGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmUHRyPEFycmF5PiYpIGNvbnN0OwpAQCAt
MjYwLDYgKzI3Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBPYmplY3RCYXNlOjpnZXRCb29sZWFu
OwogICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldEludGVnZXI7CiAgICAgdXNpbmcgT2JqZWN0QmFz
ZTo6Z2V0RG91YmxlOworICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldE51bWJlcjsKICAgICB1c2lu
ZyBPYmplY3RCYXNlOjpnZXRTdHJpbmc7CiAgICAgdXNpbmcgT2JqZWN0QmFzZTo6Z2V0T2JqZWN0
OwogICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldEFycmF5OwpAQCAtNDcyLDMgKzQ4Niw0IEBAIHB1
YmxpYzoKIG5hbWVzcGFjZSBKU09OIHsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OkpTT05JbXBsOwog
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCA3YThjNzI5ZTllMDNlOTRjZDVhZmE2ODY5YmEwODlj
NjUwZmFmNzNmLi5iYTk2MWU2OTRmMTVkODY1YzA4ODU0NWM1NGM2MDMyZTRmYWM0MzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5jcHAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFNlc3Npb246Om1vdmVUb3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyhkb3VibGUgeCwgZG91YmxlIHksIEZ1bmN0aW9uPHZv
aQogICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ4IiwgeCk7CiAgICAgd2luZG93T3JpZ2lu
LT5zZXREb3VibGUoInkiLCB5KTsKICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJvcmlnaW4iKSwgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKLSAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgibW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0
IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNl
c3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgIG1faG9zdC0+c2Vu
ZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdD
b250ZXh0IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewogICAgICAgICBp
ZiAocmVzcG9uc2UuaXNFcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29t
bWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgU2Vzc2lvbjo6cmVzaXpl
VG9wbGV2ZWxCcm93c2luZ0NvbnRleHRXaW5kb3coZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0
LCBGCiAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCIsIHdpZHRoKTsKICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodCk7CiAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic2l6ZSIpLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKLSAgICBt
X2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgicmVzaXplV2luZG93T2ZC
cm93c2luZ0NvbnRleHQiKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7Cisg
ICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwoInNldFdpbmRvd0Zy
YW1lT2ZCcm93c2luZ0NvbnRleHQiKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNl
KSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VP
YmplY3QpKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDNhODE2NjgxNGE4YmU0NWUz
Y2M2MjgwMWEwYjhhYzVmM2QxM2VkZTEuLjhjOTI0OWNhNTgyYzE2YTMxNGFkNWQ1MTU4NTU3MzVh
NDJhYTgzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
QXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
QXV0b21hdGlvbi5qc29uCkBAIC0yODksMjAgKzI4OSwxMiBAQAogICAgICAgICAgICAgXQogICAg
ICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJyZXNpemVXaW5kb3dPZkJy
b3dzaW5nQ29udGV4dCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzaXplcyB0aGUg
d2luZG93IG9mIHRoZSBzcGVjaWZpZWQgYnJvd3NpbmcgY29udGV4dCB0byB0aGUgc3BlY2lmaWVk
IHNpemUuIiwKKyAgICAgICAgICAgICJuYW1lIjogInNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0Nv
bnRleHQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk1vdmVzIGFuZC9vciByZXNpemVz
IHRoZSB3aW5kb3cgb2YgdGhlIHNwZWNpZmllZCB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCB0
byB0aGUgc3BlY2lmaWVkIHNpemUgYW5kIG9yaWdpbi4gRWl0aGVyIHRoZSBzaXplIG9yIG9yaWdp
biBtYXkgYmUgb21pdHRlZCwgYnV0IG5vdCBib3RoLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dz
aW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJv
d3NpbmcgY29udGV4dCB0byBiZSByZXNpemVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInNpemUiLCAiJHJlZiI6ICJTaXplIiwgImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgc2l6ZSBm
b3IgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cuIiB9Ci0gICAgICAgICAgICBdLAotICAg
ICAgICAgICAgImFzeW5jIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICAibmFtZSI6ICJtb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQiLAotICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIk1vdmVzIHRoZSB3aW5kb3cgb2YgdGhlIHNwZWNpZmllZCBicm93c2luZyBj
b250ZXh0IHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwKLSAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJv
d3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBi
cm93c2luZyBjb250ZXh0IHRvIGJlIG1vdmVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9yaWdpbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgb3Jp
Z2luIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4gVGhlIHBvc2l0aW9uIGlzIGlu
dGVycHJldGVkIGluIHNjcmVlbiBjb29yZGluYXRlIHNwYWNlLCByZWxhdGl2ZSB0byB0aGUgdXBw
ZXIgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbi4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9yaWdpbiIsICIkcmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlRoZSBuZXcgb3JpZ2luIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4g
VGhlIHBvc2l0aW9uIGlzIGludGVycHJldGVkIGluIHNjcmVlbiBjb29yZGluYXRlIHNwYWNlLCBy
ZWxhdGl2ZSB0byB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbi4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgIiRyZWYiOiAiU2l6ZSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbmV3IHNpemUgZm9yIHRoZSBicm93c2luZyBjb250
ZXh0J3Mgd2luZG93LiBUaGUgc2l6ZSBpcyBpbnRlcnByZXRlZCBpbiBzY3JlZW4gcGl4ZWxzLiIg
fQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMTM2NTk0YTMyZmE0MDZhM2I3NWUwMGM1ODgzNjg4
ZGU5NDBiN2RjMC4uNWI1Y2I4NmIzMDUyZmMwMmUwN2UwMzUwOTI4YWFlN2Q0MTZmODA1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTMxNSw2NyArMzE1LDUyIEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmIGVycm9yCiAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OkZvY3VzRnJhbWUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUo
KSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNpemVXaW5kb3dPZkJy
b3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgc2l6ZU9iamVjdCwgUmVmPFJlc2l6
ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25hbE9yaWdpbk9iamVjdCwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25hbFNpemVPYmplY3QsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKICNlbHNlCi0gICAgZmxvYXQgd2lkdGg7
Ci0gICAgaWYgKCFzaXplT2JqZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgid2lkdGgi
KSwgd2lkdGgpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd3aWR0aCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQg
b3IgaW52YWxpZC4iKTsKKyAgICBpZiAoIW9wdGlvbmFsT3JpZ2luT2JqZWN0ICYmICFvcHRpb25h
bFNpemVPYmplY3QpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRB
SUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJFaXRoZXIgc2l6ZSBvciBvcmlnaW4gbXVzdCBiZSBzcGVj
aWZpZWQuIik7CiAKLSAgICBmbG9hdCBoZWlnaHQ7Ci0gICAgaWYgKCFzaXplT2JqZWN0LmdldERv
dWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IiksIGhlaWdodCkpCi0gICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
J2hlaWdodCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB4OworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHk7CisgICAgaWYg
KG9wdGlvbmFsT3JpZ2luT2JqZWN0KSB7CisgICAgICAgIGlmICghKHggPSBvcHRpb25hbE9yaWdp
bk9iamVjdC0+Z2V0TnVtYmVyPGZsb2F0PihXVEY6OkFTQ0lJTGl0ZXJhbCgieCIpKSkpCisgICAg
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFy
YW1ldGVyLCAiVGhlICd4JyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOwog
Ci0gICAgaWYgKHdpZHRoIDwgMCkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAnd2lkdGgnIHBhcmFtZXRlciBoYWQg
YW4gaW52YWxpZCB2YWx1ZS4iKTsKKyAgICAgICAgaWYgKCEoeSA9IG9wdGlvbmFsT3JpZ2luT2Jq
ZWN0LT5nZXROdW1iZXI8ZmxvYXQ+KFdURjo6QVNDSUlMaXRlcmFsKCJ5IikpKSkKKyAgICAgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0
ZXIsICJUaGUgJ3knIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQuIik7CiAKLSAg
ICBpZiAoaGVpZ2h0IDwgMCkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAnaGVpZ2h0JyBwYXJhbWV0ZXIgaGFkIGFu
IGludmFsaWQgdmFsdWUuIik7CisgICAgICAgIGlmICh4LnZhbHVlKCkgPCAwKQorICAgICAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRl
ciwgIlRoZSAneCcgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOwogCi0gICAgV2Vi
UGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3Vu
ZCk7Ci0KLSAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB3aWR0aCwgaGVpZ2h0XShX
ZWJDb3JlOjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZSkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCBuZXdGcmFtZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChvcmlnaW5hbEZyYW1l
LmxvY2F0aW9uKCksIFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAg
IGlmIChuZXdGcmFtZSA9PSBvcmlnaW5hbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrLT5zZW5kU3VjY2VzcygpOwotCi0gICAgICAgIHBhZ2UtPnNldFdpbmRvd0ZyYW1lKG5ld0Zy
YW1lKTsKLSAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7Ci0gICAgfSk7Ci0jZW5kaWYK
LX0KKyAgICAgICAgaWYgKHkudmFsdWUoKSA8IDApCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICd5JyBwYXJh
bWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CisgICAgfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmpl
Y3QmIHBvc2l0aW9uT2JqZWN0LCBSZWY8TW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJh
Y2s+JiYgY2FsbGJhY2spCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKLSNlbHNlCi0gICAgZmxvYXQgeDsKLSAgICBp
ZiAoIXBvc2l0aW9uT2JqZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgieCIpLCB4KSkK
LSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1Bh
cmFtZXRlciwgIlRoZSAneCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBoZWlnaHQ7CisgICAgaWYgKG9wdGlvbmFsU2l6ZU9iamVjdCkgeworICAgICAgICBpZiAoISh3
aWR0aCA9IG9wdGlvbmFsU2l6ZU9iamVjdC0+Z2V0TnVtYmVyPGZsb2F0PihXVEY6OkFTQ0lJTGl0
ZXJhbCgid2lkdGgiKSkpKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSAnd2lkdGgnIHBhcmFtZXRlciB3YXMg
bm90IGZvdW5kIG9yIGludmFsaWQuIik7CiAKLSAgICBmbG9hdCB5OwotICAgIGlmICghcG9zaXRp
b25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ5IiksIHkpKQotICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAi
VGhlICd5JyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOworICAgICAgICBp
ZiAoIShoZWlnaHQgPSBvcHRpb25hbFNpemVPYmplY3QtPmdldE51bWJlcjxmbG9hdD4oV1RGOjpB
U0NJSUxpdGVyYWwoImhlaWdodCIpKSkpCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICdoZWlnaHQnIHBhcmFt
ZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQuIik7CiAKLSAgICBpZiAoeCA8IDApCi0gICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0
ZXIsICJUaGUgJ3gnIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKKyAgICAgICAg
aWYgKHdpZHRoLnZhbHVlKCkgPCAwKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAnd2lkdGgnIHBhcmFtZXRl
ciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKIAotICAgIGlmICh5IDwgMCkKLSAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRo
ZSAneScgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAgICAgICBpZiAoaGVp
Z2h0LnZhbHVlKCkgPCAwKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSAnaGVpZ2h0JyBwYXJhbWV0ZXIgaGFk
IGFuIGludmFsaWQgdmFsdWUuIik7CisgICAgfQogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0g
d2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBXZWJDb3Jl
OjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZTsKLSAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhD
YWxsYmFjayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBh
Z2UpLCB4LCB5XShXZWJDb3JlOjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZSkgbXV0YWJsZSB7Ci0K
LSAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2ViQ29yZTo6RmxvYXRSZWN0
KFdlYkNvcmU6OkZsb2F0UG9pbnQoeCwgeSksIG9yaWdpbmFsRnJhbWUuc2l6ZSgpKTsKKyAgICBw
YWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB3aWR0aCwgaGVpZ2h0LCB4LCB5XShXZWJDb3Jl
OjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZSkgbXV0YWJsZSB7CisgICAgICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCBuZXdGcmFtZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50
KHgudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLngoKSksIHkudmFsdWVfb3Iob3Jp
Z2luYWxGcmFtZS5sb2NhdGlvbigpLnkoKSkpLCBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgudmFs
dWVfb3Iob3JpZ2luYWxGcmFtZS5zaXplKCkud2lkdGgoKSksIGhlaWdodC52YWx1ZV9vcihvcmln
aW5hbEZyYW1lLnNpemUoKS5oZWlnaHQoKSkpKTsKICAgICAgICAgaWYgKG5ld0ZyYW1lID09IG9y
aWdpbmFsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaAppbmRleCAyZGMwYTUyYTBlNjk5YTMwMjNlOTJmMDJhNGYyYTUy
YTMzYWM1YjFiLi40ZjU3OWRiZDZhNmM1YmY0MzhjZDA3OGU3YjQwZDFhMDIxNjQwY2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCkBAIC0xMjIsOCArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3Jl
YXRlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBTdHJpbmcqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNsb3NlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN3aXRjaFRvQnJvd3NpbmdD
b250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiBzaXplLCBS
ZWY8UmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgZmluYWw7Ci0gICAg
dm9pZCBtb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIHBvc2l0aW9uLCBSZWY8
TW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIGZpbmFsOworICAgIHZvaWQg
c2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCogb3JpZ2luLCBjb25zdCBK
U09OOjpPYmplY3QqIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYpIGZpbmFsOwogICAgIHZvaWQgbmF2aWdhdGVCcm93c2luZ0NvbnRleHQoSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcsIGNvbnN0IGlu
dCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dENh
bGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdvQmFja0luQnJvd3NpbmdDb250ZXh0KElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRpb25hbFBhZ2VMb2FkVGlt
ZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5
U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8R29Gb3J3YXJk
SW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333772</attachid>
            <date>2018-02-13 23:52:45 -0800</date>
            <delta_ts>2018-02-14 10:12:58 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wd-set-window-rect.diff</filename>
            <type>text/plain</type>
            <size>20239</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmIxMTU1MDU4MTQuLjZkY2U2YTEwNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4
LTAyLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRv
bWF0aW9uOiBjb21iaW5lIHNlc3Npb24gY29tbWFuZHMgdG8gcmVzaXplIGFuZCBtb3ZlIHRvcC1s
ZXZlbCBicm93c2luZyBjb250ZXh0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyNzQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzUxNTE3MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9K
U09OVmFsdWVzLmg6IGFkZCBhIGdldERvdWJsZSgpIGltcGxlbWVudGF0aW9uIHRoYXQgcmV0dXJu
cyBhIHN0ZDo6b3B0aW9uYWw8VD4KKyAgICAgICAgcmF0aGVyIHRoYW4gdXNpbmcgYW4gb3V0LXBh
cmFtZXRlci4gSSdkIGxpa2UgdG8gbW92ZSBtb3JlIGNvZGUgdG8gdGhpcyBzdHlsZS4KKwogMjAx
OC0wMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1v
cmUgc3VwcG9ydCBmb3IgcG9pbnRlciBwcmVwYXJhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgKaW5kZXgg
YTE2ZmYyY2UxMWUuLjgzN2Q3M2E0Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09O
VmFsdWVzLmgKKysrIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCkBAIC0yMTcsNiArMjE3
LDE5IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHZhbHVlLT5hc0ludGVnZXIob3V0cHV0
KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdGQ6Om9wdGlvbmFsPFQ+IGdldE51
bWJlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CisgICAgeworICAgICAgICBSZWZQdHI8VmFs
dWU+IHZhbHVlOworICAgICAgICBpZiAoIWdldFZhbHVlKG5hbWUsIHZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIAorICAgICAgICBUIHJlc3VsdDsKKyAg
ICAgICAgaWYgKCF2YWx1ZS0+YXNEb3VibGUocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKICAgICBib29sIGdldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgb3V0cHV0
KSBjb25zdDsKICAgICBib29sIGdldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxP
YmplY3Q+JikgY29uc3Q7CiAgICAgYm9vbCBnZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUsIFJl
ZlB0cjxBcnJheT4mKSBjb25zdDsKQEAgLTI2MCw2ICsyNzMsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgT2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbjsKICAgICB1c2luZyBPYmplY3RCYXNlOjpnZXRJbnRl
Z2VyOwogICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldERvdWJsZTsKKyAgICB1c2luZyBPYmplY3RC
YXNlOjpnZXROdW1iZXI7CiAgICAgdXNpbmcgT2JqZWN0QmFzZTo6Z2V0U3RyaW5nOwogICAgIHVz
aW5nIE9iamVjdEJhc2U6OmdldE9iamVjdDsKICAgICB1c2luZyBPYmplY3RCYXNlOjpnZXRBcnJh
eTsKQEAgLTQ3MiwzICs0ODYsNCBAQCBwdWJsaWM6CiBuYW1lc3BhY2UgSlNPTiB7CiB1c2luZyBu
YW1lc3BhY2UgV1RGOjpKU09OSW1wbDsKIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCBkNGExZDg0MDk4
MC4uYWUzZmFkZDk2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDIt
MTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRp
b246IGNvbWJpbmUgc2Vzc2lvbiBjb21tYW5kcyB0byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVs
IGJyb3dzaW5nIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODI3NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3NTE1MTcwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY29t
bWFuZCBjYW4gdGFrZSBlaXRoZXIgc2l6ZSBvciBvcmlnaW4sIHNvIHVzZSB0aGUgc2FtZSBjb21t
YW5kIGFyZ3VtZW50cy4KKworICAgICAgICAqIFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViRHJp
dmVyOjpTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bjo6bW92ZVRvcGxldmVsQnJvd3NpbmdDb250ZXh0V2luZG93KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkRyaXZlcjo6U2Vzc2lvbjo6cmVzaXplVG9wbGV2ZWxCcm93c2luZ0NvbnRleHRXaW5kb3cp
OiBEZWxldGVkLgorICAgICAgICAqIFNlc3Npb24uaDoKKwogMjAxOC0wMS0zMCAgRG9uIE9sbXN0
ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gTWFrZSBXVEYg
aGVhZGVycyBjb3BpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDdhOGM3MjllOWUwLi41ZjgxN2I2
MWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC03MTUsNDAgKzcxNSw2IEBAIHZvaWQgU2Vzc2lv
bjo6Z2V0VG9wbGV2ZWxCcm93c2luZ0NvbnRleHRSZWN0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYKICAgICB9KTsKIH0KIAotdm9pZCBTZXNzaW9uOjptb3ZlVG9wbGV2ZWxCcm93
c2luZ0NvbnRleHRXaW5kb3coZG91YmxlIHgsIGRvdWJsZSB5LCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImhhbmRsZSIpLCBtX3RvcGxldmVsQnJvd3NpbmdD
b250ZXh0LnZhbHVlKCkpOwotICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHdpbmRvd09yaWdpbiA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngi
LCB4KTsKLSAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkpOwotICAgIHBhcmFtZXRl
cnMtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoIm9yaWdpbiIpLCBXVEZNb3ZlKHdpbmRvd09yaWdp
bikpOwotICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJtb3Zl
V2luZG93T2ZCcm93c2luZ0NvbnRleHQiKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3Bv
bnNlKSB7Ci0gICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9u
c2VPYmplY3QpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6c3VjY2VzcygpKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBTZXNzaW9uOjpyZXNpemVUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyhkb3VibGUg
d2lkdGgsIGRvdWJsZSBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyYW1ldGVy
cyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiaGFuZGxlIiksIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7
Ci0gICAgUmVmUHRyPEpTT046Ok9iamVjdD4gd2luZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7Ci0gICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCIsIHdpZHRoKTsKLSAgICB3
aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodCk7Ci0gICAgcGFyYW1ldGVycy0+
c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic2l6ZSIpLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKLSAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgicmVzaXplV2luZG93
T2ZCcm93c2luZ0NvbnRleHQiKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSB7
Ci0gICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6c3VjY2VzcygpKTsKLSAgICB9KTsKLX0KLQogdm9pZCBT
ZXNzaW9uOjpnZXRXaW5kb3dSZWN0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
KSB7CkBAIC03NzgsNDAgKzc0NCwyNyBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkg
IHsKLSAgICAgICAgICAgIHJlc2l6ZVRvcGxldmVsQnJvd3NpbmdDb250ZXh0V2luZG93KHdpZHRo
LnZhbHVlKCksIGhlaWdodC52YWx1ZSgpLCBbdGhpcywgeCwgeSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoIXggfHwgIXkpIHsKLSAgICAgICAgICAgICAgICAgICAgZ2V0VG9wbGV2ZWxCcm93c2luZ0Nv
bnRleHRSZWN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1vdmVUb3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyh4LnZhbHVlKCksIHkudmFsdWUoKSwgW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1
bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
RXJyb3IoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBnZXRUb3BsZXZlbEJyb3dzaW5nQ29u
dGV4dFJlY3QoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQorICAg
ICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKKyAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiaGFuZGxl
IiksIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIGlmICh4ICYm
IHkpIHsKLSAgICAgICAgICAgIG1vdmVUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyh4LnZh
bHVlKCksIHkudmFsdWUoKSwgW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ2V0VG9wbGV2ZWxCcm93
c2luZ0NvbnRleHRSZWN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2V0VG9wbGV2
ZWxCcm93c2luZ0NvbnRleHRSZWN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFs
dWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUo
KSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJvcmln
aW4iKSwgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKKyAgICAgICAgfQorICAgICAgICBpZiAod2lk
dGggJiYgaGVpZ2h0KSB7CisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3aW5kb3dT
aXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUt
PnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgcGFyYW1l
dGVycy0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic2l6ZSIpLCBXVEZNb3ZlKHdpbmRvd1NpemUp
KTsKKyAgICAgICAgfQorICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJ
TGl0ZXJhbCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCIpLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1h
bmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChyZXNwb25z
ZS5pc0Vycm9yKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJl
c3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdldFRvcGxldmVsQnJv
d3NpbmdDb250ZXh0UmVjdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIH0p
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5oCmluZGV4IDhlODlkYTdmMzI2Li40MmIzYmJhNTA4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkRyaXZlci9TZXNzaW9uLmgKQEAgLTEyMSw4ICsxMjEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xvc2VBbGxUb3BsZXZlbEJyb3dzaW5nQ29udGV4dHMoY29uc3QgU3RyaW5nJiB0b3BsZXZlbEJy
b3dzaW5nQ29udGV4dCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAKICAg
ICB2b2lkIGdldFRvcGxldmVsQnJvd3NpbmdDb250ZXh0UmVjdChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmKTsKLSAgICB2b2lkIG1vdmVUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFdp
bmRvdyhkb3VibGUgeCwgZG91YmxlIHksIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+
JiYpOwotICAgIHZvaWQgcmVzaXplVG9wbGV2ZWxCcm93c2luZ0NvbnRleHRXaW5kb3coZG91Ymxl
IHdpZHRoLCBkb3VibGUgaGVpZ2h0LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
KTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYTgyZTg5OWYxNjQuLjVhYTBhMDc2YmViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDE4LTAyLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBjb21iaW5lIHNlc3Npb24gY29tbWFuZHMgdG8g
cmVzaXplIGFuZCBtb3ZlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzQ5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNzUxNTE3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaW5jZSBtb3ZpbmcgYW5kIHJlc2l6aW5nIHRoZSB3aW5kb3cgYXJlIGJv
dGggYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlIHdpbmRvdyBmcmFtZSwKKyAgICAgICAgYW5k
IHRoZSBXM0MgV2ViRHJpdmVyIHNwZWNpZmljYXRpb24gaGFzIGEgR2V0L1NldCBXaW5kb3cgUmVj
dCBjb21tYW5kLCBpdCdzIHRpbWUgdG8KKyAgICAgICAgZGVkdXBsaWNhdGUgdGhlc2UgdHdvIG1l
dGhvZHMgd2hpY2ggYmFzaWNhbGx5IGRvIHRoZSBzYW1lIHRoaW5nLgorCisgICAgICAgIEFkb3B0
IG1vZGVybiBKU09OOjpWYWx1ZSBnZXR0ZXJzIHRoYXQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+LiBJIGhhdmUgYmVlbiB0cnlpbmcKKyAgICAgICAgdG8gbW92ZSB0aGUgcHJvdG9jb2wgb3Zl
ciB0byB0aGlzIHN0eWxlIHdob2xlc2FsZSwgYnV0IGl0IGlzIHByb2JhYmx5IGVhc2llciB0byBk
bworICAgICAgICB0aGlzIGNvbnZlcnNpb24gaW4gc21hbGxlciBwaWVjZXMuIEFuZCBzbywgSSBo
YXZlIHN0YXJ0ZWQgdG8gZG8gc28uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgY292ZXJlZCBi
eSBleGlzdGluZyBXZWJEcml2ZXIgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgY29tbWFuZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KTog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNpemVXaW5k
b3dPZkJyb3dzaW5nQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjptb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisKIDIw
MTgtMDItMTMgIFlvdXN1a2UgS2ltb3RvICA8eW91c3VrZS5raW1vdG9Ac29ueS5jb20+CiAKICAg
ICAgICAgW1dpbkNhaXJvXSBGaXggYnVpbGQgZXJyb3JzIHdoaWNoIGNvbWUgZnJvbSBpbmNsdWRp
bmcgaGVhZGVycyBhbmQgbm90IHN1aXRhYmxlIGltcGxlbWVudGF0aW9uIGZvciB3aW5kb3dzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDNhODE2NjgxNGE4Li44YzkyNDljYTU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTI4OSwyMCArMjg5LDEy
IEBACiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgICJu
YW1lIjogInJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0IiwKLSAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXNpemVzIHRoZSB3aW5kb3cgb2YgdGhlIHNwZWNpZmllZCBicm93c2luZyBj
b250ZXh0IHRvIHRoZSBzcGVjaWZpZWQgc2l6ZS4iLAorICAgICAgICAgICAgIm5hbWUiOiAic2V0
V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiTW92ZXMgYW5kL29yIHJlc2l6ZXMgdGhlIHdpbmRvdyBvZiB0aGUgc3BlY2lmaWVkIHRvcC1s
ZXZlbCBicm93c2luZyBjb250ZXh0IHRvIHRoZSBzcGVjaWZpZWQgc2l6ZSBhbmQgb3JpZ2luLiBF
aXRoZXIgdGhlIHNpemUgb3Igb3JpZ2luIG1heSBiZSBvbWl0dGVkLCBidXQgbm90IGJvdGguIiwK
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRvIGJlIHJlc2l6ZWQuIiB9LAot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2l6ZSIsICIkcmVmIjogIlNpemUiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIG5ldyBzaXplIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4i
IH0KLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYXN5bmMiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIm1vdmVXaW5kb3dPZkJyb3dzaW5nQ29u
dGV4dCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTW92ZXMgdGhlIHdpbmRvdyBvZiB0
aGUgc3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRleHQgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4i
LAotICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgbW92ZWQuIiB9LAot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgIiRyZWYiOiAiUG9pbnQiLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG5ldyBvcmlnaW4gZm9yIHRoZSBicm93c2luZyBjb250ZXh0J3Mgd2lu
ZG93LiBUaGUgcG9zaXRpb24gaXMgaW50ZXJwcmV0ZWQgaW4gc2NyZWVuIGNvb3JkaW5hdGUgc3Bh
Y2UsIHJlbGF0aXZlIHRvIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuLiIgfQor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgIiRyZWYiOiAiUG9pbnQiLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBvcmlnaW4gZm9yIHRoZSBicm93
c2luZyBjb250ZXh0J3Mgd2luZG93LiBUaGUgcG9zaXRpb24gaXMgaW50ZXJwcmV0ZWQgaW4gc2Ny
ZWVuIGNvb3JkaW5hdGUgc3BhY2UsIHJlbGF0aXZlIHRvIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBv
ZiB0aGUgc2NyZWVuLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUiLCAiJHJl
ZiI6ICJTaXplIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgc2l6
ZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cuIFRoZSBzaXplIGlzIGludGVycHJl
dGVkIGluIHNjcmVlbiBwaXhlbHMuIiB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImFz
eW5jIjogdHJ1ZQogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMzY1OTRh
MzJmYS4uNWI1Y2I4NmIzMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0zMTUsNjcgKzMx
NSw1MiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4
dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvcgogICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpGb2N1c0ZyYW1lKHBhZ2UtPnBh
Z2VJRCgpLCBmcmFtZUlELnZhbHVlKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3Qm
IHNpemVPYmplY3QsIFJlZjxSZXNpemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYm
IGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0V2luZG93RnJhbWVPZkJy
b3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uYWxPcmlnaW5PYmplY3Qs
IGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uYWxTaXplT2JqZWN0LCBSZWY8U2V0V2luZG93RnJh
bWVPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JN
KElPUykKICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb3RJbXBsZW1lbnRlZCk7CiAj
ZWxzZQotICAgIGZsb2F0IHdpZHRoOwotICAgIGlmICghc2l6ZU9iamVjdC5nZXREb3VibGUoV1RG
OjpBU0NJSUxpdGVyYWwoIndpZHRoIiksIHdpZHRoKSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSAnd2lkdGgnIHBh
cmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQuIik7CisgICAgaWYgKCFvcHRpb25hbE9y
aWdpbk9iamVjdCAmJiAhb3B0aW9uYWxTaXplT2JqZWN0KQorICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiRWl0aGVyIHNpemUg
b3Igb3JpZ2luIG11c3QgYmUgc3BlY2lmaWVkLiIpOwogCi0gICAgZmxvYXQgaGVpZ2h0OwotICAg
IGlmICghc2l6ZU9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoImhlaWdodCIpLCBo
ZWlnaHQpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhN
aXNzaW5nUGFyYW1ldGVyLCAiVGhlICdoZWlnaHQnIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9y
IGludmFsaWQuIik7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4geDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiB5OworICAgIGlmIChvcHRpb25hbE9yaWdpbk9iamVjdCkgeworICAgICAgICBp
ZiAoISh4ID0gb3B0aW9uYWxPcmlnaW5PYmplY3QtPmdldE51bWJlcjxmbG9hdD4oV1RGOjpBU0NJ
SUxpdGVyYWwoIngiKSkpKQorICAgICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSAneCcgcGFyYW1ldGVyIHdhcyBub3Qg
Zm91bmQgb3IgaW52YWxpZC4iKTsKIAotICAgIGlmICh3aWR0aCA8IDApCi0gICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUg
J3dpZHRoJyBwYXJhbWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CisgICAgICAgIGlmICgh
KHkgPSBvcHRpb25hbE9yaWdpbk9iamVjdC0+Z2V0TnVtYmVyPGZsb2F0PihXVEY6OkFTQ0lJTGl0
ZXJhbCgieSIpKSkpCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRf
REVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd5JyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3Vu
ZCBvciBpbnZhbGlkLiIpOwogCi0gICAgaWYgKGhlaWdodCA8IDApCi0gICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgJ2hl
aWdodCcgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAgICAgICBpZiAoeC52
YWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9E
RVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgJ3gnIHBhcmFtZXRlciBoYWQgYW4gaW52YWxp
ZCB2YWx1ZS4iKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhh
bmRsZShoYW5kbGUpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoV2luZG93Tm90Rm91bmQpOwotCi0gICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRo
Q2FsbGJhY2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpw
YWdlKSwgd2lkdGgsIGhlaWdodF0oV2ViQ29yZTo6RmxvYXRSZWN0IG9yaWdpbmFsRnJhbWUpIG11
dGFibGUgewotICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbmV3RnJhbWUgPSBXZWJDb3JlOjpG
bG9hdFJlY3Qob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLCBXZWJDb3JlOjpGbG9hdFNpemUod2lk
dGgsIGhlaWdodCkpOwotICAgICAgICBpZiAobmV3RnJhbWUgPT0gb3JpZ2luYWxGcmFtZSkKLSAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKLQotICAgICAgICBwYWdl
LT5zZXRXaW5kb3dGcmFtZShuZXdGcmFtZSk7Ci0gICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vz
cygpOwotICAgIH0pOwotI2VuZGlmCi19CisgICAgICAgIGlmICh5LnZhbHVlKCkgPCAwKQorICAg
ICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBh
cmFtZXRlciwgIlRoZSAneScgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAg
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW92ZVdpbmRvd09mQnJvd3NpbmdDb250
ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhh
bmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiBwb3NpdGlvbk9iamVjdCwgUmVmPE1vdmVXaW5kb3dP
ZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmIGNhbGxiYWNrKQotewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihOb3RJbXBsZW1lbnRlZCk7Ci0jZWxz
ZQotICAgIGZsb2F0IHg7Ci0gICAgaWYgKCFwb3NpdGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpB
U0NJSUxpdGVyYWwoIngiKSwgeCkpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgJ3gnIHBhcmFtZXRlciB3YXMgbm90
IGZvdW5kIG9yIGludmFsaWQuIik7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gaGVpZ2h0OworICAgIGlmIChvcHRpb25hbFNpemVPYmpl
Y3QpIHsKKyAgICAgICAgaWYgKCEod2lkdGggPSBvcHRpb25hbFNpemVPYmplY3QtPmdldE51bWJl
cjxmbG9hdD4oV1RGOjpBU0NJSUxpdGVyYWwoIndpZHRoIikpKSkKKyAgICAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
J3dpZHRoJyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOwogCi0gICAgZmxv
YXQgeTsKLSAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJh
bCgieSIpLCB5KSkKLSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSAneScgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3Ig
aW52YWxpZC4iKTsKKyAgICAgICAgaWYgKCEoaGVpZ2h0ID0gb3B0aW9uYWxTaXplT2JqZWN0LT5n
ZXROdW1iZXI8ZmxvYXQ+KFdURjo6QVNDSUlMaXRlcmFsKCJoZWlnaHQiKSkpKQorICAgICAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRl
ciwgIlRoZSAnaGVpZ2h0JyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOwog
Ci0gICAgaWYgKHggPCAwKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRf
REVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICd4JyBwYXJhbWV0ZXIgaGFkIGFuIGludmFs
aWQgdmFsdWUuIik7CisgICAgICAgIGlmICh3aWR0aC52YWx1ZSgpIDwgMCkKKyAgICAgICAgICAg
IEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJUaGUgJ3dpZHRoJyBwYXJhbWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CiAKLSAgICBp
ZiAoeSA8IDApCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludmFsaWRQYXJhbWV0ZXIsICJUaGUgJ3knIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1
ZS4iKTsKKyAgICAgICAgaWYgKGhlaWdodC52YWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUg
J2hlaWdodCcgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAgIH0KIAogICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwogICAg
IGlmICghcGFnZSkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90
Rm91bmQpOwogCi0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IG9yaWdpbmFsRnJhbWU7Ci0gICAgcGFn
ZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgeCwgeV0oV2ViQ29yZTo6RmxvYXRSZWN0IG9yaWdp
bmFsRnJhbWUpIG11dGFibGUgewotCi0gICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFt
ZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KHgsIHkpLCBvcmlnaW5h
bEZyYW1lLnNpemUoKSk7CisgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgd2lkdGgs
IGhlaWdodCwgeCwgeV0oV2ViQ29yZTo6RmxvYXRSZWN0IG9yaWdpbmFsRnJhbWUpIG11dGFibGUg
eworICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbmV3RnJhbWUgPSBXZWJDb3JlOjpGbG9hdFJl
Y3QoV2ViQ29yZTo6RmxvYXRQb2ludCh4LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24o
KS54KCkpLCB5LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS55KCkpKSwgV2ViQ29y
ZTo6RmxvYXRTaXplKHdpZHRoLnZhbHVlX29yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLndpZHRoKCkp
LCBoZWlnaHQudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5zaXplKCkuaGVpZ2h0KCkpKSk7CiAgICAg
ICAgIGlmIChuZXdGcmFtZSA9PSBvcmlnaW5hbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrLT5zZW5kU3VjY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggMmRjMGE1MmEw
ZTYuLjRmNTc5ZGJkNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xMjIsOCArMTIyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgY3JlYXRlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmLCBTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlQnJvd3NpbmdDb250ZXh0
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZy
YW1lSGFuZGxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250
ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3Qg
SlNPTjo6T2JqZWN0JiBzaXplLCBSZWY8UmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHRDYWxs
YmFjaz4mJikgZmluYWw7Ci0gICAgdm9pZCBtb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpP
YmplY3QmIHBvc2l0aW9uLCBSZWY8TW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+
JiYpIGZpbmFsOworICAgIHZvaWQgc2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9i
amVjdCogb3JpZ2luLCBjb25zdCBKU09OOjpPYmplY3QqIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFt
ZU9mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIGZpbmFsOwogICAgIHZvaWQgbmF2aWdhdGVC
cm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFu
ZGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3Ry
YXRlZ3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZp
Z2F0ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdvQmFj
a0luQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50
KiBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQo
SW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxQYWdlTG9hZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRU
aW1lb3V0LCBSZWY8R29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333824</attachid>
            <date>2018-02-14 11:30:53 -0800</date>
            <delta_ts>2018-02-27 12:23:26 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-182749-20180214113052.patch</filename>
            <type>text/plain</type>
            <size>20863</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJiMTE1NTA1ODE0OTA5NGYwNDg1MGQz
YmRiZjlmMWI1OGQ2ZjFlYzAuLjcyNDQzNWExZmNiYTdhOThlMWQ4YTM4NDI2ZTlkMzhhMmUzYTFm
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21t
YW5kcyB0byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NDkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3NTE1MTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuaDogYWRkIGEgZ2V0RG91Ymxl
KCkgaW1wbGVtZW50YXRpb24gdGhhdCByZXR1cm5zIGEgc3RkOjpvcHRpb25hbDxUPgorICAgICAg
ICByYXRoZXIgdGhhbiB1c2luZyBhbiBvdXQtcGFyYW1ldGVyLiBJJ2QgbGlrZSB0byBtb3ZlIG1v
cmUgY29kZSB0byB0aGlzIHN0eWxlLgorCiAyMDE4LTAyLTEyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbW9yZSBzdXBwb3J0IGZvciBwb2ludGVyIHByZXBh
cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggZDRhMWQ4NDA5ODA3NGU3ODUxYzg1Yjc1YzgwNGY0
ODQ5MjJhOWU3ZS4uY2JlZTkzNmI2NTY2MmRiNmViY2FjNGI2YTg5YWM5Y2VhOTc0N2Y3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMi0xNCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlvbjogY29tYmluZSBzZXNzaW9u
IGNvbW1hbmRzIHRvIHJlc2l6ZSBhbmQgbW92ZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjc0OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1MTUxNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBjb21tYW5kIGNhbiB0YWtlIGVpdGhl
ciBzaXplIG9yIG9yaWdpbi4gSnVzdCBoYXZlIG9uZSBzZXNzaW9uIGNvbW1hbmQgZm9yIHVzZSBi
eSBlbmRwb2ludHMuCisKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbjo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246
Om1vdmVUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJEcml2ZXI6OlNlc3Npb246OnJlc2l6ZVRvcGxldmVsQnJvd3NpbmdDb250ZXh0V2luZG93KTog
RGVsZXRlZC4KKyAgICAgICAgKiBTZXNzaW9uLmg6CisKIDIwMTgtMDEtMzAgIERvbiBPbG1zdGVh
ZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIE1ha2UgV1RGIGhl
YWRlcnMgY29waWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiMzZhNmU5MDY3MGVhY2I5ZTUwNTc0YzU3ODlhNTNk
MTE0NTc4Y2IuLjM4MzgyZTVjMDcxMjNjNzIyNGNjZjgzODk2NDA3OTg5YjBmOWQzYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21tYW5k
cyB0byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NDkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM3NTE1MTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNpbmNlIG1vdmluZyBhbmQgcmVzaXppbmcgdGhlIHdpbmRvdyBh
cmUgYm90aCBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgd2luZG93IGZyYW1lLAorICAgICAg
ICBhbmQgdGhlIFczQyBXZWJEcml2ZXIgc3BlY2lmaWNhdGlvbiBoYXMgYSBHZXQvU2V0IFdpbmRv
dyBSZWN0IGNvbW1hbmQsIGl0J3MgdGltZSB0bworICAgICAgICBkZWR1cGxpY2F0ZSB0aGVzZSB0
d28gbWV0aG9kcyB3aGljaCBiYXNpY2FsbHkgZG8gdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAg
QWRvcHQgbW9kZXJuIEpTT046OlZhbHVlIGdldHRlcnMgdGhhdCByZXR1cm4gc3RkOjpvcHRpb25h
bDxmbG9hdD4uIEkgaGF2ZSBiZWVuIHRyeWluZworICAgICAgICB0byBtb3ZlIHRoZSBwcm90b2Nv
bCBvdmVyIHRvIHRoaXMgc3R5bGUgd2hvbGVzYWxlLCBidXQgaXQgaXMgcHJvYmFibHkgZWFzaWVy
IHRvIGRvCisgICAgICAgIHRoaXMgY29udmVyc2lvbiBpbiBzbWFsbGVyIHBpZWNlcy4gQW5kIHNv
LCBJIGhhdmUgc3RhcnRlZCB0byBkbyBzby4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIFdlYkRyaXZlciB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyBjb21tYW5kLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRl
eHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc2l6
ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246Om1vdmVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoK
KwogMjAxOC0wMi0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIFdlYiBBdXRvbWF0aW9uOiBwcm92aWRlIGEgd2F5IHRvIGFzayBjbGllbnRzIHRoZSB0
eXBlIG9mIGEgSmF2YVNjcmlwdCBkaWFsb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pT
T05WYWx1ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuaAppbmRleCBhMTZmZjJjZTEx
ZWIxZWE4MmIzYjdkNDA5NjczYTM3ODk3NmYyODk5Li43ZjJjOGUyY2NkNGZiODVkZWE1MzQ4YWFi
Njg1Y2ZkMjczMTljOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmgK
KysrIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5oCkBAIC0yMTcsNiArMjE3LDE5IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHZhbHVlLT5hc0ludGVnZXIob3V0cHV0KTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdGQ6Om9wdGlvbmFsPFQ+IGdldE51bWJlcihjb25z
dCBTdHJpbmcmIG5hbWUpIGNvbnN0CisgICAgeworICAgICAgICBSZWZQdHI8VmFsdWU+IHZhbHVl
OworICAgICAgICBpZiAoIWdldFZhbHVlKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgVCByZXN1bHQ7CisgICAgICAgIGlmICghdmFsdWUt
PmFzRG91YmxlKHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgYm9vbCBnZXRTdHJpbmcoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdHJpbmcmIG91dHB1dCkgY29uc3Q7CiAgICAgYm9vbCBnZXRPYmplY3Qo
Y29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8T2JqZWN0PiYpIGNvbnN0OwogICAgIGJvb2wgZ2V0
QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8QXJyYXk+JikgY29uc3Q7CkBAIC0yNjAs
NiArMjczLDcgQEAgcHVibGljOgogICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldEJvb2xlYW47CiAg
ICAgdXNpbmcgT2JqZWN0QmFzZTo6Z2V0SW50ZWdlcjsKICAgICB1c2luZyBPYmplY3RCYXNlOjpn
ZXREb3VibGU7CisgICAgdXNpbmcgT2JqZWN0QmFzZTo6Z2V0TnVtYmVyOwogICAgIHVzaW5nIE9i
amVjdEJhc2U6OmdldFN0cmluZzsKICAgICB1c2luZyBPYmplY3RCYXNlOjpnZXRPYmplY3Q7CiAg
ICAgdXNpbmcgT2JqZWN0QmFzZTo6Z2V0QXJyYXk7CkBAIC00NzIsMyArNDg2LDQgQEAgcHVibGlj
OgogbmFtZXNwYWNlIEpTT04gewogdXNpbmcgbmFtZXNwYWNlIFdURjo6SlNPTkltcGw7CiB9CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uY3BwCmluZGV4IDdhOGM3MjllOWUwM2U5NGNkNWFmYTY4NjliYTA4OWM2NTBm
YWY3M2YuLjVmODE3YjYxZDE3Y2RlYTJjZTMxMGY0OGMyNGQzMWU1N2E3ZmFjZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcApAQCAtNzE1LDQwICs3MTUsNiBAQCB2b2lkIFNlc3Npb246OmdldFRvcGxldmVs
QnJvd3NpbmdDb250ZXh0UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmCiAg
ICAgfSk7CiB9CiAKLXZvaWQgU2Vzc2lvbjo6bW92ZVRvcGxldmVsQnJvd3NpbmdDb250ZXh0V2lu
ZG93KGRvdWJsZSB4LCBkb3VibGUgeSwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0
ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJoYW5kbGUiKSwgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgp
KTsKLSAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwotICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ4IiwgeCk7Ci0gICAgd2lu
ZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5KTsKLSAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3Qo
QVNDSUlMaXRlcmFsKCJvcmlnaW4iKSwgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKLSAgICBtX2hv
c3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgibW92ZVdpbmRvd09mQnJvd3Np
bmdDb250ZXh0IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewotICAgICAg
ICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OnN1Y2Nlc3MoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2Vzc2lvbjo6
cmVzaXplVG9wbGV2ZWxCcm93c2luZ0NvbnRleHRXaW5kb3coZG91YmxlIHdpZHRoLCBkb3VibGUg
aGVpZ2h0LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImhh
bmRsZSIpLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAgIFJlZlB0cjxK
U09OOjpPYmplY3Q+IHdpbmRvd1NpemUgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aCk7Ci0gICAgd2luZG93U2l6ZS0+c2V0
RG91YmxlKCJoZWlnaHQiLCBoZWlnaHQpOwotICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdChBU0NJ
SUxpdGVyYWwoInNpemUiKSwgV1RGTW92ZSh3aW5kb3dTaXplKSk7Ci0gICAgbV9ob3N0LT5zZW5k
Q29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwoInJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250
ZXh0IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgewotICAgICAgICBpZiAo
cmVzcG9uc2UuaXNFcnJvcikgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFu
ZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1h
bmRSZXN1bHQ6OnN1Y2Nlc3MoKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgU2Vzc2lvbjo6Z2V0V2lu
ZG93UmVjdChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dCkgewpAQCAtNzc4LDQw
ICs3NDQsMjcgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3QKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpICB7Ci0gICAgICAgICAg
ICByZXNpemVUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyh3aWR0aC52YWx1ZSgpLCBoZWln
aHQudmFsdWUoKSwgW3RoaXMsIHgsIHksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCF4IHx8ICF5KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGdldFRvcGxldmVsQnJvd3NpbmdDb250ZXh0UmVjdChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtb3ZlVG9wbGV2ZWxCcm93c2luZ0Nv
bnRleHRXaW5kb3coeC52YWx1ZSgpLCB5LnZhbHVlKCksIFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgZ2V0VG9wbGV2ZWxCcm93c2luZ0NvbnRleHRSZWN0KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAgUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImhhbmRsZSIpLCBtX3RvcGxldmVs
QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7Ci0gICAgICAg
ICAgICBtb3ZlVG9wbGV2ZWxCcm93c2luZ0NvbnRleHRXaW5kb3coeC52YWx1ZSgpLCB5LnZhbHVl
KCksIFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShDb21tYW5kUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0LmlzRXJyb3IoKSkgewotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdldFRvcGxldmVsQnJvd3NpbmdDb250ZXh0UmVj
dChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFRvcGxldmVsQnJvd3NpbmdDb250
ZXh0UmVjdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOworICAgICAg
ICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgib3JpZ2luIiksIFdURk1vdmUo
d2luZG93T3JpZ2luKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkg
eworICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gd2luZG93U2l6ZSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoIndpZHRo
Iiwgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhl
aWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVj
dChBU0NJSUxpdGVyYWwoInNpemUiKSwgV1RGTW92ZSh3aW5kb3dTaXplKSk7CisgICAgICAgIH0K
KyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwoInNldFdp
bmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQiKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiBy
ZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RG
TW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnZXRUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFJl
Y3QoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9KTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uaAppbmRleCA4ZTg5ZGE3ZjMyNjRkYjNmMTRmY2RkNmM0MjQ5MDY3MDQxMTUz
YmE1Li40MmIzYmJhNTA4ZjQyZTA3NThjNjk4NDM2M2E3NGRiMjhkYzMxNTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b24uaApAQCAtMTIxLDggKzEyMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9zZUFsbFRvcGxl
dmVsQnJvd3NpbmdDb250ZXh0cyhjb25zdCBTdHJpbmcmIHRvcGxldmVsQnJvd3NpbmdDb250ZXh0
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKIAogICAgIHZvaWQgZ2V0VG9w
bGV2ZWxCcm93c2luZ0NvbnRleHRSZWN0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+
JiYpOwotICAgIHZvaWQgbW92ZVRvcGxldmVsQnJvd3NpbmdDb250ZXh0V2luZG93KGRvdWJsZSB4
LCBkb3VibGUgeSwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7Ci0gICAgdm9p
ZCByZXNpemVUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFdpbmRvdyhkb3VibGUgd2lkdGgsIGRvdWJs
ZSBoZWlnaHQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogCiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b24gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpp
bmRleCAzYTgxNjY4MTRhOGJlNDVlM2NjNjI4MDFhMGI4YWM1ZjNkMTNlZGUxLi44ODQwODI2NmEx
Yzg0YjA0NTQwZDdiZGE4OGIyMTU5MTM3Y2UzMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtMjg5LDIwICsyODksMTIg
QEAKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5h
bWUiOiAicmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQiLAotICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlc2l6ZXMgdGhlIHdpbmRvdyBvZiB0aGUgc3BlY2lmaWVkIGJyb3dzaW5nIGNv
bnRleHQgdG8gdGhlIHNwZWNpZmllZCBzaXplLiIsCisgICAgICAgICAgICAibmFtZSI6ICJzZXRX
aW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJNb3ZlcyBhbmQvb3IgcmVzaXplcyB0aGUgd2luZG93IG9mIHRoZSBzcGVjaWZpZWQgdG9wLWxl
dmVsIGJyb3dzaW5nIGNvbnRleHQgdG8gdGhlIHNwZWNpZmllZCBzaXplIGFuZCBvcmlnaW4uIEJv
dGggdGhlIHNpemUgYW5kIG9yaWdpbiBtYXkgYmUgb21pdHRlZC4gUmVnYXJkbGVzcyBvZiB0aGUg
YXJndW1lbnRzLCB0aGlzIGNvbW1hbmQgd2lsbCBleGl0IGZ1bGxzY3JlZW4gYW5kIGRlbWluaWF0
dXJpemUgdGhlIHdpbmRvdyBpZiBhcHBsaWNhYmxlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dz
aW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJv
d3NpbmcgY29udGV4dCB0byBiZSByZXNpemVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInNpemUiLCAiJHJlZiI6ICJTaXplIiwgImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgc2l6ZSBm
b3IgdGhlIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3cuIiB9Ci0gICAgICAgICAgICBdLAotICAg
ICAgICAgICAgImFzeW5jIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICAibmFtZSI6ICJtb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQiLAotICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIk1vdmVzIHRoZSB3aW5kb3cgb2YgdGhlIHNwZWNpZmllZCBicm93c2luZyBj
b250ZXh0IHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIiwKLSAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJv
d3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBi
cm93c2luZyBjb250ZXh0IHRvIGJlIG1vdmVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9yaWdpbiIsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgb3Jp
Z2luIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4gVGhlIHBvc2l0aW9uIGlzIGlu
dGVycHJldGVkIGluIHNjcmVlbiBjb29yZGluYXRlIHNwYWNlLCByZWxhdGl2ZSB0byB0aGUgdXBw
ZXIgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbi4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9yaWdpbiIsICIkcmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlRoZSBuZXcgb3JpZ2luIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHdpbmRvdy4g
VGhlIHBvc2l0aW9uIGlzIGludGVycHJldGVkIGluIHNjcmVlbiBjb29yZGluYXRlIHNwYWNlLCBy
ZWxhdGl2ZSB0byB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbi4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgIiRyZWYiOiAiU2l6ZSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbmV3IHNpemUgZm9yIHRoZSBicm93c2luZyBjb250
ZXh0J3Mgd2luZG93LiBUaGUgc2l6ZSBpcyBpbnRlcnByZXRlZCBpbiBzY3JlZW4gcGl4ZWxzLiIg
fQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMTM2NTk0YTMyZmE0MDZhM2I3NWUwMGM1ODgzNjg4
ZGU5NDBiN2RjMC4uOTI0NjY4N2RmNzVhZThlNzY3N2FkOTdlOTEwNzY4NTNmNjA4MzExOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTMxNSw2NyArMzE1LDUyIEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmIGVycm9yCiAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OkZvY3VzRnJhbWUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUo
KSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNpemVXaW5kb3dPZkJy
b3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgc2l6ZU9iamVjdCwgUmVmPFJlc2l6
ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25hbE9yaWdpbk9iamVjdCwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25hbFNpemVPYmplY3QsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2Fs
bGJhY2s+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKICNlbHNlCi0gICAgZmxvYXQgd2lkdGg7
Ci0gICAgaWYgKCFzaXplT2JqZWN0LmdldERvdWJsZShXVEY6OkFTQ0lJTGl0ZXJhbCgid2lkdGgi
KSwgd2lkdGgpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlM
UyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd3aWR0aCcgcGFyYW1ldGVyIHdhcyBub3QgZm91bmQg
b3IgaW52YWxpZC4iKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB4OworICAgIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IHk7CisgICAgaWYgKG9wdGlvbmFsT3JpZ2luT2JqZWN0KSB7CisgICAgICAg
IGlmICghKHggPSBvcHRpb25hbE9yaWdpbk9iamVjdC0+Z2V0TnVtYmVyPGZsb2F0PihXVEY6OkFT
Q0lJTGl0ZXJhbCgieCIpKSkpCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd4JyBwYXJhbWV0ZXIgd2FzIG5v
dCBmb3VuZCBvciBpbnZhbGlkLiIpOwogCi0gICAgZmxvYXQgaGVpZ2h0OwotICAgIGlmICghc2l6
ZU9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoImhlaWdodCIpLCBoZWlnaHQpKQot
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFy
YW1ldGVyLCAiVGhlICdoZWlnaHQnIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQu
Iik7CisgICAgICAgIGlmICghKHkgPSBvcHRpb25hbE9yaWdpbk9iamVjdC0+Z2V0TnVtYmVyPGZs
b2F0PihXVEY6OkFTQ0lJTGl0ZXJhbCgieSIpKSkpCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd5JyBwYXJh
bWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlkLiIpOwogCi0gICAgaWYgKHdpZHRoIDwgMCkK
LSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBh
cmFtZXRlciwgIlRoZSAnd2lkdGgnIHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsK
KyAgICAgICAgaWYgKHgudmFsdWUoKSA8IDApCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICd4JyBwYXJhbWV0
ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CiAKLSAgICBpZiAoaGVpZ2h0IDwgMCkKLSAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRl
ciwgIlRoZSAnaGVpZ2h0JyBwYXJhbWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7Ci0KLSAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05v
dEZvdW5kKTsKLQotICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZigqcGFnZSksIHdpZHRoLCBoZWln
aHRdKFdlYkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1lKSBtdXRhYmxlIHsKLSAgICAgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2ViQ29yZTo6RmxvYXRSZWN0KG9yaWdpbmFs
RnJhbWUubG9jYXRpb24oKSwgV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAg
ICAgICAgaWYgKG5ld0ZyYW1lID09IG9yaWdpbmFsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4g
Y2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7Ci0KLSAgICAgICAgcGFnZS0+c2V0V2luZG93RnJhbWUo
bmV3RnJhbWUpOwotICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKLSAgICB9KTsKLSNl
bmRpZgotfQorICAgICAgICBpZiAoeS52YWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgJ3kn
IHBhcmFtZXRlciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKKyAgICB9CiAKLXZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246Om1vdmVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046
Ok9iamVjdCYgcG9zaXRpb25PYmplY3QsIFJlZjxNb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHRD
YWxsYmFjaz4mJiBjYWxsYmFjaykKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1IoTm90SW1wbGVtZW50ZWQpOwotI2Vsc2UKLSAgICBmbG9hdCB4Owot
ICAgIGlmICghcG9zaXRpb25PYmplY3QuZ2V0RG91YmxlKFdURjo6QVNDSUlMaXRlcmFsKCJ4Iiks
IHgpKQotICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhNaXNz
aW5nUGFyYW1ldGVyLCAiVGhlICd4JyBwYXJhbWV0ZXIgd2FzIG5vdCBmb3VuZCBvciBpbnZhbGlk
LiIpOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IGhlaWdodDsKKyAgICBpZiAob3B0aW9uYWxTaXplT2JqZWN0KSB7CisgICAgICAgIGlm
ICghKHdpZHRoID0gb3B0aW9uYWxTaXplT2JqZWN0LT5nZXROdW1iZXI8ZmxvYXQ+KFdURjo6QVND
SUlMaXRlcmFsKCJ3aWR0aCIpKSkpCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUl9BTkRfREVUQUlMUyhNaXNzaW5nUGFyYW1ldGVyLCAiVGhlICd3aWR0aCcgcGFyYW1ldGVy
IHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKIAotICAgIGZsb2F0IHk7Ci0gICAgaWYgKCFw
b3NpdGlvbk9iamVjdC5nZXREb3VibGUoV1RGOjpBU0NJSUxpdGVyYWwoInkiKSwgeSkpCi0gICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0
ZXIsICJUaGUgJ3knIHBhcmFtZXRlciB3YXMgbm90IGZvdW5kIG9yIGludmFsaWQuIik7CisgICAg
ICAgIGlmICghKGhlaWdodCA9IG9wdGlvbmFsU2l6ZU9iamVjdC0+Z2V0TnVtYmVyPGZsb2F0PihX
VEY6OkFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IikpKSkKKyAgICAgICAgICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgJ2hlaWdodCcg
cGFyYW1ldGVyIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZC4iKTsKIAotICAgIGlmICh4IDwgMCkK
LSAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBh
cmFtZXRlciwgIlRoZSAneCcgcGFyYW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOworICAg
ICAgICBpZiAod2lkdGgudmFsdWUoKSA8IDApCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICd3aWR0aCcgcGFy
YW1ldGVyIGhhZCBhbiBpbnZhbGlkIHZhbHVlLiIpOwogCi0gICAgaWYgKHkgPCAwKQotICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVy
LCAiVGhlICd5JyBwYXJhbWV0ZXIgaGFkIGFuIGludmFsaWQgdmFsdWUuIik7CisgICAgICAgIGlm
IChoZWlnaHQudmFsdWUoKSA8IDApCisgICAgICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlICdoZWlnaHQnIHBhcmFtZXRl
ciBoYWQgYW4gaW52YWxpZCB2YWx1ZS4iKTsKKyAgICB9CiAKICAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1lOwotICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1l
V2l0aENhbGxiYWNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJl
ZigqcGFnZSksIHgsIHldKFdlYkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1lKSBtdXRhYmxl
IHsKKyAgICAvLyBGSVhNRSAowqcxMC43LjIgU3RlcCAxMCk6IFdlIG5lZWQgdG8gZXhpdCBmdWxs
c2NyZWVuIGJlZm9yZSBzZXR0aW5nIHRoZSBmcmFtZS4KKyAgICAvLyBGSVhNRSAowqcxMC43LjIg
U3RlcCAxMSk6IFdlIG5lZWQgdG8gZGUtbWluaWF0dXJpemUgdGhlIHdpbmRvdyBiZWZvcmUgc2V0
dGluZyB0aGUgZnJhbWUuCiAKLSAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0g
V2ViQ29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoeCwgeSksIG9yaWdpbmFsRnJh
bWUuc2l6ZSgpKTsKKyAgICBwYWdlLT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB3aWR0aCwgaGVp
Z2h0LCB4LCB5XShXZWJDb3JlOjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZSkgbXV0YWJsZSB7Cisg
ICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFtZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChX
ZWJDb3JlOjpGbG9hdFBvaW50KHgudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLngo
KSksIHkudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLnkoKSkpLCBXZWJDb3JlOjpG
bG9hdFNpemUod2lkdGgudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5zaXplKCkud2lkdGgoKSksIGhl
aWdodC52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLnNpemUoKS5oZWlnaHQoKSkpKTsKICAgICAgICAg
aWYgKG5ld0ZyYW1lID09IG9yaWdpbmFsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJh
Y2stPnNlbmRTdWNjZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAyZGMwYTUyYTBlNjk5
YTMwMjNlOTJmMDJhNGYyYTUyYTMzYWM1YjFiLi40ZjU3OWRiZDZhNmM1YmY0MzhjZDA3OGU3YjQw
ZDFhMDIxNjQwY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xMjIsOCArMTIyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY3JlYXRlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmLCBTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlQnJvd3NpbmdDb250ZXh0KElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1l
SGFuZGxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0
KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNP
Tjo6T2JqZWN0JiBzaXplLCBSZWY8UmVzaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHRDYWxsYmFj
az4mJikgZmluYWw7Ci0gICAgdm9pZCBtb3ZlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmpl
Y3QmIHBvc2l0aW9uLCBSZWY8TW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYp
IGZpbmFsOworICAgIHZvaWQgc2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVj
dCogb3JpZ2luLCBjb25zdCBKU09OOjpPYmplY3QqIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9m
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIGZpbmFsOwogICAgIHZvaWQgbmF2aWdhdGVCcm93
c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRl
Z3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0
ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdvQmFja0lu
QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBv
cHRpb25hbFBhZ2VMb2FkVGltZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2FsbGJh
Y2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxQYWdlTG9hZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1l
b3V0LCBSZWY8R29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>