<?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>102110</bug_id>
          
          <creation_ts>2012-11-13 11:39:02 -0800</creation_ts>
          <short_desc>REGRESSION(r129644): User StyleSheet not applying</short_desc>
          <delta_ts>2012-11-20 14:09:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>aestes</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>jianli</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765856</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-13 11:39:02 -0800</bug_when>
    <thetext>I was able to bisect this to http://trac.webkit.org/changeset/129644 . I&apos;ll upload a layout test that repros the problem.

Antti, can you take a look?

This was originally reported to Chromium: https://code.google.com/p/chromium/issues/detail?id=160263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765857</commentid>
    <comment_count>1</comment_count>
      <attachid>173933</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-13 11:40:01 -0800</bug_when>
    <thetext>Created attachment 173933
Patch (test only)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765858</commentid>
    <comment_count>2</comment_count>
      <attachid>173933</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-13 11:40:55 -0800</bug_when>
    <thetext>Comment on attachment 173933
Patch (test only)

The user stylesheet should apply and you should see a green box with &quot;PASS&quot; in it.  If you see a red box, the test failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767384</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-14 15:41:32 -0800</bug_when>
    <thetext>Hmm, looks like neither Antti nor I can repro this failure on Apple DRT on Mac.

I&apos;m surprised that there&apos;s differing behavior here (maybe a timing issue in the network layer?)  I&apos;ll see if I can figure out why the ports don&apos;t match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768596</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-15 16:06:37 -0800</bug_when>
    <thetext>Ok, I figured out the difference.  In Chromium, when an extension adds a style sheet, we add it as an author level style sheet.  In Safari, when an extension adds a style sheet, we add it as a user level style sheet.

I&apos;m still trying to figure out why this difference doesn&apos;t work with Antti&apos;s change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768757</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-15 17:42:03 -0800</bug_when>
    <thetext>I think what&apos;s happening is:

In http://trac.webkit.org/browser/trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp#L470 , we call resetAuthorStyle(), which clears all author styles, including those that were added from pageGroupUserSheets here: http://trac.webkit.org/browser/trunk/Source/WebCore/css/StyleResolver.cpp#L321.

Maybe in resetAuthorStyle we should add a loop over styleSheetCollection-&gt;pageGroupUserSheets() that adds back the extension specified author stylesheets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769518</commentid>
    <comment_count>6</comment_count>
      <attachid>174731</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-16 11:39:49 -0800</bug_when>
    <thetext>Created attachment 174731
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769548</commentid>
    <comment_count>7</comment_count>
      <attachid>174731</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-16 12:02:15 -0800</bug_when>
    <thetext>Comment on attachment 174731
patch

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

r=me..

&gt; Source/WebCore/css/StyleResolver.cpp:346
&gt; +    for (unsigned i = 0; i &lt; userSheets.size(); i++) {

++i

&gt; Source/WebCore/css/StyleResolver.cpp:2583
&gt; +    for (size_t i = 0; i &lt; sheets.size(); ++i)

size_t!

&gt; Source/WebCore/dom/DocumentStyleSheetCollection.cpp:82
&gt; +    for (size_t i = 0; i &lt; m_userStyleSheets.size(); ++i)

size_t again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769622</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-16 13:23:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769631</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-16 13:31:46 -0800</bug_when>
    <thetext>Reverted r134986 for reason:

Triggered ASSERT in fast/frames/seamless/seamless-inherited-origin.html.

Committed r134992: &lt;http://trac.webkit.org/changeset/134992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769939</commentid>
    <comment_count>10</comment_count>
      <attachid>174731</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-17 06:00:21 -0800</bug_when>
    <thetext>Comment on attachment 174731
patch

Attachment 174731 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14875335

New failing tests:
inspector/timeline/timeline-script-tag-1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770166</commentid>
    <comment_count>11</comment_count>
      <attachid>174852</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-18 12:17:42 -0800</bug_when>
    <thetext>Created attachment 174852
updated patch

Removed a faulty ASSERT and updated one test result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770185</commentid>
    <comment_count>12</comment_count>
      <attachid>174852</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 14:03:01 -0800</bug_when>
    <thetext>Comment on attachment 174852
updated patch

Rejecting attachment 174852 from commit-queue.

New failing tests:
inspector/timeline/timeline-script-tag-1.html
Full output: http://queues.webkit.org/results/14888544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770186</commentid>
    <comment_count>13</comment_count>
      <attachid>174856</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-18 14:13:08 -0800</bug_when>
    <thetext>Created attachment 174856
retry

forgot the test update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770187</commentid>
    <comment_count>14</comment_count>
      <attachid>174856</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 14:39:33 -0800</bug_when>
    <thetext>Comment on attachment 174856
retry

Clearing flags on attachment: 174856

Committed r135082: &lt;http://trac.webkit.org/changeset/135082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770188</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 14:39:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770535</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-19 03:06:26 -0800</bug_when>
    <thetext>This patch breaks browser_tests in Chromium:

log: http://build.chromium.org/p/chromium.webkit/builders/Linux%20Tests/builds/24821/steps/browser_tests/logs/ContentScriptCSSLocalization

test: http://code.google.com/codesearch#OAMlx_jo-ck/src/chrome/test/data/extensions/api_test/content_scripts/css_l10n/background.js&amp;exact_package=chromium&amp;q=textDirectionMessageGetsReplacedInInsertCSSCall&amp;type=cs&amp;l=48</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770585</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-19 04:12:06 -0800</bug_when>
    <thetext>A WebKit test case would be cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770587</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-19 04:13:50 -0800</bug_when>
    <thetext>Yeah, I&apos;m trying to invent a WebKit test case to reproduce the bug (but still not successful:-).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771012</commentid>
    <comment_count>19</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-11-19 14:07:30 -0800</bug_when>
    <thetext>Got an assert from one Chromium build bot:

ASSERTION FAILED: userSheets[i]-&gt;contents()-&gt;isUserStyleSheet()
third_party/WebKit/Source/WebCore/css/StyleResolver.cpp(340) : void WebCore::StyleResolver::collectRulesFromUserStyleSheets(const WTF::Vector&lt;WTF::RefPtr&lt;WebCore::CSSStyleSheet&gt;, 0u&gt;&amp;, WebCore::RuleSet&amp;)

Here is the link to bot output:

http://build.chromium.org/p/chromium.linux/builders/Linux%20%28Precise%29/builds/651/steps/browser_tests/logs/ExecuteScriptBasic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772157</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-20 14:09:04 -0800</bug_when>
    <thetext>There are 2 bugs, both in Chromium:

1) We were calling DocumentStyleSheetCollection::addUserSheet and trying to add an author level stylesheet.  This is chromium using the DocumentStyleSheetCollection incorrectly and I&apos;m fixing it in bug 102835.  This will fix the asserts in ExecuteScriptApiTest.ExecuteScriptBasic, ExecuteScriptApiTest.ExecuteScriptInFrame.

2) Because we were adding an author level style sheet via DocumentStyleSheetCollection::addUserSheet, it was getting matched by window.getMatchedCSSRules (which only matches author level stylesheets).  This this is Chromium specific, I filed a bug at http://crbug.com/162096 for this.  It&apos;s not clear to me if we want to just live with the current behavior or add functionality to addAuthorSheets.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173933</attachid>
            <date>2012-11-13 11:40:01 -0800</date>
            <delta_ts>2012-11-13 12:46:12 -0800</delta_ts>
            <desc>Patch (test only)</desc>
            <filename>bug-102110-20121113113802.patch</filename>
            <type>text/plain</type>
            <size>2587</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDM4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy91c2Vy
c2NyaXB0cy9yZXNvdXJjZXMvdXNlci1zY3JpcHQtYW5kLXN0eWxlc2hlZXQtZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL3VzZXJzY3JpcHRzL3Jlc291cmNlcy91c2VyLXNjcmlwdC1hbmQtc3R5bGVz
aGVldC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NTc2ZWQ4Zjk0MzVjZjkyM2E0NzE5N2IxYWRk
YzBlMzI1NzJmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy91c2Vyc2NyaXB0cy9y
ZXNvdXJjZXMvdXNlci1zY3JpcHQtYW5kLXN0eWxlc2hlZXQtZnJhbWUuaHRtbApAQCAtMCwwICsx
LDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1l
bnQud3JpdGUoJzxzY3JpcHQgc3JjPSJhYm91dDpibGFuayI+PFwvc2NyaXB0PicpOworCit2YXIg
bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKK2xpbmsuc2V0QXR0cmlidXRl
KCJyZWwiLCAic3R5bGVzaGVldCIpOworbGluay5zZXRBdHRyaWJ1dGUoImhyZWYiLCAidGVzdC5j
c3MiKTsKK2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7CisKK3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgCisgICAgZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOworICAgICAgICBsaW5r
LnNldEF0dHJpYnV0ZSgicmVsIiwgInN0eWxlc2hlZXQiKTsKKyAgICAgICAgbGluay5zZXRBdHRy
aWJ1dGUoImhyZWYiLCAidGVzdC5jc3MiKTsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5pbnNlcnRC
ZWZvcmUobGluaywgZG9jdW1lbnQuaGVhZC5maXJzdENoaWxkKTsKKyAgICB9LCBmYWxzZSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3VzZXJz
Y3JpcHRzL3VzZXItc2NyaXB0LWFuZC1zdHlsZXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy91c2Vy
c2NyaXB0cy91c2VyLXNjcmlwdC1hbmQtc3R5bGVzaGVldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMGVi
NjRhY2JkZDc2Y2E5YTRjMmRjZWE3ODZhNDUwOTAxYmU3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy91c2Vyc2NyaXB0cy91c2VyLXNjcmlwdC1hbmQtc3R5bGVzaGVldC5odG1sCkBA
IC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmFkZFVzZXJTY3JpcHQo
IiIKKyAgICAgICAgKyAid2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQn
LFxuIgorICAgICAgICArICJmdW5jdGlvbihldmVudCkge1xuIgorICAgICAgICArICJcbiIKKyAg
ICAgICAgKyAidmFyIGRvbUZvbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuIgor
ICAgICAgICArICIgIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4iCisg
ICAgICAgICsgImRvbUZvby5zdHlsZS5saW5lSGVpZ2h0ID0gJzYwcHgnO1xuIgorICAgICAgICAr
ICJkb21Gb28uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JlZCc7XG4iCisgICAgICAgICsgImRv
bUZvby5zdHlsZS5oZWlnaHQgPSAnNjBweCc7XG4iCisgICAgICAgICsgImRvbUZvby5zdHlsZS53
aWR0aCA9ICczMDBweCc7XG4iCisgICAgICAgICsgImRvbUZvby5zdHlsZS5wb3NpdGlvbiA9ICdm
aXhlZCc7XG4iCisgICAgICAgICsgImRvbUZvby5zdHlsZS50b3AgPSAwO1xuIgorICAgICAgICAr
ICJkb21Gb28uc3R5bGUuekluZGV4ID0gMjE0NzQ4MzY0NztcbiIKKyAgICAgICAgKyAiZG9tRm9v
LmNsYXNzTmFtZSA9ICdjaHJvbWUyNF9pc3N1ZV8yMDEyMTEwOSc7XG4iCisgICAgICAgICsgIlxu
IgorICAgICAgICArICJkb21Gb28uYXBwZW5kQ2hpbGQoc3Bhbik7XG4iCisgICAgICAgICsgImRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRm9vKTtcbiIKKyAgICAgICAgKyAifSwgZmFsc2Ug
KTtcbiIsIHRydWUsIHRydWUpOworICAgIHRlc3RSdW5uZXIuYWRkVXNlclN0eWxlU2hlZXQoIi5j
aHJvbWUyNF9pc3N1ZV8yMDEyMTEwOSB7IgorICAgICAgICArICIgIGJhY2tncm91bmQtY29sb3I6
IGdyZWVuICFpbXBvcnRhbnQ7IgorICAgICAgICArICIgIGNvbG9yOiAjZmZmOyB0ZXh0LWFsaWdu
OiBjZW50ZXI7ICBmb250LXdlaWdodDogYm9sZDsgfVxuIgorICAgICAgICArICIuY2hyb21lMjRf
aXNzdWVfMjAxMjExMDkgc3BhbjphZnRlciB7IgorICAgICAgICArICIgIGNvbnRlbnQ6ICdQQVNT
JzsgfSIsIHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvdXNlci1zY3JpcHQtYW5kLXN0eWxlc2hlZXQtZnJhbWUuaHRtbCI+PC9pZnJh
bWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174731</attachid>
            <date>2012-11-16 11:39:49 -0800</date>
            <delta_ts>2012-11-18 12:17:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>user-stylesheet-invalidate-2.patch</filename>
            <type>text/plain</type>
            <size>20677</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTExLTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxMjk2NDQp
OiBVc2VyIFN0eWxlU2hlZXQgbm90IGFwcGx5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbmplY3RlZCBzdHlsZXNoZWV0cyBhZGRlZCBhcyBVc2Vy
U3R5bGVBdXRob3JMZXZlbCBmYWlsIHRvIGFwcGx5LiByMTI5NjQ0IGltcGxpY2l0bHkgYXNzdW1l
ZCB0aGF0CisgICAgICAgIHN1Y2ggdGhpbmdzIGRvbid0IGV4aXN0cyBidXQgb24gQ2hyb21pdW0g
YWRkVXNlclN0eWxlU2hlZXQoKSBjb25mdXNpbmdseSB1c2VzIHRoZW0uCisgICAgICAgIAorICAg
ICAgICBUaGUgcGF0Y2ggYWRkcyBpbmplY3RlZCBhdXRob3Igc3R5bGVzaGVldHMgdG8gRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWN0aXZlU3R5bGVTaGVldHMoKS4KKyAgICAgICAgSXQg
YWxzbyBnZW5lcmFsbHkgY2xlYW5zIHVwIHRoZSBjb2RlIGFyb3VuZCBpbmplY3RlZCBhbmQgdXNl
ciBzdHlsZXNoZWV0cy4KKworICAgICAgICBUZXN0czogdXNlcnNjcmlwdHMvdXNlci1zY3JpcHQt
YW5kLXN0eWxlc2hlZXQuaHRtbAorICAgICAgICAgICAgICAgdXNlcnNjcmlwdHMvdXNlci1zdHls
ZXNoZWV0LWludmFsaWRhdGUuaHRtbAorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hl
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RDU1NPTVdyYXBwZXJzKToKKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRDb21w
YXRpYmlsaXR5TW9kZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjppbmplY3RlZFVz
ZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlSW5q
ZWN0ZWRTdHlsZVNoZWV0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFVzZXJTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVB
Y3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OmRvY3VtZW50VXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9t
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmludmFsaWRhdGVkSW5qZWN0ZWRTdHls
ZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcyk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuaDoKKyAg
ICAgICAgKFBhZ2VHcm91cCk6CisKIDIwMTItMTEtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBNb3ZlIEd0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nIHRvIHRoZSBVSVByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDEzNDc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDEyICszMjEsMTEgQEAgU3R5
bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZAogICAgIHJlc2V0QXV0aG9yU3R5
bGUoKTsKIAogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qIHN0eWxlU2hlZXRDb2xs
ZWN0aW9uID0gZG9jdW1lbnQtPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCk7Ci0gICAgLy8gRklYTUU6
IFRoaXMgc3Vja3MhIFRoZSB1c2VyIHNoZWV0IGlzIHJlcGFyc2VkIGV2ZXJ5IHRpbWUhCiAgICAg
T3duUHRyPFJ1bGVTZXQ+IHRlbXBVc2VyU3R5bGUgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5w
YWdlVXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBVc2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KHBhZ2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksICptX21lZGl1bSwgdGhpcyk7Ci0gICAgYWRkQXV0
aG9yUnVsZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJvbVNoZWV0cyhzdHlsZVNoZWV0Q29sbGVjdGlv
bi0+cGFnZUdyb3VwVXNlclNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSk7Ci0gICAgYWRkQXV0aG9y
UnVsZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJvbVNoZWV0cyhzdHlsZVNoZWV0Q29sbGVjdGlvbi0+
ZG9jdW1lbnRVc2VyU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlKTsKKyAgICBjb2xsZWN0UnVsZXNG
cm9tVXNlclN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5pbmplY3RlZFVzZXJTdHls
ZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSk7CisgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHls
ZVNoZWV0cyhzdHlsZVNoZWV0Q29sbGVjdGlvbi0+ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSwg
KnRlbXBVc2VyU3R5bGUpOwogICAgIGlmICh0ZW1wVXNlclN0eWxlLT5tX3J1bGVDb3VudCA+IDAg
fHwgdGVtcFVzZXJTdHlsZS0+bV9wYWdlUnVsZXMuc2l6ZSgpID4gMCkKICAgICAgICAgbV91c2Vy
U3R5bGUgPSB0ZW1wVXNlclN0eWxlLnJlbGVhc2UoKTsKIApAQCAtMzQyLDE4ICszNDEsMTEgQEAg
U3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZAogICAgIGFwcGVuZEF1dGhv
clN0eWxlU2hlZXRzKDAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cygpKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphZGRBdXRob3JSdWxlc0FuZENvbGxl
Y3RVc2VyUnVsZXNGcm9tU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
PiogdXNlclNoZWV0cywgUnVsZVNldCYgdXNlclN0eWxlKQordm9pZCBTdHlsZVJlc29sdmVyOjpj
b2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgdXNlclNoZWV0cywgUnVsZVNldCYgdXNlclN0eWxlKQogewotICAgIGlmICgh
dXNlclNoZWV0cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdXNl
clNoZWV0cy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgewotICAgICAgICBTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0ID0gdXNlclNoZWV0cy0+YXQo
aSktPmNvbnRlbnRzKCk7Ci0gICAgICAgIGlmIChzaGVldC0+aXNVc2VyU3R5bGVTaGVldCgpKQot
ICAgICAgICAgICAgdXNlclN0eWxlLmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0s
IHRoaXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2F1dGhvclN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChzaGVldCwgKm1fbWVkaXVtLCB0aGlzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdXNlclNoZWV0cy5zaXplKCk7IGkrKykgeworICAgICAgICBBU1NFUlQodXNlclNo
ZWV0c1tpXS0+Y29udGVudHMoKS0+aXNVc2VyU3R5bGVTaGVldCgpKTsKKyAgICAgICAgdXNlclN0
eWxlLmFkZFJ1bGVzRnJvbVNoZWV0KHVzZXJTaGVldHNbaV0tPmNvbnRlbnRzKCksICptX21lZGl1
bSwgdGhpcyk7CiAgICAgfQogfQogCkBAIC0yNTg2LDI3ICsyNTc4LDE4IEBAIHN0YXRpYyB2b2lk
IGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXAKICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3
cmFwcGVyTWFwLCBzdHlsZVNoZWV0V3JhcHBlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNv
bGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVs
ZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVl
dENvbGxlY3Rpb24pCitzdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0
eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRzKQogewotICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMgPSBzdHlsZVNoZWV0Q29sbGVjdGlv
bi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRzW2ldLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNoZWV0cy5zaXplKCk7ICsraSkKKyAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMo
d3JhcHBlck1hcCwgc2hlZXRzW2ldLmdldCgpKTsKK30KIAorc3RhdGljIHZvaWQgY29sbGVjdENT
U09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3
cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVj
dGlvbikKK3sKKyAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7CiAgICAgY29sbGVjdENTU09N
V3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQo
KSk7Ci0gICAgewotICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4q
IHBhZ2VHcm91cFVzZXJTaGVldHMgPSBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+cGFnZUdyb3VwVXNl
clNoZWV0cygpOwotICAgICAgICBpZiAocGFnZUdyb3VwVXNlclNoZWV0cykgewotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYWdlR3JvdXBVc2VyU2hlZXRzLT5zaXplKCk7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3Jh
cHBlck1hcCwgcGFnZUdyb3VwVXNlclNoZWV0cy0+YXQoaSkuZ2V0KCkpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
KiBkb2N1bWVudFVzZXJTaGVldHMgPSBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+ZG9jdW1lbnRVc2Vy
U2hlZXRzKCk7Ci0gICAgICAgIGlmIChkb2N1bWVudFVzZXJTaGVldHMpIHsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZG9jdW1lbnRVc2VyU2hlZXRzLT5zaXplKCk7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBl
ck1hcCwgZG9jdW1lbnRVc2VyU2hlZXRzLT5hdChpKS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9
CisgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rp
b24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOworICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0
cygpKTsKIH0KIAogQ1NTU3R5bGVSdWxlKiBTdHlsZVJlc29sdmVyOjplbnN1cmVGdWxsQ1NTT01X
cmFwcGVyRm9ySW5zcGVjdG9yKFN0eWxlUnVsZSogcnVsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaAkocmV2aXNpb24gMTM0Nzk1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDcgKzQyMSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgc3RhdGljIFJlbmRlclN0eWxlKiBzX3N0eWxlTm90WWV0QXZhaWxhYmxl
OwogCi0gICAgdm9pZCBhZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiosIFJ1bGVTZXQmIHVzZXJTdHls
ZSk7CisgICAgdm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYsIFJ1bGVTZXQmIHVzZXJTdHlsZSk7CiAKICAgICB2
b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDEzNDc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIERvY3VtZW50OjpzZXRD
b21wYXRpYmlsaXR5TW9kZShDb21wCiAgICAgaWYgKGluUXVpcmtzTW9kZSgpICE9IHdhc0luUXVp
cmtzTW9kZSkgewogICAgICAgICAvLyBBbGwgdXNlciBzdHlsZXNoZWV0cyBoYXZlIHRvIHJlcGFy
c2UgdXNpbmcgdGhlIGRpZmZlcmVudCBtb2RlLgogICAgICAgICBtX3N0eWxlU2hlZXRDb2xsZWN0
aW9uLT5jbGVhclBhZ2VVc2VyU2hlZXQoKTsKLSAgICAgICAgbV9zdHlsZVNoZWV0Q29sbGVjdGlv
bi0+Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKCk7CisgICAgICAgIG1fc3R5bGVTaGVldENvbGxl
Y3Rpb24tPmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcAkocmV2aXNpb24gMTM0Nzk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3BlbmRpbmdTdHlsZXNoZWV0cygwKQot
ICAgICwgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQorICAgICwgbV9pbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQogICAgICwgbV9oYWRBY3RpdmVMb2FkaW5n
U3R5bGVzaGVldChmYWxzZSkKICAgICAsIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09u
U3R5bGVSZWNhbGMoZmFsc2UpCiAgICAgLCBtX3VzZXNTaWJsaW5nUnVsZXMoZmFsc2UpCkBAIC03
NSwxNCArNzUsMTIgQEAgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6fkRvY3VtZW50Uwog
ewogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpCiAgICAgICAgIG1fcGFnZVVzZXJTaGVldC0+Y2xl
YXJPd25lck5vZGUoKTsKLSAgICBpZiAobV9wYWdlR3JvdXBVc2VyU2hlZXRzKSB7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgICgqbV9wYWdlR3JvdXBVc2VyU2hlZXRzKVtpXS0+Y2xlYXJPd25lck5v
ZGUoKTsKLSAgICB9Ci0gICAgaWYgKG1fdXNlclNoZWV0cykgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fdXNlclNoZWV0cy0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAoKm1f
dXNlclNoZWV0cylbaV0tPmNsZWFyT3duZXJOb2RlKCk7Ci0gICAgfQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzLnNpemUoKTsgKytpKQorICAg
ICAgICBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzW2ldLT5jbGVhck93bmVyTm9kZSgpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuc2l6
ZSgpOyArK2kpCisgICAgICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0c1tpXS0+Y2xlYXJP
d25lck5vZGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdXNlclN0eWxlU2hlZXRz
LnNpemUoKTsgKytpKQorICAgICAgICBtX3VzZXJTdHlsZVNoZWV0c1tpXS0+Y2xlYXJPd25lck5v
ZGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb21iaW5lQ1NT
RmVhdHVyZUZsYWdzKCkKQEAgLTEzNywyMSArMTM1LDM0IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXQKICAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cGFnZUdyb3Vw
VXNlclNoZWV0cygpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4m
IERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkKQotICAgICAg
ICByZXR1cm4gbV9wYWdlR3JvdXBVc2VyU2hlZXRzLmdldCgpOwotICAgIAotICAgIG1fcGFnZUdy
b3VwVXNlclNoZWV0Q2FjaGVWYWxpZCA9IHRydWU7Ci0gICAgCisgICAgdXBkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGUoKTsKKyAgICByZXR1cm4gbV9pbmplY3RlZFVzZXJTdHlsZVNoZWV0czsK
K30KKworY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjppbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkgY29uc3QKK3sKKyAg
ICB1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOworICAgIHJldHVybiBtX2luamVjdGVk
QXV0aG9yU3R5bGVTaGVldHM7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjo6dXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKSBjb25zdAoreworICAgIGlmIChtX2lu
amVjdGVkU3R5bGVTaGVldENhY2hlVmFsaWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2luamVj
dGVkU3R5bGVTaGVldENhY2hlVmFsaWQgPSB0cnVlOworICAgIG1faW5qZWN0ZWRVc2VyU3R5bGVT
aGVldHMuY2xlYXIoKTsKKyAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuY2xlYXIoKTsK
KwogICAgIFBhZ2UqIG93bmluZ1BhZ2UgPSBtX2RvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKCFv
d25pbmdQYWdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCA9IG93bmluZ1BhZ2UtPmdyb3VwKCk7CiAg
ICAgY29uc3QgVXNlclN0eWxlU2hlZXRNYXAqIHNoZWV0c01hcCA9IHBhZ2VHcm91cC51c2VyU3R5
bGVTaGVldHMoKTsKICAgICBpZiAoIXNoZWV0c01hcCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybjsKIAogICAgIFVzZXJTdHlsZVNoZWV0TWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBzaGVldHNNYXAtPmVuZCgpOwogICAgIGZvciAoVXNlclN0eWxlU2hlZXRNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gc2hlZXRzTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTE2
MywzOCArMTc0LDI2IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogRG8K
ICAgICAgICAgICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMo
bV9kb2N1bWVudC0+dXJsKCksIHNoZWV0LT53aGl0ZWxpc3QoKSwgc2hlZXQtPmJsYWNrbGlzdCgp
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiBncm91cFNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnN0X2Nh
c3Q8RG9jdW1lbnQqPihtX2RvY3VtZW50KSwgc2hlZXQtPnVybCgpKTsKLSAgICAgICAgICAgIGlm
ICghbV9wYWdlR3JvdXBVc2VyU2hlZXRzKQotICAgICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNl
clNoZWV0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4pOwot
ICAgICAgICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5hcHBlbmQoZ3JvdXBTaGVldCk7Ci0g
ICAgICAgICAgICBncm91cFNoZWV0LT5jb250ZW50cygpLT5zZXRJc1VzZXJTdHlsZVNoZWV0KHNo
ZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgICAgICAgICBib29sIGlz
VXNlclN0eWxlU2hlZXQgPSBzaGVldC0+bGV2ZWwoKSA9PSBVc2VyU3R5bGVVc2VyTGV2ZWw7Cisg
ICAgICAgICAgICBpZiAoaXNVc2VyU3R5bGVTaGVldCkKKyAgICAgICAgICAgICAgICBtX2luamVj
dGVkVXNlclN0eWxlU2hlZXRzLmFwcGVuZChncm91cFNoZWV0KTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKGdyb3Vw
U2hlZXQpOworICAgICAgICAgICAgZ3JvdXBTaGVldC0+Y29udGVudHMoKS0+c2V0SXNVc2VyU3R5
bGVTaGVldChpc1VzZXJTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIGdyb3VwU2hlZXQtPmNvbnRl
bnRzKCktPnBhcnNlU3RyaW5nKHNoZWV0LT5zb3VyY2UoKSk7CiAgICAgICAgIH0KICAgICB9Ci0K
LSAgICByZXR1cm4gbV9wYWdlR3JvdXBVc2VyU2hlZXRzLmdldCgpOwogfQogCi12b2lkIERvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNsZWFyUGFnZUdyb3VwVXNlclNoZWV0cygpCit2b2lk
IERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hl
ZXRDYWNoZSgpCiB7Ci0gICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7
Ci0gICAgaWYgKG1fcGFnZUdyb3VwVXNlclNoZWV0cyAmJiBtX3BhZ2VHcm91cFVzZXJTaGVldHMt
PnNpemUoKSkgewotICAgICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmNsZWFyKCk7Ci0gICAg
ICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwot
ICAgIH0KLX0KLQotdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVQYWdl
R3JvdXBVc2VyU2hlZXRzKCkKLXsKLSAgICBjbGVhclBhZ2VHcm91cFVzZXJTaGVldHMoKTsKLSAg
ICBpZiAocGFnZUdyb3VwVXNlclNoZWV0cygpICYmIHBhZ2VHcm91cFVzZXJTaGVldHMoKS0+c2l6
ZSgpKQotICAgICAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKKyAgICBtX2luamVjdGVkU3R5bGVTaGVldENhY2hlVmFsaWQgPSBmYWxz
ZTsKKyAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxl
KTsKIH0KIAogdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphZGRVc2VyU2hlZXQo
UGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHVzZXJTaGVldCkKIHsKLSAgICBpZiAoIW1f
dXNlclNoZWV0cykKLSAgICAgICAgbV91c2VyU2hlZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPik7Ci0gICAgbV91c2VyU2hlZXRzLT5hcHBlbmQoQ1NTU3R5
bGVTaGVldDo6Y3JlYXRlKHVzZXJTaGVldCwgbV9kb2N1bWVudCkpOworICAgIG1fdXNlclN0eWxl
U2hlZXRzLmFwcGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUodXNlclNoZWV0LCBtX2RvY3VtZW50
KSk7CiAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1l
ZGlhdGVseSk7CiB9CiAKQEAgLTQ1NSw2ICs0NTQsNyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OnVwZGF0CiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0
eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVD
U1NTdHlsZVNoZWV0czsKKyAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmQoaW5qZWN0ZWRB
dXRob3JTdHlsZVNoZWV0cygpKTsKICAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9t
U2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3VtZW50KTsKICAgICBm
aWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0
eWxlU2hlZXRzKTsKIApAQCAtNDkwLDggKzQ5MCw5IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6cmVwb3IKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9wYWdlVXNlclNoZWV0KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2VHcm91cFVzZXJT
aGVldHMpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fdXNlclNoZWV0cyk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9pbmplY3RlZFVzZXJTdHlsZVNoZWV0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9p
bmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3VzZXJTdHls
ZVNoZWV0cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7
CiAgICAgaW5mby5hZGRNZW1iZXIobV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHJl
dmlzaW9uIDEzNDc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE2ICs1NSwxNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7IH0KIAog
ICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQoKTsKLSAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4qIHBhZ2VHcm91cFVzZXJTaGVldHMoKSBjb25zdDsKLSAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIGRvY3VtZW50VXNlclNoZWV0cygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlclNoZWV0cy5nZXQoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSBjb25zdCB7
IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0czsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSBjb25zdDsKKyAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGluamVjdGVkQXV0aG9yU3R5bGVTaGVl
dHMoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSos
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2b2lkIHJlbW92ZVN0eWxlU2hlZXRDYW5kaWRh
dGVOb2RlKE5vZGUqKTsKIAogICAgIHZvaWQgY2xlYXJQYWdlVXNlclNoZWV0KCk7CiAgICAgdm9p
ZCB1cGRhdGVQYWdlVXNlclNoZWV0KCk7Ci0gICAgdm9pZCBjbGVhclBhZ2VHcm91cFVzZXJTaGVl
dHMoKTsKLSAgICB2b2lkIHVwZGF0ZVBhZ2VHcm91cFVzZXJTaGVldHMoKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOworICAgIHZvaWQgdXBkYXRlSW5qZWN0
ZWRTdHlsZVNoZWV0Q2FjaGUoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkVXNlclNoZWV0KFBhc3NS
ZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiB1c2VyU2hlZXQpOwogCkBAIC0xMjUsOSArMTI2LDEy
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcGVuZGluZ1N0eWxlc2hlZXRzOwogCiAgICAgUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IG1fcGFnZVVzZXJTaGVldDsKLSAgICBtdXRhYmxlIE93blB0cjxWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gPiBtX3BhZ2VHcm91cFVzZXJTaGVldHM7Ci0gICAg
T3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiA+IG1fdXNlclNoZWV0czsKLSAg
ICBtdXRhYmxlIGJvb2wgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkOworCisgICAgbXV0
YWJsZSBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9pbmplY3RlZFVzZXJTdHlsZVNo
ZWV0czsKKyAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2luamVj
dGVkQXV0aG9yU3R5bGVTaGVldHM7CisgICAgbXV0YWJsZSBib29sIG1faW5qZWN0ZWRTdHlsZVNo
ZWV0Q2FjaGVWYWxpZDsKKworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX3Vz
ZXJTdHlsZVNoZWV0czsKIAogICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsK
ICAgICBib29sIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxMzQ3OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICsz
MDEsNyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkCiAgICAgc3R5
bGVTaGVldHNJbldvcmxkLT5hcHBlbmQodXNlclN0eWxlU2hlZXQucmVsZWFzZSgpKTsKIAogICAg
IGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpCi0gICAgICAg
IHJlc2V0VXNlclN0eWxlQ2FjaGVJbkFsbEZyYW1lcygpOworICAgICAgICBpbnZhbGlkYXRlZElu
amVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6
OnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3Qg
S1VSTCYgdXJsKQpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2Vy
U3R5bGVTaGVldEZyb20KICAgICBpZiAoc3R5bGVzaGVldHMtPmlzRW1wdHkoKSkKICAgICAgICAg
bV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZShpdCk7CiAKLSAgICByZXNldFVzZXJTdHlsZUNhY2hl
SW5BbGxGcmFtZXMoKTsKKyAgICBpbnZhbGlkYXRlZEluamVjdGVkU3R5bGVTaGVldENhY2hlSW5B
bGxGcmFtZXMoKTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdv
cmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBQYWdl
R3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0c0ZybwogICAgIAogICAgIG1fdXNlclN0eWxlU2hl
ZXRzLT5yZW1vdmUoaXQpOwogCi0gICAgcmVzZXRVc2VyU3R5bGVDYWNoZUluQWxsRnJhbWVzKCk7
CisgICAgaW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9
CiAKIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCkBAIC0zOTAsMTcgKzM5
MCwxNyBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQogCiAgICAgaWYg
KG1fdXNlclN0eWxlU2hlZXRzKSB7CiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzLmNsZWFyKCk7
Ci0gICAgICAgIHJlc2V0VXNlclN0eWxlQ2FjaGVJbkFsbEZyYW1lcygpOworICAgICAgICBpbnZh
bGlkYXRlZEluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKTsKICAgICB9CiB9CiAK
LXZvaWQgUGFnZUdyb3VwOjpyZXNldFVzZXJTdHlsZUNhY2hlSW5BbGxGcmFtZXMoKQordm9pZCBQ
YWdlR3JvdXA6OmludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygp
CiB7CiAgICAgLy8gQ2xlYXIgb3VyIGNhY2hlZCBzaGVldHMgYW5kIGhhdmUgdGhlbSBqdXN0IHJl
cGFyc2UuCiAgICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGFnZXMu
ZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Bh
Z2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpCi0gICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENv
bGxlY3Rpb24oKS0+dXBkYXRlUGFnZUdyb3VwVXNlclNoZWV0cygpOworICAgICAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPmludmFsaWRhdGVJbmplY3Rl
ZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5oCShyZXZpc2lvbiAxMzQ3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBQYWdlR3JvdXAoUGFnZSopOwogCiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmso
TGlua0hhc2ggc3RyaW5nSGFzaCk7Ci0gICAgICAgIHZvaWQgcmVzZXRVc2VyU3R5bGVDYWNoZUlu
QWxsRnJhbWVzKCk7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlU2hlZXRD
YWNoZUluQWxsRnJhbWVzKCk7CiAgIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzQ5NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMS0xNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMTI5NjQ0KTogVXNlciBTdHlsZVNoZWV0IG5v
dCBhcHBseWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyMTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB1c2Vyc2NyaXB0cy91c2VyLXN0eWxlc2hlZXQtaW52YWxpZGF0ZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHVzZXJzY3JpcHRzL3VzZXItc3R5bGVzaGVldC1pbnZhbGlkYXRl
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE2ICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgog
CiAgICAgICAgIGF1ZGlvcGFubmVybm9kZS1iYXNpYy5odG1sIHNob3VsZCBjb3ZlciBkZWZhdWx0
IHZhbHVlIG9mIGF0dHJpYnV0ZS4KSW5kZXg6IExheW91dFRlc3RzL3VzZXJzY3JpcHRzL3VzZXIt
c3R5bGVzaGVldC1pbnZhbGlkYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy91c2Vyc2NyaXB0cy91c2VyLXN0eWxlc2hlZXQtaW52YWxpZGF0ZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy91c2Vyc2NyaXB0cy91c2VyLXN0eWxlc2hlZXQt
aW52YWxpZGF0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGhp
cyB0ZXN0IHJlcXVpcmVzIGxheW91dCB0ZXN0IHJ1bm5lci4KK1BBU1MKSW5kZXg6IExheW91dFRl
c3RzL3VzZXJzY3JpcHRzL3VzZXItc3R5bGVzaGVldC1pbnZhbGlkYXRlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvdXNlcnNjcmlwdHMvdXNlci1zdHlsZXNoZWV0LWludmFsaWRhdGUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3VzZXJzY3JpcHRzL3VzZXItc3R5bGVz
aGVldC1pbnZhbGlkYXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyogeyBjb2xvcjogcmVkOyB9Cis8
L3N0eWxlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuYWRkVXNlclN0eWxlU2hlZXQoImRpdiB7
IHdpZHRoOjA7IH0iLCB0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlz
IHRlc3QgcmVxdWlyZXMgbGF5b3V0IHRlc3QgcnVubmVyLgorPGRpdiBpZD0idGFyZ2V0Ij5GQUlM
PC9kaXY+Cis8c2NyaXB0PgordmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5
bGUiKTsKK3N0eWxlLmlubmVyVGV4dCA9ICIqIHsgY29sb3I6IGJsdWU7IH0iOworZG9jdW1lbnQu
aGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJz
dHlsZSIpWzBdKTsKK2lmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jykub2Zmc2V0
V2lkdGggPT0gMCkKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JykuaW5uZXJI
VE1MID0gJ1BBU1MnOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="189908"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="190033"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174852</attachid>
            <date>2012-11-18 12:17:42 -0800</date>
            <delta_ts>2012-11-18 14:13:08 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>user-stylesheet-invalidate-3.patch</filename>
            <type>text/plain</type>
            <size>19032</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTA2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTExLTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxMjk2NDQp
OiBVc2VyIFN0eWxlU2hlZXQgbm90IGFwcGx5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgIEluamVjdGVkIHN0eWxlc2hlZXRzIGFkZGVkIGFzIFVzZXJT
dHlsZUF1dGhvckxldmVsIGZhaWwgdG8gYXBwbHkuIHIxMjk2NDQgaW1wbGljaXRseSBhc3N1bWVk
IHRoYXQKKyAgICAgICAgc3VjaCB0aGluZ3MgZG9uJ3QgZXhpc3RzIGJ1dCBvbiBDaHJvbWl1bSBh
ZGRVc2VyU3R5bGVTaGVldCgpIGNvbmZ1c2luZ2x5IHVzZXMgdGhlbS4KKyAgICAgICAgCisgICAg
ICAgIFRoZSBwYXRjaCBhZGRzIGluamVjdGVkIGF1dGhvciBzdHlsZXNoZWV0cyB0byBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphY3RpdmVTdHlsZVNoZWV0cygpLgorICAgICAgICBJdCBh
bHNvIGdlbmVyYWxseSBjbGVhbnMgdXAgdGhlIGNvZGUgYXJvdW5kIGluamVjdGVkIGFuZCB1c2Vy
IHN0eWxlc2hlZXRzLgorCisgICAgICAgIFRlc3RzOiB1c2Vyc2NyaXB0cy91c2VyLXNjcmlwdC1h
bmQtc3R5bGVzaGVldC5odG1sCisgICAgICAgICAgICAgICB1c2Vyc2NyaXB0cy91c2VyLXN0eWxl
c2hlZXQtaW52YWxpZGF0ZS5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVl
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENTU09NV3JhcHBlcnMpOgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbXBh
dGliaWxpdHlNb2RlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246On5Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmluamVjdGVkVXNl
clN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkVXNlclNoZWV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFj
dGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb246OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6aW52YWxpZGF0ZWRJbmplY3RlZFN0eWxl
U2hlZXRDYWNoZUluQWxsRnJhbWVzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAg
ICAgICAoUGFnZUdyb3VwKToKKwogMjAxMi0xMS0xOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoKSBzaG91bGQgdGFr
ZSBuYW1lICYgdmFsdWUgYXMgc2VwYXJhdGUgYXJndW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMTM1MDY5KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsMTIgKzMxNCwxMSBA
QCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkCiAgICAgcmVzZXRBdXRo
b3JTdHlsZSgpOwogCiAgICAgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVl
dENvbGxlY3Rpb24gPSBkb2N1bWVudC0+c3R5bGVTaGVldENvbGxlY3Rpb24oKTsKLSAgICAvLyBG
SVhNRTogVGhpcyBzdWNrcyEgVGhlIHVzZXIgc2hlZXQgaXMgcmVwYXJzZWQgZXZlcnkgdGltZSEK
ICAgICBPd25QdHI8UnVsZVNldD4gdGVtcFVzZXJTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwog
ICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0gc3R5bGVTaGVldENvbGxlY3Rp
b24tPnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9t
U2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgKm1fbWVkaXVtLCB0aGlzKTsKLSAgICBh
ZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5wYWdlR3JvdXBVc2VyU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlKTsKLSAgICBhZGRB
dXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0
aW9uLT5kb2N1bWVudFVzZXJTaGVldHMoKSwgKnRlbXBVc2VyU3R5bGUpOworICAgIGNvbGxlY3RS
dWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoc3R5bGVTaGVldENvbGxlY3Rpb24tPmluamVjdGVkVXNl
clN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlKTsKKyAgICBjb2xsZWN0UnVsZXNGcm9tVXNl
clN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0
cygpLCAqdGVtcFVzZXJTdHlsZSk7CiAgICAgaWYgKHRlbXBVc2VyU3R5bGUtPm1fcnVsZUNvdW50
ID4gMCB8fCB0ZW1wVXNlclN0eWxlLT5tX3BhZ2VSdWxlcy5zaXplKCkgPiAwKQogICAgICAgICBt
X3VzZXJTdHlsZSA9IHRlbXBVc2VyU3R5bGUucmVsZWFzZSgpOwogCkBAIC0zMzUsMTggKzMzNCwx
MSBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkCiAgICAgYXBwZW5k
QXV0aG9yU3R5bGVTaGVldHMoMCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0
eWxlU2hlZXRzKCkpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEF1dGhvclJ1bGVzQW5k
Q29sbGVjdFVzZXJSdWxlc0Zyb21TaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+KiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCiB7Ci0gICAg
aWYgKCF1c2VyU2hlZXRzKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB1c2VyU2hlZXRzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQgPSB1c2VyU2hlZXRz
LT5hdChpKS0+Y29udGVudHMoKTsKLSAgICAgICAgaWYgKHNoZWV0LT5pc1VzZXJTdHlsZVNoZWV0
KCkpCi0gICAgICAgICAgICB1c2VyU3R5bGUuYWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21l
ZGl1bSwgdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB1c2VyU2hlZXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCh1
c2VyU2hlZXRzW2ldLT5jb250ZW50cygpLT5pc1VzZXJTdHlsZVNoZWV0KCkpOworICAgICAgICB1
c2VyU3R5bGUuYWRkUnVsZXNGcm9tU2hlZXQodXNlclNoZWV0c1tpXS0+Y29udGVudHMoKSwgKm1f
bWVkaXVtLCB0aGlzKTsKICAgICB9CiB9CiAKQEAgLTI1ODksMjcgKzI1ODEsMTggQEAgc3RhdGlj
IHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcAogICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKIH0KIAotc3RhdGljIHZv
aWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5
bGVSdWxlPiA+JiB3cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHls
ZVNoZWV0Q29sbGVjdGlvbikKK3N0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hN
YXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiB7Ci0gICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cyA9IHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKLSAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldHNbaV0uZ2V0KCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKHdyYXBwZXJNYXAsIHNoZWV0c1tpXS5nZXQoKSk7Cit9CiAKK3N0YXRpYyB2b2lkIGNv
bGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVs
ZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVl
dENvbGxlY3Rpb24pCit7CisgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5
bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOwogICAgIGNvbGxl
Y3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5wYWdlVXNl
clNoZWV0KCkpOwotICAgIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+KiBwYWdlR3JvdXBVc2VyU2hlZXRzID0gc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VH
cm91cFVzZXJTaGVldHMoKTsKLSAgICAgICAgaWYgKHBhZ2VHcm91cFVzZXJTaGVldHMpIHsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcGFnZUdyb3VwVXNlclNoZWV0cy0+
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHBhZ2VHcm91cFVzZXJTaGVldHMtPmF0KGkpLmdldCgpKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gPiogZG9jdW1lbnRVc2VyU2hlZXRzID0gc3R5bGVTaGVldENvbGxlY3Rpb24tPmRvY3Vt
ZW50VXNlclNoZWV0cygpOwotICAgICAgICBpZiAoZG9jdW1lbnRVc2VyU2hlZXRzKSB7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGRvY3VtZW50VXNlclNoZWV0cy0+c2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KHdyYXBwZXJNYXAsIGRvY3VtZW50VXNlclNoZWV0cy0+YXQoaSkuZ2V0KCkpOwotICAgICAgICB9
Ci0gICAgfQorICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRD
b2xsZWN0aW9uLT5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpKTsKKyAgICBjb2xsZWN0Q1NTT01X
cmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+ZG9jdW1lbnRVc2VyU3R5
bGVTaGVldHMoKSk7CiB9CiAKIENTU1N0eWxlUnVsZSogU3R5bGVSZXNvbHZlcjo6ZW5zdXJlRnVs
bENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1bGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDEzNTA2OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw3ICs0MjEsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogc19zdHlsZU5vdFlldEF2
YWlsYWJsZTsKIAotICAgIHZvaWQgYWRkQXV0aG9yUnVsZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJv
bVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qLCBSdWxlU2V0JiB1
c2VyU3R5bGUpOworICAgIHZvaWQgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mLCBSdWxlU2V0JiB1c2VyU3R5bGUpOwog
CiAgICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMzUwNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsMTQgKzc5MiwxMyBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZShDb21wCiB7CiAgICAgaWYgKG1fY29tcGF0aWJpbGl0
eU1vZGVMb2NrZWQgfHwgbW9kZSA9PSBtX2NvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1
cm47Ci0gICAgQVNTRVJUKG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzKCkuaXNFbXB0eSgpKTsKICAgICBib29sIHdhc0luUXVpcmtzTW9kZSA9IGluUXVpcmtz
TW9kZSgpOwogICAgIG1fY29tcGF0aWJpbGl0eU1vZGUgPSBtb2RlOwogICAgIHNlbGVjdG9yUXVl
cnlDYWNoZSgpLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKGluUXVpcmtzTW9kZSgpICE9IHdhc0lu
UXVpcmtzTW9kZSkgewogICAgICAgICAvLyBBbGwgdXNlciBzdHlsZXNoZWV0cyBoYXZlIHRvIHJl
cGFyc2UgdXNpbmcgdGhlIGRpZmZlcmVudCBtb2RlLgogICAgICAgICBtX3N0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5jbGVhclBhZ2VVc2VyU2hlZXQoKTsKLSAgICAgICAgbV9zdHlsZVNoZWV0Q29sbGVj
dGlvbi0+Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKCk7CisgICAgICAgIG1fc3R5bGVTaGVldENv
bGxlY3Rpb24tPmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIH0KIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1MDY5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3BlbmRpbmdTdHlsZXNoZWV0cygw
KQotICAgICwgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQorICAgICwgbV9p
bmplY3RlZFN0eWxlU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQogICAgICwgbV9oYWRBY3RpdmVMb2Fk
aW5nU3R5bGVzaGVldChmYWxzZSkKICAgICAsIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0
c09uU3R5bGVSZWNhbGMoZmFsc2UpCiAgICAgLCBtX3VzZXNTaWJsaW5nUnVsZXMoZmFsc2UpCkBA
IC03NSwxNCArNzUsMTIgQEAgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6fkRvY3VtZW50
UwogewogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpCiAgICAgICAgIG1fcGFnZVVzZXJTaGVldC0+
Y2xlYXJPd25lck5vZGUoKTsKLSAgICBpZiAobV9wYWdlR3JvdXBVc2VyU2hlZXRzKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICgqbV9wYWdlR3JvdXBVc2VyU2hlZXRzKVtpXS0+Y2xlYXJPd25l
ck5vZGUoKTsKLSAgICB9Ci0gICAgaWYgKG1fdXNlclNoZWV0cykgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdXNlclNoZWV0cy0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAo
Km1fdXNlclNoZWV0cylbaV0tPmNsZWFyT3duZXJOb2RlKCk7Ci0gICAgfQorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzLnNpemUoKTsgKytpKQor
ICAgICAgICBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzW2ldLT5jbGVhck93bmVyTm9kZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0c1tpXS0+Y2xl
YXJPd25lck5vZGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91c2VyU3R5bGVT
aGVldHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzW2ldLT5jbGVhck93
bmVyTm9kZSgpOwogfQogCiB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbWJp
bmVDU1NGZWF0dXJlRmxhZ3MoKQpAQCAtMTM3LDIxICsxMzUsMzQgQEAgdm9pZCBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdAogICAgICAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAotY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpwYWdl
R3JvdXBVc2VyU2hlZXRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiYgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW5qZWN0ZWRVc2VyU3R5bGVTaGVl
dHMoKSBjb25zdAogewotICAgIGlmIChtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQpCi0g
ICAgICAgIHJldHVybiBtX3BhZ2VHcm91cFVzZXJTaGVldHMuZ2V0KCk7Ci0gICAgCi0gICAgbV9w
YWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gdHJ1ZTsKLSAgICAKKyAgICB1cGRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSgpOworICAgIHJldHVybiBtX2luamVjdGVkVXNlclN0eWxlU2hl
ZXRzOworfQorCitjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OmluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdAor
eworICAgIHVwZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CisgICAgcmV0dXJuIG1faW5q
ZWN0ZWRBdXRob3JTdHlsZVNoZWV0czsKK30KKwordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0Cit7CisgICAgaWYg
KG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
aW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCA9IHRydWU7CisgICAgbV9pbmplY3RlZFVzZXJT
dHlsZVNoZWV0cy5jbGVhcigpOworICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5jbGVh
cigpOworCiAgICAgUGFnZSogb3duaW5nUGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBp
ZiAoIW93bmluZ1BhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNvbnN0IFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gb3duaW5nUGFnZS0+Z3JvdXAo
KTsKICAgICBjb25zdCBVc2VyU3R5bGVTaGVldE1hcCogc2hlZXRzTWFwID0gcGFnZUdyb3VwLnVz
ZXJTdHlsZVNoZWV0cygpOwogICAgIGlmICghc2hlZXRzTWFwKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgVXNlclN0eWxlU2hlZXRNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHNoZWV0c01hcC0+ZW5kKCk7CiAgICAgZm9yIChVc2VyU3R5bGVTaGVldE1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBzaGVldHNNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpA
QCAtMTYzLDM4ICsxNzQsMjYgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
KiBEbwogICAgICAgICAgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0
ZXJucyhtX2RvY3VtZW50LT51cmwoKSwgc2hlZXQtPndoaXRlbGlzdCgpLCBzaGVldC0+YmxhY2ts
aXN0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgUmVmUHRyPENT
U1N0eWxlU2hlZXQ+IGdyb3VwU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoY29u
c3RfY2FzdDxEb2N1bWVudCo+KG1fZG9jdW1lbnQpLCBzaGVldC0+dXJsKCkpOwotICAgICAgICAg
ICAgaWYgKCFtX3BhZ2VHcm91cFVzZXJTaGVldHMpCi0gICAgICAgICAgICAgICAgbV9wYWdlR3Jv
dXBVc2VyU2hlZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
Pik7Ci0gICAgICAgICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFwcGVuZChncm91cFNoZWV0
KTsKLSAgICAgICAgICAgIGdyb3VwU2hlZXQtPmNvbnRlbnRzKCktPnNldElzVXNlclN0eWxlU2hl
ZXQoc2hlZXQtPmxldmVsKCkgPT0gVXNlclN0eWxlVXNlckxldmVsKTsKKyAgICAgICAgICAgIGJv
b2wgaXNVc2VyU3R5bGVTaGVldCA9IHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZl
bDsKKyAgICAgICAgICAgIGlmIChpc1VzZXJTdHlsZVNoZWV0KQorICAgICAgICAgICAgICAgIG1f
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMuYXBwZW5kKGdyb3VwU2hlZXQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5hcHBlbmQo
Z3JvdXBTaGVldCk7CisgICAgICAgICAgICBncm91cFNoZWV0LT5jb250ZW50cygpLT5zZXRJc1Vz
ZXJTdHlsZVNoZWV0KGlzVXNlclN0eWxlU2hlZXQpOwogICAgICAgICAgICAgZ3JvdXBTaGVldC0+
Y29udGVudHMoKS0+cGFyc2VTdHJpbmcoc2hlZXQtPnNvdXJjZSgpKTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIHJldHVybiBtX3BhZ2VHcm91cFVzZXJTaGVldHMuZ2V0KCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKCkK
K3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUluamVjdGVkU3R5
bGVTaGVldENhY2hlKCkKIHsKLSAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQgPSBm
YWxzZTsKLSAgICBpZiAobV9wYWdlR3JvdXBVc2VyU2hlZXRzICYmIG1fcGFnZUdyb3VwVXNlclNo
ZWV0cy0+c2l6ZSgpKSB7Ci0gICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0cy0+Y2xlYXIoKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHls
ZSk7Ci0gICAgfQotfQotCi12b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0
ZVBhZ2VHcm91cFVzZXJTaGVldHMoKQotewotICAgIGNsZWFyUGFnZUdyb3VwVXNlclNoZWV0cygp
OwotICAgIGlmIChwYWdlR3JvdXBVc2VyU2hlZXRzKCkgJiYgcGFnZUdyb3VwVXNlclNoZWV0cygp
LT5zaXplKCkpCi0gICAgICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHkpOworICAgIG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCA9
IGZhbHNlOworICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxj
U3R5bGUpOwogfQogCiB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFVzZXJT
aGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gdXNlclNoZWV0KQogewotICAgIGlm
ICghbV91c2VyU2hlZXRzKQotICAgICAgICBtX3VzZXJTaGVldHMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KTsKLSAgICBtX3VzZXJTaGVldHMtPmFwcGVuZChD
U1NTdHlsZVNoZWV0OjpjcmVhdGUodXNlclNoZWV0LCBtX2RvY3VtZW50KSk7CisgICAgbV91c2Vy
U3R5bGVTaGVldHMuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSh1c2VyU2hlZXQsIG1fZG9j
dW1lbnQpKTsKICAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKIH0KIApAQCAtNDU1LDYgKzQ1NCw3IEBAIGJvb2wgRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXQKICAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0
aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+IGFj
dGl2ZUNTU1N0eWxlU2hlZXRzOworICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZChpbmpl
Y3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwogICAgIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0
c0Zyb21TZWFtbGVzc1BhcmVudHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIG1fZG9jdW1lbnQpOwog
ICAgIGZpbHRlckVuYWJsZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0
aXZlU3R5bGVTaGVldHMpOwogCkBAIC00OTAsOCArNDkwLDkgQEAgdm9pZCBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjpyZXBvcgogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3BhZ2VVc2VyU2hlZXQpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZUdyb3Vw
VXNlclNoZWV0cyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV91c2VyU2hlZXRzKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdXNl
clN0eWxlU2hlZXRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2FjdGl2ZUF1dGhvclN0eWxlU2hl
ZXRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Qp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
aAkocmV2aXNpb24gMTM1MDY5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTYgKzU1LDE3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsg
fQogCiAgICAgQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCgpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0Owot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogZG9jdW1lbnRVc2VyU2hl
ZXRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2hlZXRzLmdldCgpOyB9CisgICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBkb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiBpbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpIGNvbnN0OworICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRBdXRob3JTdHls
ZVNoZWV0cygpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShO
b2RlKiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVTaGVldENh
bmRpZGF0ZU5vZGUoTm9kZSopOwogCiAgICAgdm9pZCBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKICAg
ICB2b2lkIHVwZGF0ZVBhZ2VVc2VyU2hlZXQoKTsKLSAgICB2b2lkIGNsZWFyUGFnZUdyb3VwVXNl
clNoZWV0cygpOwotICAgIHZvaWQgdXBkYXRlUGFnZUdyb3VwVXNlclNoZWV0cygpOworICAgIHZv
aWQgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CisgICAgdm9pZCB1cGRhdGVJ
bmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRVc2VyU2hlZXQo
UGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHVzZXJTaGVldCk7CiAKQEAgLTEyNSw5ICsx
MjYsMTIgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9wZW5kaW5nU3R5bGVzaGVldHM7CiAKICAgICBS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlVXNlclNoZWV0OwotICAgIG11dGFibGUgT3duUHRy
PFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiA+IG1fcGFnZUdyb3VwVXNlclNoZWV0czsK
LSAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+ID4gbV91c2VyU2hlZXRz
OwotICAgIG11dGFibGUgYm9vbCBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQ7CisKKyAg
ICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2luamVjdGVkVXNlclN0
eWxlU2hlZXRzOworICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+IG1f
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0czsKKyAgICBtdXRhYmxlIGJvb2wgbV9pbmplY3RlZFN0
eWxlU2hlZXRDYWNoZVZhbGlkOworCisgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
IG1fdXNlclN0eWxlU2hlZXRzOwogCiAgICAgYm9vbCBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNo
ZWV0OwogICAgIGJvb2wgbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2Fs
YzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDEzNTA2OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQKICAg
ICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZCh1c2VyU3R5bGVTaGVldC5yZWxlYXNlKCkpOwog
CiAgICAgaWYgKGluamVjdGlvblRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cykKLSAg
ICAgICAgcmVzZXRVc2VyU3R5bGVDYWNoZUluQWxsRnJhbWVzKCk7CisgICAgICAgIGludmFsaWRh
dGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQogCiB2b2lkIFBhZ2VH
cm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBj
b25zdCBLVVJMJiB1cmwpCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBQYWdlR3JvdXA6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbQogICAgIGlmIChzdHlsZXNoZWV0cy0+aXNFbXB0eSgpKQogICAg
ICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlKGl0KTsKIAotICAgIHJlc2V0VXNlclN0eWxl
Q2FjaGVJbkFsbEZyYW1lcygpOworICAgIGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2Fj
aGVJbkFsbEZyYW1lcygpOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdHNG
cm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lk
IFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvCiAgICAgCiAgICAgbV91c2VyU3R5
bGVTaGVldHMtPnJlbW92ZShpdCk7CiAKLSAgICByZXNldFVzZXJTdHlsZUNhY2hlSW5BbGxGcmFt
ZXMoKTsKKyAgICBpbnZhbGlkYXRlZEluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMo
KTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKQEAgLTM5MCwx
NyArMzkwLDE3IEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCiAKICAg
ICBpZiAobV91c2VyU3R5bGVTaGVldHMpIHsKICAgICAgICAgbV91c2VyU3R5bGVTaGVldHMuY2xl
YXIoKTsKLSAgICAgICAgcmVzZXRVc2VyU3R5bGVDYWNoZUluQWxsRnJhbWVzKCk7CisgICAgICAg
IGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogICAgIH0K
IH0KIAotdm9pZCBQYWdlR3JvdXA6OnJlc2V0VXNlclN0eWxlQ2FjaGVJbkFsbEZyYW1lcygpCit2
b2lkIFBhZ2VHcm91cDo6aW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJh
bWVzKCkKIHsKICAgICAvLyBDbGVhciBvdXIgY2FjaGVkIHNoZWV0cyBhbmQgaGF2ZSB0aGVtIGp1
c3QgcmVwYXJzZS4KICAgICBIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9w
YWdlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNo
ZWV0Q29sbGVjdGlvbigpLT51cGRhdGVQYWdlR3JvdXBVc2VyU2hlZXRzKCk7CisgICAgICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+aW52YWxpZGF0ZUlu
amVjdGVkU3R5bGVTaGVldENhY2hlKCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUdyb3VwLmgJKHJldmlzaW9uIDEzNTA2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdy
b3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhZ2VHcm91cChQYWdlKik7CiAKICAgICAgICAgdm9pZCBhZGRWaXNpdGVk
TGluayhMaW5rSGFzaCBzdHJpbmdIYXNoKTsKLSAgICAgICAgdm9pZCByZXNldFVzZXJTdHlsZUNh
Y2hlSW5BbGxGcmFtZXMoKTsKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlZEluamVjdGVkU3R5bGVT
aGVldENhY2hlSW5BbGxGcmFtZXMoKTsKICAgCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
ICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMoKTsK
</data>
<flag name="commit-queue"
          id="190089"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174856</attachid>
            <date>2012-11-18 14:13:08 -0800</date>
            <delta_ts>2012-11-18 14:39:32 -0800</delta_ts>
            <desc>retry</desc>
            <filename>user-stylesheet-invalidate-4.patch</filename>
            <type>text/plain</type>
            <size>21705</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTA2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTExLTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxMjk2NDQp
OiBVc2VyIFN0eWxlU2hlZXQgbm90IGFwcGx5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgIEluamVjdGVkIHN0eWxlc2hlZXRzIGFkZGVkIGFzIFVzZXJT
dHlsZUF1dGhvckxldmVsIGZhaWwgdG8gYXBwbHkuIHIxMjk2NDQgaW1wbGljaXRseSBhc3N1bWVk
IHRoYXQKKyAgICAgICAgc3VjaCB0aGluZ3MgZG9uJ3QgZXhpc3RzIGJ1dCBvbiBDaHJvbWl1bSBh
ZGRVc2VyU3R5bGVTaGVldCgpIGNvbmZ1c2luZ2x5IHVzZXMgdGhlbS4KKyAgICAgICAgCisgICAg
ICAgIFRoZSBwYXRjaCBhZGRzIGluamVjdGVkIGF1dGhvciBzdHlsZXNoZWV0cyB0byBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphY3RpdmVTdHlsZVNoZWV0cygpLgorICAgICAgICBJdCBh
bHNvIGdlbmVyYWxseSBjbGVhbnMgdXAgdGhlIGNvZGUgYXJvdW5kIGluamVjdGVkIGFuZCB1c2Vy
IHN0eWxlc2hlZXRzLgorCisgICAgICAgIFRlc3RzOiB1c2Vyc2NyaXB0cy91c2VyLXNjcmlwdC1h
bmQtc3R5bGVzaGVldC5odG1sCisgICAgICAgICAgICAgICB1c2Vyc2NyaXB0cy91c2VyLXN0eWxl
c2hlZXQtaW52YWxpZGF0ZS5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVl
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENTU09NV3JhcHBlcnMpOgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbXBh
dGliaWxpdHlNb2RlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246On5Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmluamVjdGVkVXNl
clN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkVXNlclNoZWV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFj
dGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb246OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6aW52YWxpZGF0ZWRJbmplY3RlZFN0eWxl
U2hlZXRDYWNoZUluQWxsRnJhbWVzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAg
ICAgICAoUGFnZUdyb3VwKToKKwogMjAxMi0xMS0xOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoKSBzaG91bGQgdGFr
ZSBuYW1lICYgdmFsdWUgYXMgc2VwYXJhdGUgYXJndW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMTM1MDY5KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsMTIgKzMxNCwxMSBA
QCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkCiAgICAgcmVzZXRBdXRo
b3JTdHlsZSgpOwogCiAgICAgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVl
dENvbGxlY3Rpb24gPSBkb2N1bWVudC0+c3R5bGVTaGVldENvbGxlY3Rpb24oKTsKLSAgICAvLyBG
SVhNRTogVGhpcyBzdWNrcyEgVGhlIHVzZXIgc2hlZXQgaXMgcmVwYXJzZWQgZXZlcnkgdGltZSEK
ICAgICBPd25QdHI8UnVsZVNldD4gdGVtcFVzZXJTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwog
ICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0gc3R5bGVTaGVldENvbGxlY3Rp
b24tPnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9t
U2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgKm1fbWVkaXVtLCB0aGlzKTsKLSAgICBh
ZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5wYWdlR3JvdXBVc2VyU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlKTsKLSAgICBhZGRB
dXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0
aW9uLT5kb2N1bWVudFVzZXJTaGVldHMoKSwgKnRlbXBVc2VyU3R5bGUpOworICAgIGNvbGxlY3RS
dWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoc3R5bGVTaGVldENvbGxlY3Rpb24tPmluamVjdGVkVXNl
clN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlKTsKKyAgICBjb2xsZWN0UnVsZXNGcm9tVXNl
clN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0
cygpLCAqdGVtcFVzZXJTdHlsZSk7CiAgICAgaWYgKHRlbXBVc2VyU3R5bGUtPm1fcnVsZUNvdW50
ID4gMCB8fCB0ZW1wVXNlclN0eWxlLT5tX3BhZ2VSdWxlcy5zaXplKCkgPiAwKQogICAgICAgICBt
X3VzZXJTdHlsZSA9IHRlbXBVc2VyU3R5bGUucmVsZWFzZSgpOwogCkBAIC0zMzUsMTggKzMzNCwx
MSBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkCiAgICAgYXBwZW5k
QXV0aG9yU3R5bGVTaGVldHMoMCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0
eWxlU2hlZXRzKCkpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEF1dGhvclJ1bGVzQW5k
Q29sbGVjdFVzZXJSdWxlc0Zyb21TaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+KiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCiB7Ci0gICAg
aWYgKCF1c2VyU2hlZXRzKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB1c2VyU2hlZXRzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQgPSB1c2VyU2hlZXRz
LT5hdChpKS0+Y29udGVudHMoKTsKLSAgICAgICAgaWYgKHNoZWV0LT5pc1VzZXJTdHlsZVNoZWV0
KCkpCi0gICAgICAgICAgICB1c2VyU3R5bGUuYWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21l
ZGl1bSwgdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB1c2VyU2hlZXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVCh1
c2VyU2hlZXRzW2ldLT5jb250ZW50cygpLT5pc1VzZXJTdHlsZVNoZWV0KCkpOworICAgICAgICB1
c2VyU3R5bGUuYWRkUnVsZXNGcm9tU2hlZXQodXNlclNoZWV0c1tpXS0+Y29udGVudHMoKSwgKm1f
bWVkaXVtLCB0aGlzKTsKICAgICB9CiB9CiAKQEAgLTI1ODksMjcgKzI1ODEsMTggQEAgc3RhdGlj
IHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcAogICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKIH0KIAotc3RhdGljIHZv
aWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5
bGVSdWxlPiA+JiB3cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHls
ZVNoZWV0Q29sbGVjdGlvbikKK3N0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hN
YXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiB7Ci0gICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cyA9IHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKLSAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldHNbaV0uZ2V0KCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKHdyYXBwZXJNYXAsIHNoZWV0c1tpXS5nZXQoKSk7Cit9CiAKK3N0YXRpYyB2b2lkIGNv
bGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVs
ZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVl
dENvbGxlY3Rpb24pCit7CisgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5
bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOwogICAgIGNvbGxl
Y3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5wYWdlVXNl
clNoZWV0KCkpOwotICAgIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+KiBwYWdlR3JvdXBVc2VyU2hlZXRzID0gc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VH
cm91cFVzZXJTaGVldHMoKTsKLSAgICAgICAgaWYgKHBhZ2VHcm91cFVzZXJTaGVldHMpIHsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcGFnZUdyb3VwVXNlclNoZWV0cy0+
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHBhZ2VHcm91cFVzZXJTaGVldHMtPmF0KGkpLmdldCgpKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gPiogZG9jdW1lbnRVc2VyU2hlZXRzID0gc3R5bGVTaGVldENvbGxlY3Rpb24tPmRvY3Vt
ZW50VXNlclNoZWV0cygpOwotICAgICAgICBpZiAoZG9jdW1lbnRVc2VyU2hlZXRzKSB7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGRvY3VtZW50VXNlclNoZWV0cy0+c2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KHdyYXBwZXJNYXAsIGRvY3VtZW50VXNlclNoZWV0cy0+YXQoaSkuZ2V0KCkpOwotICAgICAgICB9
Ci0gICAgfQorICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRD
b2xsZWN0aW9uLT5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpKTsKKyAgICBjb2xsZWN0Q1NTT01X
cmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+ZG9jdW1lbnRVc2VyU3R5
bGVTaGVldHMoKSk7CiB9CiAKIENTU1N0eWxlUnVsZSogU3R5bGVSZXNvbHZlcjo6ZW5zdXJlRnVs
bENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1bGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDEzNTA2OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw3ICs0MjEsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogc19zdHlsZU5vdFlldEF2
YWlsYWJsZTsKIAotICAgIHZvaWQgYWRkQXV0aG9yUnVsZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJv
bVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qLCBSdWxlU2V0JiB1
c2VyU3R5bGUpOworICAgIHZvaWQgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mLCBSdWxlU2V0JiB1c2VyU3R5bGUpOwog
CiAgICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMzUwNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsMTQgKzc5MiwxMyBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZShDb21wCiB7CiAgICAgaWYgKG1fY29tcGF0aWJpbGl0
eU1vZGVMb2NrZWQgfHwgbW9kZSA9PSBtX2NvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1
cm47Ci0gICAgQVNTRVJUKG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzKCkuaXNFbXB0eSgpKTsKICAgICBib29sIHdhc0luUXVpcmtzTW9kZSA9IGluUXVpcmtz
TW9kZSgpOwogICAgIG1fY29tcGF0aWJpbGl0eU1vZGUgPSBtb2RlOwogICAgIHNlbGVjdG9yUXVl
cnlDYWNoZSgpLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKGluUXVpcmtzTW9kZSgpICE9IHdhc0lu
UXVpcmtzTW9kZSkgewogICAgICAgICAvLyBBbGwgdXNlciBzdHlsZXNoZWV0cyBoYXZlIHRvIHJl
cGFyc2UgdXNpbmcgdGhlIGRpZmZlcmVudCBtb2RlLgogICAgICAgICBtX3N0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5jbGVhclBhZ2VVc2VyU2hlZXQoKTsKLSAgICAgICAgbV9zdHlsZVNoZWV0Q29sbGVj
dGlvbi0+Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKCk7CisgICAgICAgIG1fc3R5bGVTaGVldENv
bGxlY3Rpb24tPmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIH0KIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1MDY5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3BlbmRpbmdTdHlsZXNoZWV0cygw
KQotICAgICwgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQorICAgICwgbV9p
bmplY3RlZFN0eWxlU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQogICAgICwgbV9oYWRBY3RpdmVMb2Fk
aW5nU3R5bGVzaGVldChmYWxzZSkKICAgICAsIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0
c09uU3R5bGVSZWNhbGMoZmFsc2UpCiAgICAgLCBtX3VzZXNTaWJsaW5nUnVsZXMoZmFsc2UpCkBA
IC03NSwxNCArNzUsMTIgQEAgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6fkRvY3VtZW50
UwogewogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpCiAgICAgICAgIG1fcGFnZVVzZXJTaGVldC0+
Y2xlYXJPd25lck5vZGUoKTsKLSAgICBpZiAobV9wYWdlR3JvdXBVc2VyU2hlZXRzKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICgqbV9wYWdlR3JvdXBVc2VyU2hlZXRzKVtpXS0+Y2xlYXJPd25l
ck5vZGUoKTsKLSAgICB9Ci0gICAgaWYgKG1fdXNlclNoZWV0cykgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdXNlclNoZWV0cy0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAo
Km1fdXNlclNoZWV0cylbaV0tPmNsZWFyT3duZXJOb2RlKCk7Ci0gICAgfQorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzLnNpemUoKTsgKytpKQor
ICAgICAgICBtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzW2ldLT5jbGVhck93bmVyTm9kZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0c1tpXS0+Y2xl
YXJPd25lck5vZGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91c2VyU3R5bGVT
aGVldHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzW2ldLT5jbGVhck93
bmVyTm9kZSgpOwogfQogCiB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbWJp
bmVDU1NGZWF0dXJlRmxhZ3MoKQpAQCAtMTM3LDIxICsxMzUsMzQgQEAgdm9pZCBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdAogICAgICAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAotY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpwYWdl
R3JvdXBVc2VyU2hlZXRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiYgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW5qZWN0ZWRVc2VyU3R5bGVTaGVl
dHMoKSBjb25zdAogewotICAgIGlmIChtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQpCi0g
ICAgICAgIHJldHVybiBtX3BhZ2VHcm91cFVzZXJTaGVldHMuZ2V0KCk7Ci0gICAgCi0gICAgbV9w
YWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gdHJ1ZTsKLSAgICAKKyAgICB1cGRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSgpOworICAgIHJldHVybiBtX2luamVjdGVkVXNlclN0eWxlU2hl
ZXRzOworfQorCitjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OmluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdAor
eworICAgIHVwZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CisgICAgcmV0dXJuIG1faW5q
ZWN0ZWRBdXRob3JTdHlsZVNoZWV0czsKK30KKwordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0Cit7CisgICAgaWYg
KG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
aW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCA9IHRydWU7CisgICAgbV9pbmplY3RlZFVzZXJT
dHlsZVNoZWV0cy5jbGVhcigpOworICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5jbGVh
cigpOworCiAgICAgUGFnZSogb3duaW5nUGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBp
ZiAoIW93bmluZ1BhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIGNvbnN0IFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gb3duaW5nUGFnZS0+Z3JvdXAo
KTsKICAgICBjb25zdCBVc2VyU3R5bGVTaGVldE1hcCogc2hlZXRzTWFwID0gcGFnZUdyb3VwLnVz
ZXJTdHlsZVNoZWV0cygpOwogICAgIGlmICghc2hlZXRzTWFwKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgVXNlclN0eWxlU2hlZXRNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHNoZWV0c01hcC0+ZW5kKCk7CiAgICAgZm9yIChVc2VyU3R5bGVTaGVldE1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBzaGVldHNNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpA
QCAtMTYzLDM4ICsxNzQsMjYgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
KiBEbwogICAgICAgICAgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0
ZXJucyhtX2RvY3VtZW50LT51cmwoKSwgc2hlZXQtPndoaXRlbGlzdCgpLCBzaGVldC0+YmxhY2ts
aXN0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgUmVmUHRyPENT
U1N0eWxlU2hlZXQ+IGdyb3VwU2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoY29u
c3RfY2FzdDxEb2N1bWVudCo+KG1fZG9jdW1lbnQpLCBzaGVldC0+dXJsKCkpOwotICAgICAgICAg
ICAgaWYgKCFtX3BhZ2VHcm91cFVzZXJTaGVldHMpCi0gICAgICAgICAgICAgICAgbV9wYWdlR3Jv
dXBVc2VyU2hlZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
Pik7Ci0gICAgICAgICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldHMtPmFwcGVuZChncm91cFNoZWV0
KTsKLSAgICAgICAgICAgIGdyb3VwU2hlZXQtPmNvbnRlbnRzKCktPnNldElzVXNlclN0eWxlU2hl
ZXQoc2hlZXQtPmxldmVsKCkgPT0gVXNlclN0eWxlVXNlckxldmVsKTsKKyAgICAgICAgICAgIGJv
b2wgaXNVc2VyU3R5bGVTaGVldCA9IHNoZWV0LT5sZXZlbCgpID09IFVzZXJTdHlsZVVzZXJMZXZl
bDsKKyAgICAgICAgICAgIGlmIChpc1VzZXJTdHlsZVNoZWV0KQorICAgICAgICAgICAgICAgIG1f
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMuYXBwZW5kKGdyb3VwU2hlZXQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5hcHBlbmQo
Z3JvdXBTaGVldCk7CisgICAgICAgICAgICBncm91cFNoZWV0LT5jb250ZW50cygpLT5zZXRJc1Vz
ZXJTdHlsZVNoZWV0KGlzVXNlclN0eWxlU2hlZXQpOwogICAgICAgICAgICAgZ3JvdXBTaGVldC0+
Y29udGVudHMoKS0+cGFyc2VTdHJpbmcoc2hlZXQtPnNvdXJjZSgpKTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIHJldHVybiBtX3BhZ2VHcm91cFVzZXJTaGVldHMuZ2V0KCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y2xlYXJQYWdlR3JvdXBVc2VyU2hlZXRzKCkK
K3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUluamVjdGVkU3R5
bGVTaGVldENhY2hlKCkKIHsKLSAgICBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQgPSBm
YWxzZTsKLSAgICBpZiAobV9wYWdlR3JvdXBVc2VyU2hlZXRzICYmIG1fcGFnZUdyb3VwVXNlclNo
ZWV0cy0+c2l6ZSgpKSB7Ci0gICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0cy0+Y2xlYXIoKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHls
ZSk7Ci0gICAgfQotfQotCi12b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0
ZVBhZ2VHcm91cFVzZXJTaGVldHMoKQotewotICAgIGNsZWFyUGFnZUdyb3VwVXNlclNoZWV0cygp
OwotICAgIGlmIChwYWdlR3JvdXBVc2VyU2hlZXRzKCkgJiYgcGFnZUdyb3VwVXNlclNoZWV0cygp
LT5zaXplKCkpCi0gICAgICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHkpOworICAgIG1faW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVWYWxpZCA9
IGZhbHNlOworICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxj
U3R5bGUpOwogfQogCiB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFVzZXJT
aGVldChQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gdXNlclNoZWV0KQogewotICAgIGlm
ICghbV91c2VyU2hlZXRzKQotICAgICAgICBtX3VzZXJTaGVldHMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KTsKLSAgICBtX3VzZXJTaGVldHMtPmFwcGVuZChD
U1NTdHlsZVNoZWV0OjpjcmVhdGUodXNlclNoZWV0LCBtX2RvY3VtZW50KSk7CisgICAgbV91c2Vy
U3R5bGVTaGVldHMuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSh1c2VyU2hlZXQsIG1fZG9j
dW1lbnQpKTsKICAgICBtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHls
ZUltbWVkaWF0ZWx5KTsKIH0KIApAQCAtNDU1LDYgKzQ1NCw3IEBAIGJvb2wgRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXQKICAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0
aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+IGFj
dGl2ZUNTU1N0eWxlU2hlZXRzOworICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZChpbmpl
Y3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwogICAgIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0
c0Zyb21TZWFtbGVzc1BhcmVudHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIG1fZG9jdW1lbnQpOwog
ICAgIGZpbHRlckVuYWJsZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0
aXZlU3R5bGVTaGVldHMpOwogCkBAIC00OTAsOCArNDkwLDkgQEAgdm9pZCBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjpyZXBvcgogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3BhZ2VVc2VyU2hlZXQpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZUdyb3Vw
VXNlclNoZWV0cyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV91c2VyU2hlZXRzKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX2luamVjdGVkVXNlclN0eWxlU2hlZXRzKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdXNl
clN0eWxlU2hlZXRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2FjdGl2ZUF1dGhvclN0eWxlU2hl
ZXRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Qp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
aAkocmV2aXNpb24gMTM1MDY5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTYgKzU1LDE3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsg
fQogCiAgICAgQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCgpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0Owot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogZG9jdW1lbnRVc2VyU2hl
ZXRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2hlZXRzLmdldCgpOyB9CisgICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBkb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiBpbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpIGNvbnN0OworICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRBdXRob3JTdHls
ZVNoZWV0cygpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShO
b2RlKiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVTaGVldENh
bmRpZGF0ZU5vZGUoTm9kZSopOwogCiAgICAgdm9pZCBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKICAg
ICB2b2lkIHVwZGF0ZVBhZ2VVc2VyU2hlZXQoKTsKLSAgICB2b2lkIGNsZWFyUGFnZUdyb3VwVXNl
clNoZWV0cygpOwotICAgIHZvaWQgdXBkYXRlUGFnZUdyb3VwVXNlclNoZWV0cygpOworICAgIHZv
aWQgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CisgICAgdm9pZCB1cGRhdGVJ
bmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRVc2VyU2hlZXQo
UGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHVzZXJTaGVldCk7CiAKQEAgLTEyNSw5ICsx
MjYsMTIgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9wZW5kaW5nU3R5bGVzaGVldHM7CiAKICAgICBS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlVXNlclNoZWV0OwotICAgIG11dGFibGUgT3duUHRy
PFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiA+IG1fcGFnZUdyb3VwVXNlclNoZWV0czsK
LSAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+ID4gbV91c2VyU2hlZXRz
OwotICAgIG11dGFibGUgYm9vbCBtX3BhZ2VHcm91cFVzZXJTaGVldENhY2hlVmFsaWQ7CisKKyAg
ICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2luamVjdGVkVXNlclN0
eWxlU2hlZXRzOworICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+IG1f
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0czsKKyAgICBtdXRhYmxlIGJvb2wgbV9pbmplY3RlZFN0
eWxlU2hlZXRDYWNoZVZhbGlkOworCisgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
IG1fdXNlclN0eWxlU2hlZXRzOwogCiAgICAgYm9vbCBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNo
ZWV0OwogICAgIGJvb2wgbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2Fs
YzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDEzNTA2OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQKICAg
ICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZCh1c2VyU3R5bGVTaGVldC5yZWxlYXNlKCkpOwog
CiAgICAgaWYgKGluamVjdGlvblRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cykKLSAg
ICAgICAgcmVzZXRVc2VyU3R5bGVDYWNoZUluQWxsRnJhbWVzKCk7CisgICAgICAgIGludmFsaWRh
dGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQogCiB2b2lkIFBhZ2VH
cm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBj
b25zdCBLVVJMJiB1cmwpCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBQYWdlR3JvdXA6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbQogICAgIGlmIChzdHlsZXNoZWV0cy0+aXNFbXB0eSgpKQogICAg
ICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlKGl0KTsKIAotICAgIHJlc2V0VXNlclN0eWxl
Q2FjaGVJbkFsbEZyYW1lcygpOworICAgIGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2Fj
aGVJbkFsbEZyYW1lcygpOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdHNG
cm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lk
IFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvCiAgICAgCiAgICAgbV91c2VyU3R5
bGVTaGVldHMtPnJlbW92ZShpdCk7CiAKLSAgICByZXNldFVzZXJTdHlsZUNhY2hlSW5BbGxGcmFt
ZXMoKTsKKyAgICBpbnZhbGlkYXRlZEluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMo
KTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKQEAgLTM5MCwx
NyArMzkwLDE3IEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCiAKICAg
ICBpZiAobV91c2VyU3R5bGVTaGVldHMpIHsKICAgICAgICAgbV91c2VyU3R5bGVTaGVldHMuY2xl
YXIoKTsKLSAgICAgICAgcmVzZXRVc2VyU3R5bGVDYWNoZUluQWxsRnJhbWVzKCk7CisgICAgICAg
IGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogICAgIH0K
IH0KIAotdm9pZCBQYWdlR3JvdXA6OnJlc2V0VXNlclN0eWxlQ2FjaGVJbkFsbEZyYW1lcygpCit2
b2lkIFBhZ2VHcm91cDo6aW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJh
bWVzKCkKIHsKICAgICAvLyBDbGVhciBvdXIgY2FjaGVkIHNoZWV0cyBhbmQgaGF2ZSB0aGVtIGp1
c3QgcmVwYXJzZS4KICAgICBIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9w
YWdlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNo
ZWV0Q29sbGVjdGlvbigpLT51cGRhdGVQYWdlR3JvdXBVc2VyU2hlZXRzKCk7CisgICAgICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+aW52YWxpZGF0ZUlu
amVjdGVkU3R5bGVTaGVldENhY2hlKCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUdyb3VwLmgJKHJldmlzaW9uIDEzNTA2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdy
b3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhZ2VHcm91cChQYWdlKik7CiAKICAgICAgICAgdm9pZCBhZGRWaXNpdGVk
TGluayhMaW5rSGFzaCBzdHJpbmdIYXNoKTsKLSAgICAgICAgdm9pZCByZXNldFVzZXJTdHlsZUNh
Y2hlSW5BbGxGcmFtZXMoKTsKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlZEluamVjdGVkU3R5bGVT
aGVldENhY2hlSW5BbGxGcmFtZXMoKTsKICAgCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
ICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMoKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzNTA3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxMjk2NDQpOiBVc2VyIFN0eWxlU2hl
ZXQgbm90IGFwcGx5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDIxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisg
ICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXNjcmlwdC10YWctMS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgIAorICAgICAgICAgICAgVXBkYXRlIHRoZSB0ZXN0IHJlc3VsdC4gVGhl
IHN0eWxlIGludmFsaWRhdGlvbiBsb2cgaXMgc2xpZ2h0bHkgZGlmZmVyZW50LgorCisgICAgICAg
ICogdXNlcnNjcmlwdHMvdXNlci1zdHlsZXNoZWV0LWludmFsaWRhdGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB1c2Vyc2NyaXB0cy91c2VyLXN0eWxlc2hlZXQtaW52YWxpZGF0ZS5o
dG1sOiBBZGRlZC4KKwogMjAxMi0xMS0xNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzM2MzMpOiBBU1NFUlRJT04gRkFJTEVEOiBtX3dy
YXBwZXIgfHwgIW1fanNGdW5jdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lL3RpbWVsaW5lLXNjcmlwdC10YWctMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXNjcmlwdC10YWctMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDEzNTA2OSkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGlu
ZS90aW1lbGluZS1zY3JpcHQtdGFnLTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
LDggKzMsMTAgQEAgVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBpbnN0cnVtZW50YXRpb24gbwogCiAK
IFBhcnNlSFRNTAorLS0tLT4gU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24KIC0tLS0+IEludmFs
aWRhdGVMYXlvdXQKIFBhcnNlSFRNTAorLS0tLT4gU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24K
IC0tLS0+IEV2YWx1YXRlU2NyaXB0CiAtLS0tLS0tLT4gVGltZVN0YW1wIDogU0NSSVBUIFRBRwog
LS0tLT4gSW52YWxpZGF0ZUxheW91dApJbmRleDogTGF5b3V0VGVzdHMvdXNlcnNjcmlwdHMvdXNl
ci1zdHlsZXNoZWV0LWludmFsaWRhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3VzZXJzY3JpcHRzL3VzZXItc3R5bGVzaGVldC1pbnZhbGlkYXRlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3VzZXJzY3JpcHRzL3VzZXItc3R5bGVzaGVl
dC1pbnZhbGlkYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitU
aGlzIHRlc3QgcmVxdWlyZXMgbGF5b3V0IHRlc3QgcnVubmVyLgorUEFTUwpJbmRleDogTGF5b3V0
VGVzdHMvdXNlcnNjcmlwdHMvdXNlci1zdHlsZXNoZWV0LWludmFsaWRhdGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy91c2Vyc2NyaXB0cy91c2VyLXN0eWxlc2hlZXQtaW52YWxpZGF0
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdXNlcnNjcmlwdHMvdXNlci1zdHls
ZXNoZWV0LWludmFsaWRhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorKiB7IGNvbG9yOiByZWQ7IH0K
Kzwvc3R5bGU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5hZGRVc2VyU3R5bGVTaGVldCgiZGl2
IHsgd2lkdGg6MDsgfSIsIHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
aXMgdGVzdCByZXF1aXJlcyBsYXlvdXQgdGVzdCBydW5uZXIuCis8ZGl2IGlkPSJ0YXJnZXQiPkZB
SUw8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
dHlsZSIpOworc3R5bGUuaW5uZXJUZXh0ID0gIiogeyBjb2xvcjogYmx1ZTsgfSI7Citkb2N1bWVu
dC5oZWFkLmluc2VydEJlZm9yZShzdHlsZSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InN0eWxlIilbMF0pOworaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKS5vZmZz
ZXRXaWR0aCA9PSAwKQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKS5pbm5l
ckhUTUwgPSAnUEFTUyc7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>