<?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>95070</bug_id>
          
          <creation_ts>2012-08-27 03:46:21 -0700</creation_ts>
          <short_desc>REGRESSION(r126717): It made inspector/styles/media-queries.html fail/flakey</short_desc>
          <delta_ts>2012-09-14 12:04: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>Tools / Tests</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79666</blocked>
    
    <blocked>94926</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>slewis</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>705142</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-08-27 03:46:21 -0700</bug_when>
    <thetext>Per the flakiness dashboard, this has been failing reliably on Linux (debug) since r126717:

&lt;http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=inspector%2Fstyles%2Fmedia-queries.html&gt;

It also became flaky on Linux, Linux 32 and Win (dbg) around that revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705201</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-27 05:55:38 -0700</bug_when>
    <thetext>It isn&apos;t chromium specific bug at all, this test started to fail
on Qt 32 bit release too:

--- /ramdisk/qt-linux-release/build/layout-test-results/inspector/styles/media-queries-expected.txt 
+++ /ramdisk/qt-linux-release/build/layout-test-results/inspector/styles/media-queries-actual.txt 
@@ -14,8 +14,8 @@
 [expanded] 
 media=&quot;all&quot; (media-queries.html)
 @import screen (media-queries.css:3)
-@media not aural (media-queries-1.css:5)
-#main  { (media-queries-1.css:6)
+@media not aural (resources/media-queries-1.css:5)
+#main  { (resources/media-queries-1.css:6)
 border: 1px solid black;
 
 [expanded] 


It&apos;s strange, but it passes in debug mode and on 64 bit platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705221</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-27 06:32:36 -0700</bug_when>
    <thetext>Skipped on Qt by https://trac.webkit.org/changeset/126753
Please unskip it with the proper fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709587</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-31 07:11:00 -0700</bug_when>
    <thetext>Antti, Kling? Could you check this regression you caused, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711129</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-04 08:16:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Antti, Kling? Could you check this regression you caused, please?

ping again ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712914</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-05 23:09:16 -0700</bug_when>
    <thetext>ping again and again ... Are you going to fix the regression you caused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713246</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-06 06:35:19 -0700</bug_when>
    <thetext>This seems like some timing related bug in the inspector or inspector test harness. I couldn&apos;t really figure out what that test is doing. Maybe apavlov has ideas what this could be about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715735</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-09 23:13:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This seems like some timing related bug in the inspector or inspector test harness. I couldn&apos;t really figure out what that test is doing. Maybe apavlov has ideas what this could be about?

As to the test, it makes sure the media query &quot;stack&quot; is dumped for each matched CSS rule (if applicable).

Now, I have little knowledge about this particular type of flakiness, but we&apos;ve seen it occasionally for multiple types of tests that involved building/dumping links for resource URLs. IIRC, some time ago it was a result of the main resource loading not finished by the moment a URL linkification took place. Not sure about the current reason though, as much have changed in this area since then (I remember at least one attempt to fix it by a change to the test harness).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720048</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-13 15:51:34 -0700</bug_when>
    <thetext>&gt; It&apos;s strange, but it passes in debug mode and on 64 bit platforms.

This happens on Mac (debug, 64-bit), too:

http://build.webkit.org/results/Apple%20Lion%20Debug%20WK2%20(Tests)/r128507%20(3413)/inspector/styles/media-queries-pretty-diff.html

Should we roll out r126717 to confirm that it&apos;s indeed the revision causing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720923</commentid>
    <comment_count>9</comment_count>
      <attachid>164187</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-14 10:36:08 -0700</bug_when>
    <thetext>Created attachment 164187
rollout

Since it&apos;s been several weeks without much progress, I&apos;m going to roll out once EWS reports green. There was one other patch that depended on this change, and it also gets rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720931</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 10:38:04 -0700</bug_when>
    <thetext>Attachment 164187 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/css/StyleRuleImport.cpp:108:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720957</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-14 11:06:33 -0700</bug_when>
    <thetext>*** Bug 95066 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720963</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-14 11:16:51 -0700</bug_when>
    <thetext>I could reproduce the flakiness locally when running this test alone, and rollout resolved that.

run-webkit-tests inspector/styles/media-queries.html --repeat-each 100 -v</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720998</commentid>
    <comment_count>13</comment_count>
      <attachid>164187</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 11:54:07 -0700</bug_when>
    <thetext>Comment on attachment 164187
rollout

Rejecting attachment 164187 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/13854528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721009</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-14 12:04:24 -0700</bug_when>
    <thetext>Committed manually in &lt;http://trac.webkit.org/changeset/128637&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164187</attachid>
            <date>2012-09-14 10:36:08 -0700</date>
            <delta_ts>2012-09-14 11:54:07 -0700</delta_ts>
            <desc>rollout</desc>
            <filename>Rollout.txt</filename>
            <type>text/plain</type>
            <size>34691</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODYyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA5LTE0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEyNjcx
Nyk6IEl0IG1hZGUgaW5zcGVjdG9yL3N0eWxlcy9tZWRpYS1xdWVyaWVzLmh0bWwgZmFpbC9mbGFr
ZXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDcw
CisKKyAgICAgICAgUm9sbCBvdXQgcjEyNjcxNywgYW5kIGFub3RoZXIgY2hhbmdlIHRoYXQgZGVw
ZW5kcyBvbiBpdC4KKyAgICAgICAgcjEyNjcxNzogUmVtb3ZlIHBhcmVudCBwb2ludGVyIGZyb20g
U3R5bGVTaGVldENvbnRlbnRzIGFuZCBTdHlsZVJ1bGVJbXBvcnQKKyAgICAgICAgcjEyNzEyMzog
Q2FjaGUgYW5kIHNoYXJlIHBhcnNlZCBpbXBvcnRlZCBzdHlsZXNoZWV0cworCisgICAgICAgICog
Y3NzL0NTU0ltcG9ydFJ1bGUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmg6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6d2lsbE11dGF0ZVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6OnJlYXR0YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6Om93bmVyRG9jdW1lbnQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjbGVhck93bmVyUnVsZSk6CisgICAgICAgICog
Y3NzL1N0eWxlUnVsZUltcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVJbXBv
cnQ6OlN0eWxlUnVsZUltcG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQ6
On5TdHlsZVJ1bGVJbXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1wb3J0Ojpz
ZXRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6aXNM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxl
U2hlZXQpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVJbXBvcnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUnVsZUltcG9ydDo6cGFyZW50U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVJbXBvcnQ6OnNldFBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSdWxlSW1wb3J0OjpjbGVhclBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoSW1w
b3J0ZWRTdHlsZVNoZWV0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9y
dDo6SW1wb3J0ZWRTdHlsZVNoZWV0Q2xpZW50OjpJbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSW1wb3J0OjpJbXBvcnRlZFN0eWxlU2hlZXRDbGll
bnQ6On5JbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
dWxlSW1wb3J0OjpJbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQ6OnNldENTU1N0eWxlU2hlZXQpOgor
ICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGVldENvbnRlbnRzOjpTdHlsZVNoZWV0Q29udGVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTaGVldENvbnRlbnRzOjppc0NhY2hlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNoZWV0Q29udGVudHM6OnBhcnNlckFwcGVuZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGVldENvbnRlbnRzOjpjbGVhclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U2hlZXRDb250ZW50czo6d3JhcHBlckluc2VydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVTaGVldENvbnRlbnRzOjp3cmFwcGVyRGVsZXRlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNoZWV0Q29udGVudHM6OnBhcnNlQXV0aG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlU3RyaW5nQXRMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6Y2hlY2tMb2FkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTaGVldENvbnRlbnRzOjpub3RpZnlMb2FkZWRTaGVldCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnJvb3RTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6c2luZ2xlT3duZXJOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6c2luZ2xlT3duZXJEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcmVudFN0eWxlU2hlZXQpOgor
ICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKToKKyAgICAgICAgKFN0eWxlU2hlZXRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6Om93bmVyUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OmNsZWFyT3duZXJSdWxlKToKKyAgICAg
ICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6cGFyc2VTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vU3R5
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVudDo6Y3JlYXRlU2hl
ZXQpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2F2ZVBhcnNlZFN0eWxlU2hlZXQpOgorCiAyMDEyLTA5LTE0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFBy
aW50IGNvbnNvbGUgd2FybmluZyBhYm91dCBzZXRWZXJzaW9uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltcG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAxMjg2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1wb3J0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEzICs4Niw2IEBAIHZv
aWQgQ1NTSW1wb3J0UnVsZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXIpOwogfQogCi12b2lkIENTU0lt
cG9ydFJ1bGU6OnJlYXR0YWNoU3R5bGVTaGVldENvbnRlbnRzKCkKLXsKLSAgICBBU1NFUlQobV9z
dHlsZVNoZWV0Q1NTT01XcmFwcGVyKTsKLSAgICBBU1NFUlQoIXBhcmVudFN0eWxlU2hlZXQoKSB8
fCBwYXJlbnRTdHlsZVNoZWV0KCktPmNvbnRlbnRzKCktPmhhc09uZUNsaWVudCgpKTsKLSAgICBt
X2ltcG9ydFJ1bGUtPnJlYXR0YWNoU3R5bGVTaGVldENvbnRlbnRzKG1fc3R5bGVTaGVldENTU09N
V3JhcHBlci0+Y29udGVudHMoKSk7Ci19Ci0KIENTU1N0eWxlU2hlZXQqIENTU0ltcG9ydFJ1bGU6
OnN0eWxlU2hlZXQoKSBjb25zdAogeyAKICAgICBpZiAoIW1faW1wb3J0UnVsZS0+c3R5bGVTaGVl
dCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5oCShyZXZpc2lvbiAxMjg2MjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAotICAgIHZvaWQgcmVhdHRhY2hTdHls
ZVNoZWV0Q29udGVudHMoKTsKLQogcHJpdmF0ZToKICAgICBDU1NJbXBvcnRSdWxlKFN0eWxlUnVs
ZUltcG9ydCosIENTU1N0eWxlU2hlZXQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAkocmV2aXNpb24gMTI4NjI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN0eWxl
UnVsZS5oIgotI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgIlN0eWxlU2hl
ZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xNTEsNyArMTUwLDcgQEAg
dm9pZCBDU1NTdHlsZVNoZWV0Ojp3aWxsTXV0YXRlUnVsZXMoKQogICAgIG1fY29udGVudHMtPnNl
dE11dGFibGUoKTsKIAogICAgIC8vIEFueSBleGlzdGluZyBDU1NPTSB3cmFwcGVycyBuZWVkIHRv
IGJlIGNvbm5lY3RlZCB0byB0aGUgY29waWVkIGNoaWxkIHJ1bGVzLgotICAgIHJlYXR0YWNoQ1NT
T01XcmFwcGVycygpOworICAgIHJlYXR0YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVycygpOwogfQog
CiB2b2lkIENTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVzKCkKQEAgLTE3MCwxMSArMTY5LDgg
QEAgdm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGUoKQogICAgIG93bmVyLT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNoZWV0Ojpy
ZWF0dGFjaENTU09NV3JhcHBlcnMoKQordm9pZCBDU1NTdHlsZVNoZWV0OjpyZWF0dGFjaENoaWxk
UnVsZUNTU09NV3JhcHBlcnMoKQogewotICAgIGlmIChtX293bmVyUnVsZSkKLSAgICAgICAgbV9v
d25lclJ1bGUtPnJlYXR0YWNoU3R5bGVTaGVldENvbnRlbnRzKCk7Ci0KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGlmICghbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2ldKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0yODcsMTAgKzI4Myw3IEBAIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2Vy
dFJ1bGUoY29uc3QKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgZWMgPSBISUVSQVJDSFlf
UkVRVUVTVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAocnVsZS0+aXNJ
bXBvcnRSdWxlKCkpCi0gICAgICAgIHN0YXRpY19jYXN0PFN0eWxlUnVsZUltcG9ydCo+KHJ1bGUu
Z2V0KCkpLT5yZXF1ZXN0U3R5bGVTaGVldChyb290U3R5bGVTaGVldCgpLCBtX2NvbnRlbnRzLT5w
YXJzZXJDb250ZXh0KCkpOwotCisgICAgfSAgICAgICAgCiAgICAgaWYgKCFtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMuaXNFbXB0eSgpKQogICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMu
aW5zZXJ0KGluZGV4LCBSZWZQdHI8Q1NTUnVsZT4oKSk7CiAKQEAgLTM3NywxNyArMzcwLDExIEBA
IENTU1N0eWxlU2hlZXQqIENTU1N0eWxlU2hlZXQ6OnBhcmVudFN0eWwKICAgICByZXR1cm4gbV9v
d25lclJ1bGUgPyBtX293bmVyUnVsZS0+cGFyZW50U3R5bGVTaGVldCgpIDogMDsgCiB9CiAKLUNT
U1N0eWxlU2hlZXQqIENTU1N0eWxlU2hlZXQ6OnJvb3RTdHlsZVNoZWV0KCkgY29uc3QKK0RvY3Vt
ZW50KiBDU1NTdHlsZVNoZWV0Ojpvd25lckRvY3VtZW50KCkgY29uc3QKIHsKICAgICBjb25zdCBD
U1NTdHlsZVNoZWV0KiByb290ID0gdGhpczsKICAgICB3aGlsZSAocm9vdC0+cGFyZW50U3R5bGVT
aGVldCgpKQogICAgICAgICByb290ID0gcm9vdC0+cGFyZW50U3R5bGVTaGVldCgpOwotICAgIHJl
dHVybiBjb25zdF9jYXN0PENTU1N0eWxlU2hlZXQqPihyb290KTsKLX0KLQotRG9jdW1lbnQqIENT
U1N0eWxlU2hlZXQ6Om93bmVyRG9jdW1lbnQoKSBjb25zdAotewotICAgIGNvbnN0IENTU1N0eWxl
U2hlZXQqIHJvb3QgPSByb290U3R5bGVTaGVldCgpOwogICAgIHJldHVybiByb290LT5vd25lck5v
ZGUoKSA/IHJvb3QtPm93bmVyTm9kZSgpLT5kb2N1bWVudCgpIDogMDsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCShyZXZpc2lvbiAxMjg2MjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgCiAgICAgdm9pZCBjbGVhck93bmVyUnVsZSgpIHsgbV9vd25lclJ1bGUgPSAwOyB9Ci0gICAg
Q1NTU3R5bGVTaGVldCogcm9vdFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICBEb2N1bWVudCogb3du
ZXJEb2N1bWVudCgpIGNvbnN0OwogICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhUXVlcmllcygpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFRdWVyaWVzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRNZWRpYVF1
ZXJpZXMoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0Pik7CkBAIC0xMDIsNiArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkTXV0YXRlKCk7CiAgICAgCiAgICAgdm9pZCBjbGVhckNoaWxkUnVs
ZUNTU09NV3JhcHBlcnMoKTsKKyAgICB2b2lkIHJlYXR0YWNoQ2hpbGRSdWxlQ1NTT01XcmFwcGVy
cygpOwogCiAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudHMuZ2V0KCk7IH0KIApAQCAtMTE1LDcgKzExNSw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0IHsgcmV0dXJuICJ0ZXh0L2NzcyI7IH0KIAogICAg
IGJvb2wgY2FuQWNjZXNzUnVsZXMoKSBjb25zdDsKLSAgICB2b2lkIHJlYXR0YWNoQ1NTT01XcmFw
cGVycygpOwogICAgIAogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG1fY29udGVudHM7
CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGVJbXBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGVJbXBvcnQuY3BwCShyZXZpc2lvbiAxMjg2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlSW1wb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHlsZVJ1bGVJbXBvcnQ6OkxvYWRDb250ZXh0OjpM
b2FkQ29udGV4dChDU1NTdHlsZVNoZWV0KiByb290U3R5bGVTaGVldCwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgcGFyZW50UGFyc2VyQ29udGV4dCkKLSAgICA6IHJvb3RTdHlsZVNoZWV0KHJvb3RT
dHlsZVNoZWV0KQotICAgICwgcGFyZW50UGFyc2VyQ29udGV4dChwYXJlbnRQYXJzZXJDb250ZXh0
KQotewotfQotCiBQYXNzUmVmUHRyPFN0eWxlUnVsZUltcG9ydD4gU3R5bGVSdWxlSW1wb3J0Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlh
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlSW1wb3J0KGhyZWYsIG1lZGlh
KSk7CkBAIC00NSw5ICszOSwxMiBAQCBQYXNzUmVmUHRyPFN0eWxlUnVsZUltcG9ydD4gU3R5bGVS
dWxlSW1wCiAKIFN0eWxlUnVsZUltcG9ydDo6U3R5bGVSdWxlSW1wb3J0KGNvbnN0IFN0cmluZyYg
aHJlZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKICAgICA6IFN0eWxlUnVsZUJh
c2UoSW1wb3J0LCAwKQorICAgICwgbV9wYXJlbnRTdHlsZVNoZWV0KDApCisgICAgLCBtX3N0eWxl
U2hlZXRDbGllbnQodGhpcykKICAgICAsIG1fc3RySHJlZihocmVmKQogICAgICwgbV9tZWRpYVF1
ZXJpZXMobWVkaWEpCiAgICAgLCBtX2NhY2hlZFNoZWV0KDApCisgICAgLCBtX2xvYWRpbmcoZmFs
c2UpCiB7CiAgICAgaWYgKCFtX21lZGlhUXVlcmllcykKICAgICAgICAgbV9tZWRpYVF1ZXJpZXMg
PSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoU3RyaW5nKCkpOwpAQCAtNTUsOTAgKzUyLDgzIEBAIFN0
eWxlUnVsZUltcG9ydDo6U3R5bGVSdWxlSW1wb3J0KGNvbnN0IFMKIAogU3R5bGVSdWxlSW1wb3J0
Ojp+U3R5bGVSdWxlSW1wb3J0KCkKIHsKKyAgICBpZiAobV9zdHlsZVNoZWV0KQorICAgICAgICBt
X3N0eWxlU2hlZXQtPmNsZWFyT3duZXJSdWxlKCk7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCi0g
ICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV9jYWNo
ZWRTaGVldC0+cmVtb3ZlQ2xpZW50KCZtX3N0eWxlU2hlZXRDbGllbnQpOwogfQogCi12b2lkIFN0
eWxlUnVsZUltcG9ydDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
S1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KikKK3ZvaWQgU3R5bGVSdWxlSW1wb3J0OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBj
b25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRTdHlsZVNoZWV0KQogewotICAgIEFTU0VS
VChtX2xvYWRDb250ZXh0KTsKLSAgICBBU1NFUlQoIW1fc3R5bGVTaGVldCk7Ci0gICAgQVNTRVJU
KG1fY2FjaGVkU2hlZXQpOworICAgIGlmIChtX3N0eWxlU2hlZXQpCisgICAgICAgIG1fc3R5bGVT
aGVldC0+Y2xlYXJPd25lclJ1bGUoKTsKIAotICAgIE93blB0cjxMb2FkQ29udGV4dD4gbG9hZENv
bnRleHQgPSBtX2xvYWRDb250ZXh0LnJlbGVhc2UoKTsKLQotICAgIENTU1BhcnNlckNvbnRleHQg
cGFyc2VyQ29udGV4dCA9IGxvYWRDb250ZXh0LT5wYXJlbnRQYXJzZXJDb250ZXh0OworICAgIENT
U1BhcnNlckNvbnRleHQgY29udGV4dCA9IG1fcGFyZW50U3R5bGVTaGVldCA/IG1fcGFyZW50U3R5
bGVTaGVldC0+cGFyc2VyQ29udGV4dCgpIDogQ1NTU3RyaWN0TW9kZTsKKyAgICBjb250ZXh0LmNo
YXJzZXQgPSBjaGFyc2V0OwogICAgIGlmICghYmFzZVVSTC5pc051bGwoKSkKLSAgICAgICAgcGFy
c2VyQ29udGV4dC5iYXNlVVJMID0gYmFzZVVSTDsKLSAgICBwYXJzZXJDb250ZXh0LmNoYXJzZXQg
PSBjaGFyc2V0OworICAgICAgICBjb250ZXh0LmJhc2VVUkwgPSBiYXNlVVJMOwogCi0jaWYgRU5B
QkxFKFBBUlNFRF9TVFlMRV9TSEVFVF9DQUNISU5HKQotICAgIG1fc3R5bGVTaGVldCA9IG1fY2Fj
aGVkU2hlZXQtPnJlc3RvcmVQYXJzZWRTdHlsZVNoZWV0KHBhcnNlckNvbnRleHQpOwotI2VuZGlm
Ci0gICAgaWYgKCFtX3N0eWxlU2hlZXQpIHsKLSAgICAgICAgbV9zdHlsZVNoZWV0ID0gU3R5bGVT
aGVldENvbnRlbnRzOjpjcmVhdGUodXJsLCBwYXJzZXJDb250ZXh0KTsKLSAgICAgICAgbV9zdHls
ZVNoZWV0LT5wYXJzZUF1dGhvclN0eWxlU2hlZXQobV9jYWNoZWRTaGVldC5nZXQoKSwgbG9hZENv
bnRleHQtPnJvb3RTdHlsZVNoZWV0LmdldCgpKTsKLSAgICB9Ci0gICAgbG9hZENvbnRleHQtPnJv
b3RTdHlsZVNoZWV0LT5jb250ZW50cygpLT5jaGVja0xvYWRDb21wbGV0ZWQoKTsKKyAgICBtX3N0
eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSh0aGlzLCBocmVmLCBjb250ZXh0
KTsKIAotI2lmIEVOQUJMRShQQVJTRURfU1RZTEVfU0hFRVRfQ0FDSElORykKLSAgICBpZiAobV9z
dHlsZVNoZWV0LT5pc0NhY2hlYWJsZSgpKQotICAgICAgICBtX2NhY2hlZFNoZWV0LT5zYXZlUGFy
c2VkU3R5bGVTaGVldChtX3N0eWxlU2hlZXQpOwotI2VuZGlmCi19CisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9wYXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJlbnRTdHlsZVNoZWV0LT5zaW5nbGVP
d25lckRvY3VtZW50KCkgOiAwOworICAgIG1fc3R5bGVTaGVldC0+cGFyc2VBdXRob3JTdHlsZVNo
ZWV0KGNhY2hlZFN0eWxlU2hlZXQsIGRvY3VtZW50ID8gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkgOiAwKTsKIAotYm9vbCBTdHlsZVJ1bGVJbXBvcnQ6OmlzTG9hZGluZygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbG9hZENvbnRleHQgfHwgKG1fc3R5bGVTaGVldCAmJiBtX3N0eWxlU2hlZXQt
PmlzTG9hZGluZygpKTsKKyAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKworICAgIGlmIChtX3BhcmVu
dFN0eWxlU2hlZXQpIHsKKyAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0LT5ub3RpZnlMb2FkZWRT
aGVldChjYWNoZWRTdHlsZVNoZWV0KTsKKyAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0LT5jaGVj
a0xvYWRlZCgpOworICAgIH0KIH0KIAotYm9vbCBTdHlsZVJ1bGVJbXBvcnQ6OmhhZExvYWRFcnJv
cigpIGNvbnN0Citib29sIFN0eWxlUnVsZUltcG9ydDo6aXNMb2FkaW5nKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9jYWNoZWRTaGVldCAmJiBtX2NhY2hlZFNoZWV0LT5lcnJvck9jY3VycmVkKCk7
CisgICAgcmV0dXJuIG1fbG9hZGluZyB8fCAobV9zdHlsZVNoZWV0ICYmIG1fc3R5bGVTaGVldC0+
aXNMb2FkaW5nKCkpOwogfQogCi12b2lkIFN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogcm9vdFNoZWV0LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBwYXJz
ZXJDb250ZXh0KQordm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNoZWV0KCkKIHsK
LSAgICBBU1NFUlQoIXJvb3RTaGVldC0+cGFyZW50U3R5bGVTaGVldCgpKTsKLSAgICBBU1NFUlQo
IW1fY2FjaGVkU2hlZXQpOwotCi0gICAgTm9kZSogb3duZXJOb2RlID0gcm9vdFNoZWV0LT5vd25l
ck5vZGUoKTsKLSAgICBpZiAoIW93bmVyTm9kZSkKKyAgICBpZiAoIW1fcGFyZW50U3R5bGVTaGVl
dCkKICAgICAgICAgcmV0dXJuOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93bmVyTm9kZS0+
ZG9jdW1lbnQoKTsKLQotICAgIEtVUkwgcmVzb2x2ZWRVUkw7Ci0gICAgaWYgKCFwYXJzZXJDb250
ZXh0LmJhc2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIHJlc29sdmVkVVJMID0gS1VSTChwYXJzZXJD
b250ZXh0LmJhc2VVUkwsIG1fc3RySHJlZik7Ci0gICAgZWxzZQotICAgICAgICByZXNvbHZlZFVS
TCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3N0ckhyZWYpOwotCi0gICAgU3R5bGVTaGVldENv
bnRlbnRzKiByb290U2hlZXRDb250ZW50cyA9IHJvb3RTaGVldC0+Y29udGVudHMoKTsKLSAgICBp
ZiAocm9vdFNoZWV0Q29udGVudHMtPmhhc0ltcG9ydEN5Y2xlKHRoaXMsIHJlc29sdmVkVVJMLCBk
b2N1bWVudC0+YmFzZVVSTCgpKSkKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhcmVudFN0
eWxlU2hlZXQtPnNpbmdsZU93bmVyRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyZXNvbHZlZFVSTCk7
CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgaWYgKHJvb3RTaGVldENvbnRlbnRzLT5p
c1VzZXJTdHlsZVNoZWV0KCkpCi0gICAgICAgIG1fY2FjaGVkU2hlZXQgPSBjYWNoZWRSZXNvdXJj
ZUxvYWRlci0+cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KHJlcXVlc3QsIHBhcnNlckNvbnRleHQu
Y2hhcnNldCk7Ci0gICAgZWxzZQotICAgICAgICBtX2NhY2hlZFNoZWV0ID0gY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPnJlcXVlc3RDU1NTdHlsZVNoZWV0KHJlcXVlc3QsIHBhcnNlckNvbnRleHQuY2hh
cnNldCk7Ci0KLSAgICBpZiAoIW1fY2FjaGVkU2hlZXQpCisgICAgaWYgKCFjYWNoZWRSZXNvdXJj
ZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwotICAgIC8vIGlmIHRoZSBpbXBvcnQgcnVsZSBpcyBp
c3N1ZWQgZHluYW1pY2FsbHksIHRoZSBzaGVldCBtYXkgYmUKLSAgICAvLyByZW1vdmVkIGZyb20g
dGhlIHBlbmRpbmcgc2hlZXQgY291bnQsIHNvIGxldCB0aGUgZG9jIGtub3cKLSAgICAvLyB0aGUg
c2hlZXQgYmVpbmcgaW1wb3J0ZWQgaXMgcGVuZGluZy4KLSAgICBpZiAocm9vdFNoZWV0Q29udGVu
dHMtPmxvYWRDb21wbGV0ZWQoKSkKLSAgICAgICAgb3duZXJOb2RlLT5zdGFydExvYWRpbmdEeW5h
bWljU2hlZXQoKTsKIAotICAgIG1fbG9hZENvbnRleHQgPSBhZG9wdFB0cihuZXcgTG9hZENvbnRl
eHQocm9vdFNoZWV0LCBwYXJzZXJDb250ZXh0KSk7Ci0gICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xp
ZW50KHRoaXMpOwotfQorICAgIEtVUkwgYWJzVVJMOworICAgIGlmICghbV9wYXJlbnRTdHlsZVNo
ZWV0LT5iYXNlVVJMKCkuaXNOdWxsKCkpCisgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5bGVoZWV0
J3MgVVJMIGFzIHRoZSBiYXNlIFVSTAorICAgICAgICBhYnNVUkwgPSBLVVJMKG1fcGFyZW50U3R5
bGVTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOworICAgIGVsc2UKKyAgICAgICAgYWJzVVJM
ID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKG1fc3RySHJlZik7CiAKLXZvaWQgU3R5bGVSdWxlSW1w
b3J0OjpyZWF0dGFjaFN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRl
bnRzKQotewotICAgIG1fc3R5bGVTaGVldCA9IGNvbnRlbnRzOworICAgIC8vIENoZWNrIGZvciBh
IGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4uICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0
CisgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFpbiB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0
IGJhaWwuCisgICAgU3R5bGVTaGVldENvbnRlbnRzKiByb290U2hlZXQgPSBtX3BhcmVudFN0eWxl
U2hlZXQ7CisgICAgZm9yIChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0ID0gbV9wYXJlbnRTdHls
ZVNoZWV0OyBzaGVldDsgc2hlZXQgPSBzaGVldC0+cGFyZW50U3R5bGVTaGVldCgpKSB7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGFic1VSTCwgc2hlZXQtPmJh
c2VVUkwoKSkKKyAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
YWJzVVJMLCBkb2N1bWVudC0+Y29tcGxldGVVUkwoc2hlZXQtPm9yaWdpbmFsVVJMKCkpKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcm9vdFNoZWV0ID0gc2hlZXQ7CisgICAgfQorCisg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYWJzVVJMKTsKKyAgICBpZiAobV9wYXJlbnRTdHls
ZVNoZWV0LT5pc1VzZXJTdHlsZVNoZWV0KCkpCisgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KHJlcXVlc3QsIG1fcGFy
ZW50U3R5bGVTaGVldC0+Y2hhcnNldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2FjaGVkU2hl
ZXQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdENTU1N0eWxlU2hlZXQocmVxdWVzdCwg
bV9wYXJlbnRTdHlsZVNoZWV0LT5jaGFyc2V0KCkpOworICAgIGlmIChtX2NhY2hlZFNoZWV0KSB7
CisgICAgICAgIC8vIGlmIHRoZSBpbXBvcnQgcnVsZSBpcyBpc3N1ZWQgZHluYW1pY2FsbHksIHRo
ZSBzaGVldCBtYXkgYmUKKyAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBwZW5kaW5nIHNoZWV0
IGNvdW50LCBzbyBsZXQgdGhlIGRvYyBrbm93CisgICAgICAgIC8vIHRoZSBzaGVldCBiZWluZyBp
bXBvcnRlZCBpcyBwZW5kaW5nLgorICAgICAgICBpZiAobV9wYXJlbnRTdHlsZVNoZWV0ICYmIG1f
cGFyZW50U3R5bGVTaGVldC0+bG9hZENvbXBsZXRlZCgpICYmIHJvb3RTaGVldCA9PSBtX3BhcmVu
dFN0eWxlU2hlZXQpCisgICAgICAgICAgICBtX3BhcmVudFN0eWxlU2hlZXQtPnN0YXJ0TG9hZGlu
Z0R5bmFtaWNTaGVldCgpOworICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOworICAgICAgICBtX2Nh
Y2hlZFNoZWV0LT5hZGRDbGllbnQoJm1fc3R5bGVTaGVldENsaWVudCk7CisgICAgfQogfQogCiB2
b2lkIFN0eWxlUnVsZUltcG9ydDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlSW1wb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5oCShyZXZpc2lvbiAxMjg2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlSW1wb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpZm5k
ZWYgU3R5bGVSdWxlSW1wb3J0X2gKICNkZWZpbmUgU3R5bGVSdWxlSW1wb3J0X2gKIAotI2luY2x1
ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgog
I2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUu
aCIKQEAgLTMzLDQyICszMiw1NSBAQCBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwogY2xhc3Mg
TWVkaWFRdWVyeVNldDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAotY2xhc3MgU3R5bGVS
dWxlSW1wb3J0IDogcHVibGljIFN0eWxlUnVsZUJhc2UsIHB1YmxpYyBDYWNoZWRTdHlsZVNoZWV0
Q2xpZW50IHsKK2NsYXNzIFN0eWxlUnVsZUltcG9ydCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHlsZVJ1bGVJbXBvcnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQ
dHI8TWVkaWFRdWVyeVNldD4pOwogCi0gICAgdmlydHVhbCB+U3R5bGVSdWxlSW1wb3J0KCk7Cisg
ICAgflN0eWxlUnVsZUltcG9ydCgpOworICAgIAorICAgIFN0eWxlU2hlZXRDb250ZW50cyogcGFy
ZW50U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldDsgfQorICAg
IHZvaWQgc2V0UGFyZW50U3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0KSB7IEFT
U0VSVChzaGVldCk7IG1fcGFyZW50U3R5bGVTaGVldCA9IHNoZWV0OyB9CisgICAgdm9pZCBjbGVh
clBhcmVudFN0eWxlU2hlZXQoKSB7IG1fcGFyZW50U3R5bGVTaGVldCA9IDA7IH0KIAogICAgIFN0
cmluZyBocmVmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJIcmVmOyB9CiAgICAgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0LmdldCgpOyB9
CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwotICAgIGJvb2wgaGFkTG9hZEVycm9yKCkg
Y29uc3Q7CiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFRdWVyaWVzKCkgeyByZXR1cm4gbV9tZWRp
YVF1ZXJpZXMuZ2V0KCk7IH0KIAotICAgIHZvaWQgcmVxdWVzdFN0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCogcm9vdFNoZWV0LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgdm9pZCByZXF1
ZXN0U3R5bGVTaGVldCgpOwogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCi0gICAgdm9pZCByZWF0dGFjaFN0eWxlU2hlZXRD
b250ZW50cyhTdHlsZVNoZWV0Q29udGVudHMqKTsKLQogcHJpdmF0ZToKKyAgICAvLyBOT1RFOiBX
ZSBwdXQgdGhlIENhY2hlZFN0eWxlU2hlZXRDbGllbnQgaW4gYSBtZW1iZXIgaW5zdGVhZCBvZiBp
bmhlcml0aW5nIGZyb20gaXQKKyAgICAvLyB0byBhdm9pZCBhZGRpbmcgYSB2cHRyIHRvIFN0eWxl
UnVsZUltcG9ydC4KKyAgICBjbGFzcyBJbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQgOiBwdWJsaWMg
Q2FjaGVkU3R5bGVTaGVldENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBJbXBvcnRlZFN0
eWxlU2hlZXRDbGllbnQoU3R5bGVSdWxlSW1wb3J0KiBvd25lclJ1bGUpIDogbV9vd25lclJ1bGUo
b3duZXJSdWxlKSB7IH0KKyAgICAgICAgdmlydHVhbCB+SW1wb3J0ZWRTdHlsZVNoZWV0Q2xpZW50
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25z
dCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9v
d25lclJ1bGUtPnNldENTU1N0eWxlU2hlZXQoaHJlZiwgYmFzZVVSTCwgY2hhcnNldCwgc2hlZXQp
OworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgU3R5bGVSdWxlSW1wb3J0KiBtX293
bmVyUnVsZTsKKyAgICB9OworCisgICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25z
dCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CisgICAgZnJpZW5kIGNsYXNzIEltcG9ydGVkU3R5bGVT
aGVldENsaWVudDsKKwogICAgIFN0eWxlUnVsZUltcG9ydChjb25zdCBTdHJpbmcmIGhyZWYsIFBh
c3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwogCi0gICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKTsKKyAgICBTdHlsZVNoZWV0
Q29udGVudHMqIG1fcGFyZW50U3R5bGVTaGVldDsKIAorICAgIEltcG9ydGVkU3R5bGVTaGVldENs
aWVudCBtX3N0eWxlU2hlZXRDbGllbnQ7CiAgICAgU3RyaW5nIG1fc3RySHJlZjsKICAgICBSZWZQ
dHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJpZXM7CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRD
b250ZW50cz4gbV9zdHlsZVNoZWV0OwotCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4gbV9jYWNoZWRTaGVldDsKLSAgICBzdHJ1Y3QgTG9hZENvbnRleHQgewot
ICAgICAgICBMb2FkQ29udGV4dChDU1NTdHlsZVNoZWV0KiByb290U3R5bGVTaGVldCwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgcGFyZW50UGFyc2VyQ29udGV4dCk7Ci0gICAgICAgIFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiByb290U3R5bGVTaGVldDsKLSAgICAgICAgQ1NTUGFyc2VyQ29udGV4dCBw
YXJlbnRQYXJzZXJDb250ZXh0OwotICAgIH07Ci0gICAgT3duUHRyPExvYWRDb250ZXh0PiBtX2xv
YWRDb250ZXh0OworICAgIGJvb2wgbV9sb2FkaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHJl
dmlzaW9uIDEyODYyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCwxMSBAQCB1bnNpZ25lZCBTdHlsZVNoZWV0
Q29udGVudHM6OmVzdGltYXRlZFNpCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKLVN0eWxlU2hlZXRD
b250ZW50czo6U3R5bGVTaGVldENvbnRlbnRzKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCi0gICAgOiBtX29yaWdpbmFsVVJMKG9yaWdp
bmFsVVJMKQorU3R5bGVTaGVldENvbnRlbnRzOjpTdHlsZVNoZWV0Q29udGVudHMoU3R5bGVSdWxl
SW1wb3J0KiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCisgICAgOiBtX293bmVyUnVsZShvd25lclJ1bGUpCisgICAg
LCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQogICAgICwgbV9sb2FkQ29tcGxldGVkKGZhbHNl
KQorICAgICwgbV9pc1VzZXJTdHlsZVNoZWV0KG93bmVyUnVsZSAmJiBvd25lclJ1bGUtPnBhcmVu
dFN0eWxlU2hlZXQoKSAmJiBvd25lclJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKS0+aXNVc2VyU3R5
bGVTaGVldCgpKQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkK
ICAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2UpCiAgICAgLCBtX3VzZXNSZW1Vbml0cyhm
YWxzZSkKQEAgLTY4LDYgKzcwLDcgQEAgU3R5bGVTaGVldENvbnRlbnRzOjpTdHlsZVNoZWV0Q29u
dGVudHMoYwogCiBTdHlsZVNoZWV0Q29udGVudHM6OlN0eWxlU2hlZXRDb250ZW50cyhjb25zdCBT
dHlsZVNoZWV0Q29udGVudHMmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlU2hlZXRDb250ZW50
cz4oKQorICAgICwgbV9vd25lclJ1bGUoMCkKICAgICAsIG1fb3JpZ2luYWxVUkwoby5tX29yaWdp
bmFsVVJMKQogICAgICwgbV9lbmNvZGluZ0Zyb21DaGFyc2V0UnVsZShvLm1fZW5jb2RpbmdGcm9t
Q2hhcnNldFJ1bGUpCiAgICAgLCBtX2ltcG9ydFJ1bGVzKG8ubV9pbXBvcnRSdWxlcy5zaXplKCkp
CkBAIC0xMDEsNiArMTA0LDkgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OmlzQ2FjaGVhYmxl
KCkgYwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNvcHlpbmcgaW1wb3J0IHJ1bGVzLgogICAgIGlm
ICghbV9pbXBvcnRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAv
LyBGSVhNRTogU3VwcG9ydCBjYWNoZWQgc3R5bGVzaGVldHMgaW4gaW1wb3J0IHJ1bGVzLgorICAg
IGlmIChtX293bmVyUnVsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFRoaXMgd291
bGQgcmVxdWlyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgY2xpZW50cyBmb3IgbG9hZCBjYWxsYmFj
a3MuCiAgICAgaWYgKCFtX2xvYWRDb21wbGV0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTEyMyw2ICsxMjksOCBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQXBwZW5kUnVs
CiAgICAgICAgIC8vIFBhcnNlciBlbmZvcmNlcyB0aGF0IEBpbXBvcnQgcnVsZXMgY29tZSBiZWZv
cmUgYW55dGhpbmcgZWxzZSBleGNlcHQgQGNoYXJzZXQuCiAgICAgICAgIEFTU0VSVChtX2NoaWxk
UnVsZXMuaXNFbXB0eSgpKTsKICAgICAgICAgbV9pbXBvcnRSdWxlcy5hcHBlbmQoc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlSW1wb3J0Kj4ocnVsZS5nZXQoKSkpOworICAgICAgICBtX2ltcG9ydFJ1bGVz
Lmxhc3QoKS0+c2V0UGFyZW50U3R5bGVTaGVldCh0aGlzKTsKKyAgICAgICAgbV9pbXBvcnRSdWxl
cy5sYXN0KCktPnJlcXVlc3RTdHlsZVNoZWV0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgbV9jaGlsZFJ1bGVzLmFwcGVuZChydWxlKTsKQEAgLTE2MSw2ICsxNjksMTAgQEAgdm9pZCBT
dHlsZVNoZWV0Q29udGVudHM6OmNsZWFyQ2hhcnNldFJ1bAogCiB2b2lkIFN0eWxlU2hlZXRDb250
ZW50czo6Y2xlYXJSdWxlcygpCiB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW1w
b3J0UnVsZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1faW1wb3J0UnVsZXMuYXQo
aSktPnBhcmVudFN0eWxlU2hlZXQoKSA9PSB0aGlzKTsKKyAgICAgICAgbV9pbXBvcnRSdWxlc1tp
XS0+Y2xlYXJQYXJlbnRTdHlsZVNoZWV0KCk7CisgICAgfQogICAgIG1faW1wb3J0UnVsZXMuY2xl
YXIoKTsKICAgICBtX2NoaWxkUnVsZXMuY2xlYXIoKTsKICAgICBjbGVhckNoYXJzZXRSdWxlKCk7
CkBAIC0xOTUsNiArMjA3LDkgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNl
cnRSdQogICAgICAgICBpZiAoIXJ1bGUtPmlzSW1wb3J0UnVsZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBtX2ltcG9ydFJ1bGVzLmluc2VydChjaGlsZFZlY3RvckluZGV4
LCBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVJbXBvcnQqPihydWxlLmdldCgpKSk7CisgICAgICAgIG1f
aW1wb3J0UnVsZXNbY2hpbGRWZWN0b3JJbmRleF0tPnNldFBhcmVudFN0eWxlU2hlZXQodGhpcyk7
CisgICAgICAgIG1faW1wb3J0UnVsZXNbY2hpbGRWZWN0b3JJbmRleF0tPnJlcXVlc3RTdHlsZVNo
ZWV0KCk7CisgICAgICAgIC8vIEZJWE1FOiBTdHlsZXNoZWV0IGRvZXNuJ3QgYWN0dWFsbHkgY2hh
bmdlIG1lYW5pbmdmdWxseSBiZWZvcmUgdGhlIGltcG9ydGVkIHNoZWV0cyBhcmUgbG9hZGVkLgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgLy8gSW5zZXJ0aW5nIEBpbXBvcnQgcnVs
ZSBhZnRlciBhIG5vbi1pbXBvcnQgcnVsZSBpcyBub3QgYWxsb3dlZC4KQEAgLTIyMCw2ICsyMzUs
NyBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6d3JhcHBlckRlbGV0ZVJ1CiAgICAgICAgIC0t
Y2hpbGRWZWN0b3JJbmRleDsKICAgICB9CiAgICAgaWYgKGNoaWxkVmVjdG9ySW5kZXggPCBtX2lt
cG9ydFJ1bGVzLnNpemUoKSkgeworICAgICAgICBtX2ltcG9ydFJ1bGVzW2NoaWxkVmVjdG9ySW5k
ZXhdLT5jbGVhclBhcmVudFN0eWxlU2hlZXQoKTsKICAgICAgICAgbV9pbXBvcnRSdWxlcy5yZW1v
dmUoY2hpbGRWZWN0b3JJbmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTAsMjIg
KzI2Niw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU3R5bGVTaGVldENvbnRlbnRzOjoKICAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKIH0KIAotdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnJlcXVlc3RJ
bXBvcnRlZFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqIHJvb3RTaGVldCkKLXsKLSAgICBBU1NF
UlQoIXJvb3RTaGVldC0+cGFyZW50U3R5bGVTaGVldCgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9pbXBvcnRSdWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9pbXBvcnRSdWxl
c1tpXS0+cmVxdWVzdFN0eWxlU2hlZXQocm9vdFNoZWV0LCBwYXJzZXJDb250ZXh0KCkpOwotfQot
Ci12b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VBdXRob3JTdHlsZVNoZWV0KGNvbnN0IENh
Y2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQsIENTU1N0eWxlU2hlZXQqIHJvb3RT
aGVldCkKK3ZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZUF1dGhvclN0eWxlU2hlZXQoY29u
c3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVkU3R5bGVTaGVldCwgY29uc3QgU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewotICAgIGlmIChjYWNoZWRTdHlsZVNoZWV0LT5lcnJv
ck9jY3VycmVkKCkpIHsKLSAgICAgICAgbV9kaWRMb2FkRXJyb3JPY2N1ciA9IHRydWU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSByb290U2hl
ZXQtPm93bmVyRG9jdW1lbnQoKTsKLSAgICBpZiAoIW93bmVyRG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybjsKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIGVuZm9yY2UgdGhlIE1JTUUg
dHlwZSBvZiB0aGUgQ1NTIHJlc291cmNlIGluIHN0cmljdCBtb2RlLgogICAgIC8vIFJ1bm5pbmcg
aW4gaVdlYiAyIGlzIG9uZSBleGFtcGxlIG9mIHdoZXJlIHdlIGRvbid0IHdhbnQgdG8gLSA8cmRh
cjovL3Byb2JsZW0vNjA5OTc0OD4KICAgICBib29sIGVuZm9yY2VNSU1FVHlwZSA9IGlzU3RyaWN0
UGFyc2VyTW9kZShtX3BhcnNlckNvbnRleHQubW9kZSkgJiYgbV9wYXJzZXJDb250ZXh0LmVuZm9y
Y2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZTsKQEAgLTI3OSw3ICsyODEsNiBAQCB2b2lkIFN0
eWxlU2hlZXRDb250ZW50czo6cGFyc2VBdXRob3JTdHlsCiAgICAgLy8gdG8gYXQgbGVhc3Qgc3Rh
cnQgd2l0aCBhIHN5bnRhY3RpY2FsbHkgdmFsaWQgQ1NTIHJ1bGUuCiAgICAgLy8gVGhpcyBwcmV2
ZW50cyBhbiBhdHRhY2tlciBwbGF5aW5nIGdhbWVzIGJ5IGluamVjdGluZyBDU1Mgc3RyaW5ncyBp
bnRvIEhUTUwsIFhNTCwgSlNPTiwgZXRjLiBldGMuCiAgICAgaWYgKCFoYXNWYWxpZE1JTUVUeXBl
ICYmICFoYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIoKSkgewotICAgICAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBvd25lckRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpOwogICAgICAgICBib29sIGlzQ3Jvc3NPcmlnaW5DU1MgPSAhc2VjdXJpdHlPcmlnaW4g
fHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KGJhc2VVUkwoKSk7CiAgICAgICAgIGlmIChp
c0Nyb3NzT3JpZ2luQ1NTKSB7CiAgICAgICAgICAgICBjbGVhclJ1bGVzKCk7CkBAIC0yOTIsMTMg
KzI5Myw5IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZUF1dGhvclN0eWwKICAgICAg
ICAgLy8gVGhlcmUgYXJlIHR3byB2YXJpYW50cyBvZiBLSFRNTEZpeGVzLmNzcy4gT25lIGlzIGVx
dWFsIHRvIG1lZGlhV2lraUtIVE1MRml4ZXNTdHlsZVNoZWV0LAogICAgICAgICAvLyB3aGlsZSB0
aGUgb3RoZXIgbGFja3MgdGhlIHNlY29uZCB0cmFpbGluZyBuZXdsaW5lLgogICAgICAgICBpZiAo
YmFzZVVSTCgpLnN0cmluZygpLmVuZHNXaXRoKCIvS0hUTUxGaXhlcy5jc3MiKSAmJiAhc2hlZXRU
ZXh0LmlzTnVsbCgpICYmIG1lZGlhV2lraUtIVE1MRml4ZXNTdHlsZVNoZWV0LnN0YXJ0c1dpdGgo
c2hlZXRUZXh0KQotICAgICAgICAgICAgJiYgc2hlZXRUZXh0Lmxlbmd0aCgpID49IG1lZGlhV2lr
aUtIVE1MRml4ZXNTdHlsZVNoZWV0Lmxlbmd0aCgpIC0gMSkgeworICAgICAgICAgICAgJiYgc2hl
ZXRUZXh0Lmxlbmd0aCgpID49IG1lZGlhV2lraUtIVE1MRml4ZXNTdHlsZVNoZWV0Lmxlbmd0aCgp
IC0gMSkKICAgICAgICAgICAgIGNsZWFyUnVsZXMoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogICAgIH0KLQotICAgIHJlcXVlc3RJbXBvcnRlZFN0eWxlU2hlZXRzKHJvb3RTaGVl
dCk7CiB9CiAKIGJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZVN0cmluZyhjb25zdCBTdHJp
bmcmIHNoZWV0VGV4dCkKQEAgLTMxMSwxMCArMzA4LDYgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVu
dHM6OnBhcnNlU3RyaW5nQXRMaQogICAgIENTU1BhcnNlciBwKHBhcnNlckNvbnRleHQoKSk7CiAg
ICAgcC5wYXJzZVNoZWV0KHRoaXMsIHNoZWV0VGV4dCwgc3RhcnRMaW5lTnVtYmVyKTsKIAotICAg
IGlmICghbV9jbGllbnRzLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQobV9jbGllbnRzLnNp
emUoKSA9PSAxKTsKLSAgICAgICAgcmVxdWVzdEltcG9ydGVkU3R5bGVTaGVldHMobV9jbGllbnRz
WzBdKTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMyNyw3MCArMzIwLDY2IEBA
IGJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjppc0xvYWRpbmcoKSBjb24KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjpjaGVja0ltcG9ydGVkU2hlZXRMb2Fk
Q29tcGxldGVkKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbXBvcnRSdWxl
cy5zaXplKCk7ICsraSkgewotICAgICAgICBTdHlsZVJ1bGVJbXBvcnQqIGltcG9ydFJ1bGUgPSBt
X2ltcG9ydFJ1bGVzW2ldLmdldCgpOwotICAgICAgICBpZiAoaW1wb3J0UnVsZS0+aXNMb2FkaW5n
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChpbXBvcnRSdWxlLT5z
dHlsZVNoZWV0KCkgJiYgIWltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKS0+Y2hlY2tJbXBvcnRlZFNo
ZWV0TG9hZENvbXBsZXRlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoaW1wb3J0UnVsZS0+aGFkTG9hZEVycm9yKCkpCi0gICAgICAgICAgICBtX2RpZExvYWRFcnJv
ck9jY3VyID0gdHJ1ZTsKLSAgICB9Ci0gICAgbV9sb2FkQ29tcGxldGVkID0gdHJ1ZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OmNoZWNrTG9hZENvbXBs
ZXRlZCgpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6Y2hlY2tMb2FkZWQoKQogewotICAgIGlm
IChtX2NsaWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFjaGVja0lt
cG9ydGVkU2hlZXRMb2FkQ29tcGxldGVkKCkpCisgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBwcm90ZWN0KHRoaXMp
OwogCi0gICAgQVNTRVJUKGhhc09uZUNsaWVudCgpKTsKLSAgICBBU1NFUlQoIW1fY2xpZW50c1sw
XS0+cGFyZW50U3R5bGVTaGVldCgpKTsKLSAgICBSZWZQdHI8Tm9kZT4gb3duZXJOb2RlID0gbV9j
bGllbnRzWzBdLT5vd25lck5vZGUoKTsKLSAgICBpZiAoIW93bmVyTm9kZSkKKyAgICAvLyBBdm9p
ZCB8dGhpc3wgYmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQorICAgIC8vIFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVl
dHMoKS4KKyAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgorICAgIFJlZlB0cjxT
dHlsZVNoZWV0Q29udGVudHM+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBTdHlsZVNoZWV0Q29udGVu
dHMqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOworICAgIGlmIChwYXJlbnRTaGVl
dCkgeworICAgICAgICBwYXJlbnRTaGVldC0+Y2hlY2tMb2FkZWQoKTsKKyAgICAgICAgbV9sb2Fk
Q29tcGxldGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwotICAgIAorICAgIH0KKyAgICBSZWZQ
dHI8Tm9kZT4gb3duZXJOb2RlID0gc2luZ2xlT3duZXJOb2RlKCk7CisgICAgaWYgKCFvd25lck5v
ZGUpIHsKKyAgICAgICAgbV9sb2FkQ29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICBtX2xvYWRDb21wbGV0ZWQgPSBvd25lck5vZGUtPnNoZWV0TG9hZGVkKCk7CiAg
ICAgaWYgKG1fbG9hZENvbXBsZXRlZCkKICAgICAgICAgb3duZXJOb2RlLT5ub3RpZnlMb2FkZWRT
aGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKG1fZGlkTG9hZEVycm9yT2NjdXIpOwogfQog
Ci1ib29sIFN0eWxlU2hlZXRDb250ZW50czo6Z2V0QW5jZXN0b3JzKGNvbnN0IFN0eWxlUnVsZUlt
cG9ydCogaW1wb3J0UnVsZSwgVmVjdG9yPGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyo+JiByZXN1
bHQpIGNvbnN0Cit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6bm90aWZ5TG9hZGVkU2hlZXQoY29u
c3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpCiB7Ci0gICAgcmVzdWx0LmFwcGVuZCh0aGlz
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbXBvcnRSdWxlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAobV9pbXBvcnRSdWxlc1tpXSA9PSBpbXBvcnRSdWxlKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2ltcG9ydFJ1bGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2ltcG9ydFJ1bGVzW2ld
LT5zdHlsZVNoZWV0KCkgJiYgbV9pbXBvcnRSdWxlc1tpXS0+c3R5bGVTaGVldCgpLT5nZXRBbmNl
c3RvcnMoaW1wb3J0UnVsZSwgcmVzdWx0KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICByZXN1bHQucmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NF
UlQoc2hlZXQpOworICAgIG1fZGlkTG9hZEVycm9yT2NjdXIgfD0gc2hlZXQtPmVycm9yT2NjdXJy
ZWQoKTsKIH0KIAotYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6Omhhc0ltcG9ydEN5Y2xlKGNvbnN0
IFN0eWxlUnVsZUltcG9ydCogaW1wb3J0UnVsZSwgY29uc3QgS1VSTCYgaW1wb3J0VVJMLCBjb25z
dCBLVVJMJiBkb2N1bWVudEJhc2VVUkwpIGNvbnN0Cit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6
c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCkKIHsKLSAgICBWZWN0b3I8Y29uc3QgU3R5bGVTaGVl
dENvbnRlbnRzKj4gYW5jZXN0b3JzOwotICAgIGdldEFuY2VzdG9ycyhpbXBvcnRSdWxlLCBhbmNl
c3RvcnMpOworICAgIGlmIChOb2RlKiBvd25lciA9IHNpbmdsZU93bmVyTm9kZSgpKQorICAgICAg
ICBvd25lci0+c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCk7Cit9CiAKLSAgICBLVVJMIHBhcmVu
dEJhc2VVUkwgPSBkb2N1bWVudEJhc2VVUkw7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFuY2VzdG9ycy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihpbXBvcnRVUkwsIGFuY2VzdG9yc1tpXS0+YmFzZVVSTCgpKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihpbXBvcnRVUkwsIEtVUkwocGFyZW50QmFzZVVSTCwgYW5jZXN0b3JzW2ldLT5vcmln
aW5hbFVSTCgpKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcGFyZW50QmFz
ZVVSTCA9IGFuY2VzdG9yc1tpXS0+YmFzZVVSTCgpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
CitTdHlsZVNoZWV0Q29udGVudHMqIFN0eWxlU2hlZXRDb250ZW50czo6cm9vdFN0eWxlU2hlZXQo
KSBjb25zdAoreworICAgIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogcm9vdCA9IHRoaXM7Cisg
ICAgd2hpbGUgKHJvb3QtPnBhcmVudFN0eWxlU2hlZXQoKSkKKyAgICAgICAgcm9vdCA9IHJvb3Qt
PnBhcmVudFN0eWxlU2hlZXQoKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxTdHlsZVNoZWV0Q29u
dGVudHMqPihyb290KTsKK30KKworTm9kZSogU3R5bGVTaGVldENvbnRlbnRzOjpzaW5nbGVPd25l
ck5vZGUoKSBjb25zdAoreworICAgIFN0eWxlU2hlZXRDb250ZW50cyogcm9vdCA9IHJvb3RTdHls
ZVNoZWV0KCk7CisgICAgaWYgKHJvb3QtPm1fY2xpZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIEFTU0VSVChyb290LT5tX2NsaWVudHMuc2l6ZSgpID09IDEpOworICAgIHJl
dHVybiByb290LT5tX2NsaWVudHNbMF0tPm93bmVyTm9kZSgpOworfQorCitEb2N1bWVudCogU3R5
bGVTaGVldENvbnRlbnRzOjpzaW5nbGVPd25lckRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBOb2Rl
KiBvd25lck5vZGUgPSBzaW5nbGVPd25lck5vZGUoKTsKKyAgICByZXR1cm4gb3duZXJOb2RlID8g
b3duZXJOb2RlLT5kb2N1bWVudCgpIDogMDsKIH0KIAogS1VSTCBTdHlsZVNoZWV0Q29udGVudHM6
OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdApAQCAtNDYzLDYgKzQ1MiwxMSBA
QCBib29sIFN0eWxlU2hlZXRDb250ZW50czo6aGFzRmFpbGVkT3JDYW5jCiAgICAgcmV0dXJuIGNo
aWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhtX2NoaWxkUnVsZXMpOwog
fQogCitTdHlsZVNoZWV0Q29udGVudHMqIFN0eWxlU2hlZXRDb250ZW50czo6cGFyZW50U3R5bGVT
aGVldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3duZXJSdWxlID8gbV9vd25lclJ1bGUtPnBh
cmVudFN0eWxlU2hlZXQoKSA6IDA7Cit9CisKIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpyZWdp
c3RlckNsaWVudChDU1NTdHlsZVNoZWV0KiBzaGVldCkKIHsKICAgICBBU1NFUlQoIW1fY2xpZW50
cy5jb250YWlucyhzaGVldCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaAkocmV2aXNpb24gMTI4NjI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTUgQEAgY2xhc3MgU3R5
bGVTaGVldENvbnRlbnRzIDogcHVibGljIFJlZkNvdQogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gY3JlYXRlKGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQgPSBDU1NQYXJzZXJDb250ZXh0KENTU1N0cmljdE1vZGUpKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVNoZWV0Q29udGVudHMoU3RyaW5nKCksIGNvbnRl
eHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVNoZWV0Q29udGVudHMoMCwg
U3RyaW5nKCksIGNvbnRleHQpKTsKICAgICB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVT
aGVldENvbnRlbnRzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVTaGVldENvbnRlbnRzKG9yaWdpbmFsVVJMLCBjb250ZXh0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVTaGVldENvbnRlbnRzKDAsIG9yaWdpbmFsVVJMLCBjb250
ZXh0KSk7CisgICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
Y3JlYXRlKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVNoZWV0Q29udGVudHMob3duZXJSdWxlLCBvcmlnaW5hbFVS
TCwgY29udGV4dCkpOwogICAgIH0KIAogICAgIH5TdHlsZVNoZWV0Q29udGVudHMoKTsKQEAgLTU2
LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXRlcm1pbmVO
YW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpOwogCi0gICAgdm9pZCBwYXJzZUF1
dGhvclN0eWxlU2hlZXQoY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCosIENTU1N0eWxlU2hlZXQq
IHJvb3RTaGVldCk7CisgICAgdm9pZCBwYXJzZUF1dGhvclN0eWxlU2hlZXQoY29uc3QgQ2FjaGVk
Q1NTU3R5bGVTaGVldCosIGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgYm9vbCBwYXJzZVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICBib29sIHBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0
cmluZyYsIGludCBzdGFydExpbmVOdW1iZXIpOwogCkBAIC02NCw3ICs2OCwxMiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogCi0gICAgdm9pZCBjaGVja0xvYWRDb21w
bGV0ZWQoKTsKKyAgICB2b2lkIGNoZWNrTG9hZGVkKCk7CisgICAgdm9pZCBzdGFydExvYWRpbmdE
eW5hbWljU2hlZXQoKTsKKworICAgIFN0eWxlU2hlZXRDb250ZW50cyogcm9vdFN0eWxlU2hlZXQo
KSBjb25zdDsKKyAgICBOb2RlKiBzaW5nbGVPd25lck5vZGUoKSBjb25zdDsKKyAgICBEb2N1bWVu
dCogc2luZ2xlT3duZXJEb2N1bWVudCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBjaGFy
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJDb250ZXh0LmNoYXJzZXQ7IH0KIApAQCAtOTIs
OCArMTAxLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+ID4mIGNoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkUnVsZXM7IH0KICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUltcG9ydD4gPiYgaW1wb3J0UnVsZXMoKSBjb25z
dCB7IHJldHVybiBtX2ltcG9ydFJ1bGVzOyB9CiAKLSAgICBib29sIGhhc0ltcG9ydEN5Y2xlKGNv
bnN0IFN0eWxlUnVsZUltcG9ydCogaW1wb3J0UnVsZSwgY29uc3QgS1VSTCYgaW1wb3J0VVJMLCBj
b25zdCBLVVJMJiBkb2N1bWVudEJhc2VVUkwpIGNvbnN0OwotCisgICAgdm9pZCBub3RpZnlMb2Fk
ZWRTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CisgICAgCisgICAgU3R5bGVTaGVl
dENvbnRlbnRzKiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3Q7CisgICAgU3R5bGVSdWxlSW1wb3J0
KiBvd25lclJ1bGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyUnVsZTsgfQorICAgIHZvaWQgY2xl
YXJPd25lclJ1bGUoKSB7IG1fb3duZXJSdWxlID0gMDsgfQorICAgIAogICAgIC8vIE5vdGUgdGhh
dCBocmVmIGlzIHRoZSBVUkwgdGhhdCBzdGFydGVkIHRoZSByZWRpcmVjdCBjaGFpbiB0aGF0IGxl
ZCB0bwogICAgIC8vIHRoaXMgc3R5bGUgc2hlZXQuIFRoaXMgcHJvcGVydHkgcHJvYmFibHkgaXNu
J3QgdXNlZnVsIGZvciBtdWNoIGV4Y2VwdAogICAgIC8vIHRoZSBKYXZhU2NyaXB0IGJpbmRpbmcg
KHdoaWNoIG5lZWRzIHRvIHVzZSB0aGlzIHZhbHVlIGZvciBzZWN1cml0eSkuCkBAIC0xMTAsOCAr
MTIzLDYgQEAgcHVibGljOgogICAgIGJvb2wgd3JhcHBlckluc2VydFJ1bGUoUGFzc1JlZlB0cjxT
dHlsZVJ1bGVCYXNlPiwgdW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgd3JhcHBlckRlbGV0ZVJ1
bGUodW5zaWduZWQgaW5kZXgpOwogCi0gICAgdm9pZCByZXF1ZXN0SW1wb3J0ZWRTdHlsZVNoZWV0
cyhDU1NTdHlsZVNoZWV0KiByb290U2hlZXQpOwotCiAgICAgUGFzc1JlZlB0cjxTdHlsZVNoZWV0
Q29udGVudHM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVTaGVldENv
bnRlbnRzKCp0aGlzKSk7IH0KIAogICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoQ1NTU3R5bGVTaGVl
dCopOwpAQCAtMTI4LDEzICsxMzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFN0eWxlU2hl
ZXRDb250ZW50cyhjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0Jik7CisgICAgU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAg
ICAgU3R5bGVTaGVldENvbnRlbnRzKGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyYpOwogCiAgICAg
dm9pZCBjbGVhckNoYXJzZXRSdWxlKCk7CiAKLSAgICBib29sIGNoZWNrSW1wb3J0ZWRTaGVldExv
YWRDb21wbGV0ZWQoKTsKLSAgICBib29sIGdldEFuY2VzdG9ycyhjb25zdCBTdHlsZVJ1bGVJbXBv
cnQqLCBWZWN0b3I8Y29uc3QgU3R5bGVTaGVldENvbnRlbnRzKj4mIHJlc3VsdCkgY29uc3Q7Cisg
ICAgU3R5bGVSdWxlSW1wb3J0KiBtX293bmVyUnVsZTsKIAogICAgIFN0cmluZyBtX29yaWdpbmFs
VVJMOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcAkocmV2aXNpb24gMTI4NjI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6cGFyc2VTdHlsZVNoCiAgICAgbV9sb2FkaW5nID0gZmFsc2U7
CiAKICAgICBpZiAobV9pc0NTUykKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+
KG1fc2hlZXQuZ2V0KCkpLT5jb250ZW50cygpLT5jaGVja0xvYWRDb21wbGV0ZWQoKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KG1fc2hlZXQuZ2V0KCkpLT5jb250ZW50cygp
LT5jaGVja0xvYWRlZCgpOwogI2lmIEVOQUJMRShYU0xUKQogICAgIGVsc2UgaWYgKG1faXNYU0wp
CiAgICAgICAgIHN0YXRpY19jYXN0PFhTTFN0eWxlU2hlZXQqPihtX3NoZWV0LmdldCgpKS0+Y2hl
Y2tMb2FkZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMjg2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw2IEBAIHZvaWQgU3R5bGVFbGVtZW50OjpjcmVhdGVTaGVl
dChFbGVtZW50KiAKIHsKICAgICBBU1NFUlQoZSk7CiAgICAgQVNTRVJUKGUtPmluRG9jdW1lbnQo
KSk7Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlLT5kb2N1bWVudCgpOwogICAgIGlmICht
X3NoZWV0KSB7CiAgICAgICAgIGlmIChtX3NoZWV0LT5pc0xvYWRpbmcoKSkKQEAgLTE4Miw3ICsx
ODEsNyBAQCB2b2lkIFN0eWxlRWxlbWVudDo6Y3JlYXRlU2hlZXQoRWxlbWVudCogCiAgICAgfQog
CiAgICAgaWYgKG1fc2hlZXQpCi0gICAgICAgIG1fc2hlZXQtPmNvbnRlbnRzKCktPmNoZWNrTG9h
ZENvbXBsZXRlZCgpOworICAgICAgICBtX3NoZWV0LT5jb250ZW50cygpLT5jaGVja0xvYWRlZCgp
OwogfQogCiBib29sIFN0eWxlRWxlbWVudDo6aXNMb2FkaW5nKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyODYyNikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIzLDEwICszMjMsMTEgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQo
YwogICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxv
d2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKICAgICBtX3NoZWV0LT5zZXRUaXRsZSh0
aXRsZSgpKTsKIAotICAgIHN0eWxlU2hlZXQtPnBhcnNlQXV0aG9yU3R5bGVTaGVldChjYWNoZWRT
dHlsZVNoZWV0LCBtX3NoZWV0LmdldCgpKTsKKyAgICBzdHlsZVNoZWV0LT5wYXJzZUF1dGhvclN0
eWxlU2hlZXQoY2FjaGVkU3R5bGVTaGVldCwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKLSAgICBzdHlsZVNoZWV0LT5jaGVja0xvYWRDb21w
bGV0ZWQoKTsKKyAgICBzdHlsZVNoZWV0LT5ub3RpZnlMb2FkZWRTaGVldChjYWNoZWRTdHlsZVNo
ZWV0KTsKKyAgICBzdHlsZVNoZWV0LT5jaGVja0xvYWRlZCgpOwogCiAjaWYgRU5BQkxFKFBBUlNF
RF9TVFlMRV9TSEVFVF9DQUNISU5HKQogICAgIGlmIChzdHlsZVNoZWV0LT5pc0NhY2hlYWJsZSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMTI4NjI2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOCAr
MTg1LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IENhY2hlZENTUwogdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzYXZlUGFyc2VkU3R5bGVTaGVldChQYXNzUmVmUHRyPFN0eWxl
U2hlZXRDb250ZW50cz4gc2hlZXQpCiB7CiAgICAgQVNTRVJUKHNoZWV0ICYmIHNoZWV0LT5pc0Nh
Y2hlYWJsZSgpKTsKLSAgICBpZiAobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUgPT0gc2hlZXQpCi0g
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSkKICAgICAg
ICAgbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPnJlbW92ZWRGcm9tTWVtb3J5Q2FjaGUoKTsKICAg
ICBtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSA9IHNoZWV0Owo=
</data>
<flag name="commit-queue"
          id="175883"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>