<?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>179129</bug_id>
          
          <creation_ts>2017-11-01 11:02:23 -0700</creation_ts>
          <short_desc>Web Automation: inViewCenterPoint should not include topContentInset when computed in viewport coordinates</short_desc>
          <delta_ts>2017-11-30 12:19:44 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=180213</see_also>
          <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>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366921</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-01 11:02:23 -0700</bug_when>
    <thetext>This blocks adoption of inViewCenterPoint algorithm by safaridriver. Adopting it is a regression without fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366930</commentid>
    <comment_count>1</comment_count>
      <attachid>325595</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-01 11:15:43 -0700</bug_when>
    <thetext>Created attachment 325595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366931</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-01 11:16:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/35297038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366968</commentid>
    <comment_count>3</comment_count>
      <attachid>325595</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-01 12:04:34 -0700</bug_when>
    <thetext>Comment on attachment 325595
Patch

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

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:578
&gt;      if (containerElement) {

The code above uses coreElement-&gt;clientRect(). Note the comment above it:

// Note that this is not web-exposed, and does not use the same coordinate system as getBoundingClientRect() and friends.
IntRect Element::clientRect() const

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:580
&gt;              inViewCenter = WebCore::IntPoint(coreFrameView-&gt;clientToDocumentPoint(clientCenterPoint.value()));

So i think clientToDocumentPoint is the wrong way to convert this point.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:583
&gt; +                inViewCenter.value().moveBy(WebCore::IntPoint(0, -coreFrameView-&gt;topContentInset()));

I never want to see this kind of manual coordinate conversion. We should always go through FrameView helpers like &quot;convert foo to bar&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367136</commentid>
    <comment_count>4</comment_count>
      <attachid>325595</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-01 17:31:11 -0700</bug_when>
    <thetext>Comment on attachment 325595
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:578
&gt;&gt;      if (containerElement) {
&gt; 
&gt; The code above uses coreElement-&gt;clientRect(). Note the comment above it:
&gt; 
&gt; // Note that this is not web-exposed, and does not use the same coordinate system as getBoundingClientRect() and friends.
&gt; IntRect Element::clientRect() const

Okay, this should be easy to convert to snappedIntRect(boundingClientRect())...

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:580
&gt;&gt;              inViewCenter = WebCore::IntPoint(coreFrameView-&gt;clientToDocumentPoint(clientCenterPoint.value()));
&gt; 
&gt; So i think clientToDocumentPoint is the wrong way to convert this point.

...and then clientToDocumentPoint will make sense.

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:583
&gt;&gt; +                inViewCenter.value().moveBy(WebCore::IntPoint(0, -coreFrameView-&gt;topContentInset()));
&gt; 
&gt; I never want to see this kind of manual coordinate conversion. We should always go through FrameView helpers like &quot;convert foo to bar&quot;.

Let me preface by saying I&apos;m super ignorant of layout code. So please humor me, I want to understand better :)

I&apos;m not aware of any existing conversions that go from content rects to what are essentially client rects. The most sensible name I could think up is contentsToClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367138</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-01 17:33:56 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #4)
&gt; Comment on attachment 325595 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=325595&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:578
&gt; &gt;&gt;      if (containerElement) {
&gt; &gt; 
&gt; &gt; The code above uses coreElement-&gt;clientRect(). Note the comment above it:
&gt; &gt; 
&gt; &gt; // Note that this is not web-exposed, and does not use the same coordinate system as getBoundingClientRect() and friends.
&gt; &gt; IntRect Element::clientRect() const
&gt; 
&gt; Okay, this should be easy to convert to
&gt; snappedIntRect(boundingClientRect())...
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:580
&gt; &gt;&gt;              inViewCenter = WebCore::IntPoint(coreFrameView-&gt;clientToDocumentPoint(clientCenterPoint.value()));
&gt; &gt; 
&gt; &gt; So i think clientToDocumentPoint is the wrong way to convert this point.
&gt; 
&gt; ...and then clientToDocumentPoint will make sense.
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:583
&gt; &gt;&gt; +                inViewCenter.value().moveBy(WebCore::IntPoint(0, -coreFrameView-&gt;topContentInset()));
&gt; &gt; 
&gt; &gt; I never want to see this kind of manual coordinate conversion. We should always go through FrameView helpers like &quot;convert foo to bar&quot;.
&gt; 
&gt; Let me preface by saying I&apos;m super ignorant of layout code. So please humor
&gt; me, I want to understand better :)
&gt; 
&gt; I&apos;m not aware of any existing conversions that go from content rects to what
&gt; are essentially client rects. The most sensible name I could think up is
&gt; contentsToClient

Sorry, comment got clipped off. I looked at this again (and again and again). My notes from today:

For the clientRect (viewport case), I think we can just use the client rect as-is to send back to WebDriver land. In the non-viewport case, I just need to go from client to document/contents rect, I think?

For the inViewCenterPoint (viewport case), we already return a client point so I don&apos;t think anything needs to be done, which is why the code is wrong right now. For the non-viewport case, we need to convert to document/contents rect as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367141</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-01 17:54:17 -0700</bug_when>
    <thetext>My general thoughts:

This code has an &quot;useViewportCoordinates&quot; branch, and the question there is what that means. Ideally it would explicitly refer to the visual or layout viewports (probably the second). For that you&apos;d use something like FrameView::documentToClientPoint() because &quot;client&quot; coordinates are nominally layout viewport coordinates. Do this after you&apos;ve converted the point to the root document/view.

If not viewport coordinates, what are they?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367142</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-01 17:55:53 -0700</bug_when>
    <thetext>Also, generally contentsToView() is the thing that deals with topContentInset (via documentScrollPositionRelativeToViewOrigin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367490</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-02 12:59:39 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; My general thoughts:
&gt; 
&gt; This code has an &quot;useViewportCoordinates&quot; branch, and the question there is
&gt; what that means. Ideally it would explicitly refer to the visual or layout
&gt; viewports (probably the second). For that you&apos;d use something like
&gt; FrameView::documentToClientPoint() because &quot;client&quot; coordinates are
&gt; nominally layout viewport coordinates. Do this after you&apos;ve converted the
&gt; point to the root document/view.
&gt; 
&gt; If not viewport coordinates, what are they?

Someday, if we support WebDriver for iOS, then this will need to support returning visual viewport coordinates so that simulated OS events hit on the right thing.

My plan is to proceed to make useViewportCoordinates mean &quot;layout viewport&quot; for now, since that&apos;s the only thing I can reasonably test on Mac. When the time comes, and it&apos;s reasonable to test in a context where visual viewports are used, I can add a new VisualViewport mode for the command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369323</commentid>
    <comment_count>9</comment_count>
      <attachid>326297</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-07 20:39:12 -0800</bug_when>
    <thetext>Created attachment 326297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370449</commentid>
    <comment_count>10</comment_count>
      <attachid>326297</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-10 12:32:04 -0800</bug_when>
    <thetext>Comment on attachment 326297
Patch

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

Is this covered by WPT?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.messages.in:33
&gt; +    ComputeElementLayout(uint64_t pageID, uint64_t frameID, String nodeHandle, bool scrollIntoViewIfNeeded, uint32_t coordinateSystem, uint64_t callbackID)

Can&apos;t we use enums?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370472</commentid>
    <comment_count>11</comment_count>
      <attachid>326297</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-10 13:47:42 -0800</bug_when>
    <thetext>Comment on attachment 326297
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.messages.in:33
&gt;&gt; +    ComputeElementLayout(uint64_t pageID, uint64_t frameID, String nodeHandle, bool scrollIntoViewIfNeeded, uint32_t coordinateSystem, uint64_t callbackID)
&gt; 
&gt; Can&apos;t we use enums?

I had assumed not, but if it works then I&apos;ll switch it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370473</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-10 13:51:18 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #10)
&gt; Comment on attachment 326297 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=326297&amp;action=review
&gt; 
&gt; Is this covered by WPT?

Not right now. It progresses about 20 Selenium tests for safaridriver.

If we shim WPT browser-internal methods to reuse this code, then it would be tested that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370968</commentid>
    <comment_count>13</comment_count>
      <attachid>326774</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-13 11:29:01 -0800</bug_when>
    <thetext>Created attachment 326774
Patch

Re-EWS after using enum instead of int32_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371113</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-13 15:21:37 -0800</bug_when>
    <thetext>Committed r224789: &lt;https://trac.webkit.org/changeset/224789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325595</attachid>
            <date>2017-11-01 11:15:43 -0700</date>
            <delta_ts>2017-11-07 20:39:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179129-20171101111543.patch</filename>
            <type>text/plain</type>
            <size>2204</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxMzkyYmU0YjRjNDA3ZDFj
ODg2YmE0NjYyNzgzN2ZkODg0MjQzYjMuLjE4NzU2MGM1OGYwMmRkYjdkYzkwNDIzYmZkMzZiMGEy
MWI4MmI4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTEtMDEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGluVmlld0Nl
bnRlclBvaW50IHNob3VsZCBub3QgaW5jbHVkZSB0b3BDb250ZW50SW5zZXQgd2hlbiBjb21wdXRl
ZCBpbiB2aWV3cG9ydCBjb29yZGluYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiBjb21wdXRpbmcgdGhlIGluIHZpZXcgY2VudGVyIHBvaW50
IHBlciBXM0Mgc3BlY2lmaWNhdGlvbiwgdGhlIHRvcCBjb250ZW50IGluc2V0CisgICAgICAgIGlz
IGluYWR2ZXJ0ZW50bHkgYWRkZWQgYmFjayBpbiB3aGVuIGNvbnZlcnRpbmcgdG8gdGhlIHJvb3Qg
dmlldyBjb29yZGluYXRlIHN5c3RlbS4KKyAgICAgICAgUmVtb3ZlIHRoaXMgc2luY2Ugdmlld3Bv
cnQgY29vcmRpbmF0ZXMgcmVwb3J0ZWQgdG8gV2ViRHJpdmVyIHNob3VsZG4ndCB0YWtlIHRoYXQg
aW50byBhY2NvdW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCk6CisgICAgICAgIFRoZSBpblZpZXdDZW50
ZXJQb2ludCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIHRvcCBjb250ZW50IGluc2V0LgorCiAyMDE3
LTEwLTI3ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29ycmVjdGx5IGRldGVybWluZSBhZmZpbml0eSB3aGVuIGluc2VydGluZyB0ZXh0IHZpYSBL
ZXlib2FyZCBTdWdnZXN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRl
eCA5ZGQ0ZDUyYmQ5NGQ0ZGY2NzM5NGRlOTY3NDlhNjg1MDUyMTBhZDNlLi4yMjIzOGM1NWIwM2Rl
N2E5ZTc4ZjkwZjJmZDMwNGZjZjczNjJmMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcApAQCAtNTc4LDggKzU3OCwxMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogICAg
IGlmIChjb250YWluZXJFbGVtZW50KSB7CiAgICAgICAgIGlmIChhdXRvIGNsaWVudENlbnRlclBv
aW50ID0gZWxlbWVudEluVmlld0NsaWVudENlbnRlclBvaW50KCpjb250YWluZXJFbGVtZW50LCBp
c09ic2N1cmVkKSkgewogICAgICAgICAgICAgaW5WaWV3Q2VudGVyID0gV2ViQ29yZTo6SW50UG9p
bnQoY29yZUZyYW1lVmlldy0+Y2xpZW50VG9Eb2N1bWVudFBvaW50KGNsaWVudENlbnRlclBvaW50
LnZhbHVlKCkpKTsKLSAgICAgICAgICAgIGlmICh1c2VWaWV3cG9ydENvb3JkaW5hdGVzKQorICAg
ICAgICAgICAgaWYgKHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpIHsKICAgICAgICAgICAgICAgICBp
blZpZXdDZW50ZXIgPSBjb3JlRnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcoaW5WaWV3Q2Vu
dGVyLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGluVmlld0NlbnRlci52YWx1ZSgpLm1vdmVC
eShXZWJDb3JlOjpJbnRQb2ludCgwLCAtY29yZUZyYW1lVmlldy0+dG9wQ29udGVudEluc2V0KCkp
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326297</attachid>
            <date>2017-11-07 20:39:12 -0800</date>
            <delta_ts>2017-11-13 11:28:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179129-20171107203911.patch</filename>
            <type>text/plain</type>
            <size>26854</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRhMzlhN2VkMjM1NDVk
ZDM0YmMyZjNlNThlMzRhNTY0YWUzZmVkMi4uMTkyNmM1MDE2OTY0MjkzMjYzOTg4M2I5ZDIyMDZl
NTM1NjMyOTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTExLTA3ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpblZp
ZXdDZW50ZXJQb2ludCBzaG91bGQgbm90IGluY2x1ZGUgdG9wQ29udGVudEluc2V0IHdoZW4gY29t
cHV0ZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUy
OTcwMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG9yIGV4cG9ydCBzb21lIGhlbHBlcnMgbmVlZGVkIHRvIGNvbXB1dGUgZWxlbWVudCBsYXlv
dXQgZm9yIFdlYkRyaXZlci4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IEV4cG9ydCB0aGUg
bm9uLURPTSB2ZXJzaW9uIG9mIGdldENsaWVudEJvdW5kcygpLgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpjbGllbnRUb0RvY3VtZW50UmVjdCBjb25zdCk6CisgICAgICAgIEFkZGVk
LiBUaGlzIGRvZXMgdGhlIHNhbWUgdGhpbmcgYXMgY2xpZW50VG9Eb2N1bWVudFBvaW50LiBFeHBv
cnQgaXQsIHRvby4KKwogMjAxNy0xMS0wNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgVGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBibG9jayBlbGVtZW50IGNv
bnRpbnVhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAwZDBhYjgxNmRmMmMzMzJhZTU5NTlmNzhkZGFl
YmMyMDZjOTY3Y2M5Li43NTQxMmI0M2RiYmUwNTc0OGVjZDBiYWYyZWM1ZWExMzM0ZjIxZGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTExLTA3ICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpblZpZXdDZW50ZXJQ
b2ludCBzaG91bGQgbm90IGluY2x1ZGUgdG9wQ29udGVudEluc2V0IHdoZW4gY29tcHV0ZWQgaW4g
dmlld3BvcnQgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3OTEyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyOTcwMzg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IGNv
ZGUgdG8gdXNlIHRoZSBwcm9wZXIgY29vcmRpbmF0ZSBzeXN0ZW0gd2hlbiByZXF1ZXN0aW5nIGVs
ZW1lbnQgbGF5b3V0LgorCisgICAgICAgICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2
ZXI6OlNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KToKKwogMjAxNy0xMC0yNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVy
OiB1bmtub3duIGNhcGFiaWxpdGllcyBzaG91bGQgcHJvZHVjZSBhbiBJbnZhbGlkQXJndW1lbnQg
ZXJyb3Igd2hlbiB2YWxpZGF0aW5nIGNhcGFiaWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZDQxMGYyMjg1
MzBjMjk2MjBjYzViMzc5Zjg2ODE4ZjY1OGVhNDk4Li5hNzgxODMzMjEyZmMzMzBhZDk1YjViYzcw
MzAyOGVkNGNkOTcyODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTExLTA3ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBp
blZpZXdDZW50ZXJQb2ludCBzaG91bGQgbm90IGluY2x1ZGUgdG9wQ29udGVudEluc2V0IHdoZW4g
Y29tcHV0ZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzUyOTcwMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBjb21wdXRpbmcgdGhlIGluIHZpZXcgY2VudGVyIHBvaW50IHBlciBXM0Mgc3BlY2lm
aWNhdGlvbiwgdGhlIHRvcCBjb250ZW50IGluc2V0CisgICAgICAgIGlzIGluYWR2ZXJ0ZW50bHkg
YWRkZWQgYmFjayBpbiB3aGVuIGNvbnZlcnRpbmcgdG8gdGhlIHJvb3QgdmlldyBjb29yZGluYXRl
IHN5c3RlbS4KKworICAgICAgICBUaGlzIHBhdGNoIHJld29ya3MgdGhlIHByb3RvY29sIGNvbW1h
bmQgc28gdGhhdCBpdCBleHBsaWNpdGx5IHJlcXVlc3RzIGEgY29vcmRpbmF0ZQorICAgICAgICBz
eXN0ZW0sIHdpdGggb3B0aW9ucyBmb3IgIlBhZ2UiIChyb290IC8gY29udGVudHMpLCAiTGF5b3V0
Vmlld3BvcnQiLCBhbmQgIlZpc3VhbFZpZXdwb3J0Ii4KKyAgICAgICAgVGhlIGxhdHRlciBpcyBu
b3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBwYXRjaCwgc2luY2UgaXQgaXMgaW50ZW5kZWQgZm9yIHVz
ZSBvbiBpT1Mgc29tZWRheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9t
YXRpb24uanNvbjoKKyAgICAgICAgQ2hhbmdlIHVzZXNWaWV3cG9ydCB0byBDb29yZGluYXRlU3lz
dGVtLgorICAgICAgICBBZGQgYSBuZXcgY29vcmRpbmF0ZSBzeXN0ZW0gZW51bSB0eXBlIGFuZCB1
c2UgaXQuCisgICAgICAgIEZpeCByZWxldmFudCBjb21tZW50cyBmb3IgQXV0b21hdGlvbi5jb21w
dXRFbGVtZW50TGF5b3V0LgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnByb3RvY29sU3RyaW5nVG9Db29y
ZGluYXRlU3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNv
bXB1dGVFbGVtZW50TGF5b3V0KToKKyAgICAgICAgUGFyc2UgdGhlIHJlcXVlc3RlZCBjb29yZGlu
YXRlIHN5c3RlbSBhbmQgc2VuZCBpdCBpbiB0aGUgbWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAgICAgICBSZXdvcmsgdGhlIGltcGxlbWVu
dGF0aW9uLiBHZXQgdGhlIGVsZW1lbnQgYm91bmRzIGFuZCBpbi12aWV3IGNlbnRlciBwb2ludCBp
bgorICAgICAgICBjbGllbnQgY29vcmRpbmF0ZXMgYW5kIGNvbnZlcnQgYmFjayB0byByb290IHZp
ZXcgY29vcmRpbmF0ZXMgZm9yIENvb3JkaW5hdGVTeXN0ZW06OlBhZ2UuCisKIDIwMTctMTEtMDcg
IEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkb3duY2Fz
dCBzdXBwb3J0IGZvciBGdWxsc2NyZWVuQ2xpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNTNh
NTFjYzY0M2M3N2JlMDFjYTJhNmE4MTI2MzU1MmMyNjg3NjM3Yi4uYjZiMjg3MzJkYmViOGE5ZDU2
MGE3NDgwMGFjYWQxYWQ4OGY3NzliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xNzEsNyArMTcx
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBib3VuZHNJblJvb3RW
aWV3U3BhY2UoKTsKIAotICAgIEZsb2F0UmVjdCBib3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgYm91bmRpbmdDbGllbnRSZWN0KCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8RE9NUmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCk7CiAgICAgUmVmPERP
TVJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDYxZWY1OWFmM2MyOGNkOTkzYTRhNGQ1YjMwMzBmNjAzMmM2Nzk1ODcuLjQ2YTIxMDI0
Y2YzNzhmNTU2MThhNGQ4NWZhZDAwMjU1MGI5OTZmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTQ0NzMsNiArNDQ3MywxMiBAQCBGbG9hdFBvaW50IEZyYW1lVmlldzo6ZG9jdW1l
bnRUb0NsaWVudFBvaW50KEZsb2F0UG9pbnQgcCkgY29uc3QKICAgICByZXR1cm4gcDsKIH0KIAor
RmxvYXRSZWN0IEZyYW1lVmlldzo6Y2xpZW50VG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0IHJlY3Qp
IGNvbnN0Cit7CisgICAgcmVjdC5tb3ZlKC1kb2N1bWVudFRvQ2xpZW50T2Zmc2V0KCkpOworICAg
IHJldHVybiByZWN0OworfQorCiBGbG9hdFBvaW50IEZyYW1lVmlldzo6Y2xpZW50VG9Eb2N1bWVu
dFBvaW50KEZsb2F0UG9pbnQgcG9pbnQpIGNvbnN0CiB7CiAgICAgcG9pbnQubW92ZSgtZG9jdW1l
bnRUb0NsaWVudE9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGVlYWVmMmE3
OWNmOWQ2ODIwMzI4YzAwYjAxOTQyZDgwOGNkZTg2NDguLjNmOWUyZjRmNzA0OGZmZTk5MjBlMDAz
ZjczMmZhOWI2ZTQwNjJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDY2LDYgKzQ2
Niw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgZG9jdW1lbnRUb0NsaWVudE9mZnNldCgpIGNv
bnN0OwogICAgIEZsb2F0UmVjdCBkb2N1bWVudFRvQ2xpZW50UmVjdChGbG9hdFJlY3QpIGNvbnN0
OwogICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRUb0NsaWVudFBvaW50KEZsb2F0UG9pbnQpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBjbGllbnRUb0RvY3VtZW50UmVjdChGbG9h
dFJlY3QpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UG9pbnQgY2xpZW50VG9Eb2N1
bWVudFBvaW50KEZsb2F0UG9pbnQpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IGxheW91dFZpZXdw
b3J0VG9BYnNvbHV0ZVJlY3QoRmxvYXRSZWN0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4
IDQ0YzdlOTNhZmJjMjBmNzkwZmY1Y2E3MzJlMDk0M2RkNWU1N2MwNGIuLjQ0MTNmN2YwZjFkMDVk
YjAwYmRiN2NlZDM3YTVmYzBmZjdmYTFkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtODI1LDcg
KzgyNSw3IEBAIHZvaWQgU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5n
JiBlbGVtZW50SUQsIE9wdGlvblNldDxFbGVtZW50TGF5CiAgICAgcGFyYW1ldGVycy0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiZnJhbWVIYW5kbGUiKSwgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0
LnZhbHVlKCkpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vZGVI
YW5kbGUiKSwgZWxlbWVudElEKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKEFTQ0lJTGl0
ZXJhbCgic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIpLCBvcHRpb25zLmNvbnRhaW5zKEVsZW1lbnRM
YXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQpKTsKLSAgICBwYXJhbWV0ZXJzLT5z
ZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgidXNlVmlld3BvcnRDb29yZGluYXRlcyIpLCBvcHRpb25z
LmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpKTsK
KyAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJjb29yZGluYXRlU3lzdGVt
IiksIG9wdGlvbnMuY29udGFpbnMoRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29y
ZGluYXRlcykgPyBBU0NJSUxpdGVyYWwoIkxheW91dFZpZXdwb3J0IikgOiBBU0NJSUxpdGVyYWwo
IlBhZ2UiKSk7CiAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZChBU0NJSUxpdGVyYWwo
ImNvbXB1dGVFbGVtZW50TGF5b3V0IiksIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25z
ZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlU3lzdGVtLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFi
ZGVjMzdiZWU2N2E1NjkxN2E3MTdhN2FiNTE0NzgwZmQwNWJjOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVTeXN0ZW0uaApAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgQ29vcmRpbmF0ZVN5c3Rl
bSA6IHVpbnQzMl90IHsKKyAgICBQYWdlID0gMCwKKyAgICBMYXlvdXRWaWV3cG9ydCwKKyAgICBW
aXN1YWxWaWV3cG9ydCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgppbmRleCA1YzUy
ZjIyZDBmNDJmZTA4YzVhYzBhY2IwMzdiY2EyZWYwNzIwNWZmLi42M2IwYzY5OTQ5NmM3NjY2YTY1
NjFiZWE5MzYxZDZkYjI3ZDFjYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgpAQCAtMjYsNiArMjYsMTYgQEAKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNpemUiLCAiJHJlZiI6ICJTaXplIiB9CiAgICAgICAgICAgICBd
CiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJDb29yZGluYXRlU3lz
dGVtIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiVGhlIGNvb3JkaW5hdGUgc3lzdGVtIGluIHdoaWNoIHJlY3RzLCBwb2ludHMsIGFu
ZCBzaXplcyBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQuIiwKKyAgICAgICAgICAgICJlbnVtIjogWwor
ICAgICAgICAgICAgICAgICJQYWdlIiwKKyAgICAgICAgICAgICAgICAiTGF5b3V0Vmlld3BvcnQi
LAorICAgICAgICAgICAgICAgICJWaXN1YWxWaWV3cG9ydCIKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIkJyb3dzaW5nQ29udGV4dEhhbmRs
ZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLApAQCAtNDQ2LDExICs0NTYsMTEgQEAK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSGFuZGxlIiwgIiRyZWYiOiAiRnJhbWVI
YW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGZyYW1lIHRoYXQgY29u
dGFpbnMgdGhlIGVsZW1lbnQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUhh
bmRsZSIsICIkcmVmIjogIk5vZGVIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBv
ZiB0aGUgZWxlbWVudCB0byB1c2UuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2Ny
b2xsSW50b1ZpZXdJZk5lZWRlZCIsICJvcHRpb25hbCI6IHRydWUsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiSWYgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHNjcm9sbGVkIGludG8g
dmlldyBiZWZvcmUgY29tcHV0aW5nIGl0cyBsYXlvdXQuIiB9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXNlVmlld3BvcnRDb29yZGluYXRlcyIsICJvcHRpb25hbCI6IHRydWUsICJ0eXBl
IjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdGhlIHJlc3VsdCBjb29yZGluYXRlcyBz
aG91bGQgYmUgcmVwcmVzZW50ZWQgYXMgdmlld3BvcnQgY29vcmRpbmF0ZXMgb3Igbm90LiBEZWZh
dWx0cyB0byBmYWxzZSwgd2hpY2ggbWVhbnMgY29vcmRpbmF0ZXMgc2hvdWxkIGJlIHJlcHJlc2Vu
dGVkIGFzIHBhZ2UgY29vcmRpbmF0ZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
b29yZGluYXRlU3lzdGVtIiwgIiRyZWYiOiAiQ29vcmRpbmF0ZVN5c3RlbSIsICJkZXNjcmlwdGlv
biI6ICJUaGUgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gdXNlIGZvciByZWN0IGFuZCBwb2ludCByZXN1
bHRzLiIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicmVjdCIsICIkcmVmIjogIlJlY3QiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGxheW91dCByZWN0IGZvciB0aGUgcmVxdWVzdGVkIGVsZW1lbnQuIFNwZWNpZmllZCBp
biBwYWdlIG9yIHZpZXdwb3J0IGNvb3JkaW5hdGVzIGJhc2VkIG9uIHRoZSB1c2VWaWV3cG9ydENv
b3JkaW5hdGVzIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpblZp
ZXdDZW50ZXJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICIkcmVmIjogIlBvaW50IiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBpbi12aWV3IGNlbnRlciBwb2ludCBmb3IgdGhlIHJlcXVlc3RlZCBlbGVt
ZW50LiBTcGVjaWZpZWQgaW4gcGFnZSBvciB2aWV3cG9ydCBjb29yZGluYXRlcyBiYXNlZCBvbiB0
aGUgdXNlVmlld3BvcnRDb29yZGluYXRlcyBwYXJhbWV0ZXIuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVjdCIsICIkcmVmIjogIlJlY3QiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGxh
eW91dCByZWN0IGZvciB0aGUgcmVxdWVzdGVkIGVsZW1lbnQuIFZhbHVlcyBhcmUgY29udmVydGVk
IHRvIHRoZSByZXF1ZXN0ZWQgY29vcmRpbmF0ZSBzeXN0ZW0uIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaW5WaWV3Q2VudGVyUG9pbnQiLCAib3B0aW9uYWwiOiB0cnVlLCAiJHJlZiI6
ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgZm9yIHRo
ZSByZXF1ZXN0ZWQgZWxlbWVudC4gVmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIHJlcXVlc3Rl
ZCBjb29yZGluYXRlIHN5c3RlbS4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc09i
c2N1cmVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0aGUgaW4tdmll
dyBjZW50ZXIgcG9pbnQgb2YgdGhlIHJlcXVlc3RlZCBlbGVtZW50IGlzIG9ic2N1cmVkIGJ5IGFu
b3RoZXIgZWxlbWVudC4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiYXN5bmMiOiB0
cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGE1ZTg1OGMzMDM3MDExNWQyOWUxMWM0OGZk
NTBiYTI3YjhlYWVhNzcuLjE2YWQwMGQzZWU1NTJmNTAzOTgxODdmNTgwZGIzOTcwN2NjOTI3ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJ
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKICNpbmNsdWRlICJBUElPcGVuUGFuZWxQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIgorI2luY2x1ZGUg
IkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jv
cy5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKQEAgLTg3Myw3ICs4NzQsMTgg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2
NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGYKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KGhhbmRsZUZvcldlYkZyYW1lSUQoZnJhbWVJRCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0
aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb25zdCBib29sKiBvcHRpb25hbFVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMsIFJlZjxDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmIGNhbGxi
YWNrKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3RlbT4gcHJvdG9jb2xTdHJp
bmdUb0Nvb3JkaW5hdGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtU3RyaW5n
KQoreworICAgIGlmIChjb29yZGluYXRlU3lzdGVtU3RyaW5nID09ICJQYWdlIikKKyAgICAgICAg
cmV0dXJuIENvb3JkaW5hdGVTeXN0ZW06OlBhZ2U7CisgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW1T
dHJpbmcgPT0gIkxheW91dFZpZXdwb3J0IikKKyAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVTeXN0
ZW06OkxheW91dFZpZXdwb3J0OworICAgIGlmIChjb29yZGluYXRlU3lzdGVtU3RyaW5nID09ICJW
aXN1YWxWaWV3cG9ydCIpCisgICAgICAgIHJldHVybiBDb29yZGluYXRlU3lzdGVtOjpWaXN1YWxW
aWV3cG9ydDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0
cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVT
eXN0ZW1TdHJpbmcsIFJlZjxDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmIGNhbGxiYWNr
KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93
c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkKQEAgLTg4MywxMyArODk1LDE1IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyCiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAgICBGQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAorICAgIHN0ZDo6b3B0aW9u
YWw8Q29vcmRpbmF0ZVN5c3RlbT4gY29vcmRpbmF0ZVN5c3RlbSA9IHByb3RvY29sU3RyaW5nVG9D
b29yZGluYXRlU3lzdGVtKGNvb3JkaW5hdGVTeXN0ZW1TdHJpbmcpOworICAgIGlmICghY29vcmRp
bmF0ZVN5c3RlbSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2Nvb3JkaW5hdGVTeXN0ZW0nIGlz
IGludmFsaWQuIik7CisKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0Q29tcHV0ZUVs
ZW1lbnRMYXlvdXRDYWxsYmFja0lEKys7CiAgICAgbV9jb21wdXRlRWxlbWVudExheW91dENhbGxi
YWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgYm9vbCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkID0gb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkID8gKm9w
dGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA6IGZhbHNlOwotICAgIGJvb2wgdXNlVmlld3Bv
cnRDb29yZGluYXRlcyA9IG9wdGlvbmFsVXNlVmlld3BvcnRDb29yZGluYXRlcyA/ICpvcHRpb25h
bFVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMgOiBmYWxzZTsKLQotICAgIHBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExh
eW91dChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRC52YWx1ZSgpLCBub2RlSGFuZGxlLCBzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCBjYWxsYmFja0lEKSwgMCk7
CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OkNvbXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVl
KCksIG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIHN0YXRpY19jYXN0PHVpbnQz
Ml90Pihjb29yZGluYXRlU3lzdGVtLnZhbHVlKCkpLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCwgY29uc3QgU3Ry
aW5nJiBlcnJvclR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggM2I2MDEyYzM3NThlNjgyMmM4
YWJjYTc1N2FlYzg5NGViNjg2OTM0Mi4uZjA0ZWE4MjNjNjgyNDdjZmI3NjU3ZDU0MjlhM2I4Yjll
MWYzODg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRha2VTY3JlZW5zaG90KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxGcmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29s
dmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2
ZVBhcmVudEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgUmVmPFJl
c29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBub2RlSGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZO
ZWVkZWQsIGNvbnN0IGJvb2wqIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIFJlZjxJbnNwZWN0b3I6
OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNvbXB1dGVFbGVtZW50TGF5b3V0
Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxl
LCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgU3RyaW5nJiBj
b29yZGluYXRlU3lzdGVtLCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxl
LCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlNlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgYm9vbCogcmVz
dWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZyhJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5k
bGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMTNjZmI3ZmEzZmEyYjVjNzAyZDA5MDA3OTM0YjhlNWY2MTRiNTNmYi4u
MWU5MGY1MzRjYTU3MWJmZTEyM2I2ZjcwYjk4NDMyNzliMzUxODY1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODk3LDYgKzM4OTcs
NyBAQAogCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4
MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlGNjQyRDIxRkFCRTM3ODAwOTYyMUU5IC8qIENv
b3JkaW5hdGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRp
bmF0ZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2QzFFRkND
Q0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZE
MUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDU2LDYgKzUwNTcsNyBAQAog
CQkJCTFBMkQ5NTZEMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKIAkJCQk1
MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyogQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluICovLAog
CQkJCTI5MEY0MjcxMTcyQTBDNzQwMDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50Lmgg
Ki8sCisJCQkJOTlGNjQyRDIxRkFCRTM3ODAwOTYyMUU5IC8qIENvb3JkaW5hdGVTeXN0ZW0uaCAq
LywKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29u
dGV4dERhdGEuaCAqLywKIAkJCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRy
b2xsZXJBY3Rpb24uaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXgg
OWRkNGQ1MmJkOTRkNGRmNjczOTRkZTk2NzQ5YTY4NTA1MjEwYWQzZS4uY2RmZDVkNGJlNWIyNTI3
YmY3MTNmY2U3ZmE5OWZiNGFiNjcwZjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmgiCiAKICNpbmNsdWRlICJBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmgiCisjaW5jbHVk
ZSAiQ29vcmRpbmF0ZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmgiCkBAIC01
MzMsNyArNTM0LDcgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRG
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuICZlbGVtZW50
OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5
b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUs
IGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCB1c2VWaWV3cG9ydENvb3JkaW5hdGVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpj
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIHVpbnQzMl90IGVu
Y29kZWRDb29yZGluYXRlU3lzdGVtLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBh
Z2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAg
aWYgKCFwYWdlKSB7CkBAIC01NDQsNiArNTQ1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYK
IAogICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CiAgICAgU3Ry
aW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7CisgICAgU3RyaW5nIG5vdEltcGxl
bWVudGVkRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVy
cm9yTWVzc2FnZTo6Tm90SW1wbGVtZW50ZWQpOwogCiAgICAgV2ViRnJhbWUqIGZyYW1lID0gZnJh
bWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpIDogcGFnZS0+
bWFpbldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8
ICFmcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkgewpAQCAtNTY1LDI1ICs1NjcsNDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICAgICAgLy8gRklYTUU6IFdhaXQgaW4gYW4gaW1wbGVt
ZW50YXRpb24tc3BlY2lmaWMgd2F5IHVwIHRvIHRoZSBzZXNzaW9uIGltcGxpY2l0IHdhaXQgdGlt
ZW91dCBmb3IgdGhlIGVsZW1lbnQgdG8gYmVjb21lIGluIHZpZXcuCiAgICAgfQogCi0gICAgV2Vi
Q29yZTo6SW50UmVjdCByZWN0ID0gY29yZUVsZW1lbnQtPmNsaWVudFJlY3QoKTsKKyAgICBDb29y
ZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0gPSBzdGF0aWNfY2FzdDxDb29yZGluYXRlU3lz
dGVtPihlbmNvZGVkQ29vcmRpbmF0ZVN5c3RlbSk7CisgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0g
PT0gQ29vcmRpbmF0ZVN5c3RlbTo6VmlzdWFsVmlld3BvcnQpIHsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQs
IHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbm90SW1wbGVtZW50ZWRFcnJvclR5cGUpLCAwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGF1dG8qIGNvcmVGcmFtZVZpZXcgPSBmcmFt
ZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKLSAgICBpZiAodXNlVmlld3BvcnRDb29yZGluYXRlcykK
LSAgICAgICAgcmVjdC5tb3ZlQnkoV2ViQ29yZTo6SW50UG9pbnQoMCwgLWNvcmVGcmFtZVZpZXct
PnRvcENvbnRlbnRJbnNldCgpKSk7Ci0gICAgZWxzZQotICAgICAgICByZWN0ID0gY29yZUZyYW1l
Vmlldy0+cm9vdFZpZXdUb0NvbnRlbnRzKHJlY3QpOworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBl
bGVtZW50Qm91bmRzID0gY29yZUVsZW1lbnQtPmJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCisgICAg
YXV0byogY29yZUZyYW1lVmlldyA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIHN3
aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkgeworICAgIGNhc2UgQ29vcmRpbmF0ZVN5c3RlbTo6UGFn
ZToKKyAgICAgICAgZWxlbWVudEJvdW5kcyA9IGNvcmVGcmFtZVZpZXctPmNsaWVudFRvRG9jdW1l
bnRSZWN0KGVsZW1lbnRCb3VuZHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvb3JkaW5h
dGVTeXN0ZW06OkxheW91dFZpZXdwb3J0OgorICAgICAgICAvLyBUaGUgZWxlbWVudCBib3VuZHMg
YXJlIGFscmVhZHkgaW4gY2xpZW50IGNvb3JkaW5hdGVzLgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIENvb3JkaW5hdGVTeXN0ZW06OlZpc3VhbFZpZXdwb3J0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFBvaW50PiBpblZpZXdDZW50ZXJQb2ludDsKICAgICBib29sIGlzT2JzY3Vy
ZWQgPSBmYWxzZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdD
ZW50ZXI7CiAgICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHsKLSAgICAgICAgaWYgKGF1dG8gY2xp
ZW50Q2VudGVyUG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvbnRhaW5l
ckVsZW1lbnQsIGlzT2JzY3VyZWQpKSB7Ci0gICAgICAgICAgICBpblZpZXdDZW50ZXIgPSBXZWJD
b3JlOjpJbnRQb2ludChjb3JlRnJhbWVWaWV3LT5jbGllbnRUb0RvY3VtZW50UG9pbnQoY2xpZW50
Q2VudGVyUG9pbnQudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKHVzZVZpZXdwb3J0Q29vcmRp
bmF0ZXMpCi0gICAgICAgICAgICAgICAgaW5WaWV3Q2VudGVyID0gY29yZUZyYW1lVmlldy0+Y29u
dGVudHNUb1Jvb3RWaWV3KGluVmlld0NlbnRlci52YWx1ZSgpKTsKKyAgICAgICAgaW5WaWV3Q2Vu
dGVyUG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVyUG9pbnQoKmNvbnRhaW5lckVsZW1l
bnQsIGlzT2JzY3VyZWQpOworICAgICAgICBpZiAoaW5WaWV3Q2VudGVyUG9pbnQuaGFzX3ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkgeworICAgICAgICAg
ICAgY2FzZSBDb29yZGluYXRlU3lzdGVtOjpQYWdlOgorICAgICAgICAgICAgICAgIGluVmlld0Nl
bnRlclBvaW50ID0gY29yZUZyYW1lVmlldy0+Y2xpZW50VG9Eb2N1bWVudFBvaW50KGluVmlld0Nl
bnRlclBvaW50LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDb29yZGluYXRlU3lzdGVtOjpMYXlvdXRWaWV3cG9ydDoKKyAgICAgICAgICAgICAgICAv
LyBUaGUgcG9pbnQgaXMgYWxyZWFkeSBpbiBjbGllbnQgY29vcmRpbmF0ZXMuCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvb3JkaW5hdGVTeXN0ZW06OlZpc3VhbFZp
ZXdwb3J0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxi
YWNrSUQsIHJlY3QsIGluVmlld0NlbnRlciwgaXNPYnNjdXJlZCwgU3RyaW5nKCkpLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQo
Y2FsbGJhY2tJRCwgZW5jbG9zaW5nSW50UmVjdChlbGVtZW50Qm91bmRzKSwgV2ViQ29yZTo6SW50
UG9pbnQoaW5WaWV3Q2VudGVyUG9pbnQudmFsdWUoKSksIGlzT2JzY3VyZWQsIFN0cmluZygpKSwg
MCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxl
bWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4
IDRiODgyZjRiNzU1ZjM3ODliN2ZhMWZiYzk2NzI2ZmIwNzhhM2MyYzkuLmYzNTk1ZmM4NDY1YmY1
ZjMxYzM3Yjc5MzMxYzY2YzlmNzQyYjk4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBmb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCk7
Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQs
IGJvb2wgdXNlVmlld3BvcnRDb29yZGluYXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
dm9pZCBjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIHVpbnQz
Ml90IGNvb3JkaW5hdGVTeXN0ZW0sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgc2Vs
ZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUs
IGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM3YjY2NTRhMTg2NjMyMTA4ZDgwMGJiN2MxMWU4ZWFjZjdi
YTk2NmMuLmI2NTg5YTkyY2FlZjQwNzkwYWE3MWQ1NjI4MTlhODY4NjlhZGE4NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsNyArMzAs
NyBAQCBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKIAogICAgIEZvY3Vz
RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQogCi0gICAgQ29tcHV0ZUVs
ZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIHVzZVZpZXdwb3J0Q29v
cmRpbmF0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCB1aW50MzJfdCBjb29yZGluYXRlU3lzdGVtLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogCiAgICAgU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326774</attachid>
            <date>2017-11-13 11:29:01 -0800</date>
            <delta_ts>2017-11-13 11:29:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179129-20171113112900.patch</filename>
            <type>text/plain</type>
            <size>27488</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ2MTJmMDA0NTIwMTk3
ODU5YTI0ZWEzODI3YTI4OWIyY2I3N2I5MS4uZjE1NWI3NTIzZTBlOGNlODM3ZDE3ODc4MGZkMWQ4
ZDZjODdhMDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTExLTA3ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpblZp
ZXdDZW50ZXJQb2ludCBzaG91bGQgbm90IGluY2x1ZGUgdG9wQ29udGVudEluc2V0IHdoZW4gY29t
cHV0ZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUy
OTcwMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEFk
ZCBvciBleHBvcnQgc29tZSBoZWxwZXJzIG5lZWRlZCB0byBjb21wdXRlIGVsZW1lbnQgbGF5b3V0
IGZvciBXZWJEcml2ZXIuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBFeHBvcnQgdGhlIG5v
bi1ET00gdmVyc2lvbiBvZiBnZXRDbGllbnRCb3VuZHMoKS4KKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6Y2xpZW50VG9Eb2N1bWVudFJlY3QgY29uc3QpOgorICAgICAgICBBZGRlZC4g
VGhpcyBkb2VzIHRoZSBzYW1lIHRoaW5nIGFzIGNsaWVudFRvRG9jdW1lbnRQb2ludC4gRXhwb3J0
IGl0LCB0b28uCisKIDIwMTctMTEtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFNQSSBmb3Ig
Y2xpZW50cyB0byByZXF1ZXN0IGRhdGEgZm9yIGEgZ2l2ZW4gYXR0YWNobWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwppbmRleCAyOTRiNTc2MjcyYWQzNmI1Y2M3M2UzMDJhMjE3MjRhMDEwNDY3YTg2Li5hMmI0NDkz
YzUyODg3OWFiODE0YmU3YTE1MzIwOTk5Y2FkMjhmMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE3LTExLTA3ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBBdXRvbWF0aW9uOiBpblZpZXdDZW50ZXJQb2ludCBzaG91bGQgbm90IGluY2x1
ZGUgdG9wQ29udGVudEluc2V0IHdoZW4gY29tcHV0ZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEyOQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyOTcwMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkanVzdCBjb2RlIHRvIHVzZSB0aGUgcHJvcGVyIGNv
b3JkaW5hdGUgc3lzdGVtIHdoZW4gcmVxdWVzdGluZyBlbGVtZW50IGxheW91dC4KKworICAgICAg
ICAqIFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpjb21wdXRlRWxl
bWVudExheW91dCk6CisKIDIwMTctMTEtMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogV2ViRHJpdmVyU2VydmljZTo6bWF0
Y2hDYXBhYmlsaXRpZXMgc2hvdWxkIGZvbGxvdyB0aGUgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNDc3Y2U3
ZTNjNjMxZWE1MzQ4YTBhMjhiMjliZDA2MWQ1ZmNhY2NlLi5hMGYwOTg0NmRlMDFlNTM3NjMyMWNh
MGEyZWY4YWNiNzFiMDZlNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTExLTA3
ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9u
OiBpblZpZXdDZW50ZXJQb2ludCBzaG91bGQgbm90IGluY2x1ZGUgdG9wQ29udGVudEluc2V0IHdo
ZW4gY29tcHV0ZWQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEyOQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzUyOTcwMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIFdoZW4gY29tcHV0aW5nIHRoZSBpbiB2aWV3IGNlbnRlciBwb2ludCBwZXIgVzNDIHNwZWNp
ZmljYXRpb24sIHRoZSB0b3AgY29udGVudCBpbnNldAorICAgICAgICBpcyBpbmFkdmVydGVudGx5
IGFkZGVkIGJhY2sgaW4gd2hlbiBjb252ZXJ0aW5nIHRvIHRoZSByb290IHZpZXcgY29vcmRpbmF0
ZSBzeXN0ZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXdvcmtzIHRoZSBwcm90b2NvbCBjb21t
YW5kIHNvIHRoYXQgaXQgZXhwbGljaXRseSByZXF1ZXN0cyBhIGNvb3JkaW5hdGUKKyAgICAgICAg
c3lzdGVtLCB3aXRoIG9wdGlvbnMgZm9yICJQYWdlIiAocm9vdCAvIGNvbnRlbnRzKSwgIkxheW91
dFZpZXdwb3J0IiwgYW5kICJWaXN1YWxWaWV3cG9ydCIuCisgICAgICAgIFRoZSBsYXR0ZXIgaXMg
bm90IGltcGxlbWVudGVkIGluIHRoaXMgcGF0Y2gsIHNpbmNlIGl0IGlzIGludGVuZGVkIGZvciB1
c2Ugb24gaU9TIHNvbWVkYXkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRv
bWF0aW9uLmpzb246CisgICAgICAgIENoYW5nZSB1c2VzVmlld3BvcnQgdG8gQ29vcmRpbmF0ZVN5
c3RlbS4KKyAgICAgICAgQWRkIGEgbmV3IGNvb3JkaW5hdGUgc3lzdGVtIGVudW0gdHlwZSBhbmQg
dXNlIGl0LgorICAgICAgICBGaXggcmVsZXZhbnQgY29tbWVudHMgZm9yIEF1dG9tYXRpb24uY29t
cHV0RWxlbWVudExheW91dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbFN0cmluZ1RvQ29v
cmRpbmF0ZVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpj
b21wdXRlRWxlbWVudExheW91dCk6CisgICAgICAgIFBhcnNlIHRoZSByZXF1ZXN0ZWQgY29vcmRp
bmF0ZSBzeXN0ZW0gYW5kIHNlbmQgaXQgaW4gdGhlIG1lc3NhZ2UgdG8gdGhlIHdlYiBwcm9jZXNz
LgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KToKKyAgICAgICAgUmV3b3JrIHRoZSBpbXBsZW1l
bnRhdGlvbi4gR2V0IHRoZSBlbGVtZW50IGJvdW5kcyBhbmQgaW4tdmlldyBjZW50ZXIgcG9pbnQg
aW4KKyAgICAgICAgY2xpZW50IGNvb3JkaW5hdGVzIGFuZCBjb252ZXJ0IGJhY2sgdG8gcm9vdCB2
aWV3IGNvb3JkaW5hdGVzIGZvciBDb29yZGluYXRlU3lzdGVtOjpQYWdlLgorCiAyMDE3LTExLTEz
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRh
Y2htZW50IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gcmVxdWVzdCBkYXRh
IGZvciBhIGdpdmVuIGF0dGFjaG1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQ4OTk5ZDFhMWJl
MmI5YWIwY2ZjZmExMDJjYWVjMGRmOGE2YmM4ODIuLmNiYjA1NWQwZmRlZGRmNWE2NzRjYTBhMDE0
NjIyNDdjMzFkZDM3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgYm91bmRzSW5Sb290Vmlld1NwYWNl
KCk7CiAKLSAgICBGbG9hdFJlY3QgYm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IGJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPERPTVJlY3RMaXN0PiBnZXRDbGllbnRSZWN0cygpOwogICAgIFJlZjxET01SZWN0PiBn
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBh
ODNlYWE1NmI2NTRmMDI4MTM1N2QzODljYjI4MTM1MTE3ZmMyMjdkLi5lZDAyMjY4MTdlZDhmZTlm
ZTg1OTYxNGJhZGUwM2U4MmIxYzYzZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC00NDczLDYgKzQ0NzMsMTIgQEAgRmxvYXRQb2ludCBGcmFtZVZpZXc6OmRvY3VtZW50VG9DbGll
bnRQb2ludChGbG9hdFBvaW50IHApIGNvbnN0CiAgICAgcmV0dXJuIHA7CiB9CiAKK0Zsb2F0UmVj
dCBGcmFtZVZpZXc6OmNsaWVudFRvRG9jdW1lbnRSZWN0KEZsb2F0UmVjdCByZWN0KSBjb25zdAor
eworICAgIHJlY3QubW92ZSgtZG9jdW1lbnRUb0NsaWVudE9mZnNldCgpKTsKKyAgICByZXR1cm4g
cmVjdDsKK30KKwogRmxvYXRQb2ludCBGcmFtZVZpZXc6OmNsaWVudFRvRG9jdW1lbnRQb2ludChG
bG9hdFBvaW50IHBvaW50KSBjb25zdAogewogICAgIHBvaW50Lm1vdmUoLWRvY3VtZW50VG9DbGll
bnRPZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBlZWFlZjJhNzljZjlkNjgy
MDMyOGMwMGIwMTk0MmQ4MDhjZGU4NjQ4Li4zZjllMmY0ZjcwNDhmZmU5OTIwZTAwM2Y3MzJmYTli
NmU0MDYyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQ2Niw2ICs0NjYsNyBAQCBw
dWJsaWM6CiAgICAgRmxvYXRTaXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSBjb25zdDsKICAg
ICBGbG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKICAgICBG
bG9hdFBvaW50IGRvY3VtZW50VG9DbGllbnRQb2ludChGbG9hdFBvaW50KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY2xpZW50VG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0KSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGNsaWVudFRvRG9jdW1lbnRQb2lu
dChGbG9hdFBvaW50KSBjb25zdDsKIAogICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydFRvQWJz
b2x1dGVSZWN0KEZsb2F0UmVjdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCA0NGM3ZTkz
YWZiYzIwZjc5MGZmNWNhNzMyZTA5NDNkZDVlNTdjMDRiLi40NDEzZjdmMGYxZDA1ZGIwMGJkYjdj
ZWQzN2E1ZmMwZmY3ZmExZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTgyNSw3ICs4MjUsNyBA
QCB2b2lkIFNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBPcHRpb25TZXQ8RWxlbWVudExheQogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJ
SUxpdGVyYWwoImZyYW1lSGFuZGxlIiksIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZSgp
KTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub2RlSGFuZGxlIiks
IGVsZW1lbnRJRCk7CiAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoInNj
cm9sbEludG9WaWV3SWZOZWVkZWQiKSwgb3B0aW9ucy5jb250YWlucyhFbGVtZW50TGF5b3V0T3B0
aW9uOjpTY3JvbGxJbnRvVmlld0lmTmVlZGVkKSk7Ci0gICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVh
bihBU0NJSUxpdGVyYWwoInVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMiKSwgb3B0aW9ucy5jb250YWlu
cyhFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzKSk7CisgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiY29vcmRpbmF0ZVN5c3RlbSIpLCBvcHRp
b25zLmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMp
ID8gQVNDSUlMaXRlcmFsKCJMYXlvdXRWaWV3cG9ydCIpIDogQVNDSUlMaXRlcmFsKCJQYWdlIikp
OwogICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJjb21wdXRl
RWxlbWVudExheW91dCIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFi
bGUgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBmYWxzZSwgV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZVN5c3RlbS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZVN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlODkxMDNiMDI4
YjIwMmM3YWE4ZWQ4MTNkNjNmMDNhODRlYjNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlU3lzdGVtLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBjbGFzcyBDb29yZGluYXRlU3lzdGVtIHsKKyAgICBQYWdlID0gMCwKKyAgICBMYXlvdXRWaWV3
cG9ydCwKKyAgICBWaXN1YWxWaWV3cG9ydCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6
OkNvb3JkaW5hdGVTeXN0ZW0+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSwKKyAgICBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW06
OlBhZ2UsCisgICAgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtOjpMYXlvdXRWaWV3cG9ydCwKKyAg
ICBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW06OlZpc3VhbFZpZXdwb3J0CisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL0F1dG9tYXRpb24uanNvbgppbmRleCA1YzUyZjIyZDBmNDJmZTA4YzVhYzBhY2IwMzdi
Y2EyZWYwNzIwNWZmLi42M2IwYzY5OTQ5NmM3NjY2YTY1NjFiZWE5MzYxZDZkYjI3ZDFjYzZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbgpAQCAtMjYsNiArMjYsMTYgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUi
LCAiJHJlZiI6ICJTaXplIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJpZCI6ICJDb29yZGluYXRlU3lzdGVtIiwKKyAgICAgICAgICAgICJ0eXBl
IjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGNvb3JkaW5hdGUg
c3lzdGVtIGluIHdoaWNoIHJlY3RzLCBwb2ludHMsIGFuZCBzaXplcyBhcmUgdG8gYmUgaW50ZXJw
cmV0ZWQuIiwKKyAgICAgICAgICAgICJlbnVtIjogWworICAgICAgICAgICAgICAgICJQYWdlIiwK
KyAgICAgICAgICAgICAgICAiTGF5b3V0Vmlld3BvcnQiLAorICAgICAgICAgICAgICAgICJWaXN1
YWxWaWV3cG9ydCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAg
ICAgICAgImlkIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsCiAgICAgICAgICAgICAidHlwZSI6
ICJzdHJpbmciLApAQCAtNDQ2LDExICs0NTYsMTEgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImZyYW1lSGFuZGxlIiwgIiRyZWYiOiAiRnJhbWVIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGhhbmRsZSBmb3IgdGhlIGZyYW1lIHRoYXQgY29udGFpbnMgdGhlIGVsZW1lbnQuIiB9LAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUhhbmRsZSIsICIkcmVmIjogIk5vZGVIYW5k
bGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBvZiB0aGUgZWxlbWVudCB0byB1c2UuIiB9
LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsICJv
cHRpb25hbCI6IHRydWUsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgdGhl
IGVsZW1lbnQgc2hvdWxkIGJlIHNjcm9sbGVkIGludG8gdmlldyBiZWZvcmUgY29tcHV0aW5nIGl0
cyBsYXlvdXQuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXNlVmlld3BvcnRDb29y
ZGluYXRlcyIsICJvcHRpb25hbCI6IHRydWUsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiSWYgdGhlIHJlc3VsdCBjb29yZGluYXRlcyBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXMg
dmlld3BvcnQgY29vcmRpbmF0ZXMgb3Igbm90LiBEZWZhdWx0cyB0byBmYWxzZSwgd2hpY2ggbWVh
bnMgY29vcmRpbmF0ZXMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGFzIHBhZ2UgY29vcmRpbmF0ZXMu
IiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb29yZGluYXRlU3lzdGVtIiwgIiRyZWYi
OiAiQ29vcmRpbmF0ZVN5c3RlbSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgY29vcmRpbmF0ZSBzeXN0
ZW0gdG8gdXNlIGZvciByZWN0IGFuZCBwb2ludCByZXN1bHRzLiIgfQogICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVj
dCIsICIkcmVmIjogIlJlY3QiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGxheW91dCByZWN0IGZvciB0
aGUgcmVxdWVzdGVkIGVsZW1lbnQuIFNwZWNpZmllZCBpbiBwYWdlIG9yIHZpZXdwb3J0IGNvb3Jk
aW5hdGVzIGJhc2VkIG9uIHRoZSB1c2VWaWV3cG9ydENvb3JkaW5hdGVzIHBhcmFtZXRlci4iIH0s
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpblZpZXdDZW50ZXJQb2ludCIsICJvcHRpb25h
bCI6IHRydWUsICIkcmVmIjogIlBvaW50IiwgImRlc2NyaXB0aW9uIjogIlRoZSBpbi12aWV3IGNl
bnRlciBwb2ludCBmb3IgdGhlIHJlcXVlc3RlZCBlbGVtZW50LiBTcGVjaWZpZWQgaW4gcGFnZSBv
ciB2aWV3cG9ydCBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgdXNlVmlld3BvcnRDb29yZGluYXRl
cyBwYXJhbWV0ZXIuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVjdCIsICIkcmVm
IjogIlJlY3QiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGxheW91dCByZWN0IGZvciB0aGUgcmVxdWVz
dGVkIGVsZW1lbnQuIFZhbHVlcyBhcmUgY29udmVydGVkIHRvIHRoZSByZXF1ZXN0ZWQgY29vcmRp
bmF0ZSBzeXN0ZW0uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5WaWV3Q2VudGVy
UG9pbnQiLCAib3B0aW9uYWwiOiB0cnVlLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgZm9yIHRoZSByZXF1ZXN0ZWQgZWxlbWVudC4gVmFs
dWVzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIHJlcXVlc3RlZCBjb29yZGluYXRlIHN5c3RlbS4iIH0s
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc09ic2N1cmVkIiwgInR5cGUiOiAiYm9vbGVh
biIsICJkZXNjcmlwdGlvbiI6ICJJZiB0aGUgaW4tdmlldyBjZW50ZXIgcG9pbnQgb2YgdGhlIHJl
cXVlc3RlZCBlbGVtZW50IGlzIG9ic2N1cmVkIGJ5IGFub3RoZXIgZWxlbWVudC4iIH0KICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IGE1ZTg1OGMzMDM3MDExNWQyOWUxMWM0OGZkNTBiYTI3YjhlYWVhNzcuLmY3ZTE0ZDlk
MGUwMTE2NjY0OGZiZmNkNmY5NjBjZjkxMTNiMzgwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQu
aCIKICNpbmNsdWRlICJBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIgogI2luY2x1ZGUgIldlYkF1dG9t
YXRpb25TZXNzaW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5TWVzc2FnZXMuaCIKQEAgLTg3Myw3ICs4NzQsMTggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90
IGYKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGhhbmRsZUZvcldlYkZyYW1lSUQoZnJh
bWVJRCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExh
eW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBi
cm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0IFN0
cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBjb25zdCBib29sKiBvcHRpb25hbFVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIFJlZjxDb21w
dXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmIGNhbGxiYWNrKQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q29vcmRpbmF0ZVN5c3RlbT4gcHJvdG9jb2xTdHJpbmdUb0Nvb3JkaW5hdGVTeXN0ZW0oY29u
c3QgU3RyaW5nJiBjb29yZGluYXRlU3lzdGVtU3RyaW5nKQoreworICAgIGlmIChjb29yZGluYXRl
U3lzdGVtU3RyaW5nID09ICJQYWdlIikKKyAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVTeXN0ZW06
OlBhZ2U7CisgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW1TdHJpbmcgPT0gIkxheW91dFZpZXdwb3J0
IikKKyAgICAgICAgcmV0dXJuIENvb3JkaW5hdGVTeXN0ZW06OkxheW91dFZpZXdwb3J0OworICAg
IGlmIChjb29yZGluYXRlU3lzdGVtU3RyaW5nID09ICJWaXN1YWxWaWV3cG9ydCIpCisgICAgICAg
IHJldHVybiBDb29yZGluYXRlU3lzdGVtOjpWaXN1YWxWaWV3cG9ydDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVu
dExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIGNvbnN0
IFN0cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW1TdHJpbmcsIFJlZjxDb21wdXRl
RWxlbWVudExheW91dENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAg
IGlmICghcGFnZSkKQEAgLTg4MywxMyArODk1LDE1IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmNvbXB1dGVFbGVtZW50TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
CiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihG
cmFtZU5vdEZvdW5kKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3RlbT4gY29v
cmRpbmF0ZVN5c3RlbSA9IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lzdGVtKGNvb3JkaW5h
dGVTeXN0ZW1TdHJpbmcpOworICAgIGlmICghY29vcmRpbmF0ZVN5c3RlbSkKKyAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRo
ZSBwYXJhbWV0ZXIgJ2Nvb3JkaW5hdGVTeXN0ZW0nIGlzIGludmFsaWQuIik7CisKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFja0lEKys7
CiAgICAgbV9jb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RG
TW92ZShjYWxsYmFjaykpOwogCiAgICAgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkID0gb3B0
aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkID8gKm9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCA6IGZhbHNlOwotICAgIGJvb2wgdXNlVmlld3BvcnRDb29yZGluYXRlcyA9IG9wdGlvbmFs
VXNlVmlld3BvcnRDb29yZGluYXRlcyA/ICpvcHRpb25hbFVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMg
OiBmYWxzZTsKLQotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLT5wYWdlSUQoKSwgZnJh
bWVJRC52YWx1ZSgpLCBub2RlSGFuZGxlLCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCB1c2VWaWV3
cG9ydENvb3JkaW5hdGVzLCBjYWxsYmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkNvbXB1dGVFbGVtZW50TGF5
b3V0KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksIG5vZGVIYW5kbGUsIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIGNvb3JkaW5hdGVTeXN0ZW0udmFsdWUoKSwgY2FsbGJhY2tJRCksIDAp
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQs
IGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDNiNjAxMmMz
NzU4ZTY4MjJjOGFiY2E3NTdhZWM4OTRlYjY4NjkzNDIuLmYwNGVhODIzYzY4MjQ3Y2ZiNzY1N2Q1
NDI5YTNiOGI5ZTFmMzg4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTEzNSw3ICsxMzUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRs
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUs
IFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5k
bGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5k
bGUsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBjb25zdCBib29sKiB1c2VWaWV3cG9ydENvb3JkaW5hdGVzLCBSZWY8
SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDb21wdXRlRWxl
bWVudExheW91dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50
TGF5b3V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2Rl
SGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0
IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
cmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8SW5zcGVjdG9yOjpBdXRv
bWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpTZWxlY3RPcHRpb25FbGVtZW50Q2FsbGJh
Y2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyhJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUs
IGJvb2wqIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNtaXNzQ3VycmVudEphdmFTY3Jp
cHREaWFsb2coSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzY2ZiN2ZhM2ZhMmI1YzcwMmQwOTAwNzkzNGI4ZTVm
NjE0YjUzZmIuLjlhMTQ0N2I2MzBlMTA2YjFhN2FmMzg0Yjc5ZWU3YTM0M2I4NDAyYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg5
Nyw2ICszODk3LDcgQEAKIAkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25D
bGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvbWF0
aW9uQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1QjFDMjBF
ODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBUElBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RjY0MkQyMUZBQkUzNzgwMDk2
MjFFOSAvKiBDb29yZGluYXRlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvb3JkaW5hdGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJD
NTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0aW9uYWxDYWxsYmFja0lELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbmFsQ2FsbGJhY2tJRC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQ
cm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hp
bGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTA1OCw2ICs1
MDU5LDcgQEAKIAkJCQkyOTBGNDI3MTE3MkEwQzc0MDA5MzlGRjAgLyogQ2hpbGRQcm9jZXNzU3Vw
cGxlbWVudC5oICovLAogCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcCAqLywKIAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oICovLAorCQkJCTk5RjY0MkQyMUZBQkUzNzgwMDk2MjFFOSAv
KiBDb29yZGluYXRlU3lzdGVtLmggKi8sCiAJCQkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8sCiAJCQkJMEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZD
IC8qIERyYXdpbmdBcmVhSW5mby5oICovLAogCQkJCUUxMDVGRTUzMThEN0I5REUwMDhGNTdBOCAv
KiBFZGl0aW5nUmFuZ2UuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5k
ZXggOWRkNGQ1MmJkOTRkNGRmNjczOTRkZTk2NzQ5YTY4NTA1MjEwYWQzZS4uZTQ3Mzc0YTY4MDBj
YWVlYTQ5MTQ3NGE5NzE4YjYxODAxZjkwN2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmgiCiAKICNpbmNsdWRlICJBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmgiCisjaW5j
bHVkZSAiQ29vcmRpbmF0ZVN5c3RlbS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLmgiCkBA
IC01MzMsNyArNTM0LDcgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1l
bnRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuICZlbGVt
ZW50OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50
TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCB1c2VWaWV3cG9ydENvb3JkaW5h
dGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBX
ZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghcGFnZSkgewpAQCAtNTQ0LDYgKzU0NSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmCiAKICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90Rm91bmQpOwogICAg
IFN0cmluZyBub2RlTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOworICAgIFN0cmluZyBub3RJ
bXBsZW1lbnRlZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6Ok5vdEltcGxlbWVudGVkKTsKIAogICAgIFdlYkZyYW1lKiBmcmFtZSA9
IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSA6IHBh
Z2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUo
KSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpIHsKQEAgLTU2NSwyNSArNTY3LDQ2IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgICAgIC8vIEZJWE1FOiBXYWl0IGluIGFuIGlt
cGxlbWVudGF0aW9uLXNwZWNpZmljIHdheSB1cCB0byB0aGUgc2Vzc2lvbiBpbXBsaWNpdCB3YWl0
IHRpbWVvdXQgZm9yIHRoZSBlbGVtZW50IHRvIGJlY29tZSBpbiB2aWV3LgogICAgIH0KIAotICAg
IFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IGNvcmVFbGVtZW50LT5jbGllbnRSZWN0KCk7CisgICAg
aWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gQ29vcmRpbmF0ZVN5c3RlbTo6VmlzdWFsVmlld3BvcnQp
IHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVt
ZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbm90SW1wbGVt
ZW50ZWRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGF1dG8q
IGNvcmVGcmFtZVZpZXcgPSBmcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKLSAgICBpZiAodXNl
Vmlld3BvcnRDb29yZGluYXRlcykKLSAgICAgICAgcmVjdC5tb3ZlQnkoV2ViQ29yZTo6SW50UG9p
bnQoMCwgLWNvcmVGcmFtZVZpZXctPnRvcENvbnRlbnRJbnNldCgpKSk7Ci0gICAgZWxzZQotICAg
ICAgICByZWN0ID0gY29yZUZyYW1lVmlldy0+cm9vdFZpZXdUb0NvbnRlbnRzKHJlY3QpOworICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBlbGVtZW50Qm91bmRzID0gY29yZUVsZW1lbnQtPmJvdW5kaW5n
Q2xpZW50UmVjdCgpOwogCisgICAgYXV0byogY29yZUZyYW1lVmlldyA9IGZyYW1lLT5jb3JlRnJh
bWUoKS0+dmlldygpOworICAgIHN3aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkgeworICAgIGNhc2Ug
Q29vcmRpbmF0ZVN5c3RlbTo6UGFnZToKKyAgICAgICAgZWxlbWVudEJvdW5kcyA9IGNvcmVGcmFt
ZVZpZXctPmNsaWVudFRvRG9jdW1lbnRSZWN0KGVsZW1lbnRCb3VuZHMpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENvb3JkaW5hdGVTeXN0ZW06OkxheW91dFZpZXdwb3J0OgorICAgICAgICAv
LyBUaGUgZWxlbWVudCBib3VuZHMgYXJlIGFscmVhZHkgaW4gY2xpZW50IGNvb3JkaW5hdGVzLgor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENvb3JkaW5hdGVTeXN0ZW06OlZpc3VhbFZpZXdwb3J0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PiBpblZpZXdDZW50ZXJQb2lu
dDsKICAgICBib29sIGlzT2JzY3VyZWQgPSBmYWxzZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiBpblZpZXdDZW50ZXI7CiAgICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHsK
LSAgICAgICAgaWYgKGF1dG8gY2xpZW50Q2VudGVyUG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50
Q2VudGVyUG9pbnQoKmNvbnRhaW5lckVsZW1lbnQsIGlzT2JzY3VyZWQpKSB7Ci0gICAgICAgICAg
ICBpblZpZXdDZW50ZXIgPSBXZWJDb3JlOjpJbnRQb2ludChjb3JlRnJhbWVWaWV3LT5jbGllbnRU
b0RvY3VtZW50UG9pbnQoY2xpZW50Q2VudGVyUG9pbnQudmFsdWUoKSkpOwotICAgICAgICAgICAg
aWYgKHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMpCi0gICAgICAgICAgICAgICAgaW5WaWV3Q2VudGVy
ID0gY29yZUZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGluVmlld0NlbnRlci52YWx1ZSgp
KTsKKyAgICAgICAgaW5WaWV3Q2VudGVyUG9pbnQgPSBlbGVtZW50SW5WaWV3Q2xpZW50Q2VudGVy
UG9pbnQoKmNvbnRhaW5lckVsZW1lbnQsIGlzT2JzY3VyZWQpOworICAgICAgICBpZiAoaW5WaWV3
Q2VudGVyUG9pbnQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29vcmRpbmF0
ZVN5c3RlbSkgeworICAgICAgICAgICAgY2FzZSBDb29yZGluYXRlU3lzdGVtOjpQYWdlOgorICAg
ICAgICAgICAgICAgIGluVmlld0NlbnRlclBvaW50ID0gY29yZUZyYW1lVmlldy0+Y2xpZW50VG9E
b2N1bWVudFBvaW50KGluVmlld0NlbnRlclBvaW50LnZhbHVlKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb29yZGluYXRlU3lzdGVtOjpMYXlvdXRWaWV3cG9y
dDoKKyAgICAgICAgICAgICAgICAvLyBUaGUgcG9pbnQgaXMgYWxyZWFkeSBpbiBjbGllbnQgY29v
cmRpbmF0ZXMuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvb3Jk
aW5hdGVTeXN0ZW06OlZpc3VhbFZpZXdwb3J0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZENvbXB1
dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHJlY3QsIGluVmlld0NlbnRlciwgaXNPYnNjdXJl
ZCwgU3RyaW5nKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
Q29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJRCwgZW5jbG9zaW5nSW50UmVjdChlbGVtZW50
Qm91bmRzKSwgV2ViQ29yZTo6SW50UG9pbnQoaW5WaWV3Q2VudGVyUG9pbnQudmFsdWUoKSksIGlz
T2JzY3VyZWQsIFN0cmluZygpKSwgMCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oCmluZGV4IDRiODgyZjRiNzU1ZjM3ODliN2ZhMWZiYzk2NzI2ZmIwNzhh
M2MyYzkuLjRhNzNjN2RhZTEyOTBjNzFjNjlmYTc3YTljZWVhYTk2NjZiMmFjMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTIzLDEwICsyMywxMCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eV9oCi0jZGVmaW5lIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZVN5c3Rl
bS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHJl
c29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBib29sIHVzZVZpZXdwb3J0Q29vcmRpbmF0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtl
U2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC03Nyw1ICs3NywzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMzdiNjY1NGExODY2MzIxMDhkODAwYmI3YzExZThlYWNmN2JhOTY2Yy4uNTFi
M2MyNTg2Nzc1ZTNhMzk5OGU1ZDgzM2EyYWI3OGI0ZDUxYmNlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMCw3ICszMCw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgewogCiAgICAgRm9jdXNGcmFtZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiAKLSAgICBDb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBi
b29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgdXNlVmlld3BvcnRDb29yZGluYXRlcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKK0NvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCwgZW51bSBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAogICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>