<?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>150248</bug_id>
          
          <creation_ts>2015-10-16 13:12:41 -0700</creation_ts>
          <short_desc>Extend fast-clicking behavior to trigger on elements that have negligible zoom</short_desc>
          <delta_ts>2015-10-22 09:12:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122212</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>redux</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1133996</commentid>
    <comment_count>0</comment_count>
      <attachid>263313</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 13:12:41 -0700</bug_when>
    <thetext>Created attachment 263313
Test page for zoom-dependent fast clicking

We will want websites with scalable viewports to also benefit from fast-click behavior when applicable. One idea is to use the double-tap zoom factor as a heuristic to determine whether an element should quickly fire a click when tapped or wait for the double tap gesture to fail. If double tapping on an element will not cause the viewport to zoom very much, we should make single taps on it trigger fast clicking, since double-tapping will offer little value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133999</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 13:14:14 -0700</bug_when>
    <thetext>In regards to the test page: double tapping the top button should trigger zoom; double tapping the bottom button should fire clicks, since double-tap to zoom won&apos;t do much for us there anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134000</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 13:18:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/23140069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134077</commentid>
    <comment_count>3</comment_count>
      <attachid>263340</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 15:28:18 -0700</bug_when>
    <thetext>Created attachment 263340
work in progress v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134081</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-16 15:30:45 -0700</bug_when>
    <thetext>Attachment 263340 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:741:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:772:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134313</commentid>
    <comment_count>5</comment_count>
      <attachid>263412</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-17 23:48:45 -0700</bug_when>
    <thetext>Created attachment 263412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134314</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-17 23:51:21 -0700</bug_when>
    <thetext>Attachment 263412 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:834:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:877:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134632</commentid>
    <comment_count>7</comment_count>
      <attachid>263412</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-19 11:14:59 -0700</bug_when>
    <thetext>Comment on attachment 263412
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:940
&gt; +void WebPageProxy::disableDoubleTapGesturesUntilTapIsFinishedIfNecessary(uint64_t requestID, bool allowsDoubleTapZoom, const WebCore::FloatRect&amp; targetRect, bool isReplacedElement, double minimumScale, double maximumScale)

The &quot;IfNecessary&quot; is a big vague. Does that just refer to the potential zoom level change?

&gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:104
&gt; +void ViewGestureGeometryCollector::computeZoomInformationForNode(Node* node, FloatPoint&amp; origin, FloatRect&amp; renderRect, bool&amp; isReplaced, double&amp; viewportMinimumScale, double&amp; viewportMaximumScale)

Node&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134650</commentid>
    <comment_count>8</comment_count>
      <attachid>263412</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-19 12:10:00 -0700</bug_when>
    <thetext>Comment on attachment 263412
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:940
&gt;&gt; +void WebPageProxy::disableDoubleTapGesturesUntilTapIsFinishedIfNecessary(uint64_t requestID, bool allowsDoubleTapZoom, const WebCore::FloatRect&amp; targetRect, bool isReplacedElement, double minimumScale, double maximumScale)
&gt; 
&gt; The &quot;IfNecessary&quot; is a big vague. Does that just refer to the potential zoom level change?

Yes -- we could potentially bail from disabling double tap gestures if the expected change in zoom level is too much. However, I hesitated when naming it something more specific like &quot;IfZoomingIsNegligible&quot; since the touch-action: manipulation patch will also use this codepath, and in that case a significant amount of zoom level change is overridden by having touch-action: manipulation on the element, so I thought &quot;IfNecessary&quot; would better capture both cases.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:104
&gt;&gt; +void ViewGestureGeometryCollector::computeZoomInformationForNode(Node* node, FloatPoint&amp; origin, FloatRect&amp; renderRect, bool&amp; isReplaced, double&amp; viewportMinimumScale, double&amp; viewportMaximumScale)
&gt; 
&gt; Node&amp;

Got it, fixed. Since we never expect node to be null here, the reference makes a lot more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134665</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-19 12:54:23 -0700</bug_when>
    <thetext>Committed r191309: &lt;http://trac.webkit.org/changeset/191309&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>263313</attachid>
            <date>2015-10-16 13:12:41 -0700</date>
            <delta_ts>2015-10-16 13:12:41 -0700</delta_ts>
            <desc>Test page for zoom-dependent fast clicking</desc>
            <filename>zoom-dependent-fast-click.html</filename>
            <type>text/html</type>
            <size>1639</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgogICAgPHNjcmlwdD4KICAgIHZhciB0aW1lc3RhbXA7CiAgICB2YXIgY2xp
Y2tDb3VudCA9IHsgInRhcmdldCI6IDAsICJnaWFudC10YXJnZXQiOiAwIH07CgogICAgZnVuY3Rp
b24gc2V0dXAoKSB7CiAgICAgICAgYmluZFRvdWNoQW5kQ2xpY2tIYW5kbGVycyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIGhhbmRsZVRvdWNoRW5kLCBoYW5kbGVTeW50aGV0aWND
bGljayk7CiAgICAgICAgYmluZFRvdWNoQW5kQ2xpY2tIYW5kbGVycyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZ2lhbnQtdGFyZ2V0IiksIGhhbmRsZVRvdWNoRW5kLCBoYW5kbGVTeW50aGV0aWND
bGljayk7CiAgICB9CgogICAgZnVuY3Rpb24gYmluZFRvdWNoQW5kQ2xpY2tIYW5kbGVycyhlbGVt
ZW50LCBvbnRvdWNoZW5kLCBvbmNsaWNrKSB7CiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJ0b3VjaGVuZCIsIG9udG91Y2hlbmQsIGZhbHNlKTsKICAgICAgICBlbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgb25jbGljaywgZmFsc2UpOwogICAgfQoKICAgIGZ1bmN0aW9u
IGhhbmRsZVRvdWNoRW5kKGV2ZW50KSB7CiAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJhY2tn
cm91bmRDb2xvciA9ICIjRkYyMjIyIjsKICAgICAgICB0aW1lc3RhbXAgPSBOdW1iZXIobmV3IERh
dGUoKSk7CiAgICB9CgogICAgZnVuY3Rpb24gaGFuZGxlU3ludGhldGljQ2xpY2soZXZlbnQpIHsK
ICAgICAgICBjbGlja0NvdW50W2V2ZW50LnRhcmdldC5pZF0rKzsKICAgICAgICBldmVudC50YXJn
ZXQudGV4dENvbnRlbnQgPSAiQ2xpY2sgY291bnQ6ICIgKyBjbGlja0NvdW50W2V2ZW50LnRhcmdl
dC5pZF07CiAgICAgICAgdmFyIGRlbGF5ID0gTnVtYmVyKG5ldyBEYXRlKCkpIC0gdGltZXN0YW1w
OwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZWxheS1sb2ciKS50ZXh0Q29udGVu
dCA9ICJEZWxheTogIiArIGRlbGF5ICsgIiBtcyI7CiAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICIjMjJGRjIyIjsKICAgIH0KICAgIDwvc2NyaXB0PgoKICAgIDxz
dHlsZT4KICAgIGJvZHkgewogICAgICAgIG1hcmdpbjogMDsKICAgIH0KCiAgICAjdGFyZ2V0LCAj
Z2lhbnQtdGFyZ2V0IHsKICAgICAgICBtYXJnaW46IDEwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1
czogMTBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjJGRjIyOwogICAgICAgIG1hcmdp
bi1ib3R0b206IDEwcHg7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgfQoKICAgICN0YXJn
ZXQgewogICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgfQoK
ICAgICNnaWFudC10YXJnZXQgewogICAgICAgIHdpZHRoOiA4MDBweDsKICAgICAgICBoZWlnaHQ6
IDgwMHB4OwogICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHkgb25sb2FkPSJzZXR1cCgp
Ij4KICAgIDxidXR0b24gaWQ9InRhcmdldCI+Q2xpY2sgY291bnQ6IDA8L2J1dHRvbj4KICAgIDxi
dXR0b24gaWQ9ImdpYW50LXRhcmdldCI+Q2xpY2sgY291bnQ6IDA8L2J1dHRvbj4KICAgIDxoMSBp
ZD0iZGVsYXktbG9nIj5EZWxheTo8L2gxPgo8L2JvZHk+Cgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263340</attachid>
            <date>2015-10-16 15:28:18 -0700</date>
            <delta_ts>2015-10-17 23:48:41 -0700</delta_ts>
            <desc>work in progress v1</desc>
            <filename>bug-150248-20151016152739.patch</filename>
            <type>text/plain</type>
            <size>31324</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDIyYTFhZGM3OGFhMDMy
ZWI0ODkwMzM1ZTM0MGFkZTZmM2U3ZTZjYi4uZTBmNTViYjUzM2RhNzg3ZGJlZTAwZjE4MWFmMzY2
NzQ1ZmZhMTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTEwLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBmYXN0
LWNsaWNraW5nIGJlaGF2aW9yIHRvIHRyaWdnZXIgb24gZWxlbWVudHMgdGhhdCBoYXZlIG5lZ2xp
Z2libGUgem9vbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwMjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9kaWRDb21taXRMYXllclRyZWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udGVu
dFpvb21TY2FsZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3RhcmdldENvbnRlbnRab29tU2Nh
bGVGb3JSZWN0OmN1cnJlbnRTY2FsZTpmaXRFbnRpcmVSZWN0Om1pbmltdW1TY2FsZTptYXhpbXVt
U2NhbGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfem9vbVRvUmVjdDp3aXRoT3JpZ2luOmZp
dEVudGlyZVJlY3Q6bWluaW11bVNjYWxlOm1heGltdW1TY2FsZTptaW5pbXVtU2Nyb2xsRGlzdGFu
Y2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYWxsb3dEb3VibGVUYXBUb1pvb21Gb3Jab29t
aW5nUGFyYW1ldGVyczppc1JlcGxhY2VkOm1pbmltdW1TY2FsZTptYXhpbXVtU2NhbGU6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfdmlld3BvcnRJc1VzZXJTY2FsYWJsZV0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlz
YWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6YWRqdXN0U21hcnRN
YWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXMpOgorICAgICAgICAoV2ViS2l0OjpT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlcjo6bWFnbmlmeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkR2V0VGFwSGlnaGxp
Z2h0Rm9yUmVxdWVzdDpjb2xvcjpxdWFkczp0b3BMZWZ0UmFkaXVzOnRvcFJpZ2h0UmFkaXVzOmJv
dHRvbUxlZnRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXM6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2FsbG93RG91YmxlVGFwVG9ab29tRm9yQ3VycmVudFpvb21TY2FsZTphbmRUYXJnZXRa
b29tU2NhbGU6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNzYXJ5OmFsbG93c0RvdWJsZVRhcFpvb206
dGFyZ2V0UmVjdDppc1JlcGxhY2VkOm1pbmltdW1TY2FsZTptYXhpbXVtU2NhbGU6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VuZFBvdGVudGlhbFRhcF0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBSZWNvZ25pemVkOl0pOgorICAgICAgICAoY2FuY2VsUG90
ZW50aWFsVGFwSWZOZWNlc3NhcnkpOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVU
YXBDb21taXRlZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNhYmxlRG91YmxlVGFwR2VzdHVy
ZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6Y29tcHV0ZVpvb21JbmZvcm1hdGlvbkZvck5vZGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKToKKwogMjAxNS0xMC0xNSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBpT1MgYnVpbGQuIEFu
ZCBob3BlZnVsbHkgbm90IGJyZWFraW5nIHRoZSBvdGhlciBidWlsZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzdlMjJhYWIwODAy
ODQxZDJkNzNmMDRhMGJjMzQ2MWIyNmM1ODZlYi4uYjYxOTFlZDcxYzFlNDdhMDg5Y2RlYzUwMzgw
NWYwYzZkMGNmMjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTEwMDYsNyArMTAwNiw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExh
eWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJU
cmVlCiAgICAgaWYgKCFsYXllclRyZWVUcmFuc2FjdGlvbi5zY2FsZVdhc1NldEJ5VUlQcm9jZXNz
KCkgJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91
bmNpbmddICYmICFbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nWm9vbV0pCiAgICAgICAgIFtfc2Ny
b2xsVmlldyBzZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFnZVNjYWxlRmFjdG9y
KCldOwogCi0gICAgW19jb250ZW50VmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOltf
c2Nyb2xsVmlldyBpc1pvb21FbmFibGVkXSAmJiBbX3Njcm9sbFZpZXcgbWluaW11bVpvb21TY2Fs
ZV0gPCBbX3Njcm9sbFZpZXcgbWF4aW11bVpvb21TY2FsZV1dOworICAgIFtfY29udGVudFZpZXcg
X3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpzZWxmLl92aWV3cG9ydElzVXNlclNjYWxhYmxl
XTsKIAogICAgIFtzZWxmIF91cGRhdGVTY3JvbGxWaWV3QmFja2dyb3VuZF07CiAKQEAgLTE0MDQs
MTIgKzE0MDQsMTMgQEAgLSAodm9pZClfem9vbVRvRm9jdXNSZWN0OihXZWJDb3JlOjpGbG9hdFJl
Y3QpZm9jdXNlZEVsZW1lbnRSZWN0SW5Eb2N1bWVudENvb3JkaW4KICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcmNlOllFU107CiB9CiAKLS0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZs
b2F0UmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2lu
IGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSlt
aW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3Jv
bGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlCistIChDR0Zsb2F0KV9jb250
ZW50Wm9vbVNjYWxlCiB7Ci0gICAgY29uc3QgZmxvYXQgbWF4aW11bVNjYWxlRmFjdG9yRGVsdGFG
b3JQYW5TY3JvbGwgPSAwLjAyOwotCi0gICAgZG91YmxlIGN1cnJlbnRTY2FsZSA9IGNvbnRlbnRa
b29tU2NhbGUoc2VsZik7CisgICAgcmV0dXJuIGNvbnRlbnRab29tU2NhbGUoc2VsZik7Cit9CiAK
Ky0gKENHRmxvYXQpX3RhcmdldENvbnRlbnRab29tU2NhbGVGb3JSZWN0Oihjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKXRhcmdldFJlY3QgY3VycmVudFNjYWxlOihkb3VibGUpY3VycmVudFNjYWxl
IGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSlt
aW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlCit7CiAgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIHVub2JzY3VyZWRDb250ZW50U2l6ZShbc2VsZiBfY29udGVudFJlY3RG
b3JVc2VySW50ZXJhY3Rpb25dLnNpemUpOwogICAgIGRvdWJsZSBob3Jpem9udGFsU2NhbGUgPSB1
bm9ic2N1cmVkQ29udGVudFNpemUud2lkdGgoKSAqIGN1cnJlbnRTY2FsZSAvIHRhcmdldFJlY3Qu
d2lkdGgoKTsKICAgICBkb3VibGUgdmVydGljYWxTY2FsZSA9IHVub2JzY3VyZWRDb250ZW50U2l6
ZS5oZWlnaHQoKSAqIGN1cnJlbnRTY2FsZSAvIHRhcmdldFJlY3QuaGVpZ2h0KCk7CkBAIC0xNDE3
LDcgKzE0MTgsMTYgQEAgLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRh
cmdldFJlY3Qgd2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2kKICAgICBob3Jpem9udGFsU2Nh
bGUgPSBzdGQ6Om1pbihzdGQ6Om1heChob3Jpem9udGFsU2NhbGUsIG1pbmltdW1TY2FsZSksIG1h
eGltdW1TY2FsZSk7CiAgICAgdmVydGljYWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KHZlcnRp
Y2FsU2NhbGUsIG1pbmltdW1TY2FsZSksIG1heGltdW1TY2FsZSk7CiAKLSAgICBkb3VibGUgdGFy
Z2V0U2NhbGUgPSBmaXRFbnRpcmVSZWN0ID8gc3RkOjptaW4oaG9yaXpvbnRhbFNjYWxlLCB2ZXJ0
aWNhbFNjYWxlKSA6IGhvcml6b250YWxTY2FsZTsKKyAgICByZXR1cm4gZml0RW50aXJlUmVjdCA/
IHN0ZDo6bWluKGhvcml6b250YWxTY2FsZSwgdmVydGljYWxTY2FsZSkgOiBob3Jpem9udGFsU2Nh
bGU7Cit9CisKKy0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRS
ZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6
KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlCit7CisgICAgY29uc3QgZmxvYXQgbWF4aW11bVNjYWxl
RmFjdG9yRGVsdGFGb3JQYW5TY3JvbGwgPSAwLjAyOworCisgICAgZG91YmxlIGN1cnJlbnRTY2Fs
ZSA9IGNvbnRlbnRab29tU2NhbGUoc2VsZik7CisgICAgZG91YmxlIHRhcmdldFNjYWxlID0gW3Nl
bGYgX3RhcmdldENvbnRlbnRab29tU2NhbGVGb3JSZWN0OnRhcmdldFJlY3QgY3VycmVudFNjYWxl
OmN1cnJlbnRTY2FsZSBmaXRFbnRpcmVSZWN0OmZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOm1p
bmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlXTsKKwogICAgIGlmIChmYWJzKHRh
cmdldFNjYWxlIC0gY3VycmVudFNjYWxlKSA8IG1heGltdW1TY2FsZUZhY3RvckRlbHRhRm9yUGFu
U2Nyb2xsKSB7CiAgICAgICAgIGlmIChbc2VsZiBfc2Nyb2xsVG9SZWN0OnRhcmdldFJlY3Qgb3Jp
Z2luOm9yaWdpbiBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6bWluaW11bVNjcm9sbERpc3RhbmNlXSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTgzNCw2ICsxODQ0LDE1IEBAIC0gKHZvaWQp
X25hdmlnYXRpb25HZXN0dXJlRGlkRW5kCiAgICAgX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVj
dCA9IE51bGxvcHQ7CiB9CiAKKy0gKEJPT0wpX2FsbG93RG91YmxlVGFwVG9ab29tRm9yWm9vbWlu
Z1BhcmFtZXRlcnM6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IGlzUmVwbGFjZWQ6KEJP
T0wpaXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1h
eGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZQoreworICAgIFVOVVNFRF9QQVJBTSh0YXJn
ZXRSZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oaXNSZXBsYWNlZEVsZW1lbnQpOworICAgIFVOVVNF
RF9QQVJBTShtaW5pbXVtU2NhbGUpOworICAgIFVOVVNFRF9QQVJBTShtYXhpbXVtU2NhbGUpOwor
ICAgIHJldHVybiBZRVM7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICNwcmFnbWEg
bWFyayBPUyBYLXNwZWNpZmljIG1ldGhvZHMKQEAgLTMwNDUsNiArMzA2NCwxMSBAQCAtIChDR0Zs
b2F0KV92aWV3cG9ydE1ldGFUYWdXaWR0aAogICAgIHJldHVybiBfdmlld3BvcnRNZXRhVGFnV2lk
dGg7CiB9CiAKKy0gKEJPT0wpX3ZpZXdwb3J0SXNVc2VyU2NhbGFibGUKK3sKKyAgICByZXR1cm4g
W19zY3JvbGxWaWV3IGlzWm9vbUVuYWJsZWRdICYmIFtfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNj
YWxlXSA8IFtfc2Nyb2xsVmlldyBtYXhpbXVtWm9vbVNjYWxlXTsKK30KKwogLSAoX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcmludEZvcm1hdHRlcgogewogICAgIFVJVmlld1By
aW50Rm9ybWF0dGVyICp2aWV3UHJpbnRGb3JtYXR0ZXIgPSBzZWxmLnZpZXdQcmludEZvcm1hdHRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAppbmRleCBkMmRlZjIzZmQ1MjA5ZDQ5OTQwYWFiNGFlZTg5NTgwNTNmNDJk
NDgyLi4zOWI2OWFjM2ZiZGU1ZWM2YzJlNGU1YTcyM2UxZWYzNWQ2ZWUzZDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC0xMDksNiArMTA5LDEwIEBAIHN0cnVjdCBQcmludEluZm87CiAtICh2b2lkKV9uYXZp
Z2F0aW9uR2VzdHVyZURpZEJlZ2luOwogLSAodm9pZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQ7
CiAKKy0gKENHRmxvYXQpX2NvbnRlbnRab29tU2NhbGU7CistIChDR0Zsb2F0KV90YXJnZXRDb250
ZW50Wm9vbVNjYWxlRm9yUmVjdDooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jil0YXJnZXRSZWN0
IGN1cnJlbnRTY2FsZTooZG91YmxlKWN1cnJlbnRTY2FsZSBmaXRFbnRpcmVSZWN0OihCT09MKWZp
dEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1TY2Fs
ZTooZG91YmxlKW1heGltdW1TY2FsZTsKKy0gKEJPT0wpX2FsbG93RG91YmxlVGFwVG9ab29tRm9y
Wm9vbWluZ1BhcmFtZXRlcnM6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IGlzUmVwbGFj
ZWQ6KEJPT0wpaXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNj
YWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZTsKKwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX2NvbXB1dGVkQ29udGVudEluc2V0OwogI2Vs
c2UKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNOb25XaGVlbEV2ZW50
czopIEJPT0wgX2lnbm9yZXNOb25XaGVlbEV2ZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmZlZTg4ODRm
ZjFkMWE4M2Y5ZmE1MjBjNDYxNGQ5ZWY2YjA0MWY1ZS4uYTZlOTE5NWMyNzgzNjVlOWYwZDg2YzRh
YzVkMzY0OTY0MTU1ZDQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiAKIC8vIFRoZSB2
aWV3cG9ydCBtZXRhIHRhZyB3aWR0aCBpcyBuZWdhdGl2ZSBpZiB0aGUgdmFsdWUgaXMgbm90IGRl
ZmluZWQuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHRmxvYXQgX3ZpZXdwb3J0
TWV0YVRhZ1dpZHRoOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF92aWV3
cG9ydElzVXNlclNjYWxhYmxlOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlciAqX3dlYlZpZXdQcmludEZvcm1hdHRlcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOTk1MWI3Y2YxZDhhMDA4N2NlODBmZjQw
ZjAxZjM2MjI3ODQ2MGJjMi4uNTA4NDAzNzg0ZGZiMWYxM2RlMzJlMzlmODkyMDFhNDQ1Y2E2ZDRh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yOTEsNiArMjkxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9v
bCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJsZSBtaW5p
bXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3NhcnkodWlu
dDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93c0RvdWJsZVRhcFpvb20sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgZG91YmxlIG1p
bmltdW1TY2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgZG91Ymxl
IG1pbmltdW1ab29tU2NhbGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3QgZG9jdW1lbnRSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvdmVyZmxv
d1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU4ZmJjYjE5ODdhMDBlZTFkNmVhMjE5ODAzM2FhOWZl
ZmZhYjc2YmUuLjQ5NzhlNzI1YjZiNWY1NTFiYmQwNDdiZGY2MTRhZDA4OWQ4MTdmYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwNyw2ICs1MDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRp
ZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lk
IHZpZXdwb3J0TWV0YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIGRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNzYXJ5KHVpbnQ2
NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd3NEb3VibGVUYXBab29tLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGRvdWJsZSBtaW5p
bXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOwogICAgIHZvaWQgZGlkRmluaXNoRHJhd2lu
Z1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBjb250ZW50
U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7
CiAgICAgdm9pZCBnZXRMb29rdXBDb250ZXh0QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggOTJlNTQ4MzkzNmE3NzQ2Y2UyNGM5YmNmMmY2ZmJjMGI4MWMxYjQxNC4uNTE3
MWMzYzhmY2EyMjk4NmQxM2Q3MGZlNzM5ZTFmMWE5NGEzOGJlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xODgsNiArMTg4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDb21taXRQb3RlbnRpYWxUYXBG
YWlsZWQoKQogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQpCiAgICAgVmlld3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCisgICAg
RGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3NhcnkodWlu
dDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93c0RvdWJsZVRhcFpvb20sIFdlYkNvcmU6OkZsb2F0
UmVjdCB0YXJnZXRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBkb3VibGUgbWluaW11bVNj
YWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKQogICAgIERpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERG
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmlu
ZGV4IDEyM2QzNjdlYTIwOGNmMGEwNWU3ZGY5ZjJjODcxMDEwODdmODM1YWUuLjkzNTBjYTQ2MjZm
MTY0NmQ2ODgzNzU1ZmM2MjlhOWRkMmEzMjZkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
Vmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeSh1aW50
NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dzRG91YmxlVGFwWm9vbSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBkb3VibGUgbWlu
aW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGRv
dWJsZSBtaW5pbXVtWm9vbVNjYWxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpGbG9hdFJlY3QgZG9jdW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGQ3
NmY5NDE2NmU0ZmYwYWE4ZDkxOGQ0YTQzMWM3ZjlhNDViNmQzZGQuLjQ3ZTQ2ODBmZjNkZTg3NWM4
MzNlYjc2OTMzZjc3Mjk2MTJlYjg0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjU5LDYgKzI1OSwxNCBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0aChmbG9hdCBuZXdXaWR0
aCkKICAgICBbbV93ZWJWaWV3IF9zZXRWaWV3cG9ydE1ldGFUYWdXaWR0aDpuZXdXaWR0aF07CiB9
CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFw
SXNGaW5pc2hlZElmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd3NEb3Vi
bGVUYXBab29tLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGJvb2wgaXNS
ZXBsYWNlZEVsZW1lbnQsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUp
Cit7CisgICAgaWYgKCFtX3dlYlZpZXcuX3ZpZXdwb3J0SXNVc2VyU2NhbGFibGUpCisgICAgICAg
IHJldHVybjsKKworICAgIFttX2NvbnRlbnRWaWV3IF9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNV
bnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeTpyZXF1ZXN0SUQgYWxsb3dzRG91YmxlVGFwWm9v
bTphbGxvd3NEb3VibGVUYXBab29tIHRhcmdldFJlY3Q6dGFyZ2V0UmVjdCBpc1JlcGxhY2VkOmlz
UmVwbGFjZWRFbGVtZW50IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1h
eGltdW1TY2FsZV07Cit9CisKIGRvdWJsZSBQYWdlQ2xpZW50SW1wbDo6bWluaW11bVpvb21TY2Fs
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKFVJU2Nyb2xsVmlldyAqc2Nyb2xsZXIgPSBbbV93ZWJWaWV3
IHNjcm9sbFZpZXddKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9T
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA2MGNhNWQ0MjEyMjEzZGQ0
NTE0M2NhOGFlZTU2YmJlZjQwMDFiN2EyLi5iNzY1YTBhMzNlNzM4ZmI1ZDM5MDFlMzk4MmE5ZDgz
NGY0YmI0YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pOwogICAgIHZvaWQgaGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2Vz
dHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisgICAgdm9pZCBhZGp1c3RTbWFydE1h
Z25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyhib29sIGFkZE1hZ25pZmljYXRpb25Q
YWRkaW5nLCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGRvdWJsZSYgbWluaW11bVNj
YWxlLCBkb3VibGUmIG1heGltdW1TY2FsZSk7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Nt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZjZjZDE2Y2M3MDY5NGM3
NjczODQ2ZDMzYjhiZWI1NTU5ZDFmMDUzNy4uNDEwYjgyMzk1N2ZiODM5MTAwZDZhODk4Mjk4NmJi
YzZlNzMzOTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQpAQCAtNzgsNiArNzgsMTcgQEAg
dm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpoYW5kbGVSZXNldE1hZ25pZmljYXRp
b25HZXN0dXJlKEZsb2F0UG9pbnQgb3IKICAgICBbbV9jb250ZW50VmlldyBfem9vbU91dFdpdGhP
cmlnaW46b3JpZ2luXTsKIH0KIAordm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjph
ZGp1c3RTbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyhib29sIGFkZE1h
Z25pZmljYXRpb25QYWRkaW5nLCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGRvdWJs
ZSYgbWluaW11bVNjYWxlLCBkb3VibGUmIG1heGltdW1TY2FsZSkKK3sKKyAgICBpZiAoYWRkTWFn
bmlmaWNhdGlvblBhZGRpbmcpIHsKKyAgICAgICAgdGFyZ2V0UmVjdC5pbmZsYXRlWChzbWFydE1h
Z25pZmljYXRpb25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3Qud2lkdGgoKSk7CisgICAgICAg
IHRhcmdldFJlY3QuaW5mbGF0ZVkoc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0
YXJnZXRSZWN0LmhlaWdodCgpKTsKKyAgICB9CisKKyAgICBtaW5pbXVtU2NhbGUgPSBzdGQ6Om1h
eChtaW5pbXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmltdW1TY2FsZSk7CisgICAgbWF4
aW11bVNjYWxlID0gc3RkOjptaW4obWF4aW11bVNjYWxlLCBzbWFydE1hZ25pZmljYXRpb25NYXhp
bXVtU2NhbGUpOworfQorCiB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmln
aW4sIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBi
b29sIGlzUmVwbGFjZWRFbGVtZW50LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJs
ZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkp
IHsKQEAgLTg1LDE0ICs5Niw5IEBAIHZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6
ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyCiAgICAgICAgIFtt
X2NvbnRlbnRWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpvcmlnaW5dOwogICAgICAgICByZXR1cm47
CiAgICAgfQotCi0gICAgaWYgKCFpc1JlcGxhY2VkRWxlbWVudCkgewotICAgICAgICB0YXJnZXRS
ZWN0LmluZmxhdGVYKHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nICogdGFyZ2V0UmVj
dC53aWR0aCgpKTsKLSAgICAgICAgdGFyZ2V0UmVjdC5pbmZsYXRlWShzbWFydE1hZ25pZmljYXRp
b25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3QuaGVpZ2h0KCkpOwotICAgIH0KLQotICAgIGRv
dWJsZSBtYXhpbXVtU2NhbGUgPSBzdGQ6Om1pbih2aWV3cG9ydE1heGltdW1TY2FsZSwgc21hcnRN
YWduaWZpY2F0aW9uTWF4aW11bVNjYWxlKTsKLSAgICBkb3VibGUgbWluaW11bVNjYWxlID0gc3Rk
OjptYXgodmlld3BvcnRNaW5pbXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmltdW1TY2Fs
ZSk7CisgICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IHZpZXdwb3J0TWluaW11bVNjYWxlOworICAg
IGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB2aWV3cG9ydE1heGltdW1TY2FsZTsKKyAgICBhZGp1c3RT
bWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxlcyghaXNSZXBsYWNlZEVsZW1l
bnQsIHRhcmdldFJlY3QsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKTsKIAogICAgIC8vIEZJ
WE1FOiBDaGVjayBpZiB0ZXh0IHNlbGVjdGlvbiB3YW50cyB0byBjb25zdW1lIHRoZSBkb3VibGUg
dGFwIGJlZm9yZSB3ZSBhdHRlbXB0IG1hZ25pZmljYXRpb24uCiAKQEAgLTExOCwxMiArMTI0LDkg
QEAgdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXIKIAogdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyOjptYWduaWZ5KEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFyZ2V0UmVjdCwg
RmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxl
LCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCiB7Ci0gICAgdGFyZ2V0UmVjdC5pbmZsYXRl
WChzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3Qud2lkdGgoKSk7
Ci0gICAgdGFyZ2V0UmVjdC5pbmZsYXRlWShzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGlu
ZyAqIHRhcmdldFJlY3QuaGVpZ2h0KCkpOwotCi0gICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHN0
ZDo6bWluKHZpZXdwb3J0TWF4aW11bVNjYWxlLCBzbWFydE1hZ25pZmljYXRpb25NYXhpbXVtU2Nh
bGUpOwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSBzdGQ6Om1heCh2aWV3cG9ydE1pbmltdW1T
Y2FsZSwgc21hcnRNYWduaWZpY2F0aW9uTWluaW11bVNjYWxlKTsKLQorICAgIGRvdWJsZSBtYXhp
bXVtU2NhbGUgPSB2aWV3cG9ydE1heGltdW1TY2FsZTsKKyAgICBkb3VibGUgbWluaW11bVNjYWxl
ID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7CisgICAgYWRqdXN0U21hcnRNYWduaWZpY2F0aW9uVGFy
Z2V0UmVjdEFuZFpvb21TY2FsZXModHJ1ZSwgdGFyZ2V0UmVjdCwgbWluaW11bVNjYWxlLCBtYXhp
bXVtU2NhbGUpOwogICAgIFttX2NvbnRlbnRWaWV3IF96b29tVG9SZWN0OnRhcmdldFJlY3Qgd2l0
aE9yaWdpbjpvcmlnaW4gZml0RW50aXJlUmVjdDpOTyBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxl
IG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOjBdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCA0OWI0MTljZGZmOTQ2MDNhMGY4YjY2YWM4ZmYzMzhhOGY3MzFk
ZTVmLi44MTg4MzQ5MzczN2YxOTI1ZTk3OTdjMDYyMGRlYWMxZWYxN2NlY2I5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewog
CiAgICAgaWQgPFVJVGV4dElucHV0RGVsZWdhdGU+IF9pbnB1dERlbGVnYXRlOwogCi0gICAgdWlu
dDY0X3QgX2xhdGVzdFRhcEhpZ2hsaWdodElEOworICAgIHVpbnQ2NF90IF9sYXRlc3RUYXBJRDsK
ICAgICBzdHJ1Y3QgVGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24gewogICAgICAgICBXZWJDb3JlOjpD
b2xvciBjb2xvcjsKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4gcXVhZHM7CkBA
IC0xODEsNyArMTgxLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICNlbmRpZgog
LSAodm9pZClfY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkOwogLSAodm9pZClfZGlkR2V0VGFwSGln
aGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+Jilo
aWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRv
cExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJp
Z2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRv
bUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJv
dHRvbVJpZ2h0UmFkaXVzOwotCistICh2b2lkKV9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRp
bFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeToodWludDY0X3QpcmVxdWVzdElEIGFsbG93c0RvdWJs
ZVRhcFpvb206KGJvb2wpYWxsb3dzRG91YmxlVGFwWm9vbSB0YXJnZXRSZWN0OihXZWJDb3JlOjpG
bG9hdFJlY3QpdGFyZ2V0UmVjdCBpc1JlcGxhY2VkOihCT09MKWlzUmVwbGFjZWRFbGVtZW50IG1p
bmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhp
bXVtU2NhbGU7CiAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09M
KXVzZXJJc0ludGVyYWN0aW5nIGJsdXJQcmV2aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9k
ZSB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIC0g
KHZvaWQpX3N0b3BBc3Npc3RpbmdOb2RlOwogLSAodm9pZClfc2VsZWN0aW9uQ2hhbmdlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggYzkxZDIyOGE4NDY4ZWE2MTFjMzk5N2Y2YjMzYzUwYWU0MTcwMWQ5
NC4uN2QyMmM0Y2ZhN2RhN2I4ZmRjZDllNzNlNzk1ZGM4MDY4NTY5ZjM3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTczOCw3ICs3MzgsNyBAQCAtICh2b2lkKV9zaG93VGFwSGlnaGxpZ2h0CiAKIC0g
KHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBj
b2xvcjooY29uc3QgV2ViQ29yZTo6Q29sb3ImKWNvbG9yIHF1YWRzOihjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdodFJhZGl1cwogewotICAgIGlmICghX2lzVGFwSGln
aGxpZ2h0SURWYWxpZCB8fCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgIT0gcmVxdWVzdElEKQorICAg
IGlmICghX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCB8fCBfbGF0ZXN0VGFwSUQgIT0gcmVxdWVzdElE
KQogICAgICAgICByZXR1cm47CiAKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gTk87CkBA
IC03NTgsNiArNzU4LDMyIEBAIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6
KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2ViQ29yZTo6CiAgICAgW3NlbGYgX3No
b3dUYXBIaWdobGlnaHRdOwogfQogCistIChCT09MKV9hbGxvd0RvdWJsZVRhcFRvWm9vbUZvckN1
cnJlbnRab29tU2NhbGU6KENHRmxvYXQpY3VycmVudFpvb21TY2FsZSBhbmRUYXJnZXRab29tU2Nh
bGU6KENHRmxvYXQpdGFyZ2V0Wm9vbVNjYWxlCit7CisgICAgY29uc3QgQ0dGbG9hdCBtaW5pbXVt
Wm9vbVJhdGlvRm9yRG91YmxlVGFwVG9ab29tSW4gPSAxLjI7CisgICAgY29uc3QgQ0dGbG9hdCBt
YXhpbXVtWm9vbVJhdGlvRm9yRG91YmxlVGFwVG9ab29tT3V0ID0gMC44MzM7CisgICAgQ0dGbG9h
dCB6b29tUmF0aW8gPSB0YXJnZXRab29tU2NhbGUgLyBjdXJyZW50Wm9vbVNjYWxlOworICAgIFdU
RkxvZ0Fsd2F5cygiWm9vbWluZyB3b3VsZCB0YWtlIHVzIGZyb20gJS4zZiAtPiAlLjNmIiwgY3Vy
cmVudFpvb21TY2FsZSwgdGFyZ2V0Wm9vbVNjYWxlKTsKKyAgICByZXR1cm4gem9vbVJhdGlvIDwg
bWF4aW11bVpvb21SYXRpb0ZvckRvdWJsZVRhcFRvWm9vbU91dCB8fCB6b29tUmF0aW8gPiBtaW5p
bXVtWm9vbVJhdGlvRm9yRG91YmxlVGFwVG9ab29tSW47Cit9CisKKy0gKHZvaWQpX2Rpc2FibGVE
b3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNzYXJ5Oih1aW50NjRfdCly
ZXF1ZXN0SUQgYWxsb3dzRG91YmxlVGFwWm9vbTooYm9vbClhbGxvd3NEb3VibGVUYXBab29tIHRh
cmdldFJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IGlzUmVwbGFjZWQ6KEJPT0wp
aXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGlt
dW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZQoreworICAgIGlmICghX3BvdGVudGlhbFRhcElu
UHJvZ3Jlc3MgfHwgX2xhdGVzdFRhcElEICE9IHJlcXVlc3RJRCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGFsbG93c0RvdWJsZVRhcFpvb20pIHsKKyAgICAgICAgLy8gVGhvdWdoIHRoZSBl
bGVtZW50IGFsbG93cyB1cyB0byB6b29tIGluIG9uIGRvdWJsZSB0YXAsIHdlIGF2b2lkIHRoaXMg
YmVoYXZpb3IgaW4gZmF2b3Igb2YgZmFzdCBjbGlja2luZyBpZiB0aGUgZGlmZmVyZW5jZSBpbiBz
Y2FsZSBpcyBpbnNpZ25pZmljYW50LgorICAgICAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci0+YWRqdXN0U21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXMoIWlz
UmVwbGFjZWRFbGVtZW50LCB0YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZSk7
CisgICAgICAgIENHRmxvYXQgY3VycmVudFpvb21TY2FsZSA9IFtfd2ViVmlldyBfY29udGVudFpv
b21TY2FsZV07CisgICAgICAgIENHRmxvYXQgdGFyZ2V0Wm9vbVNjYWxlID0gW193ZWJWaWV3IF90
YXJnZXRDb250ZW50Wm9vbVNjYWxlRm9yUmVjdDp0YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpjdXJy
ZW50Wm9vbVNjYWxlIGZpdEVudGlyZVJlY3Q6aXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNjYWxl
Om1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlXTsKKyAgICAgICAgaWYgKFtz
ZWxmIF9hbGxvd0RvdWJsZVRhcFRvWm9vbUZvckN1cnJlbnRab29tU2NhbGU6Y3VycmVudFpvb21T
Y2FsZSBhbmRUYXJnZXRab29tU2NhbGU6dGFyZ2V0Wm9vbVNjYWxlXSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5P
XTsKK30KKwogLSAodm9pZClfY2FuY2VsTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKIHsKICAg
ICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGNhbmNlbF07CkBAIC0xMDYy
LDcgKzEwODgsNyBAQCAtICh2b2lkKV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihVSUxv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlYwogICAgIGNhc2UgVUlHZXN0dXJl
UmVjb2duaXplclN0YXRlQmVnYW46CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGlj
ayA9IFlFUzsKICAgICAgICAgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnkoc2VsZik7Ci0g
ICAgICAgIF9wYWdlLT50YXBIaWdobGlnaHRBdFBvc2l0aW9uKFtnZXN0dXJlUmVjb2duaXplciBz
dGFydFBvaW50XSwgKytfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQpOworICAgICAgICBfcGFnZS0+dGFw
SGlnaGxpZ2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQb2ludF0sICsrX2xh
dGVzdFRhcElEKTsKICAgICAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKQEAgLTEw
OTcsMTIgKzExMjMsMjAgQEAgLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgfQogfQogCistICh2
b2lkKV9lbmRQb3RlbnRpYWxUYXAKK3sKKyAgICBpZiAoX3dlYlZpZXcuX3ZpZXdwb3J0SXNVc2Vy
U2NhbGFibGUpCisgICAgICAgIFtzZWxmIF9zZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6WUVT
XTsKKworICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87Cit9CisKIC0gKHZvaWQpX3Np
bmdsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfc2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIpOwogICAgIEFTU0VSVCghX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MpOwogCi0g
ICAgX3BhZ2UtPnBvdGVudGlhbFRhcEF0UG9zaXRpb24oZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRp
b24sICsrX2xhdGVzdFRhcEhpZ2hsaWdodElEKTsKKyAgICBfcGFnZS0+cG90ZW50aWFsVGFwQXRQ
b3NpdGlvbihnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiwgKytfbGF0ZXN0VGFwSUQpOwogICAg
IF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gWUVTOwogICAgIF9pc1RhcEhpZ2hsaWdodElEVmFs
aWQgPSBZRVM7CiB9CkBAIC0xMTEwLDcgKzExNDQsNyBAQCAtICh2b2lkKV9zaW5nbGVUYXBSZWNv
Z25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHN0YXRp
YyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRl
bnRWaWV3KQogewogICAgIGlmIChjb250ZW50Vmlldy0+X3BvdGVudGlhbFRhcEluUHJvZ3Jlc3Mp
IHsKLSAgICAgICAgY29udGVudFZpZXctPl9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87Cisg
ICAgICAgIFtjb250ZW50VmlldyBfZW5kUG90ZW50aWFsVGFwXTsKICAgICAgICAgW2NvbnRlbnRW
aWV3IF9jYW5jZWxJbnRlcmFjdGlvbl07CiAgICAgICAgIGNvbnRlbnRWaWV3LT5fcGFnZS0+Y2Fu
Y2VsUG90ZW50aWFsVGFwKCk7CiAgICAgfQpAQCAtMTE0OSw3ICsxMTgzLDcgQEAgLSAodm9pZClf
c2luZ2xlVGFwQ29tbWl0ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aXplcgogCiAgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIu
bG9jYXRpb247CiAKLSAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POworICAgIFtzZWxm
IF9lbmRQb3RlbnRpYWxUYXBdOwogCiAgICAgaWYgKF9oYXNUYXBIaWdobGlnaHRGb3JQb3RlbnRp
YWxUYXApIHsKICAgICAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwYTMyOWQwOTI4
ODBhYjdiYzhmMjkzODNlODA0YjFmOTI5MGFlNjQ5Li43ZDMwN2NmZTI0OTVkYTUwMzIzM2ZhMjQ5
Y2IzZjllMmI2ZDI3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtOTM3LDYgKzkzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dmlld3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCiAgICAgbV9wYWdlQ2xp
ZW50LmRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVj
ZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd3NEb3VibGVUYXBab29tLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQs
IGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpCit7CisgICAgbV9wYWdl
Q2xpZW50LmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNz
YXJ5KHJlcXVlc3RJRCwgYWxsb3dzRG91YmxlVGFwWm9vbSwgdGFyZ2V0UmVjdCwgaXNSZXBsYWNl
ZEVsZW1lbnQsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKTsKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSkKIHsKICAgICBtX3BhZ2VDbGllbnQuZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9Q
REYocGRmRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggZGY3
MDEzZDJmZjZmMWMwNDZiMjM3Y2YzZTFiZTg3MTRjNzY1NTdhNy4uYjhiNGExN2Q3MWQzNDcwOWVj
N2MzOWEwZTY2MjZjZDBiMGFiZjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcApAQCAtODYsMzkgKzg2LDQ1IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGCiAgICAgSGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChvcmlnaW5JbkNvbnRlbnRz
U3BhY2UpOwogCiAgICAgbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5o
aXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIGhpdFRlc3RSZXN1bHQpOworICAgIE5vZGUqIG5vZGUg
PSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOworICAgIGlmICghbm9kZSkgeworICAgICAgICBk
aXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxv
YXRQb2ludCgpLCBGbG9hdFJlY3QoKSwgRmxvYXRSZWN0KCksIGZhbHNlLCAwLCAwKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaXNSZXBsYWNlZDsKKyAgICBGbG9hdFJlY3Qg
cmVuZGVyUmVjdDsKKyAgICBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGU7CisgICAgZG91Ymxl
IHZpZXdwb3J0TWF4aW11bVNjYWxlOwogCi0gICAgaWYgKE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpKSB7Ci0gICAgICAgIGJvb2wgaXNSZXBsYWNlZDsKLSAgICAgICAgRmxv
YXRSZWN0IHJlbmRlclJlY3QgPSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKLQotICAg
ICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkgewotICAgICAgICAg
ICAgaWYgKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PEltYWdl
RG9jdW1lbnQmPihub2RlLT5kb2N1bWVudCgpKS5pbWFnZUVsZW1lbnQoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChub2RlICE9IGltYWdlRWxlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJSZWN0ID0gaW1hZ2VFbGVtZW50LT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKLSAgICAg
ICAgICAgICAgICAgICAgRmxvYXRQb2ludCBuZXdPcmlnaW4gPSBvcmlnaW47Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChvcmlnaW4ueCgpIDwgcmVuZGVyUmVjdC54KCkgfHwgb3JpZ2luLngoKSA+
IHJlbmRlclJlY3QubWF4WCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3JpZ2luLnNl
dFgocmVuZGVyUmVjdC54KCkgKyByZW5kZXJSZWN0LndpZHRoKCkgLyAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG9yaWdpbi55KCkgPCByZW5kZXJSZWN0LnkoKSB8fCBvcmlnaW4ueSgpID4g
cmVuZGVyUmVjdC5tYXhZKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdPcmlnaW4uc2V0
WShyZW5kZXJSZWN0LnkoKSArIHJlbmRlclJlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgb3JpZ2luID0gbmV3T3JpZ2luOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpc1JlcGxhY2VkID0gdHJ1ZTsKKyAgICBjb21wdXRlWm9vbUluZm9ybWF0aW9uRm9y
Tm9kZShub2RlLCBvcmlnaW4sIHJlbmRlclJlY3QsIGlzUmVwbGFjZWQsIHZpZXdwb3J0TWluaW11
bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisgICAgZGlzcGF0Y2hEaWRDb2xsZWN0R2Vv
bWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiwgcmVuZGVyUmVjdCwgdmlz
aWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkLCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3Bv
cnRNYXhpbXVtU2NhbGUpOworfQorCit2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbXB1dGVab29tSW5mb3JtYXRpb25Gb3JOb2RlKE5vZGUqIG5vZGUsIEZsb2F0UG9pbnQmIG9y
aWdpbiwgRmxvYXRSZWN0JiByZW5kZXJSZWN0LCBib29sJiBpc1JlcGxhY2VkLCBkb3VibGUmIHZp
ZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKQoreworICAg
IHJlbmRlclJlY3QgPSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKyAgICBpZiAobm9k
ZS0+ZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoSFRNTEltYWdl
RWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SW1hZ2VEb2N1bWVudCY+KG5vZGUt
PmRvY3VtZW50KCkpLmltYWdlRWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAobm9kZSAhPSBp
bWFnZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZW5kZXJSZWN0ID0gaW1hZ2VFbGVtZW50
LT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IG5l
d09yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBpZiAob3JpZ2luLngoKSA8IHJlbmRl
clJlY3QueCgpIHx8IG9yaWdpbi54KCkgPiByZW5kZXJSZWN0Lm1heFgoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbmV3T3JpZ2luLnNldFgocmVuZGVyUmVjdC54KCkgKyByZW5kZXJSZWN0LndpZHRo
KCkgLyAyKTsKKyAgICAgICAgICAgICAgICBpZiAob3JpZ2luLnkoKSA8IHJlbmRlclJlY3QueSgp
IHx8IG9yaWdpbi55KCkgPiByZW5kZXJSZWN0Lm1heFkoKSkKKyAgICAgICAgICAgICAgICAgICAg
bmV3T3JpZ2luLnNldFkocmVuZGVyUmVjdC55KCkgKyByZW5kZXJSZWN0LmhlaWdodCgpIC8gMik7
CisgICAgICAgICAgICAgICAgb3JpZ2luID0gbmV3T3JpZ2luOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaXNSZXBsYWNlZCA9IHRydWU7CiAgICAgICAgIH0KLQorICAgIH0KICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IDA7Ci0gICAg
ICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCk7CisgICAgdmlld3BvcnRNaW5pbXVtU2NhbGUgPSAwOworICAgIHZpZXdwb3J0
TWF4aW11bVNjYWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKICNlbHNl
Ci0gICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IG1fd2ViUGFnZS5taW5pbXVt
UGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSA9
IG1fd2ViUGFnZS5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgdmlld3BvcnRNaW5pbXVt
U2NhbGUgPSBtX3dlYlBhZ2UubWluaW11bVBhZ2VTY2FsZUZhY3RvcigpOworICAgIHZpZXdwb3J0
TWF4aW11bVNjYWxlID0gbV93ZWJQYWdlLm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICNlbmRp
ZgotCi0gICAgICAgIGRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBs
YWNlZCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50KCksIEZsb2F0UmVjdCgpLCBGbG9hdFJl
Y3QoKSwgZmFsc2UsIDAsIDApOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggN2FiMDE5OTY2ODVkMzg0NDMyODU5NzBlZTM4ZDZjMTc4
MTRiYzY2MS4uZGIxOGUyZjllOWNmOWQ5NjM4NzEyZTM3ODQ5YzI1ZGYwZGMyZGM3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgTm9k
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICB+Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigpOwogCiAgICAgdm9pZCBtYWluRnJhbWVE
aWRMYXlvdXQoKTsKKyAgICB2b2lkIGNvbXB1dGVab29tSW5mb3JtYXRpb25Gb3JOb2RlKFdlYkNv
cmU6Ok5vZGUqLCBXZWJDb3JlOjpGbG9hdFBvaW50JiBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVj
dCYgcmVuZGVyUmVjdCwgYm9vbCYgaXNSZXBsYWNlZCwgZG91YmxlJiB2aWV3cG9ydE1pbmltdW1T
Y2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMmRjYWZlMWQzYzAzNDVjZTRmNmM5OTZm
MjBmN2Q0MDdiZTc4ZTA1MS4uY2JjYmMxODRhNzBjNDM5NDgzODQ4ZTE1ODcxMzljYTI3MGYwYzJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtNjYyLDYgKzY2MiwxNiBAQCB2b2lkIFdlYlBhZ2U6OnBvdGVudGlhbFRh
cEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaQog
ewogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3Bv
bmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3BvdGVudGlhbFRhcExvY2F0aW9uKTsKICAg
ICBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNzYXJ5KHJlcXVlc3RJRCwgbV9wb3RlbnRp
YWxUYXBOb2RlLmdldCgpKTsKKyAgICBpZiAobV9wb3RlbnRpYWxUYXBOb2RlKSB7CisgICAgICAg
IEZsb2F0UG9pbnQgb3JpZ2luID0gcG9zaXRpb247CisgICAgICAgIEZsb2F0UmVjdCByZW5kZXJS
ZWN0OworICAgICAgICBib29sIGlzUmVwbGFjZWQ7CisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1p
bmltdW1TY2FsZTsKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlOworCisgICAg
ICAgIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jb21wdXRlWm9vbUluZm9ybWF0aW9u
Rm9yTm9kZShtX3BvdGVudGlhbFRhcE5vZGUuZ2V0KCksIG9yaWdpbiwgcmVuZGVyUmVjdCwgaXNS
ZXBsYWNlZCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNhYmxlRG91YmxlVGFwR2VzdHVy
ZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIHRydWUsIHJlbmRlclJl
Y3QsIGlzUmVwbGFjZWQsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2Fs
ZSkpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlOjpjb21taXRQb3RlbnRpYWxUYXAodWludDY0
X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263412</attachid>
            <date>2015-10-17 23:48:45 -0700</date>
            <delta_ts>2015-10-19 11:14:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150248-20151017234805.patch</filename>
            <type>text/plain</type>
            <size>32350</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTA3ZWQ5ODIwODkxZDc3
ZDA0MzZiYWUyZDgwNmViNTVhMmViNDY4Ni4uMjUxZmZkOWRlZWQ4YTU5NGVkYjYwNmIzN2Y4ODgw
YzU1NDlkNTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE1LTEwLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBmYXN0
LWNsaWNraW5nIGJlaGF2aW9yIHRvIHRyaWdnZXIgb24gZWxlbWVudHMgdGhhdCBoYXZlIG5lZ2xp
Z2libGUgem9vbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzE0MDA2OT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIGZhc3QtY2xp
Y2tpbmcgb25seSB0cmlnZ2VycyBvbiBwYWdlcyB0aGF0IGhhdmUgdW5zY2FsYWJsZSB2aWV3cG9y
dHMuIFRvIGFsbG93IG1vcmUgd2Vic2l0ZXMgdG8gYmVuZWZpdCBmcm9tIGZhc3QtY2xpY2tpbmcK
KyAgICAgICAgYmVoYXZpb3IsIHdlIGdlbmVyYWxpemUgZmFzdC1jbGlja2luZyB0byBhbHNvIG9j
Y3VyIHdoZW4gdGFwcGluZyBvbiBlbGVtZW50cyBmb3Igd2hpY2ggZG91YmxlLXRhcC10by16b29t
IHdvdWxkIHpvb20gdGhlIGVsZW1lbnQgaW4KKyAgICAgICAgb3Igb3V0IGJ5IGFuIGluc2lnbmlm
aWNhbnQgYW1vdW50LiBXZSBkZWZpbmUgYW4gaW5zaWduaWZpY2FudCBhbW91bnQgb2Ygem9vbSB0
byBtZWFuIHRoYXQgem9vbWluZyB3b3VsZCBpbmNyZWFzZSB0aGUgdmlld3BvcnQgc2NhbGUKKyAg
ICAgICAgYnkgbGVzcyB0aGFuIGEgY29uZmlndXJhYmxlIHRocmVzaG9sZCwgb3IgZGVjcmVhc2Ug
dGhlIHZpZXdwb3J0IHNjYWxlIGJ5IG1vcmUgdGhhbiBhIGNvbmZpZ3VyYWJsZSB0aHJlc2hvbGQu
IFdlIGFjY29tcGxpc2ggdGhpcyBieQorICAgICAgICB0ZW1wb3JhcmlseSBkaXNhYmxpbmcgdGhl
IGRvdWJsZSB0YXAgZ2VzdHVyZSByZWNvZ25pemVyIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRh
cC4gVGhpcyBwYXRjaCByZWZhY3RvcnMgc29tZSBsb2dpYyB1c2VkIHRvIGNvbXB1dGUKKyAgICAg
ICAgem9vbWVkIHZpZXdwb3J0cyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHByZWRpY3QgdGhlIGNo
YW5nZSBpbiB2aWV3cG9ydCBzY2FsZSB3aGVuIGRvdWJsZSB0YXBwaW5nIHRvIHpvb20uIFNlZSB0
aGUgY2hhbmdlcyBpbgorICAgICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIGFuZCBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
VGhlcmUgYXJlIG5vIG5ldyB0ZXN0cywgc2luY2UgdGhpcyBwYXRjaCBkb2VzIG5vdCBjaGFuZ2Ug
ZXhpc3RpbmcgYmVoYXZpb3IuIEluc3RlYWQsIHRoaXMgcGF0Y2ggYWRkcyB0aGUgbWFjaGluZXJ5
IG5lZWRlZCBmb3Igem9vbS0KKyAgICAgICAgZGVwZW5kZW50IGZhc3QtY2xpY2tpbmc6IGJ5IHNl
dHRpbmcgdGhlIHByZWZlcmVuY2VzIFdlYktpdEZhc3RDbGlja2luZ0VuYWJsZWQgYW5kIFdlYktp
dEZhc3RDbGlja1pvb21UaHJlc2hvbGQsIHdlIHdpbGwgYmUgYWJsZSB0byB0d2VhaworICAgICAg
ICB0aGUgYmVoYXZpb3IgZHluYW1pY2FsbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRy
ZWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY29udGVudFpvb21TY2FsZV0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3RhcmdldENvbnRlbnRab29tU2NhbGVGb3JSZWN0OmN1cnJlbnRTY2Fs
ZTpmaXRFbnRpcmVSZWN0Om1pbmltdW1TY2FsZTptYXhpbXVtU2NhbGU6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfem9vbVRvUmVjdDp3aXRoT3JpZ2luOmZpdEVudGlyZVJlY3Q6bWluaW11bVNj
YWxlOm1heGltdW1TY2FsZTptaW5pbXVtU2Nyb2xsRGlzdGFuY2U6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfdmlld3BvcnRJc1VzZXJTY2FsYWJsZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZURvdWJsZVRh
cEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktp
dDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6YWRqdXN0U21hcnRNYWduaWZpY2F0aW9u
VGFyZ2V0UmVjdEFuZFpvb21TY2FsZXMpOgorICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6
bWFnbmlmeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVz
dDpjb2xvcjpxdWFkczp0b3BMZWZ0UmFkaXVzOnRvcFJpZ2h0UmFkaXVzOmJvdHRvbUxlZnRSYWRp
dXM6Ym90dG9tUmlnaHRSYWRpdXM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Zhc3RD
bGlja1pvb21UaHJlc2hvbGRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWxsb3dEb3Vi
bGVUYXBUb1pvb21Gb3JDdXJyZW50Wm9vbVNjYWxlOmFuZFRhcmdldFpvb21TY2FsZTpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJ
c0ZpbmlzaGVkSWZOZWNlc3Nhcnk6YWxsb3dzRG91YmxlVGFwWm9vbTp0YXJnZXRSZWN0OmlzUmVw
bGFjZWQ6bWluaW11bVNjYWxlOm1heGltdW1TY2FsZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91YmxlVGFwR2VzdHVyZXNJZk5lY2Vz
c2FyeV0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBSZWNvZ25pemVkOl0p
OgorICAgICAgICAoY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkpOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBDb21taXRlZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyB3ZWJTZWxlY3Rpb25SZWN0c10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxl
Y3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlWm9vbUluZm9ybWF0aW9uRm9y
Tm9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24pOgor
CiAyMDE1LTEwLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhIFdLV2ViVmlldyBpbnB1dCBkZWxlZ2F0ZSBTUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMWQ5MDc4ZmQzZDhm
ZjZiN2RjZjU4NTI4ODYzNGRhZDMyYTAzZGI3MC4uNDJiZTk3YWRjY2Y2NGJlNDIyYTViYTFmN2Iz
NjhkYjE1ZDQwNzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTk5Nyw3ICs5OTcsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMYXll
clRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJl
ZQogICAgIGlmICghbGF5ZXJUcmVlVHJhbnNhY3Rpb24uc2NhbGVXYXNTZXRCeVVJUHJvY2Vzcygp
ICYmICFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5j
aW5nXSAmJiAhW19zY3JvbGxWaWV3IF9pc0FuaW1hdGluZ1pvb21dKQogICAgICAgICBbX3Njcm9s
bFZpZXcgc2V0Wm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3Rvcigp
XTsKIAotICAgIFtfY29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpbX3Nj
cm9sbFZpZXcgaXNab29tRW5hYmxlZF0gJiYgW19zY3JvbGxWaWV3IG1pbmltdW1ab29tU2NhbGVd
IDwgW19zY3JvbGxWaWV3IG1heGltdW1ab29tU2NhbGVdXTsKKyAgICBbX2NvbnRlbnRWaWV3IF9z
ZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6c2VsZi5fdmlld3BvcnRJc1VzZXJTY2FsYWJsZV07
CiAKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdOwogCkBAIC0xMzk1LDEy
ICsxMzk1LDEzIEBAIC0gKHZvaWQpX3pvb21Ub0ZvY3VzUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0
KWZvY3VzZWRFbGVtZW50UmVjdEluRG9jdW1lbnRDb29yZGluCiAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JjZTpZRVNdOwogfQogCi0tIChCT09MKV96b29tVG9SZWN0OihXZWJDb3JlOjpGbG9h
dFJlY3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBm
aXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWlu
aW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xs
RGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZQorLSAoQ0dGbG9hdClfY29udGVu
dFpvb21TY2FsZQogewotICAgIGNvbnN0IGZsb2F0IG1heGltdW1TY2FsZUZhY3RvckRlbHRhRm9y
UGFuU2Nyb2xsID0gMC4wMjsKLQotICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBjb250ZW50Wm9v
bVNjYWxlKHNlbGYpOworICAgIHJldHVybiBjb250ZW50Wm9vbVNjYWxlKHNlbGYpOworfQogCist
IChDR0Zsb2F0KV90YXJnZXRDb250ZW50Wm9vbVNjYWxlRm9yUmVjdDooY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jil0YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTooZG91YmxlKWN1cnJlbnRTY2FsZSBm
aXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWlu
aW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZQorewogICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSB1bm9ic2N1cmVkQ29udGVudFNpemUoW3NlbGYgX2NvbnRlbnRSZWN0Rm9y
VXNlckludGVyYWN0aW9uXS5zaXplKTsKICAgICBkb3VibGUgaG9yaXpvbnRhbFNjYWxlID0gdW5v
YnNjdXJlZENvbnRlbnRTaXplLndpZHRoKCkgKiBjdXJyZW50U2NhbGUgLyB0YXJnZXRSZWN0Lndp
ZHRoKCk7CiAgICAgZG91YmxlIHZlcnRpY2FsU2NhbGUgPSB1bm9ic2N1cmVkQ29udGVudFNpemUu
aGVpZ2h0KCkgKiBjdXJyZW50U2NhbGUgLyB0YXJnZXRSZWN0LmhlaWdodCgpOwpAQCAtMTQwOCw3
ICsxNDA5LDE2IEBAIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJn
ZXRSZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pCiAgICAgaG9yaXpvbnRhbFNjYWxl
ID0gc3RkOjptaW4oc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlLCBtaW5pbXVtU2NhbGUpLCBtYXhp
bXVtU2NhbGUpOwogICAgIHZlcnRpY2FsU2NhbGUgPSBzdGQ6Om1pbihzdGQ6Om1heCh2ZXJ0aWNh
bFNjYWxlLCBtaW5pbXVtU2NhbGUpLCBtYXhpbXVtU2NhbGUpOwogCi0gICAgZG91YmxlIHRhcmdl
dFNjYWxlID0gZml0RW50aXJlUmVjdCA/IHN0ZDo6bWluKGhvcml6b250YWxTY2FsZSwgdmVydGlj
YWxTY2FsZSkgOiBob3Jpem9udGFsU2NhbGU7CisgICAgcmV0dXJuIGZpdEVudGlyZVJlY3QgPyBz
dGQ6Om1pbihob3Jpem9udGFsU2NhbGUsIHZlcnRpY2FsU2NhbGUpIDogaG9yaXpvbnRhbFNjYWxl
OworfQorCistIChCT09MKV96b29tVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVj
dCB3aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihC
T09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGlt
dW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0
KW1pbmltdW1TY3JvbGxEaXN0YW5jZQoreworICAgIGNvbnN0IGZsb2F0IG1heGltdW1TY2FsZUZh
Y3RvckRlbHRhRm9yUGFuU2Nyb2xsID0gMC4wMjsKKworICAgIGRvdWJsZSBjdXJyZW50U2NhbGUg
PSBjb250ZW50Wm9vbVNjYWxlKHNlbGYpOworICAgIGRvdWJsZSB0YXJnZXRTY2FsZSA9IFtzZWxm
IF90YXJnZXRDb250ZW50Wm9vbVNjYWxlRm9yUmVjdDp0YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpj
dXJyZW50U2NhbGUgZml0RW50aXJlUmVjdDpmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTptaW5p
bXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2FsZV07CisKICAgICBpZiAoZmFicyh0YXJn
ZXRTY2FsZSAtIGN1cnJlbnRTY2FsZSkgPCBtYXhpbXVtU2NhbGVGYWN0b3JEZWx0YUZvclBhblNj
cm9sbCkgewogICAgICAgICBpZiAoW3NlbGYgX3Njcm9sbFRvUmVjdDp0YXJnZXRSZWN0IG9yaWdp
bjpvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOm1pbmltdW1TY3JvbGxEaXN0YW5jZV0pCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMwNjYsNiArMzA3NiwxMSBAQCAtIChDR0Zsb2F0
KV92aWV3cG9ydE1ldGFUYWdXaWR0aAogICAgIHJldHVybiBfdmlld3BvcnRNZXRhVGFnV2lkdGg7
CiB9CiAKKy0gKEJPT0wpX3ZpZXdwb3J0SXNVc2VyU2NhbGFibGUKK3sKKyAgICByZXR1cm4gW19z
Y3JvbGxWaWV3IGlzWm9vbUVuYWJsZWRdICYmIFtfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxl
XSA8IFtfc2Nyb2xsVmlldyBtYXhpbXVtWm9vbVNjYWxlXTsKK30KKwogLSAoX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcmludEZvcm1hdHRlcgogewogICAgIFVJVmlld1ByaW50
Rm9ybWF0dGVyICp2aWV3UHJpbnRGb3JtYXR0ZXIgPSBzZWxmLnZpZXdQcmludEZvcm1hdHRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAppbmRleCA1YTRiMjEwYTk2MjMwMjA0ZTVhNjZmYjlkODA5OTVjNWEyMWRjMjM0
Li5hOTM2YTZmMThhMWZhNDEwOWFjNjg0YmMwYThmY2ZmMjE0ZTQyOWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CkBAIC0xMDksNiArMTA5LDkgQEAgc3RydWN0IFByaW50SW5mbzsKIC0gKHZvaWQpX25hdmlnYXRp
b25HZXN0dXJlRGlkQmVnaW47CiAtICh2b2lkKV9uYXZpZ2F0aW9uR2VzdHVyZURpZEVuZDsKIAor
LSAoQ0dGbG9hdClfY29udGVudFpvb21TY2FsZTsKKy0gKENHRmxvYXQpX3RhcmdldENvbnRlbnRa
b29tU2NhbGVGb3JSZWN0Oihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXRhcmdldFJlY3QgY3Vy
cmVudFNjYWxlOihkb3VibGUpY3VycmVudFNjYWxlIGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50
aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihk
b3VibGUpbWF4aW11bVNjYWxlOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJ
RWRnZUluc2V0cyBfY29tcHV0ZWRDb250ZW50SW5zZXQ7CiAjZWxzZQogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0SWdub3Jlc05vbldoZWVsRXZlbnRzOikgQk9PTCBfaWdub3Jlc05v
bldoZWVsRXZlbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5NmY1ZjliYWIwMWQ5NzJkYzA2OTNjZmJlMjNm
M2JiZmU0OGIwZDNkLi40MzhkNmM1MWQyMjBhZjU4NWI3NTQyODNiMmE5MjkyMDIxOTk4M2I1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIAogLy8gVGhlIHZpZXdwb3J0IG1ldGEgdGFnIHdp
ZHRoIGlzIG5lZ2F0aXZlIGlmIHRoZSB2YWx1ZSBpcyBub3QgZGVmaW5lZC4KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQ0dGbG9hdCBfdmlld3BvcnRNZXRhVGFnV2lkdGg7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3ZpZXdwb3J0SXNVc2VyU2NhbGFibGU7
CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLV2ViVmlld1ByaW50Rm9ybWF0
dGVyICpfd2ViVmlld1ByaW50Rm9ybWF0dGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA5OTUxYjdjZjFkOGEwMDg3Y2U4MGZmNDBmMDFmMzYyMjc4NDYwYmMyLi41
MDg0MDM3ODRkZmIxZjEzZGUzMmUzOWY4OTIwMWE0NDVjYTZkNGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI5MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB6b29t
VG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1h
eGltdW1TY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydE1ldGFU
YWdXaWR0aChmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2Vz
dHVyZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgYWxsb3dzRG91YmxlVGFwWm9vbSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUg
bWF4aW11bVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVpvb21TY2FsZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBkb2N1bWVudFJlY3Qo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG92ZXJmbG93U2Nyb2xsVmlld1dpbGxTdGFy
dFBhbkdlc3R1cmUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggN2U0NGY1MWFkN2I4ZDcxN2ZlYjE4ODg0M2UyMzQzMzVkNjFhMzIxOS4uYWI0M2I1MGE1
MTAxZTJmYzlkNzg2YzliNjVlNmIzM2U2MDEwZTRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNTA4LDYgKzUwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlVGFwQXNDbGlj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgdmlld3BvcnRNZXRhVGFnV2lk
dGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpOworICAgIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1
cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBib29s
IGFsbG93c0RvdWJsZVRhcFpvb20sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1h
eGltdW1TY2FsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFu
Z2UoY29uc3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KTsKICAgICB2b2lkIGdldExvb2t1
cENvbnRleHRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzMWMwN2Mz
MGU4ZWM3YjM4N2NjZjllYTg1ZmU0ZTBjZGJhNjY5YzA5Li5mNTQ4ZTk5YWQzN2VkNDhjMDk3Nzdl
MTA0ZTg4MzVmMTEzZWNlZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE4OCw2ICsxODgsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIENvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpCiAgICAgRGlkTm90
SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBWaWV3cG9ydE1l
dGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkKKyAgICBEaXNhYmxlRG91YmxlVGFwR2Vz
dHVyZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgYWxsb3dzRG91YmxlVGFwWm9vbSwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIGJv
b2wgaXNSZXBsYWNlZEVsZW1lbnQsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVt
U2NhbGUpCiAgICAgRGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoSVBDOjpEYXRhUmVmZXJlbmNl
IHBkZkRhdGEpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMTIzZDM2N2VhMjA4Y2Yw
YTA1ZTdkZjlmMmM4NzEwMTA4N2Y4MzVhZS4uOTM1MGNhNDYyNmYxNjQ2ZDY4ODM3NTVmYzYyOWE5
ZGQyYTMyNmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaApAQCAtMTM0LDYgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlUnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0
aChmbG9hdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0
dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9v
bCBhbGxvd3NEb3VibGVUYXBab29tLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBt
YXhpbXVtU2NhbGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1ab29tU2Nh
bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBkb2N1
bWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZDc2Zjk0MTY2ZTRmZjBhYThkOTE4
ZDRhNDMxYzdmOWE0NWI2ZDNkZC4uNDdlNDY4MGZmM2RlODc1YzgzM2ViNzY5MzNmNzcyOTYxMmVi
ODRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC0yNTksNiArMjU5LDE0IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENo
YW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0IG5ld1dpZHRoKQogICAgIFttX3dlYlZpZXcg
X3NldFZpZXdwb3J0TWV0YVRhZ1dpZHRoOm5ld1dpZHRoXTsKIH0KIAordm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3Nh
cnkodWludDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93c0RvdWJsZVRhcFpvb20sIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgZG91
YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkKK3sKKyAgICBpZiAoIW1fd2Vi
Vmlldy5fdmlld3BvcnRJc1VzZXJTY2FsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21f
Y29udGVudFZpZXcgX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElm
TmVjZXNzYXJ5OnJlcXVlc3RJRCBhbGxvd3NEb3VibGVUYXBab29tOmFsbG93c0RvdWJsZVRhcFpv
b20gdGFyZ2V0UmVjdDp0YXJnZXRSZWN0IGlzUmVwbGFjZWQ6aXNSZXBsYWNlZEVsZW1lbnQgbWlu
aW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlXTsKK30KKwog
ZG91YmxlIFBhZ2VDbGllbnRJbXBsOjptaW5pbXVtWm9vbVNjYWxlKCkgY29uc3QKIHsKICAgICBp
ZiAoVUlTY3JvbGxWaWV3ICpzY3JvbGxlciA9IFttX3dlYlZpZXcgc2Nyb2xsVmlld10pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci5oCmluZGV4IDYwY2E1ZDQyMTIyMTNkZDQ1MTQzY2E4YWVlNTZiYmVmNDAw
MWI3YTIuLmI3NjVhMGEzM2U3MzhmYjVkMzkwMWUzOTgyYTlkODM0ZjRiYjRhMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFu
ZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7
CiAgICAgdm9pZCBoYW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKTsKKyAgICB2b2lkIGFkanVzdFNtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFJl
Y3RBbmRab29tU2NhbGVzKGJvb2wgYWRkTWFnbmlmaWNhdGlvblBhZGRpbmcsIFdlYkNvcmU6OkZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgZG91YmxlJiBtaW5pbXVtU2NhbGUsIGRvdWJsZSYgbWF4aW11
bVNjYWxlKTsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci5tbQppbmRleCBmNmNkMTZjYzcwNjk0Yzc2NzM4NDZkMzNiOGJlYjU1NTlk
MWYwNTM3Li40MTBiODIzOTU3ZmI4MzkxMDBkNmE4OTgyOTg2YmJjNmU3MzM5OWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLm1tCkBAIC03OCw2ICs3OCwxNyBAQCB2b2lkIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXI6OmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2lu
dCBvcgogICAgIFttX2NvbnRlbnRWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpvcmlnaW5dOwogfQog
Cit2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmFkanVzdFNtYXJ0TWFnbmlmaWNh
dGlvblRhcmdldFJlY3RBbmRab29tU2NhbGVzKGJvb2wgYWRkTWFnbmlmaWNhdGlvblBhZGRpbmcs
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgZG91YmxlJiBtaW5pbXVtU2NhbGUsIGRv
dWJsZSYgbWF4aW11bVNjYWxlKQoreworICAgIGlmIChhZGRNYWduaWZpY2F0aW9uUGFkZGluZykg
eworICAgICAgICB0YXJnZXRSZWN0LmluZmxhdGVYKHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQ
YWRkaW5nICogdGFyZ2V0UmVjdC53aWR0aCgpKTsKKyAgICAgICAgdGFyZ2V0UmVjdC5pbmZsYXRl
WShzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3QuaGVpZ2h0KCkp
OworICAgIH0KKworICAgIG1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4KG1pbmltdW1TY2FsZSwgc21h
cnRNYWduaWZpY2F0aW9uTWluaW11bVNjYWxlKTsKKyAgICBtYXhpbXVtU2NhbGUgPSBzdGQ6Om1p
bihtYXhpbXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1heGltdW1TY2FsZSk7Cit9CisKIHZv
aWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdl
dFJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1l
bnQsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNj
YWxlKQogewogICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkgewpAQCAtODUsMTQgKzk2LDkg
QEAgdm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXIKICAgICAgICAgW21fY29udGVudFZpZXcgX3pvb21P
dXRXaXRoT3JpZ2luOm9yaWdpbl07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpZiAo
IWlzUmVwbGFjZWRFbGVtZW50KSB7Ci0gICAgICAgIHRhcmdldFJlY3QuaW5mbGF0ZVgoc21hcnRN
YWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0LndpZHRoKCkpOwotICAgICAg
ICB0YXJnZXRSZWN0LmluZmxhdGVZKHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nICog
dGFyZ2V0UmVjdC5oZWlnaHQoKSk7Ci0gICAgfQotCi0gICAgZG91YmxlIG1heGltdW1TY2FsZSA9
IHN0ZDo6bWluKHZpZXdwb3J0TWF4aW11bVNjYWxlLCBzbWFydE1hZ25pZmljYXRpb25NYXhpbXVt
U2NhbGUpOwotICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSBzdGQ6Om1heCh2aWV3cG9ydE1pbmlt
dW1TY2FsZSwgc21hcnRNYWduaWZpY2F0aW9uTWluaW11bVNjYWxlKTsKKyAgICBkb3VibGUgbWlu
aW11bVNjYWxlID0gdmlld3BvcnRNaW5pbXVtU2NhbGU7CisgICAgZG91YmxlIG1heGltdW1TY2Fs
ZSA9IHZpZXdwb3J0TWF4aW11bVNjYWxlOworICAgIGFkanVzdFNtYXJ0TWFnbmlmaWNhdGlvblRh
cmdldFJlY3RBbmRab29tU2NhbGVzKCFpc1JlcGxhY2VkRWxlbWVudCwgdGFyZ2V0UmVjdCwgbWlu
aW11bVNjYWxlLCBtYXhpbXVtU2NhbGUpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIGlmIHRleHQg
c2VsZWN0aW9uIHdhbnRzIHRvIGNvbnN1bWUgdGhlIGRvdWJsZSB0YXAgYmVmb3JlIHdlIGF0dGVt
cHQgbWFnbmlmaWNhdGlvbi4KIApAQCAtMTE4LDEyICsxMjQsOSBAQCB2b2lkIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cgogCiB2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6Om1hZ25pZnkoRmxv
YXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1h
eGltdW1TY2FsZSkKIHsKLSAgICB0YXJnZXRSZWN0LmluZmxhdGVYKHNtYXJ0TWFnbmlmaWNhdGlv
bkVsZW1lbnRQYWRkaW5nICogdGFyZ2V0UmVjdC53aWR0aCgpKTsKLSAgICB0YXJnZXRSZWN0Lmlu
ZmxhdGVZKHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nICogdGFyZ2V0UmVjdC5oZWln
aHQoKSk7Ci0KLSAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gc3RkOjptaW4odmlld3BvcnRNYXhp
bXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1heGltdW1TY2FsZSk7Ci0gICAgZG91YmxlIG1p
bmltdW1TY2FsZSA9IHN0ZDo6bWF4KHZpZXdwb3J0TWluaW11bVNjYWxlLCBzbWFydE1hZ25pZmlj
YXRpb25NaW5pbXVtU2NhbGUpOwotCisgICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHZpZXdwb3J0
TWF4aW11bVNjYWxlOworICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSB2aWV3cG9ydE1pbmltdW1T
Y2FsZTsKKyAgICBhZGp1c3RTbWFydE1hZ25pZmljYXRpb25UYXJnZXRSZWN0QW5kWm9vbVNjYWxl
cyh0cnVlLCB0YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2FsZSk7CiAgICAgW21f
Y29udGVudFZpZXcgX3pvb21Ub1JlY3Q6dGFyZ2V0UmVjdCB3aXRoT3JpZ2luOm9yaWdpbiBmaXRF
bnRpcmVSZWN0Ok5PIG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGlt
dW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6MF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IDQ5YjQxOWNkZmY5NDYwM2EwZjhiNjZhYzhmZjMzOGE4ZjczMWRlNWYuLmYwN2Q4NDMzMmFhM2Zk
ZjBjMDIyZmVjNDFkYjdmYjFjOTcwYTI2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTI2LDcgKzEy
Niw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBpZCA8VUlUZXh0SW5w
dXREZWxlZ2F0ZT4gX2lucHV0RGVsZWdhdGU7CiAKLSAgICB1aW50NjRfdCBfbGF0ZXN0VGFwSGln
aGxpZ2h0SUQ7CisgICAgdWludDY0X3QgX2xhdGVzdFRhcElEOwogICAgIHN0cnVjdCBUYXBIaWdo
bGlnaHRJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yOwogICAgICAg
ICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBxdWFkczsKQEAgLTE4Miw2ICsxODIsNyBAQCBz
dHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClfY29tbWl0UG90ZW50aWFsVGFw
RmFpbGVkOwogLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3Qp
cmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRp
dXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRp
dXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzOwogCistICh2b2lk
KV9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeToo
dWludDY0X3QpcmVxdWVzdElEIGFsbG93c0RvdWJsZVRhcFpvb206KGJvb2wpYWxsb3dzRG91Ymxl
VGFwWm9vbSB0YXJnZXRSZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCBpc1JlcGxh
Y2VkOihCT09MKWlzUmVwbGFjZWRFbGVtZW50IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1T
Y2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGU7CiAtICh2b2lkKV9zdGFydEFz
c2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9y
bWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09MKXVzZXJJc0ludGVyYWN0aW5nIGJsdXJQcmV2
aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9kZSB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNT
ZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIC0gKHZvaWQpX3N0b3BBc3Npc3RpbmdOb2RlOwog
LSAodm9pZClfc2VsZWN0aW9uQ2hhbmdlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggODc5YTdlNjMx
MzNjMmNhYmI4MWVkZDU3Y2EzMWJkN2Q3YzY0NzBkNC4uYTAzNDg4OTkwYjgzNDBiOWU3NmVjOTg4
OWEyZGY0MmJhOTFlNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgzMSw3ICs4MzEsNyBAQCAt
ICh2b2lkKV9zaG93VGFwSGlnaGxpZ2h0CiAKIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZv
clJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2ViQ29yZTo6Q29sb3Im
KWNvbG9yIHF1YWRzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0
ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFk
aXVzIHRvcFJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1
cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFk
aXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdo
dFJhZGl1cwogewotICAgIGlmICghX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCB8fCBfbGF0ZXN0VGFw
SGlnaGxpZ2h0SUQgIT0gcmVxdWVzdElEKQorICAgIGlmICghX2lzVGFwSGlnaGxpZ2h0SURWYWxp
ZCB8fCBfbGF0ZXN0VGFwSUQgIT0gcmVxdWVzdElEKQogICAgICAgICByZXR1cm47CiAKICAgICBf
aXNUYXBIaWdobGlnaHRJRFZhbGlkID0gTk87CkBAIC04NTEsNiArODUxLDQ0IEBAIC0gKHZvaWQp
X2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjoo
Y29uc3QgV2ViQ29yZTo6CiAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwogfQogCistIChD
R0Zsb2F0KV9mYXN0Q2xpY2tab29tVGhyZXNob2xkCit7CisgICAgTlNVc2VyRGVmYXVsdHMgKmRl
ZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKKyAgICBpZiAo
IVtkZWZhdWx0cyBib29sRm9yS2V5OkAiV2ViS2l0RmFzdENsaWNraW5nRW5hYmxlZCJdKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBbZGVmYXVsdHMgZmxvYXRGb3JLZXk6QCJXZWJL
aXRGYXN0Q2xpY2tab29tVGhyZXNob2xkIl07Cit9CisKKy0gKEJPT0wpX2FsbG93RG91YmxlVGFw
VG9ab29tRm9yQ3VycmVudFpvb21TY2FsZTooQ0dGbG9hdCljdXJyZW50Wm9vbVNjYWxlIGFuZFRh
cmdldFpvb21TY2FsZTooQ0dGbG9hdCl0YXJnZXRab29tU2NhbGUKK3sKKyAgICBDR0Zsb2F0IHpv
b21UaHJlc2hvbGQgPSBbc2VsZiBfZmFzdENsaWNrWm9vbVRocmVzaG9sZF07CisgICAgaWYgKCF6
b29tVGhyZXNob2xkKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgQ0dGbG9hdCBtaW5pbXVt
Wm9vbVJhdGlvRm9yRG91YmxlVGFwVG9ab29tSW4gPSAxICsgem9vbVRocmVzaG9sZDsKKyAgICBD
R0Zsb2F0IG1heGltdW1ab29tUmF0aW9Gb3JEb3VibGVUYXBUb1pvb21PdXQgPSAxIC8gbWluaW11
bVpvb21SYXRpb0ZvckRvdWJsZVRhcFRvWm9vbUluOworICAgIENHRmxvYXQgem9vbVJhdGlvID0g
dGFyZ2V0Wm9vbVNjYWxlIC8gY3VycmVudFpvb21TY2FsZTsKKyAgICByZXR1cm4gem9vbVJhdGlv
IDwgbWF4aW11bVpvb21SYXRpb0ZvckRvdWJsZVRhcFRvWm9vbU91dCB8fCB6b29tUmF0aW8gPiBt
aW5pbXVtWm9vbVJhdGlvRm9yRG91YmxlVGFwVG9ab29tSW47Cit9CisKKy0gKHZvaWQpX2Rpc2Fi
bGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNzYXJ5Oih1aW50NjRf
dClyZXF1ZXN0SUQgYWxsb3dzRG91YmxlVGFwWm9vbTooYm9vbClhbGxvd3NEb3VibGVUYXBab29t
IHRhcmdldFJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IGlzUmVwbGFjZWQ6KEJP
T0wpaXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1h
eGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZQoreworICAgIGlmICghX3BvdGVudGlhbFRh
cEluUHJvZ3Jlc3MgfHwgX2xhdGVzdFRhcElEICE9IHJlcXVlc3RJRCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGFsbG93c0RvdWJsZVRhcFpvb20pIHsKKyAgICAgICAgLy8gVGhvdWdoIHRo
ZSBlbGVtZW50IGFsbG93cyB1cyB0byB6b29tIGluIG9uIGRvdWJsZSB0YXAsIHdlIGF2b2lkIHRo
aXMgYmVoYXZpb3IgaW4gZmF2b3Igb2YgZmFzdCBjbGlja2luZyBpZiB0aGUgZGlmZmVyZW5jZSBp
biBzY2FsZSBpcyBpbnNpZ25pZmljYW50LgorICAgICAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlci0+YWRqdXN0U21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0UmVjdEFuZFpvb21TY2FsZXMo
IWlzUmVwbGFjZWRFbGVtZW50LCB0YXJnZXRSZWN0LCBtaW5pbXVtU2NhbGUsIG1heGltdW1TY2Fs
ZSk7CisgICAgICAgIENHRmxvYXQgY3VycmVudFpvb21TY2FsZSA9IFtfd2ViVmlldyBfY29udGVu
dFpvb21TY2FsZV07CisgICAgICAgIENHRmxvYXQgdGFyZ2V0Wm9vbVNjYWxlID0gW193ZWJWaWV3
IF90YXJnZXRDb250ZW50Wm9vbVNjYWxlRm9yUmVjdDp0YXJnZXRSZWN0IGN1cnJlbnRTY2FsZTpj
dXJyZW50Wm9vbVNjYWxlIGZpdEVudGlyZVJlY3Q6aXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNj
YWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlXTsKKyAgICAgICAgaWYg
KFtzZWxmIF9hbGxvd0RvdWJsZVRhcFRvWm9vbUZvckN1cnJlbnRab29tU2NhbGU6Y3VycmVudFpv
b21TY2FsZSBhbmRUYXJnZXRab29tU2NhbGU6dGFyZ2V0Wm9vbVNjYWxlXSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVk
Ok5PXTsKK30KKwogLSAodm9pZClfY2FuY2VsTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKIHsK
ICAgICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGNhbmNlbF07CkBAIC0x
MTU1LDcgKzExOTMsNyBAQCAtICh2b2lkKV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihV
SUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlYwogICAgIGNhc2UgVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlQmVnYW46CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5D
bGljayA9IFlFUzsKICAgICAgICAgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnkoc2VsZik7
Ci0gICAgICAgIF9wYWdlLT50YXBIaWdobGlnaHRBdFBvc2l0aW9uKFtnZXN0dXJlUmVjb2duaXpl
ciBzdGFydFBvaW50XSwgKytfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQpOworICAgICAgICBfcGFnZS0+
dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQb2ludF0sICsr
X2xhdGVzdFRhcElEKTsKICAgICAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKQEAg
LTExOTAsMTIgKzEyMjgsMjAgQEAgLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgfQogfQogCist
ICh2b2lkKV9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVUYXBHZXN0dXJlc0lmTmVjZXNz
YXJ5Cit7CisgICAgaWYgKF93ZWJWaWV3Ll92aWV3cG9ydElzVXNlclNjYWxhYmxlKQorICAgICAg
ICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOllFU107CisKKyAgICBfcG90ZW50
aWFsVGFwSW5Qcm9ncmVzcyA9IE5POworfQorCiAtICh2b2lkKV9zaW5nbGVUYXBSZWNvZ25pemVk
OihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NF
UlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKICAg
ICBBU1NFUlQoIV9wb3RlbnRpYWxUYXBJblByb2dyZXNzKTsKIAotICAgIF9wYWdlLT5wb3RlbnRp
YWxUYXBBdFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCArK19sYXRlc3RUYXBI
aWdobGlnaHRJRCk7CisgICAgX3BhZ2UtPnBvdGVudGlhbFRhcEF0UG9zaXRpb24oZ2VzdHVyZVJl
Y29nbml6ZXIubG9jYXRpb24sICsrX2xhdGVzdFRhcElEKTsKICAgICBfcG90ZW50aWFsVGFwSW5Q
cm9ncmVzcyA9IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogfQpAQCAt
MTIwMyw3ICsxMjQ5LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiBzdGF0aWMgdm9pZCBjYW5jZWxQb3Rl
bnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKIHsKICAgICBp
ZiAoY29udGVudFZpZXctPl9wb3RlbnRpYWxUYXBJblByb2dyZXNzKSB7Ci0gICAgICAgIGNvbnRl
bnRWaWV3LT5fcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POworICAgICAgICBbY29udGVudFZp
ZXcgX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNlc3Nhcnld
OwogICAgICAgICBbY29udGVudFZpZXcgX2NhbmNlbEludGVyYWN0aW9uXTsKICAgICAgICAgY29u
dGVudFZpZXctPl9wYWdlLT5jYW5jZWxQb3RlbnRpYWxUYXAoKTsKICAgICB9CkBAIC0xMjQyLDcg
KzEyODgsNyBAQCAtICh2b2lkKV9zaW5nbGVUYXBDb21taXRlZDooVUlUYXBHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24g
PSBnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbjsKIAotICAgIF9wb3RlbnRpYWxUYXBJblByb2dy
ZXNzID0gTk87CisgICAgW3NlbGYgX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdl
c3R1cmVzSWZOZWNlc3NhcnldOwogCiAgICAgaWYgKF9oYXNUYXBIaWdobGlnaHRGb3JQb3RlbnRp
YWxUYXApIHsKICAgICAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwYTMyOWQwOTI4
ODBhYjdiYzhmMjkzODNlODA0YjFmOTI5MGFlNjQ5Li43ZDMwN2NmZTI0OTVkYTUwMzIzM2ZhMjQ5
Y2IzZjllMmI2ZDI3Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtOTM3LDYgKzkzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dmlld3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCiAgICAgbV9wYWdlQ2xp
ZW50LmRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVj
ZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd3NEb3VibGVUYXBab29tLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQs
IGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpCit7CisgICAgbV9wYWdl
Q2xpZW50LmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZElmTmVjZXNz
YXJ5KHJlcXVlc3RJRCwgYWxsb3dzRG91YmxlVGFwWm9vbSwgdGFyZ2V0UmVjdCwgaXNSZXBsYWNl
ZEVsZW1lbnQsIG1pbmltdW1TY2FsZSwgbWF4aW11bVNjYWxlKTsKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSkKIHsKICAgICBtX3BhZ2VDbGllbnQuZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9Q
REYocGRmRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggZGY3
MDEzZDJmZjZmMWMwNDZiMjM3Y2YzZTFiZTg3MTRjNzY1NTdhNy4uYjhiNGExN2Q3MWQzNDcwOWVj
N2MzOWEwZTY2MjZjZDBiMGFiZjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcApAQCAtODYsMzkgKzg2LDQ1IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGCiAgICAgSGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChvcmlnaW5JbkNvbnRlbnRz
U3BhY2UpOwogCiAgICAgbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5o
aXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIGhpdFRlc3RSZXN1bHQpOworICAgIE5vZGUqIG5vZGUg
PSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOworICAgIGlmICghbm9kZSkgeworICAgICAgICBk
aXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxv
YXRQb2ludCgpLCBGbG9hdFJlY3QoKSwgRmxvYXRSZWN0KCksIGZhbHNlLCAwLCAwKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaXNSZXBsYWNlZDsKKyAgICBGbG9hdFJlY3Qg
cmVuZGVyUmVjdDsKKyAgICBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGU7CisgICAgZG91Ymxl
IHZpZXdwb3J0TWF4aW11bVNjYWxlOwogCi0gICAgaWYgKE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpKSB7Ci0gICAgICAgIGJvb2wgaXNSZXBsYWNlZDsKLSAgICAgICAgRmxv
YXRSZWN0IHJlbmRlclJlY3QgPSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKLQotICAg
ICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkgewotICAgICAgICAg
ICAgaWYgKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PEltYWdl
RG9jdW1lbnQmPihub2RlLT5kb2N1bWVudCgpKS5pbWFnZUVsZW1lbnQoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChub2RlICE9IGltYWdlRWxlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJSZWN0ID0gaW1hZ2VFbGVtZW50LT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKLSAgICAg
ICAgICAgICAgICAgICAgRmxvYXRQb2ludCBuZXdPcmlnaW4gPSBvcmlnaW47Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChvcmlnaW4ueCgpIDwgcmVuZGVyUmVjdC54KCkgfHwgb3JpZ2luLngoKSA+
IHJlbmRlclJlY3QubWF4WCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3JpZ2luLnNl
dFgocmVuZGVyUmVjdC54KCkgKyByZW5kZXJSZWN0LndpZHRoKCkgLyAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG9yaWdpbi55KCkgPCByZW5kZXJSZWN0LnkoKSB8fCBvcmlnaW4ueSgpID4g
cmVuZGVyUmVjdC5tYXhZKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdPcmlnaW4uc2V0
WShyZW5kZXJSZWN0LnkoKSArIHJlbmRlclJlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICAgICAgICAg
ICAgICAgICAgb3JpZ2luID0gbmV3T3JpZ2luOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpc1JlcGxhY2VkID0gdHJ1ZTsKKyAgICBjb21wdXRlWm9vbUluZm9ybWF0aW9uRm9y
Tm9kZShub2RlLCBvcmlnaW4sIHJlbmRlclJlY3QsIGlzUmVwbGFjZWQsIHZpZXdwb3J0TWluaW11
bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisgICAgZGlzcGF0Y2hEaWRDb2xsZWN0R2Vv
bWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiwgcmVuZGVyUmVjdCwgdmlz
aWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkLCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3Bv
cnRNYXhpbXVtU2NhbGUpOworfQorCit2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbXB1dGVab29tSW5mb3JtYXRpb25Gb3JOb2RlKE5vZGUqIG5vZGUsIEZsb2F0UG9pbnQmIG9y
aWdpbiwgRmxvYXRSZWN0JiByZW5kZXJSZWN0LCBib29sJiBpc1JlcGxhY2VkLCBkb3VibGUmIHZp
ZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUmIHZpZXdwb3J0TWF4aW11bVNjYWxlKQoreworICAg
IHJlbmRlclJlY3QgPSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKyAgICBpZiAobm9k
ZS0+ZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoSFRNTEltYWdl
RWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SW1hZ2VEb2N1bWVudCY+KG5vZGUt
PmRvY3VtZW50KCkpLmltYWdlRWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAobm9kZSAhPSBp
bWFnZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZW5kZXJSZWN0ID0gaW1hZ2VFbGVtZW50
LT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IG5l
d09yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBpZiAob3JpZ2luLngoKSA8IHJlbmRl
clJlY3QueCgpIHx8IG9yaWdpbi54KCkgPiByZW5kZXJSZWN0Lm1heFgoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbmV3T3JpZ2luLnNldFgocmVuZGVyUmVjdC54KCkgKyByZW5kZXJSZWN0LndpZHRo
KCkgLyAyKTsKKyAgICAgICAgICAgICAgICBpZiAob3JpZ2luLnkoKSA8IHJlbmRlclJlY3QueSgp
IHx8IG9yaWdpbi55KCkgPiByZW5kZXJSZWN0Lm1heFkoKSkKKyAgICAgICAgICAgICAgICAgICAg
bmV3T3JpZ2luLnNldFkocmVuZGVyUmVjdC55KCkgKyByZW5kZXJSZWN0LmhlaWdodCgpIC8gMik7
CisgICAgICAgICAgICAgICAgb3JpZ2luID0gbmV3T3JpZ2luOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaXNSZXBsYWNlZCA9IHRydWU7CiAgICAgICAgIH0KLQorICAgIH0KICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IDA7Ci0gICAg
ICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCk7CisgICAgdmlld3BvcnRNaW5pbXVtU2NhbGUgPSAwOworICAgIHZpZXdwb3J0
TWF4aW11bVNjYWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKICNlbHNl
Ci0gICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IG1fd2ViUGFnZS5taW5pbXVt
UGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSA9
IG1fd2ViUGFnZS5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgdmlld3BvcnRNaW5pbXVt
U2NhbGUgPSBtX3dlYlBhZ2UubWluaW11bVBhZ2VTY2FsZUZhY3RvcigpOworICAgIHZpZXdwb3J0
TWF4aW11bVNjYWxlID0gbV93ZWJQYWdlLm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICNlbmRp
ZgotCi0gICAgICAgIGRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBs
YWNlZCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50KCksIEZsb2F0UmVjdCgpLCBGbG9hdFJl
Y3QoKSwgZmFsc2UsIDAsIDApOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggN2FiMDE5OTY2ODVkMzg0NDMyODU5NzBlZTM4ZDZjMTc4
MTRiYzY2MS4uZGIxOGUyZjllOWNmOWQ5NjM4NzEyZTM3ODQ5YzI1ZGYwZGMyZGM3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgTm9k
ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICB+Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigpOwogCiAgICAgdm9pZCBtYWluRnJhbWVE
aWRMYXlvdXQoKTsKKyAgICB2b2lkIGNvbXB1dGVab29tSW5mb3JtYXRpb25Gb3JOb2RlKFdlYkNv
cmU6Ok5vZGUqLCBXZWJDb3JlOjpGbG9hdFBvaW50JiBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVj
dCYgcmVuZGVyUmVjdCwgYm9vbCYgaXNSZXBsYWNlZCwgZG91YmxlJiB2aWV3cG9ydE1pbmltdW1T
Y2FsZSwgZG91YmxlJiB2aWV3cG9ydE1heGltdW1TY2FsZSk7CiAKIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMmRjYWZlMWQzYzAzNDVjZTRmNmM5OTZm
MjBmN2Q0MDdiZTc4ZTA1MS4uY2JjYmMxODRhNzBjNDM5NDgzODQ4ZTE1ODcxMzljYTI3MGYwYzJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtNjYyLDYgKzY2MiwxNiBAQCB2b2lkIFdlYlBhZ2U6OnBvdGVudGlhbFRh
cEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaQog
ewogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3Bv
bmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3BvdGVudGlhbFRhcExvY2F0aW9uKTsKICAg
ICBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNzYXJ5KHJlcXVlc3RJRCwgbV9wb3RlbnRp
YWxUYXBOb2RlLmdldCgpKTsKKyAgICBpZiAobV9wb3RlbnRpYWxUYXBOb2RlKSB7CisgICAgICAg
IEZsb2F0UG9pbnQgb3JpZ2luID0gcG9zaXRpb247CisgICAgICAgIEZsb2F0UmVjdCByZW5kZXJS
ZWN0OworICAgICAgICBib29sIGlzUmVwbGFjZWQ7CisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1p
bmltdW1TY2FsZTsKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlOworCisgICAg
ICAgIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jb21wdXRlWm9vbUluZm9ybWF0aW9u
Rm9yTm9kZShtX3BvdGVudGlhbFRhcE5vZGUuZ2V0KCksIG9yaWdpbiwgcmVuZGVyUmVjdCwgaXNS
ZXBsYWNlZCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNhYmxlRG91YmxlVGFwR2VzdHVy
ZXNVbnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIHRydWUsIHJlbmRlclJl
Y3QsIGlzUmVwbGFjZWQsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2Fs
ZSkpOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlOjpjb21taXRQb3RlbnRpYWxUYXAodWludDY0
X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCg==
</data>
<flag name="review"
          id="288566"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>