<?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>45770</bug_id>
          
          <creation_ts>2010-09-14 12:28:33 -0700</creation_ts>
          <short_desc>When a live frame is moved between pages, some plug-in DOM methods cease to function</short_desc>
          <delta_ts>2011-01-07 16:45:22 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Jenn Braithwaite">jennb</assigned_to>
          <cc>abarth</cc>
    
    <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jennb</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279083</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-14 12:28:33 -0700</bug_when>
    <thetext>There is a per-Page PluginData object which Plugin and MimeType reference. If a document moves to another pages, these references should all be updated.

On my test cases, this results in calls like navigator.plugins[0].item(0).enabledPlugin return null, but if we missed a null check somewhere, it can also crash once the other page is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325740</commentid>
    <comment_count>1</comment_count>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2010-12-22 15:37:21 -0800</bug_when>
    <thetext>Created test case that triggers this failure.  Still investigating a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326332</commentid>
    <comment_count>2</comment_count>
      <attachid>77377</attachid>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2010-12-23 15:38:48 -0800</bug_when>
    <thetext>Created attachment 77377
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326343</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-23 15:58:45 -0800</bug_when>
    <thetext>Attachment 77377 did not build on chromium:
Build output: http://queues.webkit.org/results/7205142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326350</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-23 16:11:30 -0800</bug_when>
    <thetext>Attachment 77377 did not build on gtk:
Build output: http://queues.webkit.org/results/7313148</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327087</commentid>
    <comment_count>5</comment_count>
      <attachid>77377</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-27 11:17:29 -0800</bug_when>
    <thetext>Comment on attachment 77377
patch

r- This patch breaks several builds (and may have style issues as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329104</commentid>
    <comment_count>6</comment_count>
      <attachid>77913</attachid>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2011-01-04 11:35:47 -0800</bug_when>
    <thetext>Created attachment 77913
updated patch

Fixed include ordering and restored initPlugins() to avoid breaking platform builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330284</commentid>
    <comment_count>7</comment_count>
      <attachid>77913</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-01-06 12:06:55 -0800</bug_when>
    <thetext>Comment on attachment 77913
updated patch

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

Few comments (r- to add description to the test)

&gt; LayoutTests/fast/frames/iframe-reparenting-plugins.html:55
&gt; +&lt;body onload=&quot;test()&quot;&gt;

It would be nice to have a short text description of the test here - what it does, what constitutes the failure and success.
Also, why we always expect to find a plugin there.

&gt; WebCore/page/Frame.h:72
&gt; +    class FrameObserver {

If this is only used to get a callback on frame destruction, it could be more specific and be called FrameDestructionObserver, with frameDestroyed() as a name of its callback function. So that it doesn&apos;t get an assortment of various callbacks in the future.

&gt; WebCore/plugins/DOMMimeType.cpp:71
&gt; +    if (!m_frame || !m_frame-&gt;loader()-&gt;subframeLoader()-&gt;allowPlugins(NotAboutToInstantiatePlugin))

How important is the change in behavior here? Lets say I have a page on apple.com embedding an iframe from YouTube. Could it be possible that Flash is disabled for apple.com but not YouTube, and while old behavior would disable Flash in that combination (because it could use settings for apple.com), the new one would not.

&gt; WebCore/plugins/PluginData.cpp:38
&gt; +    m_page = 0; // Page only needed by initPlugins if USE(PLATFORM_STRATEGIES).

Is it possible to only have m_page if USE(PLATFORM_STRATEGIES)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330354</commentid>
    <comment_count>8</comment_count>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2011-01-06 13:07:26 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 77913 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77913&amp;action=review
&gt; 
&gt; Few comments (r- to add description to the test)
&gt; 
&gt; &gt; LayoutTests/fast/frames/iframe-reparenting-plugins.html:55
&gt; &gt; +&lt;body onload=&quot;test()&quot;&gt;
&gt; 
&gt; It would be nice to have a short text description of the test here - what it does, what constitutes the failure and success.
&gt; Also, why we always expect to find a plugin there.

Will change.

&gt; 
&gt; &gt; WebCore/page/Frame.h:72
&gt; &gt; +    class FrameObserver {
&gt; 
&gt; If this is only used to get a callback on frame destruction, it could be more specific and be called FrameDestructionObserver, with frameDestroyed() as a name of its callback function. So that it doesn&apos;t get an assortment of various callbacks in the future.

Will change.

&gt; 
&gt; &gt; WebCore/plugins/DOMMimeType.cpp:71
&gt; &gt; +    if (!m_frame || !m_frame-&gt;loader()-&gt;subframeLoader()-&gt;allowPlugins(NotAboutToInstantiatePlugin))
&gt; 
&gt; How important is the change in behavior here? Lets say I have a page on apple.com embedding an iframe from YouTube. Could it be possible that Flash is disabled for apple.com but not YouTube, and while old behavior would disable Flash in that combination (because it could use settings for apple.com), the new one would not.

I don&apos;t know the answer to this one.  However, I can make it use m_frame-&gt;page()-&gt;mainFrame() instead to keep the old behavior.

&gt; 
&gt; &gt; WebCore/plugins/PluginData.cpp:38
&gt; &gt; +    m_page = 0; // Page only needed by initPlugins if USE(PLATFORM_STRATEGIES).
&gt; 
&gt; Is it possible to only have m_page if USE(PLATFORM_STRATEGIES)?

I can do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330495</commentid>
    <comment_count>9</comment_count>
      <attachid>78179</attachid>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2011-01-06 15:30:36 -0800</bug_when>
    <thetext>Created attachment 78179
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330532</commentid>
    <comment_count>10</comment_count>
      <attachid>78179</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-01-06 16:24:15 -0800</bug_when>
    <thetext>Comment on attachment 78179
updated patch

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

Great! A couple of nits:

&gt; LayoutTests/fast/frames/resources/iframe-reparenting-plugins-iframe-content.html:11
&gt; +      return &quot;FAIL: Failed to find netscape test plugin\n&quot;;

could remove &apos;netscape&apos;.

&gt; WebCore/page/Frame.h:93
&gt; +        void addObserver(FrameDestructionObserver*);

addObserver -&gt; addDestructionObserver ? 
same for removeObserver and m_observers below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330540</commentid>
    <comment_count>11</comment_count>
      <attachid>78187</attachid>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2011-01-06 16:32:13 -0800</bug_when>
    <thetext>Created attachment 78187
updated patch

netscape text removed.
observer -&gt; destructionObserver in method name and member var.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330542</commentid>
    <comment_count>12</comment_count>
      <attachid>78187</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-01-06 16:33:11 -0800</bug_when>
    <thetext>Comment on attachment 78187
updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330583</commentid>
    <comment_count>13</comment_count>
      <attachid>78187</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-06 17:59:05 -0800</bug_when>
    <thetext>Comment on attachment 78187
updated patch

Clearing flags on attachment: 78187

Committed r75217: &lt;http://trac.webkit.org/changeset/75217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330584</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-06 17:59:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330619</commentid>
    <comment_count>15</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-06 19:53:14 -0800</bug_when>
    <thetext>This new test seems to be breaking on the Windows canary:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;master=ChromiumWebkit&amp;tests=fast%2Fframes%2Fiframe-reparenting-plugins.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330704</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-07 02:28:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75217 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331094</commentid>
    <comment_count>17</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-01-07 16:45:22 -0800</bug_when>
    <thetext>The failure on Chrome Windows is tracked by bug 52062</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77377</attachid>
            <date>2010-12-23 15:38:48 -0800</date>
            <delta_ts>2011-01-04 11:35:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch-45770.txt</filename>
            <type>text/plain</type>
            <size>18696</size>
            <attacher name="Jenn Braithwaite">jennb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZTRhNmVlLi5mMTVlY2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTIt
MjMgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgZnJhbWUgaXMg
bW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBwbHVnLWluIERPTSBtZXRob2RzIGNlYXNlIHRvIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTc3MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVn
aW5zLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTEyLTIzICBBbGJlcnQgSi4gV29uZyAg
PGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hyb21pdW0gbGF5
b3V0IHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDg4OWY5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdp
bnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0xvYWRlZCB3aW5kb3cgMi4KK1BBU1M6
IHBsdWdpbiBPSy4KK1BBU1M6IG1pbWV0eXBlIE9LLgorCitBZG9wdGVkIGlmcmFtZSB0byBmaXJz
dCBwYWdlLgorV2luZG93IDIgdW5sb2FkZWQuCitQQVNTOiBwbHVnaW4gT0suCitQQVNTOiBtaW1l
dHlwZSBPSy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUt
cmVwYXJlbnRpbmctcGx1Z2lucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1l
LXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jMmVmZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
aWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxzY3JpcHQ+
Cit2YXIgd2luZG93MiwgaWZyYW1lOworCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4i
OworfQorCitmdW5jdGlvbiBmaW5pc2goKQoreworICAgIHZhciBtZXNzYWdlID0gaWZyYW1lLmNv
bnRlbnRXaW5kb3cuY2hlY2tQbHVnaW5zKCk7CisgICAgbG9nKG1lc3NhZ2UpOworCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cyVW5sb2FkZWQoKQoreworICAg
IGxvZygiV2luZG93IDIgdW5sb2FkZWQuIik7CisgICAgc2V0VGltZW91dChmaW5pc2gsIDApOyAv
LyBMZXQgd2luZG93IGNsb3NlIGZpbmlzaCBjb21wbGV0ZWx5LgorfQorCitmdW5jdGlvbiB3aW5k
b3cyTG9hZGVkKCkKK3sKKyAgICBsb2coIkxvYWRlZCB3aW5kb3cgMi4iKTsKKyAgICBpZnJhbWUg
PSB3aW5kb3cyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKworICAgIHZhciBt
ZXNzYWdlID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY2hlY2tQbHVnaW5zKCk7CisgICAgbG9nKG1l
c3NhZ2UpOworCisgICAgd2luZG93LmRvY3VtZW50LmFkb3B0Tm9kZShpZnJhbWUpOworICAgIHdp
bmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgbG9nKCJBZG9wdGVk
IGlmcmFtZSB0byBmaXJzdCBwYWdlLiIpOworCisgICAgd2luZG93Mi5vbnVubG9hZCA9IHdpbmRv
dzJVbmxvYWRlZDsKKyAgICB3aW5kb3cyLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7CisgICAgfQorCisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJyZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3LXBhZ2UuaHRtbCIpOworICAgIHdpbmRv
dzIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHdpbmRvdzJMb2FkZWQsIGZhbHNlKTsKK30KKwor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cHJlIGlkPWxvZz48L3ByZT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5z
LWlmcmFtZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTQ3NTRkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sCkBAIC0w
LDAgKzEsMjIgQEAKKzxzY3JpcHQ+Cit2YXIgcGx1Z2luID0gbmF2aWdhdG9yLnBsdWdpbnNbMF07
Cit2YXIgbWltZXR5cGUgPSBuYXZpZ2F0b3IubWltZVR5cGVzWzBdOworCisvLyBDYWxsZWQgYnkg
dGVzdCBwYWdlIGFmdGVyIGFkb3B0aW5nIHRoaXMgaWZyYW1lIGFuZCBjbG9zaW5nIHRoZQorLy8g
cGFnZSB0aGF0IG9yaWdpbmFsbHkgaGVsZCB0aGlzIGlmcmFtZS4KK2NoZWNrUGx1Z2lucyA9IGZ1
bmN0aW9uKCkKK3sKKyAgdmFyIG1lc3NhZ2UgPSAiIjsKKyAgaWYgKHBsdWdpbi5pdGVtKDApLmVu
YWJsZWRQbHVnaW4pCisgICAgICBtZXNzYWdlICs9ICJQQVNTOiBwbHVnaW4gT0suXG4iOworICBl
bHNlCisgICAgICBtZXNzYWdlICs9ICJGQUlMOiBwbHVnaW4gcmVmZXJlbmNlcyBQbHVnaW5EYXRh
IHdpdGggbm8gcGFnZS5cbiI7CisKKyAgaWYgKG1pbWV0eXBlLmVuYWJsZWRQbHVnaW4pCisgICAg
ICBtZXNzYWdlICs9ICJQQVNTOiBtaW1ldHlwZSBPSy5cbiI7CisgIGVsc2UKKyAgICAgIG1lc3Nh
Z2UgKz0gIkZBSUw6IG1pbWV0eXBlIHJlZmVyZW5jZXMgUGx1Z2luRGF0YSB3aXRoIG5vIHBhZ2Uu
XG4iOworCisgIHJldHVybiBtZXNzYWdlOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMt
bmV3LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUt
cmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU1YTMwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3LXBhZ2UuaHRt
bApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHk+CitBIE5ldyBQYWdlPGJyPgorPGlmcmFt
ZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWlmcmFtZS1jb250
ZW50Lmh0bWwiPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVhNGIyZTcuLmZiMmUwMjIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTQgQEAKKzIwMTAtMTItMjMgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiBhIGxpdmUgZnJhbWUgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBwbHVnLWluIERP
TSBtZXRob2RzIGNlYXNlIHRvIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTc3MAorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2lm
cmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6On5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlbW92ZU9ic2Vy
dmVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU9i
c2VydmVyOjp+RnJhbWVPYnNlcnZlcik6CisgICAgICAgIEFkZGVkIG9ic2VydmVyIHRvIGJlIG5v
dGlmaWVkIHdoZW4gZnJhbWUgaXMgZGVzdHJveWVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpyZWZyZXNoUGx1Z2lucyk6CisgICAgICAgIFBsdWdpbkRhdGEgbm8gbG9uZ2VyIHN0b3JlcyBw
YWdlIHBvaW50ZXIuCisgICAgICAgICogcGx1Z2lucy9ET01NaW1lVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01NaW1lVHlwZTo6RE9NTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NTWltZVR5cGU6On5ET01NaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlw
ZTo6ZW5hYmxlZFBsdWdpbik6CisgICAgICAgICogcGx1Z2lucy9ET01NaW1lVHlwZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01NaW1lVHlwZTo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAgICAgU3RvcmUgZnJhbWUgaW5zdGVh
ZCBvZiBwYWdlIHBvaW50ZXIuCisgICAgICAgICogcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKToKKyAgICAgICAgUHJvdmlkZSBm
cmFtZSB0byBjcmVhdGUgRE9NTWltZVR5cGUuCisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luOjpET01QbHVnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6RE9NUGx1Z2luOjp+RE9NUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBs
dWdpbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46Om5hbWVkSXRlbSk6Cisg
ICAgICAgICogcGx1Z2lucy9ET01QbHVnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6ZGlzY29ubmVjdEZyYW1l
KToKKyAgICAgICAgU3RvcmUgZnJhbWUgaW5zdGVhZCBvZiBwYWdlIHBvaW50ZXIuCisgICAgICAg
ICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVn
aW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6bmFtZWRJ
dGVtKToKKyAgICAgICAgUHJvdmlkZSBmcmFtZSB0byBjcmVhdGUgRE9NUGx1Z2luLgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
OjpQbHVnaW5EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmluaXRQbHVnaW5z
KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGEuaDoKKyAgICAgICAgTm8gbG9uZ2VyIHN0
b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHBhZ2UuCisKIDIwMTAtMTItMjMgIEphbiBFcmlrIEhhbnNz
ZW4gIDxqaGFuc3NlbkBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCA4NTUyM2M2Li4yMDMzY2ZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTIzMiw2ICsyMzIs
MTAgQEAgRnJhbWU6On5GcmFtZSgpCiAgICAgZm9yIChIYXNoU2V0PERPTVdpbmRvdyo+OjppdGVy
YXRvciBpdCA9IG1fbGl2ZUZvcm1lcldpbmRvd3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICAoKml0KS0+ZGlzY29ubmVjdEZyYW1lKCk7CiAKKyAgICBIYXNoU2V0PEZyYW1lT2Jz
ZXJ2ZXIqPjo6aXRlcmF0b3Igc3RvcCA9IG1fb2JzZXJ2ZXJzLmVuZCgpOworICAgIGZvciAoSGFz
aFNldDxGcmFtZU9ic2VydmVyKj46Oml0ZXJhdG9yIGl0ID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsg
aXQgIT0gc3RvcDsgKytpdCkKKyAgICAgICAgKCppdCktPmRpc2Nvbm5lY3RGcmFtZSgpOworCiAg
ICAgaWYgKG1fdmlldykgewogICAgICAgICBtX3ZpZXctPmhpZGUoKTsKICAgICAgICAgbV92aWV3
LT5jbGVhckZyYW1lKCk7CkBAIC0yNDAsNiArMjQ0LDE2IEBAIEZyYW1lOjp+RnJhbWUoKQogICAg
IEFTU0VSVCghbV9saWZlU3VwcG9ydFRpbWVyLmlzQWN0aXZlKCkpOwogfQogCit2b2lkIEZyYW1l
OjphZGRPYnNlcnZlcihGcmFtZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBtX29ic2VydmVy
cy5hZGQob2JzZXJ2ZXIpOworfQorCit2b2lkIEZyYW1lOjpyZW1vdmVPYnNlcnZlcihGcmFtZU9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBtX29ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwor
fQorCiB2b2lkIEZyYW1lOjpzZXRWaWV3KFBhc3NSZWZQdHI8RnJhbWVWaWV3PiB2aWV3KQogewog
ICAgIC8vIFdlIHRoZSBjdXN0b20gc2Nyb2xsIGJhcnMgYXMgZWFybHkgYXMgcG9zc2libGUgdG8g
cHJldmVudCBtX2RvYy0+ZGV0YWNoKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5o
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNjBjOTBlNS4uODM4MTEzMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY5
LDYgKzY5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdT
dG9yZUNsaWVudCB7IH07CiAjZW5kaWYKIAorICAgIGNsYXNzIEZyYW1lT2JzZXJ2ZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RnJhbWVPYnNlcnZlcigpIHsgfQorCisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSA9IDA7CisgICAgfTsKKwogICAgIGNsYXNz
IEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RnJhbWU+LCBwdWJsaWMgVGlsZWRCYWNraW5nU3Rv
cmVDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+
IGNyZWF0ZShQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQq
KTsKQEAgLTgxLDYgKzg4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIH5GcmFt
ZSgpOwogCisgICAgICAgIHZvaWQgYWRkT2JzZXJ2ZXIoRnJhbWVPYnNlcnZlciopOworICAgICAg
ICB2b2lkIHJlbW92ZU9ic2VydmVyKEZyYW1lT2JzZXJ2ZXIqKTsKKwogICAgICAgICB2b2lkIGRl
dGFjaEZyb21QYWdlKCk7CiAgICAgICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogICAgICAgICB2
b2lkIGRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsKQEAgLTE5NSw2ICsyMDUsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01X
cmFwcGVyV29ybGQqLCBjb25zdCBVc2VyU2NyaXB0VmVjdG9yJiwgVXNlclNjcmlwdEluamVjdGlv
blRpbWUpOwogICAgICAgICB2b2lkIGxpZmVTdXBwb3J0VGltZXJGaXJlZChUaW1lcjxGcmFtZT4q
KTsKIAorICAgICAgICBIYXNoU2V0PEZyYW1lT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKKwogICAg
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIG11dGFibGUgRnJhbWVUcmVlIG1fdHJlZU5vZGU7
CiAgICAgICAgIG11dGFibGUgRnJhbWVMb2FkZXIgbV9sb2FkZXI7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTUyYTEwOS4u
YzJhYjhiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMjA4LDggKzIwOCw2IEBAIFBhZ2U6On5QYWdlKCkKICAgICAgICAg
ZnJhbWUtPnBhZ2VEZXN0cm95ZWQoKTsKIAogICAgIG1fZWRpdG9yQ2xpZW50LT5wYWdlRGVzdHJv
eWVkKCk7Ci0gICAgaWYgKG1fcGx1Z2luRGF0YSkKLSAgICAgICAgbV9wbHVnaW5EYXRhLT5kaXNj
b25uZWN0UGFnZSgpOwogICAgIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7CkBAIC00NDcsMTAgKzQ0NSw4
IEBAIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQpCiAgICAgICAgIFBhZ2Uq
IHBhZ2UgPSAqaXQ7CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciBvdXQgdGhlIHBhZ2UncyBw
bHVnLWluIGRhdGEuCi0gICAgICAgIGlmIChwYWdlLT5tX3BsdWdpbkRhdGEpIHsKLSAgICAgICAg
ICAgIHBhZ2UtPm1fcGx1Z2luRGF0YS0+ZGlzY29ubmVjdFBhZ2UoKTsKKyAgICAgICAgaWYgKHBh
Z2UtPm1fcGx1Z2luRGF0YSkKICAgICAgICAgICAgIHBhZ2UtPm1fcGx1Z2luRGF0YSA9IDA7Ci0g
ICAgICAgIH0KIAogICAgICAgICBpZiAoIXJlbG9hZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNwcCBiL1dlYkNvcmUvcGx1
Z2lucy9ET01NaW1lVHlwZS5jcHAKaW5kZXggZTc5OTMxNC4uOTI2YzRjMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvRE9N
TWltZVR5cGUuY3BwCkBAIC0yMiwyMSArMjIsMjUgQEAKICNpbmNsdWRlICJET01QbHVnaW4uaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1ET01NaW1lVHlwZTo6RE9NTWltZVR5cGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRh
PiBwbHVnaW5EYXRhLCB1bnNpZ25lZCBpbmRleCkKK0RPTU1pbWVUeXBlOjpET01NaW1lVHlwZShQ
YXNzUmVmUHRyPFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgdW5zaWduZWQg
aW5kZXgpCiAgICAgOiBtX3BsdWdpbkRhdGEocGx1Z2luRGF0YSkKKyAgICAsIG1fZnJhbWUoZnJh
bWUpCiAgICAgLCBtX2luZGV4KGluZGV4KQogeworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBt
X2ZyYW1lLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAogRE9NTWltZVR5cGU6On5ET01NaW1lVHlw
ZSgpCiB7CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAgIG1fZnJhbWUtPnJlbW92ZU9ic2VydmVy
KHRoaXMpOwogfQogCiBjb25zdCBTdHJpbmcgJkRPTU1pbWVUeXBlOjp0eXBlKCkgY29uc3QKQEAg
LTY0LDExICs2OCwxMCBAQCBjb25zdCBTdHJpbmcgJkRPTU1pbWVUeXBlOjpkZXNjcmlwdGlvbigp
IGNvbnN0CiAKIFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBET01NaW1lVHlwZTo6ZW5hYmxlZFBsdWdp
bigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUGFnZSogcCA9IG1fcGx1Z2luRGF0YS0+cGFnZSgpOwot
ICAgIGlmICghcCB8fCAhcC0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigp
LT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAgICBpZiAoIW1f
ZnJhbWUgfHwgIW1fZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdp
bnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBtX3BsdWdpbkRh
dGEtPm1pbWVQbHVnaW5JbmRpY2VzKClbbV9pbmRleF0pOworICAgIHJldHVybiBET01QbHVnaW46
OmNyZWF0ZShtX3BsdWdpbkRhdGEuZ2V0KCksIG1fZnJhbWUsIG1fcGx1Z2luRGF0YS0+bWltZVBs
dWdpbkluZGljZXMoKVttX2luZGV4XSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oIGIvV2ViQ29yZS9wbHVnaW5z
L0RPTU1pbWVUeXBlLmgKaW5kZXggY2VmZGI0OC4uZWFkODBhMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmgKKysrIGIvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBl
LmgKQEAgLTI1LDE1ICsyNSwxNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQbHVn
aW5EYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUGx1Z2luOwogCi1j
bGFzcyBET01NaW1lVHlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTU1pbWVUeXBlPiB7CitjbGFz
cyBET01NaW1lVHlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTU1pbWVUeXBlPiwgcHJpdmF0ZSBG
cmFtZU9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01NaW1lVHlw
ZT4gY3JlYXRlKFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gcGx1Z2luRGF0YSwgdW5zaWduZWQgaW5k
ZXgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01NaW1lVHlwZShwbHVnaW5EYXRhLCBpbmRleCkp
OyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IGNyZWF0ZShQYXNzUmVmUHRy
PFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgaW5kZXgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBET01NaW1lVHlwZShwbHVnaW5EYXRhLCBmcmFtZSwgaW5kZXgp
KTsgfQogICAgIH5ET01NaW1lVHlwZSgpOwogCiAgICAgY29uc3QgU3RyaW5nICZ0eXBlKCkgY29u
c3Q7CkBAIC00MSwxMSArNDIsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyAmZGVzY3Jp
cHRpb24oKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVBsdWdpbj4gZW5hYmxlZFBsdWdpbigp
IGNvbnN0OwogCisgICAgLy8gRnJhbWVPYnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKSB7IG1fZnJhbWUgPSAwOyB9CisKIHByaXZhdGU6CiAgICAgY29uc3QgTWltZUNs
YXNzSW5mbyYgbWltZUNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWlt
ZXMoKVttX2luZGV4XTsgfQogICAgIAotICAgIERPTU1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2lu
RGF0YT4sIHVuc2lnbmVkIGluZGV4KTsKKyAgICBET01NaW1lVHlwZShQYXNzUmVmUHRyPFBsdWdp
bkRhdGE+LCBGcmFtZSosIHVuc2lnbmVkIGluZGV4KTsKICAgICBSZWZQdHI8UGx1Z2luRGF0YT4g
bV9wbHVnaW5EYXRhOworICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIHVuc2lnbmVkIG1faW5kZXg7
CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAg
Yi9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKaW5kZXggOGM4MWJiNy4uODJk
NDAwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCisr
KyBiL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcApAQCAtNTMsNyArNTMsNyBA
QCBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjppdGVtKHVuc2lnbmVk
IGluZGV4KQogICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBkYXRhLT5t
aW1lcygpOwogICAgIGlmIChpbmRleCA+PSBtaW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIGluZGV4KS5nZXQoKTsKKyAg
ICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpbmRleCkuZ2V0KCk7
CiB9CiAKIGJvb2wgRE9NTWltZVR5cGVBcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtNzcsNyArNzcsNyBAQCBQYXNzUmVmUHRyPERP
TU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
JiBwcm9wZXJ0eQogICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBkYXRh
LT5taW1lcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAg
ICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBpKS5nZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIG1fZnJhbWUsIGkpLmdldCgpOwog
ICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW4uY3BwIGIvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKaW5kZXggYWM0ZmQwMy4u
YzQyOTY0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKKysrIGIv
V2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKQEAgLTI1LDE0ICsyNSwxOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLURPTVBsdWdpbjo6RE9NUGx1Z2luKFBsdWdpbkRhdGEqIHBsdWdp
bkRhdGEsIHVuc2lnbmVkIGluZGV4KQorRE9NUGx1Z2luOjpET01QbHVnaW4oUGx1Z2luRGF0YSog
cGx1Z2luRGF0YSwgRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkKICAgICA6IG1fcGx1Z2lu
RGF0YShwbHVnaW5EYXRhKQorICAgICwgbV9mcmFtZShmcmFtZSkKICAgICAsIG1faW5kZXgoaW5k
ZXgpCiB7CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAgIG1fZnJhbWUtPmFkZE9ic2VydmVyKHRo
aXMpOwogfQogCiBET01QbHVnaW46On5ET01QbHVnaW4oKQogeworICAgIGlmIChtX2ZyYW1lKQor
ICAgICAgICBtX2ZyYW1lLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKIH0KIAogU3RyaW5nIERPTVBs
dWdpbjo6bmFtZSgpIGNvbnN0CkBAIC02NSw3ICs3MCw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5
cGU+IERPTVBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICBjb25zdCBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4mIG1pbWVzID0gbV9wbHVnaW5EYXRhLT5taW1lcygpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWltZXNb
aV0gPT0gbWltZSAmJiBtX3BsdWdpbkRhdGEtPm1pbWVQbHVnaW5JbmRpY2VzKClbaV0gPT0gbV9p
bmRleCkKLSAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0
YS5nZXQoKSwgaSkuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0
ZShtX3BsdWdpbkRhdGEuZ2V0KCksIG1fZnJhbWUsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1
cm4gMDsKIH0KQEAgLTg0LDcgKzg5LDcgQEAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gRE9NUGx1
Z2luOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0YS0+bWltZXMoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBE
T01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgaSkuZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShtX3BsdWdpbkRhdGEuZ2V0KCksIG1fZnJh
bWUsIGkpLmdldCgpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luLmggYi9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKaW5kZXggOTcw
MGFiNS4uMThlMTczMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oCisr
KyBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaApAQCAtMzAsOSArMzAsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBQbHVnaW47CiBjbGFzcyBQbHVnaW5EYXRhOwogCi1jbGFzcyBE
T01QbHVnaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW4+IHsKK2NsYXNzIERPTVBsdWdp
biA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVBsdWdpbj4sIHByaXZhdGUgRnJhbWVPYnNlcnZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBjcmVhdGUoUGx1Z2lu
RGF0YSogcGx1Z2luRGF0YSwgdW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
T01QbHVnaW4ocGx1Z2luRGF0YSwgaW5kZXgpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TVBsdWdpbj4gY3JlYXRlKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgdW5z
aWduZWQgaW5kZXgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01QbHVnaW4ocGx1Z2luRGF0YSwg
ZnJhbWUsIGluZGV4KSk7IH0KICAgICB+RE9NUGx1Z2luKCk7CiAKICAgICBTdHJpbmcgbmFtZSgp
IGNvbnN0OwpAQCAtNDUsMTEgKzQ1LDE1IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkdldEl0ZW1z
Rm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAgICAgUGFzc1JlZlB0
cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1l
KTsKIAorICAgIC8vIEZyYW1lT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZy
YW1lKCkgeyBtX2ZyYW1lID0gMDsgfQorCiBwcml2YXRlOgogICAgIGNvbnN0IFBsdWdpbkluZm8m
IHBsdWdpbkluZm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRhdGEtPnBsdWdpbnMoKVttX2lu
ZGV4XTsgfQogCi0gICAgRE9NUGx1Z2luKFBsdWdpbkRhdGEqLCB1bnNpZ25lZCBpbmRleCk7Cisg
ICAgRE9NUGx1Z2luKFBsdWdpbkRhdGEqLCBGcmFtZSosIHVuc2lnbmVkIGluZGV4KTsKICAgICBS
ZWZQdHI8UGx1Z2luRGF0YT4gbV9wbHVnaW5EYXRhOworICAgIEZyYW1lKiBtX2ZyYW1lOwogICAg
IHVuc2lnbmVkIG1faW5kZXg7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvRE9N
UGx1Z2luQXJyYXkuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAppbmRl
eCAzNzE3ZjMyLi43NjZjM2ViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2lu
QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxET01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjppdGVtKHVu
c2lnbmVkIGluZGV4KQogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IGRh
dGEtPnBsdWdpbnMoKTsKICAgICBpZiAoaW5kZXggPj0gcGx1Z2lucy5zaXplKCkpCiAgICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShkYXRhLCBpbmRleCkuZ2V0
KCk7CisgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEsIG1fZnJhbWUsIGluZGV4KS5n
ZXQoKTsKIH0KIAogYm9vbCBET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtNzcsNyArNzcsNyBAQCBQYXNzUmVmUHRy
PERPTVBsdWdpbj4gRE9NUGx1Z2luQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IHByb3BlcnR5TmFtZQogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IGRh
dGEtPnBsdWdpbnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGx1Z2lucy5zaXpl
KCk7ICsraSkgewogICAgICAgICBpZiAocGx1Z2luc1tpXS5uYW1lID09IHByb3BlcnR5TmFtZSkK
LSAgICAgICAgICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShkYXRhLCBpKS5nZXQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpKS5nZXQo
KTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKaW5kZXggZDI0
ZDIzNC4uYjhlNzUxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3Bw
CisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcApAQCAtMzIsOSArMzIsOCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVnaW5EYXRhOjpQbHVnaW5EYXRhKGNvbnN0IFBhZ2Uq
IHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKIHsKLSAgICBpbml0UGx1Z2lucygpOworICAgIGlu
aXRQbHVnaW5zKHBhZ2UpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGx1Z2lu
cy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBQbHVnaW5JbmZvJiBwbHVnaW4gPSBtX3Bs
dWdpbnNbaV07CkBAIC03MSwxMSArNzAsMTEgQEAgdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkK
ICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+cmVmcmVzaFBsdWdp
bnMoKTsKIH0KIAotdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucygpCit2b2lkIFBsdWdpbkRh
dGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqIHBhZ2UpCiB7CiAgICAgQVNTRVJUKG1fcGx1Z2lu
cy5pc0VtcHR5KCkpOwogICAgIAotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJh
dGVneSgpLT5nZXRQbHVnaW5JbmZvKG1fcGFnZSwgbV9wbHVnaW5zKTsKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+Z2V0UGx1Z2luSW5mbyhwYWdlLCBtX3BsdWdp
bnMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRh
LmggYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCmluZGV4IGY0Y2M2MmYuLmM2Y2RlODEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNTEsOSArNTEsNiBAQCBzdHJ1Y3QgUGx1Z2luSW5mbyB7
CiBjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0YT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRhdGE+IGNyZWF0ZShjb25zdCBQYWdl
KiBwYWdlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRGF0YShwYWdlKSk7IH0KLSAKLSAg
ICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCkgeyBtX3BhZ2UgPSAwOyB9Ci0gICAgY29uc3QgUGFnZSog
cGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCiAgICAgY29uc3QgVmVjdG9yPFBsdWdp
bkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9CiAgICAgY29uc3Qg
VmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWltZXM7IH0K
QEAgLTY2LDEzICs2MywxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUGx1Z2luRGF0YShj
b25zdCBQYWdlKik7Ci0gICAgdm9pZCBpbml0UGx1Z2lucygpOworICAgIHZvaWQgaW5pdFBsdWdp
bnMoY29uc3QgUGFnZSopOwogCiAgICAgVmVjdG9yPFBsdWdpbkluZm8+IG1fcGx1Z2luczsKICAg
ICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbV9taW1lczsKICAgICBWZWN0b3I8c2l6ZV90PiBtX21p
bWVQbHVnaW5JbmRpY2VzOwotICAgIAotICAgIGNvbnN0IFBhZ2UqIG1fcGFnZTsKIH07CiAKIH0K
</data>
<flag name="review"
          id="68483"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77913</attachid>
            <date>2011-01-04 11:35:47 -0800</date>
            <delta_ts>2011-01-06 15:30:36 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>patch-45770-2.txt</filename>
            <type>text/plain</type>
            <size>18393</size>
            <attacher name="Jenn Braithwaite">jennb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZTRhNmVlLi5mMTVlY2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTIt
MjMgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgZnJhbWUgaXMg
bW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBwbHVnLWluIERPTSBtZXRob2RzIGNlYXNlIHRvIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTc3MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVn
aW5zLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTEyLTIzICBBbGJlcnQgSi4gV29uZyAg
PGFqd29uZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hyb21pdW0gbGF5
b3V0IHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDg4OWY5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdp
bnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0xvYWRlZCB3aW5kb3cgMi4KK1BBU1M6
IHBsdWdpbiBPSy4KK1BBU1M6IG1pbWV0eXBlIE9LLgorCitBZG9wdGVkIGlmcmFtZSB0byBmaXJz
dCBwYWdlLgorV2luZG93IDIgdW5sb2FkZWQuCitQQVNTOiBwbHVnaW4gT0suCitQQVNTOiBtaW1l
dHlwZSBPSy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUt
cmVwYXJlbnRpbmctcGx1Z2lucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1l
LXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jMmVmZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
aWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxzY3JpcHQ+
Cit2YXIgd2luZG93MiwgaWZyYW1lOworCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJUZXh0ICs9IG1lc3NhZ2UgKyAiXG4i
OworfQorCitmdW5jdGlvbiBmaW5pc2goKQoreworICAgIHZhciBtZXNzYWdlID0gaWZyYW1lLmNv
bnRlbnRXaW5kb3cuY2hlY2tQbHVnaW5zKCk7CisgICAgbG9nKG1lc3NhZ2UpOworCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cyVW5sb2FkZWQoKQoreworICAg
IGxvZygiV2luZG93IDIgdW5sb2FkZWQuIik7CisgICAgc2V0VGltZW91dChmaW5pc2gsIDApOyAv
LyBMZXQgd2luZG93IGNsb3NlIGZpbmlzaCBjb21wbGV0ZWx5LgorfQorCitmdW5jdGlvbiB3aW5k
b3cyTG9hZGVkKCkKK3sKKyAgICBsb2coIkxvYWRlZCB3aW5kb3cgMi4iKTsKKyAgICBpZnJhbWUg
PSB3aW5kb3cyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKworICAgIHZhciBt
ZXNzYWdlID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY2hlY2tQbHVnaW5zKCk7CisgICAgbG9nKG1l
c3NhZ2UpOworCisgICAgd2luZG93LmRvY3VtZW50LmFkb3B0Tm9kZShpZnJhbWUpOworICAgIHdp
bmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgbG9nKCJBZG9wdGVk
IGlmcmFtZSB0byBmaXJzdCBwYWdlLiIpOworCisgICAgd2luZG93Mi5vbnVubG9hZCA9IHdpbmRv
dzJVbmxvYWRlZDsKKyAgICB3aW5kb3cyLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7CisgICAgfQorCisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJyZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3LXBhZ2UuaHRtbCIpOworICAgIHdpbmRv
dzIuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHdpbmRvdzJMb2FkZWQsIGZhbHNlKTsKK30KKwor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cHJlIGlkPWxvZz48L3ByZT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5z
LWlmcmFtZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTQ3NTRkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sCkBAIC0w
LDAgKzEsMjIgQEAKKzxzY3JpcHQ+Cit2YXIgcGx1Z2luID0gbmF2aWdhdG9yLnBsdWdpbnNbMF07
Cit2YXIgbWltZXR5cGUgPSBuYXZpZ2F0b3IubWltZVR5cGVzWzBdOworCisvLyBDYWxsZWQgYnkg
dGVzdCBwYWdlIGFmdGVyIGFkb3B0aW5nIHRoaXMgaWZyYW1lIGFuZCBjbG9zaW5nIHRoZQorLy8g
cGFnZSB0aGF0IG9yaWdpbmFsbHkgaGVsZCB0aGlzIGlmcmFtZS4KK2NoZWNrUGx1Z2lucyA9IGZ1
bmN0aW9uKCkKK3sKKyAgdmFyIG1lc3NhZ2UgPSAiIjsKKyAgaWYgKHBsdWdpbi5pdGVtKDApLmVu
YWJsZWRQbHVnaW4pCisgICAgICBtZXNzYWdlICs9ICJQQVNTOiBwbHVnaW4gT0suXG4iOworICBl
bHNlCisgICAgICBtZXNzYWdlICs9ICJGQUlMOiBwbHVnaW4gcmVmZXJlbmNlcyBQbHVnaW5EYXRh
IHdpdGggbm8gcGFnZS5cbiI7CisKKyAgaWYgKG1pbWV0eXBlLmVuYWJsZWRQbHVnaW4pCisgICAg
ICBtZXNzYWdlICs9ICJQQVNTOiBtaW1ldHlwZSBPSy5cbiI7CisgIGVsc2UKKyAgICAgIG1lc3Nh
Z2UgKz0gIkZBSUw6IG1pbWV0eXBlIHJlZmVyZW5jZXMgUGx1Z2luRGF0YSB3aXRoIG5vIHBhZ2Uu
XG4iOworCisgIHJldHVybiBtZXNzYWdlOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMt
bmV3LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUt
cmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU1YTMwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3LXBhZ2UuaHRt
bApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHk+CitBIE5ldyBQYWdlPGJyPgorPGlmcmFt
ZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWlmcmFtZS1jb250
ZW50Lmh0bWwiPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVhNGIyZTcuLjY2Yjk5YTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTQgQEAKKzIwMTAtMTItMjMgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiBhIGxpdmUgZnJhbWUgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBwbHVnLWluIERP
TSBtZXRob2RzIGNlYXNlIHRvIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTc3MAorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2lm
cmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6On5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlbW92ZU9ic2Vy
dmVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU9i
c2VydmVyOjp+RnJhbWVPYnNlcnZlcik6CisgICAgICAgIEFkZGVkIG9ic2VydmVyIHRvIGJlIG5v
dGlmaWVkIHdoZW4gZnJhbWUgaXMgZGVzdHJveWVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpyZWZyZXNoUGx1Z2lucyk6CisgICAgICAgIFBsdWdpbkRhdGEgb25seSBzdG9yZXMgcGFnZSBw
b2ludGVyIGJyaWVmbHkgaW4gY3Rvci4KKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlOjpET01NaW1lVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01NaW1lVHlwZTo6fkRPTU1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTU1pbWVUeXBlOjplbmFibGVkUGx1Z2luKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVU
eXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU1pbWVUeXBlOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICBTdG9yZSBm
cmFtZSBpbnN0ZWFkIG9mIHBhZ2UgcG9pbnRlci4KKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVU
eXBlQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheTo6aXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZUFycmF5OjpuYW1lZEl0ZW0pOgorICAgICAg
ICBQcm92aWRlIGZyYW1lIHRvIGNyZWF0ZSBET01NaW1lVHlwZS4KKyAgICAgICAgKiBwbHVnaW5z
L0RPTVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46OkRPTVBsdWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46On5ET01QbHVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUGx1Z2luOjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6bmFt
ZWRJdGVtKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTVBsdWdpbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NUGx1Z2luOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luOjpkaXNj
b25uZWN0RnJhbWUpOgorICAgICAgICBTdG9yZSBmcmFtZSBpbnN0ZWFkIG9mIHBhZ2UgcG9pbnRl
ci4KKyAgICAgICAgKiBwbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVBsdWdpbkFycmF5OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbkFy
cmF5OjpuYW1lZEl0ZW0pOgorICAgICAgICBQcm92aWRlIGZyYW1lIHRvIGNyZWF0ZSBET01QbHVn
aW4uCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGE6OlBsdWdpbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6
aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5oOgorICAgICAgICBO
byBsb25nZXIgc3RvcmVzIGEgcG9pbnRlciB0byB0aGUgcGFnZSBiZXlvbmQgY3Rvci4KKwogMjAx
MC0xMi0yMyAgSmFuIEVyaWsgSGFuc3NlbiAgPGpoYW5zc2VuQHNlbmNoYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDg1NTIzYzYuLjIwMzNjZmUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMjMyLDYgKzIzMiwxMCBAQCBGcmFtZTo6fkZyYW1lKCkKICAgICBmb3IgKEhh
c2hTZXQ8RE9NV2luZG93Kj46Oml0ZXJhdG9yIGl0ID0gbV9saXZlRm9ybWVyV2luZG93cy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5kaXNjb25uZWN0RnJhbWUoKTsK
IAorICAgIEhhc2hTZXQ8RnJhbWVPYnNlcnZlcio+OjppdGVyYXRvciBzdG9wID0gbV9vYnNlcnZl
cnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEZyYW1lT2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaXQg
PSBtX29ic2VydmVycy5iZWdpbigpOyBpdCAhPSBzdG9wOyArK2l0KQorICAgICAgICAoKml0KS0+
ZGlzY29ubmVjdEZyYW1lKCk7CisKICAgICBpZiAobV92aWV3KSB7CiAgICAgICAgIG1fdmlldy0+
aGlkZSgpOwogICAgICAgICBtX3ZpZXctPmNsZWFyRnJhbWUoKTsKQEAgLTI0MCw2ICsyNDQsMTYg
QEAgRnJhbWU6On5GcmFtZSgpCiAgICAgQVNTRVJUKCFtX2xpZmVTdXBwb3J0VGltZXIuaXNBY3Rp
dmUoKSk7CiB9CiAKK3ZvaWQgRnJhbWU6OmFkZE9ic2VydmVyKEZyYW1lT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQoreworICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgRnJhbWU6
OnJlbW92ZU9ic2VydmVyKEZyYW1lT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2
ZXJzLnJlbW92ZShvYnNlcnZlcik7Cit9CisKIHZvaWQgRnJhbWU6OnNldFZpZXcoUGFzc1JlZlB0
cjxGcmFtZVZpZXc+IHZpZXcpCiB7CiAgICAgLy8gV2UgdGhlIGN1c3RvbSBzY3JvbGwgYmFycyBh
cyBlYXJseSBhcyBwb3NzaWJsZSB0byBwcmV2ZW50IG1fZG9jLT5kZXRhY2goKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA2MGM5
MGU1Li44MzgxMTMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJD
b3JlL3BhZ2UvRnJhbWUuaApAQCAtNjksNiArNjksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50IHsgfTsKICNlbmRpZgogCisgICAgY2xh
c3MgRnJhbWVPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5GcmFtZU9i
c2VydmVyKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpID0g
MDsKKyAgICB9OworCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxGcmFtZT4s
IHB1YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwpAQCAtODEsNiArODgsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgfkZyYW1lKCk7CiAKKyAgICAgICAgdm9pZCBhZGRPYnNlcnZlcihG
cmFtZU9ic2VydmVyKik7CisgICAgICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoRnJhbWVPYnNlcnZl
ciopOworCiAgICAgICAgIHZvaWQgZGV0YWNoRnJvbVBhZ2UoKTsKICAgICAgICAgdm9pZCBwYWdl
RGVzdHJveWVkKCk7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdE93bmVyRWxlbWVudCgpOwpAQCAt
MTk1LDYgKzIwNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbmplY3RV
c2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVzZXJTY3JpcHRWZWN0
b3ImLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAgICAgICAgIHZvaWQgbGlmZVN1cHBvcnRU
aW1lckZpcmVkKFRpbWVyPEZyYW1lPiopOwogCisgICAgICAgIEhhc2hTZXQ8RnJhbWVPYnNlcnZl
cio+IG1fb2JzZXJ2ZXJzOworCiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgbXV0YWJs
ZSBGcmFtZVRyZWUgbV90cmVlTm9kZTsKICAgICAgICAgbXV0YWJsZSBGcmFtZUxvYWRlciBtX2xv
YWRlcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA1NTJhMTA5Li5jMmFiOGI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMDgsOCArMjA4LDYgQEAg
UGFnZTo6flBhZ2UoKQogICAgICAgICBmcmFtZS0+cGFnZURlc3Ryb3llZCgpOwogCiAgICAgbV9l
ZGl0b3JDbGllbnQtPnBhZ2VEZXN0cm95ZWQoKTsKLSAgICBpZiAobV9wbHVnaW5EYXRhKQotICAg
ICAgICBtX3BsdWdpbkRhdGEtPmRpc2Nvbm5lY3RQYWdlKCk7CiAgICAgCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2VEZXN0cm95
ZWQoKTsKQEAgLTQ0NywxMCArNDQ1LDggQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhib29s
IHJlbG9hZCkKICAgICAgICAgUGFnZSogcGFnZSA9ICppdDsKICAgICAgICAgCiAgICAgICAgIC8v
IENsZWFyIG91dCB0aGUgcGFnZSdzIHBsdWctaW4gZGF0YS4KLSAgICAgICAgaWYgKHBhZ2UtPm1f
cGx1Z2luRGF0YSkgewotICAgICAgICAgICAgcGFnZS0+bV9wbHVnaW5EYXRhLT5kaXNjb25uZWN0
UGFnZSgpOworICAgICAgICBpZiAocGFnZS0+bV9wbHVnaW5EYXRhKQogICAgICAgICAgICAgcGFn
ZS0+bV9wbHVnaW5EYXRhID0gMDsKLSAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVsb2FkKQog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWlt
ZVR5cGUuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNwcAppbmRleCBlNzk5MzE0
Li45MjZjNGMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuY3BwCisr
KyBiL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKQEAgLTIyLDIxICsyMiwyNSBAQAog
I2luY2x1ZGUgIkRPTVBsdWdpbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0
YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTU1pbWVUeXBlOjpET01NaW1lVHlw
ZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIHVuc2lnbmVkIGluZGV4KQorRE9N
TWltZVR5cGU6OkRPTU1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gcGx1Z2luRGF0YSwg
RnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkKICAgICA6IG1fcGx1Z2luRGF0YShwbHVnaW5E
YXRhKQorICAgICwgbV9mcmFtZShmcmFtZSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiB7CisgICAg
aWYgKG1fZnJhbWUpCisgICAgICAgIG1fZnJhbWUtPmFkZE9ic2VydmVyKHRoaXMpOwogfQogCiBE
T01NaW1lVHlwZTo6fkRPTU1pbWVUeXBlKCkKIHsKKyAgICBpZiAobV9mcmFtZSkKKyAgICAgICAg
bV9mcmFtZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIGNvbnN0IFN0cmluZyAmRE9NTWlt
ZVR5cGU6OnR5cGUoKSBjb25zdApAQCAtNjQsMTEgKzY4LDEwIEBAIGNvbnN0IFN0cmluZyAmRE9N
TWltZVR5cGU6OmRlc2NyaXB0aW9uKCkgY29uc3QKIAogUGFzc1JlZlB0cjxET01QbHVnaW4+IERP
TU1pbWVUeXBlOjplbmFibGVkUGx1Z2luKCkgY29uc3QKIHsKLSAgICBjb25zdCBQYWdlKiBwID0g
bV9wbHVnaW5EYXRhLT5wYWdlKCk7Ci0gICAgaWYgKCFwIHx8ICFwLT5tYWluRnJhbWUoKS0+bG9h
ZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlh
dGVQbHVnaW4pKQorICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+bG9hZGVyKCktPnN1YmZy
YW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShtX3BsdWdp
bkRhdGEuZ2V0KCksIG1fcGx1Z2luRGF0YS0+bWltZVBsdWdpbkluZGljZXMoKVttX2luZGV4XSk7
CisgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbV9mcmFt
ZSwgbV9wbHVnaW5EYXRhLT5taW1lUGx1Z2luSW5kaWNlcygpW21faW5kZXhdKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVU
eXBlLmggYi9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaAppbmRleCBjZWZkYjQ4Li41NWZi
ZDdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaAorKysgYi9XZWJD
b3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaApAQCAtMjAsMjAgKzIwLDIxIEBACiAjaWZuZGVmIERP
TU1pbWVUeXBlX2gKICNkZWZpbmUgRE9NTWltZVR5cGVfaAogCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCisKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLSNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVBsdWdp
bjsKIAotY2xhc3MgRE9NTWltZVR5cGUgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1lVHlwZT4g
eworY2xhc3MgRE9NTWltZVR5cGUgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1lVHlwZT4sIHBy
aXZhdGUgRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
TWltZVR5cGU+IGNyZWF0ZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIHVuc2ln
bmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NTWltZVR5cGUocGx1Z2luRGF0YSwg
aW5kZXgpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBjcmVhdGUoUGFz
c1JlZlB0cjxQbHVnaW5EYXRhPiBwbHVnaW5EYXRhLCBGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGlu
ZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NTWltZVR5cGUocGx1Z2luRGF0YSwgZnJhbWUs
IGluZGV4KSk7IH0KICAgICB+RE9NTWltZVR5cGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyAmdHlw
ZSgpIGNvbnN0OwpAQCAtNDEsMTEgKzQyLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcg
JmRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01QbHVnaW4+IGVuYWJsZWRQ
bHVnaW4oKSBjb25zdDsKIAorICAgIC8vIEZyYW1lT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzY29ubmVjdEZyYW1lKCkgeyBtX2ZyYW1lID0gMDsgfQorCiBwcml2YXRlOgogICAgIGNvbnN0
IE1pbWVDbGFzc0luZm8mIG1pbWVDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRh
dGEtPm1pbWVzKClbbV9pbmRleF07IH0KICAgICAKLSAgICBET01NaW1lVHlwZShQYXNzUmVmUHRy
PFBsdWdpbkRhdGE+LCB1bnNpZ25lZCBpbmRleCk7CisgICAgRE9NTWltZVR5cGUoUGFzc1JlZlB0
cjxQbHVnaW5EYXRhPiwgRnJhbWUqLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgUmVmUHRyPFBsdWdp
bkRhdGE+IG1fcGx1Z2luRGF0YTsKKyAgICBGcmFtZSogbV9mcmFtZTsKICAgICB1bnNpZ25lZCBt
X2luZGV4OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJy
YXkuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCmluZGV4IDhjODFi
YjcuLjgyZDQwMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5
LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gRE9NTWltZVR5cGVBcnJheTo6aXRlbSh1
bnNpZ25lZCBpbmRleCkKICAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzID0g
ZGF0YS0+bWltZXMoKTsKICAgICBpZiAoaW5kZXggPj0gbWltZXMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBpbmRleCkuZ2V0
KCk7CisgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaW5kZXgp
LmdldCgpOwogfQogCiBib29sIERPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTc3LDcgKzc3LDcgQEAgUGFzc1Jl
ZlB0cjxET01NaW1lVHlwZT4gRE9NTWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJvcGVydHkKICAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVz
ID0gZGF0YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1pbWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQot
ICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgaSkuZ2V0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpKS5n
ZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCmluZGV4IGFj
NGZkMDMuLmM0Mjk2NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3Bw
CisrKyBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCkBAIC0yNSwxNCArMjUsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01QbHVnaW46OkRPTVBsdWdpbihQbHVnaW5EYXRh
KiBwbHVnaW5EYXRhLCB1bnNpZ25lZCBpbmRleCkKK0RPTVBsdWdpbjo6RE9NUGx1Z2luKFBsdWdp
bkRhdGEqIHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgaW5kZXgpCiAgICAgOiBt
X3BsdWdpbkRhdGEocGx1Z2luRGF0YSkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2lu
ZGV4KGluZGV4KQogeworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2ZyYW1lLT5hZGRPYnNl
cnZlcih0aGlzKTsKIH0KIAogRE9NUGx1Z2luOjp+RE9NUGx1Z2luKCkKIHsKKyAgICBpZiAobV9m
cmFtZSkKKyAgICAgICAgbV9mcmFtZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIFN0cmlu
ZyBET01QbHVnaW46Om5hbWUoKSBjb25zdApAQCAtNjUsNyArNzAsNyBAQCBQYXNzUmVmUHRyPERP
TU1pbWVUeXBlPiBET01QbHVnaW46Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAgICAgY29uc3QgVmVj
dG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0YS0+bWltZXMoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KG1pbWVzW2ldID09IG1pbWUgJiYgbV9wbHVnaW5EYXRhLT5taW1lUGx1Z2luSW5kaWNlcygpW2ld
ID09IG1faW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShtX3Bs
dWdpbkRhdGEuZ2V0KCksIGkpLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBl
OjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBtX2ZyYW1lLCBpKS5nZXQoKTsKICAgICB9CiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC04NCw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+
IERPTVBsdWdpbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQog
ICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1p
bWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKQog
ICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICBy
ZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShtX3BsdWdpbkRhdGEuZ2V0KCksIGkpLmdldCgpOwor
ICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgp
LCBtX2ZyYW1lLCBpKS5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oIGIvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oCmlu
ZGV4IDk3MDBhYjUuLjE4ZTE3MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVn
aW4uaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKQEAgLTMwLDkgKzMwLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGx1Z2luOwogY2xhc3MgUGx1Z2luRGF0YTsKIAot
Y2xhc3MgRE9NUGx1Z2luIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NUGx1Z2luPiB7CitjbGFzcyBE
T01QbHVnaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxET01QbHVnaW4+LCBwcml2YXRlIEZyYW1lT2Jz
ZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVBsdWdpbj4gY3JlYXRl
KFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRE9NUGx1Z2luKHBsdWdpbkRhdGEsIGluZGV4KSk7IH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxET01QbHVnaW4+IGNyZWF0ZShQbHVnaW5EYXRhKiBwbHVnaW5EYXRhLCBGcmFtZSogZnJh
bWUsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NUGx1Z2luKHBsdWdp
bkRhdGEsIGZyYW1lLCBpbmRleCkpOyB9CiAgICAgfkRPTVBsdWdpbigpOwogCiAgICAgU3RyaW5n
IG5hbWUoKSBjb25zdDsKQEAgLTQ1LDExICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5H
ZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIFBh
c3NSZWZQdHI8RE9NTWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3Bl
cnR5TmFtZSk7CiAKKyAgICAvLyBGcmFtZU9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KKwogcHJpdmF0ZToKICAgICBjb25zdCBQbHVn
aW5JbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KClbbV9pbmRleF07IH0KIAotICAgIERPTVBsdWdpbihQbHVnaW5EYXRhKiwgdW5zaWduZWQgaW5k
ZXgpOworICAgIERPTVBsdWdpbihQbHVnaW5EYXRhKiwgRnJhbWUqLCB1bnNpZ25lZCBpbmRleCk7
CiAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKKyAgICBGcmFtZSogbV9mcmFt
ZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbkFycmF5LmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5j
cHAKaW5kZXggMzcxN2YzMi4uNzY2YzNlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL0RP
TVBsdWdpbkFycmF5LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6
aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdp
bnMgPSBkYXRhLT5wbHVnaW5zKCk7CiAgICAgaWYgKGluZGV4ID49IHBsdWdpbnMuc2l6ZSgpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwgaW5k
ZXgpLmdldCgpOworICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBp
bmRleCkuZ2V0KCk7CiB9CiAKIGJvb2wgRE9NUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTc3LDcgKzc3LDcgQEAgUGFz
c1JlZlB0cjxET01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBwcm9wZXJ0eU5hbWUKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdp
bnMgPSBkYXRhLT5wbHVnaW5zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBsdWdp
bnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKHBsdWdpbnNbaV0ubmFtZSA9PSBwcm9wZXJ0
eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwgaSkuZ2V0
KCk7CisgICAgICAgICAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwg
aSkuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCmlu
ZGV4IGQyNGQyMzQuLmRhZmZhYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAgUGx1Z2luRGF0YTo6UGx1Z2luRGF0YShjb25zdCBQYWdlKiBwYWdlKQogICAgIDogbV9w
YWdlKHBhZ2UpCiB7CiAgICAgaW5pdFBsdWdpbnMoKTsKKyAgICBtX3BhZ2UgPSAwOyAvLyBQYWdl
IG9ubHkgbmVlZGVkIGJ5IGluaXRQbHVnaW5zIGlmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKS4K
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luID0gbV9wbHVnaW5zW2ldOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhLmgKaW5kZXggZjRjYzYyZi4uNzhmZGVkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGEuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCkBAIC01
MSw5ICs1MSw2IEBAIHN0cnVjdCBQbHVnaW5JbmZvIHsKIGNsYXNzIFBsdWdpbkRhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxQbHVnaW5EYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGx1Z2luRGF0YT4gY3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQbHVnaW5EYXRhKHBhZ2UpKTsgfQotIAotICAgIHZvaWQgZGlzY29ubmVjdFBhZ2UoKSB7
IG1fcGFnZSA9IDA7IH0KLSAgICBjb25zdCBQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlOyB9CiAKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMoKSBjb25zdCB7
IHJldHVybiBtX3BsdWdpbnM7IH0KICAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1p
bWVzKCkgY29uc3QgeyByZXR1cm4gbV9taW1lczsgfQpAQCAtNzEsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7CiAgICAgVmVjdG9yPE1pbWVDbGFz
c0luZm8+IG1fbWltZXM7CiAgICAgVmVjdG9yPHNpemVfdD4gbV9taW1lUGx1Z2luSW5kaWNlczsK
LSAgICAKKwogICAgIGNvbnN0IFBhZ2UqIG1fcGFnZTsKIH07CiAK
</data>
<flag name="review"
          id="69142"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78179</attachid>
            <date>2011-01-06 15:30:36 -0800</date>
            <delta_ts>2011-01-06 16:32:13 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>patch-45770-3.txt</filename>
            <type>text/plain</type>
            <size>21588</size>
            <attacher name="Jenn Braithwaite">jennb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYWRjOGVhLi5iYTFmM2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEt
MDYgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgZnJhbWUgaXMg
bW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBwbHVnLWluIERPTSBtZXRob2RzIGNlYXNlIHRvIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTc3MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVn
aW5zLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IEFkZGVkIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy5odG1sIHRvIFF0J3Mgc2tp
cHBlZCBsaXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLXBsdWdpbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
aWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjk1NmI2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcGx1Z2luIGFuZCBtaW1ldHlw
ZSBpbiBhbiBpZnJhbWUgdGhhdCBpcyByZXBhcmVudGVkIHRvIGEgZGlmZmVyZW50IHBhZ2UgY29u
dGludWUgdG8gYmVoYXZlIGNvcnJlY3RseS4KKworTG9hZGVkIHdpbmRvdyAyLgorUEFTUzogcGx1
Z2luIE9LLgorUEFTUzogbWltZXR5cGUgT0suCisKK0Fkb3B0ZWQgaWZyYW1lIHRvIGZpcnN0IHBh
Z2UuCitXaW5kb3cgMiB1bmxvYWRlZC4KK1BBU1M6IHBsdWdpbiBPSy4KK1BBU1M6IG1pbWV0eXBl
IE9LLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBh
cmVudGluZy1wbHVnaW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctcGx1Z2lucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmNkYmE0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJh
bWUtcmVwYXJlbnRpbmctcGx1Z2lucy5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPHNjcmlwdD4KK3Zh
ciB3aW5kb3cyLCBpZnJhbWU7CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Cit9
CisKK2Z1bmN0aW9uIGZpbmlzaCgpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBpZnJhbWUuY29udGVu
dFdpbmRvdy5jaGVja1BsdWdpbnMoKTsKKyAgICBsb2cobWVzc2FnZSk7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHdpbmRvdzJVbmxvYWRlZCgpCit7CisgICAgbG9n
KCJXaW5kb3cgMiB1bmxvYWRlZC4iKTsKKyAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7IC8vIExl
dCB3aW5kb3cgY2xvc2UgZmluaXNoIGNvbXBsZXRlbHkuCit9CisKK2Z1bmN0aW9uIHdpbmRvdzJM
b2FkZWQoKQoreworICAgIGxvZygiTG9hZGVkIHdpbmRvdyAyLiIpOworICAgIGlmcmFtZSA9IHdp
bmRvdzIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIpOworCisgICAgdmFyIG1lc3Nh
Z2UgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jaGVja1BsdWdpbnMoKTsKKyAgICBsb2cobWVzc2Fn
ZSk7CisKKyAgICB3aW5kb3cuZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7CisgICAgd2luZG93
LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBsb2coIkFkb3B0ZWQgaWZy
YW1lIHRvIGZpcnN0IHBhZ2UuIik7CisKKyAgICB3aW5kb3cyLm9udW5sb2FkID0gd2luZG93MlVu
bG9hZGVkOworICAgIHdpbmRvdzIuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3Blbldp
bmRvd3MoKTsKKyAgICB9CisKKyAgICB3aW5kb3cyID0gd2luZG93Lm9wZW4oInJlc291cmNlcy9p
ZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sIik7CisgICAgd2luZG93Mi5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgd2luZG93MkxvYWRlZCwgZmFsc2UpOworfQorCis8L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHBsdWdpbiBhbmQgbWltZXR5cGUgaW4gYW4gaWZyYW1lIHRoYXQgaXMKK3JlcGFyZW50ZWQgdG8g
YSBkaWZmZXJlbnQgcGFnZSBjb250aW51ZSB0byBiZWhhdmUgY29ycmVjdGx5LgorPHByZSBpZD1s
b2c+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjUwYzYwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRl
bnQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8c2NyaXB0PgorLy8gV2UgY2FuIG9ubHkgZ3VhcmFu
dGVlIHRoYXQgdGhlIFRlc3QgUGx1Z0luIGlzIGluc3RhbGxlZC4KK3ZhciBwbHVnaW4gPSBuYXZp
Z2F0b3IucGx1Z2lucy5uYW1lZEl0ZW0oIldlYktpdCBUZXN0IFBsdWdJbiIpOwordmFyIG1pbWV0
eXBlID0gbmF2aWdhdG9yLm1pbWVUeXBlc1swXTsKKworLy8gQ2FsbGVkIGJ5IHRlc3QgcGFnZSBh
ZnRlciBhZG9wdGluZyB0aGlzIGlmcmFtZSBhbmQgY2xvc2luZyB0aGUKKy8vIHBhZ2UgdGhhdCBv
cmlnaW5hbGx5IGhlbGQgdGhpcyBpZnJhbWUuCitjaGVja1BsdWdpbnMgPSBmdW5jdGlvbigpCit7
CisgIGlmICghcGx1Z2luKSB7CisgICAgICByZXR1cm4gIkZBSUw6IEZhaWxlZCB0byBmaW5kIG5l
dHNjYXBlIHRlc3QgcGx1Z2luXG4iOworICB9CisKKyAgdmFyIG1lc3NhZ2UgPSAiIjsKKyAgaWYg
KHBsdWdpbi5pdGVtKDApLmVuYWJsZWRQbHVnaW4pCisgICAgICBtZXNzYWdlICs9ICJQQVNTOiBw
bHVnaW4gT0suXG4iOworICBlbHNlCisgICAgICBtZXNzYWdlICs9ICJGQUlMOiBwbHVnaW4gcmVm
ZXJlbmNlcyBQbHVnaW5EYXRhIHdpdGggbm8gcGFnZS5cbiI7CisKKyAgaWYgKG1pbWV0eXBlLmVu
YWJsZWRQbHVnaW4pCisgICAgICBtZXNzYWdlICs9ICJQQVNTOiBtaW1ldHlwZSBPSy5cbiI7Cisg
IGVsc2UKKyAgICAgIG1lc3NhZ2UgKz0gIkZBSUw6IG1pbWV0eXBlIHJlZmVyZW5jZXMgUGx1Z2lu
RGF0YSB3aXRoIG5vIHBhZ2UuXG4iOworCisgIHJldHVybiBtZXNzYWdlOworfQorPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLXBsdWdpbnMtbmV3LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTMwOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBs
dWdpbnMtbmV3LXBhZ2UuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHk+CitBIE5l
dyBQYWdlPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBhcmVudGluZy1w
bHVnaW5zLWlmcmFtZS1jb250ZW50Lmh0bWwiPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk1
ZjI5MTMuLmM0MTEzMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDEtMDYgIEplbm4gQnJhaXRod2Fp
dGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgZnJhbWUgaXMgbW92ZWQgYmV0d2VlbiBwYWdl
cywgc29tZSBwbHVnLWluIERPTSBtZXRob2RzIGNlYXNlIHRvIGZ1bmN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTc3MAorCisgICAgICAgIFRl
c3Q6IGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLmh0bWwKKworICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6On5GcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6On5GcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIpOgorICAgICAgICBBZGRlZCBvYnNlcnZlciB0byBiZSBub3RpZmllZCB3aGVuIGZyYW1l
IGlzIGRlc3Ryb3llZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6flBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVmcmVzaFBsdWdpbnMp
OgorICAgICAgICBQbHVnaW5EYXRhIG5vIGxvbmdlciBzdG9yZXMgcGFnZSBwb2ludGVyLgorICAg
ICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWlt
ZVR5cGU6OkRPTU1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlOjp+RE9N
TWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OmVuYWJsZWRQbHVnaW4p
OgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TU1pbWVUeXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OmZyYW1l
RGVzdHJveWVkKToKKyAgICAgICAgU3RvcmUgZnJhbWUgaW5zdGVhZCBvZiBwYWdlIHBvaW50ZXIg
aW4gRE9NTWltZVR5cGUuCisgICAgICAgICogcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NTWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKToKKyAgICAgICAgUHJvdmlkZSBmcmFt
ZSB0byBjcmVhdGUgRE9NTWltZVR5cGUuCisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luOjpET01QbHVnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUGx1Z2luOjp+RE9NUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdp
bjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46Om5hbWVkSXRlbSk6CisgICAg
ICAgICogcGx1Z2lucy9ET01QbHVnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6ZnJhbWVEZXN0cm95ZWQpOgor
ICAgICAgICBTdG9yZSBmcmFtZSBpbnN0ZWFkIG9mIHBhZ2UgcG9pbnRlciBpbiBET01QbHVnaW4u
CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01QbHVnaW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJh
eTo6bmFtZWRJdGVtKToKKyAgICAgICAgUHJvdmlkZSBmcmFtZSB0byBjcmVhdGUgRE9NUGx1Z2lu
LgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5EYXRhOjpQbHVnaW5EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGEuaDoKKyAgICAgICAgTm8g
bG9uZ2VyIHN0b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHBhZ2UuCisgICAgICAgIEFkZGVkIHBhZ2Ug
cGFyYW1ldGVyIHRvIGluaXRQbHVnaW5zLgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YU5v
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAg
ICAgICAqIHBsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKToKKyAgICAgICAgKiBwbHVnaW5zL2d0
ay9QbHVnaW5EYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmluaXRQ
bHVnaW5zKToKKyAgICAgICAgKiBwbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIFVwZGF0ZWQgcGxh
dGZvcm1zIHRvIGFkZCAodW51c2VkKSBwYWdlIHBhcmFtZXRlciB0byBpbml0UGx1Z2lucy4KKyAg
ICAgICAgCiAyMDExLTAxLTA0ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4NTUyM2M2Li5iYTE5
MzU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTIzMiw2ICsyMzIsMTAgQEAgRnJhbWU6On5GcmFtZSgpCiAgICAgZm9y
IChIYXNoU2V0PERPTVdpbmRvdyo+OjppdGVyYXRvciBpdCA9IG1fbGl2ZUZvcm1lcldpbmRvd3Mu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+ZGlzY29ubmVjdEZyYW1l
KCk7CiAKKyAgICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRvciBz
dG9wID0gbV9vYnNlcnZlcnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlcio+OjppdGVyYXRvciBpdCA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ICE9IHN0
b3A7ICsraXQpCisgICAgICAgICgqaXQpLT5mcmFtZURlc3Ryb3llZCgpOworCiAgICAgaWYgKG1f
dmlldykgewogICAgICAgICBtX3ZpZXctPmhpZGUoKTsKICAgICAgICAgbV92aWV3LT5jbGVhckZy
YW1lKCk7CkBAIC0yNDAsNiArMjQ0LDE2IEBAIEZyYW1lOjp+RnJhbWUoKQogICAgIEFTU0VSVCgh
bV9saWZlU3VwcG9ydFRpbWVyLmlzQWN0aXZlKCkpOwogfQogCit2b2lkIEZyYW1lOjphZGRPYnNl
cnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgRnJhbWU6OnJlbW92ZU9ic2VydmVyKEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNlcnZlcnMucmVtb3Zl
KG9ic2VydmVyKTsKK30KKwogdm9pZCBGcmFtZTo6c2V0VmlldyhQYXNzUmVmUHRyPEZyYW1lVmll
dz4gdmlldykKIHsKICAgICAvLyBXZSB0aGUgY3VzdG9tIHNjcm9sbCBiYXJzIGFzIGVhcmx5IGFz
IHBvc3NpYmxlIHRvIHByZXZlbnQgbV9kb2MtPmRldGFjaCgpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDFjZGZhODEuLjIyYzZm
NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCkBAIC03MSw2ICs3MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
VGlsZWRCYWNraW5nU3RvcmVDbGllbnQgeyB9OwogI2VuZGlmCiAKKyAgICBjbGFzcyBGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGVz
dHJveWVkKCkgPSAwOworICAgIH07CisKICAgICBjbGFzcyBGcmFtZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZyYW1lPiwgcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGUoUGFnZSosIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CkBAIC04Myw2ICs5MCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB+RnJhbWUoKTsKIAorICAgICAgICB2b2lkIGFk
ZE9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciopOworICAgICAgICB2b2lkIHJlbW92
ZU9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciopOworCiAgICAgICAgIHZvaWQgZGV0
YWNoRnJvbVBhZ2UoKTsKICAgICAgICAgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgICAgIHZv
aWQgZGlzY29ubmVjdE93bmVyRWxlbWVudCgpOwpAQCAtMTk3LDYgKzIwNyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdy
YXBwZXJXb3JsZCosIGNvbnN0IFVzZXJTY3JpcHRWZWN0b3ImLCBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSk7CiAgICAgICAgIHZvaWQgbGlmZVN1cHBvcnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lPiop
OwogCisgICAgICAgIEhhc2hTZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9vYnNlcnZl
cnM7CisKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBtdXRhYmxlIEZyYW1lVHJlZSBt
X3RyZWVOb2RlOwogICAgICAgICBtdXRhYmxlIEZyYW1lTG9hZGVyIG1fbG9hZGVyOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGE3OGNmYjcuLjM3MThkMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIwOSw4ICsyMDksNiBAQCBQYWdlOjp+UGFnZSgp
CiAgICAgICAgIGZyYW1lLT5wYWdlRGVzdHJveWVkKCk7CiAKICAgICBtX2VkaXRvckNsaWVudC0+
cGFnZURlc3Ryb3llZCgpOwotICAgIGlmIChtX3BsdWdpbkRhdGEpCi0gICAgICAgIG1fcGx1Z2lu
RGF0YS0+ZGlzY29ubmVjdFBhZ2UoKTsKICAgICAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwpAQCAtNDQ4
LDEwICs0NDYsOCBAQCB2b2lkIFBhZ2U6OnJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKQogICAg
ICAgICBQYWdlKiBwYWdlID0gKml0OwogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgb3V0IHRo
ZSBwYWdlJ3MgcGx1Zy1pbiBkYXRhLgotICAgICAgICBpZiAocGFnZS0+bV9wbHVnaW5EYXRhKSB7
Ci0gICAgICAgICAgICBwYWdlLT5tX3BsdWdpbkRhdGEtPmRpc2Nvbm5lY3RQYWdlKCk7CisgICAg
ICAgIGlmIChwYWdlLT5tX3BsdWdpbkRhdGEpCiAgICAgICAgICAgICBwYWdlLT5tX3BsdWdpbkRh
dGEgPSAwOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKCFyZWxvYWQpCiAgICAgICAgICAgICBj
b250aW51ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAgYi9X
ZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuY3BwCmluZGV4IGU3OTkzMTQuLmYyNzE4NDIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKKysrIGIvV2ViQ29yZS9w
bHVnaW5zL0RPTU1pbWVUeXBlLmNwcApAQCAtMjksMTQgKzI5LDE5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRE9NTWltZVR5cGU6OkRPTU1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2luRGF0
YT4gcGx1Z2luRGF0YSwgdW5zaWduZWQgaW5kZXgpCitET01NaW1lVHlwZTo6RE9NTWltZVR5cGUo
UGFzc1JlZlB0cjxQbHVnaW5EYXRhPiBwbHVnaW5EYXRhLCBGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGluZGV4KQogICAgIDogbV9wbHVnaW5EYXRhKHBsdWdpbkRhdGEpCisgICAgLCBtX2ZyYW1lKGZy
YW1lKQogICAgICwgbV9pbmRleChpbmRleCkKIHsKKyAgICBpZiAobV9mcmFtZSkKKyAgICAgICAg
bV9mcmFtZS0+YWRkT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIERPTU1pbWVUeXBlOjp+RE9NTWltZVR5
cGUoKQogeworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2ZyYW1lLT5yZW1vdmVPYnNlcnZl
cih0aGlzKTsKIH0KIAogY29uc3QgU3RyaW5nICZET01NaW1lVHlwZTo6dHlwZSgpIGNvbnN0CkBA
IC02NCwxMSArNjksMTAgQEAgY29uc3QgU3RyaW5nICZET01NaW1lVHlwZTo6ZGVzY3JpcHRpb24o
KSBjb25zdAogCiBQYXNzUmVmUHRyPERPTVBsdWdpbj4gRE9NTWltZVR5cGU6OmVuYWJsZWRQbHVn
aW4oKSBjb25zdAogewotICAgIGNvbnN0IFBhZ2UqIHAgPSBtX3BsdWdpbkRhdGEtPnBhZ2UoKTsK
LSAgICBpZiAoIXAgfHwgIXAtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIo
KS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbikpCisgICAgaWYgKCFt
X2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkgfHwgIW1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1l
KCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0lu
c3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gRE9NUGx1
Z2luOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBtX3BsdWdpbkRhdGEtPm1pbWVQbHVnaW5J
bmRpY2VzKClbbV9pbmRleF0pOworICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShtX3BsdWdp
bkRhdGEuZ2V0KCksIG1fZnJhbWUsIG1fcGx1Z2luRGF0YS0+bWltZVBsdWdpbkluZGljZXMoKVtt
X2luZGV4XSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oIGIvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmgK
aW5kZXggY2VmZGI0OC4uNzRjNjJkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL0RPTU1p
bWVUeXBlLmgKKysrIGIvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmgKQEAgLTIwLDIwICsy
MCwyMSBAQAogI2lmbmRlZiBET01NaW1lVHlwZV9oCiAjZGVmaW5lIERPTU1pbWVUeXBlX2gKIAor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgorCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi0jaW5jbHVkZSAiUGx1
Z2luRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBET01QbHVnaW47CiAKLWNsYXNzIERPTU1pbWVUeXBlIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NTWltZVR5cGU+IHsKK2NsYXNzIERPTU1pbWVUeXBlIDogcHVibGljIFJlZkNvdW50
ZWQ8RE9NTWltZVR5cGU+LCBwcml2YXRlIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IGNyZWF0ZShQYXNzUmVmUHRy
PFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRE9NTWltZVR5cGUocGx1Z2luRGF0YSwgaW5kZXgpKTsgfQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERPTU1pbWVUeXBlPiBjcmVhdGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiBwbHVnaW5E
YXRhLCBGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
RE9NTWltZVR5cGUocGx1Z2luRGF0YSwgZnJhbWUsIGluZGV4KSk7IH0KICAgICB+RE9NTWltZVR5
cGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyAmdHlwZSgpIGNvbnN0OwpAQCAtNDEsMTEgKzQyLDE1
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcgJmRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxET01QbHVnaW4+IGVuYWJsZWRQbHVnaW4oKSBjb25zdDsKIAorICAgIC8vIEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgp
IHsgbV9mcmFtZSA9IDA7IH0KKwogcHJpdmF0ZToKICAgICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBt
aW1lQ2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EYXRhLT5taW1lcygpW21faW5k
ZXhdOyB9CiAgICAgCi0gICAgRE9NTWltZVR5cGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiwgdW5z
aWduZWQgaW5kZXgpOworICAgIERPTU1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4sIEZy
YW1lKiwgdW5zaWduZWQgaW5kZXgpOwogICAgIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRh
dGE7CisgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcCBiL1dlYkNvcmUv
cGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAppbmRleCA4YzgxYmI3Li44MmQ0MDA2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKKysrIGIvV2ViQ29y
ZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFBhc3NSZWZQ
dHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAg
ICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IGRhdGEtPm1pbWVzKCk7CiAg
ICAgaWYgKGluZGV4ID49IG1pbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgaW5kZXgpLmdldCgpOworICAgIHJldHVybiBE
T01NaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIG1fZnJhbWUsIGluZGV4KS5nZXQoKTsKIH0KIAogYm9v
bCBET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCkBAIC03Nyw3ICs3Nyw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+
IERPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5
CiAgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IGRhdGEtPm1pbWVzKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVy
biBET01NaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIGkpLmdldCgpOworICAgICAgICAgICAgcmV0dXJu
IERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaSkuZ2V0KCk7CiAgICAgfQogICAg
IHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAg
Yi9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcAppbmRleCBhYzRmZDAzLi5jNDI5NjRhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcAorKysgYi9XZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luLmNwcApAQCAtMjUsMTQgKzI1LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRE9NUGx1Z2luOjpET01QbHVnaW4oUGx1Z2luRGF0YSogcGx1Z2luRGF0YSwgdW5z
aWduZWQgaW5kZXgpCitET01QbHVnaW46OkRPTVBsdWdpbihQbHVnaW5EYXRhKiBwbHVnaW5EYXRh
LCBGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGluZGV4KQogICAgIDogbV9wbHVnaW5EYXRhKHBsdWdp
bkRhdGEpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9pbmRleChpbmRleCkKIHsKKyAg
ICBpZiAobV9mcmFtZSkKKyAgICAgICAgbV9mcmFtZS0+YWRkT2JzZXJ2ZXIodGhpcyk7CiB9CiAK
IERPTVBsdWdpbjo6fkRPTVBsdWdpbigpCiB7CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAgIG1f
ZnJhbWUtPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogfQogCiBTdHJpbmcgRE9NUGx1Z2luOjpuYW1l
KCkgY29uc3QKQEAgLTY1LDcgKzcwLDcgQEAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gRE9NUGx1
Z2luOjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZv
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1lc1tpXSA9PSBtaW1l
ICYmIG1fcGx1Z2luRGF0YS0+bWltZVBsdWdpbkluZGljZXMoKVtpXSA9PSBtX2luZGV4KQotICAg
ICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBp
KS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2lu
RGF0YS5nZXQoKSwgbV9mcmFtZSwgaSkuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpA
QCAtODQsNyArODksNyBAQCBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01QbHVnaW46Om5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICBjb25zdCBWZWN0b3I8
TWltZUNsYXNzSW5mbz4mIG1pbWVzID0gbV9wbHVnaW5EYXRhLT5taW1lcygpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgaWYgKG1pbWVz
W2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBl
OjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBpKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBET01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbV9mcmFtZSwgaSkuZ2V0
KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW4uaCBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAppbmRleCA5NzAwYWI1Li5mMzA1
ZWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKKysrIGIvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbi5oCkBAIC0zMCw5ICszMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFBsdWdpbjsKIGNsYXNzIFBsdWdpbkRhdGE7CiAKLWNsYXNzIERPTVBsdWdpbiA6
IHB1YmxpYyBSZWZDb3VudGVkPERPTVBsdWdpbj4geworY2xhc3MgRE9NUGx1Z2luIDogcHVibGlj
IFJlZkNvdW50ZWQ8RE9NUGx1Z2luPiwgcHJpdmF0ZSBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVBsdWdpbj4gY3JlYXRlKFBsdWdp
bkRhdGEqIHBsdWdpbkRhdGEsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
RE9NUGx1Z2luKHBsdWdpbkRhdGEsIGluZGV4KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
T01QbHVnaW4+IGNyZWF0ZShQbHVnaW5EYXRhKiBwbHVnaW5EYXRhLCBGcmFtZSogZnJhbWUsIHVu
c2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NUGx1Z2luKHBsdWdpbkRhdGEs
IGZyYW1lLCBpbmRleCkpOyB9CiAgICAgfkRPTVBsdWdpbigpOwogCiAgICAgU3RyaW5nIG5hbWUo
KSBjb25zdDsKQEAgLTQ1LDExICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5HZXRJdGVt
c0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIFBhc3NSZWZQ
dHI8RE9NTWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFt
ZSk7CiAKKyAgICAvLyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQg
ZnJhbWVEZXN0cm95ZWQoKSB7IG1fZnJhbWUgPSAwOyB9CisKIHByaXZhdGU6CiAgICAgY29uc3Qg
UGx1Z2luSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRGF0YS0+cGx1
Z2lucygpW21faW5kZXhdOyB9CiAKLSAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIHVuc2lnbmVk
IGluZGV4KTsKKyAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwgdW5zaWduZWQgaW5k
ZXgpOwogICAgIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7CisgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuY3BwCmluZGV4IDM3MTdmMzIuLjc2NmMzZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW5BcnJheS5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2luQXJy
YXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBw
bHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGlmIChpbmRleCA+PSBwbHVnaW5zLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEs
IGluZGV4KS5nZXQoKTsKKyAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwgbV9mcmFt
ZSwgaW5kZXgpLmdldCgpOwogfQogCiBib29sIERPTVBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zv
ck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC03Nyw3ICs3Nyw3IEBA
IFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBw
bHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
bHVnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChwbHVnaW5zW2ldLm5hbWUgPT0gcHJv
cGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEsIGkp
LmdldCgpOworICAgICAgICAgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEsIG1fZnJh
bWUsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNw
cAppbmRleCBkMjRkMjM0Li5iOGU3NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCkBAIC0zMiw5
ICszMiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsdWdpbkRhdGE6OlBsdWdpbkRhdGEo
Y29uc3QgUGFnZSogcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQogewotICAgIGluaXRQbHVnaW5z
KCk7CisgICAgaW5pdFBsdWdpbnMocGFnZSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFBsdWdpbkluZm8mIHBs
dWdpbiA9IG1fcGx1Z2luc1tpXTsKQEAgLTcxLDExICs3MCwxMSBAQCB2b2lkIFBsdWdpbkRhdGE6
OnJlZnJlc2goKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5y
ZWZyZXNoUGx1Z2lucygpOwogfQogCi12b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKK3Zv
aWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSogcGFnZSkKIHsKICAgICBBU1NF
UlQobV9wbHVnaW5zLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBsdWdpblN0cmF0ZWd5KCktPmdldFBsdWdpbkluZm8obV9wYWdlLCBtX3BsdWdpbnMpOworICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5nZXRQbHVnaW5JbmZvKHBh
Z2UsIG1fcGx1Z2lucyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGEuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggZjRjYzYy
Zi4uYzZjZGU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysg
Yi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCkBAIC01MSw5ICs1MSw2IEBAIHN0cnVjdCBQ
bHVnaW5JbmZvIHsKIGNsYXNzIFBsdWdpbkRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5E
YXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gY3JlYXRl
KGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRhKHBhZ2Up
KTsgfQotIAotICAgIHZvaWQgZGlzY29ubmVjdFBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KLSAgICBj
b25zdCBQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAKICAgICBjb25zdCBW
ZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnM7IH0K
ICAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9taW1lczsgfQpAQCAtNjYsMTMgKzYzLDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBQ
bHVnaW5EYXRhKGNvbnN0IFBhZ2UqKTsKLSAgICB2b2lkIGluaXRQbHVnaW5zKCk7CisgICAgdm9p
ZCBpbml0UGx1Z2lucyhjb25zdCBQYWdlKik7CiAKICAgICBWZWN0b3I8UGx1Z2luSW5mbz4gbV9w
bHVnaW5zOwogICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtX21pbWVzOwogICAgIFZlY3Rvcjxz
aXplX3Q+IG1fbWltZVBsdWdpbkluZGljZXM7Ci0gICAgCi0gICAgY29uc3QgUGFnZSogbV9wYWdl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFOb25lLmNw
cCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhTm9uZS5jcHAKaW5kZXggM2I5ODM4My4uZWRm
ZWU1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFOb25lLmNwcAorKysg
Yi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YU5vbmUuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucygpCit2
b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqKQogewogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcCBiL1dl
YkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwCmluZGV4IDM3OGZj
Y2IuLmM5MjQwNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5E
YXRhQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRh
Q2hyb21pdW0uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBQbHVnaW5D
YWNoZSBwbHVnaW5DYWNoZTsKIAotdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucygpCit2b2lk
IFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqKQogewogICAgIGNvbnN0IFZlY3Rv
cjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlLnBsdWdpbnMoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL2d0ay9Q
bHVnaW5EYXRhR3RrLmNwcAppbmRleCBhZTRkOThiLi43MDViZjlhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luRGF0YUd0ay5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlIDxzdGRpby5o
PgogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkK
K3ZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSopCiB7CiAgICAgUGx1Z2lu
RGF0YWJhc2UgKmRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKTsKICAgICBj
b25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3BwIGIvV2ViQ29yZS9w
bHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKaW5kZXggYTU5NWM4Mi4uMGViODkwZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKKysrIGIvV2ViQ29yZS9w
bHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKK3ZvaWQgUGx1Z2lu
RGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSopCiB7CiAgICAgUGx1Z2luRGF0YWJhc2UqIGRi
ID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKTsKICAgICBjb25zdCBWZWN0b3I8
UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78187</attachid>
            <date>2011-01-06 16:32:13 -0800</date>
            <delta_ts>2011-01-06 17:59:05 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>patch-45770-4.txt</filename>
            <type>text/plain</type>
            <size>21714</size>
            <attacher name="Jenn Braithwaite">jennb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYWRjOGVhLi5iYTFmM2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEt
MDYgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgZnJhbWUgaXMg
bW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBwbHVnLWluIERPTSBtZXRob2RzIGNlYXNlIHRvIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NTc3MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVn
aW5zLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IEFkZGVkIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWJpZGktZmlyc3QtYW5kLWxhc3QtbGV0dGVycy5odG1sIHRvIFF0J3Mgc2tp
cHBlZCBsaXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLXBsdWdpbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
aWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjk1NmI2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcGx1Z2luIGFuZCBtaW1ldHlw
ZSBpbiBhbiBpZnJhbWUgdGhhdCBpcyByZXBhcmVudGVkIHRvIGEgZGlmZmVyZW50IHBhZ2UgY29u
dGludWUgdG8gYmVoYXZlIGNvcnJlY3RseS4KKworTG9hZGVkIHdpbmRvdyAyLgorUEFTUzogcGx1
Z2luIE9LLgorUEFTUzogbWltZXR5cGUgT0suCisKK0Fkb3B0ZWQgaWZyYW1lIHRvIGZpcnN0IHBh
Z2UuCitXaW5kb3cgMiB1bmxvYWRlZC4KK1BBU1M6IHBsdWdpbiBPSy4KK1BBU1M6IG1pbWV0eXBl
IE9LLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBh
cmVudGluZy1wbHVnaW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctcGx1Z2lucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmNkYmE0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJh
bWUtcmVwYXJlbnRpbmctcGx1Z2lucy5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPHNjcmlwdD4KK3Zh
ciB3aW5kb3cyLCBpZnJhbWU7CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Cit9
CisKK2Z1bmN0aW9uIGZpbmlzaCgpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBpZnJhbWUuY29udGVu
dFdpbmRvdy5jaGVja1BsdWdpbnMoKTsKKyAgICBsb2cobWVzc2FnZSk7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHdpbmRvdzJVbmxvYWRlZCgpCit7CisgICAgbG9n
KCJXaW5kb3cgMiB1bmxvYWRlZC4iKTsKKyAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7IC8vIExl
dCB3aW5kb3cgY2xvc2UgZmluaXNoIGNvbXBsZXRlbHkuCit9CisKK2Z1bmN0aW9uIHdpbmRvdzJM
b2FkZWQoKQoreworICAgIGxvZygiTG9hZGVkIHdpbmRvdyAyLiIpOworICAgIGlmcmFtZSA9IHdp
bmRvdzIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIpOworCisgICAgdmFyIG1lc3Nh
Z2UgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jaGVja1BsdWdpbnMoKTsKKyAgICBsb2cobWVzc2Fn
ZSk7CisKKyAgICB3aW5kb3cuZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7CisgICAgd2luZG93
LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBsb2coIkFkb3B0ZWQgaWZy
YW1lIHRvIGZpcnN0IHBhZ2UuIik7CisKKyAgICB3aW5kb3cyLm9udW5sb2FkID0gd2luZG93MlVu
bG9hZGVkOworICAgIHdpbmRvdzIuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3Blbldp
bmRvd3MoKTsKKyAgICB9CisKKyAgICB3aW5kb3cyID0gd2luZG93Lm9wZW4oInJlc291cmNlcy9p
ZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sIik7CisgICAgd2luZG93Mi5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgd2luZG93MkxvYWRlZCwgZmFsc2UpOworfQorCis8L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHBsdWdpbiBhbmQgbWltZXR5cGUgaW4gYW4gaWZyYW1lIHRoYXQgaXMKK3JlcGFyZW50ZWQgdG8g
YSBkaWZmZXJlbnQgcGFnZSBjb250aW51ZSB0byBiZWhhdmUgY29ycmVjdGx5LgorPHByZSBpZD1s
b2c+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJl
bnRpbmctcGx1Z2lucy1pZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjMyNDdlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtaWZyYW1lLWNvbnRl
bnQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8c2NyaXB0PgorLy8gV2UgY2FuIG9ubHkgZ3VhcmFu
dGVlIHRoYXQgdGhlIFRlc3QgUGx1Z0luIGlzIGluc3RhbGxlZC4KK3ZhciBwbHVnaW4gPSBuYXZp
Z2F0b3IucGx1Z2lucy5uYW1lZEl0ZW0oIldlYktpdCBUZXN0IFBsdWdJbiIpOwordmFyIG1pbWV0
eXBlID0gbmF2aWdhdG9yLm1pbWVUeXBlc1swXTsKKworLy8gQ2FsbGVkIGJ5IHRlc3QgcGFnZSBh
ZnRlciBhZG9wdGluZyB0aGlzIGlmcmFtZSBhbmQgY2xvc2luZyB0aGUKKy8vIHBhZ2UgdGhhdCBv
cmlnaW5hbGx5IGhlbGQgdGhpcyBpZnJhbWUuCitjaGVja1BsdWdpbnMgPSBmdW5jdGlvbigpCit7
CisgIGlmICghcGx1Z2luKSB7CisgICAgICByZXR1cm4gIkZBSUw6IEZhaWxlZCB0byBmaW5kIHRl
c3QgcGx1Z2luXG4iOworICB9CisKKyAgdmFyIG1lc3NhZ2UgPSAiIjsKKyAgaWYgKHBsdWdpbi5p
dGVtKDApLmVuYWJsZWRQbHVnaW4pCisgICAgICBtZXNzYWdlICs9ICJQQVNTOiBwbHVnaW4gT0su
XG4iOworICBlbHNlCisgICAgICBtZXNzYWdlICs9ICJGQUlMOiBwbHVnaW4gcmVmZXJlbmNlcyBQ
bHVnaW5EYXRhIHdpdGggbm8gcGFnZS5cbiI7CisKKyAgaWYgKG1pbWV0eXBlLmVuYWJsZWRQbHVn
aW4pCisgICAgICBtZXNzYWdlICs9ICJQQVNTOiBtaW1ldHlwZSBPSy5cbiI7CisgIGVsc2UKKyAg
ICAgIG1lc3NhZ2UgKz0gIkZBSUw6IG1pbWV0eXBlIHJlZmVyZW5jZXMgUGx1Z2luRGF0YSB3aXRo
IG5vIHBhZ2UuXG4iOworCisgIHJldHVybiBtZXNzYWdlOworfQorPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5n
LXBsdWdpbnMtbmV3LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctcGx1Z2lucy1uZXctcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTMwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLXBsdWdpbnMtbmV3
LXBhZ2UuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHk+CitBIE5ldyBQYWdlPGJy
PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLWlm
cmFtZS1jb250ZW50Lmh0bWwiPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk1ZjI5MTMuLjhh
MDlhMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEtMDEtMDYgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5u
YkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxpdmUgZnJhbWUgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgc29tZSBw
bHVnLWluIERPTSBtZXRob2RzIGNlYXNlIHRvIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTc3MAorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1wbHVnaW5zLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6On5GcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJl
bW92ZU9ic2VydmVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI6On5GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIpOgor
ICAgICAgICBBZGRlZCBvYnNlcnZlciB0byBiZSBub3RpZmllZCB3aGVuIGZyYW1lIGlzIGRlc3Ry
b3llZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
flBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVmcmVzaFBsdWdpbnMpOgorICAgICAg
ICBQbHVnaW5EYXRhIG5vIGxvbmdlciBzdG9yZXMgcGFnZSBwb2ludGVyLgorICAgICAgICAqIHBs
dWdpbnMvRE9NTWltZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OkRP
TU1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlOjp+RE9NTWltZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OmVuYWJsZWRQbHVnaW4pOgorICAgICAg
ICAqIHBsdWdpbnMvRE9NTWltZVR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OmZyYW1lRGVzdHJveWVk
KToKKyAgICAgICAgU3RvcmUgZnJhbWUgaW5zdGVhZCBvZiBwYWdlIHBvaW50ZXIgaW4gRE9NTWlt
ZVR5cGUuCisgICAgICAgICogcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RE9N
TWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKToKKyAgICAgICAgUHJvdmlkZSBmcmFtZSB0byBjcmVh
dGUgRE9NTWltZVR5cGUuCisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGx1Z2luOjpET01QbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9N
UGx1Z2luOjp+RE9NUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6aXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46Om5hbWVkSXRlbSk6CisgICAgICAgICogcGx1
Z2lucy9ET01QbHVnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6ZnJhbWVEZXN0cm95ZWQpOgorICAgICAgICBT
dG9yZSBmcmFtZSBpbnN0ZWFkIG9mIHBhZ2UgcG9pbnRlciBpbiBET01QbHVnaW4uCisgICAgICAg
ICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVn
aW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6bmFtZWRJ
dGVtKToKKyAgICAgICAgUHJvdmlkZSBmcmFtZSB0byBjcmVhdGUgRE9NUGx1Z2luLgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
OjpQbHVnaW5EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmluaXRQbHVnaW5z
KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGEuaDoKKyAgICAgICAgTm8gbG9uZ2VyIHN0
b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHBhZ2UuCisgICAgICAgIEFkZGVkIHBhZ2UgcGFyYW1ldGVy
IHRvIGluaXRQbHVnaW5zLgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YU5vbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHBs
dWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKToKKyAgICAgICAgKiBwbHVnaW5zL2d0ay9QbHVnaW5E
YXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKToK
KyAgICAgICAgKiBwbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIFVwZGF0ZWQgcGxhdGZvcm1zIHRv
IGFkZCAodW51c2VkKSBwYWdlIHBhcmFtZXRlciB0byBpbml0UGx1Z2lucy4KKwogMjAxMS0wMS0w
NCAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODU1MjNjNi4uZTZmNDg2NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0y
MzIsNiArMjMyLDEwIEBAIEZyYW1lOjp+RnJhbWUoKQogICAgIGZvciAoSGFzaFNldDxET01XaW5k
b3cqPjo6aXRlcmF0b3IgaXQgPSBtX2xpdmVGb3JtZXJXaW5kb3dzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKICAgICAgICAgKCppdCktPmRpc2Nvbm5lY3RGcmFtZSgpOwogCisgICAgSGFzaFNl
dDxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqPjo6aXRlcmF0b3Igc3RvcCA9IG1fZGVzdHJ1Y3Rp
b25PYnNlcnZlcnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlcio+OjppdGVyYXRvciBpdCA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVnaW4oKTsgaXQg
IT0gc3RvcDsgKytpdCkKKyAgICAgICAgKCppdCktPmZyYW1lRGVzdHJveWVkKCk7CisKICAgICBp
ZiAobV92aWV3KSB7CiAgICAgICAgIG1fdmlldy0+aGlkZSgpOwogICAgICAgICBtX3ZpZXctPmNs
ZWFyRnJhbWUoKTsKQEAgLTI0MCw2ICsyNDQsMTYgQEAgRnJhbWU6On5GcmFtZSgpCiAgICAgQVNT
RVJUKCFtX2xpZmVTdXBwb3J0VGltZXIuaXNBY3RpdmUoKSk7CiB9CiAKK3ZvaWQgRnJhbWU6OmFk
ZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKiBvYnNlcnZlcikK
K3sKKyAgICBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Cit9CisKK3ZvaWQg
RnJhbWU6OnJlbW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
KiBvYnNlcnZlcikKK3sKKyAgICBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZl
cik7Cit9CisKIHZvaWQgRnJhbWU6OnNldFZpZXcoUGFzc1JlZlB0cjxGcmFtZVZpZXc+IHZpZXcp
CiB7CiAgICAgLy8gV2UgdGhlIGN1c3RvbSBzY3JvbGwgYmFycyBhcyBlYXJseSBhcyBwb3NzaWJs
ZSB0byBwcmV2ZW50IG1fZG9jLT5kZXRhY2goKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Zy
YW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAxY2RmYTgxLi40OTI4NzQyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApA
QCAtNzEsNiArNzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50IHsgfTsKICNlbmRpZgogCisgICAgY2xhc3MgRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlcigpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgp
ID0gMDsKKyAgICB9OworCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxGcmFt
ZT4sIHB1YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwpAQCAtODMsNiArOTAsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgfkZyYW1lKCk7CiAKKyAgICAgICAgdm9pZCBhZGREZXN0cnVj
dGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciopOworICAgICAgICB2b2lkIHJl
bW92ZURlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CisKICAg
ICAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOwogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQo
KTsKICAgICAgICAgdm9pZCBkaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CkBAIC0xOTcsNiArMjA3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRz
Rm9yV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgVXNlclNjcmlwdFZlY3RvciYsIFVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lKTsKICAgICAgICAgdm9pZCBsaWZlU3VwcG9ydFRpbWVyRmlyZWQo
VGltZXI8RnJhbWU+Kik7CiAKKyAgICAgICAgSGFzaFNldDxGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOworCiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAg
ICAgICAgbXV0YWJsZSBGcmFtZVRyZWUgbV90cmVlTm9kZTsKICAgICAgICAgbXV0YWJsZSBGcmFt
ZUxvYWRlciBtX2xvYWRlcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhNzhjZmI3Li4zNzE4ZDBhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMDks
OCArMjA5LDYgQEAgUGFnZTo6flBhZ2UoKQogICAgICAgICBmcmFtZS0+cGFnZURlc3Ryb3llZCgp
OwogCiAgICAgbV9lZGl0b3JDbGllbnQtPnBhZ2VEZXN0cm95ZWQoKTsKLSAgICBpZiAobV9wbHVn
aW5EYXRhKQotICAgICAgICBtX3BsdWdpbkRhdGEtPmRpc2Nvbm5lY3RQYWdlKCk7CiAgICAgCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3Rl
ZFBhZ2VEZXN0cm95ZWQoKTsKQEAgLTQ0OCwxMCArNDQ2LDggQEAgdm9pZCBQYWdlOjpyZWZyZXNo
UGx1Z2lucyhib29sIHJlbG9hZCkKICAgICAgICAgUGFnZSogcGFnZSA9ICppdDsKICAgICAgICAg
CiAgICAgICAgIC8vIENsZWFyIG91dCB0aGUgcGFnZSdzIHBsdWctaW4gZGF0YS4KLSAgICAgICAg
aWYgKHBhZ2UtPm1fcGx1Z2luRGF0YSkgewotICAgICAgICAgICAgcGFnZS0+bV9wbHVnaW5EYXRh
LT5kaXNjb25uZWN0UGFnZSgpOworICAgICAgICBpZiAocGFnZS0+bV9wbHVnaW5EYXRhKQogICAg
ICAgICAgICAgcGFnZS0+bV9wbHVnaW5EYXRhID0gMDsKLSAgICAgICAgfQogCiAgICAgICAgIGlm
ICghcmVsb2FkKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGUuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNwcApp
bmRleCBlNzk5MzE0Li4xMTRkMjE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWlt
ZVR5cGUuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKQEAgLTI5LDE0
ICsyOSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTU1pbWVUeXBlOjpET01NaW1l
VHlwZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIHVuc2lnbmVkIGluZGV4KQor
RE9NTWltZVR5cGU6OkRPTU1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gcGx1Z2luRGF0
YSwgRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkKICAgICA6IG1fcGx1Z2luRGF0YShwbHVn
aW5EYXRhKQorICAgICwgbV9mcmFtZShmcmFtZSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiB7Cisg
ICAgaWYgKG1fZnJhbWUpCisgICAgICAgIG1fZnJhbWUtPmFkZERlc3RydWN0aW9uT2JzZXJ2ZXIo
dGhpcyk7CiB9CiAKIERPTU1pbWVUeXBlOjp+RE9NTWltZVR5cGUoKQogeworICAgIGlmIChtX2Zy
YW1lKQorICAgICAgICBtX2ZyYW1lLT5yZW1vdmVEZXN0cnVjdGlvbk9ic2VydmVyKHRoaXMpOwog
fQogCiBjb25zdCBTdHJpbmcgJkRPTU1pbWVUeXBlOjp0eXBlKCkgY29uc3QKQEAgLTY0LDExICs2
OSwxMCBAQCBjb25zdCBTdHJpbmcgJkRPTU1pbWVUeXBlOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAK
IFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBET01NaW1lVHlwZTo6ZW5hYmxlZFBsdWdpbigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUGFnZSogcCA9IG1fcGx1Z2luRGF0YS0+cGFnZSgpOwotICAgIGlmICgh
cCB8fCAhcC0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1Bs
dWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAgICBpZiAoIW1fZnJhbWUgfHwg
IW1fZnJhbWUtPnBhZ2UoKSB8fCAhbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVy
KCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQ
bHVnaW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0
ZShtX3BsdWdpbkRhdGEuZ2V0KCksIG1fcGx1Z2luRGF0YS0+bWltZVBsdWdpbkluZGljZXMoKVtt
X2luZGV4XSk7CisgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQo
KSwgbV9mcmFtZSwgbV9wbHVnaW5EYXRhLT5taW1lUGx1Z2luSW5kaWNlcygpW21faW5kZXhdKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5z
L0RPTU1pbWVUeXBlLmggYi9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaAppbmRleCBjZWZk
YjQ4Li43NGM2MmQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaAor
KysgYi9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaApAQCAtMjAsMjAgKzIwLDIxIEBACiAj
aWZuZGVmIERPTU1pbWVUeXBlX2gKICNkZWZpbmUgRE9NTWltZVR5cGVfaAogCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCisKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLSNpbmNsdWRlICJQbHVnaW5EYXRhLmgi
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERPTVBsdWdpbjsKIAotY2xhc3MgRE9NTWltZVR5cGUgOiBwdWJsaWMgUmVmQ291bnRlZDxET01N
aW1lVHlwZT4geworY2xhc3MgRE9NTWltZVR5cGUgOiBwdWJsaWMgUmVmQ291bnRlZDxET01NaW1l
VHlwZT4sIHByaXZhdGUgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gY3JlYXRlKFBhc3NSZWZQdHI8UGx1Z2luRGF0
YT4gcGx1Z2luRGF0YSwgdW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01N
aW1lVHlwZShwbHVnaW5EYXRhLCBpbmRleCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
TWltZVR5cGU+IGNyZWF0ZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+IHBsdWdpbkRhdGEsIEZyYW1l
KiBmcmFtZSwgdW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01NaW1lVHlw
ZShwbHVnaW5EYXRhLCBmcmFtZSwgaW5kZXgpKTsgfQogICAgIH5ET01NaW1lVHlwZSgpOwogCiAg
ICAgY29uc3QgU3RyaW5nICZ0eXBlKCkgY29uc3Q7CkBAIC00MSwxMSArNDIsMTUgQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyAmZGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PERPTVBsdWdpbj4gZW5hYmxlZFBsdWdpbigpIGNvbnN0OwogCisgICAgLy8gRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIGZyYW1lRGVzdHJveWVkKCkgeyBtX2ZyYW1l
ID0gMDsgfQorCiBwcml2YXRlOgogICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWVDbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRhdGEtPm1pbWVzKClbbV9pbmRleF07IH0KICAg
ICAKLSAgICBET01NaW1lVHlwZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+LCB1bnNpZ25lZCBpbmRl
eCk7CisgICAgRE9NTWltZVR5cGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiwgRnJhbWUqLCB1bnNp
Z25lZCBpbmRleCk7CiAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKKyAgICBG
cmFtZSogbV9mcmFtZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuY3BwCmluZGV4IDhjODFiYjcuLjgyZDQwMDYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMv
RE9NTWltZVR5cGVBcnJheS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxET01NaW1l
VHlwZT4gRE9NTWltZVR5cGVBcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICBjb25zdCBW
ZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBpZiAoaW5k
ZXggPj0gbWltZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gRE9NTWlt
ZVR5cGU6OmNyZWF0ZShkYXRhLCBpbmRleCkuZ2V0KCk7CisgICAgcmV0dXJuIERPTU1pbWVUeXBl
OjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaW5kZXgpLmdldCgpOwogfQogCiBib29sIERPTU1pbWVU
eXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5
TmFtZSkKQEAgLTc3LDcgKzc3LDcgQEAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gRE9NTWltZVR5
cGVBcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHkKICAgICBjb25z
dCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1p
bWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVU
eXBlOjpjcmVhdGUoZGF0YSwgaSkuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gRE9NTWltZVR5
cGU6OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpKS5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcCBiL1dlYkNvcmUv
cGx1Z2lucy9ET01QbHVnaW4uY3BwCmluZGV4IGFjNGZkMDMuLjhkZGI1MDcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW4uY3BwCkBAIC0yNSwxNCArMjUsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
T01QbHVnaW46OkRPTVBsdWdpbihQbHVnaW5EYXRhKiBwbHVnaW5EYXRhLCB1bnNpZ25lZCBpbmRl
eCkKK0RPTVBsdWdpbjo6RE9NUGx1Z2luKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEsIEZyYW1lKiBm
cmFtZSwgdW5zaWduZWQgaW5kZXgpCiAgICAgOiBtX3BsdWdpbkRhdGEocGx1Z2luRGF0YSkKKyAg
ICAsIG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2luZGV4KGluZGV4KQogeworICAgIGlmIChtX2Zy
YW1lKQorICAgICAgICBtX2ZyYW1lLT5hZGREZXN0cnVjdGlvbk9ic2VydmVyKHRoaXMpOwogfQog
CiBET01QbHVnaW46On5ET01QbHVnaW4oKQogeworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBt
X2ZyYW1lLT5yZW1vdmVEZXN0cnVjdGlvbk9ic2VydmVyKHRoaXMpOwogfQogCiBTdHJpbmcgRE9N
UGx1Z2luOjpuYW1lKCkgY29uc3QKQEAgLTY1LDcgKzcwLDcgQEAgUGFzc1JlZlB0cjxET01NaW1l
VHlwZT4gRE9NUGx1Z2luOjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAgIGNvbnN0IFZlY3RvcjxN
aW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1l
c1tpXSA9PSBtaW1lICYmIG1fcGx1Z2luRGF0YS0+bWltZVBsdWdpbkluZGljZXMoKVtpXSA9PSBt
X2luZGV4KQotICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5E
YXRhLmdldCgpLCBpKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3Jl
YXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbV9mcmFtZSwgaSkuZ2V0KCk7CiAgICAgfQogICAgIHJl
dHVybiAwOwogfQpAQCAtODQsNyArODksNyBAQCBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01Q
bHVnaW46Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICBj
b25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzID0gbV9wbHVnaW5EYXRhLT5taW1lcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkKICAgICAg
ICAgaWYgKG1pbWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJu
IERPTU1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBpKS5nZXQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbV9m
cmFtZSwgaSkuZ2V0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGx1Z2lucy9ET01QbHVnaW4uaCBiL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAppbmRleCA5
NzAwYWI1Li5mMzA1ZWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgK
KysrIGIvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oCkBAIC0zMCw5ICszMCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsdWdpbjsKIGNsYXNzIFBsdWdpbkRhdGE7CiAKLWNsYXNz
IERPTVBsdWdpbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVBsdWdpbj4geworY2xhc3MgRE9NUGx1
Z2luIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NUGx1Z2luPiwgcHJpdmF0ZSBGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVBsdWdpbj4g
Y3JlYXRlKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgRE9NUGx1Z2luKHBsdWdpbkRhdGEsIGluZGV4KSk7IH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxET01QbHVnaW4+IGNyZWF0ZShQbHVnaW5EYXRhKiBwbHVnaW5EYXRhLCBGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NUGx1Z2lu
KHBsdWdpbkRhdGEsIGZyYW1lLCBpbmRleCkpOyB9CiAgICAgfkRPTVBsdWdpbigpOwogCiAgICAg
U3RyaW5nIG5hbWUoKSBjb25zdDsKQEAgLTQ1LDExICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwog
ICAgIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IHByb3BlcnR5TmFtZSk7CiAKKyAgICAvLyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKKyAgICB2
aXJ0dWFsIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSB7IG1fZnJhbWUgPSAwOyB9CisKIHByaXZhdGU6
CiAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1
Z2luRGF0YS0+cGx1Z2lucygpW21faW5kZXhdOyB9CiAKLSAgICBET01QbHVnaW4oUGx1Z2luRGF0
YSosIHVuc2lnbmVkIGluZGV4KTsKKyAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwg
dW5zaWduZWQgaW5kZXgpOwogICAgIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7Cisg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIH07CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMv
RE9NUGx1Z2luQXJyYXkuY3BwCmluZGV4IDM3MTdmMzIuLjc2NmMzZWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL0RP
TVBsdWdpbkFycmF5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERPTVBsdWdpbj4g
RE9NUGx1Z2luQXJyYXk6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGlmIChpbmRleCA+PSBw
bHVnaW5zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIERPTVBsdWdpbjo6
Y3JlYXRlKGRhdGEsIGluZGV4KS5nZXQoKTsKKyAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUo
ZGF0YSwgbV9mcmFtZSwgaW5kZXgpLmdldCgpOwogfQogCiBib29sIERPTVBsdWdpbkFycmF5Ojpj
YW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC03
Nyw3ICs3Nyw3IEBAIFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6bmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lCiAgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChwbHVnaW5zW2ld
Lm5hbWUgPT0gcHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3Jl
YXRlKGRhdGEsIGkpLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRl
KGRhdGEsIG1fZnJhbWUsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhLmNwcAppbmRleCBkMjRkMjM0Li5iOGU3NTFkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEu
Y3BwCkBAIC0zMiw5ICszMiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsdWdpbkRhdGE6
OlBsdWdpbkRhdGEoY29uc3QgUGFnZSogcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQogewotICAg
IGluaXRQbHVnaW5zKCk7CisgICAgaW5pdFBsdWdpbnMocGFnZSk7CiAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFBs
dWdpbkluZm8mIHBsdWdpbiA9IG1fcGx1Z2luc1tpXTsKQEAgLTcxLDExICs3MCwxMSBAQCB2b2lk
IFBsdWdpbkRhdGE6OnJlZnJlc2goKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5T
dHJhdGVneSgpLT5yZWZyZXNoUGx1Z2lucygpOwogfQogCi12b2lkIFBsdWdpbkRhdGE6OmluaXRQ
bHVnaW5zKCkKK3ZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSogcGFnZSkK
IHsKICAgICBBU1NFUlQobV9wbHVnaW5zLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFBsdWdpbkluZm8obV9wYWdlLCBtX3Bs
dWdpbnMpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5nZXRQ
bHVnaW5JbmZvKHBhZ2UsIG1fcGx1Z2lucyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgK
aW5kZXggZjRjYzYyZi4uYzZjZGU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGEuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCkBAIC01MSw5ICs1MSw2
IEBAIHN0cnVjdCBQbHVnaW5JbmZvIHsKIGNsYXNzIFBsdWdpbkRhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxQbHVnaW5EYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2lu
RGF0YT4gY3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVn
aW5EYXRhKHBhZ2UpKTsgfQotIAotICAgIHZvaWQgZGlzY29ubmVjdFBhZ2UoKSB7IG1fcGFnZSA9
IDA7IH0KLSAgICBjb25zdCBQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAK
ICAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMoKSBjb25zdCB7IHJldHVybiBt
X3BsdWdpbnM7IH0KICAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzKCkgY29u
c3QgeyByZXR1cm4gbV9taW1lczsgfQpAQCAtNjYsMTMgKzYzLDExIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBQbHVnaW5EYXRhKGNvbnN0IFBhZ2UqKTsKLSAgICB2b2lkIGluaXRQbHVnaW5z
KCk7CisgICAgdm9pZCBpbml0UGx1Z2lucyhjb25zdCBQYWdlKik7CiAKICAgICBWZWN0b3I8UGx1
Z2luSW5mbz4gbV9wbHVnaW5zOwogICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtX21pbWVzOwog
ICAgIFZlY3RvcjxzaXplX3Q+IG1fbWltZVBsdWdpbkluZGljZXM7Ci0gICAgCi0gICAgY29uc3Qg
UGFnZSogbV9wYWdlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFOb25lLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhTm9uZS5jcHAKaW5kZXgg
M2I5ODM4My4uZWRmZWU1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFO
b25lLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YU5vbmUuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBQbHVnaW5EYXRhOjppbml0
UGx1Z2lucygpCit2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqKQogewog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9t
aXVtLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3Bw
CmluZGV4IDM3OGZjY2IuLmM5MjQwNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9jaHJv
bWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1
bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKIHN0
YXRpYyBQbHVnaW5DYWNoZSBwbHVnaW5DYWNoZTsKIAotdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1
Z2lucygpCit2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqKQogewogICAg
IGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlLnBsdWdpbnMo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwIGIvV2ViQ29yZS9w
bHVnaW5zL2d0ay9QbHVnaW5EYXRhR3RrLmNwcAppbmRleCBhZTRkOThiLi43MDViZjlhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwCisrKyBiL1dlYkNv
cmUvcGx1Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs
dWRlIDxzdGRpby5oPgogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKCkKK3ZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSopCiB7
CiAgICAgUGx1Z2luRGF0YWJhc2UgKmRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdp
bnMoKTsKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBs
dWdpbnMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
IGIvV2ViQ29yZS9wbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKaW5kZXggYTU5NWM4Mi4uMGVi
ODkwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKKysr
IGIvV2ViQ29yZS9wbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkK
K3ZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSopCiB7CiAgICAgUGx1Z2lu
RGF0YWJhc2UqIGRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKTsKICAgICBj
b25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>