<?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>147791</bug_id>
          
          <creation_ts>2015-08-07 12:36:36 -0700</creation_ts>
          <short_desc>Simplify WKTR&apos;s view options</short_desc>
          <delta_ts>2015-08-14 17:14:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115842</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-07 12:36:36 -0700</bug_when>
    <thetext>Simplify WKTR&apos;s view options</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115843</commentid>
    <comment_count>1</comment_count>
      <attachid>258519</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-07 12:38:23 -0700</bug_when>
    <thetext>Created attachment 258519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115860</commentid>
    <comment_count>2</comment_count>
      <attachid>258523</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-07 13:22:21 -0700</bug_when>
    <thetext>Created attachment 258523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115864</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-07 13:35:38 -0700</bug_when>
    <thetext>Committed r188157: &lt;http://trac.webkit.org/changeset/188157&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117837</commentid>
    <comment_count>4</comment_count>
      <attachid>258523</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-08-14 17:10:07 -0700</bug_when>
    <thetext>Comment on attachment 258523
Patch

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

&gt; Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm:247
&gt; -    WKRetainPtr&lt;WKStringRef&gt; useThreadedScrollingKey(AdoptWK, WKStringCreateWithUTF8CString(&quot;ThreadedScrolling&quot;));
&gt; -    WKTypeRef useThreadedScrollingValue = WKDictionaryGetItemForKey(options, useThreadedScrollingKey.get());
&gt; -    bool useThreadedScrolling = useThreadedScrollingValue &amp;&amp; WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(useThreadedScrollingValue));
&gt; +    if (m_options.useThreadedScrolling != options.useThreadedScrolling)
&gt; +        return false;
&gt;  
&gt; -    return useThreadedScrolling == [(TestRunnerWKView *)m_view useThreadedScrolling];
&gt; +    return true;

This changed the behavior, because the options structure doesn&apos;t have optional values any more, but it&apos;s used as if it did.

See e.g. here:

void TestController::updateLayoutTypeForTest(const TestInvocation&amp; test)
{
    ViewOptions viewOptions;

    viewOptions.useFixedLayout = shouldUseFixedLayout(test);

    ensureViewSupportsOptions(viewOptions);
}

This results in WebKitTestRunner re-creating its view multiple times when running tests in tiled-drawing directory (which makes attaching to the process to debug super hard), ad likely in other misbehaviors.

This code turned out to be super fragile. Another example (pre-existing) is that TestController::configureViewForTest() indirectly calls ensureViewSupportsOptions multiple times, and if any of those decides to re-create the view, then any prior adjustments are lost.

While I agree with the premise of this patch, it seems more appropriate to start fresh than to further mutate from current state. I&apos;ll see if this can be easily reverted now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117838</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-08-14 17:13:08 -0700</bug_when>
    <thetext>Bummer, the rollout doesn&apos;t apply cleanly any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117839</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-08-14 17:14:24 -0700</bug_when>
    <thetext>Anders, could you please take a look at this?

The known symptom is that when running any tiled-drawing test, we end up re-creating the view in TestController::ensureViewSupportsOptions. There may be other consequences, too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258519</attachid>
            <date>2015-08-07 12:38:23 -0700</date>
            <delta_ts>2015-08-07 13:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147791-20150807123812.patch</filename>
            <type>text/plain</type>
            <size>22256</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmQxNGQ1MjBlYzM0ZTE4ZDBkYTgzN2E1ODE0Y2IzMGM1
ZTZiMzFjYy4uYTdlZDVlYmY2NDFmMGVlMzgwZDUyMDNhNjNmMzkwOTZhZmEzYzIxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDE1LTA4LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgU2ltcGxpZnkgV0tUUidzIHZpZXcgb3B0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhIFdLRGljdGlv
bmFyeVJlZiwganVzdCB1c2UgYSBzdHJ1Y3QgZm9yIHRoZSBvcHRpb25zLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3OjpvcHRpb25zKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp2aWV3
U3VwcG9ydHNPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxp
emUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRp
b25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c09w
dGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6dXBkYXRlTGF5b3V0VHlwZUZv
clRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1ZpZXdPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5j
cHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAg
ICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbToKKyAgICAgICAgKFdU
Ujo6UGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1X
ZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QpOgorCiAyMDE1LTA4LTA3ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBhIHNwZWNpZmljIHZlcnNpb24g
b2YgU3BlZWRvbWV0ZXIgaW4gcnVuLWJlbmNobWFyawpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1XZWJWaWV3LmgKaW5kZXggZjJmMDgxMTJlODdmOGE5OTlkNmNlMDI4OTBhNjZkMTkyYjAy
NzFjMS4uMTRiNjYwY2YwYTg0NzQ2MzRmZGNkZTE1MGIzY2RiYTYyZWNhYWQ0ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIFBsYXRmb3JtV2ViVmlld19oCiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNs
dWRlICJWaWV3T3B0aW9ucy5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogCiAj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwpAQCAtNTEsNyArNTIsNyBAQCBuYW1l
c3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKIHB1YmxpYzoKLSAgICBQbGF0
Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgV0tQYWdlUmVmIHJlbGF0
ZWRQYWdlLCBXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IDApOworICAgIFBsYXRmb3JtV2ViVmll
dyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UsIGNv
bnN0IFZpZXdPcHRpb25zJik7CiAgICAgflBsYXRmb3JtV2ViVmlldygpOwogCiAgICAgV0tQYWdl
UmVmIHBhZ2UoKTsKQEAgLTc0LDE0ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5k
b3dJc0tleShib29sIGlzS2V5KSB7IG1fd2luZG93SXNLZXkgPSBpc0tleTsgfQogICAgIGJvb2wg
d2luZG93SXNLZXkoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd0lzS2V5OyB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oRUZMKQotICAgIGJvb2wgdmlld1N1cHBvcnRzT3B0aW9u
cyhXS0RpY3Rpb25hcnlSZWYpIGNvbnN0OwotI2Vsc2UKLSAgICBib29sIHZpZXdTdXBwb3J0c09w
dGlvbnMoV0tEaWN0aW9uYXJ5UmVmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYKKyAg
ICBib29sIHZpZXdTdXBwb3J0c09wdGlvbnMoY29uc3QgVmlld09wdGlvbnMmKSBjb25zdDsKIAog
ICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90SW1hZ2UoKTsKLSAgICBX
S0RpY3Rpb25hcnlSZWYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5nZXQoKTsg
fQorICAgIGNvbnN0IFZpZXdPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zOyB9CiAKICAgICB2b2lkIGNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxvYXQgbmV3U2Nh
bGUpOwogCkBAIC05NSw3ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1XS1ZpZXcgbV92
aWV3OwogICAgIFBsYXRmb3JtV2luZG93IG1fd2luZG93OwogICAgIGJvb2wgbV93aW5kb3dJc0tl
eTsKLSAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IG1fb3B0aW9uczsKKyAgICBjb25z
dCBWaWV3T3B0aW9ucyBtX29wdGlvbnM7CisKICNpZiBQTEFURk9STShFRkwpCiAgICAgYm9vbCBt
X3VzaW5nRml4ZWRMYXlvdXQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggYTM4YWY0MWM2YzYyMmFiNDAyODFkZjVhOTVjYTI4NzY2OGU3OTc3
OS4uOGRhNDNlNjUwZmFjYzU3ZWM1NzRjMjZmZTY5N2E4ZjgwYmZjNDZkNCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQzMiwyNiArNDMyLDE0IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkKICAgICAvLyBTb21lIHByZWZlcmVuY2VzIChub3RhYmx5IG1vY2sgc2Nyb2xsIGJhcnMgc2V0
dGluZykgY3VycmVudGx5IGNhbm5vdCBiZSByZS1hcHBsaWVkIHRvIGFuIGV4aXN0aW5nIHZpZXcs
IHNvIHdlIG5lZWQgdG8gc2V0IHRoZW0gbm93LgogICAgIHJlc2V0UHJlZmVyZW5jZXNUb0NvbnNp
c3RlbnRWYWx1ZXMoKTsKIAotICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+
IHZpZXdPcHRpb25zOwotICAgIGlmIChtX3Nob3VsZFVzZVJlbW90ZUxheWVyVHJlZSkgewotICAg
ICAgICB2aWV3T3B0aW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsK
LSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVJlbW90ZUxheWVyVHJlZUtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW90ZUxheWVyVHJlZSIp
KTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiB1c2VSZW1vdGVMYXllclRyZWVW
YWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1fc2hvdWxkVXNlUmVtb3RlTGF5ZXJUcmVl
KSk7Ci0gICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0odmlld09wdGlvbnMuZ2V0KCksIHVzZVJl
bW90ZUxheWVyVHJlZUtleS5nZXQoKSwgdXNlUmVtb3RlTGF5ZXJUcmVlVmFsdWUuZ2V0KCkpOwot
ICAgIH0KLQotICAgIGlmIChtX3Nob3VsZFNob3dXZWJWaWV3KSB7Ci0gICAgICAgIGlmICghdmll
d09wdGlvbnMpCi0gICAgICAgICAgICB2aWV3T3B0aW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGlj
dGlvbmFyeUNyZWF0ZSgpKTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNob3Vs
ZFNob3dXZWJWaWV3S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U2hvdWxkU2hvd1dlYlZpZXciKSk7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4g
c2hvdWxkU2hvd1dlYlZpZXdWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1fc2hvdWxk
U2hvd1dlYlZpZXcpKTsKLSAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSh2aWV3T3B0aW9ucy5n
ZXQoKSwgc2hvdWxkU2hvd1dlYlZpZXdLZXkuZ2V0KCksIHNob3VsZFNob3dXZWJWaWV3VmFsdWUu
Z2V0KCkpOwotICAgIH0KKyAgICBWaWV3T3B0aW9ucyB2aWV3T3B0aW9uczsKKyAgICB2aWV3T3B0
aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBtX3Nob3VsZFVzZVJlbW90ZUxheWVyVHJlZTsKKyAg
ICB2aWV3T3B0aW9ucy5zaG91bGRTaG93V2ViVmlldyA9IG1fc2hvdWxkU2hvd1dlYlZpZXc7CiAK
LSAgICBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnModmlld09wdGlvbnMuZ2V0KCkpOworICAgIGNy
ZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyh2aWV3T3B0aW9ucyk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBWaWV3
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KG1fY29udGV4dC5nZXQoKSwgbV9wYWdlR3JvdXAuZ2V0KCksIG51
bGxwdHIsIG9wdGlvbnMpOwogICAgIFdLUGFnZVVJQ2xpZW50VjUgcGFnZVVJQ2xpZW50ID0gewpA
QCAtNTU0LDcgKzU0Miw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRo
T3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykKICAgICBtX21haW5XZWJWaWV3LT5jaGFu
Z2VXaW5kb3dTY2FsZUlmTmVlZGVkKDEpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjplbnN1
cmVWaWV3U3VwcG9ydHNPcHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKQordm9pZCBUZXN0
Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9ucyhjb25zdCBWaWV3T3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAobV9tYWluV2ViVmlldyAmJiAhbV9tYWluV2ViVmlldy0+dmll
d1N1cHBvcnRzT3B0aW9ucyhvcHRpb25zKSkgewogICAgICAgICBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAwKTsKQEAgLTc5NywxMiArNzg1LDExIEBAIHN0YXRp
YyBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQog
CiB2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVMYXlvdXRUeXBlRm9yVGVzdChjb25zdCBUZXN0
SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBhdXRvIHZpZXdPcHRpb25zID0gYWRvcHRXSyhXS011
dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwotICAgIGF1dG8gdXNlRml4ZWRMYXlvdXRLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VGaXhlZExheW91dCIpKTsK
LSAgICBhdXRvIHVzZUZpeGVkTGF5b3V0VmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShz
aG91bGRVc2VGaXhlZExheW91dCh0ZXN0KSkpOwotICAgIFdLRGljdGlvbmFyeVNldEl0ZW0odmll
d09wdGlvbnMuZ2V0KCksIHVzZUZpeGVkTGF5b3V0S2V5LmdldCgpLCB1c2VGaXhlZExheW91dFZh
bHVlLmdldCgpKTsKKyAgICBWaWV3T3B0aW9ucyB2aWV3T3B0aW9uczsKKworICAgIHZpZXdPcHRp
b25zLnVzZUZpeGVkTGF5b3V0ID0gc2hvdWxkVXNlRml4ZWRMYXlvdXQodGVzdCk7CiAKLSAgICBl
bnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25zLmdldCgpKTsKKyAgICBlbnN1cmVW
aWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25zKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NP
QSkgJiYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCBjZGZjYWZmOTM4YzJhODNjYjhhMzhkMTlkMjgwNzU5OTVlNzNlOTE3Li45ODY4OWJm
MzAwNzVlZTgwZDAzMTA2NGVhN2M5YTE0MTljYzZiZTg0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXVFIgewogY2xh
c3MgVGVzdEludm9jYXRpb247CiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXc7CiBjbGFzcyBFdmVudFNl
bmRlclByb3h5Oworc3RydWN0IFZpZXdPcHRpb25zOwogCiAvLyBGSVhNRTogUmVuYW1lIHRoaXMg
VGVzdFJ1bm5lcj8KIGNsYXNzIFRlc3RDb250cm9sbGVyIHsKQEAgLTY3LDcgKzY4LDcgQEAgcHVi
bGljOgogCiAgICAgRXZlbnRTZW5kZXJQcm94eSogZXZlbnRTZW5kZXJQcm94eSgpIHsgcmV0dXJu
IG1fZXZlbnRTZW5kZXJQcm94eS5nZXQoKTsgfQogCi0gICAgdm9pZCBlbnN1cmVWaWV3U3VwcG9y
dHNPcHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKKyAgICB2b2lkIGVuc3VyZVZpZXdT
dXBwb3J0c09wdGlvbnMoY29uc3QgVmlld09wdGlvbnMmKTsKICAgICBib29sIHNob3VsZFVzZVJl
bW90ZUxheWVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXNlUmVtb3RlTGF5ZXJUcmVl
OyB9CiAgICAgCiAgICAgLy8gUnVucyB0aGUgcnVuIGxvb3AgdW50aWwgYGRvbmVgIGlzIHRydWUg
b3IgdGhlIHRpbWVvdXQgZWxhcHNlcy4KQEAgLTEyNCw3ICsxMjUsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
OwotICAgIHZvaWQgY3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKFdLRGljdGlvbmFyeVJlZik7Cisg
ICAgdm9pZCBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVmlld09wdGlvbnMmKTsKICAg
ICB2b2lkIHJ1bigpOwogCiAgICAgdm9pZCBydW5UZXN0aW5nU2VydmVyTG9vcCgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9WaWV3T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9WaWV3T3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YWM0YzU2ODZhNjhkYzYwYWUx
YzFlODZiMjRiYmE3OTU5OTU5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1ZpZXdPcHRpb25zLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVmlld09wdGlvbnNfaAorI2RlZmluZSBWaWV3T3B0aW9uc19oCisKK25hbWVzcGFjZSBXVFIg
eworCitzdHJ1Y3QgVmlld09wdGlvbnMgeworICAgIGJvb2wgdXNlVGhyZWFkZWRTY3JvbGxpbmcg
eyBmYWxzZSB9OworICAgIGJvb2wgdXNlUmVtb3RlTGF5ZXJUcmVlIHsgZmFsc2UgfTsKKyAgICBi
b29sIHNob3VsZFNob3dXZWJWaWV3IHsgZmFsc2UgfTsKKworICAgIGJvb2wgdXNlRml4ZWRMYXlv
dXQgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gVmlld09wdGlvbnNfaApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzg5NTcyZTg0MDc3NDgyZGIzMWUzYTEx
MWQ2YTBmNzY5ZGYxMDYwLi42ZDYyNjQ2ZTBkMDM4NjgwZTZjNjUxNDdjYTgyMTAzMWI0Mjc4YmI2
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3LDYgKzE0Nyw3IEBA
CiAJCTBGRUI5MDlFMTkwNUE3NzYwMDBGREJGMyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxl
UGFnZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVCOTBBMjE5MDVC
QzZBMDAwRkRCRjMgLyogQ3Jhc2hSZXBvcnRlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ3Jhc2hSZXBvcnRlckluZm8uaDsgcGF0aCA9IGNvY29hL0NyYXNoUmVwb3J0
ZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUI5MEEzMTkwNUJDNkEw
MDBGREJGMyAvKiBDcmFzaFJlcG9ydGVySW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IENyYXNoUmVwb3J0ZXJJbmZvLm1tOyBwYXRoID0gY29jb2EvQ3Jhc2hS
ZXBvcnRlckluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMzMyNjA1MUI3
NTM5NjUwMEY4OUY2MiAvKiBWaWV3T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3T3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkQ3NThFNTE2MEJFQ0RDMDAyNjg0
NzIgLyogR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyNkQ3NThFNjE2MEJFQ0REMDAyNjg0NzIgLyogR2VvbG9jYXRpb25Q
cm92aWRlck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRp
b25Qcm92aWRlck1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMTBFQTIx
NDRDQUFBNTAwODM1QkI1IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MSw2ICszNjIsNyBAQAogCQkJCUJDNzkz
NDJGMTE4RjdGMTkwMDVFQThFMiAvKiBUZXN0Q29udHJvbGxlci5oICovLAogCQkJCUJDRDdEMkY3
MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5jcHAgKi8sCiAJCQkJQkNEN0QyRjYx
MTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmggKi8sCisJCQkJMUEzMzI2MDUxQjc1
Mzk2NTAwRjg5RjYyIC8qIFZpZXdPcHRpb25zLmggKi8sCiAJCQkJQkMyNTFBMTcxMUQxNjc3NDAw
MkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJQcmVmaXguaCAqLywKIAkJCQkzMTY0QzhFRjE1RDFB
REExMDBFRjFGRTAgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwICovLAogCQkJCTMxMTBC
RTBGMTVCQTAxMTQwMEQyMTZBQyAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKaW5k
ZXggZDgyNjcxMGFjZGI4MzExOTE4NTRjNGZjZTBjNTc3ZWI1N2I5M2RmNS4uMWU2YjNiZTNlYWU2
YjhlYjUzNDlhNjJlZDRmNjZhNmVkY2RkMzBiOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgc3Rh
dGljIEVjb3JlX0V2YXMqIGluaXRFY29yZUV2YXMoKQogICAgIHJldHVybiBlY29yZUV2YXM7CiB9
CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLUGFnZVJlZiAvKiByZWxhdGVkUGFnZSAqLywg
V0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmll
dyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS1BhZ2VS
ZWYgLyogcmVsYXRlZFBhZ2UgKi8sIGNvbnN0IFZpZXdPcHRpb25zJiBvcHRpb25zKQogICAgIDog
bV9vcHRpb25zKG9wdGlvbnMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZUZp
eGVkTGF5b3V0S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VG
aXhlZExheW91dCIpKTsKLSAgICBtX3VzaW5nRml4ZWRMYXlvdXQgPSBvcHRpb25zID8gV0tCb29s
ZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG9wdGlvbnMsIHVzZUZpeGVkTGF5b3V0S2V5LmdldCgpKSkpIDogZmFsc2U7CisgICAg
bV91c2luZ0ZpeGVkTGF5b3V0ID0gb3B0aW9ucy51c2VGaXhlZExheW91dDsKIAogICAgIG1fd2lu
ZG93ID0gaW5pdEVjb3JlRXZhcygpOwogCkBAIC0xNDIsMTEgKzE0MiwxMiBAQCBXS1JldGFpblB0
cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogICAg
IHJldHVybiBhZG9wdFdLKFdLVmlld0NyZWF0ZVNuYXBzaG90KEVXS1ZpZXdHZXRXS1ZpZXcobV92
aWV3KSkpOwogfQogCi1ib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhX
S0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QKK2Jvb2wgUGxhdGZvcm1XZWJWaWV3Ojp2aWV3
U3VwcG9ydHNPcHRpb25zKGNvbnN0IFZpZXdPcHRpb25zJiBvcHRpb25zKSBjb25zdAogewotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VGaXhlZExheW91dEtleShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlRml4ZWRMYXlvdXQiKSk7CisgICAgaWYgKG1f
b3B0aW9ucy51c2VGaXhlZExheW91dCAhPSBvcHRpb25zLnVzZUZpeGVkTGF5b3V0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV91c2luZ0ZpeGVkTGF5b3V0ID09IChvcHRp
b25zID8gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVzZUZpeGVkTGF5b3V0S2V5LmdldCgpKSkpIDog
ZmFsc2UpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6ZGlk
SW5pdGlhbGl6ZUNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Bs
YXRmb3JtV2ViVmlld0d0ay5jcHAKaW5kZXggZDVhODBkZDQ2MjY3NWQwZjU4NjZkZDVhNGZlMTYz
NDY0YzliNmE0Yy4uNzVjOWIwZGQ1ZjRhZGI0NDdhNWU1NTMwOWJiNzZiNjIzMWFlNTBlOCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3Bw
CkBAIC0xNDEsNiArMTQxLDExIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXpl
Q2xpZW50cygpCiB7CiB9CiAKK2Jvb2wgUGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRp
b25zKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
dm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmRpc21pc3NBbGxQb3B1cE1lbnVzKCkKIHsKICAgICAvLyBn
dGtfbWVudV9wb3Bkb3duIGRvZXNuJ3QgbW9kaWZ5IHRoZSBHTGlzdCBvZiBhdHRhY2hlZCBtZW51
cywgc28gaXQgc2hvdWxkCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9Q
bGF0Zm9ybVdlYlZpZXdJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9y
bVdlYlZpZXdJT1MubW0KaW5kZXggMTU1MzFiYjE3NzJkMmU2ODJiMTc3ZGM2YmUzZDNhNDZkMTgx
M2E1NS4uZmVhYmMyNThjZjVjYjJkM2ZkY2Q3NmVmNzgzZmI3MDU4NzQxMWRjOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQpAQCAtMjI5
LDEzICsyMjksMTIgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3
aW5kb3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gMDsgLy8gRklYTUUgZm9yIGlPUz8KIH0K
IAotYm9vbCBQbGF0Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5
UmVmIG9wdGlvbnMpIGNvbnN0Citib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0
aW9ucyhjb3N0IFZpZXdPcHRpb25zJiBvcHRpb25zKSBjb25zdAogewotICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB1c2VUaWxlZERyYXdpbmdLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlRpbGVkRHJhd2luZyIpKTsKLSAgICBXS1R5cGVSZWYgdXNlVGlsZWRE
cmF3aW5nVmFsdWUgPSBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVzZVRpbGVk
RHJhd2luZ0tleS5nZXQoKSk7Ci0gICAgYm9vbCB1c2VUaWxlZERyYXdpbmcgPSB1c2VUaWxlZERy
YXdpbmdWYWx1ZSAmJiBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KHVzZVRpbGVkRHJhd2luZ1ZhbHVlKSk7CisgICAgaWYgKG1fb3B0aW9ucy51c2VUaWxlZERyYXdp
bmcgIT0gb3B0aW9ucy51c2VUaWxlZERyYXdpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiB1c2VUaWxlZERyYXdpbmcgPT0gWyhUZXN0UnVubmVyV0tWaWV3ICopbV92aWV3
IHVzZVRpbGVkRHJhd2luZ107CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFj
Lm1tCmluZGV4IDUwNWZkNmVmOTBjMWEyMmY5NWIyM2Y5MzVlZWM5ZDM4NTBmMzM0N2UuLjE2Zjg2
N2RhNTI5YmZkOWE5N2I3NTQ4YmY0MmU0NDY1YWZiNzFlNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTExOSw0MCArMTE5LDMw
IEBAIGVudW0gewogCiBuYW1lc3BhY2UgV1RSIHsKIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9y
bVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgV0tQYWdlUmVmIHJlbGF0ZWRQYWdlLCBXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykKK1Bs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLUGFnZVJlZiByZWxhdGVkUGFnZSwgY29uc3Qg
Vmlld09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX3dpbmRvd0lzS2V5KHRydWUpCiAgICAgLCBt
X29wdGlvbnMob3B0aW9ucykKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlVGhy
ZWFkZWRTY3JvbGxpbmdLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlRocmVhZGVkU2Nyb2xsaW5nIikpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VS
ZW1vdGVMYXllclRyZWVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlJlbW90ZUxheWVyVHJlZSIpKTsKLSAgICBXS1R5cGVSZWYgdXNlVGhyZWFkZWRTY3JvbGxpbmdW
YWx1ZSA9IG9wdGlvbnMgPyBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVzZVRo
cmVhZGVkU2Nyb2xsaW5nS2V5LmdldCgpKSA6IE5VTEw7Ci0gICAgYm9vbCB1c2VUaHJlYWRlZFNj
cm9sbGluZyA9IHVzZVRocmVhZGVkU2Nyb2xsaW5nVmFsdWUgJiYgV0tCb29sZWFuR2V0VmFsdWUo
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPih1c2VUaHJlYWRlZFNjcm9sbGluZ1ZhbHVlKSk7Ci0K
ICAgICAvLyBUaGUgdGlsZWQgZHJhd2luZyBzcGVjaWZpYyB0ZXN0cyBhbHNvIGRlcGVuZCBvbiB0
aHJlYWRlZCBzY3JvbGxpbmcuCiAgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdL
UGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwUmVmKTsKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0VGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkKHByZWZlcmVuY2VzLCB1c2VUaHJlYWRlZFNjcm9s
bGluZyk7CisgICAgV0tQcmVmZXJlbmNlc1NldFRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZChwcmVm
ZXJlbmNlcywgbV9vcHRpb25zLnVzZVRocmVhZGVkU2Nyb2xsaW5nKTsKIAogICAgIC8vIEZJWE1F
OiBOb3Qgc3VyZSB0aGlzIGlzIHRoZSBiZXN0IHBsYWNlIGZvciB0aGlzOyBtYXliZSB3ZSBzaG91
bGQgaGF2ZSBBUEkgdG8gc2V0IHRoaXMgc28gd2UgY2FuIGRvIGl0IGZyb20gVGVzdENvbnRyb2xs
ZXI/Ci0gICAgV0tUeXBlUmVmIHVzZVJlbW90ZUxheWVyVHJlZVZhbHVlID0gb3B0aW9ucyA/IFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlUmVtb3RlTGF5ZXJUcmVlS2V5Lmdl
dCgpKSA6IE5VTEw7Ci0gICAgaWYgKHVzZVJlbW90ZUxheWVyVHJlZVZhbHVlICYmIFdLQm9vbGVh
bkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4odXNlUmVtb3RlTGF5ZXJUcmVlVmFs
dWUpKSkKKyAgICBpZiAobV9vcHRpb25zLnVzZVJlbW90ZUxheWVyVHJlZSkKICAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0VmFsdWU6QFlFUyBmb3JLZXk6
QCJXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXTsKIAogICAgIE5TUmVjdCBy
ZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBUZXN0Q29udHJvbGxlcjo6dmlld1dpZHRoLCBUZXN0Q29u
dHJvbGxlcjo6dmlld0hlaWdodCk7Ci0gICAgbV92aWV3ID0gW1tUZXN0UnVubmVyV0tWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJl
ZjpwYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZTpyZWxhdGVkUGFnZSB1c2VUaHJlYWRlZFNjcm9s
bGluZzp1c2VUaHJlYWRlZFNjcm9sbGluZ107CisgICAgbV92aWV3ID0gW1tUZXN0UnVubmVyV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VH
cm91cFJlZjpwYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZTpyZWxhdGVkUGFnZSB1c2VUaHJlYWRl
ZFNjcm9sbGluZzptX29wdGlvbnMudXNlVGhyZWFkZWRTY3JvbGxpbmddOwogICAgIFttX3ZpZXcg
c2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CiAKLSAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gc2hvdWxkU2hvd1dlYlZpZXdLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlNob3VsZFNob3dXZWJWaWV3IikpOwotICAgIFdLVHlwZVJlZiBz
aG91bGRTaG93V2ViVmlld1ZhbHVlID0gb3B0aW9ucyA/IFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkob3B0aW9ucywgc2hvdWxkU2hvd1dlYlZpZXdLZXkuZ2V0KCkpIDogTlVMTDsKLSAgICBib29s
IHNob3VsZFNob3dXZWJWaWV3ID0gc2hvdWxkU2hvd1dlYlZpZXdWYWx1ZSAmJiBXS0Jvb2xlYW5H
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHNob3VsZFNob3dXZWJWaWV3VmFsdWUp
KTsKLQogICAgIE5TU2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gb2Jq
ZWN0QXRJbmRleDowXTsKLSAgICBOU1JlY3Qgd2luZG93UmVjdCA9IChzaG91bGRTaG93V2ViVmll
dykgPyBOU09mZnNldFJlY3QocmVjdCwgMTAwLCAxMDApIDogTlNPZmZzZXRSZWN0KHJlY3QsIC0x
MDAwMCwgW2ZpcnN0U2NyZWVuIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQg
KyAxMDAwMCk7CisgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBtX29wdGlvbnMuc2hvdWxkU2hvd1dl
YlZpZXcgPyBOU09mZnNldFJlY3QocmVjdCwgMTAwLCAxMDApIDogTlNPZmZzZXRSZWN0KHJlY3Qs
IC0xMDAwMCwgW2ZpcnN0U2NyZWVuIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWln
aHQgKyAxMDAwMCk7CiAgICAgbV93aW5kb3cgPSBbW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOihOU0JhY2tpbmdTdG9yZVR5cGUpX05TQmFja2luZ1N0b3JlVW5i
dWZmZXJlZCBkZWZlcjpZRVNdOwogICAgIG1fd2luZG93LnBsYXRmb3JtV2ViVmlldyA9IHRoaXM7
CiAgICAgW21fd2luZG93IHNldENvbG9yU3BhY2U6W2ZpcnN0U2NyZWVuIGNvbG9yU3BhY2VdXTsK
ICAgICBbbV93aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93Q29sbGVjdGlvbkJl
aGF2aW9yU3RhdGlvbmFyeV07CiAgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmll
dzptX3ZpZXddOwotICAgIGlmIChzaG91bGRTaG93V2ViVmlldykKKyAgICBpZiAobV9vcHRpb25z
LnNob3VsZFNob3dXZWJWaWV3KQogICAgICAgICBbbV93aW5kb3cgb3JkZXJGcm9udDpuaWxdOwog
ICAgIGVsc2UKICAgICAgICAgW21fd2luZG93IG9yZGVyQmFjazpuaWxdOwpAQCAtMjQ5LDEzICsy
MzksMTIgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dT
bmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2Uod2luZG93U25hcHNob3RJbWFnZS5nZXQoKSwgMCkpOwogfQogCi1ib29sIFBsYXRmb3JtV2Vi
Vmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QK
K2Jvb2wgUGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKGNvbnN0IFZpZXdPcHRp
b25zJiBvcHRpb25zKSBjb25zdAogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VU
aHJlYWRlZFNjcm9sbGluZ0tleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiVGhyZWFkZWRTY3JvbGxpbmciKSk7Ci0gICAgV0tUeXBlUmVmIHVzZVRocmVhZGVkU2Nyb2xs
aW5nVmFsdWUgPSBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVzZVRocmVhZGVk
U2Nyb2xsaW5nS2V5LmdldCgpKTsKLSAgICBib29sIHVzZVRocmVhZGVkU2Nyb2xsaW5nID0gdXNl
VGhyZWFkZWRTY3JvbGxpbmdWYWx1ZSAmJiBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KHVzZVRocmVhZGVkU2Nyb2xsaW5nVmFsdWUpKTsKKyAgICBpZiAobV9vcHRp
b25zLnVzZVRocmVhZGVkU2Nyb2xsaW5nICE9IG9wdGlvbnMudXNlVGhyZWFkZWRTY3JvbGxpbmcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiB1c2VUaHJlYWRlZFNjcm9sbGlu
ZyA9PSBbKFRlc3RSdW5uZXJXS1ZpZXcgKiltX3ZpZXcgdXNlVGhyZWFkZWRTY3JvbGxpbmddOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93
U2NhbGVJZk5lZWRlZChmbG9hdCBuZXdTY2FsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMmJjYWVjMzNjMTVlYmE0NDJjNTk1Mzc1
ZDYzNWNkMzAxODY0ZTM4MC4uMDM3OTM5OTVmNDVlOGNmNWJlNzgxZGM5NDFlNDliZjcxMzM3MTMy
NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTk4LDIwICs5OCwxMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0
UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQog
ewotICAgIGF1dG8gdmlld09wdGlvbnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVh
dGUoKSk7Ci0gICAgYXV0byB1c2VUaHJlYWRlZFNjcm9sbGluZ0tleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRocmVhZGVkU2Nyb2xsaW5nIikpOwotICAgIGF1dG8g
dXNlVGhyZWFkZWRTY3JvbGxpbmdWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3Vs
ZFVzZVRocmVhZGVkU2Nyb2xsaW5nKHRlc3QpKSk7Ci0gICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSh2
aWV3T3B0aW9ucy5nZXQoKSwgdXNlVGhyZWFkZWRTY3JvbGxpbmdLZXkuZ2V0KCksIHVzZVRocmVh
ZGVkU2Nyb2xsaW5nVmFsdWUuZ2V0KCkpOworICAgIFZpZXdPcHRpb25zIHZpZXdPcHRpb25zOwog
Ci0gICAgYXV0byB1c2VSZW1vdGVMYXllclRyZWVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJSZW1vdGVMYXllclRyZWUiKSk7Ci0gICAgYXV0byB1c2VSZW1vdGVM
YXllclRyZWVWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZFVzZVJlbW90ZUxh
eWVyVHJlZSgpKSk7Ci0gICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSh2aWV3T3B0aW9ucy5nZXQoKSwg
dXNlUmVtb3RlTGF5ZXJUcmVlS2V5LmdldCgpLCB1c2VSZW1vdGVMYXllclRyZWVWYWx1ZS5nZXQo
KSk7CisgICAgdmlld09wdGlvbnMudXNlVGhyZWFkZWRTY3JvbGxpbmcgPSBzaG91bGRVc2VUaHJl
YWRlZFNjcm9sbGluZyh0ZXN0KTsKKyAgICB2aWV3T3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUg
PSBzaG91bGRVc2VSZW1vdGVMYXllclRyZWUoKTsKKyAgICB2aWV3T3B0aW9ucy5zaG91bGRTaG93
V2ViVmlldyA9IHNob3VsZFNob3dXZWJWaWV3KCk7CiAKLSAgICBhdXRvIHNob3VsZFNob3dXZWJW
aWV3S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2hvdWxkU2hv
d1dlYlZpZXciKSk7Ci0gICAgYXV0byBzaG91bGRTaG93V2ViVmlld1ZhbHVlID0gYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUoc2hvdWxkU2hvd1dlYlZpZXcoKSkpOwotICAgIFdLRGljdGlvbmFyeVNl
dEl0ZW0odmlld09wdGlvbnMuZ2V0KCksIHNob3VsZFNob3dXZWJWaWV3S2V5LmdldCgpLCBzaG91
bGRTaG93V2ViVmlld1ZhbHVlLmdldCgpKTsKLQotICAgIGVuc3VyZVZpZXdTdXBwb3J0c09wdGlv
bnModmlld09wdGlvbnMuZ2V0KCkpOworICAgIGVuc3VyZVZpZXdTdXBwb3J0c09wdGlvbnModmll
d09wdGlvbnMpOwogCiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBpZiAoIXRlc3QudXJsQ29udGFp
bnMoImNvbnRlbnRleHRlbnNpb25zLyIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258523</attachid>
            <date>2015-08-07 13:22:21 -0700</date>
            <delta_ts>2015-08-07 13:24:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147791-20150807132210.patch</filename>
            <type>text/plain</type>
            <size>23646</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmQxNGQ1MjBlYzM0ZTE4ZDBkYTgzN2E1ODE0Y2IzMGM1
ZTZiMzFjYy4uYTdlZDVlYmY2NDFmMGVlMzgwZDUyMDNhNjNmMzkwOTZhZmEzYzIxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDE1LTA4LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgU2ltcGxpZnkgV0tUUidzIHZpZXcgb3B0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhIFdLRGljdGlv
bmFyeVJlZiwganVzdCB1c2UgYSBzdHJ1Y3QgZm9yIHRoZSBvcHRpb25zLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3OjpvcHRpb25zKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp2aWV3
U3VwcG9ydHNPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxp
emUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRp
b25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c09w
dGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6dXBkYXRlTGF5b3V0VHlwZUZv
clRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1ZpZXdPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5j
cHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAg
ICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbToKKyAgICAgICAgKFdU
Ujo6UGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1X
ZWJWaWV3Ojp2aWV3U3VwcG9ydHNPcHRpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QpOgorCiAyMDE1LTA4LTA3ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBhIHNwZWNpZmljIHZlcnNpb24g
b2YgU3BlZWRvbWV0ZXIgaW4gcnVuLWJlbmNobWFyawpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1XZWJWaWV3LmgKaW5kZXggZjJmMDgxMTJlODdmOGE5OTlkNmNlMDI4OTBhNjZkMTkyYjAy
NzFjMS4uMTRiNjYwY2YwYTg0NzQ2MzRmZGNkZTE1MGIzY2RiYTYyZWNhYWQ0ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIFBsYXRmb3JtV2ViVmlld19oCiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNs
dWRlICJWaWV3T3B0aW9ucy5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogCiAj
aWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwpAQCAtNTEsNyArNTIsNyBAQCBuYW1l
c3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKIHB1YmxpYzoKLSAgICBQbGF0
Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgV0tQYWdlUmVmIHJlbGF0
ZWRQYWdlLCBXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IDApOworICAgIFBsYXRmb3JtV2ViVmll
dyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UsIGNv
bnN0IFZpZXdPcHRpb25zJik7CiAgICAgflBsYXRmb3JtV2ViVmlldygpOwogCiAgICAgV0tQYWdl
UmVmIHBhZ2UoKTsKQEAgLTc0LDE0ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5k
b3dJc0tleShib29sIGlzS2V5KSB7IG1fd2luZG93SXNLZXkgPSBpc0tleTsgfQogICAgIGJvb2wg
d2luZG93SXNLZXkoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd0lzS2V5OyB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oRUZMKQotICAgIGJvb2wgdmlld1N1cHBvcnRzT3B0aW9u
cyhXS0RpY3Rpb25hcnlSZWYpIGNvbnN0OwotI2Vsc2UKLSAgICBib29sIHZpZXdTdXBwb3J0c09w
dGlvbnMoV0tEaWN0aW9uYXJ5UmVmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYKKyAg
ICBib29sIHZpZXdTdXBwb3J0c09wdGlvbnMoY29uc3QgVmlld09wdGlvbnMmKSBjb25zdDsKIAog
ICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90SW1hZ2UoKTsKLSAgICBX
S0RpY3Rpb25hcnlSZWYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5nZXQoKTsg
fQorICAgIGNvbnN0IFZpZXdPcHRpb25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zOyB9CiAKICAgICB2b2lkIGNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxvYXQgbmV3U2Nh
bGUpOwogCkBAIC05NSw3ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1XS1ZpZXcgbV92
aWV3OwogICAgIFBsYXRmb3JtV2luZG93IG1fd2luZG93OwogICAgIGJvb2wgbV93aW5kb3dJc0tl
eTsKLSAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IG1fb3B0aW9uczsKKyAgICBjb25z
dCBWaWV3T3B0aW9ucyBtX29wdGlvbnM7CisKICNpZiBQTEFURk9STShFRkwpCiAgICAgYm9vbCBt
X3VzaW5nRml4ZWRMYXlvdXQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggYTM4YWY0MWM2YzYyMmFiNDAyODFkZjVhOTVjYTI4NzY2OGU3OTc3
OS4uOGRhNDNlNjUwZmFjYzU3ZWM1NzRjMjZmZTY5N2E4ZjgwYmZjNDZkNCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQzMiwyNiArNDMyLDE0IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkKICAgICAvLyBTb21lIHByZWZlcmVuY2VzIChub3RhYmx5IG1vY2sgc2Nyb2xsIGJhcnMgc2V0
dGluZykgY3VycmVudGx5IGNhbm5vdCBiZSByZS1hcHBsaWVkIHRvIGFuIGV4aXN0aW5nIHZpZXcs
IHNvIHdlIG5lZWQgdG8gc2V0IHRoZW0gbm93LgogICAgIHJlc2V0UHJlZmVyZW5jZXNUb0NvbnNp
c3RlbnRWYWx1ZXMoKTsKIAotICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+
IHZpZXdPcHRpb25zOwotICAgIGlmIChtX3Nob3VsZFVzZVJlbW90ZUxheWVyVHJlZSkgewotICAg
ICAgICB2aWV3T3B0aW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsK
LSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVJlbW90ZUxheWVyVHJlZUtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlbW90ZUxheWVyVHJlZSIp
KTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiB1c2VSZW1vdGVMYXllclRyZWVW
YWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1fc2hvdWxkVXNlUmVtb3RlTGF5ZXJUcmVl
KSk7Ci0gICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0odmlld09wdGlvbnMuZ2V0KCksIHVzZVJl
bW90ZUxheWVyVHJlZUtleS5nZXQoKSwgdXNlUmVtb3RlTGF5ZXJUcmVlVmFsdWUuZ2V0KCkpOwot
ICAgIH0KLQotICAgIGlmIChtX3Nob3VsZFNob3dXZWJWaWV3KSB7Ci0gICAgICAgIGlmICghdmll
d09wdGlvbnMpCi0gICAgICAgICAgICB2aWV3T3B0aW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGlj
dGlvbmFyeUNyZWF0ZSgpKTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNob3Vs
ZFNob3dXZWJWaWV3S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U2hvdWxkU2hvd1dlYlZpZXciKSk7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4g
c2hvdWxkU2hvd1dlYlZpZXdWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG1fc2hvdWxk
U2hvd1dlYlZpZXcpKTsKLSAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSh2aWV3T3B0aW9ucy5n
ZXQoKSwgc2hvdWxkU2hvd1dlYlZpZXdLZXkuZ2V0KCksIHNob3VsZFNob3dXZWJWaWV3VmFsdWUu
Z2V0KCkpOwotICAgIH0KKyAgICBWaWV3T3B0aW9ucyB2aWV3T3B0aW9uczsKKyAgICB2aWV3T3B0
aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBtX3Nob3VsZFVzZVJlbW90ZUxheWVyVHJlZTsKKyAg
ICB2aWV3T3B0aW9ucy5zaG91bGRTaG93V2ViVmlldyA9IG1fc2hvdWxkU2hvd1dlYlZpZXc7CiAK
LSAgICBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnModmlld09wdGlvbnMuZ2V0KCkpOworICAgIGNy
ZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyh2aWV3T3B0aW9ucyk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBWaWV3
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KG1fY29udGV4dC5nZXQoKSwgbV9wYWdlR3JvdXAuZ2V0KCksIG51
bGxwdHIsIG9wdGlvbnMpOwogICAgIFdLUGFnZVVJQ2xpZW50VjUgcGFnZVVJQ2xpZW50ID0gewpA
QCAtNTU0LDcgKzU0Miw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRo
T3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykKICAgICBtX21haW5XZWJWaWV3LT5jaGFu
Z2VXaW5kb3dTY2FsZUlmTmVlZGVkKDEpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjplbnN1
cmVWaWV3U3VwcG9ydHNPcHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKQordm9pZCBUZXN0
Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9ucyhjb25zdCBWaWV3T3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAobV9tYWluV2ViVmlldyAmJiAhbV9tYWluV2ViVmlldy0+dmll
d1N1cHBvcnRzT3B0aW9ucyhvcHRpb25zKSkgewogICAgICAgICBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAwKTsKQEAgLTc5NywxMiArNzg1LDExIEBAIHN0YXRp
YyBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQog
CiB2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVMYXlvdXRUeXBlRm9yVGVzdChjb25zdCBUZXN0
SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBhdXRvIHZpZXdPcHRpb25zID0gYWRvcHRXSyhXS011
dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwotICAgIGF1dG8gdXNlRml4ZWRMYXlvdXRLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VGaXhlZExheW91dCIpKTsK
LSAgICBhdXRvIHVzZUZpeGVkTGF5b3V0VmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShz
aG91bGRVc2VGaXhlZExheW91dCh0ZXN0KSkpOwotICAgIFdLRGljdGlvbmFyeVNldEl0ZW0odmll
d09wdGlvbnMuZ2V0KCksIHVzZUZpeGVkTGF5b3V0S2V5LmdldCgpLCB1c2VGaXhlZExheW91dFZh
bHVlLmdldCgpKTsKKyAgICBWaWV3T3B0aW9ucyB2aWV3T3B0aW9uczsKKworICAgIHZpZXdPcHRp
b25zLnVzZUZpeGVkTGF5b3V0ID0gc2hvdWxkVXNlRml4ZWRMYXlvdXQodGVzdCk7CiAKLSAgICBl
bnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25zLmdldCgpKTsKKyAgICBlbnN1cmVW
aWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25zKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NP
QSkgJiYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCBjZGZjYWZmOTM4YzJhODNjYjhhMzhkMTlkMjgwNzU5OTVlNzNlOTE3Li45ODY4OWJm
MzAwNzVlZTgwZDAzMTA2NGVhN2M5YTE0MTljYzZiZTg0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXVFIgewogY2xh
c3MgVGVzdEludm9jYXRpb247CiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXc7CiBjbGFzcyBFdmVudFNl
bmRlclByb3h5Oworc3RydWN0IFZpZXdPcHRpb25zOwogCiAvLyBGSVhNRTogUmVuYW1lIHRoaXMg
VGVzdFJ1bm5lcj8KIGNsYXNzIFRlc3RDb250cm9sbGVyIHsKQEAgLTY3LDcgKzY4LDcgQEAgcHVi
bGljOgogCiAgICAgRXZlbnRTZW5kZXJQcm94eSogZXZlbnRTZW5kZXJQcm94eSgpIHsgcmV0dXJu
IG1fZXZlbnRTZW5kZXJQcm94eS5nZXQoKTsgfQogCi0gICAgdm9pZCBlbnN1cmVWaWV3U3VwcG9y
dHNPcHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKTsKKyAgICB2b2lkIGVuc3VyZVZpZXdT
dXBwb3J0c09wdGlvbnMoY29uc3QgVmlld09wdGlvbnMmKTsKICAgICBib29sIHNob3VsZFVzZVJl
bW90ZUxheWVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXNlUmVtb3RlTGF5ZXJUcmVl
OyB9CiAgICAgCiAgICAgLy8gUnVucyB0aGUgcnVuIGxvb3AgdW50aWwgYGRvbmVgIGlzIHRydWUg
b3IgdGhlIHRpbWVvdXQgZWxhcHNlcy4KQEAgLTEyNCw3ICsxMjUsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
OwotICAgIHZvaWQgY3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKFdLRGljdGlvbmFyeVJlZik7Cisg
ICAgdm9pZCBjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVmlld09wdGlvbnMmKTsKICAg
ICB2b2lkIHJ1bigpOwogCiAgICAgdm9pZCBydW5UZXN0aW5nU2VydmVyTG9vcCgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9WaWV3T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9WaWV3T3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NjBhZjdmZTZmYmE5ZDBiZWE4
OTFkYTExZjc1YTdkODUyYmNlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1ZpZXdPcHRpb25zLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVmlld09wdGlvbnNfaAorI2RlZmluZSBWaWV3T3B0aW9uc19oCisKK25hbWVzcGFjZSBXVFIg
eworCitzdHJ1Y3QgVmlld09wdGlvbnMgeworICAgIGJvb2wgdXNlVGhyZWFkZWRTY3JvbGxpbmcg
eyBmYWxzZSB9OworICAgIGJvb2wgdXNlUmVtb3RlTGF5ZXJUcmVlIHsgZmFsc2UgfTsKKyAgICBi
b29sIHNob3VsZFNob3dXZWJWaWV3IHsgZmFsc2UgfTsKKyAgICBib29sIHVzZVRpbGVkRHJhd2lu
ZyB7IGZhbHNlIH07CisKKyAgICBib29sIHVzZUZpeGVkTGF5b3V0IHsgZmFsc2UgfTsKK307CisK
K30KKworI2VuZGlmIC8vIFZpZXdPcHRpb25zX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzc4OTU3MmU4NDA3NzQ4MmRiMzFlM2ExMTFkNmEwZjc2OWRmMTA2MC4uNmQ2
MjY0NmUwZDAzODY4MGU2YzY1MTQ3Y2E4MjEwMzFiNDI3OGJiNiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE0Nyw2ICsxNDcsNyBAQAogCQkwRkVCOTA5RTE5MDVBNzc2
MDAwRkRCRjMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjkwQTIxOTA1QkM2QTAwMEZEQkYzIC8qIENyYXNo
UmVwb3J0ZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENyYXNoUmVw
b3J0ZXJJbmZvLmg7IHBhdGggPSBjb2NvYS9DcmFzaFJlcG9ydGVySW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkVCOTBBMzE5MDVCQzZBMDAwRkRCRjMgLyogQ3Jhc2hSZXBv
cnRlckluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDcmFz
aFJlcG9ydGVySW5mby5tbTsgcGF0aCA9IGNvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTMzMjYwNTFCNzUzOTY1MDBGODlGNjIgLyogVmll
d09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjZENzU4RTUxNjBCRUNEQzAwMjY4NDcyIC8qIEdlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZE
NzU4RTYxNjBCRUNERDAwMjY4NDcyIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUEyMTQ0Q0FBQTUwMDgzNUJCNSAvKiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNjEsNiArMzYyLDcgQEAKIAkJCQlCQzc5MzQyRjExOEY3RjE5MDA1RUE4RTIg
LyogVGVzdENvbnRyb2xsZXIuaCAqLywKIAkJCQlCQ0Q3RDJGNzExOTIxMjc4MDA2REI3RUUgLyog
VGVzdEludm9jYXRpb24uY3BwICovLAogCQkJCUJDRDdEMkY2MTE5MjEyNzgwMDZEQjdFRSAvKiBU
ZXN0SW52b2NhdGlvbi5oICovLAorCQkJCTFBMzMyNjA1MUI3NTM5NjUwMEY4OUY2MiAvKiBWaWV3
T3B0aW9ucy5oICovLAogCQkJCUJDMjUxQTE3MTFEMTY3NzQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0
UnVubmVyUHJlZml4LmggKi8sCiAJCQkJMzE2NEM4RUYxNUQxQURBMTAwRUYxRkUwIC8qIFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcCAqLywKIAkJCQkzMTEwQkUwRjE1QkEwMTE0MDBEMjE2QUMg
LyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCmluZGV4IGQ4MjY3MTBhY2RiODMxMTkx
ODU0YzRmY2UwYzU3N2ViNTdiOTNkZjUuLjFlNmIzYmUzZWFlNmI4ZWI1MzQ5YTYyZWQ0ZjY2YTZl
ZGNkZDMwYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3Jt
V2ViVmlld0VmbC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1X
ZWJWaWV3RWZsLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIHN0YXRpYyBFY29yZV9FdmFzKiBpbml0
RWNvcmVFdmFzKCkKICAgICByZXR1cm4gZWNvcmVFdmFzOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwLCBXS1BhZ2VSZWYgLyogcmVsYXRlZFBhZ2UgKi8sIFdLRGljdGlvbmFyeVJlZiBvcHRp
b25zKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tQYWdlUmVmIC8qIHJlbGF0ZWRQYWdlICov
LCBjb25zdCBWaWV3T3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fb3B0aW9ucyhvcHRpb25zKQog
ewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VGaXhlZExheW91dEtleShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlRml4ZWRMYXlvdXQiKSk7Ci0gICAg
bV91c2luZ0ZpeGVkTGF5b3V0ID0gb3B0aW9ucyA/IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShvcHRpb25zLCB1c2VG
aXhlZExheW91dEtleS5nZXQoKSkpKSA6IGZhbHNlOworICAgIG1fdXNpbmdGaXhlZExheW91dCA9
IG9wdGlvbnMudXNlRml4ZWRMYXlvdXQ7CiAKICAgICBtX3dpbmRvdyA9IGluaXRFY29yZUV2YXMo
KTsKIApAQCAtMTQyLDExICsxNDIsMTIgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZv
cm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKICAgICByZXR1cm4gYWRvcHRXSyhXS1Zp
ZXdDcmVhdGVTbmFwc2hvdChFV0tWaWV3R2V0V0tWaWV3KG1fdmlldykpKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlv
bnMpIGNvbnN0Citib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhjb25z
dCBWaWV3T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gdXNlRml4ZWRMYXlvdXRLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlVzZUZpeGVkTGF5b3V0IikpOworICAgIGlmIChtX29wdGlvbnMudXNlRml4ZWRMYXlv
dXQgIT0gb3B0aW9ucy51c2VGaXhlZExheW91dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIG1fdXNpbmdGaXhlZExheW91dCA9PSAob3B0aW9ucyA/IFdLQm9vbGVhbkdldFZh
bHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShv
cHRpb25zLCB1c2VGaXhlZExheW91dEtleS5nZXQoKSkpKSA6IGZhbHNlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmRpZEluaXRpYWxpemVDbGllbnRzKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0
ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3Bw
CmluZGV4IGQ1YTgwZGQ0NjI2NzVkMGY1ODY2ZGQ1YTRmZTE2MzQ2NGM5YjZhNGMuLjc1YzliMGRk
NWY0YWRiNDQ3YTVlNTUzMDliYjc2YjYyMzFhZTUwZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtMTQxLDYgKzE0MSwxMSBA
QCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQogewogfQogCiti
b29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9u
cyYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpkaXNtaXNzQWxsUG9wdXBNZW51cygpCiB7CiAgICAgLy8gZ3RrX21lbnVfcG9wZG93biBkb2Vz
bid0IG1vZGlmeSB0aGUgR0xpc3Qgb2YgYXR0YWNoZWQgbWVudXMsIHNvIGl0IHNob3VsZApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tCmluZGV4
IDE1NTMxYmIxNzcyZDJlNjgyYjE3N2RjNmJlM2QzYTQ2ZDE4MTNhNTUuLjIxNjRhMDQzODA1YjJl
YmFiMGNkYTgyNjVlMzc0MGU1ZmZiN2UyM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTEyMSwxNiArMTIxLDEyIEBACiAKIG5h
bWVzcGFjZSBXVFIgewogCi1QbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1BhZ2VSZWYg
cmVsYXRlZFBhZ2UsIFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKQorUGxhdGZvcm1XZWJWaWV3OjpQ
bGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgV0tQYWdlUmVmIHJlbGF0ZWRQYWdlLCBjb25zdCBWaWV3T3B0aW9ucyYgb3B0
aW9ucykKICAgICA6IG1fd2luZG93SXNLZXkodHJ1ZSkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25z
KQogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VUaWxlZERyYXdpbmdLZXkoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbGVkRHJhd2luZyIpKTsKLSAg
ICBXS1R5cGVSZWYgdXNlVGlsZWREcmF3aW5nVmFsdWUgPSBvcHRpb25zID8gV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShvcHRpb25zLCB1c2VUaWxlZERyYXdpbmdLZXkuZ2V0KCkpIDogTlVMTDsK
LSAgICBib29sIHVzZVRpbGVkRHJhd2luZyA9IHVzZVRpbGVkRHJhd2luZ1ZhbHVlICYmIFdLQm9v
bGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4odXNlVGlsZWREcmF3aW5nVmFs
dWUpKTsKLQogICAgIENHUmVjdCByZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBUZXN0Q29udHJvbGxl
cjo6dmlld1dpZHRoLCBUZXN0Q29udHJvbGxlcjo6dmlld0hlaWdodCk7Ci0gICAgbV92aWV3ID0g
W1tUZXN0UnVubmVyV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgY29udGV4dFJlZjpj
b250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZTpyZWxhdGVk
UGFnZSB1c2VUaWxlZERyYXdpbmc6dXNlVGlsZWREcmF3aW5nXTsKKyAgICBtX3ZpZXcgPSBbW1Rl
c3RSdW5uZXJXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBjb250ZXh0UmVmOmNvbnRl
eHRSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZiByZWxhdGVkVG9QYWdlOnJlbGF0ZWRQYWdl
IHVzZVRpbGVkRHJhd2luZzptX29wdGlvbnMudXNlVGlsZWREcmF3aW5nXTsKIAogICAgIFdLUHJl
ZmVyZW5jZXNTZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKFdLUGFnZUdyb3VwR2V0UHJlZmVy
ZW5jZXMocGFnZUdyb3VwUmVmKSwgWUVTKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRp
bmdSZXBhaW50Q291bnRlcnNWaXNpYmxlKFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdy
b3VwUmVmKSwgWUVTKTsKQEAgLTIyOSwxMyArMjI1LDEyIEBAIFdLUmV0YWluUHRyPFdLSW1hZ2VS
ZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiAgICAgcmV0dXJuIDA7
IC8vIEZJWE1FIGZvciBpT1M/CiB9CiAKLWJvb2wgUGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9y
dHNPcHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKSBjb25zdAorYm9vbCBQbGF0Zm9ybVdl
YlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMoY29zdCBWaWV3T3B0aW9ucyYgb3B0aW9ucykgY29u
c3QKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlVGlsZWREcmF3aW5nS2V5KEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaWxlZERyYXdpbmciKSk7Ci0g
ICAgV0tUeXBlUmVmIHVzZVRpbGVkRHJhd2luZ1ZhbHVlID0gV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShvcHRpb25zLCB1c2VUaWxlZERyYXdpbmdLZXkuZ2V0KCkpOwotICAgIGJvb2wgdXNlVGls
ZWREcmF3aW5nID0gdXNlVGlsZWREcmF3aW5nVmFsdWUgJiYgV0tCb29sZWFuR2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPih1c2VUaWxlZERyYXdpbmdWYWx1ZSkpOworICAgIGlmICht
X29wdGlvbnMudXNlVGlsZWREcmF3aW5nICE9IG9wdGlvbnMudXNlVGlsZWREcmF3aW5nKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdXNlVGlsZWREcmF3aW5nID09IFsoVGVz
dFJ1bm5lcldLVmlldyAqKW1fdmlldyB1c2VUaWxlZERyYXdpbmddOworICAgIHJldHVybiB0cnVl
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQppbmRleCA1MDVmZDZlZjkwYzFhMjJmOTViMjNmOTM1
ZWVjOWQzODUwZjMzNDdlLi4xNmY4NjdkYTUyOWJmZDlhOTdiNzU0OGJmNDJlNDQ2NWFmYjcxZTU3
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdN
YWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFj
Lm1tCkBAIC0xMTksNDAgKzExOSwzMCBAQCBlbnVtIHsKIAogbmFtZXNwYWNlIFdUUiB7CiAKLVBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLUGFnZVJlZiByZWxhdGVkUGFnZSwgV0tEaWN0
aW9uYXJ5UmVmIG9wdGlvbnMpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1BhZ2VS
ZWYgcmVsYXRlZFBhZ2UsIGNvbnN0IFZpZXdPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV93aW5k
b3dJc0tleSh0cnVlKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHVzZVRocmVhZGVkU2Nyb2xsaW5nS2V5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaHJlYWRlZFNjcm9sbGluZyIpKTsKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdXNlUmVtb3RlTGF5ZXJUcmVlS2V5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZW1vdGVMYXllclRyZWUiKSk7Ci0gICAgV0tUeXBlUmVm
IHVzZVRocmVhZGVkU2Nyb2xsaW5nVmFsdWUgPSBvcHRpb25zID8gV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShvcHRpb25zLCB1c2VUaHJlYWRlZFNjcm9sbGluZ0tleS5nZXQoKSkgOiBOVUxMOwot
ICAgIGJvb2wgdXNlVGhyZWFkZWRTY3JvbGxpbmcgPSB1c2VUaHJlYWRlZFNjcm9sbGluZ1ZhbHVl
ICYmIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4odXNlVGhyZWFk
ZWRTY3JvbGxpbmdWYWx1ZSkpOwotCiAgICAgLy8gVGhlIHRpbGVkIGRyYXdpbmcgc3BlY2lmaWMg
dGVzdHMgYWxzbyBkZXBlbmQgb24gdGhyZWFkZWQgc2Nyb2xsaW5nLgogICAgIFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91cFJl
Zik7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZChwcmVmZXJl
bmNlcywgdXNlVGhyZWFkZWRTY3JvbGxpbmcpOworICAgIFdLUHJlZmVyZW5jZXNTZXRUaHJlYWRl
ZFNjcm9sbGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIG1fb3B0aW9ucy51c2VUaHJlYWRlZFNjcm9s
bGluZyk7CiAKICAgICAvLyBGSVhNRTogTm90IHN1cmUgdGhpcyBpcyB0aGUgYmVzdCBwbGFjZSBm
b3IgdGhpczsgbWF5YmUgd2Ugc2hvdWxkIGhhdmUgQVBJIHRvIHNldCB0aGlzIHNvIHdlIGNhbiBk
byBpdCBmcm9tIFRlc3RDb250cm9sbGVyPwotICAgIFdLVHlwZVJlZiB1c2VSZW1vdGVMYXllclRy
ZWVWYWx1ZSA9IG9wdGlvbnMgPyBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVz
ZVJlbW90ZUxheWVyVHJlZUtleS5nZXQoKSkgOiBOVUxMOwotICAgIGlmICh1c2VSZW1vdGVMYXll
clRyZWVWYWx1ZSAmJiBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KHVzZVJlbW90ZUxheWVyVHJlZVZhbHVlKSkpCisgICAgaWYgKG1fb3B0aW9ucy51c2VSZW1vdGVM
YXllclRyZWUpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHNldFZhbHVlOkBZRVMgZm9yS2V5OkAiV2ViS2l0MlVzZVJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhIl07CiAKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgVGVzdENvbnRyb2xs
ZXI6OnZpZXdXaWR0aCwgVGVzdENvbnRyb2xsZXI6OnZpZXdIZWlnaHQpOwotICAgIG1fdmlldyA9
IFtbVGVzdFJ1bm5lcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRleHRSZWY6
Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6cmVsYXRl
ZFBhZ2UgdXNlVGhyZWFkZWRTY3JvbGxpbmc6dXNlVGhyZWFkZWRTY3JvbGxpbmddOworICAgIG1f
dmlldyA9IFtbVGVzdFJ1bm5lcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRl
eHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6
cmVsYXRlZFBhZ2UgdXNlVGhyZWFkZWRTY3JvbGxpbmc6bV9vcHRpb25zLnVzZVRocmVhZGVkU2Ny
b2xsaW5nXTsKICAgICBbbV92aWV3IHNldFdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWQ6
Tk9dOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNob3VsZFNob3dXZWJWaWV3S2V5
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTaG91bGRTaG93V2ViVmll
dyIpKTsKLSAgICBXS1R5cGVSZWYgc2hvdWxkU2hvd1dlYlZpZXdWYWx1ZSA9IG9wdGlvbnMgPyBX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHNob3VsZFNob3dXZWJWaWV3S2V5Lmdl
dCgpKSA6IE5VTEw7Ci0gICAgYm9vbCBzaG91bGRTaG93V2ViVmlldyA9IHNob3VsZFNob3dXZWJW
aWV3VmFsdWUgJiYgV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihz
aG91bGRTaG93V2ViVmlld1ZhbHVlKSk7Ci0KICAgICBOU1NjcmVlbiAqZmlyc3RTY3JlZW4gPSBb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF07Ci0gICAgTlNSZWN0IHdpbmRvd1Jl
Y3QgPSAoc2hvdWxkU2hvd1dlYlZpZXcpID8gTlNPZmZzZXRSZWN0KHJlY3QsIDEwMCwgMTAwKSA6
IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtmaXJzdFNjcmVlbiBmcmFtZV0uc2l6ZS5oZWln
aHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDApOworICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0g
bV9vcHRpb25zLnNob3VsZFNob3dXZWJWaWV3ID8gTlNPZmZzZXRSZWN0KHJlY3QsIDEwMCwgMTAw
KSA6IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtmaXJzdFNjcmVlbiBmcmFtZV0uc2l6ZS5o
ZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDApOwogICAgIG1fd2luZG93ID0gW1tXZWJL
aXRUZXN0UnVubmVyV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1JlY3Qg
c3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzooTlNCYWNraW5nU3RvcmVU
eXBlKV9OU0JhY2tpbmdTdG9yZVVuYnVmZmVyZWQgZGVmZXI6WUVTXTsKICAgICBtX3dpbmRvdy5w
bGF0Zm9ybVdlYlZpZXcgPSB0aGlzOwogICAgIFttX3dpbmRvdyBzZXRDb2xvclNwYWNlOltmaXJz
dFNjcmVlbiBjb2xvclNwYWNlXV07CiAgICAgW21fd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlv
cjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOwogICAgIFtbbV93aW5kb3cg
Y29udGVudFZpZXddIGFkZFN1YnZpZXc6bV92aWV3XTsKLSAgICBpZiAoc2hvdWxkU2hvd1dlYlZp
ZXcpCisgICAgaWYgKG1fb3B0aW9ucy5zaG91bGRTaG93V2ViVmlldykKICAgICAgICAgW21fd2lu
ZG93IG9yZGVyRnJvbnQ6bmlsXTsKICAgICBlbHNlCiAgICAgICAgIFttX3dpbmRvdyBvcmRlckJh
Y2s6bmlsXTsKQEAgLTI0OSwxMyArMjM5LDEyIEBAIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBs
YXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiAgICAgcmV0dXJuIGFkb3B0V0so
V0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKHdpbmRvd1NuYXBzaG90SW1hZ2UuZ2V0KCksIDApKTsK
IH0KIAotYm9vbCBQbGF0Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9u
YXJ5UmVmIG9wdGlvbnMpIGNvbnN0Citib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRz
T3B0aW9ucyhjb25zdCBWaWV3T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKIHsKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdXNlVGhyZWFkZWRTY3JvbGxpbmdLZXkoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRocmVhZGVkU2Nyb2xsaW5nIikpOwotICAgIFdLVHlw
ZVJlZiB1c2VUaHJlYWRlZFNjcm9sbGluZ1ZhbHVlID0gV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShvcHRpb25zLCB1c2VUaHJlYWRlZFNjcm9sbGluZ0tleS5nZXQoKSk7Ci0gICAgYm9vbCB1c2VU
aHJlYWRlZFNjcm9sbGluZyA9IHVzZVRocmVhZGVkU2Nyb2xsaW5nVmFsdWUgJiYgV0tCb29sZWFu
R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPih1c2VUaHJlYWRlZFNjcm9sbGluZ1Zh
bHVlKSk7CisgICAgaWYgKG1fb3B0aW9ucy51c2VUaHJlYWRlZFNjcm9sbGluZyAhPSBvcHRpb25z
LnVzZVRocmVhZGVkU2Nyb2xsaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gdXNlVGhyZWFkZWRTY3JvbGxpbmcgPT0gWyhUZXN0UnVubmVyV0tWaWV3ICopbV92aWV3IHVz
ZVRocmVhZGVkU2Nyb2xsaW5nXTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OmNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxvYXQgbmV3U2NhbGUpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDJi
Y2FlYzMzYzE1ZWJhNDQyYzU5NTM3NWQ2MzVjZDMwMTg2NGUzODAuLjAzNzkzOTk1ZjQ1ZThjZjVi
ZTc4MWRjOTQxZTQ5YmY3MTMzNzEzMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC05OCwyMCArOTgsMTMgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKIAog
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdChjb25zdCBU
ZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBhdXRvIHZpZXdPcHRpb25zID0gYWRvcHRXSyhX
S011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwotICAgIGF1dG8gdXNlVGhyZWFkZWRTY3JvbGxp
bmdLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaHJlYWRlZFNj
cm9sbGluZyIpKTsKLSAgICBhdXRvIHVzZVRocmVhZGVkU2Nyb2xsaW5nVmFsdWUgPSBhZG9wdFdL
KFdLQm9vbGVhbkNyZWF0ZShzaG91bGRVc2VUaHJlYWRlZFNjcm9sbGluZyh0ZXN0KSkpOwotICAg
IFdLRGljdGlvbmFyeVNldEl0ZW0odmlld09wdGlvbnMuZ2V0KCksIHVzZVRocmVhZGVkU2Nyb2xs
aW5nS2V5LmdldCgpLCB1c2VUaHJlYWRlZFNjcm9sbGluZ1ZhbHVlLmdldCgpKTsKKyAgICBWaWV3
T3B0aW9ucyB2aWV3T3B0aW9uczsKIAotICAgIGF1dG8gdXNlUmVtb3RlTGF5ZXJUcmVlS2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVtb3RlTGF5ZXJUcmVlIikp
OwotICAgIGF1dG8gdXNlUmVtb3RlTGF5ZXJUcmVlVmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShzaG91bGRVc2VSZW1vdGVMYXllclRyZWUoKSkpOwotICAgIFdLRGljdGlvbmFyeVNldEl0
ZW0odmlld09wdGlvbnMuZ2V0KCksIHVzZVJlbW90ZUxheWVyVHJlZUtleS5nZXQoKSwgdXNlUmVt
b3RlTGF5ZXJUcmVlVmFsdWUuZ2V0KCkpOworICAgIHZpZXdPcHRpb25zLnVzZVRocmVhZGVkU2Ny
b2xsaW5nID0gc2hvdWxkVXNlVGhyZWFkZWRTY3JvbGxpbmcodGVzdCk7CisgICAgdmlld09wdGlv
bnMudXNlUmVtb3RlTGF5ZXJUcmVlID0gc2hvdWxkVXNlUmVtb3RlTGF5ZXJUcmVlKCk7CisgICAg
dmlld09wdGlvbnMuc2hvdWxkU2hvd1dlYlZpZXcgPSBzaG91bGRTaG93V2ViVmlldygpOwogCi0g
ICAgYXV0byBzaG91bGRTaG93V2ViVmlld0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlNob3VsZFNob3dXZWJWaWV3IikpOwotICAgIGF1dG8gc2hvdWxkU2hvd1dl
YlZpZXdWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZFNob3dXZWJWaWV3KCkp
KTsKLSAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHZpZXdPcHRpb25zLmdldCgpLCBzaG91bGRTaG93
V2ViVmlld0tleS5nZXQoKSwgc2hvdWxkU2hvd1dlYlZpZXdWYWx1ZS5nZXQoKSk7Ci0KLSAgICBl
bnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25zLmdldCgpKTsKKyAgICBlbnN1cmVW
aWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25zKTsKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAg
ICAgaWYgKCF0ZXN0LnVybENvbnRhaW5zKCJjb250ZW50ZXh0ZW5zaW9ucy8iKSkK
</data>
<flag name="review"
          id="283685"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>