<?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>39877</bug_id>
          
          <creation_ts>2010-05-28 06:57:35 -0700</creation_ts>
          <short_desc>[Chromium] get rid of named interceptor on HTMLDocument and introduce/remove accessors when named items get deleted/removed</short_desc>
          <delta_ts>2010-06-04 03:22:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>39990</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="anton muhin">antonm</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231683</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 06:57:35 -0700</bug_when>
    <thetext>[Chromium] get rid of named interceptor on HTMLDocument and introduce/remove accessors when named items get deleted/removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231691</commentid>
    <comment_count>1</comment_count>
      <attachid>57326</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 07:07:27 -0700</bug_when>
    <thetext>Created attachment 57326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231708</commentid>
    <comment_count>2</comment_count>
      <attachid>57330</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 07:41:49 -0700</bug_when>
    <thetext>Created attachment 57330
Another upload to trigger build bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231719</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 08:34:35 -0700</bug_when>
    <thetext>Attachment 57330 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2600031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231726</commentid>
    <comment_count>4</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 08:43:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 57330 [details] did not build on chromium:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/2600031

This is a lie :)  V8 has been already rolled, but probably lags on bbs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231765</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-28 10:18:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Attachment 57330 [details] [details] did not build on chromium:
&gt; &gt; Build output: http://webkit-commit-queue.appspot.com/results/2600031
&gt; 
&gt; This is a lie :)  V8 has been already rolled, but probably lags on bbs.

That is a lie. This change does break the webkit build of chromium. :) You need to change the chromium deps file in webkit (WebKit/chromium/DEPS) to point to a newer version of the chromium repository and that will pick up the new revision of v8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231766</commentid>
    <comment_count>6</comment_count>
      <attachid>57330</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-28 10:18:34 -0700</bug_when>
    <thetext>Comment on attachment 57330
Another upload to trigger build bots

Busted build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231768</commentid>
    <comment_count>7</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 10:21:59 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 57330 [details])
&gt; Busted build.

David, please, see comment 5 (https://bugs.webkit.org/show_bug.cgi?id=39877#c5): bbs haven&apos;t rolled v8 yet, while it&apos;s already in Chromium&apos;s trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231769</commentid>
    <comment_count>8</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 10:23:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 57330 [details] [details])
&gt; &gt; Busted build.
&gt; 
&gt; David, please, see comment 5 (https://bugs.webkit.org/show_bug.cgi?id=39877#c5): bbs haven&apos;t rolled v8 yet, while it&apos;s already in Chromium&apos;s trunk.

Sorry, I pointed out your comment to you which was stupid, sorry again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231770</commentid>
    <comment_count>9</comment_count>
      <attachid>57340</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 10:25:44 -0700</bug_when>
    <thetext>Created attachment 57340
With Chromium rolled forward</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231772</commentid>
    <comment_count>10</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 10:26:51 -0700</bug_when>
    <thetext>New patch (with Chromium rolled forward) uploaded.  Should I make a separate patch out of this Chromium&apos;s rolling?  What&apos;s the procedure of Chromium-in-WebKit rolling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231773</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-28 10:28:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; New patch (with Chromium rolled forward) uploaded.  Should I make a separate patch out of this Chromium&apos;s rolling?  What&apos;s the procedure of Chromium-in-WebKit rolling?

So far I think we roll it with the change that requires it (which helps their patch to build also!), so this is great.
(In general, I don&apos;t think it gets rolled unless someone needs it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231776</commentid>
    <comment_count>12</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 10:30:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; New patch (with Chromium rolled forward) uploaded.  Should I make a separate patch out of this Chromium&apos;s rolling?  What&apos;s the procedure of Chromium-in-WebKit rolling?
&gt; 
&gt; So far I think we roll it with the change that requires it (which helps their patch to build also!), so this is great.
&gt; (In general, I don&apos;t think it gets rolled unless someone needs it.)

I see, thanks a lot for clarifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231789</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-28 10:49:52 -0700</bug_when>
    <thetext>The EWS bot isn&apos;t smart enough to handle changes to DEPS.  It&apos;s something we should fix eventually.  Sorry for the inconvenience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231797</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 11:08:00 -0700</bug_when>
    <thetext>Attachment 57340 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2590045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231818</commentid>
    <comment_count>15</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 11:29:00 -0700</bug_when>
    <thetext>I need your assistance here.

I thought that my change to DEPS is enough as V8 was rolled before this revision (see https://bugs.webkit.org/show_bug.cgi?id=39877#c5).

I doubled checked that this version includes change I depend on.

Was my change to DEPS enough?  Is there a way to find out at which revision v8 on bb is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231822</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-28 11:33:13 -0700</bug_when>
    <thetext>From http://trac.webkit.org/browser/trunk/WebKit/chromium/DEPS#L73 it seems we grab the V8 version from the Chromium DEPS file at this rev: http://trac.webkit.org/browser/trunk/WebKit/chromium/DEPS#L35

Maybe we need to bump that number to get the updated V8 number?  (The EWS bot is too dumb to understand that, but Levin is probably smart enough to. :) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231823</commentid>
    <comment_count>17</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 11:35:38 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; From http://trac.webkit.org/browser/trunk/WebKit/chromium/DEPS#L73 it seems we grab the V8 version from the Chromium DEPS file at this rev: http://trac.webkit.org/browser/trunk/WebKit/chromium/DEPS#L35
&gt; 
&gt; Maybe we need to bump that number to get the updated V8 number?  (The EWS bot is too dumb to understand that, but Levin is probably smart enough to. :) )

Which number?  Relevant part apparently looks like:


 72   # v8 javascript engine
 73   &apos;v8&apos;: From(&apos;chromium_deps&apos;, &apos;src/v8&apos;),
 74 

I could put the right number here, but will it be a correct thing to do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231835</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-28 11:46:22 -0700</bug_when>
    <thetext>&gt; Which number?  Relevant part apparently looks like:

The number on this line:

http://trac.webkit.org/browser/trunk/WebKit/chromium/DEPS#L35</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231843</commentid>
    <comment_count>19</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-28 11:49:13 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Which number?  Relevant part apparently looks like:
&gt; 
&gt; The number on this line:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/WebKit/chromium/DEPS#L35

I think that&apos;s exactly the line I change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231852</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-28 11:55:53 -0700</bug_when>
    <thetext>Ah, I see.  Yeah, the bot just doesn&apos;t understand changes to DEPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231865</commentid>
    <comment_count>21</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-28 12:21:25 -0700</bug_when>
    <thetext>Adding Nate as an attempt to get him to review it. (I only wanted to get the DEPS change in here.)

Passing comment:
Maybe this
     if (document-&gt;isHTMLDocument())
         ASSERT(V8Document::toNative(v8::Handle&lt;v8::Object&gt;::Cast(wrapper-&gt;GetPrototype())) == document);

should be
         ASSERT(!document-&gt;isHTMLDocument() || V8Document::toNative(v8::Handle&lt;v8::Object&gt;::Cast(wrapper-&gt;GetPrototype())) == document);

to ensure that no code is generated for it in !debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231878</commentid>
    <comment_count>22</comment_count>
      <attachid>57340</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-05-28 12:40:56 -0700</bug_when>
    <thetext>Comment on attachment 57340
With Chromium rolled forward

r+ with nits.

&gt; +    // TODO(antonm): consider passing AtomicStringImpl directly.

FIXME instead of TODO.

&gt; +    // Just emulate a normal JS behaviour---install a property on this.
&gt; +    // Potential problem---something with the setter below---let&apos;s hope that&apos;s not the case.
&gt; +    info.This()-&gt;ForceSet(name, value);

This comment confuses me a little. Is the potential problem that we might have already set
another value to this name? Should we have an ASSERT or error handling? I just get nervous
when I see a comment that includes the phrase &quot;let&apos;s hope&quot; :)

&gt; -    wrapper-&gt;SetInternalField(V8HTMLDocument::markerIndex, marker);
&gt; -    wrapper-&gt;SetInternalField(V8HTMLDocument::shadowIndex, marker);

I think markerIndex and shadowIndex are now unused, so they should be removed from
GetInternalFields() in CodeGeneratorV8.pm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232410</commentid>
    <comment_count>23</comment_count>
      <attachid>57475</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-31 09:08:50 -0700</bug_when>
    <thetext>Created attachment 57475
Addressing comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232412</commentid>
    <comment_count>24</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-05-31 09:11:33 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=57475) [details]
&gt; Addressing comments

David and Nate,

thanks a lot for review.  Hopefully, I&apos;ve addressed all the issues.

And sorry I&apos;ve uploaded new version with r?---I&apos;d like to have another run though build bots.

If you could quickly check it and r+ it, that&apos;d be most appreciated.  Otherwise I&apos;d probably upload it with reviewed filled and cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232418</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 09:30:45 -0700</bug_when>
    <thetext>Attachment 57475 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2794019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232672</commentid>
    <comment_count>26</comment_count>
      <attachid>57528</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-06-01 04:10:13 -0700</bug_when>
    <thetext>Created attachment 57528
For cq+ with reviewed by</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232676</commentid>
    <comment_count>27</comment_count>
      <attachid>57528</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-01 04:31:06 -0700</bug_when>
    <thetext>Comment on attachment 57528
For cq+ with reviewed by

Clearing flags on attachment: 57528

Committed r60470: &lt;http://trac.webkit.org/changeset/60470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232677</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-01 04:31:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232864</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-01 11:26:43 -0700</bug_when>
    <thetext>Reopening since this was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233792</commentid>
    <comment_count>30</comment_count>
      <attachid>57780</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-06-03 09:31:43 -0700</bug_when>
    <thetext>Created attachment 57780
To run through build bots another time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234135</commentid>
    <comment_count>31</comment_count>
      <attachid>57780</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-04 02:58:18 -0700</bug_when>
    <thetext>Comment on attachment 57780
To run through build bots another time

Clearing flags on attachment: 57780

Committed r60670: &lt;http://trac.webkit.org/changeset/60670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234136</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-04 02:58:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234142</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-04 03:22:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60670 might have broken GTK Linux 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60669
http://trac.webkit.org/changeset/60670</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57326</attachid>
            <date>2010-05-28 07:07:27 -0700</date>
            <delta_ts>2010-05-28 07:41:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39877-20100528180725.patch</filename>
            <type>text/plain</type>
            <size>16016</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uMTExZGQ2Yzc2OTNlN2Ix
OTQyNTg0MDhhZjg3MGRhOGJjNGM3MzJhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNS0yOCAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gZ2V0IHJpZCBvZiBuYW1lZCBpbnRl
cmNlcHRvciBvbiBIVE1MRG9jdW1lbnQgYW5kIGludHJvZHVjZS9yZW1vdmUgYWNjZXNzb3JzIHdo
ZW4gbmFtZWQgaXRlbXMgZ2V0IGRlbGV0ZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NzcKKworICAgICAgICBUaGlzIHBhdGNoIG1h
a2VzIGNhbGxiYWNrcyBpbnZva2VkIG9uIG5hbWVkIGl0ZW1zIGFkZGl0aW9uL3JlbW92YWwKKyAg
ICAgICAgaW5zdGFsbCBBUEkgYWNjZXNzb3JzIGFuZCB0aHVzIHRoZXJlIGlzIG5vIG1vcmUgbmVl
ZCBpbgorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBpbnRlcmNlcHRvcnMgb24gSFRNTERvY3Vt
ZW50IHdoaWNoCisgICAgICAgIHNwZWVkcyB1cCBpbnZvY2F0aW9uIG9mIG1ldGhvZHMgb24gZG9j
dW1lbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tEb2N1
bWVudFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dXBkYXRl
RG9jdW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50
aWF0ZVY4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNo
YWRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTAtMDUtMjggIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
IGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjOTNj
MjVhYWZjNDkzM2YzNzIzN2RjODg3NzQ2OTQ2Mjc1OGY4YWI2Li4xY2M1MDBjZjYxMWFkYTQ3OGRi
MjQ2MDM5NjRmODA3Y2MyMGU4ZjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTI3Myw2ICsyNzMsMTMgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBXcmFw
SW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwp
OworICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdldE5hbWVkUHJvcGVydHkoSFRNTERv
Y3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KTsKK0VORAorICAg
IH0KKwogICAgIG15IEBlbmFibGVkQXRSdW50aW1lOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzk5LDcgKzQwNiw2IEBAIEVORAogbXkgJWluZGV4ZXJT
cGVjaWFsQ2FzZXMgPSAoCiAgICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVt
ZW50IiA9PiAxLAotICAgICJIVE1MRG9jdW1lbnQiID0+IDEsCiAgICAgIkhUTUxFbWJlZEVsZW1l
bnQiID0+IDEsCiAgICAgIkhUTUxPYmplY3RFbGVtZW50IiA9PiAxCiApOwpAQCAtNDI2LDYgKzQz
MiwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29y
cwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQiIHx8ICRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhU
TUxFbWJlZEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVudCIp
IHsKICAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CisgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgICRoYXNDdXN0b21OYW1l
ZEdldHRlciA9IDA7CisgICAgICAgICRoYXNDdXN0b21JbmRleGVkR2V0dGVyID0gMDsKKyAgICB9
CiAgICAgbXkgJGlzSW5kZXhlclNwZWNpYWxDYXNlID0gZXhpc3RzICRpbmRleGVyU3BlY2lhbENh
c2VzeyRpbnRlcmZhY2VOYW1lfTsKIAogICAgIGlmICgkaGFzQ3VzdG9tSW5kZXhlZEdldHRlciB8
fCAkaXNJbmRleGVyU3BlY2lhbENhc2UpIHsKQEAgLTQ1NCw3ICs0NjQsNyBAQCBFTkQKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORAogICAgIH0KLSAgICBpZiAoJGhhc0N1c3RvbURlbGV0
ZXJzIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgaWYgKCRoYXND
dXN0b21EZWxldGVycykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IG5hbWVkUHJvcGVydHlEZWxldGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsK
IEVORApAQCAtMTUwNCw2ICsxNTE0LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFt
ZWRQcm9wZXJ0eUdldHRlcgogICAgICAgICAkaGFzQ3VzdG9tR2V0dGVyID0gMTsKICAgICB9CiAK
KyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGhh
c0N1c3RvbUdldHRlciA9IDA7CisgICAgfQorCiAgICAgbXkgJGhhc0dldHRlciA9ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkaGFzQ3VzdG9tR2V0
dGVyIHx8ICRuYW1lZFByb3BlcnR5R2V0dGVyOwogICAgIGlmICghJGhhc0dldHRlcikgewogICAg
ICAgICByZXR1cm47CkBAIC0xNTE5LDggKzE1MzMsNyBAQCBFTkQKICAgICB9CiAKICAgICBteSAk
aGFzU2V0dGVyID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1
dEZ1bmN0aW9uIn07Ci0gICAgIyBGSVhNRTogVHJ5IHRvIHJlbW92ZSBoYXJkLWNvZGVkIEhUTUxE
b2N1bWVudCByZWZlcmVuY2UgYnkgYWxpZ25pbmcgaGFuZGxpbmcgb2YgZG9jdW1lbnQuYWxsIHdp
dGggSlNDIGJpbmRpbmdzLgotICAgIG15ICRoYXNEZWxldGVyID0gJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVsZXRlUHJvcGVydHkifSB8fCAkaW50ZXJmYWNlTmFtZSBl
cSAiSFRNTERvY3VtZW50IjsKKyAgICBteSAkaGFzRGVsZXRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAgICAgbXkgJGhhc0VudW1l
cmF0b3IgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0
eU5hbWVzIn07CiAgICAgbXkgJHNldE9uID0gIkluc3RhbmNlIjsKIApAQCAtMjAwMyw2ICsyMDE2
LDExIEBAIEVORAogICAgIGluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdp
bmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hl
Y2ssIHY4OjpFeHRlcm5hbDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pLCBmYWxzZSk7CiBFTkQK
ICAgICB9CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90
eXBlKHRydWUpOworRU5ECisgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRp
b24iKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDhhOWUyNTdjODQ4YjQwYmMyZjAxZWYw
NmZkNjAyMTJlYzllN2RmNjUuLjY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4
MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDU2LDEw
ICs0NTYsMTIgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiAKIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5u
YW1lZEl0ZW1BZGRlZChkb2MsIG5hbWUpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Om5h
bWVkSXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1vdmVkKGRvYywg
bmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGUzNzA0NjlmZDA2NWNjYzNkM2IzYTBkYTI5Yzc3Yjhm
MDg0YzZiY2YuLjNhMmE3MzBiN2JjYTQ4YzcyZjBmNTVkNzAzZGZkZjcyMDg1ZjM3MmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1
ZGUgIlY4R0NGb3JDb250ZXh0RGlzcG9zZS5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhpc3Rvcnku
aCIKICNpbmNsdWRlICJWOExvY2F0aW9uLmgiCkBAIC00MDIsNiArNDAzLDEzIEBAIHZvaWQgVjhE
T01XaW5kb3dTaGVsbDo6Y2xlYXJEb2N1bWVudFdyYXBwZXIoKQogICAgIH0KIH0KIAorc3RhdGlj
IHZvaWQgY2hlY2tEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKFY4RG9jdW1lbnQ6OnRvTmF0aXZl
KHdyYXBwZXIpID09IGRvY3VtZW50KTsKKyAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpCisgICAgICAgIEFTU0VSVChWOERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHdyYXBwZXItPkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpOworfQor
CiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZURvY3VtZW50V3JhcHBlckNhY2hlKCkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CkBAIC00MjAsNiArNDI4LDEwIEBAIHZv
aWQgVjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnRXcmFwcGVyQ2FjaGUoKQogICAgIH0K
IAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb2N1bWVudFdyYXBwZXIgPSB0b1Y4KG1fZnJh
bWUtPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChkb2N1bWVudFdyYXBwZXIgPT0gbV9kb2N1bWVu
dCB8fCBtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgaWYgKG1fZG9jdW1lbnQuSXNFbXB0eSgp
KQorICAgICAgICB1cGRhdGVEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChkb2N1bWVudFdyYXBwZXIpKTsKKyAgICBjaGVja0RvY3VtZW50V3JhcHBlcihtX2RvY3Vt
ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKIAogICAgIC8vIElmIGluc3RhbnRpYXRpb24gb2Yg
dGhlIGRvY3VtZW50IHdyYXBwZXIgZmFpbHMsIGNsZWFyIHRoZSBjYWNoZQogICAgIC8vIGFuZCBs
ZXQgdGhlIERPTVdpbmRvdyBhY2Nlc3NvciBoYW5kbGUgYWNjZXNzIHRvIHRoZSBkb2N1bWVudC4K
QEAgLTQ5Nyw2ICs1MDksMzkgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjp1cGRhdGVEb2N1bWVu
dCgpCiAgICAgdXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgLy8gVE9ETyhhbnRvbm0pOiBjb25zaWRlciBwYXNzaW5n
IEF0b21pY1N0cmluZ0ltcGwgZGlyZWN0bHkuCisgICAgQXRvbWljU3RyaW5nIG5hbWUgPSB2OFN0
cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhwcm9wZXJ0eSk7CisgICAgSFRNTERvY3VtZW50KiBo
dG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgQVNTRVJUKGh0bWxEb2N1bWVudCk7CisgICAgcmV0dXJuIFY4SFRNTERvY3VtZW50OjpHZXRO
YW1lZFByb3BlcnR5KGh0bWxEb2N1bWVudCwgbmFtZSk7Cit9CisKK3ZvaWQgVjhET01XaW5kb3dT
aGVsbDo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbml0Q29udGV4dElmTmVlZGVkKCk7CisKKyAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSht
X2NvbnRleHQpOworCisgICAgQVNTRVJUKCFtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgY2hl
Y2tEb2N1bWVudFdyYXBwZXIobV9kb2N1bWVudCwgZG9jKTsKKyAgICBtX2RvY3VtZW50LT5TZXRB
Y2Nlc3Nvcih2OFN0cmluZyhuYW1lKSwgZ2V0dGVyKTsKK30KKwordm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCogZG9jLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCit7CisgICAgaW5pdENvbnRleHRJZk5lZWRlZCgpOworCisgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
bV9jb250ZXh0KTsKKworICAgIEFTU0VSVCghbV9kb2N1bWVudC5Jc0VtcHR5KCkpOworICAgIGNo
ZWNrRG9jdW1lbnRXcmFwcGVyKG1fZG9jdW1lbnQsIGRvYyk7CisgICAgbV9kb2N1bWVudC0+RGVs
ZXRlKHY4U3RyaW5nKG5hbWUpKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxsOjp1cGRhdGVT
ZWN1cml0eU9yaWdpbigpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCBmNGVhZmYyZWU2NTE3NTM0NGMyNzFiOTkz
NWQ4ZjJmN2E5NjEyNjAyLi4zY2YxYjUyZmE5NjNjODNmMGRjOTJhMGVkZTgyNjYyNmJmZTNmMWFh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtMzEsNiArMzEsNyBA
QAogI2lmbmRlZiBWOERPTVdpbmRvd1NoZWxsX2gKICNkZWZpbmUgVjhET01XaW5kb3dTaGVsbF9o
CiAKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8u
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CkBAIC00MSw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93
OwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBTdHJpbmc7CiAKIC8v
IFY4V2luZG93U2hlbGwgcmVwcmVzZW50cyBhbGwgdGhlIHBlci1nbG9iYWwgb2JqZWN0IHN0YXRl
IGZvciBhIEZyYW1lIHRoYXQKQEAgLTU0LDYgKzU2LDkgQEAgcHVibGljOgogICAgIC8vIFVwZGF0
ZSBkb2N1bWVudCBvYmplY3Qgb2YgdGhlIGZyYW1lLgogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQo
KTsKIAorICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgdm9pZCBuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYpOworCiAgICAgLy8gVXBkYXRlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2Yg
YSBkb2N1bWVudAogICAgIC8vIChlLmcuLCBhZnRlciBzZXR0aW5nIGRvY291bWVudC5kb21haW4p
LgogICAgIHZvaWQgdXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAppbmRleCBmODQyNmRjNzE0ZDRiMzU1YmIxZTFjMDAyNGJkMDhkYzFjNmM5NmE0
Li41YWVjMGMzMzRjN2QxZjE2OGVhNTk2NjRjNDMzMzljYWQyNDkzZjQ0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yODYsNiArMjg2LDggQEAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChWOFByb3h5KiBwcm94eSwg
V3JhcHBlclQKICAgICBpZiAoIWluc3RhbmNlLklzRW1wdHkoKSkgewogICAgICAgICAvLyBBdm9p
ZCBzZXR0aW5nIHRoZSBET00gd3JhcHBlciBmb3IgZmFpbGVkIGFsbG9jYXRpb25zLgogICAgICAg
ICBzZXRET01XcmFwcGVyKGluc3RhbmNlLCB0eXBlLCBpbXBsKTsKKyAgICAgICAgaWYgKHR5cGUg
PT0gJlY4SFRNTERvY3VtZW50OjppbmZvKQorICAgICAgICAgICAgaW5zdGFuY2UgPSBWOEhUTUxE
b2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KGluc3RhbmNlLCBzdGF0aWNfY2FzdDxOb2RlKj4o
aW1wbCkpOwogICAgIH0KICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggODZmMmVi
NTMyMTIzM2JlNzE5Njg1YjVhY2E1MGU4OTA4NDcyNDZmMy4uZDI5ZjYyMGRlMzZkMzY4ZjRiZGZk
NGQwYTdhOGNiZjcwYzQ4MmExMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDksNDggKzQ5LDM3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhIVE1MRG9jdW1lbnQ6
Om5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3Vt
ZW50OjpXcmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5v
ZGUqIGltcGwpCiB7Ci0gICAgLy8gT25seSBoYW5kbGUgZG9jdW1lbnQuYWxsLiAgSW5zZXJ0IHRo
ZSBtYXJrZXIgb2JqZWN0IGludG8gdGhlCi0gICAgLy8gc2hhZG93IGludGVybmFsIGZpZWxkIHRv
IHNpZ25hbCB0aGF0IGRvY3VtZW50LmFsbCBpcyBubyBsb25nZXIKLSAgICAvLyBzaGFkb3dlZC4K
LSAgICBBdG9taWNTdHJpbmcga2V5ID0gdjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFt
ZSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbCwgKCJh
bGwiKSk7Ci0gICAgaWYgKGtleSAhPSBhbGwpCi0gICAgICAgIHJldHVybiBkZWxldGlvbk5vdEhh
bmRsZWRCeUludGVyY2VwdG9yKCk7Ci0KLSAgICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50ZXJu
YWxGaWVsZENvdW50KCkgPT0gVjhIVE1MRG9jdW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJu
YWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOwotICAgIGluZm8uSG9sZGVyKCkt
PlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCBtYXJrZXIpOwot
ICAgIHJldHVybiB2ODo6VHJ1ZSgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
RG9jdW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRN
TERvY3VtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKLSAgICBBdG9taWNTdHJpbmcga2V5ID0g
djhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSk7Ci0KLSAgICAvLyBTcGVjaWFsIGNh
c2UgZm9yIGRvY3VtZW50LmFsbC4gIElmIHRoZSB2YWx1ZSBpbiB0aGUgc2hhZG93Ci0gICAgLy8g
aW50ZXJuYWwgZmllbGQgaXMgbm90IHRoZSBtYXJrZXIgb2JqZWN0LCB0aGVuIGRvY3VtZW50LmFs
bCBoYXMKLSAgICAvLyBiZWVuIHRlbXBvcmFyaWx5IHNoYWRvd2VkIGFuZCB3ZSByZXR1cm4gdGhl
IHZhbHVlLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGws
ICgiYWxsIikpOwotICAgIGlmIChrZXkgPT0gYWxsKSB7Ci0gICAgICAgIEFTU0VSVChpbmZvLkhv
bGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxG
aWVsZENvdW50KTsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5I
b2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOwot
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldElu
dGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4KTsKLSAgICAgICAgaWYgKG1h
cmtlciAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4sIHNoYWRvd0NvbnN0cnVjdG9y
LCAoKSk7CisgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkgeworICAgICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYWRvd1RlbXBsYXRlID0gdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldygpOworICAgICAgICBpZiAoc2hhZG93VGVtcGxhdGUuSXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgICAgICBz
aGFkb3dUZW1wbGF0ZS0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTERvY3VtZW50
IikpOworICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+SW5oZXJpdChWOEhUTUxEb2N1bWVudDo6R2V0
VGVtcGxhdGUoKSk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5JbnN0YW5jZVRlbXBsYXRlKCkt
PlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKKyAgICAgICAgc2hhZG93Q29uc3RydWN0b3IgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b24+OjpOZXcoc2hhZG93VGVtcGxhdGUtPkdldEZ1bmN0aW9uKCkpOworICAgICAgICBpZiAoc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PigpOwogICAgIH0KIAotICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0g
VjhIVE1MRG9jdW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEFTU0VSVCghc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hh
ZG93ID0gc2hhZG93Q29uc3RydWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgaWYgKHNoYWRvdy5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBW
OERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8s
IGltcGwpOworICAgIHNoYWRvdy0+U2V0UHJvdG90eXBlKHdyYXBwZXIpOworICAgIHJldHVybiBz
aGFkb3c7Cit9CiAKLSAgICAvLyBGYXN0IGNhc2UgZm9yIG5hbWVkIGVsZW1lbnRzIHRoYXQgYXJl
IG5vdCB0aGVyZS4KLSAgICBpZiAoIWh0bWxEb2N1bWVudC0+aGFzTmFtZWRJdGVtKGtleS5pbXBs
KCkpICYmICFodG1sRG9jdW1lbnQtPmhhc0V4dHJhTmFtZWRJdGVtKGtleS5pbXBsKCkpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoSFRNTERvY3VtZW50KiBodG1sRG9j
dW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQoreworICAgIEFTU0VSVChodG1sRG9jdW1l
bnQtPmhhc05hbWVkSXRlbShrZXkuaW1wbCgpKSB8fCBodG1sRG9jdW1lbnQtPmhhc0V4dHJhTmFt
ZWRJdGVtKGtleS5pbXBsKCkpKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaXRlbXMg
PSBodG1sRG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhrZXkpOwogICAgIGlmICghaXRlbXMt
Pmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgaWYgKGl0ZW1zLT5s
ZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+Zmlyc3RJdGVtKCk7
CkBAIC0xMDQsMTMgKzkzLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiB0
b1Y4KGl0ZW1zLnJlbGVhc2UoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxE
b2N1bWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvICZpbmZvKSAKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQu
SW5kZXhlZFByb3BlcnR5R2V0dGVyIik7Ci0gICAgdjg6OkxvY2FsPHY4OjpJbnRlZ2VyPiBpbmRl
eFY4ID0gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25lZChpbmRleCk7Ci0gICAgcmV0dXJuIG5h
bWVkUHJvcGVydHlHZXR0ZXIoaW5kZXhWOC0+VG9TdHJpbmcoKSwgaW5mbyk7Ci19Ci0KIC8vIEhU
TUxEb2N1bWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIENvbmNhdGVuYXRlcyAiYXJncyIgdG8gYSBzdHJpbmcu
IElmIGFyZ3MgaXMgZW1wdHksIHJldHVybnMgZW1wdHkgc3RyaW5nLgpAQCAtMTkzLDEwICsxNzUs
OSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiB2b2lkIFY4SFRNTERvY3VtZW50OjphbGxB
Y2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uSFRNTERvY3VtZW50LmFsbC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKLSAgICBpbmZvLkhvbGRlcigpLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50Ojpz
aGFkb3dJbmRleCwgdmFsdWUpOworICAgIC8vIEp1c3QgZW11bGF0ZSBhIG5vcm1hbCBKUyBiZWhh
dmlvdXItLS1pbnN0YWxsIGEgcHJvcGVydHkgb24gdGhpcy4KKyAgICAvLyBQb3RlbnRpYWwgcHJv
YmxlbS0tLXNvbWV0aGluZyB3aXRoIHRoZSBzZXR0ZXIgYmVsb3ctLS1sZXQncyBob3BlIHRoYXQn
cyBub3QgdGhlIGNhc2UuCisgICAgaW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUsIHZhbHVlKTsK
IH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCBib29s
IGZvcmNlTmV3T2JqZWN0KQpAQCAtMjEwLDEyICsxOTEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChIVE1MRG9jdW1lbnQqIGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgICAg
IGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGltcGwtPmZyYW1lKCkpKQog
ICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3
cmFwcGVyKTsKICAgICB9Ci0gICAgLy8gQ3JlYXRlIG1hcmtlciBvYmplY3QgYW5kIGluc2VydCBp
dCBpbiB0d28gaW50ZXJuYWwgZmllbGRzLgotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBpbXBsZW1l
bnQgdGVtcG9yYXJ5IHNoYWRvd2luZyBvZiBkb2N1bWVudC5hbGwuCi0gICAgQVNTRVJUKHdyYXBw
ZXItPkludGVybmFsRmllbGRDb3VudCgpID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxk
Q291bnQpOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBtYXJrZXIgPSB2ODo6T2JqZWN0OjpO
ZXcoKTsKLSAgICB3cmFwcGVyLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50OjptYXJr
ZXJJbmRleCwgbWFya2VyKTsKLSAgICB3cmFwcGVyLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERv
Y3VtZW50OjpzaGFkb3dJbmRleCwgbWFya2VyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57330</attachid>
            <date>2010-05-28 07:41:49 -0700</date>
            <delta_ts>2010-05-28 10:25:37 -0700</delta_ts>
            <desc>Another upload to trigger build bots</desc>
            <filename>bug-39877-20100528184147.patch</filename>
            <type>text/plain</type>
            <size>16016</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uMTExZGQ2Yzc2OTNlN2Ix
OTQyNTg0MDhhZjg3MGRhOGJjNGM3MzJhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNS0yOCAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gZ2V0IHJpZCBvZiBuYW1lZCBpbnRl
cmNlcHRvciBvbiBIVE1MRG9jdW1lbnQgYW5kIGludHJvZHVjZS9yZW1vdmUgYWNjZXNzb3JzIHdo
ZW4gbmFtZWQgaXRlbXMgZ2V0IGRlbGV0ZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NzcKKworICAgICAgICBUaGlzIHBhdGNoIG1h
a2VzIGNhbGxiYWNrcyBpbnZva2VkIG9uIG5hbWVkIGl0ZW1zIGFkZGl0aW9uL3JlbW92YWwKKyAg
ICAgICAgaW5zdGFsbCBBUEkgYWNjZXNzb3JzIGFuZCB0aHVzIHRoZXJlIGlzIG5vIG1vcmUgbmVl
ZCBpbgorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBpbnRlcmNlcHRvcnMgb24gSFRNTERvY3Vt
ZW50IHdoaWNoCisgICAgICAgIHNwZWVkcyB1cCBpbnZvY2F0aW9uIG9mIG1ldGhvZHMgb24gZG9j
dW1lbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tEb2N1
bWVudFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dXBkYXRl
RG9jdW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50
aWF0ZVY4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNo
YWRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTAtMDUtMjggIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
IGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjOTNj
MjVhYWZjNDkzM2YzNzIzN2RjODg3NzQ2OTQ2Mjc1OGY4YWI2Li4xY2M1MDBjZjYxMWFkYTQ3OGRi
MjQ2MDM5NjRmODA3Y2MyMGU4ZjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTI3Myw2ICsyNzMsMTMgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBXcmFw
SW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwp
OworICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdldE5hbWVkUHJvcGVydHkoSFRNTERv
Y3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KTsKK0VORAorICAg
IH0KKwogICAgIG15IEBlbmFibGVkQXRSdW50aW1lOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzk5LDcgKzQwNiw2IEBAIEVORAogbXkgJWluZGV4ZXJT
cGVjaWFsQ2FzZXMgPSAoCiAgICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVt
ZW50IiA9PiAxLAotICAgICJIVE1MRG9jdW1lbnQiID0+IDEsCiAgICAgIkhUTUxFbWJlZEVsZW1l
bnQiID0+IDEsCiAgICAgIkhUTUxPYmplY3RFbGVtZW50IiA9PiAxCiApOwpAQCAtNDI2LDYgKzQz
MiwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29y
cwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQiIHx8ICRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhU
TUxFbWJlZEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVudCIp
IHsKICAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CisgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgICRoYXNDdXN0b21OYW1l
ZEdldHRlciA9IDA7CisgICAgICAgICRoYXNDdXN0b21JbmRleGVkR2V0dGVyID0gMDsKKyAgICB9
CiAgICAgbXkgJGlzSW5kZXhlclNwZWNpYWxDYXNlID0gZXhpc3RzICRpbmRleGVyU3BlY2lhbENh
c2VzeyRpbnRlcmZhY2VOYW1lfTsKIAogICAgIGlmICgkaGFzQ3VzdG9tSW5kZXhlZEdldHRlciB8
fCAkaXNJbmRleGVyU3BlY2lhbENhc2UpIHsKQEAgLTQ1NCw3ICs0NjQsNyBAQCBFTkQKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORAogICAgIH0KLSAgICBpZiAoJGhhc0N1c3RvbURlbGV0
ZXJzIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgaWYgKCRoYXND
dXN0b21EZWxldGVycykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IG5hbWVkUHJvcGVydHlEZWxldGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsK
IEVORApAQCAtMTUwNCw2ICsxNTE0LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFt
ZWRQcm9wZXJ0eUdldHRlcgogICAgICAgICAkaGFzQ3VzdG9tR2V0dGVyID0gMTsKICAgICB9CiAK
KyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGhh
c0N1c3RvbUdldHRlciA9IDA7CisgICAgfQorCiAgICAgbXkgJGhhc0dldHRlciA9ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkaGFzQ3VzdG9tR2V0
dGVyIHx8ICRuYW1lZFByb3BlcnR5R2V0dGVyOwogICAgIGlmICghJGhhc0dldHRlcikgewogICAg
ICAgICByZXR1cm47CkBAIC0xNTE5LDggKzE1MzMsNyBAQCBFTkQKICAgICB9CiAKICAgICBteSAk
aGFzU2V0dGVyID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1
dEZ1bmN0aW9uIn07Ci0gICAgIyBGSVhNRTogVHJ5IHRvIHJlbW92ZSBoYXJkLWNvZGVkIEhUTUxE
b2N1bWVudCByZWZlcmVuY2UgYnkgYWxpZ25pbmcgaGFuZGxpbmcgb2YgZG9jdW1lbnQuYWxsIHdp
dGggSlNDIGJpbmRpbmdzLgotICAgIG15ICRoYXNEZWxldGVyID0gJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVsZXRlUHJvcGVydHkifSB8fCAkaW50ZXJmYWNlTmFtZSBl
cSAiSFRNTERvY3VtZW50IjsKKyAgICBteSAkaGFzRGVsZXRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAgICAgbXkgJGhhc0VudW1l
cmF0b3IgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0
eU5hbWVzIn07CiAgICAgbXkgJHNldE9uID0gIkluc3RhbmNlIjsKIApAQCAtMjAwMyw2ICsyMDE2
LDExIEBAIEVORAogICAgIGluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdp
bmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hl
Y2ssIHY4OjpFeHRlcm5hbDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pLCBmYWxzZSk7CiBFTkQK
ICAgICB9CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90
eXBlKHRydWUpOworRU5ECisgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRp
b24iKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDhhOWUyNTdjODQ4YjQwYmMyZjAxZWYw
NmZkNjAyMTJlYzllN2RmNjUuLjY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4
MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDU2LDEw
ICs0NTYsMTIgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiAKIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5u
YW1lZEl0ZW1BZGRlZChkb2MsIG5hbWUpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Om5h
bWVkSXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1vdmVkKGRvYywg
bmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGUzNzA0NjlmZDA2NWNjYzNkM2IzYTBkYTI5Yzc3Yjhm
MDg0YzZiY2YuLjNhMmE3MzBiN2JjYTQ4YzcyZjBmNTVkNzAzZGZkZjcyMDg1ZjM3MmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1
ZGUgIlY4R0NGb3JDb250ZXh0RGlzcG9zZS5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhpc3Rvcnku
aCIKICNpbmNsdWRlICJWOExvY2F0aW9uLmgiCkBAIC00MDIsNiArNDAzLDEzIEBAIHZvaWQgVjhE
T01XaW5kb3dTaGVsbDo6Y2xlYXJEb2N1bWVudFdyYXBwZXIoKQogICAgIH0KIH0KIAorc3RhdGlj
IHZvaWQgY2hlY2tEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKFY4RG9jdW1lbnQ6OnRvTmF0aXZl
KHdyYXBwZXIpID09IGRvY3VtZW50KTsKKyAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpCisgICAgICAgIEFTU0VSVChWOERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHdyYXBwZXItPkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpOworfQor
CiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZURvY3VtZW50V3JhcHBlckNhY2hlKCkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CkBAIC00MjAsNiArNDI4LDEwIEBAIHZv
aWQgVjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnRXcmFwcGVyQ2FjaGUoKQogICAgIH0K
IAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb2N1bWVudFdyYXBwZXIgPSB0b1Y4KG1fZnJh
bWUtPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChkb2N1bWVudFdyYXBwZXIgPT0gbV9kb2N1bWVu
dCB8fCBtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgaWYgKG1fZG9jdW1lbnQuSXNFbXB0eSgp
KQorICAgICAgICB1cGRhdGVEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChkb2N1bWVudFdyYXBwZXIpKTsKKyAgICBjaGVja0RvY3VtZW50V3JhcHBlcihtX2RvY3Vt
ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKIAogICAgIC8vIElmIGluc3RhbnRpYXRpb24gb2Yg
dGhlIGRvY3VtZW50IHdyYXBwZXIgZmFpbHMsIGNsZWFyIHRoZSBjYWNoZQogICAgIC8vIGFuZCBs
ZXQgdGhlIERPTVdpbmRvdyBhY2Nlc3NvciBoYW5kbGUgYWNjZXNzIHRvIHRoZSBkb2N1bWVudC4K
QEAgLTQ5Nyw2ICs1MDksMzkgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjp1cGRhdGVEb2N1bWVu
dCgpCiAgICAgdXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgLy8gVE9ETyhhbnRvbm0pOiBjb25zaWRlciBwYXNzaW5n
IEF0b21pY1N0cmluZ0ltcGwgZGlyZWN0bHkuCisgICAgQXRvbWljU3RyaW5nIG5hbWUgPSB2OFN0
cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhwcm9wZXJ0eSk7CisgICAgSFRNTERvY3VtZW50KiBo
dG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgQVNTRVJUKGh0bWxEb2N1bWVudCk7CisgICAgcmV0dXJuIFY4SFRNTERvY3VtZW50OjpHZXRO
YW1lZFByb3BlcnR5KGh0bWxEb2N1bWVudCwgbmFtZSk7Cit9CisKK3ZvaWQgVjhET01XaW5kb3dT
aGVsbDo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbml0Q29udGV4dElmTmVlZGVkKCk7CisKKyAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSht
X2NvbnRleHQpOworCisgICAgQVNTRVJUKCFtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgY2hl
Y2tEb2N1bWVudFdyYXBwZXIobV9kb2N1bWVudCwgZG9jKTsKKyAgICBtX2RvY3VtZW50LT5TZXRB
Y2Nlc3Nvcih2OFN0cmluZyhuYW1lKSwgZ2V0dGVyKTsKK30KKwordm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCogZG9jLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCit7CisgICAgaW5pdENvbnRleHRJZk5lZWRlZCgpOworCisgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
bV9jb250ZXh0KTsKKworICAgIEFTU0VSVCghbV9kb2N1bWVudC5Jc0VtcHR5KCkpOworICAgIGNo
ZWNrRG9jdW1lbnRXcmFwcGVyKG1fZG9jdW1lbnQsIGRvYyk7CisgICAgbV9kb2N1bWVudC0+RGVs
ZXRlKHY4U3RyaW5nKG5hbWUpKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxsOjp1cGRhdGVT
ZWN1cml0eU9yaWdpbigpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCBmNGVhZmYyZWU2NTE3NTM0NGMyNzFiOTkz
NWQ4ZjJmN2E5NjEyNjAyLi4zY2YxYjUyZmE5NjNjODNmMGRjOTJhMGVkZTgyNjYyNmJmZTNmMWFh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtMzEsNiArMzEsNyBA
QAogI2lmbmRlZiBWOERPTVdpbmRvd1NoZWxsX2gKICNkZWZpbmUgVjhET01XaW5kb3dTaGVsbF9o
CiAKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8u
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CkBAIC00MSw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93
OwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBTdHJpbmc7CiAKIC8v
IFY4V2luZG93U2hlbGwgcmVwcmVzZW50cyBhbGwgdGhlIHBlci1nbG9iYWwgb2JqZWN0IHN0YXRl
IGZvciBhIEZyYW1lIHRoYXQKQEAgLTU0LDYgKzU2LDkgQEAgcHVibGljOgogICAgIC8vIFVwZGF0
ZSBkb2N1bWVudCBvYmplY3Qgb2YgdGhlIGZyYW1lLgogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQo
KTsKIAorICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgdm9pZCBuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYpOworCiAgICAgLy8gVXBkYXRlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2Yg
YSBkb2N1bWVudAogICAgIC8vIChlLmcuLCBhZnRlciBzZXR0aW5nIGRvY291bWVudC5kb21haW4p
LgogICAgIHZvaWQgdXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAppbmRleCBmODQyNmRjNzE0ZDRiMzU1YmIxZTFjMDAyNGJkMDhkYzFjNmM5NmE0
Li41YWVjMGMzMzRjN2QxZjE2OGVhNTk2NjRjNDMzMzljYWQyNDkzZjQ0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yODYsNiArMjg2LDggQEAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChWOFByb3h5KiBwcm94eSwg
V3JhcHBlclQKICAgICBpZiAoIWluc3RhbmNlLklzRW1wdHkoKSkgewogICAgICAgICAvLyBBdm9p
ZCBzZXR0aW5nIHRoZSBET00gd3JhcHBlciBmb3IgZmFpbGVkIGFsbG9jYXRpb25zLgogICAgICAg
ICBzZXRET01XcmFwcGVyKGluc3RhbmNlLCB0eXBlLCBpbXBsKTsKKyAgICAgICAgaWYgKHR5cGUg
PT0gJlY4SFRNTERvY3VtZW50OjppbmZvKQorICAgICAgICAgICAgaW5zdGFuY2UgPSBWOEhUTUxE
b2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KGluc3RhbmNlLCBzdGF0aWNfY2FzdDxOb2RlKj4o
aW1wbCkpOwogICAgIH0KICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggODZmMmVi
NTMyMTIzM2JlNzE5Njg1YjVhY2E1MGU4OTA4NDcyNDZmMy4uZDI5ZjYyMGRlMzZkMzY4ZjRiZGZk
NGQwYTdhOGNiZjcwYzQ4MmExMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDksNDggKzQ5LDM3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhIVE1MRG9jdW1lbnQ6
Om5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3Vt
ZW50OjpXcmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5v
ZGUqIGltcGwpCiB7Ci0gICAgLy8gT25seSBoYW5kbGUgZG9jdW1lbnQuYWxsLiAgSW5zZXJ0IHRo
ZSBtYXJrZXIgb2JqZWN0IGludG8gdGhlCi0gICAgLy8gc2hhZG93IGludGVybmFsIGZpZWxkIHRv
IHNpZ25hbCB0aGF0IGRvY3VtZW50LmFsbCBpcyBubyBsb25nZXIKLSAgICAvLyBzaGFkb3dlZC4K
LSAgICBBdG9taWNTdHJpbmcga2V5ID0gdjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFt
ZSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbCwgKCJh
bGwiKSk7Ci0gICAgaWYgKGtleSAhPSBhbGwpCi0gICAgICAgIHJldHVybiBkZWxldGlvbk5vdEhh
bmRsZWRCeUludGVyY2VwdG9yKCk7Ci0KLSAgICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50ZXJu
YWxGaWVsZENvdW50KCkgPT0gVjhIVE1MRG9jdW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJu
YWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOwotICAgIGluZm8uSG9sZGVyKCkt
PlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCBtYXJrZXIpOwot
ICAgIHJldHVybiB2ODo6VHJ1ZSgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
RG9jdW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRN
TERvY3VtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKLSAgICBBdG9taWNTdHJpbmcga2V5ID0g
djhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSk7Ci0KLSAgICAvLyBTcGVjaWFsIGNh
c2UgZm9yIGRvY3VtZW50LmFsbC4gIElmIHRoZSB2YWx1ZSBpbiB0aGUgc2hhZG93Ci0gICAgLy8g
aW50ZXJuYWwgZmllbGQgaXMgbm90IHRoZSBtYXJrZXIgb2JqZWN0LCB0aGVuIGRvY3VtZW50LmFs
bCBoYXMKLSAgICAvLyBiZWVuIHRlbXBvcmFyaWx5IHNoYWRvd2VkIGFuZCB3ZSByZXR1cm4gdGhl
IHZhbHVlLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGws
ICgiYWxsIikpOwotICAgIGlmIChrZXkgPT0gYWxsKSB7Ci0gICAgICAgIEFTU0VSVChpbmZvLkhv
bGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxG
aWVsZENvdW50KTsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5I
b2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOwot
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldElu
dGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4KTsKLSAgICAgICAgaWYgKG1h
cmtlciAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4sIHNoYWRvd0NvbnN0cnVjdG9y
LCAoKSk7CisgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkgeworICAgICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYWRvd1RlbXBsYXRlID0gdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldygpOworICAgICAgICBpZiAoc2hhZG93VGVtcGxhdGUuSXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgICAgICBz
aGFkb3dUZW1wbGF0ZS0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTERvY3VtZW50
IikpOworICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+SW5oZXJpdChWOEhUTUxEb2N1bWVudDo6R2V0
VGVtcGxhdGUoKSk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5JbnN0YW5jZVRlbXBsYXRlKCkt
PlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKKyAgICAgICAgc2hhZG93Q29uc3RydWN0b3IgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b24+OjpOZXcoc2hhZG93VGVtcGxhdGUtPkdldEZ1bmN0aW9uKCkpOworICAgICAgICBpZiAoc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PigpOwogICAgIH0KIAotICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0g
VjhIVE1MRG9jdW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEFTU0VSVCghc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hh
ZG93ID0gc2hhZG93Q29uc3RydWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgaWYgKHNoYWRvdy5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBW
OERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8s
IGltcGwpOworICAgIHNoYWRvdy0+U2V0UHJvdG90eXBlKHdyYXBwZXIpOworICAgIHJldHVybiBz
aGFkb3c7Cit9CiAKLSAgICAvLyBGYXN0IGNhc2UgZm9yIG5hbWVkIGVsZW1lbnRzIHRoYXQgYXJl
IG5vdCB0aGVyZS4KLSAgICBpZiAoIWh0bWxEb2N1bWVudC0+aGFzTmFtZWRJdGVtKGtleS5pbXBs
KCkpICYmICFodG1sRG9jdW1lbnQtPmhhc0V4dHJhTmFtZWRJdGVtKGtleS5pbXBsKCkpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoSFRNTERvY3VtZW50KiBodG1sRG9j
dW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQoreworICAgIEFTU0VSVChodG1sRG9jdW1l
bnQtPmhhc05hbWVkSXRlbShrZXkuaW1wbCgpKSB8fCBodG1sRG9jdW1lbnQtPmhhc0V4dHJhTmFt
ZWRJdGVtKGtleS5pbXBsKCkpKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaXRlbXMg
PSBodG1sRG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhrZXkpOwogICAgIGlmICghaXRlbXMt
Pmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgaWYgKGl0ZW1zLT5s
ZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+Zmlyc3RJdGVtKCk7
CkBAIC0xMDQsMTMgKzkzLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiB0
b1Y4KGl0ZW1zLnJlbGVhc2UoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxE
b2N1bWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvICZpbmZvKSAKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQu
SW5kZXhlZFByb3BlcnR5R2V0dGVyIik7Ci0gICAgdjg6OkxvY2FsPHY4OjpJbnRlZ2VyPiBpbmRl
eFY4ID0gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25lZChpbmRleCk7Ci0gICAgcmV0dXJuIG5h
bWVkUHJvcGVydHlHZXR0ZXIoaW5kZXhWOC0+VG9TdHJpbmcoKSwgaW5mbyk7Ci19Ci0KIC8vIEhU
TUxEb2N1bWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIENvbmNhdGVuYXRlcyAiYXJncyIgdG8gYSBzdHJpbmcu
IElmIGFyZ3MgaXMgZW1wdHksIHJldHVybnMgZW1wdHkgc3RyaW5nLgpAQCAtMTkzLDEwICsxNzUs
OSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiB2b2lkIFY4SFRNTERvY3VtZW50OjphbGxB
Y2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uSFRNTERvY3VtZW50LmFsbC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKLSAgICBpbmZvLkhvbGRlcigpLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50Ojpz
aGFkb3dJbmRleCwgdmFsdWUpOworICAgIC8vIEp1c3QgZW11bGF0ZSBhIG5vcm1hbCBKUyBiZWhh
dmlvdXItLS1pbnN0YWxsIGEgcHJvcGVydHkgb24gdGhpcy4KKyAgICAvLyBQb3RlbnRpYWwgcHJv
YmxlbS0tLXNvbWV0aGluZyB3aXRoIHRoZSBzZXR0ZXIgYmVsb3ctLS1sZXQncyBob3BlIHRoYXQn
cyBub3QgdGhlIGNhc2UuCisgICAgaW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUsIHZhbHVlKTsK
IH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCBib29s
IGZvcmNlTmV3T2JqZWN0KQpAQCAtMjEwLDEyICsxOTEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChIVE1MRG9jdW1lbnQqIGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgICAg
IGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGltcGwtPmZyYW1lKCkpKQog
ICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3
cmFwcGVyKTsKICAgICB9Ci0gICAgLy8gQ3JlYXRlIG1hcmtlciBvYmplY3QgYW5kIGluc2VydCBp
dCBpbiB0d28gaW50ZXJuYWwgZmllbGRzLgotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBpbXBsZW1l
bnQgdGVtcG9yYXJ5IHNoYWRvd2luZyBvZiBkb2N1bWVudC5hbGwuCi0gICAgQVNTRVJUKHdyYXBw
ZXItPkludGVybmFsRmllbGRDb3VudCgpID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxk
Q291bnQpOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBtYXJrZXIgPSB2ODo6T2JqZWN0OjpO
ZXcoKTsKLSAgICB3cmFwcGVyLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50OjptYXJr
ZXJJbmRleCwgbWFya2VyKTsKLSAgICB3cmFwcGVyLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERv
Y3VtZW50OjpzaGFkb3dJbmRleCwgbWFya2VyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57340</attachid>
            <date>2010-05-28 10:25:44 -0700</date>
            <delta_ts>2010-05-31 09:08:41 -0700</delta_ts>
            <desc>With Chromium rolled forward</desc>
            <filename>bug-39877-20100528212542.patch</filename>
            <type>text/plain</type>
            <size>16408</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uMTExZGQ2Yzc2OTNlN2Ix
OTQyNTg0MDhhZjg3MGRhOGJjNGM3MzJhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNS0yOCAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gZ2V0IHJpZCBvZiBuYW1lZCBpbnRl
cmNlcHRvciBvbiBIVE1MRG9jdW1lbnQgYW5kIGludHJvZHVjZS9yZW1vdmUgYWNjZXNzb3JzIHdo
ZW4gbmFtZWQgaXRlbXMgZ2V0IGRlbGV0ZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NzcKKworICAgICAgICBUaGlzIHBhdGNoIG1h
a2VzIGNhbGxiYWNrcyBpbnZva2VkIG9uIG5hbWVkIGl0ZW1zIGFkZGl0aW9uL3JlbW92YWwKKyAg
ICAgICAgaW5zdGFsbCBBUEkgYWNjZXNzb3JzIGFuZCB0aHVzIHRoZXJlIGlzIG5vIG1vcmUgbmVl
ZCBpbgorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBpbnRlcmNlcHRvcnMgb24gSFRNTERvY3Vt
ZW50IHdoaWNoCisgICAgICAgIHNwZWVkcyB1cCBpbnZvY2F0aW9uIG9mIG1ldGhvZHMgb24gZG9j
dW1lbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tEb2N1
bWVudFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dXBkYXRl
RG9jdW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50
aWF0ZVY4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNo
YWRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTAtMDUtMjggIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
IGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjOTNj
MjVhYWZjNDkzM2YzNzIzN2RjODg3NzQ2OTQ2Mjc1OGY4YWI2Li4xY2M1MDBjZjYxMWFkYTQ3OGRi
MjQ2MDM5NjRmODA3Y2MyMGU4ZjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTI3Myw2ICsyNzMsMTMgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBXcmFw
SW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwp
OworICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdldE5hbWVkUHJvcGVydHkoSFRNTERv
Y3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KTsKK0VORAorICAg
IH0KKwogICAgIG15IEBlbmFibGVkQXRSdW50aW1lOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzk5LDcgKzQwNiw2IEBAIEVORAogbXkgJWluZGV4ZXJT
cGVjaWFsQ2FzZXMgPSAoCiAgICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVt
ZW50IiA9PiAxLAotICAgICJIVE1MRG9jdW1lbnQiID0+IDEsCiAgICAgIkhUTUxFbWJlZEVsZW1l
bnQiID0+IDEsCiAgICAgIkhUTUxPYmplY3RFbGVtZW50IiA9PiAxCiApOwpAQCAtNDI2LDYgKzQz
MiwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29y
cwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQiIHx8ICRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhU
TUxFbWJlZEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVudCIp
IHsKICAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CisgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgICRoYXNDdXN0b21OYW1l
ZEdldHRlciA9IDA7CisgICAgICAgICRoYXNDdXN0b21JbmRleGVkR2V0dGVyID0gMDsKKyAgICB9
CiAgICAgbXkgJGlzSW5kZXhlclNwZWNpYWxDYXNlID0gZXhpc3RzICRpbmRleGVyU3BlY2lhbENh
c2VzeyRpbnRlcmZhY2VOYW1lfTsKIAogICAgIGlmICgkaGFzQ3VzdG9tSW5kZXhlZEdldHRlciB8
fCAkaXNJbmRleGVyU3BlY2lhbENhc2UpIHsKQEAgLTQ1NCw3ICs0NjQsNyBAQCBFTkQKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORAogICAgIH0KLSAgICBpZiAoJGhhc0N1c3RvbURlbGV0
ZXJzIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgaWYgKCRoYXND
dXN0b21EZWxldGVycykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IG5hbWVkUHJvcGVydHlEZWxldGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsK
IEVORApAQCAtMTUwNCw2ICsxNTE0LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFt
ZWRQcm9wZXJ0eUdldHRlcgogICAgICAgICAkaGFzQ3VzdG9tR2V0dGVyID0gMTsKICAgICB9CiAK
KyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGhh
c0N1c3RvbUdldHRlciA9IDA7CisgICAgfQorCiAgICAgbXkgJGhhc0dldHRlciA9ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkaGFzQ3VzdG9tR2V0
dGVyIHx8ICRuYW1lZFByb3BlcnR5R2V0dGVyOwogICAgIGlmICghJGhhc0dldHRlcikgewogICAg
ICAgICByZXR1cm47CkBAIC0xNTE5LDggKzE1MzMsNyBAQCBFTkQKICAgICB9CiAKICAgICBteSAk
aGFzU2V0dGVyID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1
dEZ1bmN0aW9uIn07Ci0gICAgIyBGSVhNRTogVHJ5IHRvIHJlbW92ZSBoYXJkLWNvZGVkIEhUTUxE
b2N1bWVudCByZWZlcmVuY2UgYnkgYWxpZ25pbmcgaGFuZGxpbmcgb2YgZG9jdW1lbnQuYWxsIHdp
dGggSlNDIGJpbmRpbmdzLgotICAgIG15ICRoYXNEZWxldGVyID0gJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRGVsZXRlUHJvcGVydHkifSB8fCAkaW50ZXJmYWNlTmFtZSBl
cSAiSFRNTERvY3VtZW50IjsKKyAgICBteSAkaGFzRGVsZXRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAgICAgbXkgJGhhc0VudW1l
cmF0b3IgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0
eU5hbWVzIn07CiAgICAgbXkgJHNldE9uID0gIkluc3RhbmNlIjsKIApAQCAtMjAwMyw2ICsyMDE2
LDExIEBAIEVORAogICAgIGluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdp
bmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hl
Y2ssIHY4OjpFeHRlcm5hbDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pLCBmYWxzZSk7CiBFTkQK
ICAgICB9CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90
eXBlKHRydWUpOworRU5ECisgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRp
b24iKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDhhOWUyNTdjODQ4YjQwYmMyZjAxZWYw
NmZkNjAyMTJlYzllN2RmNjUuLjY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4
MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDU2LDEw
ICs0NTYsMTIgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiAKIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5u
YW1lZEl0ZW1BZGRlZChkb2MsIG5hbWUpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Om5h
bWVkSXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1vdmVkKGRvYywg
bmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGUzNzA0NjlmZDA2NWNjYzNkM2IzYTBkYTI5Yzc3Yjhm
MDg0YzZiY2YuLjNhMmE3MzBiN2JjYTQ4YzcyZjBmNTVkNzAzZGZkZjcyMDg1ZjM3MmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1
ZGUgIlY4R0NGb3JDb250ZXh0RGlzcG9zZS5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhpc3Rvcnku
aCIKICNpbmNsdWRlICJWOExvY2F0aW9uLmgiCkBAIC00MDIsNiArNDAzLDEzIEBAIHZvaWQgVjhE
T01XaW5kb3dTaGVsbDo6Y2xlYXJEb2N1bWVudFdyYXBwZXIoKQogICAgIH0KIH0KIAorc3RhdGlj
IHZvaWQgY2hlY2tEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKFY4RG9jdW1lbnQ6OnRvTmF0aXZl
KHdyYXBwZXIpID09IGRvY3VtZW50KTsKKyAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpCisgICAgICAgIEFTU0VSVChWOERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHdyYXBwZXItPkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpOworfQor
CiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZURvY3VtZW50V3JhcHBlckNhY2hlKCkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CkBAIC00MjAsNiArNDI4LDEwIEBAIHZv
aWQgVjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnRXcmFwcGVyQ2FjaGUoKQogICAgIH0K
IAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb2N1bWVudFdyYXBwZXIgPSB0b1Y4KG1fZnJh
bWUtPmRvY3VtZW50KCkpOworICAgIEFTU0VSVChkb2N1bWVudFdyYXBwZXIgPT0gbV9kb2N1bWVu
dCB8fCBtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgaWYgKG1fZG9jdW1lbnQuSXNFbXB0eSgp
KQorICAgICAgICB1cGRhdGVEb2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChkb2N1bWVudFdyYXBwZXIpKTsKKyAgICBjaGVja0RvY3VtZW50V3JhcHBlcihtX2RvY3Vt
ZW50LCBtX2ZyYW1lLT5kb2N1bWVudCgpKTsKIAogICAgIC8vIElmIGluc3RhbnRpYXRpb24gb2Yg
dGhlIGRvY3VtZW50IHdyYXBwZXIgZmFpbHMsIGNsZWFyIHRoZSBjYWNoZQogICAgIC8vIGFuZCBs
ZXQgdGhlIERPTVdpbmRvdyBhY2Nlc3NvciBoYW5kbGUgYWNjZXNzIHRvIHRoZSBkb2N1bWVudC4K
QEAgLTQ5Nyw2ICs1MDksMzkgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjp1cGRhdGVEb2N1bWVu
dCgpCiAgICAgdXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgLy8gVE9ETyhhbnRvbm0pOiBjb25zaWRlciBwYXNzaW5n
IEF0b21pY1N0cmluZ0ltcGwgZGlyZWN0bHkuCisgICAgQXRvbWljU3RyaW5nIG5hbWUgPSB2OFN0
cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhwcm9wZXJ0eSk7CisgICAgSFRNTERvY3VtZW50KiBo
dG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgQVNTRVJUKGh0bWxEb2N1bWVudCk7CisgICAgcmV0dXJuIFY4SFRNTERvY3VtZW50OjpHZXRO
YW1lZFByb3BlcnR5KGh0bWxEb2N1bWVudCwgbmFtZSk7Cit9CisKK3ZvaWQgVjhET01XaW5kb3dT
aGVsbDo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpbml0Q29udGV4dElmTmVlZGVkKCk7CisKKyAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSht
X2NvbnRleHQpOworCisgICAgQVNTRVJUKCFtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgY2hl
Y2tEb2N1bWVudFdyYXBwZXIobV9kb2N1bWVudCwgZG9jKTsKKyAgICBtX2RvY3VtZW50LT5TZXRB
Y2Nlc3Nvcih2OFN0cmluZyhuYW1lKSwgZ2V0dGVyKTsKK30KKwordm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCogZG9jLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCit7CisgICAgaW5pdENvbnRleHRJZk5lZWRlZCgpOworCisgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
bV9jb250ZXh0KTsKKworICAgIEFTU0VSVCghbV9kb2N1bWVudC5Jc0VtcHR5KCkpOworICAgIGNo
ZWNrRG9jdW1lbnRXcmFwcGVyKG1fZG9jdW1lbnQsIGRvYyk7CisgICAgbV9kb2N1bWVudC0+RGVs
ZXRlKHY4U3RyaW5nKG5hbWUpKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxsOjp1cGRhdGVT
ZWN1cml0eU9yaWdpbigpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmggYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAppbmRleCBmNGVhZmYyZWU2NTE3NTM0NGMyNzFiOTkz
NWQ4ZjJmN2E5NjEyNjAyLi4zY2YxYjUyZmE5NjNjODNmMGRjOTJhMGVkZTgyNjYyNmJmZTNmMWFh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtMzEsNiArMzEsNyBA
QAogI2lmbmRlZiBWOERPTVdpbmRvd1NoZWxsX2gKICNkZWZpbmUgVjhET01XaW5kb3dTaGVsbF9o
CiAKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8u
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CkBAIC00MSw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93
OwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBTdHJpbmc7CiAKIC8v
IFY4V2luZG93U2hlbGwgcmVwcmVzZW50cyBhbGwgdGhlIHBlci1nbG9iYWwgb2JqZWN0IHN0YXRl
IGZvciBhIEZyYW1lIHRoYXQKQEAgLTU0LDYgKzU2LDkgQEAgcHVibGljOgogICAgIC8vIFVwZGF0
ZSBkb2N1bWVudCBvYmplY3Qgb2YgdGhlIGZyYW1lLgogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQo
KTsKIAorICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgdm9pZCBuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYpOworCiAgICAgLy8gVXBkYXRlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2Yg
YSBkb2N1bWVudAogICAgIC8vIChlLmcuLCBhZnRlciBzZXR0aW5nIGRvY291bWVudC5kb21haW4p
LgogICAgIHZvaWQgdXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAppbmRleCBmODQyNmRjNzE0ZDRiMzU1YmIxZTFjMDAyNGJkMDhkYzFjNmM5NmE0
Li41YWVjMGMzMzRjN2QxZjE2OGVhNTk2NjRjNDMzMzljYWQyNDkzZjQ0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yODYsNiArMjg2LDggQEAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChWOFByb3h5KiBwcm94eSwg
V3JhcHBlclQKICAgICBpZiAoIWluc3RhbmNlLklzRW1wdHkoKSkgewogICAgICAgICAvLyBBdm9p
ZCBzZXR0aW5nIHRoZSBET00gd3JhcHBlciBmb3IgZmFpbGVkIGFsbG9jYXRpb25zLgogICAgICAg
ICBzZXRET01XcmFwcGVyKGluc3RhbmNlLCB0eXBlLCBpbXBsKTsKKyAgICAgICAgaWYgKHR5cGUg
PT0gJlY4SFRNTERvY3VtZW50OjppbmZvKQorICAgICAgICAgICAgaW5zdGFuY2UgPSBWOEhUTUxE
b2N1bWVudDo6V3JhcEluU2hhZG93T2JqZWN0KGluc3RhbmNlLCBzdGF0aWNfY2FzdDxOb2RlKj4o
aW1wbCkpOwogICAgIH0KICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggODZmMmVi
NTMyMTIzM2JlNzE5Njg1YjVhY2E1MGU4OTA4NDcyNDZmMy4uZDI5ZjYyMGRlMzZkMzY4ZjRiZGZk
NGQwYTdhOGNiZjcwYzQ4MmExMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDksNDggKzQ5LDM3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhIVE1MRG9jdW1lbnQ6
Om5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3Vt
ZW50OjpXcmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5v
ZGUqIGltcGwpCiB7Ci0gICAgLy8gT25seSBoYW5kbGUgZG9jdW1lbnQuYWxsLiAgSW5zZXJ0IHRo
ZSBtYXJrZXIgb2JqZWN0IGludG8gdGhlCi0gICAgLy8gc2hhZG93IGludGVybmFsIGZpZWxkIHRv
IHNpZ25hbCB0aGF0IGRvY3VtZW50LmFsbCBpcyBubyBsb25nZXIKLSAgICAvLyBzaGFkb3dlZC4K
LSAgICBBdG9taWNTdHJpbmcga2V5ID0gdjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFt
ZSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbCwgKCJh
bGwiKSk7Ci0gICAgaWYgKGtleSAhPSBhbGwpCi0gICAgICAgIHJldHVybiBkZWxldGlvbk5vdEhh
bmRsZWRCeUludGVyY2VwdG9yKCk7Ci0KLSAgICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50ZXJu
YWxGaWVsZENvdW50KCkgPT0gVjhIVE1MRG9jdW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJu
YWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOwotICAgIGluZm8uSG9sZGVyKCkt
PlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCBtYXJrZXIpOwot
ICAgIHJldHVybiB2ODo6VHJ1ZSgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
RG9jdW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRN
TERvY3VtZW50Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKLSAgICBBdG9taWNTdHJpbmcga2V5ID0g
djhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSk7Ci0KLSAgICAvLyBTcGVjaWFsIGNh
c2UgZm9yIGRvY3VtZW50LmFsbC4gIElmIHRoZSB2YWx1ZSBpbiB0aGUgc2hhZG93Ci0gICAgLy8g
aW50ZXJuYWwgZmllbGQgaXMgbm90IHRoZSBtYXJrZXIgb2JqZWN0LCB0aGVuIGRvY3VtZW50LmFs
bCBoYXMKLSAgICAvLyBiZWVuIHRlbXBvcmFyaWx5IHNoYWRvd2VkIGFuZCB3ZSByZXR1cm4gdGhl
IHZhbHVlLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBhbGws
ICgiYWxsIikpOwotICAgIGlmIChrZXkgPT0gYWxsKSB7Ci0gICAgICAgIEFTU0VSVChpbmZvLkhv
bGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxG
aWVsZENvdW50KTsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5I
b2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOwot
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldElu
dGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4KTsKLSAgICAgICAgaWYgKG1h
cmtlciAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4sIHNoYWRvd0NvbnN0cnVjdG9y
LCAoKSk7CisgICAgaWYgKHNoYWRvd0NvbnN0cnVjdG9yLklzRW1wdHkoKSkgeworICAgICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYWRvd1RlbXBsYXRlID0gdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldygpOworICAgICAgICBpZiAoc2hhZG93VGVtcGxhdGUuSXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgICAgICBz
aGFkb3dUZW1wbGF0ZS0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTERvY3VtZW50
IikpOworICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+SW5oZXJpdChWOEhUTUxEb2N1bWVudDo6R2V0
VGVtcGxhdGUoKSk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5JbnN0YW5jZVRlbXBsYXRlKCkt
PlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKKyAgICAgICAgc2hhZG93Q29uc3RydWN0b3IgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b24+OjpOZXcoc2hhZG93VGVtcGxhdGUtPkdldEZ1bmN0aW9uKCkpOworICAgICAgICBpZiAoc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PigpOwogICAgIH0KIAotICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0g
VjhIVE1MRG9jdW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEFTU0VSVCghc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2hh
ZG93ID0gc2hhZG93Q29uc3RydWN0b3ItPk5ld0luc3RhbmNlKCk7CisgICAgaWYgKHNoYWRvdy5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICBW
OERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoc2hhZG93LCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8s
IGltcGwpOworICAgIHNoYWRvdy0+U2V0UHJvdG90eXBlKHdyYXBwZXIpOworICAgIHJldHVybiBz
aGFkb3c7Cit9CiAKLSAgICAvLyBGYXN0IGNhc2UgZm9yIG5hbWVkIGVsZW1lbnRzIHRoYXQgYXJl
IG5vdCB0aGVyZS4KLSAgICBpZiAoIWh0bWxEb2N1bWVudC0+aGFzTmFtZWRJdGVtKGtleS5pbXBs
KCkpICYmICFodG1sRG9jdW1lbnQtPmhhc0V4dHJhTmFtZWRJdGVtKGtleS5pbXBsKCkpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoSFRNTERvY3VtZW50KiBodG1sRG9j
dW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQoreworICAgIEFTU0VSVChodG1sRG9jdW1l
bnQtPmhhc05hbWVkSXRlbShrZXkuaW1wbCgpKSB8fCBodG1sRG9jdW1lbnQtPmhhc0V4dHJhTmFt
ZWRJdGVtKGtleS5pbXBsKCkpKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaXRlbXMg
PSBodG1sRG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhrZXkpOwogICAgIGlmICghaXRlbXMt
Pmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgaWYgKGl0ZW1zLT5s
ZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+Zmlyc3RJdGVtKCk7
CkBAIC0xMDQsMTMgKzkzLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiB0
b1Y4KGl0ZW1zLnJlbGVhc2UoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxE
b2N1bWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvICZpbmZvKSAKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQu
SW5kZXhlZFByb3BlcnR5R2V0dGVyIik7Ci0gICAgdjg6OkxvY2FsPHY4OjpJbnRlZ2VyPiBpbmRl
eFY4ID0gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25lZChpbmRleCk7Ci0gICAgcmV0dXJuIG5h
bWVkUHJvcGVydHlHZXR0ZXIoaW5kZXhWOC0+VG9TdHJpbmcoKSwgaW5mbyk7Ci19Ci0KIC8vIEhU
TUxEb2N1bWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIENvbmNhdGVuYXRlcyAiYXJncyIgdG8gYSBzdHJpbmcu
IElmIGFyZ3MgaXMgZW1wdHksIHJldHVybnMgZW1wdHkgc3RyaW5nLgpAQCAtMTkzLDEwICsxNzUs
OSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiB2b2lkIFY4SFRNTERvY3VtZW50OjphbGxB
Y2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgSU5DX1NU
QVRTKCJET00uSFRNTERvY3VtZW50LmFsbC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50
KTsKLSAgICBpbmZvLkhvbGRlcigpLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50Ojpz
aGFkb3dJbmRleCwgdmFsdWUpOworICAgIC8vIEp1c3QgZW11bGF0ZSBhIG5vcm1hbCBKUyBiZWhh
dmlvdXItLS1pbnN0YWxsIGEgcHJvcGVydHkgb24gdGhpcy4KKyAgICAvLyBQb3RlbnRpYWwgcHJv
YmxlbS0tLXNvbWV0aGluZyB3aXRoIHRoZSBzZXR0ZXIgYmVsb3ctLS1sZXQncyBob3BlIHRoYXQn
cyBub3QgdGhlIGNhc2UuCisgICAgaW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUsIHZhbHVlKTsK
IH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCBib29s
IGZvcmNlTmV3T2JqZWN0KQpAQCAtMjEwLDEyICsxOTEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChIVE1MRG9jdW1lbnQqIGltcGwsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiAgICAgICAg
IGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGltcGwtPmZyYW1lKCkpKQog
ICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3
cmFwcGVyKTsKICAgICB9Ci0gICAgLy8gQ3JlYXRlIG1hcmtlciBvYmplY3QgYW5kIGluc2VydCBp
dCBpbiB0d28gaW50ZXJuYWwgZmllbGRzLgotICAgIC8vIFRoaXMgaXMgdXNlZCB0byBpbXBsZW1l
bnQgdGVtcG9yYXJ5IHNoYWRvd2luZyBvZiBkb2N1bWVudC5hbGwuCi0gICAgQVNTRVJUKHdyYXBw
ZXItPkludGVybmFsRmllbGRDb3VudCgpID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxk
Q291bnQpOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBtYXJrZXIgPSB2ODo6T2JqZWN0OjpO
ZXcoKTsKLSAgICB3cmFwcGVyLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50OjptYXJr
ZXJJbmRleCwgbWFya2VyKTsKLSAgICB3cmFwcGVyLT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERv
Y3VtZW50OjpzaGFkb3dJbmRleCwgbWFya2VyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9XZWJLaXQvY2hyb21pdW0vREVQUwpp
bmRleCBjNjMzYTc5YmEzYzUxNTY1MmRjMDg2NjI2NGZmYWRjNzVkYmU3MDFmLi42M2VhZTI5OTJl
NzhjNjgxZTc1NjNmNzYyZjM2ODU2MDU2ZDcxYTI0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vREVQUworKysgYi9XZWJLaXQvY2hyb21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2
YXJzID0gewogICAnY2hyb21pdW1fc3ZuJzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90
cnVuay9zcmMnLAotICAnY2hyb21pdW1fcmV2JzogJzQ3MjQ4JywKKyAgJ2Nocm9taXVtX3Jldic6
ICc0ODQ4MScsCiAKICAgJ3B0aHJlYWRzLXdpbjMyX3Jldic6ICcyNjcxNicsCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57475</attachid>
            <date>2010-05-31 09:08:50 -0700</date>
            <delta_ts>2010-06-01 04:09:56 -0700</delta_ts>
            <desc>Addressing comments</desc>
            <filename>bug-39877-20100531200847.patch</filename>
            <type>text/plain</type>
            <size>16694</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uMTExZGQ2Yzc2OTNlN2Ix
OTQyNTg0MDhhZjg3MGRhOGJjNGM3MzJhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNS0yOCAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gZ2V0IHJpZCBvZiBuYW1lZCBpbnRl
cmNlcHRvciBvbiBIVE1MRG9jdW1lbnQgYW5kIGludHJvZHVjZS9yZW1vdmUgYWNjZXNzb3JzIHdo
ZW4gbmFtZWQgaXRlbXMgZ2V0IGRlbGV0ZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NzcKKworICAgICAgICBUaGlzIHBhdGNoIG1h
a2VzIGNhbGxiYWNrcyBpbnZva2VkIG9uIG5hbWVkIGl0ZW1zIGFkZGl0aW9uL3JlbW92YWwKKyAg
ICAgICAgaW5zdGFsbCBBUEkgYWNjZXNzb3JzIGFuZCB0aHVzIHRoZXJlIGlzIG5vIG1vcmUgbmVl
ZCBpbgorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBpbnRlcmNlcHRvcnMgb24gSFRNTERvY3Vt
ZW50IHdoaWNoCisgICAgICAgIHNwZWVkcyB1cCBpbnZvY2F0aW9uIG9mIG1ldGhvZHMgb24gZG9j
dW1lbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tEb2N1
bWVudFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dXBkYXRl
RG9jdW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50
aWF0ZVY4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNo
YWRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JT
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTAtMDUtMjggIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
IGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjOTNj
MjVhYWZjNDkzM2YzNzIzN2RjODg3NzQ2OTQ2Mjc1OGY4YWI2Li4yMmI2ZWFmM2ZkNTg3MGFhY2Q1
OTViMWQ2ZGEzNWU5MWExNDk1ZmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTI3Myw2ICsyNzMsMTMgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBXcmFw
SW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwp
OworICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdldE5hbWVkUHJvcGVydHkoSFRNTERv
Y3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KTsKK0VORAorICAg
IH0KKwogICAgIG15IEBlbmFibGVkQXRSdW50aW1lOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzYwLDkgKzM2Nyw2IEBAIHN1YiBHZXRJbnRlcm5hbEZp
ZWxkcwogCiAgICAgaWYgKElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIpKSB7CiAgICAg
ICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiaW1wbGVtZW50YXRpb25JbmRleCIpOwot
ICAgICAgICBpZiAoJG5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKLSAgICAgICAgICAgIHB1c2go
QGN1c3RvbUludGVybmFsRmllbGRzLCAoIm1hcmtlckluZGV4IiwgInNoYWRvd0luZGV4IikpOwot
ICAgICAgICB9CiAgICAgfSBlbHNpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAg
cHVzaChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7
CiAgICAgfQpAQCAtMzk5LDcgKzQwMyw2IEBAIEVORAogbXkgJWluZGV4ZXJTcGVjaWFsQ2FzZXMg
PSAoCiAgICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVtZW50IiA9PiAxLAot
ICAgICJIVE1MRG9jdW1lbnQiID0+IDEsCiAgICAgIkhUTUxFbWJlZEVsZW1lbnQiID0+IDEsCiAg
ICAgIkhUTUxPYmplY3RFbGVtZW50IiA9PiAxCiApOwpAQCAtNDI2LDYgKzQyOSwxMCBAQCBzdWIg
R2VuZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29ycwogICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxFbWJlZEVsZW1l
bnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVudCIpIHsKICAgICAgICAg
JGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CisgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgICRoYXNDdXN0b21OYW1lZEdldHRlciA9IDA7
CisgICAgICAgICRoYXNDdXN0b21JbmRleGVkR2V0dGVyID0gMDsKKyAgICB9CiAgICAgbXkgJGlz
SW5kZXhlclNwZWNpYWxDYXNlID0gZXhpc3RzICRpbmRleGVyU3BlY2lhbENhc2VzeyRpbnRlcmZh
Y2VOYW1lfTsKIAogICAgIGlmICgkaGFzQ3VzdG9tSW5kZXhlZEdldHRlciB8fCAkaXNJbmRleGVy
U3BlY2lhbENhc2UpIHsKQEAgLTQ1NCw3ICs0NjEsNyBAQCBFTkQKICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKTsKIEVORAogICAgIH0KLSAgICBpZiAoJGhhc0N1c3RvbURlbGV0ZXJzIHx8ICRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgaWYgKCRoYXNDdXN0b21EZWxldGVy
cykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OkJvb2xlYW4+IG5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORApAQCAtMTUw
NCw2ICsxNTExLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFtZWRQcm9wZXJ0eUdl
dHRlcgogICAgICAgICAkaGFzQ3VzdG9tR2V0dGVyID0gMTsKICAgICB9CiAKKyAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGhhc0N1c3RvbUdldHRl
ciA9IDA7CisgICAgfQorCiAgICAgbXkgJGhhc0dldHRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkaGFzQ3VzdG9tR2V0dGVyIHx8ICRuYW1l
ZFByb3BlcnR5R2V0dGVyOwogICAgIGlmICghJGhhc0dldHRlcikgewogICAgICAgICByZXR1cm47
CkBAIC0xNTE5LDggKzE1MzAsNyBAQCBFTkQKICAgICB9CiAKICAgICBteSAkaGFzU2V0dGVyID0g
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1dEZ1bmN0aW9uIn07
Ci0gICAgIyBGSVhNRTogVHJ5IHRvIHJlbW92ZSBoYXJkLWNvZGVkIEhUTUxEb2N1bWVudCByZWZl
cmVuY2UgYnkgYWxpZ25pbmcgaGFuZGxpbmcgb2YgZG9jdW1lbnQuYWxsIHdpdGggSlNDIGJpbmRp
bmdzLgotICAgIG15ICRoYXNEZWxldGVyID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tRGVsZXRlUHJvcGVydHkifSB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTERvY3Vt
ZW50IjsKKyAgICBteSAkaGFzRGVsZXRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAgICAgbXkgJGhhc0VudW1lcmF0b3IgPSAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn07CiAg
ICAgbXkgJHNldE9uID0gIkluc3RhbmNlIjsKIApAQCAtMjAwMyw2ICsyMDEzLDExIEBAIEVORAog
ICAgIGluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRT
ZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpFeHRl
cm5hbDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pLCBmYWxzZSk7CiBFTkQKICAgICB9CisgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CisgICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90eXBlKHRydWUpOwor
RU5ECisgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRpb24iKSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IDhhOWUyNTdjODQ4YjQwYmMyZjAxZWYwNmZkNjAyMTJlYzll
N2RmNjUuLjY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4MzYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDU2LDEwICs0NTYsMTIgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiAKIHZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1BZGRl
ZChkb2MsIG5hbWUpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92
ZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKKyAgICBt
X3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1vdmVkKGRvYywgbmFtZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwCmluZGV4IGUzNzA0NjlmZDA2NWNjYzNkM2IzYTBkYTI5Yzc3YjhmMDg0YzZiY2YuLjcw
MDYwYmM0ZDAxMDE3MThlMTMxNWQyMTJlNmQ0YzdkNjk5ZGZiMzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlY4
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4R0NGb3JD
b250ZXh0RGlzcG9zZS5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAi
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhpc3RvcnkuaCIKICNpbmNsdWRl
ICJWOExvY2F0aW9uLmgiCkBAIC00MDIsNiArNDAzLDEyIEBAIHZvaWQgVjhET01XaW5kb3dTaGVs
bDo6Y2xlYXJEb2N1bWVudFdyYXBwZXIoKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgY2hlY2tE
b2N1bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKFY4RG9jdW1lbnQ6OnRvTmF0aXZlKHdyYXBwZXIpID09
IGRvY3VtZW50KTsKKyAgICBBU1NFUlQoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpIHx8IChW
OERvY3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXIt
PkdldFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1No
ZWxsOjp1cGRhdGVEb2N1bWVudFdyYXBwZXJDYWNoZSgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwpAQCAtNDIwLDYgKzQyNywxMCBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6
OnVwZGF0ZURvY3VtZW50V3JhcHBlckNhY2hlKCkKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZG9jdW1lbnRXcmFwcGVyID0gdG9WOChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICBBU1NFUlQoZG9jdW1lbnRXcmFwcGVyID09IG1fZG9jdW1lbnQgfHwgbV9kb2N1bWVudC5Jc0Vt
cHR5KCkpOworICAgIGlmIChtX2RvY3VtZW50LklzRW1wdHkoKSkKKyAgICAgICAgdXBkYXRlRG9j
dW1lbnRXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZG9jdW1lbnRXcmFwcGVy
KSk7CisgICAgY2hlY2tEb2N1bWVudFdyYXBwZXIobV9kb2N1bWVudCwgbV9mcmFtZS0+ZG9jdW1l
bnQoKSk7CiAKICAgICAvLyBJZiBpbnN0YW50aWF0aW9uIG9mIHRoZSBkb2N1bWVudCB3cmFwcGVy
IGZhaWxzLCBjbGVhciB0aGUgY2FjaGUKICAgICAvLyBhbmQgbGV0IHRoZSBET01XaW5kb3cgYWNj
ZXNzb3IgaGFuZGxlIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCkBAIC00OTcsNiArNTA4LDM5IEBA
IHZvaWQgVjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnQoKQogICAgIHVwZGF0ZVNlY3Vy
aXR5T3JpZ2luKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IHByb3BlcnR5LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIC8vIEZJWE1FKGFudG9ubSk6IGNvbnNpZGVyIHBhc3NpbmcgQXRvbWljU3RyaW5nSW1wbCBk
aXJlY3RseS4KKyAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHY4U3RyaW5nVG9BdG9taWNXZWJDb3Jl
U3RyaW5nKHByb3BlcnR5KTsKKyAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRN
TERvY3VtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBBU1NFUlQoaHRtbERvY3Vt
ZW50KTsKKyAgICByZXR1cm4gVjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoaHRtbERv
Y3VtZW50LCBuYW1lKTsKK30KKwordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpuYW1lZEl0ZW1BZGRl
ZChIVE1MRG9jdW1lbnQqIGRvYywgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIGlu
aXRDb250ZXh0SWZOZWVkZWQoKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fY29udGV4dCk7CisKKyAgICBB
U1NFUlQoIW1fZG9jdW1lbnQuSXNFbXB0eSgpKTsKKyAgICBjaGVja0RvY3VtZW50V3JhcHBlciht
X2RvY3VtZW50LCBkb2MpOworICAgIG1fZG9jdW1lbnQtPlNldEFjY2Vzc29yKHY4U3RyaW5nKG5h
bWUpLCBnZXR0ZXIpOworfQorCit2b2lkIFY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92
ZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyAgICBp
bml0Q29udGV4dElmTmVlZGVkKCk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX2NvbnRleHQpOworCisgICAg
QVNTRVJUKCFtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgY2hlY2tEb2N1bWVudFdyYXBwZXIo
bV9kb2N1bWVudCwgZG9jKTsKKyAgICBtX2RvY3VtZW50LT5EZWxldGUodjhTdHJpbmcobmFtZSkp
OworfQorCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZVNlY3VyaXR5T3JpZ2luKCkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5oCmluZGV4IGY0ZWFmZjJlZTY1MTc1MzQ0YzI3MWI5OTM1ZDhmMmY3YTk2MTI2MDIuLjNj
ZjFiNTJmYTk2M2M4M2YwZGM5MmEwZWRlODI2NjI2YmZlM2YxYWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFY4RE9NV2lu
ZG93U2hlbGxfaAogI2RlZmluZSBWOERPTVdpbmRvd1NoZWxsX2gKIAorI2luY2x1ZGUgIkF0b21p
Y1N0cmluZy5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQxLDYgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKK2Ns
YXNzIEhUTUxEb2N1bWVudDsKIGNsYXNzIFN0cmluZzsKIAogLy8gVjhXaW5kb3dTaGVsbCByZXBy
ZXNlbnRzIGFsbCB0aGUgcGVyLWdsb2JhbCBvYmplY3Qgc3RhdGUgZm9yIGEgRnJhbWUgdGhhdApA
QCAtNTQsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgLy8gVXBkYXRlIGRvY3VtZW50IG9iamVjdCBv
ZiB0aGUgZnJhbWUuCiAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCisgICAgdm9pZCBuYW1l
ZEl0ZW1BZGRlZChIVE1MRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lk
IG5hbWVkSXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisK
ICAgICAvLyBVcGRhdGUgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIGRvY3VtZW50CiAgICAgLy8g
KGUuZy4sIGFmdGVyIHNldHRpbmcgZG9jb3VtZW50LmRvbWFpbikuCiAgICAgdm9pZCB1cGRhdGVT
ZWN1cml0eU9yaWdpbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGY4
NDI2ZGM3MTRkNGIzNTViYjFlMWMwMDI0YmQwOGRjMWM2Yzk2YTQuLjVhZWMwYzMzNGM3ZDFmMTY4
ZWE1OTY2NGM0MzMzOWNhZDI0OTNmNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKQEAgLTI4Niw2ICsyODYsOCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVy
OjppbnN0YW50aWF0ZVY4T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgIGlmICgh
aW5zdGFuY2UuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIERPTSB3
cmFwcGVyIGZvciBmYWlsZWQgYWxsb2NhdGlvbnMuCiAgICAgICAgIHNldERPTVdyYXBwZXIoaW5z
dGFuY2UsIHR5cGUsIGltcGwpOworICAgICAgICBpZiAodHlwZSA9PSAmVjhIVE1MRG9jdW1lbnQ6
OmluZm8pCisgICAgICAgICAgICBpbnN0YW5jZSA9IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFk
b3dPYmplY3QoaW5zdGFuY2UsIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSk7CiAgICAgfQogICAg
IHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA4NmYyZWI1MzIxMjMzYmU3MTk2ODViNWFj
YTUwZTg5MDg0NzI0NmYzLi5lNmYxYjhmOWJkMjBhMGFjYjIwZTViZThmMTg0YTExMzU4MmM2ZjA1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCkBAIC00OSw0OCArNDksMzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
ODo6SGFuZGxlPHY4OjpCb29sZWFuPiBWOEhUTUxEb2N1bWVudDo6bmFtZWRQcm9wZXJ0eURlbGV0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRvd09i
amVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciwgTm9kZSogaW1wbCkKIHsKLSAgICAv
LyBPbmx5IGhhbmRsZSBkb2N1bWVudC5hbGwuICBJbnNlcnQgdGhlIG1hcmtlciBvYmplY3QgaW50
byB0aGUKLSAgICAvLyBzaGFkb3cgaW50ZXJuYWwgZmllbGQgdG8gc2lnbmFsIHRoYXQgZG9jdW1l
bnQuYWxsIGlzIG5vIGxvbmdlcgotICAgIC8vIHNoYWRvd2VkLgotICAgIEF0b21pY1N0cmluZyBr
ZXkgPSB2OFN0cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWxsLCAoImFsbCIpKTsKLSAgICBpZiAoa2V5
ICE9IGFsbCkKLSAgICAgICAgcmV0dXJuIGRlbGV0aW9uTm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKLQotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBW
OEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiBtYXJrZXIgPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3Vt
ZW50OjptYXJrZXJJbmRleCk7Ci0gICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChW
OEhUTUxEb2N1bWVudDo6c2hhZG93SW5kZXgsIG1hcmtlcik7Ci0gICAgcmV0dXJuIHY4OjpUcnVl
KCk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6bmFtZWRQcm9w
ZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQuTmFtZWRQcm9w
ZXJ0eUdldHRlciIpOwotICAgIEF0b21pY1N0cmluZyBrZXkgPSB2OFN0cmluZ1RvQXRvbWljV2Vi
Q29yZVN0cmluZyhuYW1lKTsKLQotICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZG9jdW1lbnQuYWxs
LiAgSWYgdGhlIHZhbHVlIGluIHRoZSBzaGFkb3cKLSAgICAvLyBpbnRlcm5hbCBmaWVsZCBpcyBu
b3QgdGhlIG1hcmtlciBvYmplY3QsIHRoZW4gZG9jdW1lbnQuYWxsIGhhcwotICAgIC8vIGJlZW4g
dGVtcG9yYXJpbHkgc2hhZG93ZWQgYW5kIHdlIHJldHVybiB0aGUgdmFsdWUuCi0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbCwgKCJhbGwiKSk7Ci0gICAgaWYg
KGtleSA9PSBhbGwpIHsKLSAgICAgICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmll
bGRDb3VudCgpID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtYXJrZXIgPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5h
bEZpZWxkKFY4SFRNTERvY3VtZW50OjptYXJrZXJJbmRleCk7Ci0gICAgICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxE
b2N1bWVudDo6c2hhZG93SW5kZXgpOwotICAgICAgICBpZiAobWFya2VyICE9IHZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIERFRklORV9TVEFUSUNfTE9DQUwodjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uPiwgc2hhZG93Q29uc3RydWN0b3IsICgpKTsKKyAgICBpZiAoc2hh
ZG93Q29uc3RydWN0b3IuSXNFbXB0eSgpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gc2hhZG93VGVtcGxhdGUgPSB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCk7
CisgICAgICAgIGlmIChzaGFkb3dUZW1wbGF0ZS5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5TZXRD
bGFzc05hbWUodjg6OlN0cmluZzo6TmV3KCJIVE1MRG9jdW1lbnQiKSk7CisgICAgICAgIHNoYWRv
d1RlbXBsYXRlLT5Jbmhlcml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZSgpKTsKKyAgICAg
ICAgc2hhZG93VGVtcGxhdGUtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENv
dW50KFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBzaGFkb3dD
b25zdHJ1Y3RvciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhzaGFkb3dUZW1w
bGF0ZS0+R2V0RnVuY3Rpb24oKSk7CisgICAgICAgIGlmIChzaGFkb3dDb25zdHJ1Y3Rvci5Jc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAg
fQogCi0gICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgQVNTRVJUKCFzaGFkb3dDb25zdHJ1Y3Rvci5Jc0Vt
cHR5KCkpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1
Y3Rvci0+TmV3SW5zdGFuY2UoKTsKKyAgICBpZiAoc2hhZG93LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9N
V3JhcHBlcihzaGFkb3csICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CisgICAgc2hhZG93
LT5TZXRQcm90b3R5cGUod3JhcHBlcik7CisgICAgcmV0dXJuIHNoYWRvdzsKK30KIAotICAgIC8v
IEZhc3QgY2FzZSBmb3IgbmFtZWQgZWxlbWVudHMgdGhhdCBhcmUgbm90IHRoZXJlLgotICAgIGlm
ICghaHRtbERvY3VtZW50LT5oYXNOYW1lZEl0ZW0oa2V5LmltcGwoKSkgJiYgIWh0bWxEb2N1bWVu
dC0+aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6
R2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBrZXkpCit7CisgICAgQVNTRVJUKGh0bWxEb2N1bWVudC0+aGFzTmFtZWRJdGVtKGtl
eS5pbXBsKCkpIHx8IGh0bWxEb2N1bWVudC0+aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkp
OwogCiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGh0bWxEb2N1bWVudC0+ZG9j
dW1lbnROYW1lZEl0ZW1zKGtleSk7CiAgICAgaWYgKCFpdGVtcy0+bGVuZ3RoKCkpCi0gICAgICAg
IHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CiAKICAgICBpZiAoaXRlbXMtPmxlbmd0aCgpID09IDEpIHsKICAg
ICAgICAgTm9kZSogbm9kZSA9IGl0ZW1zLT5maXJzdEl0ZW0oKTsKQEAgLTEwNCwxMyArOTMsNiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHRvVjgoaXRlbXMucmVsZWFzZSgp
KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjppbmRleGVkUHJv
cGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8gJmluZm8p
IAotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC5JbmRleGVkUHJvcGVydHlHZXR0
ZXIiKTsKLSAgICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGluZGV4VjggPSB2ODo6SW50ZWdlcjo6
TmV3RnJvbVVuc2lnbmVkKGluZGV4KTsKLSAgICByZXR1cm4gbmFtZWRQcm9wZXJ0eUdldHRlcihp
bmRleFY4LT5Ub1N0cmluZygpLCBpbmZvKTsKLX0KLQogLy8gSFRNTERvY3VtZW50IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogLy8gQ29uY2F0ZW5hdGVzICJhcmdzIiB0byBhIHN0cmluZy4gSWYgYXJncyBpcyBlbXB0eSwg
cmV0dXJucyBlbXB0eSBzdHJpbmcuCkBAIC0xOTMsMTAgKzE3NSw4IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hCiAKIHZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1l
bnQuYWxsLl9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
SG9sZGVyKCk7Ci0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRDb3VudCgp
ID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIGluZm8uSG9sZGVy
KCktPlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCB2YWx1ZSk7
CisgICAgLy8gSnVzdCBlbXVsYXRlIGEgbm9ybWFsIEpTIGJlaGF2aW91ci0tLWluc3RhbGwgYSBw
cm9wZXJ0eSBvbiB0aGlzLgorICAgIGluZm8uVGhpcygpLT5Gb3JjZVNldChuYW1lLCB2YWx1ZSk7
CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxEb2N1bWVudCogaW1wbCwgYm9v
bCBmb3JjZU5ld09iamVjdCkKQEAgLTIxMCwxMiArMTkwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQogICAgICAg
ICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5mcmFtZSgpKSkK
ICAgICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBwZXIo
d3JhcHBlcik7CiAgICAgfQotICAgIC8vIENyZWF0ZSBtYXJrZXIgb2JqZWN0IGFuZCBpbnNlcnQg
aXQgaW4gdHdvIGludGVybmFsIGZpZWxkcy4KLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gaW1wbGVt
ZW50IHRlbXBvcmFyeSBzaGFkb3dpbmcgb2YgZG9jdW1lbnQuYWxsLgotICAgIEFTU0VSVCh3cmFw
cGVyLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVs
ZENvdW50KTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbWFya2VyID0gdjg6Ok9iamVjdDo6
TmV3KCk7Ci0gICAgd3JhcHBlci0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFy
a2VySW5kZXgsIG1hcmtlcik7Ci0gICAgd3JhcHBlci0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxE
b2N1bWVudDo6c2hhZG93SW5kZXgsIG1hcmtlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvV2ViS2l0L2Nocm9taXVtL0RFUFMK
aW5kZXggYzYzM2E3OWJhM2M1MTU2NTJkYzA4NjYyNjRmZmFkYzc1ZGJlNzAxZi4uNjNlYWUyOTky
ZTc4YzY4MWU3NTYzZjc2MmYzNjg1NjA1NmQ3MWEyNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL0RFUFMKKysrIGIvV2ViS2l0L2Nocm9taXVtL0RFUFMKQEAgLTMyLDcgKzMyLDcgQEAKIAog
dmFycyA9IHsKICAgJ2Nocm9taXVtX3N2bic6ICdodHRwOi8vc3JjLmNocm9taXVtLm9yZy9zdm4v
dHJ1bmsvc3JjJywKLSAgJ2Nocm9taXVtX3Jldic6ICc0NzI0OCcsCisgICdjaHJvbWl1bV9yZXYn
OiAnNDg0ODEnLAogCiAgICdwdGhyZWFkcy13aW4zMl9yZXYnOiAnMjY3MTYnLAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57528</attachid>
            <date>2010-06-01 04:10:13 -0700</date>
            <delta_ts>2010-06-03 09:31:34 -0700</delta_ts>
            <desc>For cq+ with reviewed by</desc>
            <filename>bug-39877-20100601151007.patch</filename>
            <type>text/plain</type>
            <size>16691</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uMjRlNjdmMWEyZTM2MzE3
MjZjOThkMTUxOGEzYjhhNGE0NTE5MzgxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNS0yOCAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5h
dGUgQ2hhcGluLgorCisgICAgICAgIFtDaHJvbWl1bV0gZ2V0IHJpZCBvZiBuYW1lZCBpbnRlcmNl
cHRvciBvbiBIVE1MRG9jdW1lbnQgYW5kIGludHJvZHVjZS9yZW1vdmUgYWNjZXNzb3JzIHdoZW4g
bmFtZWQgaXRlbXMgZ2V0IGRlbGV0ZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NzcKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2Vz
IGNhbGxiYWNrcyBpbnZva2VkIG9uIG5hbWVkIGl0ZW1zIGFkZGl0aW9uL3JlbW92YWwKKyAgICAg
ICAgaW5zdGFsbCBBUEkgYWNjZXNzb3JzIGFuZCB0aHVzIHRoZXJlIGlzIG5vIG1vcmUgbmVlZCBp
bgorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBpbnRlcmNlcHRvcnMgb24gSFRNTERvY3VtZW50
IHdoaWNoCisgICAgICAgIHNwZWVkcyB1cCBpbnZvY2F0aW9uIG9mIG1ldGhvZHMgb24gZG9jdW1l
bnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tEb2N1bWVu
dFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9j
dW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50aWF0
ZVY4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRv
d09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JTZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTAtMDUtMjggIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjOTNjMjVh
YWZjNDkzM2YzNzIzN2RjODg3NzQ2OTQ2Mjc1OGY4YWI2Li4yMmI2ZWFmM2ZkNTg3MGFhY2Q1OTVi
MWQ2ZGEzNWU5MWExNDk1ZmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTI3Myw2ICsyNzMsMTMgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAgICBp
ZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBXcmFwSW5T
aGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwpOwor
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdldE5hbWVkUHJvcGVydHkoSFRNTERvY3Vt
ZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KTsKK0VORAorICAgIH0K
KwogICAgIG15IEBlbmFibGVkQXRSdW50aW1lOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChA
eyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzYwLDkgKzM2Nyw2IEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxk
cwogCiAgICAgaWYgKElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIpKSB7CiAgICAgICAg
IHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiaW1wbGVtZW50YXRpb25JbmRleCIpOwotICAg
ICAgICBpZiAoJG5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKLSAgICAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAoIm1hcmtlckluZGV4IiwgInNoYWRvd0luZGV4IikpOwotICAg
ICAgICB9CiAgICAgfSBlbHNpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVz
aChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7CiAg
ICAgfQpAQCAtMzk5LDcgKzQwMyw2IEBAIEVORAogbXkgJWluZGV4ZXJTcGVjaWFsQ2FzZXMgPSAo
CiAgICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVtZW50IiA9PiAxLAotICAg
ICJIVE1MRG9jdW1lbnQiID0+IDEsCiAgICAgIkhUTUxFbWJlZEVsZW1lbnQiID0+IDEsCiAgICAg
IkhUTUxPYmplY3RFbGVtZW50IiA9PiAxCiApOwpAQCAtNDI2LDYgKzQyOSwxMCBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29ycwogICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJI
VE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxFbWJlZEVsZW1lbnQi
IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVudCIpIHsKICAgICAgICAgJGhh
c0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgICRoYXNDdXN0b21OYW1lZEdldHRlciA9IDA7Cisg
ICAgICAgICRoYXNDdXN0b21JbmRleGVkR2V0dGVyID0gMDsKKyAgICB9CiAgICAgbXkgJGlzSW5k
ZXhlclNwZWNpYWxDYXNlID0gZXhpc3RzICRpbmRleGVyU3BlY2lhbENhc2VzeyRpbnRlcmZhY2VO
YW1lfTsKIAogICAgIGlmICgkaGFzQ3VzdG9tSW5kZXhlZEdldHRlciB8fCAkaXNJbmRleGVyU3Bl
Y2lhbENhc2UpIHsKQEAgLTQ1NCw3ICs0NjEsNyBAQCBFTkQKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKTsKIEVORAogICAgIH0KLSAgICBpZiAoJGhhc0N1c3RvbURlbGV0ZXJzIHx8ICRpbnRlcmZh
Y2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgaWYgKCRoYXNDdXN0b21EZWxldGVycykg
ewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OkJvb2xlYW4+IG5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORApAQCAtMTUwNCw2
ICsxNTExLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFtZWRQcm9wZXJ0eUdldHRl
cgogICAgICAgICAkaGFzQ3VzdG9tR2V0dGVyID0gMTsKICAgICB9CiAKKyAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGhhc0N1c3RvbUdldHRlciA9
IDA7CisgICAgfQorCiAgICAgbXkgJGhhc0dldHRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkaGFzQ3VzdG9tR2V0dGVyIHx8ICRuYW1lZFBy
b3BlcnR5R2V0dGVyOwogICAgIGlmICghJGhhc0dldHRlcikgewogICAgICAgICByZXR1cm47CkBA
IC0xNTE5LDggKzE1MzAsNyBAQCBFTkQKICAgICB9CiAKICAgICBteSAkaGFzU2V0dGVyID0gJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1dEZ1bmN0aW9uIn07Ci0g
ICAgIyBGSVhNRTogVHJ5IHRvIHJlbW92ZSBoYXJkLWNvZGVkIEhUTUxEb2N1bWVudCByZWZlcmVu
Y2UgYnkgYWxpZ25pbmcgaGFuZGxpbmcgb2YgZG9jdW1lbnQuYWxsIHdpdGggSlNDIGJpbmRpbmdz
LgotICAgIG15ICRoYXNEZWxldGVyID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tRGVsZXRlUHJvcGVydHkifSB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTERvY3VtZW50
IjsKKyAgICBteSAkaGFzRGVsZXRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAgICAgbXkgJGhhc0VudW1lcmF0b3IgPSAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn07CiAgICAg
bXkgJHNldE9uID0gIkluc3RhbmNlIjsKIApAQCAtMjAwMyw2ICsyMDEzLDExIEBAIEVORAogICAg
IGluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1
cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpFeHRlcm5h
bDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pLCBmYWxzZSk7CiBFTkQKICAgICB9CisgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7CisgICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90eXBlKHRydWUpOworRU5E
CisgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRpb24iKSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDhhOWUyNTdjODQ4YjQwYmMyZjAxZWYwNmZkNjAyMTJlYzllN2Rm
NjUuLjY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4MzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDU2LDEwICs0NTYsMTIgQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1BZGRlZChk
b2MsIG5hbWUpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQo
SFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKKyAgICBtX3By
b3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1vdmVkKGRvYywgbmFtZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCmluZGV4IGUzNzA0NjlmZDA2NWNjYzNkM2IzYTBkYTI5Yzc3YjhmMDg0YzZiY2YuLjcwMDYw
YmM0ZDAxMDE3MThlMTMxNWQyMTJlNmQ0YzdkNjk5ZGZiMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlY4RE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4R0NGb3JDb250
ZXh0RGlzcG9zZS5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhpc3RvcnkuaCIKICNpbmNsdWRlICJW
OExvY2F0aW9uLmgiCkBAIC00MDIsNiArNDAzLDEyIEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6
Y2xlYXJEb2N1bWVudFdyYXBwZXIoKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgY2hlY2tEb2N1
bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBEb2N1bWVudCogZG9j
dW1lbnQpCit7CisgICAgQVNTRVJUKFY4RG9jdW1lbnQ6OnRvTmF0aXZlKHdyYXBwZXIpID09IGRv
Y3VtZW50KTsKKyAgICBBU1NFUlQoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpIHx8IChWOERv
Y3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXItPkdl
dFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxs
Ojp1cGRhdGVEb2N1bWVudFdyYXBwZXJDYWNoZSgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwpAQCAtNDIwLDYgKzQyNywxMCBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVw
ZGF0ZURvY3VtZW50V3JhcHBlckNhY2hlKCkKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZG9jdW1lbnRXcmFwcGVyID0gdG9WOChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBB
U1NFUlQoZG9jdW1lbnRXcmFwcGVyID09IG1fZG9jdW1lbnQgfHwgbV9kb2N1bWVudC5Jc0VtcHR5
KCkpOworICAgIGlmIChtX2RvY3VtZW50LklzRW1wdHkoKSkKKyAgICAgICAgdXBkYXRlRG9jdW1l
bnRXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZG9jdW1lbnRXcmFwcGVyKSk7
CisgICAgY2hlY2tEb2N1bWVudFdyYXBwZXIobV9kb2N1bWVudCwgbV9mcmFtZS0+ZG9jdW1lbnQo
KSk7CiAKICAgICAvLyBJZiBpbnN0YW50aWF0aW9uIG9mIHRoZSBkb2N1bWVudCB3cmFwcGVyIGZh
aWxzLCBjbGVhciB0aGUgY2FjaGUKICAgICAvLyBhbmQgbGV0IHRoZSBET01XaW5kb3cgYWNjZXNz
b3IgaGFuZGxlIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCkBAIC00OTcsNiArNTA4LDM5IEBAIHZv
aWQgVjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnQoKQogICAgIHVwZGF0ZVNlY3VyaXR5
T3JpZ2luKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IHByb3BlcnR5LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IC8vIEZJWE1FKGFudG9ubSk6IGNvbnNpZGVyIHBhc3NpbmcgQXRvbWljU3RyaW5nSW1wbCBkaXJl
Y3RseS4KKyAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHY4U3RyaW5nVG9BdG9taWNXZWJDb3JlU3Ry
aW5nKHByb3BlcnR5KTsKKyAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERv
Y3VtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBBU1NFUlQoaHRtbERvY3VtZW50
KTsKKyAgICByZXR1cm4gVjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoaHRtbERvY3Vt
ZW50LCBuYW1lKTsKK30KKwordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpuYW1lZEl0ZW1BZGRlZChI
VE1MRG9jdW1lbnQqIGRvYywgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIGluaXRD
b250ZXh0SWZOZWVkZWQoKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fY29udGV4dCk7CisKKyAgICBBU1NF
UlQoIW1fZG9jdW1lbnQuSXNFbXB0eSgpKTsKKyAgICBjaGVja0RvY3VtZW50V3JhcHBlcihtX2Rv
Y3VtZW50LCBkb2MpOworICAgIG1fZG9jdW1lbnQtPlNldEFjY2Vzc29yKHY4U3RyaW5nKG5hbWUp
LCBnZXR0ZXIpOworfQorCit2b2lkIFY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQo
SFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyAgICBpbml0
Q29udGV4dElmTmVlZGVkKCk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Cisg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX2NvbnRleHQpOworCisgICAgQVNT
RVJUKCFtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgY2hlY2tEb2N1bWVudFdyYXBwZXIobV9k
b2N1bWVudCwgZG9jKTsKKyAgICBtX2RvY3VtZW50LT5EZWxldGUodjhTdHJpbmcobmFtZSkpOwor
fQorCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZVNlY3VyaXR5T3JpZ2luKCkKIHsKICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5oCmluZGV4IGY0ZWFmZjJlZTY1MTc1MzQ0YzI3MWI5OTM1ZDhmMmY3YTk2MTI2MDIuLjNjZjFi
NTJmYTk2M2M4M2YwZGM5MmEwZWRlODI2NjI2YmZlM2YxYWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFY4RE9NV2luZG93
U2hlbGxfaAogI2RlZmluZSBWOERPTVdpbmRvd1NoZWxsX2gKIAorI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQxLDYgKzQyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKK2NsYXNz
IEhUTUxEb2N1bWVudDsKIGNsYXNzIFN0cmluZzsKIAogLy8gVjhXaW5kb3dTaGVsbCByZXByZXNl
bnRzIGFsbCB0aGUgcGVyLWdsb2JhbCBvYmplY3Qgc3RhdGUgZm9yIGEgRnJhbWUgdGhhdApAQCAt
NTQsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgLy8gVXBkYXRlIGRvY3VtZW50IG9iamVjdCBvZiB0
aGUgZnJhbWUuCiAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCisgICAgdm9pZCBuYW1lZEl0
ZW1BZGRlZChIVE1MRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIG5h
bWVkSXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisKICAg
ICAvLyBVcGRhdGUgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIGRvY3VtZW50CiAgICAgLy8gKGUu
Zy4sIGFmdGVyIHNldHRpbmcgZG9jb3VtZW50LmRvbWFpbikuCiAgICAgdm9pZCB1cGRhdGVTZWN1
cml0eU9yaWdpbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGY4NDI2
ZGM3MTRkNGIzNTViYjFlMWMwMDI0YmQwOGRjMWM2Yzk2YTQuLjVhZWMwYzMzNGM3ZDFmMTY4ZWE1
OTY2NGM0MzMzOWNhZDI0OTNmNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
QEAgLTI4Niw2ICsyODYsOCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpp
bnN0YW50aWF0ZVY4T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgIGlmICghaW5z
dGFuY2UuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIERPTSB3cmFw
cGVyIGZvciBmYWlsZWQgYWxsb2NhdGlvbnMuCiAgICAgICAgIHNldERPTVdyYXBwZXIoaW5zdGFu
Y2UsIHR5cGUsIGltcGwpOworICAgICAgICBpZiAodHlwZSA9PSAmVjhIVE1MRG9jdW1lbnQ6Omlu
Zm8pCisgICAgICAgICAgICBpbnN0YW5jZSA9IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dP
YmplY3QoaW5zdGFuY2UsIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSk7CiAgICAgfQogICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA4NmYyZWI1MzIxMjMzYmU3MTk2ODViNWFjYTUw
ZTg5MDg0NzI0NmYzLi5lNmYxYjhmOWJkMjBhMGFjYjIwZTViZThmMTg0YTExMzU4MmM2ZjA1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCkBAIC00OSw0OCArNDksMzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6
SGFuZGxlPHY4OjpCb29sZWFuPiBWOEhUTUxEb2N1bWVudDo6bmFtZWRQcm9wZXJ0eURlbGV0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVj
dCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciwgTm9kZSogaW1wbCkKIHsKLSAgICAvLyBP
bmx5IGhhbmRsZSBkb2N1bWVudC5hbGwuICBJbnNlcnQgdGhlIG1hcmtlciBvYmplY3QgaW50byB0
aGUKLSAgICAvLyBzaGFkb3cgaW50ZXJuYWwgZmllbGQgdG8gc2lnbmFsIHRoYXQgZG9jdW1lbnQu
YWxsIGlzIG5vIGxvbmdlcgotICAgIC8vIHNoYWRvd2VkLgotICAgIEF0b21pY1N0cmluZyBrZXkg
PSB2OFN0cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWxsLCAoImFsbCIpKTsKLSAgICBpZiAoa2V5ICE9
IGFsbCkKLSAgICAgICAgcmV0dXJuIGRlbGV0aW9uTm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsK
LQotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhU
TUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiBtYXJrZXIgPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50
OjptYXJrZXJJbmRleCk7Ci0gICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChWOEhU
TUxEb2N1bWVudDo6c2hhZG93SW5kZXgsIG1hcmtlcik7Ci0gICAgcmV0dXJuIHY4OjpUcnVlKCk7
Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6bmFtZWRQcm9wZXJ0
eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQuTmFtZWRQcm9wZXJ0
eUdldHRlciIpOwotICAgIEF0b21pY1N0cmluZyBrZXkgPSB2OFN0cmluZ1RvQXRvbWljV2ViQ29y
ZVN0cmluZyhuYW1lKTsKLQotICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZG9jdW1lbnQuYWxsLiAg
SWYgdGhlIHZhbHVlIGluIHRoZSBzaGFkb3cKLSAgICAvLyBpbnRlcm5hbCBmaWVsZCBpcyBub3Qg
dGhlIG1hcmtlciBvYmplY3QsIHRoZW4gZG9jdW1lbnQuYWxsIGhhcwotICAgIC8vIGJlZW4gdGVt
cG9yYXJpbHkgc2hhZG93ZWQgYW5kIHdlIHJldHVybiB0aGUgdmFsdWUuCi0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbCwgKCJhbGwiKSk7Ci0gICAgaWYgKGtl
eSA9PSBhbGwpIHsKLSAgICAgICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRD
b3VudCgpID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBtYXJrZXIgPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZp
ZWxkKFY4SFRNTERvY3VtZW50OjptYXJrZXJJbmRleCk7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1
bWVudDo6c2hhZG93SW5kZXgpOwotICAgICAgICBpZiAobWFya2VyICE9IHZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIERFRklORV9TVEFUSUNfTE9DQUwodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uPiwgc2hhZG93Q29uc3RydWN0b3IsICgpKTsKKyAgICBpZiAoc2hhZG93
Q29uc3RydWN0b3IuSXNFbXB0eSgpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc2hhZG93VGVtcGxhdGUgPSB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCk7Cisg
ICAgICAgIGlmIChzaGFkb3dUZW1wbGF0ZS5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5TZXRDbGFz
c05hbWUodjg6OlN0cmluZzo6TmV3KCJIVE1MRG9jdW1lbnQiKSk7CisgICAgICAgIHNoYWRvd1Rl
bXBsYXRlLT5Jbmhlcml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZSgpKTsKKyAgICAgICAg
c2hhZG93VGVtcGxhdGUtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBzaGFkb3dDb25z
dHJ1Y3RvciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhzaGFkb3dUZW1wbGF0
ZS0+R2V0RnVuY3Rpb24oKSk7CisgICAgICAgIGlmIChzaGFkb3dDb25zdHJ1Y3Rvci5Jc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgfQog
Ci0gICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgQVNTRVJUKCFzaGFkb3dDb25zdHJ1Y3Rvci5Jc0VtcHR5
KCkpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1Y3Rv
ci0+TmV3SW5zdGFuY2UoKTsKKyAgICBpZiAoc2hhZG93LklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3Jh
cHBlcihzaGFkb3csICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CisgICAgc2hhZG93LT5T
ZXRQcm90b3R5cGUod3JhcHBlcik7CisgICAgcmV0dXJuIHNoYWRvdzsKK30KIAotICAgIC8vIEZh
c3QgY2FzZSBmb3IgbmFtZWQgZWxlbWVudHMgdGhhdCBhcmUgbm90IHRoZXJlLgotICAgIGlmICgh
aHRtbERvY3VtZW50LT5oYXNOYW1lZEl0ZW0oa2V5LmltcGwoKSkgJiYgIWh0bWxEb2N1bWVudC0+
aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2V0
TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBrZXkpCit7CisgICAgQVNTRVJUKGh0bWxEb2N1bWVudC0+aGFzTmFtZWRJdGVtKGtleS5p
bXBsKCkpIHx8IGh0bWxEb2N1bWVudC0+aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpOwog
CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGh0bWxEb2N1bWVudC0+ZG9jdW1l
bnROYW1lZEl0ZW1zKGtleSk7CiAgICAgaWYgKCFpdGVtcy0+bGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CiAKICAgICBpZiAoaXRlbXMtPmxlbmd0aCgpID09IDEpIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IGl0ZW1zLT5maXJzdEl0ZW0oKTsKQEAgLTEwNCwxMyArOTMsNiBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHRvVjgoaXRlbXMucmVsZWFzZSgpKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjppbmRleGVkUHJvcGVy
dHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8gJmluZm8pIAot
ewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC5JbmRleGVkUHJvcGVydHlHZXR0ZXIi
KTsKLSAgICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGluZGV4VjggPSB2ODo6SW50ZWdlcjo6TmV3
RnJvbVVuc2lnbmVkKGluZGV4KTsKLSAgICByZXR1cm4gbmFtZWRQcm9wZXJ0eUdldHRlcihpbmRl
eFY4LT5Ub1N0cmluZygpLCBpbmZvKTsKLX0KLQogLy8gSFRNTERvY3VtZW50IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
Ly8gQ29uY2F0ZW5hdGVzICJhcmdzIiB0byBhIHN0cmluZy4gSWYgYXJncyBpcyBlbXB0eSwgcmV0
dXJucyBlbXB0eSBzdHJpbmcuCkBAIC0xOTMsMTAgKzE3NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hCiAKIHZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQu
YWxsLl9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7Ci0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRDb3VudCgpID09
IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIGluZm8uSG9sZGVyKCkt
PlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCB2YWx1ZSk7Cisg
ICAgLy8gSnVzdCBlbXVsYXRlIGEgbm9ybWFsIEpTIGJlaGF2aW91ci0tLWluc3RhbGwgYSBwcm9w
ZXJ0eSBvbiB0aGlzLgorICAgIGluZm8uVGhpcygpLT5Gb3JjZVNldChuYW1lLCB2YWx1ZSk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxEb2N1bWVudCogaW1wbCwgYm9vbCBm
b3JjZU5ld09iamVjdCkKQEAgLTIxMCwxMiArMTkwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQogICAgICAgICBp
ZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5mcmFtZSgpKSkKICAg
ICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBwZXIod3Jh
cHBlcik7CiAgICAgfQotICAgIC8vIENyZWF0ZSBtYXJrZXIgb2JqZWN0IGFuZCBpbnNlcnQgaXQg
aW4gdHdvIGludGVybmFsIGZpZWxkcy4KLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50
IHRlbXBvcmFyeSBzaGFkb3dpbmcgb2YgZG9jdW1lbnQuYWxsLgotICAgIEFTU0VSVCh3cmFwcGVy
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENv
dW50KTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbWFya2VyID0gdjg6Ok9iamVjdDo6TmV3
KCk7Ci0gICAgd3JhcHBlci0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2Vy
SW5kZXgsIG1hcmtlcik7Ci0gICAgd3JhcHBlci0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1
bWVudDo6c2hhZG93SW5kZXgsIG1hcmtlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvV2ViS2l0L2Nocm9taXVtL0RFUFMKaW5k
ZXggYzYzM2E3OWJhM2M1MTU2NTJkYzA4NjYyNjRmZmFkYzc1ZGJlNzAxZi4uNjNlYWUyOTkyZTc4
YzY4MWU3NTYzZjc2MmYzNjg1NjA1NmQ3MWEyNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L0RFUFMKKysrIGIvV2ViS2l0L2Nocm9taXVtL0RFUFMKQEAgLTMyLDcgKzMyLDcgQEAKIAogdmFy
cyA9IHsKICAgJ2Nocm9taXVtX3N2bic6ICdodHRwOi8vc3JjLmNocm9taXVtLm9yZy9zdm4vdHJ1
bmsvc3JjJywKLSAgJ2Nocm9taXVtX3Jldic6ICc0NzI0OCcsCisgICdjaHJvbWl1bV9yZXYnOiAn
NDg0ODEnLAogCiAgICdwdGhyZWFkcy13aW4zMl9yZXYnOiAnMjY3MTYnLAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57780</attachid>
            <date>2010-06-03 09:31:43 -0700</date>
            <delta_ts>2010-06-04 02:58:18 -0700</delta_ts>
            <desc>To run through build bots another time</desc>
            <filename>bug-39877-20100603203140.patch</filename>
            <type>text/plain</type>
            <size>16299</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uMjRlNjdmMWEyZTM2MzE3
MjZjOThkMTUxOGEzYjhhNGE0NTE5MzgxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNS0yOCAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5h
dGUgQ2hhcGluLgorCisgICAgICAgIFtDaHJvbWl1bV0gZ2V0IHJpZCBvZiBuYW1lZCBpbnRlcmNl
cHRvciBvbiBIVE1MRG9jdW1lbnQgYW5kIGludHJvZHVjZS9yZW1vdmUgYWNjZXNzb3JzIHdoZW4g
bmFtZWQgaXRlbXMgZ2V0IGRlbGV0ZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NzcKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2Vz
IGNhbGxiYWNrcyBpbnZva2VkIG9uIG5hbWVkIGl0ZW1zIGFkZGl0aW9uL3JlbW92YWwKKyAgICAg
ICAgaW5zdGFsbCBBUEkgYWNjZXNzb3JzIGFuZCB0aHVzIHRoZXJlIGlzIG5vIG1vcmUgbmVlZCBp
bgorICAgICAgICBuYW1lZCBhbmQgaW5kZXhlZCBpbnRlcmNlcHRvcnMgb24gSFRNTERvY3VtZW50
IHdoaWNoCisgICAgICAgIHNwZWVkcyB1cCBpbnZvY2F0aW9uIG9mIG1ldGhvZHMgb24gZG9jdW1l
bnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tEb2N1bWVu
dFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9j
dW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbUFkZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50aWF0
ZVY4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRv
d09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6R2V0TmFtZWRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JTZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTAtMDUtMjggIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjOTNjMjVh
YWZjNDkzM2YzNzIzN2RjODg3NzQ2OTQ2Mjc1OGY4YWI2Li4yMmI2ZWFmM2ZkNTg3MGFhY2Q1OTVi
MWQ2ZGEzNWU5MWExNDk1ZmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTI3Myw2ICsyNzMsMTMgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAgICBp
ZiAoJGltcGxDbGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBXcmFwSW5T
aGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwpOwor
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEdldE5hbWVkUHJvcGVydHkoSFRNTERvY3Vt
ZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KTsKK0VORAorICAgIH0K
KwogICAgIG15IEBlbmFibGVkQXRSdW50aW1lOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChA
eyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzYwLDkgKzM2Nyw2IEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxk
cwogCiAgICAgaWYgKElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIpKSB7CiAgICAgICAg
IHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiaW1wbGVtZW50YXRpb25JbmRleCIpOwotICAg
ICAgICBpZiAoJG5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKLSAgICAgICAgICAgIHB1c2goQGN1
c3RvbUludGVybmFsRmllbGRzLCAoIm1hcmtlckluZGV4IiwgInNoYWRvd0luZGV4IikpOwotICAg
ICAgICB9CiAgICAgfSBlbHNpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVz
aChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7CiAg
ICAgfQpAQCAtMzk5LDcgKzQwMyw2IEBAIEVORAogbXkgJWluZGV4ZXJTcGVjaWFsQ2FzZXMgPSAo
CiAgICAgIlN0b3JhZ2UiID0+IDEsCiAgICAgIkhUTUxBcHBsZXRFbGVtZW50IiA9PiAxLAotICAg
ICJIVE1MRG9jdW1lbnQiID0+IDEsCiAgICAgIkhUTUxFbWJlZEVsZW1lbnQiID0+IDEsCiAgICAg
IkhUTUxPYmplY3RFbGVtZW50IiA9PiAxCiApOwpAQCAtNDI2LDYgKzQyOSwxMCBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXJOYW1lZEFuZEluZGV4ZWRQcm9wZXJ0eUFjY2Vzc29ycwogICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJI
VE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxFbWJlZEVsZW1lbnQi
IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVudCIpIHsKICAgICAgICAgJGhh
c0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgICRoYXNDdXN0b21OYW1lZEdldHRlciA9IDA7Cisg
ICAgICAgICRoYXNDdXN0b21JbmRleGVkR2V0dGVyID0gMDsKKyAgICB9CiAgICAgbXkgJGlzSW5k
ZXhlclNwZWNpYWxDYXNlID0gZXhpc3RzICRpbmRleGVyU3BlY2lhbENhc2VzeyRpbnRlcmZhY2VO
YW1lfTsKIAogICAgIGlmICgkaGFzQ3VzdG9tSW5kZXhlZEdldHRlciB8fCAkaXNJbmRleGVyU3Bl
Y2lhbENhc2UpIHsKQEAgLTQ1NCw3ICs0NjEsNyBAQCBFTkQKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKTsKIEVORAogICAgIH0KLSAgICBpZiAoJGhhc0N1c3RvbURlbGV0ZXJzIHx8ICRpbnRlcmZh
Y2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgaWYgKCRoYXNDdXN0b21EZWxldGVycykg
ewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OkJvb2xlYW4+IG5hbWVkUHJvcGVydHlEZWxldGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKIEVORApAQCAtMTUwNCw2
ICsxNTExLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFtZWRQcm9wZXJ0eUdldHRl
cgogICAgICAgICAkaGFzQ3VzdG9tR2V0dGVyID0gMTsKICAgICB9CiAKKyAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgJGhhc0N1c3RvbUdldHRlciA9
IDA7CisgICAgfQorCiAgICAgbXkgJGhhc0dldHRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8fCAkaGFzQ3VzdG9tR2V0dGVyIHx8ICRuYW1lZFBy
b3BlcnR5R2V0dGVyOwogICAgIGlmICghJGhhc0dldHRlcikgewogICAgICAgICByZXR1cm47CkBA
IC0xNTE5LDggKzE1MzAsNyBAQCBFTkQKICAgICB9CiAKICAgICBteSAkaGFzU2V0dGVyID0gJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1dEZ1bmN0aW9uIn07Ci0g
ICAgIyBGSVhNRTogVHJ5IHRvIHJlbW92ZSBoYXJkLWNvZGVkIEhUTUxEb2N1bWVudCByZWZlcmVu
Y2UgYnkgYWxpZ25pbmcgaGFuZGxpbmcgb2YgZG9jdW1lbnQuYWxsIHdpdGggSlNDIGJpbmRpbmdz
LgotICAgIG15ICRoYXNEZWxldGVyID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tRGVsZXRlUHJvcGVydHkifSB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTERvY3VtZW50
IjsKKyAgICBteSAkaGFzRGVsZXRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbURlbGV0ZVByb3BlcnR5In07CiAgICAgbXkgJGhhc0VudW1lcmF0b3IgPSAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn07CiAgICAg
bXkgJHNldE9uID0gIkluc3RhbmNlIjsKIApAQCAtMjAwMyw2ICsyMDEzLDExIEBAIEVORAogICAg
IGluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1
cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpFeHRlcm5h
bDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pLCBmYWxzZSk7CiBFTkQKICAgICB9CisgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRG9jdW1lbnQiKSB7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7CisgICAgZGVzYy0+U2V0SGlkZGVuUHJvdG90eXBlKHRydWUpOworRU5E
CisgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9jYXRpb24iKSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDhhOWUyNTdjODQ4YjQwYmMyZjAxZWYwNmZkNjAyMTJlYzllN2Rm
NjUuLjY4MWUxYTRiNzdlMjA1MmZkYWY1M2NkMzAxMDNlZjU5Mzc0N2Q4MzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDU2LDEwICs0NTYsMTIgQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6bmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIHsKKyAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1BZGRlZChk
b2MsIG5hbWUpOwogfQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6Om5hbWVkSXRlbVJlbW92ZWQo
SFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKKyAgICBtX3By
b3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1vdmVkKGRvYywgbmFtZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCmluZGV4IGUzNzA0NjlmZDA2NWNjYzNkM2IzYTBkYTI5Yzc3YjhmMDg0YzZiY2YuLjcwMDYw
YmM0ZDAxMDE3MThlMTMxNWQyMTJlNmQ0YzdkNjk5ZGZiMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlY4RE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1ZGUgIlY4R0NGb3JDb250
ZXh0RGlzcG9zZS5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhpc3RvcnkuaCIKICNpbmNsdWRlICJW
OExvY2F0aW9uLmgiCkBAIC00MDIsNiArNDAzLDEyIEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6
Y2xlYXJEb2N1bWVudFdyYXBwZXIoKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgY2hlY2tEb2N1
bWVudFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBEb2N1bWVudCogZG9j
dW1lbnQpCit7CisgICAgQVNTRVJUKFY4RG9jdW1lbnQ6OnRvTmF0aXZlKHdyYXBwZXIpID09IGRv
Y3VtZW50KTsKKyAgICBBU1NFUlQoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpIHx8IChWOERv
Y3VtZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXItPkdl
dFByb3RvdHlwZSgpKSkgPT0gZG9jdW1lbnQpKTsKK30KKwogdm9pZCBWOERPTVdpbmRvd1NoZWxs
Ojp1cGRhdGVEb2N1bWVudFdyYXBwZXJDYWNoZSgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwpAQCAtNDIwLDYgKzQyNywxMCBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVw
ZGF0ZURvY3VtZW50V3JhcHBlckNhY2hlKCkKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZG9jdW1lbnRXcmFwcGVyID0gdG9WOChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBB
U1NFUlQoZG9jdW1lbnRXcmFwcGVyID09IG1fZG9jdW1lbnQgfHwgbV9kb2N1bWVudC5Jc0VtcHR5
KCkpOworICAgIGlmIChtX2RvY3VtZW50LklzRW1wdHkoKSkKKyAgICAgICAgdXBkYXRlRG9jdW1l
bnRXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZG9jdW1lbnRXcmFwcGVyKSk7
CisgICAgY2hlY2tEb2N1bWVudFdyYXBwZXIobV9kb2N1bWVudCwgbV9mcmFtZS0+ZG9jdW1lbnQo
KSk7CiAKICAgICAvLyBJZiBpbnN0YW50aWF0aW9uIG9mIHRoZSBkb2N1bWVudCB3cmFwcGVyIGZh
aWxzLCBjbGVhciB0aGUgY2FjaGUKICAgICAvLyBhbmQgbGV0IHRoZSBET01XaW5kb3cgYWNjZXNz
b3IgaGFuZGxlIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuCkBAIC00OTcsNiArNTA4LDM5IEBAIHZv
aWQgVjhET01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnQoKQogICAgIHVwZGF0ZVNlY3VyaXR5
T3JpZ2luKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IHByb3BlcnR5LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IC8vIEZJWE1FKGFudG9ubSk6IGNvbnNpZGVyIHBhc3NpbmcgQXRvbWljU3RyaW5nSW1wbCBkaXJl
Y3RseS4KKyAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHY4U3RyaW5nVG9BdG9taWNXZWJDb3JlU3Ry
aW5nKHByb3BlcnR5KTsKKyAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERv
Y3VtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBBU1NFUlQoaHRtbERvY3VtZW50
KTsKKyAgICByZXR1cm4gVjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVydHkoaHRtbERvY3Vt
ZW50LCBuYW1lKTsKK30KKwordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpuYW1lZEl0ZW1BZGRlZChI
VE1MRG9jdW1lbnQqIGRvYywgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIGluaXRD
b250ZXh0SWZOZWVkZWQoKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fY29udGV4dCk7CisKKyAgICBBU1NF
UlQoIW1fZG9jdW1lbnQuSXNFbXB0eSgpKTsKKyAgICBjaGVja0RvY3VtZW50V3JhcHBlcihtX2Rv
Y3VtZW50LCBkb2MpOworICAgIG1fZG9jdW1lbnQtPlNldEFjY2Vzc29yKHY4U3RyaW5nKG5hbWUp
LCBnZXR0ZXIpOworfQorCit2b2lkIFY4RE9NV2luZG93U2hlbGw6Om5hbWVkSXRlbVJlbW92ZWQo
SFRNTERvY3VtZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyAgICBpbml0
Q29udGV4dElmTmVlZGVkKCk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Cisg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX2NvbnRleHQpOworCisgICAgQVNT
RVJUKCFtX2RvY3VtZW50LklzRW1wdHkoKSk7CisgICAgY2hlY2tEb2N1bWVudFdyYXBwZXIobV9k
b2N1bWVudCwgZG9jKTsKKyAgICBtX2RvY3VtZW50LT5EZWxldGUodjhTdHJpbmcobmFtZSkpOwor
fQorCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZVNlY3VyaXR5T3JpZ2luKCkKIHsKICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5oCmluZGV4IGY0ZWFmZjJlZTY1MTc1MzQ0YzI3MWI5OTM1ZDhmMmY3YTk2MTI2MDIuLjNjZjFi
NTJmYTk2M2M4M2YwZGM5MmEwZWRlODI2NjI2YmZlM2YxYWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFY4RE9NV2luZG93
U2hlbGxfaAogI2RlZmluZSBWOERPTVdpbmRvd1NoZWxsX2gKIAorI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQxLDYgKzQyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKK2NsYXNz
IEhUTUxEb2N1bWVudDsKIGNsYXNzIFN0cmluZzsKIAogLy8gVjhXaW5kb3dTaGVsbCByZXByZXNl
bnRzIGFsbCB0aGUgcGVyLWdsb2JhbCBvYmplY3Qgc3RhdGUgZm9yIGEgRnJhbWUgdGhhdApAQCAt
NTQsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgLy8gVXBkYXRlIGRvY3VtZW50IG9iamVjdCBvZiB0
aGUgZnJhbWUuCiAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCisgICAgdm9pZCBuYW1lZEl0
ZW1BZGRlZChIVE1MRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIG5h
bWVkSXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisKICAg
ICAvLyBVcGRhdGUgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIGRvY3VtZW50CiAgICAgLy8gKGUu
Zy4sIGFmdGVyIHNldHRpbmcgZG9jb3VtZW50LmRvbWFpbikuCiAgICAgdm9pZCB1cGRhdGVTZWN1
cml0eU9yaWdpbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGY4NDI2
ZGM3MTRkNGIzNTViYjFlMWMwMDI0YmQwOGRjMWM2Yzk2YTQuLjVhZWMwYzMzNGM3ZDFmMTY4ZWE1
OTY2NGM0MzMzOWNhZDI0OTNmNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
QEAgLTI4Niw2ICsyODYsOCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpp
bnN0YW50aWF0ZVY4T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgIGlmICghaW5z
dGFuY2UuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIERPTSB3cmFw
cGVyIGZvciBmYWlsZWQgYWxsb2NhdGlvbnMuCiAgICAgICAgIHNldERPTVdyYXBwZXIoaW5zdGFu
Y2UsIHR5cGUsIGltcGwpOworICAgICAgICBpZiAodHlwZSA9PSAmVjhIVE1MRG9jdW1lbnQ6Omlu
Zm8pCisgICAgICAgICAgICBpbnN0YW5jZSA9IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dP
YmplY3QoaW5zdGFuY2UsIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSk7CiAgICAgfQogICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA4NmYyZWI1MzIxMjMzYmU3MTk2ODViNWFjYTUw
ZTg5MDg0NzI0NmYzLi5lNmYxYjhmOWJkMjBhMGFjYjIwZTViZThmMTg0YTExMzU4MmM2ZjA1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCkBAIC00OSw0OCArNDksMzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6
SGFuZGxlPHY4OjpCb29sZWFuPiBWOEhUTUxEb2N1bWVudDo6bmFtZWRQcm9wZXJ0eURlbGV0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVj
dCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciwgTm9kZSogaW1wbCkKIHsKLSAgICAvLyBP
bmx5IGhhbmRsZSBkb2N1bWVudC5hbGwuICBJbnNlcnQgdGhlIG1hcmtlciBvYmplY3QgaW50byB0
aGUKLSAgICAvLyBzaGFkb3cgaW50ZXJuYWwgZmllbGQgdG8gc2lnbmFsIHRoYXQgZG9jdW1lbnQu
YWxsIGlzIG5vIGxvbmdlcgotICAgIC8vIHNoYWRvd2VkLgotICAgIEF0b21pY1N0cmluZyBrZXkg
PSB2OFN0cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWxsLCAoImFsbCIpKTsKLSAgICBpZiAoa2V5ICE9
IGFsbCkKLSAgICAgICAgcmV0dXJuIGRlbGV0aW9uTm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsK
LQotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhU
TUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiBtYXJrZXIgPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50
OjptYXJrZXJJbmRleCk7Ci0gICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChWOEhU
TUxEb2N1bWVudDo6c2hhZG93SW5kZXgsIG1hcmtlcik7Ci0gICAgcmV0dXJuIHY4OjpUcnVlKCk7
Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6bmFtZWRQcm9wZXJ0
eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQuTmFtZWRQcm9wZXJ0
eUdldHRlciIpOwotICAgIEF0b21pY1N0cmluZyBrZXkgPSB2OFN0cmluZ1RvQXRvbWljV2ViQ29y
ZVN0cmluZyhuYW1lKTsKLQotICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZG9jdW1lbnQuYWxsLiAg
SWYgdGhlIHZhbHVlIGluIHRoZSBzaGFkb3cKLSAgICAvLyBpbnRlcm5hbCBmaWVsZCBpcyBub3Qg
dGhlIG1hcmtlciBvYmplY3QsIHRoZW4gZG9jdW1lbnQuYWxsIGhhcwotICAgIC8vIGJlZW4gdGVt
cG9yYXJpbHkgc2hhZG93ZWQgYW5kIHdlIHJldHVybiB0aGUgdmFsdWUuCi0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGFsbCwgKCJhbGwiKSk7Ci0gICAgaWYgKGtl
eSA9PSBhbGwpIHsKLSAgICAgICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRD
b3VudCgpID09IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBtYXJrZXIgPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZp
ZWxkKFY4SFRNTERvY3VtZW50OjptYXJrZXJJbmRleCk7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1
bWVudDo6c2hhZG93SW5kZXgpOwotICAgICAgICBpZiAobWFya2VyICE9IHZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIERFRklORV9TVEFUSUNfTE9DQUwodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uPiwgc2hhZG93Q29uc3RydWN0b3IsICgpKTsKKyAgICBpZiAoc2hhZG93
Q29uc3RydWN0b3IuSXNFbXB0eSgpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc2hhZG93VGVtcGxhdGUgPSB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCk7Cisg
ICAgICAgIGlmIChzaGFkb3dUZW1wbGF0ZS5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5TZXRDbGFz
c05hbWUodjg6OlN0cmluZzo6TmV3KCJIVE1MRG9jdW1lbnQiKSk7CisgICAgICAgIHNoYWRvd1Rl
bXBsYXRlLT5Jbmhlcml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZSgpKTsKKyAgICAgICAg
c2hhZG93VGVtcGxhdGUtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBzaGFkb3dDb25z
dHJ1Y3RvciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhzaGFkb3dUZW1wbGF0
ZS0+R2V0RnVuY3Rpb24oKSk7CisgICAgICAgIGlmIChzaGFkb3dDb25zdHJ1Y3Rvci5Jc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgfQog
Ci0gICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgQVNTRVJUKCFzaGFkb3dDb25zdHJ1Y3Rvci5Jc0VtcHR5
KCkpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzaGFkb3cgPSBzaGFkb3dDb25zdHJ1Y3Rv
ci0+TmV3SW5zdGFuY2UoKTsKKyAgICBpZiAoc2hhZG93LklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3Jh
cHBlcihzaGFkb3csICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CisgICAgc2hhZG93LT5T
ZXRQcm90b3R5cGUod3JhcHBlcik7CisgICAgcmV0dXJuIHNoYWRvdzsKK30KIAotICAgIC8vIEZh
c3QgY2FzZSBmb3IgbmFtZWQgZWxlbWVudHMgdGhhdCBhcmUgbm90IHRoZXJlLgotICAgIGlmICgh
aHRtbERvY3VtZW50LT5oYXNOYW1lZEl0ZW0oa2V5LmltcGwoKSkgJiYgIWh0bWxEb2N1bWVudC0+
aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2V0
TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBrZXkpCit7CisgICAgQVNTRVJUKGh0bWxEb2N1bWVudC0+aGFzTmFtZWRJdGVtKGtleS5p
bXBsKCkpIHx8IGh0bWxEb2N1bWVudC0+aGFzRXh0cmFOYW1lZEl0ZW0oa2V5LmltcGwoKSkpOwog
CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGh0bWxEb2N1bWVudC0+ZG9jdW1l
bnROYW1lZEl0ZW1zKGtleSk7CiAgICAgaWYgKCFpdGVtcy0+bGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CiAKICAgICBpZiAoaXRlbXMtPmxlbmd0aCgpID09IDEpIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IGl0ZW1zLT5maXJzdEl0ZW0oKTsKQEAgLTEwNCwxMyArOTMsNiBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHRvVjgoaXRlbXMucmVsZWFzZSgpKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjppbmRleGVkUHJvcGVy
dHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8gJmluZm8pIAot
ewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC5JbmRleGVkUHJvcGVydHlHZXR0ZXIi
KTsKLSAgICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGluZGV4VjggPSB2ODo6SW50ZWdlcjo6TmV3
RnJvbVVuc2lnbmVkKGluZGV4KTsKLSAgICByZXR1cm4gbmFtZWRQcm9wZXJ0eUdldHRlcihpbmRl
eFY4LT5Ub1N0cmluZygpLCBpbmZvKTsKLX0KLQogLy8gSFRNTERvY3VtZW50IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
Ly8gQ29uY2F0ZW5hdGVzICJhcmdzIiB0byBhIHN0cmluZy4gSWYgYXJncyBpcyBlbXB0eSwgcmV0
dXJucyBlbXB0eSBzdHJpbmcuCkBAIC0xOTMsMTAgKzE3NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hCiAKIHZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQu
YWxsLl9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7Ci0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRDb3VudCgpID09
IFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIGluZm8uSG9sZGVyKCkt
PlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCB2YWx1ZSk7Cisg
ICAgLy8gSnVzdCBlbXVsYXRlIGEgbm9ybWFsIEpTIGJlaGF2aW91ci0tLWluc3RhbGwgYSBwcm9w
ZXJ0eSBvbiB0aGlzLgorICAgIGluZm8uVGhpcygpLT5Gb3JjZVNldChuYW1lLCB2YWx1ZSk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxEb2N1bWVudCogaW1wbCwgYm9vbCBm
b3JjZU5ld09iamVjdCkKQEAgLTIxMCwxMiArMTkwLDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQogICAgICAgICBp
ZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5mcmFtZSgpKSkKICAg
ICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdyYXBwZXIod3Jh
cHBlcik7CiAgICAgfQotICAgIC8vIENyZWF0ZSBtYXJrZXIgb2JqZWN0IGFuZCBpbnNlcnQgaXQg
aW4gdHdvIGludGVybmFsIGZpZWxkcy4KLSAgICAvLyBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50
IHRlbXBvcmFyeSBzaGFkb3dpbmcgb2YgZG9jdW1lbnQuYWxsLgotICAgIEFTU0VSVCh3cmFwcGVy
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENv
dW50KTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbWFya2VyID0gdjg6Ok9iamVjdDo6TmV3
KCk7Ci0gICAgd3JhcHBlci0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2Vy
SW5kZXgsIG1hcmtlcik7Ci0gICAgd3JhcHBlci0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1
bWVudDo6c2hhZG93SW5kZXgsIG1hcmtlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>