<?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>176000</bug_id>
          
          <creation_ts>2017-08-25 16:06:48 -0700</creation_ts>
          <short_desc>Add WKUIDelegatePrivate equivalent of WKPageUIClient&apos;s saveDataToFileInDownloadsFolder</short_desc>
          <delta_ts>2017-08-25 17:14:35 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1342556</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-25 16:06:48 -0700</bug_when>
    <thetext>Add WKUIDelegatePrivate equivalent of WKPageUIClient&apos;s saveDataToFileInDownloadsFolder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342557</commentid>
    <comment_count>1</comment_count>
      <attachid>319109</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-25 16:08:25 -0700</bug_when>
    <thetext>Created attachment 319109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342561</commentid>
    <comment_count>2</comment_count>
      <attachid>319109</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-25 16:17:16 -0700</bug_when>
    <thetext>Comment on attachment 319109
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6126
&gt; +    saveDataToFileInDownloadsFolder(WTFMove(suggestedFilename), &quot;application/pdf&quot;, WTFMove(originatingURL),

Can you use ASCIILiteral() for &quot;application/pdf&quot;?

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UIDelegate.mm:178
&gt; +    EXPECT_EQ(webView, saveDataToFileArguments.webView);
&gt; +    EXPECT_TRUE([saveDataToFileArguments.data isEqualToData:[NSData dataWithContentsOfURL:pdfURL]]);
&gt; +    EXPECT_STREQ([saveDataToFileArguments.suggestedFilename UTF8String], &quot;test.pdf&quot;);
&gt; +    EXPECT_STREQ([saveDataToFileArguments.mimeType UTF8String], &quot;application/pdf&quot;);
&gt; +    EXPECT_STREQ([[saveDataToFileArguments.url absoluteString] UTF8String], [[pdfURL absoluteString] UTF8String]);

This is fine, but you could just move these EXPECTs into -_webView:saveDataToFile:suggestedFilename:mimeType:originatingURL: and avoid creating a struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342565</commentid>
    <comment_count>3</comment_count>
      <attachid>319113</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-25 16:24:19 -0700</bug_when>
    <thetext>Created attachment 319113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342567</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 16:25:39 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342594</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-25 17:14:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342595</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-25 17:14:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/34092924&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319109</attachid>
            <date>2017-08-25 16:08:25 -0700</date>
            <delta_ts>2017-08-25 16:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176000-20170825160825.patch</filename>
            <type>text/plain</type>
            <size>22607</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjExNzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA4LTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIHNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjAwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyNzAwMzU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb3Zl
cmVkIGJ5IGEgbmV3IEFQSSB0ZXN0LgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNEYXRh
Lmg6CisgICAgICAgICh3cmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6dXJsIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNh
dmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKwogMjAxNy0wOC0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2
YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBoYW5kbGVBdXRvcGxheUV2ZW50CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNEYXRhLmgJKHJldmlzaW9uIDIyMTEwNCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEy
ICszMCwxNiBAQAogI2ltcG9ydCAiQVBJRGF0YS5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKIAor
bmFtZXNwYWNlIEFQSSB7CisKIGlubGluZSBOU0RhdGEgKndyYXBwZXIoQVBJOjpEYXRhJiBkYXRh
KQogewogICAgIEFTU0VSVChbZGF0YS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIHNl
bGZdXSk7CiAgICAgcmV0dXJuIChOU0RhdGEgKilkYXRhLndyYXBwZXIoKTsKIH0KIAorfQorCiBA
aW50ZXJmYWNlIFdLTlNEYXRhIDogTlNEYXRhIDxXS09iamVjdD4KIEBlbmQKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjExMDQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTEzLDE4ICs2MTEzLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVCYWNraW5n
U3RvcmVEaXMKICAgICBtX2RyYXdpbmdBcmVhLT5zZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxl
KGlzRGlzY2FyZGFibGUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZURhdGFUb0ZpbGVJ
bkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6
OkRhdGEqIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nJiYgbWltZVR5cGUsIFVS
TCYmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6OkRhdGEmIGRhdGEpCiB7CiAgICAgbV91aUNs
aWVudC0+c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcih0aGlzLCBzdWdnZXN0ZWRGaWxl
bmFtZSwgbWltZVR5cGUsIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBkYXRhKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
UmVmZXJlbmNlKQogewogICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGgoIi5wZGYi
LCBmYWxzZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoc3VnZ2VzdGVkRmlsZW5hbWUsICJhcHBsaWNhdGlvbi9wZGYiLCBvcmlnaW5hdGlu
Z1VSTFN0cmluZywKLSAgICAgICAgQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRh
KCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CisgICAgc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcihXVEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgImFwcGxpY2F0aW9uL3Bk
ZiIsIFdURk1vdmUob3JpZ2luYXRpbmdVUkwpLAorICAgICAgICBBUEk6OkRhdGE6OmNyZWF0ZShk
YXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLmdldCgpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEludFNpemUmIG1p
bmltdW1MYXlvdXRTaXplKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHJldmlzaW9uIDIyMTEwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NTAsOCArOTUwLDggQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBzYXZl
UERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik7CisgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmlu
ZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1lVHlwZSwgV2ViQ29yZTo6VVJMJiYg
b3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYpOworICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3JlOjpVUkwmJiBv
cmlnaW5hdGluZ1VSTCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2
ZUFwcGxpY2F0aW9uUmF3KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKICAgICB2b2lkIHNhdmVQREZUb1Rl
bXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDIyMTEwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0
b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2Vh
cmNoZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1
bHQpCiAKLSAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhKQorICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVSTCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlG
b2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwg
U3RyaW5nIHBkZlVVSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAkocmV2aXNpb24gMjIxMTA0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgRGF0YSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlRGF0YVRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIERhdGEmKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwaW5uZWRTdGF0ZURpZENoYW5nZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDIyMTEwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNDMsMTIgKzIwNDMsMTIgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICAgICAgbV9jbGllbnQu
cnVuTW9kYWwodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6OkRh
dGEqIGRhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdV
UkwsIEFQSTo6RGF0YSYgZGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcih0b0FQSShwYWdlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUuaW1wbCgpKSwgdG9B
UEkobWltZVR5cGUuaW1wbCgpKSwgdG9VUkxSZWYob3JpZ2luYXRpbmdVUkxTdHJpbmcuaW1wbCgp
KSwgdG9BUEkoZGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBt
X2NsaWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRvQVBJKHBhZ2UpLCB0b0FQ
SShzdWdnZXN0ZWRGaWxlbmFtZS5pbXBsKCkpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCB0b1VS
TFJlZihvcmlnaW5hdGluZ1VSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSgmZGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHBpbm5lZFN0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYgcGFnZSkgZmluYWwKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aAkocmV2aXNpb24gMjIxMTcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mby5oPgogCitAY2xhc3MgTlNEYXRhOwogQGNsYXNzIFVJU2Nyb2xs
VmlldzsKIEBjbGFzcyBVSVZpZXdDb250cm9sbGVyOwogQGNsYXNzIFdLRnJhbWVJbmZvOwpAQCAt
MTQzLDYgKzE0NCw3IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHRha2VGb2N1czooX1dLRm9jdXNEaXJlY3Rpb24pZGlyZWN0aW9u
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTm90SGFuZGxlV2hlZWxFdmVudDooTlNFdmVudCAqKWV2
ZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlF
dmVudClldmVudCB3aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHNhdmVEYXRhVG9GaWxlOihOU0RhdGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVu
YW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIG1pbWVUeXBlOihOU1N0cmluZyAqKW1p
bWVUeXBlIG9yaWdpbmF0aW5nVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAtIChOU01lbnUgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBjb250ZXh0TWVudTooTlNNZW51ICopbWVudSBmb3JFbGVtZW50OihfV0tDb250ZXh0TWVudUVs
ZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMikpOwogLSAo
TlNNZW51ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnU6KE5TTWVu
dSAqKW1lbnUgZm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyAqKWVsZW1lbnQg
dXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goMTAuMTIpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaAkocmV2aXNpb24gMjIxMTcyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOSArMTAwLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgdGFrZUZvY3VzKFdlYlBhZ2VQcm94eSosIFdLRm9j
dXNEaXJlY3Rpb24pIGZpbmFsOwogICAgICAgICB2b2lkIGZvY3VzKFdlYlBhZ2VQcm94eSopIGZp
bmFsOwogICAgICAgICB2b2lkIHVuZm9jdXMoV2ViUGFnZVByb3h5KikgZmluYWw7Ci0gICAgICAg
IHZvaWQgZGlkTm90SGFuZGxlV2hlZWxFdmVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYktpdDo6TmF0aXZlV2ViV2hlZWxFdmVudCYpIGZpbmFsOwotICAgICAgICB2b2lkIGhhbmRs
ZUF1dG9wbGF5RXZlbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2
ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CisgICAg
ICAgIHZvaWQgZGlkTm90SGFuZGxlV2hlZWxFdmVudChXZWJQYWdlUHJveHkqLCBjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50JikgZmluYWw7CisgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVu
dChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29y
ZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAgICAgICAgIGJvb2wgcnVuT3BlblBhbmVs
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5KikgZmluYWw7CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYK
ICAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6
U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgZmluYWw7
CiAgICAgICAgIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0
eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5JikgZmluYWw7CkBAIC0xNDgs
NiArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3VGFrZUZvY3VzIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkTm90SGFuZGxlV2hlZWxFdmVudCA6IDE7CiAgICAgICAg
IGJvb2wgd2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgOiAxOworICAgICAgICBi
b29sIHdlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5h
dGluZ1VSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICNlbmRpZgogICAgICAg
ICBib29sIHdlYlZpZXdEZWNpZGVEYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW5DdXJyZW50
UXVvdGFDdXJyZW50T3JpZ2luVXNhZ2VDdXJyZW50RGF0YWJhc2VVc2FnZUV4cGVjdGVkVXNhZ2VE
ZWNpc2lvbkhhbmRsZXIgOiAxOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMjExNzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW1wb3J0ICJVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5oIgogI2ltcG9ydCAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRl
cm5hbC5oIgorI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkFjdGlv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCkBAIC0xMDcsOSArMTA4LDkgQEAg
dm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbAogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdUYWtlRm9jdXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzp0YWtlRm9jdXM6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWROb3RIYW5kbGVXaGVlbEV2ZW50OildOwogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlF
dmVudDp3aXRoRmxhZ3M6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRh
VG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3Vn
Z2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOildOwogI2VuZGlmCi0KICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhQ3VycmVu
dE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNhZ2VFeHBlY3RlZFVzYWdlRGVjaXNpb25IYW5k
bGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGVj
aWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90YTpjdXJyZW50T3Jp
Z2luVXNhZ2U6Y3VycmVudERhdGFiYXNlVXNhZ2U6ZXhwZWN0ZWRVc2FnZTpkZWNpc2lvbkhhbmRs
ZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVdlYkFwcGxpY2F0aW9u
Q2FjaGVRdW90YUZvclNlY3VyaXR5T3JpZ2luQ3VycmVudFF1b3RhVG90YWxCeXRlc05lZWRlZCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRlY2lkZVdl
YkFwcGxpY2F0aW9uQ2FjaGVRdW90YUZvclNlY3VyaXR5T3JpZ2luOmN1cnJlbnRRdW90YTp0b3Rh
bEJ5dGVzTmVlZGVkOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3UHJpbnRGcmFtZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnByaW50RnJhbWU6KV07CkBAIC00ODYsNyArNDg3LDE5IEBAIHZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnNob3dQYWdlKFdlYlAKICAgICAKICAgICBbKGlkIDxXS1VJRGVsZWdh
dGVQcml2YXRlPilkZWxlZ2F0ZSBfc2hvd1dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107
CiB9CisgICAgCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXZWJDb3JlOjpVUkwm
IG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpCit7CisgICAgaWYgKCFtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5h
bWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYXV0
byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVs
ZWdhdGUpCisgICAgICAgIHJldHVybjsKIAorICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgc2F2ZURhdGFUb0ZpbGU6
d3JhcHBlcihkYXRhKSBzdWdnZXN0ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlw
ZTptaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDpvcmlnaW5hdGluZ1VSTF07Cit9CisgICAgCiBib29s
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogb3BlblBhbmVs
UGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7
CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5Q
YW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2
aXNpb24gMjIxMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTIsMTYgKzM5MiwxNiBAQCBTdHJpbmcgV2ViRnJh
bWU6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX2NvcmVGcmFtZS0+dHJlZSgpLnVuaXF1ZU5h
bWUoKTsKIH0KIAotU3RyaW5nIFdlYkZyYW1lOjp1cmwoKSBjb25zdAorVVJMIFdlYkZyYW1lOjp1
cmwoKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIGF1
dG8qIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT51cmwoKS5z
dHJpbmcoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVybCgpOwogfQogCiBDZXJ0aWZp
Y2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDIyMTEwNCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFdLQnVuZGxlRnJhbWUgQVBJ
IGFuZCBTUEkgZnVuY3Rpb25zCiAgICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OwogICAgIFN0
cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVybCgpIGNvbnN0OworICAgIFdlYkNvcmU6
OlVSTCB1cmwoKSBjb25zdDsKICAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNh
dGVJbmZvKCkgY29uc3Q7CiAgICAgU3RyaW5nIGlubmVyVGV4dCgpIGNvbnN0OwogICAgIGJvb2wg
aXNGcmFtZVNldCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMTEwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTYxLDkgKzQ1
NjEsOSBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJQYWdlOjpzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0
cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKQordm9pZCBXZWJQ
YWdlOjpzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbG9uZyBzaXplKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHN1Z2dlc3RlZEZpbGVuYW1lLCBvcmln
aW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoc3VnZ2VzdGVkRmlsZW5hbWUsIG9yaWdpbmF0aW5nVVJMLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
ZGF0YSwgc2l6ZSkpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjIxMTA0KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NzEsNyArODcxLDcgQEAgcHVibGljOgogICAgIE5TRGljdGlvbmFyeSAqZGF0YURldGVj
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgp
OyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CisgICAg
dm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRp
b24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBj
b25zdCBTdHJpbmcmIHBkZlVVSUQpOwogI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjEyMTApCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0wOC0yNSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBX
S1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBzYXZlRGF0
YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYwMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MjcwMDM1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1b
Rm9jdXNEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6
aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAoLVtTYXZlRGF0YVRvRmlsZURlbGVnYXRlIF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxl
OnN1Z2dlc3RlZEZpbGVuYW1lOm1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOl0pOgorICAgICAgICAo
LVtTYXZlRGF0YVRvRmlsZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToK
KwogMjAxNy0wOC0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgU3RyaW5nOjpmb3JtYXQgdmFyaWFudCB0aGF0IHRha2VzIHZhX2FyZ3MKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VJRGVsZWdhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIxMTcyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEw
MCw2IEBAIHN0YXRpYyB2b2lkIHN5bnRoZXNpemVUYWIoTlNXaW5kb3cgKndpbmQKICAgICBbdmll
dyBrZXlVcDp0YWJFdmVudCh3aW5kb3csIE5TRXZlbnRUeXBlS2V5VXAsIHdpdGhTaGlmdERvd24g
PyBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQgOiAwKV07CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
TlNXaW5kb3c+IHdpbmRvdzsKIHN0YXRpYyBfV0tGb2N1c0RpcmVjdGlvbiB0YWtlbkRpcmVjdGlv
bjsKIAogQGludGVyZmFjZSBGb2N1c0RlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+CkBAIC0xMTcsMTYgKzExNiwxNCBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHRhCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2
YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRl
ZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAg
ICBzeW50aGVzaXplVGFiKHdpbmRvdy5nZXQoKSwgd2ViVmlldywgdHJ1ZSk7CisgICAgc3ludGhl
c2l6ZVRhYihbd2ViVmlldyB3aW5kb3ddLCB3ZWJWaWV3LCB0cnVlKTsKIH0KIAogQGVuZAogCiBU
RVNUKFdlYktpdDIsIEZvY3VzKQogewotICAgIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBzdHls
ZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpZRVNdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApXSk7Ci0g
ICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tGb2N1c0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgTlNTdHJpbmcg
Kmh0bWwgPSBAIjxzY3JpcHQ+ZnVuY3Rpb24gbG9hZGVkKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW4nKS5mb2N1cygpOyBhbGVydCgncmVhZHknKTsgfTwvc2NyaXB0PiIKQEAgLTEzNiw2
ICsxMzMsNTEgQEAgVEVTVChXZWJLaXQyLCBGb2N1cykKICAgICBBU1NFUlRfRVEodGFrZW5EaXJl
Y3Rpb24sIF9XS0ZvY3VzRGlyZWN0aW9uQmFja3dhcmQpOwogfQogCitzdGF0aWMgc3RydWN0IHsK
KyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OworICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlOworICAgIFJldGFpblB0cjxOU1VSTD4gdXJsOwor
fSBzYXZlRGF0YVRvRmlsZUFyZ3VtZW50czsKKworQGludGVyZmFjZSBTYXZlRGF0YVRvRmlsZURl
bGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGUsIFdLTmF2aWdhdGlvbkRlbGVn
YXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2F2ZURhdGFUb0ZpbGVEZWxlZ2F0ZQorCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNhdmVEYXRhVG9GaWxlOihOU0Rh
dGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1l
IG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIG9yaWdpbmF0aW5nVVJMOihOU1VSTCAqKXVy
bAoreworICAgIHNhdmVEYXRhVG9GaWxlQXJndW1lbnRzID0ge3dlYlZpZXcsIGRhdGEsIHN1Z2dl
c3RlZEZpbGVuYW1lLCBtaW1lVHlwZSwgdXJsfTsKKyAgICBkb25lID0gdHJ1ZTsKK30KKworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBOU1BvaW50IGxvY2F0aW9uID0gTlNNYWtl
UG9pbnQoNDkwLCA3MCk7IC8vIExvY2F0aW9uIG9mIGJ1dHRvbiB0byBkb3dubG9hZCB0aGUgcGRm
LgorICAgIFsoVGVzdFdLV2ViVmlldyAqKXdlYlZpZXcgbW91c2VEb3duQXRQb2ludDpsb2NhdGlv
biBzaW11bGF0ZVByZXNzdXJlOk5PXTsKKyAgICBbKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3IG1v
dXNlVXBBdFBvaW50OmxvY2F0aW9uXTsKK30KKworQGVuZAorCitURVNUKFdlYktpdDIsIFNhdmVE
YXRhVG9GaWxlKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApXSk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTYXZlRGF0YVRvRmlsZURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBOU1VS
TCAqcGRmVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInRlc3Qi
IHdpdGhFeHRlbnNpb246QCJwZGYiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwZGZVUkxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IAorICAgIEVYUEVDVF9FUSh3ZWJWaWV3LCBzYXZlRGF0YVRvRmlsZUFyZ3VtZW50cy53ZWJWaWV3
KTsKKyAgICBFWFBFQ1RfVFJVRShbc2F2ZURhdGFUb0ZpbGVBcmd1bWVudHMuZGF0YSBpc0VxdWFs
VG9EYXRhOltOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOnBkZlVSTF1dKTsKKyAgICBFWFBF
Q1RfU1RSRVEoW3NhdmVEYXRhVG9GaWxlQXJndW1lbnRzLnN1Z2dlc3RlZEZpbGVuYW1lIFVURjhT
dHJpbmddLCAidGVzdC5wZGYiKTsKKyAgICBFWFBFQ1RfU1RSRVEoW3NhdmVEYXRhVG9GaWxlQXJn
dW1lbnRzLm1pbWVUeXBlIFVURjhTdHJpbmddLCAiYXBwbGljYXRpb24vcGRmIik7CisgICAgRVhQ
RUNUX1NUUkVRKFtbc2F2ZURhdGFUb0ZpbGVBcmd1bWVudHMudXJsIGFic29sdXRlU3RyaW5nXSBV
VEY4U3RyaW5nXSwgW1twZGZVUkwgYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddKTsKK30KKwog
I2RlZmluZSBSRUxJQUJMRV9ESURfTk9UX0hBTkRMRV9XSEVFTF9FVkVOVCAwCiAvLyBGSVhNRTog
bWFrZSB3aGVlbCBldmVudCBoYW5kbGluZyBtb3JlIHJlbGlhYmxlLgogLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTk2Nwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319113</attachid>
            <date>2017-08-25 16:24:19 -0700</date>
            <delta_ts>2017-08-25 16:25:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176000-20170825162418.patch</filename>
            <type>text/plain</type>
            <size>22927</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjExNzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA4LTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIHNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjAwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyNzAwMzU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKyAgICAgICAgCisgICAgICAgIENvdmVyZWQg
YnkgYSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU0RhdGEuaDoK
KyAgICAgICAgKHdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp1cmwgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2F2ZVBE
RlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorCiAyMDE3LTA4LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1aXZhbGVu
dCBvZiBXS1BhZ2VVSUNsaWVudCdzIGhhbmRsZUF1dG9wbGF5RXZlbnQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV0tOU0RhdGEuaAkocmV2aXNpb24gMjIxMTA0KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV0tOU0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMw
LDE2IEBACiAjaW1wb3J0ICJBUElEYXRhLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogCituYW1l
c3BhY2UgQVBJIHsKKwogaW5saW5lIE5TRGF0YSAqd3JhcHBlcihBUEk6OkRhdGEmIGRhdGEpCiB7
CiAgICAgQVNTRVJUKFtkYXRhLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgc2VsZl1d
KTsKICAgICByZXR1cm4gKE5TRGF0YSAqKWRhdGEud3JhcHBlcigpOwogfQogCit9CisKIEBpbnRl
cmZhY2UgV0tOU0RhdGEgOiBOU0RhdGEgPFdLT2JqZWN0PgogQGVuZAogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyMTEwNCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxMTMsMTggKzYxMTMsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9y
ZURpcwogICAgIG1fZHJhd2luZ0FyZWEtPnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoaXNE
aXNjYXJkYWJsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIEFQSTo6RGF0
YSogZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1lVHlwZSwgVVJMJiYg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIEFQSTo6RGF0YSYgZGF0YSkKIHsKICAgICBtX3VpQ2xpZW50
LT5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1l
LCBtaW1lVHlwZSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGRhdGEpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
YXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUs
IFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UpCiB7CiAgICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZh
bHNlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihzdWdnZXN0ZWRGaWxlbmFtZSwgImFwcGxpY2F0aW9uL3BkZiIsIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLAotICAgICAgICBBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKKyAgICBzYXZlRGF0YVRvRmlsZUluRG93bmxv
YWRzRm9sZGVyKFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBBU0NJSUxpdGVyYWwoImFwcGxp
Y2F0aW9uL3BkZiIpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nVVJMKSwKKyAgICAgICAgQVBJOjpEYXRh
OjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBJ
bnRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjExMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtOTUwLDggKzk1MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYg
cmVzdWx0KTsKICNlbmRpZgogCi0gICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIEFQSTo6RGF0YSopOwotICAg
IHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nJiYgbWltZVR5cGUsIFdlYkNv
cmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmKTsKKyAgICB2b2lkIHNhdmVQREZU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgV2ViQ29y
ZTo6VVJMJiYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3Bl
bldpdGhOYXRpdmVBcHBsaWNhdGlvblJhdyhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CiAgICAgdm9pZCBz
YXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxT
dHJpbmcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMjExMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJpbmcg
bmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRlbXMpCiAgICAgTG9h
ZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNl
YXJjaD4gcmVzdWx0KQogCi0gICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YSkKKyAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3JlOjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2F2ZVBERlRv
VGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEsIFN0cmluZyBwZGZVVUlEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDIyMTEwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5
KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIERhdGEqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjExMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQzLDEyICsyMDQzLDEy
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKICAgICAgICAgICAg
IG1fY2xpZW50LnJ1bk1vZGFsKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmlu
ZywgQVBJOjpEYXRhKiBkYXRhKSBmaW5hbAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcikKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LnNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIodG9BUEkocGFnZSksIHRvQVBJKHN1Z2dlc3RlZEZpbGVuYW1lLmlt
cGwoKSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIHRvVVJMUmVmKG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLmltcGwoKSksIHRvQVBJKGRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICAgICAgbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcih0b0FQSShw
YWdlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUuaW1wbCgpKSwgdG9BUEkobWltZVR5cGUuaW1w
bCgpKSwgdG9VUkxSZWYob3JpZ2luYXRpbmdVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkoJmRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBwaW5uZWRTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHkmIHBhZ2UpIGZpbmFsCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmgJKHJldmlzaW9uIDIyMTE3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KIAorQGNsYXNzIE5TRGF0YTsKIEBjbGFz
cyBVSVNjcm9sbFZpZXc7CiBAY2xhc3MgVUlWaWV3Q29udHJvbGxlcjsKIEBjbGFzcyBXS0ZyYW1l
SW5mbzsKQEAgLTE0Myw2ICsxNDQsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB0YWtlRm9jdXM6KF9XS0ZvY3VzRGlyZWN0aW9u
KWRpcmVjdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ6KE5T
RXZlbnQgKilldmVudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5RXZlbnQ6KF9X
S0F1dG9wbGF5RXZlbnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50RmxhZ3MpZmxh
Z3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBzdWdn
ZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZTooTlNT
dHJpbmcgKiltaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAoTlNNZW51ICopX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgY29udGV4dE1lbnU6KE5TTWVudSAqKW1lbnUgZm9yRWxlbWVudDooX1dLQ29u
dGV4dE1lbnVFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTIpKTsKIC0gKE5TTWVudSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbnRleHRN
ZW51OihOU01lbnUgKiltZW51IGZvckVsZW1lbnQ6KF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8g
KillbGVtZW50IHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEyKSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHJldmlzaW9uIDIyMTE3MikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDkgKzEwMCwxMCBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHRha2VGb2N1cyhXZWJQYWdlUHJv
eHkqLCBXS0ZvY3VzRGlyZWN0aW9uKSBmaW5hbDsKICAgICAgICAgdm9pZCBmb2N1cyhXZWJQYWdl
UHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCB1bmZvY3VzKFdlYlBhZ2VQcm94eSopIGZpbmFs
OwotICAgICAgICB2b2lkIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQmKSBmaW5hbDsKLSAgICAgICAg
dm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6
QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZp
bmFsOworICAgICAgICB2b2lkIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIGZpbmFsOworICAgICAgICB2b2lkIGhhbmRsZUF1
dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9u
U2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogICAgICAgICBib29sIHJ1
bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOworICAgICAgICB2b2lkIHNhdmVEYXRhVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEFQSTo6RGF0YSYpIGZpbmFs
OwogI2VuZGlmCiAgICAgICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmln
aW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eSYpIGZpbmFsOwogICAgICAgICBib29sIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdp
bihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQ
STo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYpIGZpbmFs
OwpAQCAtMTQ4LDYgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1Rha2VG
b2N1cyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsK
KyAgICAgICAgYm9vbCB3ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVU
eXBlT3JpZ2luYXRpbmdVUkwgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVuUGFuZWxX
aXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAjZW5k
aWYKICAgICAgICAgYm9vbCB3ZWJWaWV3RGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3Jp
Z2luQ3VycmVudFF1b3RhQ3VycmVudE9yaWdpblVzYWdlQ3VycmVudERhdGFiYXNlVXNhZ2VFeHBl
Y3RlZFVzYWdlRGVjaXNpb25IYW5kbGVyIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIxMTcyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCIKICNp
bXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCIKICNpbXBvcnQgIldLRnJh
bWVJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS05hdmln
YXRpb25BY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgpAQCAtMTA3LDkg
KzEwOCw5IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlEZWwKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VGFrZUZvY3VzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dGFrZUZvY3VzOildOwogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWROb3RIYW5kbGVXaGVlbEV2ZW50ID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxlV2hlZWxFdmVudDopXTsK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFn
cyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmhhbmRs
ZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNhdmVEYXRh
VG9GaWxlOnN1Z2dlc3RlZEZpbGVuYW1lOm1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOildOwogICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVk
QnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKICNlbmRpZgotCiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbkN1cnJlbnRR
dW90YUN1cnJlbnRPcmlnaW5Vc2FnZUN1cnJlbnREYXRhYmFzZVVzYWdlRXhwZWN0ZWRVc2FnZURl
Y2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OmRlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpjdXJyZW50UXVvdGE6
Y3VycmVudE9yaWdpblVzYWdlOmN1cnJlbnREYXRhYmFzZVVzYWdlOmV4cGVjdGVkVXNhZ2U6ZGVj
aXNpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVXZWJB
cHBsaWNhdGlvbkNhY2hlUXVvdGFGb3JTZWN1cml0eU9yaWdpbkN1cnJlbnRRdW90YVRvdGFsQnl0
ZXNOZWVkZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpkZWNpZGVXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpjdXJyZW50
UXVvdGE6dG90YWxCeXRlc05lZWRlZDpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1ByaW50RnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpwcmludEZyYW1lOildOwpAQCAtNDg2LDcgKzQ4NywxOSBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG93UGFnZShXZWJQCiAgICAgCiAgICAgWyhpZCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3Nob3dXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5t
X3dlYlZpZXddOwogfQorICAgIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQoreworICAgIGlmICgh
bV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dl
c3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAKKyAgICBbKGlkIDxXS1VJRGVsZWdh
dGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHNhdmVE
YXRhVG9GaWxlOndyYXBwZXIoZGF0YSkgc3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5h
bWUgbWltZVR5cGU6bWltZVR5cGUgb3JpZ2luYXRpbmdVUkw6b3JpZ2luYXRpbmdVUkxdOworfQor
ICAgIAogYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94
eSosIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMq
IG9wZW5QYW5lbFBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxp
c3RlbmVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEZyYW1lLmNwcAkocmV2aXNpb24gMjIx
MTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBjb25zdCBn
Y2hhciogd2Via2l0X2ZyYW1lX2dldF91cmkoV2ViS2l0CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSwgMCk7CiAKICAgICBpZiAoZnJhbWUtPnByaXYtPnVy
aS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUtPnByaXYtPnVyaSA9IGZyYW1lLT5wcml2LT53ZWJG
cmFtZS0+dXJsKCkudXRmOCgpOworICAgICAgICBmcmFtZS0+cHJpdi0+dXJpID0gZnJhbWUtPnBy
aXYtPndlYkZyYW1lLT51cmwoKS5zdHJpbmcoKS51dGY4KCk7CiAKICAgICByZXR1cm4gZnJhbWUt
PnByaXYtPnVyaS5kYXRhKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAyMjExMDQpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Miwx
NiArMzkyLDE2IEBAIFN0cmluZyBXZWJGcmFtZTo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29yZUZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpOwogfQogCi1TdHJpbmcgV2ViRnJhbWU6OnVy
bCgpIGNvbnN0CitVUkwgV2ViRnJhbWU6OnVybCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVG
cmFtZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CisgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1
cm4gZG9jdW1lbnRMb2FkZXItPnVybCgpLnN0cmluZygpOworICAgIHJldHVybiBkb2N1bWVudExv
YWRlci0+dXJsKCk7CiB9CiAKIENlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJ
bmZvKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuaAkocmV2aXNpb24gMjIxMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6
CiAgICAgLy8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlz
TWFpbkZyYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcg
dXJsKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5u
ZXJUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjIx
MTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1NjEsOSArNDU2MSw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkRmluaXNo
UHJpbnRPcGVyYXRpb24oY28KIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OnNhdmVQREZUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsb25nIHNpemUpCit2b2lkIFdlYlBhZ2U6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0
aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoc3VnZ2VzdGVkRmlsZW5hbWUsIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZl
cmVuY2UoZGF0YSwgc2l6ZSkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNh
dmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihzdWdnZXN0ZWRGaWxlbmFtZSwgb3JpZ2luYXRp
bmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZShkYXRhLCBzaXplKSkpOwogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAyMjExMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3MSw3ICs4NzEsNyBAQCBwdWJsaWM6CiAg
ICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERG
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwm
IG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUp
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CiAjZW5kaWYK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMTIxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDE3LTA4LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1aXZhbGVudCBv
ZiBXS1BhZ2VVSUNsaWVudCdzIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjAwMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjkyNzAwMzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBF
c3Rlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VJRGVs
ZWdhdGUubW06CisgICAgICAgICgtW0ZvY3VzRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0
QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bU2F2ZURhdGFUb0ZpbGVEZWxlZ2F0ZSBf
d2ViVmlldzpzYXZlRGF0YVRvRmlsZTpzdWdnZXN0ZWRGaWxlbmFtZTptaW1lVHlwZTpvcmlnaW5h
dGluZ1VSTDpdKToKKyAgICAgICAgKC1bU2F2ZURhdGFUb0ZpbGVEZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZpbmlzaE5hdmlnYXRpb246XSk6CisKIDIwMTctMDgtMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFN0cmluZzo6Zm9ybWF0IHZhcmlhbnQg
dGhhdCB0YWtlcyB2YV9hcmdzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDIyMTE3MikKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNiBAQCBzdGF0aWMgdm9pZCBzeW50aGVzaXplVGFiKE5T
V2luZG93ICp3aW5kCiAgICAgW3ZpZXcga2V5VXA6dGFiRXZlbnQod2luZG93LCBOU0V2ZW50VHlw
ZUtleVVwLCB3aXRoU2hpZnREb3duID8gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0IDogMCldOwog
fQogCi1zdGF0aWMgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3c7CiBzdGF0aWMgX1dLRm9jdXNE
aXJlY3Rpb24gdGFrZW5EaXJlY3Rpb247CiAKIEBpbnRlcmZhY2UgRm9jdXNEZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2YXRlPgpAQCAtMTE3LDE2ICsxMTYsMTQgQEAgLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB0YQogLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3Ry
aW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgc3ludGhlc2l6ZVRhYih3aW5kb3cuZ2V0KCksIHdlYlZp
ZXcsIHRydWUpOworICAgIHN5bnRoZXNpemVUYWIoW3dlYlZpZXcgd2luZG93XSwgd2ViVmlldywg
dHJ1ZSk7CiB9CiAKIEBlbmQKIAogVEVTVChXZWJLaXQyLCBGb2N1cykKIHsKLSAgICB3aW5kb3cg
PSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3
OndlYlZpZXcuZ2V0KCldOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRm9jdXNEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PmZ1bmN0aW9uIGxvYWRlZCgp
IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTsgYWxlcnQoJ3JlYWR5Jyk7
IH08L3NjcmlwdD4iCkBAIC0xMzYsNiArMTMzLDQxIEBAIFRFU1QoV2ViS2l0MiwgRm9jdXMpCiAg
ICAgQVNTRVJUX0VRKHRha2VuRGlyZWN0aW9uLCBfV0tGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKTsK
IH0KIAorQGludGVyZmFjZSBTYXZlRGF0YVRvRmlsZURlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGUsIFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gU2F2ZURhdGFUb0ZpbGVEZWxlZ2F0ZQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHNhdmVEYXRhVG9GaWxlOihOU0RhdGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVu
YW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIG1pbWVUeXBlOihOU1N0cmluZyAqKW1p
bWVUeXBlIG9yaWdpbmF0aW5nVVJMOihOU1VSTCAqKXVybAoreworICAgIE5TVVJMICpwZGZVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIgd2l0aEV4dGVu
c2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAg
ICBFWFBFQ1RfVFJVRShbZGF0YSBpc0VxdWFsVG9EYXRhOltOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mVVJMOnBkZlVSTF1dKTsKKyAgICBFWFBFQ1RfU1RSRVEoW3N1Z2dlc3RlZEZpbGVuYW1lIFVU
RjhTdHJpbmddLCAidGVzdC5wZGYiKTsKKyAgICBFWFBFQ1RfU1RSRVEoW21pbWVUeXBlIFVURjhT
dHJpbmddLCAiYXBwbGljYXRpb24vcGRmIik7CisgICAgRVhQRUNUX1NUUkVRKFtbdXJsIGFic29s
dXRlU3RyaW5nXSBVVEY4U3RyaW5nXSwgW1twZGZVUkwgYWJzb2x1dGVTdHJpbmddIFVURjhTdHJp
bmddKTsKKyAgICBkb25lID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24K
K3sKKyAgICBOU1BvaW50IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoNDkwLCA3MCk7IC8vIExvY2F0
aW9uIG9mIGJ1dHRvbiB0byBkb3dubG9hZCB0aGUgcGRmLgorICAgIFsoVGVzdFdLV2ViVmlldyAq
KXdlYlZpZXcgbW91c2VEb3duQXRQb2ludDpsb2NhdGlvbiBzaW11bGF0ZVByZXNzdXJlOk5PXTsK
KyAgICBbKFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OmxvY2F0aW9uXTsK
K30KKworQGVuZAorCitURVNUKFdlYktpdDIsIFNhdmVEYXRhVG9GaWxlKQoreworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tTYXZlRGF0YVRvRmlsZURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBOU1VSTCAqcGRmVVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInRlc3QiIHdpdGhFeHRlbnNpb246QCJwZGYiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwZGZVUkxdXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCiAjZGVmaW5lIFJFTElBQkxFX0RJRF9O
T1RfSEFORExFX1dIRUVMX0VWRU5UIDAKIC8vIEZJWE1FOiBtYWtlIHdoZWVsIGV2ZW50IGhhbmRs
aW5nIG1vcmUgcmVsaWFibGUuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1OTY3Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>