<?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>105559</bug_id>
          
          <creation_ts>2012-12-20 11:47:58 -0800</creation_ts>
          <short_desc>IndexedDB: IDBOpenDBRequest sometimes receives two blocked events</short_desc>
          <delta_ts>2022-08-01 18:56:06 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102713</dependson>
    
    <dependson>105658</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Michael Pruett">michael</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>dgrogan</cc>
    
    <cc>leviw</cc>
    
    <cc>michael</cc>
    
    <cc>rniwa</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>795612</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-20 11:47:58 -0800</bug_when>
    <thetext>IndexedDB: IDBOpenDBRequest sometimes receives two blocked events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795613</commentid>
    <comment_count>1</comment_count>
      <attachid>180376</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-20 11:48:40 -0800</bug_when>
    <thetext>Created attachment 180376
Repro layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795616</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-20 11:50:49 -0800</bug_when>
    <thetext>Derived a specific layout test for this case from the steps in http://wkbug.com/102713

Fix should be similar to http://wkrev.com/138268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795957</commentid>
    <comment_count>3</comment_count>
      <attachid>180444</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-20 16:48:46 -0800</bug_when>
    <thetext>Created attachment 180444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795958</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-20 16:49:05 -0800</bug_when>
    <thetext>Just a snapshot - I haven&apos;t tried this in content_shell or looked at other browsers yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796335</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-21 08:52:06 -0800</bug_when>
    <thetext>I think we can merge openConnection and openConnectionWithVersion - I may attempt to do that first and then rebase this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796486</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-21 15:00:35 -0800</bug_when>
    <thetext>Yeah, will rebase this on top of wkbug.com/105658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796537</commentid>
    <comment_count>7</comment_count>
      <attachid>180572</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-21 16:24:34 -0800</bug_when>
    <thetext>Created attachment 180572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796538</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-21 16:25:17 -0800</bug_when>
    <thetext>Rebased on top of http://wkrev.com/138400 - not broadly tested yet, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797337</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-26 10:15:52 -0800</bug_when>
    <thetext>Our behavior (both with and without this patch) differs from both FF and IE. I reached out to public-webapps but no responses yet (presumably due to holidays).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798858</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-02 13:55:50 -0800</bug_when>
    <thetext>dgrogan@, alecflett@ - pending feedback from other implementers, can you take a look?

If the consensus is to match what other browsers do then I think we&apos;d still want something based off this patch, but either make delete two-phase (like open) w/ the first phase that silently-waits followed by a second phase that does versionchange/blocked events. So I may push ahead with this. (I&apos;ll re-ping public-webapps on Monday when most folks should have recovered from the holidays.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826915</commentid>
    <comment_count>11</comment_count>
      <attachid>180572</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2013-02-06 17:33:54 -0800</bug_when>
    <thetext>Comment on attachment 180572
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:447
&gt; +    if (!m_pendingDeleteCalls.isEmpty() &amp;&amp; !isDeleteDatabaseBlocked()) {

The first clause of this condition isn&apos;t necessary, is it? Feel free to leave it in if you think it improves readability, though.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:450
&gt; +            deleteDatabaseFinal(pendingDeleteCall-&gt;callbacks());

It looks like each pending delete call after the first has no effect, correct? But this is the simplest and clearest way to process them all.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:457
&gt; +        ASSERT(m_pendingRunVersionChangeTransactionCalls.size() == 1);

I can&apos;t convince myself that this assert is right. If there&apos;s an open connection with version 1 and script calls open(&quot;db&quot;, 2); open(&quot;db&quot;, 3), won&apos;t there be two entries?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:582
&gt; +        if (connectionCount() &gt; 1)

You can remove this line.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:667
&gt; +    if (connectionCount() &gt; 2)

Your comment seems to indicate that this should be &gt;= 2.

&gt; LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt:64
&gt; +FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).

I think you&apos;ve fixed these since you wrote this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828782</commentid>
    <comment_count>12</comment_count>
      <attachid>180572</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-08 15:00:35 -0800</bug_when>
    <thetext>Comment on attachment 180572
Patch

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

Thanks for taking a look!

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:447
&gt;&gt; +    if (!m_pendingDeleteCalls.isEmpty() &amp;&amp; !isDeleteDatabaseBlocked()) {
&gt; 
&gt; The first clause of this condition isn&apos;t necessary, is it? Feel free to leave it in if you think it improves readability, though.

Correct; I&apos;ll remove it.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:450
&gt;&gt; +            deleteDatabaseFinal(pendingDeleteCall-&gt;callbacks());
&gt; 
&gt; It looks like each pending delete call after the first has no effect, correct? But this is the simplest and clearest way to process them all.

They all get callbacks-&gt;onSuccess() called in deleteDatabaseFinal(). So... yeah, this seems clearest to me.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:457
&gt;&gt; +        ASSERT(m_pendingRunVersionChangeTransactionCalls.size() == 1);
&gt; 
&gt; I can&apos;t convince myself that this assert is right. If there&apos;s an open connection with version 1 and script calls open(&quot;db&quot;, 2); open(&quot;db&quot;, 3), won&apos;t there be two entries?

In that case there should be multiple entries in m_pendingOpenCalls but at most one of those should have gotten into the upgradeneeded phase.

Does that make sense? (I confess it&apos;s been a while since I looked at this patch myself.)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:582
&gt;&gt; +        if (connectionCount() &gt; 1)
&gt; 
&gt; You can remove this line.

Ah yes, thanks.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:667
&gt;&gt; +    if (connectionCount() &gt; 2)
&gt; 
&gt; Your comment seems to indicate that this should be &gt;= 2.

Ooops. I&apos;ll try and come up with a test that gets stuck on this invalid test before correcting it.

&gt;&gt; LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt:64
&gt;&gt; +FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).
&gt; 
&gt; I think you&apos;ve fixed these since you wrote this patch?

Yep. Will need rebasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831268</commentid>
    <comment_count>13</comment_count>
      <attachid>187937</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-12 14:33:45 -0800</bug_when>
    <thetext>Created attachment 187937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831270</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-12 14:35:56 -0800</bug_when>
    <thetext>Updated patch with feedback from comments and rebased.

(In reply to comment #12)
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:457
&gt; &gt;&gt; +        ASSERT(m_pendingRunVersionChangeTransactionCalls.size() == 1);
&gt; &gt; 
&gt; &gt; I can&apos;t convince myself that this assert is right. If there&apos;s an open connection with version 1 and script calls open(&quot;db&quot;, 2); open(&quot;db&quot;, 3), won&apos;t there be two entries?
&gt; 
&gt; In that case there should be multiple entries in m_pendingOpenCalls but at most one of those should have gotten into the upgradeneeded phase.
&gt; 
&gt; Does that make sense? (I confess it&apos;s been a while since I looked at this patch myself.)

dgrogan@ - No change to the patch here - can you take another look, though?

&gt; &gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:667
&gt; &gt;&gt; +    if (connectionCount() &gt; 2)
&gt; &gt; 
&gt; &gt; Your comment seems to indicate that this should be &gt;= 2.
&gt; 
&gt; Ooops. I&apos;ll try and come up with a test that gets stuck on this invalid test before correcting it.

Fixed, but the previous code just would have resulted in extra no-op calls to processPendingCalls() if connectionCount() == 2 so the behavior can&apos;t be distinguished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841138</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-25 11:28:16 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Our behavior (both with and without this patch) differs from both FF and IE. I reached out to public-webapps but no responses yet (presumably due to holidays).

FYI, sounds like Firefox considers their behavior buggy. No word from IE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841139</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-25 11:28:49 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Updated patch with feedback from comments and rebased.
&gt; 
&gt; dgrogan@ - can you take another look, though?

ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852706</commentid>
    <comment_count>17</comment_count>
      <attachid>192552</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-11 14:06:36 -0700</bug_when>
    <thetext>Created attachment 192552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852709</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-11 14:07:45 -0700</bug_when>
    <thetext>Rebased.

dgrogan@ - can you take a look? See response to questions above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853001</commentid>
    <comment_count>19</comment_count>
      <attachid>192552</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-11 19:16:39 -0700</bug_when>
    <thetext>Comment on attachment 192552
Patch

Attachment 192552 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17161445

New failing tests:
editing/selection/selection-modify-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853530</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-03-12 09:10:09 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; New failing tests:
&gt; editing/selection/selection-modify-crash.html

I&apos;m guessing that&apos;s unrelated. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867309</commentid>
    <comment_count>21</comment_count>
      <attachid>196011</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-04-01 13:14:05 -0700</bug_when>
    <thetext>Created attachment 196011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867312</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-04-01 13:14:19 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=196011) [details]
&gt; Patch

Just a rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870874</commentid>
    <comment_count>23</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-04-08 10:50:19 -0700</bug_when>
    <thetext>Should this be moved to blink? If so, please clear the flags on the patch and mark this bug as invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873860</commentid>
    <comment_count>24</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-04-11 09:12:33 -0700</bug_when>
    <thetext>I&apos;ve copied this to blink. The issue/patch is still valid for WebKit. I&apos;m pinging possible new owners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1882145</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-07-11 14:55:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/96844951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1888280</commentid>
    <comment_count>26</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-08-01 18:56:06 -0700</bug_when>
    <thetext>We&apos;ve refactored the code a lot since the bug was fired, and we won&apos;t fire two blocked events on one IDBOpenDBRequest nowadays, see ServerOpenDBRequest::maybeNotifyRequestBlocked.

Also the test LayoutTests/storage/indexeddb/double-blocked-on-open.html added in the patch does not conform to the spec nowadays: new request won&apos;t be processed until the previous requests are completed, 
see https://www.w3.org/TR/IndexedDB/#connection-queues and https://www.w3.org/TR/IndexedDB/#opening.

So I will close this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180376</attachid>
            <date>2012-12-20 11:48:40 -0800</date>
            <delta_ts>2012-12-20 16:48:45 -0800</delta_ts>
            <desc>Repro layout test</desc>
            <filename>bug-105559-20121220114556.patch</filename>
            <type>text/plain</type>
            <size>4715</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjQwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjVlMzQ5NjkyZDFhODMyOWJmZDU5
YmU0NzQ2OWQwNzMyNWIxYTAzZC4uYTIzMTNlZDNkZDM2MjI0NGU2OGFhYTM5OTE0ZTIxYmY0MDdi
YzExMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTIwICBKb3NodWEgQmVsbCAgPGpz
YmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJPcGVuREJSZXF1ZXN0
IHNvbWV0aW1lcyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZ3Jlc3Npb24gdGVzdC4gQ3VycmVudGx5
IGZhaWxzLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZG91YmxlLWJsb2NrZWQtb24t
b3Blbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Rv
dWJsZS1ibG9ja2VkLW9uLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanM6IEFkZGVkLgorICAgICAg
ICAoZmlyc3RVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKGZpcnN0T3BlblN1Y2Nlc3MpOgorICAg
ICAgICAoc2Vjb25kT3BlbkJsb2NrZWQpOgorICAgICAgICAodGhpcmRPcGVuU3VjY2Vzcyk6Cisg
ICAgICAgIChzZWNvbmRPcGVuU3VjY2Vzcyk6CisKIDIwMTItMTItMjAgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkanVzdCBU
ZXN0RXhwZWN0YXRpb25zIGZvciBtZWRpYS90cmFjayB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Bl
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YwMDQ4MTVmZGM0NDJlNThkZmU4NWE2OTk3NTVi
ODA4Mjc0ZTNmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAK
K1JlZ3Jlc3Npb24gdGVzdCBmb3IgY2FzZSB3aGVyZSBhbiBJREJPcGVuREJSZXF1ZXN0IHJlY2Vp
dmVzIGEgc2Vjb25kIGJsb2NrZWQgZXZlbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8
fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWRE
QjsKKworZGJuYW1lID0gImRvdWJsZS1ibG9ja2VkLW9uLW9wZW4uaHRtbCIKK2luZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK2ZpcnN0VXBn
cmFkZU5lZWRlZCgpOgorYmxvY2tlZEV2ZW50RmlyZWQgPSBmYWxzZQorCitmaXJzdE9wZW5TdWNj
ZXNzKCk6Citjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2luZGV4ZWREQi5vcGVu
KGRibmFtZSwgMikKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworc2Vjb25kT3BlbkJsb2NrZWQo
KToKK1BBU1MgYmxvY2tlZEV2ZW50RmlyZWQgaXMgZmFsc2UKK2Jsb2NrZWRFdmVudEZpcmVkID0g
dHJ1ZQorCit0aGlyZE9wZW5TdWNjZXNzKCk6Citjb25uZWN0aW9uMyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK2Nvbm5lY3Rpb24xLmNsb3NlKCkKK2Nvbm5lY3Rpb24zLmNsb3NlKCkKKworc2Vjb25k
T3BlbkJsb2NrZWQoKToKK0ZBSUwgYmxvY2tlZEV2ZW50RmlyZWQgc2hvdWxkIGJlIGZhbHNlLiBX
YXMgdHJ1ZS4KK2Jsb2NrZWRFdmVudEZpcmVkID0gdHJ1ZQorCitzZWNvbmRPcGVuU3VjY2Vzcygp
OgorUEFTUyBibG9ja2VkRXZlbnRGaXJlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmNTVjNWYzNTUwMjdhMWY0YTQ3ZDk3MzRjNmMxODcyNjdhOTIxZjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVu
Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDQ5ODMyZmMzMjA3ZTc2NmRlN2JkZWU5ZDc4OTdmOWJhNTkyMTE2ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
b3VibGUtYmxvY2tlZC1vbi1vcGVuLmpzCkBAIC0wLDAgKzEsNTEgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiUmVncmVzc2lvbiB0ZXN0IGZvciBjYXNlIHdoZXJlIGFuIElEQk9wZW5E
QlJlcXVlc3QgcmVjZWl2ZXMgYSBzZWNvbmQgYmxvY2tlZCBldmVudC4iKTsKK2luZGV4ZWREQlRl
c3QoZmlyc3RVcGdyYWRlTmVlZGVkLCBmaXJzdE9wZW5TdWNjZXNzKTsKK2Z1bmN0aW9uIGZpcnN0
VXBncmFkZU5lZWRlZChldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9n
KCJibG9ja2VkRXZlbnRGaXJlZCA9IGZhbHNlIik7Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3BlblN1
Y2Nlc3MoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiY29ubmVj
dGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHNl
Y29uZE9wZW5CbG9ja2VkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2Vjb25kT3BlblN1Y2Nlc3M7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJl
cXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB0aGlyZE9wZW5TdWNjZXNzOworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuQmxv
Y2tlZChldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9j
a2VkRXZlbnRGaXJlZCIpOworICAgIGV2YWxBbmRMb2coImJsb2NrZWRFdmVudEZpcmVkID0gdHJ1
ZSIpOworfQorCitmdW5jdGlvbiB0aGlyZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJs
ZShldnQpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xLmNsb3NlKCkiKTsKKyAgICBldmFsQW5k
TG9nKCJjb25uZWN0aW9uMy5jbG9zZSgpIik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW5TdWNj
ZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tl
ZEV2ZW50RmlyZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180444</attachid>
            <date>2012-12-20 16:48:46 -0800</date>
            <delta_ts>2012-12-21 16:24:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105559-20121220164602.patch</filename>
            <type>text/plain</type>
            <size>29912</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTYxZDgzNTA5YmYzNDFi
YjVlNzliZmJiYWJmMDhlOWFiY2UxYzAwOC4uZmE2MzczYjVjY2U3YjIwYTFkZTJjZjdhYTkyMGQ2
OGNmNjNlYTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEyLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJP
cGVuREJSZXF1ZXN0IHNvbWV0aW1lcyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hdGNoIHRoZSBJREIg
c3BlYyBtb3JlIGNsb3NlbHkgZm9yIHRoZSBzdGVwcyBmb3Igb3BlbnMsIGRlbGV0ZXMsIGFuZCB2
ZXJzaW9uIGNoYW5nZXM6CisKKyAgICAgICAgVGhlIG9wZW4gc3RlcHM6CisgICAgICAgIC0gd2Fp
dCB1bnRpbCB0aGVyZSBhcmUgbm8gcnVubmluZyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb25z
IG9yIHBlbmRpbmcgZGVsZXRlcy4KKyAgICAgICAgLSBjcmVhdGUgYSAvY29ubmVjdGlvbi8KKyAg
ICAgICAgLSBydW4gdGhlICJ2ZXJzaW9uY2hhbmdlIiBzdGVwcyAoaWYgbmVjZXNzYXJ5KQorICAg
ICAgICBUaGUgInZlcnNpb25jaGFuZ2UiIHN0ZXBzOgorICAgICAgICAtIHNlbmQgInZlcnNpb25j
aGFuZ2UiIGFuZCAiYmxvY2tlZCIgZXZlbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAtIHdhaXQg
Zm9yIGFsbCBvdGhlciBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQKKyAgICAgICAgLSBjcmVhdGUg
YW4gZXhlY3V0ZSBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbgorCisgICAgICAgIFJlbGF0
aXZlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbidzIHByZXZpb3VzIGJlaGF2aW9yLCB0aGUgb3Blbi92
ZXJzaW9uY2hhbmdlIHN0ZXBzCisgICAgICAgIGFyZSBuZXZlciByZS1ydW4gc28gZHVwbGljYXRl
ICJibG9ja2VkIiBldmVudHMgYXJlIG5ldmVyIHNlbnQuIEFsc28sIHRoZSBjb25jZXB0dWFsCisg
ICAgICAgIC9jb25uZWN0aW9uLyBpcyBjcmVhdGVkIGVhcmxpZXIgd2hpY2ggYWZmZWN0cyBsYXRl
ciBkZWxldGVEYXRhYmFzZSByZXF1ZXN0cywgd2hpY2gKKyAgICAgICAgYXJlIGJsb2NrZWQgb24g
Y29ubmVjdGlvbnMuIFRoaXMgYWZmZWN0cyBhIGhhbmRmdWwgb2YgdGVzdHMgd2hpY2ggcHJvYmVk
IHRoaXMKKyAgICAgICAgaW50ZXJhY3Rpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5odG1sCisg
ICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25D
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNz
UGVuZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25GaW5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjppc1J1blZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkZp
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbkZpbmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKToKKwogMjAxMi0xMi0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBMb3RzIG9mIHN0aWNreSB0ZXN0cyBmYWlsaW5n
IGluIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAwMjYxNWVjNjA4ZDViMjk2MDFjMTQ3
YWY4NDZjYjVlNzM1MGJmYjczLi5kNzMzMzJhMjUwOWMyNmM2ZDFlODFkNTUyMDlhMTAyY2FmOTZh
MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9UZW1w
b3JhcnlDaGFuZ2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NTAsNyArNDUxLDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29t
cGxldGVGaXJlZChQYXNzUmVmUHRyPElEQlQKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygp
OwogfQogCi1zaXplX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50KCkK
K3NpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBwZW5kaW5nIG9wZW4gY2FsbHMsIGFzIHRo
b3NlIHNob3VsZCBub3QgYmxvY2sgdmVyc2lvbiBjaGFuZ2VzIGFuZCBkZWxldGVzLgogICAgIHJl
dHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKTsKQEAgLTQ2NiwzOSArNDY3LDM5IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAg
ICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNvbXBsZXRlLCBhcyBwZW5kaW5nIGRlbGV0ZXMgbWF5
IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4KICAgICB9CiAKLSAgICAvLyBOb3RlIHRoYXQgdGhp
cyBjaGVjayBpcyBvbmx5IGFuIG9wdGltaXphdGlvbiB0byByZWR1Y2UgcXVldWUtY2h1cm4gYW5k
Ci0gICAgLy8gbm90IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3M7IGRlbGV0ZURhdGFiYXNlIGFu
ZCBvcGVuQ29ubmVjdGlvbiB3aWxsCi0gICAgLy8gcmVxdWV1ZSB0aGVpciBjYWxscyBpZiB0aGlz
IGNvbmRpdGlvbiBpcyB0cnVlLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlz
RW1wdHkoKSAmJiAhaXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKSkgeworICAgICAgICB3aGlsZSAo
IW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgT3duUHRyPFBl
bmRpbmdEZWxldGVDYWxsPiBwZW5kaW5nRGVsZXRlQ2FsbCA9IG1fcGVuZGluZ0RlbGV0ZUNhbGxz
LnRha2VGaXJzdCgpOworICAgICAgICAgICAgZGVsZXRlRGF0YWJhc2VGaW5hbChwZW5kaW5nRGVs
ZXRlQ2FsbC0+Y2FsbGJhY2tzKCkpOworICAgICAgICB9CisgICAgICAgIC8vIGRlbGV0ZURhdGFi
YXNlRmluYWwgc2hvdWxkIG5ldmVyIHJlLXF1ZXVlIGNhbGxzLgorICAgICAgICBBU1NFUlQobV9w
ZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpKTsKKyAgICB9CiAKLSAgICBpZiAoIW1fcGVuZGlu
Z0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSAmJiBpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpKQorICAg
IGlmICghbV9wZW5kaW5nUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHMuaXNFbXB0eSgp
ICYmICFpc1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSkgeworICAgICAgICBB
U1NFUlQobV9wZW5kaW5nUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHMuc2l6ZSgpID09
IDEpOworICAgICAgICBPd25QdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdD
YWxsID0gbV9wZW5kaW5nUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHMudGFrZUZpcnN0
KCk7CisgICAgICAgIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkZpbmFsKHBlbmRpbmdDYWxs
LT5jYWxsYmFja3MoKSwgcGVuZGluZ0NhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdD
YWxsLT50cmFuc2FjdGlvbklkKCksIHBlbmRpbmdDYWxsLT52ZXJzaW9uKCkpOwogICAgICAgICBy
ZXR1cm47Ci0gICAgd2hpbGUgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgT3duUHRyPFBlbmRpbmdEZWxldGVDYWxsPiBwZW5kaW5nRGVsZXRlQ2FsbCA9IG1fcGVu
ZGluZ0RlbGV0ZUNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBkZWxldGVEYXRhYmFzZUZpbmFs
KHBlbmRpbmdEZWxldGVDYWxsLT5jYWxsYmFja3MoKSk7CiAgICAgfQotICAgIC8vIGRlbGV0ZURh
dGFiYXNlRmluYWwgc2hvdWxkIG5ldmVyIHJlLXF1ZXVlIGNhbGxzLgotICAgIEFTU0VSVChtX3Bl
bmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpOwogCi0gICAgLy8gVGhpcyBjaGVjayBpcyBhbHNv
IG5vdCByZWFsbHkgbmVlZGVkLCBvcGVuQ29ubmVjdGlvbiB3b3VsZCBqdXN0IHJlcXVldWUgaXRz
IGNhbGxzLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pCisgICAg
aWYgKGlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8v
IE9wZW4gY2FsbHMgY2FuIGJlIHJlcXVldWVkIGlmIGFuIG9wZW5XaXRoVmVyc2lvbiBjYWxsIHN0
YXJ0ZWQgYSB2ZXJzaW9uCisgICAgLy8gY2hhbmdlIHRyYW5zYWN0aW9uLgogICAgIERlcXVlPE93
blB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHM7CiAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc3dhcChwZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGxzLmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGxzLnRha2VGaXJzdCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT50
cmFuc2FjdGlvbklkKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOwor
ICAgICAgICBPd25QdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdDYWxsID0g
cGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBvcGVuQ29u
bmVjdGlvbldpdGhWZXJzaW9uRmluYWwocGVuZGluZ0NhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5n
Q2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ0NhbGwtPnRyYW5zYWN0aW9uSWQoKSwg
cGVuZGluZ0NhbGwtPnZlcnNpb24oKSk7CiAgICAgfQogCi0gICAgLy8gT3BlbiBjYWxscyBjYW4g
YmUgcmVxdWV1ZWQgaWYgYW4gb3BlbldpdGhWZXJzaW9uIGNhbGwgc3RhcnRlZCBhIHZlcnNpb24K
LSAgICAvLyBjaGFuZ2UgdHJhbnNhY3Rpb24uCiAgICAgRGVxdWU8T3duUHRyPFBlbmRpbmdPcGVu
Q2FsbD4gPiBwZW5kaW5nT3BlbkNhbGxzOwogICAgIG1fcGVuZGluZ09wZW5DYWxscy5zd2FwKHBl
bmRpbmdPcGVuQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgT3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gcGVuZGluZ09wZW5DYWxsID0gcGVu
ZGluZ09wZW5DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGlu
Z09wZW5DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5DYWxsLT5kYXRhYmFzZUNhbGxiYWNr
cygpLCBwZW5kaW5nT3BlbkNhbGwtPnRyYW5zYWN0aW9uSWQoKSk7CisgICAgICAgIE93blB0cjxQ
ZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdDYWxsID0gcGVuZGluZ09wZW5DYWxscy50YWtlRmlyc3Qo
KTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25GaW5hbChwZW5kaW5nQ2FsbC0+Y2FsbGJhY2tzKCks
IHBlbmRpbmdDYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nQ2FsbC0+dHJhbnNhY3Rp
b25JZCgpKTsKICAgICB9CiB9CiAKQEAgLTUxNiwxMyArNTE3LDI2IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y3JlYXRlVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQ
YXNzUmVmUHRyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6aXNPcGVuQ29ubmVjdGlvbkJsb2NrZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ0RlbGV0
ZUNhbGxzLmlzRW1wdHkoKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVu
Q29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2Fj
dGlvbklkKQogewogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgaWYgKCFt
X3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKSB7CisgICAgaWYgKGlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKCkpIHsKICAgICAg
ICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxs
YmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICBvcGVuQ29ubmVjdGlvbkZpbmFsKGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MsIHRyYW5zYWN0aW9uSWQpOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW5Db25uZWN0aW9uRmluYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCkKK3sKKyAgICBBU1NFUlQoIWlzT3BlbkNvbm5lY3Rpb25CbG9j
a2VkKCkpOworCiAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50
ZXJuYWwoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJv
ciBvcGVuaW5nIGRhdGFiYXNlIHdpdGggbm8gdmVyc2lvbiBzcGVjaWZpZWQuIikpOwogICAgICAg
ICByZXR1cm47CkBAIC01MzEsNTcgKzU0NSw3OCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsCiAg
ICAgICAgIC8vIFNwZWMgc2F5czogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRh
dGFiYXNlIGV4aXN0cywgc2V0CiAgICAgICAgIC8vIGRhdGFiYXNlIHZlcnNpb24gdG8gMS4gV2Ug
aW5mZXIgdGhhdCB0aGUgZGF0YWJhc2UgZGlkbid0IGV4aXN0IGZyb20KICAgICAgICAgLy8gaXRz
IGxhY2sgb2YgZWl0aGVyIHR5cGUgb2YgdmVyc2lvbi4KLSAgICAgICAgb3BlbkNvbm5lY3Rpb25X
aXRoVmVyc2lvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCAx
KTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbkZpbmFsKGNhbGxiYWNrcywgZGF0
YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIDEpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlz
KTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQorYm9vbCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjppc1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSBjb25z
dAoreworICAgIHJldHVybiBjb25uZWN0aW9uQ291bnQoKSA+IDE7Cit9CisKK3ZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
cmVxdWVzdGVkVmVyc2lvbikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFz
ZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIEFTU0VSVChjYWxsYmFja3Mp
OwotICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9k
YXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0
LmVuZCgpOyArK2l0KSB7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFp
bnMoZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICBpZiAoaXNSdW5WZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb25CbG9ja2VkKCkpIHsKICAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50
IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4K
LSAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKLSAgICAgICAgICAgICgqaXQp
LT5vblZlcnNpb25DaGFuZ2UobV9tZXRhZGF0YS5pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9u
KTsKLSAgICB9Ci0gICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhl
IHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKLSAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hl
Y2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCi0gICAgLy8g
b3IgZmlyaW5nIGEgYmxvY2tlZCBldmVudCwgYnV0IGluc3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNp
c3RlbnQgd2l0aCBob3cKLSAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBk
aWQgaXQuCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJsb2NrZWQgYW5kIGlu
c3RlYWQgd2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKLSAgICAvLyB0ZWxscyB1cyB0aGF0IGFsbCB0
aGUgYmxvY2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rp
b25Db3VudCgpKQotICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX21ldGFkYXRhLmludFZl
cnNpb24pOwotICAgIC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24g
fHwgY29ubmVjdGlvbkNvdW50KCkpIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbikpOwor
ICAgICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNr
cy5nZXQoKSkKKyAgICAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1fbWV0YWRh
dGEuaW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgICAgIH0KKyAgICAgICAgLy8g
VGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2
ZW50cyBhcmUKKyAgICAgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNoZWNrIG1fZGF0YWJhc2VD
YWxsYmFja3MuZW1wdHkoKSBiZWZvcmUgcHJvY2VlZGluZworICAgICAgICAvLyBvciBmaXJpbmcg
YSBibG9ja2VkIGV2ZW50LCBidXQgaW5zdGVhZCB3ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRo
IGhvdworICAgICAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQgaXQu
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGNhbGwgdG8gb25CbG9ja2VkIGFuZCBpbnN0
ZWFkIHdhaXQgdW50aWwgdGhlIGZyb250ZW5kCisgICAgICAgIC8vIHRlbGxzIHVzIHRoYXQgYWxs
IHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCisgICAgICAgIGlm
IChjb25uZWN0aW9uQ291bnQoKSA+IDEpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tl
ZChtX21ldGFkYXRhLmludFZlcnNpb24pOworCisgICAgICAgIG1fcGVuZGluZ1J1blZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVl
c3RlZFZlcnNpb24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBydW5WZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb25GaW5hbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2Fj
dGlvbklkLCByZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpydW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25GaW5hbChQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBE
YXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3Rl
ZFZlcnNpb24pCit7CisgICAgQVNTRVJUKCFpc1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJs
b2NrZWQoKSk7CiAKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxpbnQ2NF90PiBvYmplY3RTdG9y
ZUlkczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbkludGVyZmFjZSA9IGNyZWF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIG9iamVjdFN0
b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25JbnRlcmZhY2UuZ2V0KCkpOwogCi0gICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2Fs
bGJhY2tzKSwgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRh
ZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNpb24pKSkgeworICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
dHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxi
YWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fbWV0YWRh
dGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkpCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIH0KKwogICAgIEFTU0VSVCghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5X
aXRoVmVyc2lvbik7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxs
YmFja3MpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9u
V2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJh
Y2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKIHsKLSAgICBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJh
Y2tzOwotICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgeworICAgIGlmIChpc09wZW5Db25uZWN0aW9uQmxv
Y2tlZCgpKSB7CiAgICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxs
YmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uRmluYWwoY2FsbGJhY2tzLCBkYXRhYmFzZUNh
bGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbik7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbkZpbmFsKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVy
c2lvbikKK3sKKyAgICBBU1NFUlQoIWlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKCkpOworCisgICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNh
bGxiYWNrczsKKwogICAgIGlmIChtX21ldGFkYXRhLmlkID09IEludmFsaWRJZCkgewogICAgICAg
ICBpZiAob3BlbkludGVybmFsKCkpCiAgICAgICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5pbnRW
ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CkBAIC01OTEsNyAr
NjI2LDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhW
ZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAgICB9CiAgICAgfQogICAgIGlm
ICh2ZXJzaW9uID4gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Ci0gICAgICAgIHJ1bkludFZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2Fj
dGlvbklkLCB2ZXJzaW9uKTsKKyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0
YWJhc2VDYWxsYmFja3MpOworICAgICAgICBydW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY2Fs
bGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRhLmludFZlcnNp
b24pIHsKQEAgLTYyMSw3ICs2NTcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRl
bGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawogICAgIGRl
bGV0ZURhdGFiYXNlRmluYWwoY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6aXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKQorYm9vbCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjppc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNvbm5lY3Rpb25Db3VudCgpOwogfQpAQCAtNjUyLDkgKzY4OCw2IEBAIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzCiAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNp
b24ucmVsZWFzZSgpOwogICAgIH0KIAotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIC8vIHByb2Nlc3NQZW5kaW5nQ2FsbHMgYWxsb3dzIHRoZSBp
bnNwZWN0b3IgdG8gcHJvY2VzcyBhIHBlbmRpbmcgb3BlbiBjYWxsCiAgICAgLy8gYW5kIGNhbGwg
Y2xvc2UsIHJlZW50ZXJpbmcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UuIFRoZW4gdGhl
CiAgICAgLy8gYmFja2VuZCB3b3VsZCBiZSByZW1vdmVkIGJvdGggYnkgdGhlIGluc3BlY3RvciBj
bG9zaW5nIGl0cyBjb25uZWN0aW9uLCBhbmQKQEAgLTY2Miw3ICs2OTUsMTIgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MKICAgICAvLyBUbyBhdm9pZCB0aGF0IHNpdHVhdGlvbiwgZG9uJ3QgcHJv
Y2VlZCBpbiBjYXNlIG9mIHJlZW50cmFuY3kuCiAgICAgaWYgKG1fY2xvc2luZ0Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nsb3NpbmdDb25uZWN0aW9uID0gdHJ1ZTsKKyAgICBU
ZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2xvc2luZ0Nvbm5lY3Rpb24obV9jbG9zaW5nQ29ubmVjdGlv
biwgdHJ1ZSk7CisKKyAgICAvLyBJZiB0aGVyZSBhcmUgMiBjb25uZWN0aW9ucyByZW1haW5pbmcg
b3BlcmF0aW9ucyBhcmUgbm90IHVuYmxvY2tlZCwgYnV0IGEgY291bnQKKyAgICAvLyBvZiAxIHVu
YmxvY2tzIGEgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24sIGFuZCBhIGNvdW50IG9mIDAgdW5i
bG9ja3MgYSBkZWxldGUuCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMikKKyAgICAgICAg
cmV0dXJuOwogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQg
YSB0ZXN0IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxzIGFuZCBtX3BlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxscyBjYXNlcyBiZWxvdy4KQEAgLTY3OSw3ICs3MTcsNiBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBy
cENhbGxiYWNrcwogICAgICAgICBpZiAobV9mYWN0b3J5KQogICAgICAgICAgICAgbV9mYWN0b3J5
LT5yZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQobV9pZGVudGlmaWVyKTsKICAgICB9Ci0gICAgbV9j
bG9zaW5nQ29ubmVjdGlvbiA9IGZhbHNlOwogfQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmxvYWRPYmplY3RTdG9yZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDhiYjM1ZGUzNDYx
YzA0OGJjZjkzMDZlMDhjMDc2MTA0ZTA1MTQ0YjEuLjhiYWIxYjIxODg4ZWQyMjdmNWUxNjgwMDNi
MzNlMTIyODZhNmFkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTkxLDEyICs5MSwxOSBAQCBw
cml2YXRlOgogICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKLSAg
ICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3Rv
cmVzKCk7Ci0gICAgc2l6ZV90IGNvbm5lY3Rpb25Db3VudCgpOworICAgIHNpemVfdCBjb25uZWN0
aW9uQ291bnQoKSBjb25zdDsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAotICAg
IGJvb2wgaXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKTsKKyAgICBib29sIGlzUnVuVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uQmxvY2tlZCgpIGNvbnN0OworICAgIHZvaWQgcnVuVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKTsKKyAgICB2b2lkIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkZpbmFsKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKKworICAgIGJv
b2wgaXNPcGVuQ29ubmVjdGlvbkJsb2NrZWQoKSBjb25zdDsKKyAgICB2b2lkIG9wZW5Db25uZWN0
aW9uRmluYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkKTsKKyAgICB2b2lkIG9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb25GaW5hbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVy
c2lvbik7CisKKyAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkgY29uc3Q7CiAgICAg
dm9pZCBkZWxldGVEYXRhYmFzZUZpbmFsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAg
ICBjbGFzcyBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjsKQEAgLTEyOSw2ICsxMzYsNyBAQCBw
cml2YXRlOgogCiAgICAgY2xhc3MgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw7CiAgICAgRGVx
dWU8T3duUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiA+IG1fcGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGxzOworICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bD4gPiBtX3BlbmRpbmdSdW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25DYWxsczsKICAgICBPd25Q
dHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0
aFZlcnNpb247CiAKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMWVmNzBl
MmYxYmQ5NjJiZmZhZjY1MjE0NDIwZjY3N2NkNjE4ZmMzLi40NWY3MWI0Zjk0ZWYwMDc1YmU4YTZk
ZTcyYzQyMDdkZjc2YzdhODdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTItMjAgIEpv
c2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElE
Qk9wZW5EQlJlcXVlc3Qgc29tZXRpbWVzIHJlY2VpdmVzIHR3byBibG9ja2VkIGV2ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NTU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUt
YmxvY2tlZC1vbi1vcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5n
ZS5qczoKKyAgICAgICAgKGgxT3BlblN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MuaDJPcGVuU3Vj
Y2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanM6IEFkZGVkLgorICAgICAgICAoZmlyc3RV
cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKGZpcnN0T3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2Vj
b25kT3BlbkJsb2NrZWQpOgorICAgICAgICAodGhpcmRPcGVuU3VjY2Vzcyk6CisgICAgICAgIChz
ZWNvbmRPcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qczoKKyAgICAgICAgKGNvbm5lY3Rpb24yVXBncmFkZU5l
ZWRlZCk6CisgICAgICAgIChjb25uZWN0aW9uMlN1Y2Nlc3MpOgorICAgICAgICAoY29ubmVjdGlv
bjNVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKGNvbm5lY3Rpb24zU3VjY2Vzcyk6CisKIDIwMTIt
MTItMjAgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBnbWFpbC5jb20+CiAKICAgICAgICAgQmxv
Y2sgbGV2ZWwgcHNldWRvIGVsZW1lbnRzIGJsZWVkIGJhY2tncm91bmQgY29sb3IgdG8gPGh0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFz
ZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLWV4
cGVjdGVkLnR4dAppbmRleCAwZDhmMzQ1M2FiYTI3ZDFhNDAxMGVhYzdmNjY4MzYzODRlNGQyMGIz
Li4wNGJlY2JkNGNhMTczMDhkYjM4YmQzMzJmOWVhZDBjZTg3ZjNlNDI3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZl
cnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS1leHBlY3RlZC50eHQK
QEAgLTQ2LDE1ICs0NiwxNiBAQCBkZWxldGVEYXRhYmFzZU9uQmxvY2tlZCgpOgogZGVsZXRlRGF0
YWJhc2VCbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUKIGgxLmNsb3NlKCkKIAotZGVsZXRlRGF0YWJh
c2VPblN1Y2Nlc3MoKToKLWRlbGV0ZURhdGFiYXNlQ29tcGxldGUgPSB0cnVlCi0KIGgzT25VcGdy
YWRlbmVlZGVkKCk6CiAKIHRyYW5zYWN0aW9uT25Db21wbGV0ZSgpOgogdmVyc2lvbkNoYW5nZUNv
bXBsZXRlID0gdHJ1ZQogCiBoM09wZW5TdWNjZXNzKCk6CitoMy5jbG9zZSgpCisKK2RlbGV0ZURh
dGFiYXNlT25TdWNjZXNzKCk6CitkZWxldGVEYXRhYmFzZUNvbXBsZXRlID0gdHJ1ZQogCiBoNE9w
ZW5TdWNjZXNzKCk6CiBQQVNTIHNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCBpcyB0cnVlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1v
bi1vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJs
ZS1ibG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MDQ5M2IyNzVmMDhh
YmQxMzliZGIwYTJkYzg4ZGI1MjljNDM3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM0IEBACitSZWdyZXNzaW9uIHRlc3QgZm9yIGNhc2Ugd2hlcmUgYW4gSURCT3Bl
bkRCUmVxdWVzdCByZWNlaXZlcyBhIHNlY29uZCBibG9ja2VkIGV2ZW50LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53
ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8
fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJkb3VibGUtYmxvY2tlZC1vbi1vcGVuLmh0
bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJu
YW1lKQorCitmaXJzdFVwZ3JhZGVOZWVkZWQoKToKK2Jsb2NrZWRFdmVudEZpcmVkID0gZmFsc2UK
KworZmlyc3RPcGVuU3VjY2VzcygpOgorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0
CitpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3Nl
Y29uZE9wZW5CbG9ja2VkKCk6CitQQVNTIGJsb2NrZWRFdmVudEZpcmVkIGlzIGZhbHNlCitibG9j
a2VkRXZlbnRGaXJlZCA9IHRydWUKKwordGhpcmRPcGVuU3VjY2VzcygpOgorY29ubmVjdGlvbjMg
PSBldmVudC50YXJnZXQucmVzdWx0Citjb25uZWN0aW9uMS5jbG9zZSgpCitjb25uZWN0aW9uMy5j
bG9zZSgpCisKK3NlY29uZE9wZW5TdWNjZXNzKCk6CitQQVNTIGJsb2NrZWRFdmVudEZpcmVkIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tl
ZC1vbi1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxv
Y2tlZC1vbi1vcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1NWM1ZjM1NTAyN2ExZjRhNDdkOTczNGM2
YzE4NzI2N2E5MjFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb3VibGUtYmxv
Y2tlZC1vbi1vcGVuLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1sb25nLXF1
ZXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQKaW5kZXggYmJiNjBjZDcwNTIyY2JhMWNiNzVjNGM2
ZjBlOTgyZjEyMWM3NzJkZC4uMGJhODMwZTgzY2Y2Zjg0NGJkN2EzM2UyMGEzM2NhZmE0NmUzNDUx
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1s
b25nLXF1ZXVlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLWxvbmctcXVldWUtZXhwZWN0ZWQudHh0CkBAIC00MiwxNCArNDIsOCBAQCBG
QUlMIGV2ZW50Lm9sZFZlcnNpb24gc2hvdWxkIGJlIDEgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVu
ZGVmaW5lZCAob2YgdHlwZSB1bmRlZgogRkFJTCBldmVudC5uZXdWZXJzaW9uIHNob3VsZCBiZSBu
dWxsIChvZiB0eXBlIG9iamVjdCkuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4K
IEZBSUwgZXZlbnQudmVyc2lvbiBzaG91bGQgYmUgdW5kZWZpbmVkLiBXYXMgCiAKLWRlbGV0ZURh
dGFiYXNlU3VjY2Vzc0NhbGxiYWNrKCk6Ci1QQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5k
ZWZpbmVkLgotRklYTUU6IGh0dHA6Ly9jcmJ1Zy5jb20vMTUzMTIyCi1GQUlMIGV2ZW50Lm9sZFZl
cnNpb24gc2hvdWxkIGJlIDEgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlw
ZSB1bmRlZmluZWQpLgotRkFJTCBldmVudC5uZXdWZXJzaW9uIHNob3VsZCBiZSBudWxsIChvZiB0
eXBlIG9iamVjdCkuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLQogY29ubmVj
dGlvbjJVcGdyYWRlTmVlZGVkKCk6Ci1QQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBl
dmVudC5vbGRWZXJzaW9uIGlzIDEKIFBBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAyCiBkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKIFBBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMApA
QCAtNjIsMjMgKzU2LDIyIEBAIFBBU1MgZGIudmVyc2lvbiBpcyAyCiAKIGNvbm5lY3Rpb24yU3Vj
Y2VzcygpOgogY29ubmVjdGlvbjIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1jb25uZWN0aW9uMi5v
bnZlcnNpb25jaGFuZ2UgPSBjb25uZWN0aW9uMlZlcnNpb25DaGFuZ2VFdmVudAotCi1jb25uZWN0
aW9uMlZlcnNpb25DaGFuZ2VFdmVudCgpOgotUEFTUyBldmVudC50eXBlIGlzICJ2ZXJzaW9uY2hh
bmdlIgotUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDIKLVBBU1MgZXZlbnQubmV3VmVyc2lvbiBp
cyAzCi1QQVNTIGV2ZW50LnZlcnNpb24gaXMgdW5kZWZpbmVkLgogY29ubmVjdGlvbjIuY2xvc2Uo
KQogCitkZWxldGVEYXRhYmFzZVN1Y2Nlc3NDYWxsYmFjaygpOgorUEFTUyBldmVudC50YXJnZXQu
cmVzdWx0IGlzIHVuZGVmaW5lZC4KK0ZJWE1FOiBodHRwOi8vY3JidWcuY29tLzE1MzEyMgorRkFJ
TCBldmVudC5vbGRWZXJzaW9uIHNob3VsZCBiZSAxIChvZiB0eXBlIG51bWJlcikuIFdhcyB1bmRl
ZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KK0ZBSUwgZXZlbnQubmV3VmVyc2lvbiBzaG91bGQg
YmUgbnVsbCAob2YgdHlwZSBvYmplY3QpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5l
ZCkuCisKIGNvbm5lY3Rpb24zVXBncmFkZU5lZWRlZCgpOgogZ290VXBncmFkZU5lZWRlZEV2ZW50
ID0gdHJ1ZQogUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKLVBBU1MgZXZlbnQub2xkVmVyc2lv
biBpcyAyCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAogCiBjb25uZWN0aW9uM1N1Y2Nlc3Mo
KToKIFBBU1MgZ290VXBncmFkZU5lZWRlZEV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50LnRhcmdldC5y
ZXN1bHQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9u
Y2hhbmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0
ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5qcwppbmRleCBhNjY1YmZjZTg5ZmI4
YzViZjg5MjdhOWU2ZjJmNjY3ZDYzYTFiMmU2Li41OTI1MmFjZGMwYmEwMGZlYzAwMjU5NDE0YjU4
YThkMTJjOWFjYTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1k
ZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UuanMKQEAgLTQzLDcgKzQzLDkgQEAgZnVuY3Rpb24gaDFP
cGVuU3VjY2VzcyhldnQpCiAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwogICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGgzT3BlblN1
Y2Nlc3MoZXZ0KSB7CiAgICAgICAgICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICB9CisgICAg
ICAgICAgICBoMyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJoMy5jbG9zZSgpIik7CisgICAgICAgIH07CiAgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0g
ZnVuY3Rpb24gaDNCbG9ja2VkKGV2dCkgewogICAgICAgICAgICAgcHJlYW1ibGUoZXZ0KTsKICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUi
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
b3VibGUtYmxvY2tlZC1vbi1vcGVuLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ5ODMyZmMz
MjA3ZTc2NmRlN2JkZWU5ZDc4OTdmOWJhNTkyMTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVu
LmpzCkBAIC0wLDAgKzEsNTEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiUmVncmVz
c2lvbiB0ZXN0IGZvciBjYXNlIHdoZXJlIGFuIElEQk9wZW5EQlJlcXVlc3QgcmVjZWl2ZXMgYSBz
ZWNvbmQgYmxvY2tlZCBldmVudC4iKTsKK2luZGV4ZWREQlRlc3QoZmlyc3RVcGdyYWRlTmVlZGVk
LCBmaXJzdE9wZW5TdWNjZXNzKTsKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQpCit7
CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJibG9ja2VkRXZlbnRGaXJlZCA9
IGZhbHNlIik7Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHBy
ZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFt
ZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHNlY29uZE9wZW5CbG9ja2VkOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2Vjb25kT3BlblN1Y2Nlc3M7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5l
eHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRV
cGdyYWRlTmVlZGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aGlyZE9wZW5T
dWNjZXNzOworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuQmxvY2tlZChldnQpCit7CisgICAgcHJl
YW1ibGUoZXZ0KTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkRXZlbnRGaXJlZCIpOworICAg
IGV2YWxBbmRMb2coImJsb2NrZWRFdmVudEZpcmVkID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiB0
aGlyZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24xLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9z
ZSgpIik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVh
bWJsZShldnQpOworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZEV2ZW50RmlyZWQiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWxvbmctcXVldWUuanMKaW5kZXgg
NWQ0MGU3ZDlmY2IxMjRkZDZiYzA3YTAwNzU2YjIzNWE4ZDAwYjU3ZC4uMGM4MjNmNmY5M2Y3N2Q2
MTcxNDg1NjA4MDg3OGU0OWUwY2FhZGFhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcworKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVl
LmpzCkBAIC03MCw3ICs3MCw3IEBAIGZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2Vzc0NhbGxi
YWNrKGV2dCkKIGZ1bmN0aW9uIGNvbm5lY3Rpb24yVXBncmFkZU5lZWRlZChldnQpCiB7CiAgICAg
cHJlYW1ibGUoZXZ0KTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMSIpOwogICAgIHNob3VsZEJlKCJldmVu
dC5uZXdWZXJzaW9uIiwgIjIiKTsKICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIp
OwpAQCAtODMsNyArODMsOCBAQCBmdW5jdGlvbiBjb25uZWN0aW9uMlN1Y2Nlc3MoZXZ0KQogewog
ICAgIHByZWFtYmxlKGV2dCk7CiAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIub252ZXJzaW9uY2hh
bmdlID0gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQiKTsKKyAgICBjb25uZWN0aW9uMi5v
bnZlcnNpb25jaGFuZ2UgPSB1bmV4cGVjdGVkVmVyc2lvbkNoYW5nZUNhbGxiYWNrOworICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb24yLmNsb3NlKCkiKTsKIH0KIAogZnVuY3Rpb24gY29ubmVjdGlv
bjJUcmFuc2FjdGlvbkNvbXBsZXRlKGV2dCkKQEAgLTkyLDI5ICs5MywxOSBAQCBmdW5jdGlvbiBj
b25uZWN0aW9uMlRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0KQogICAgIHNob3VsZEJlKCJkYi52ZXJz
aW9uIiwgIjIiKTsKIH0KIAotZnVuY3Rpb24gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQo
ZXZ0KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50eXBlIiwgInZlcnNpb25jaGFuZ2UiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVy
c2lvbiIsICIyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOwotICAg
IHNob3VsZEJlVW5kZWZpbmVkKCJldmVudC52ZXJzaW9uIik7Ci0gICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjIuY2xvc2UoKSIpOwotfQotCiB2YXIgZ290VXBncmFkZU5lZWRlZEV2ZW50ID0gZmFs
c2U7CiBmdW5jdGlvbiBjb25uZWN0aW9uM1VwZ3JhZGVOZWVkZWQoZXZ0KQogewogICAgIHByZWFt
YmxlKGV2dCk7CiAgICAgZXZhbEFuZExvZygiZ290VXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIp
OwogICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjMiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQub2xkVmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24i
LCAiMCIpOwogfQogCiBmdW5jdGlvbiBjb25uZWN0aW9uM1N1Y2Nlc3MoZXZ0KQogewogICAgIHBy
ZWFtYmxlKGV2dCk7CiAgICAgc2hvdWxkQmVUcnVlKCJnb3RVcGdyYWRlTmVlZGVkRXZlbnQiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIxIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMCIpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180572</attachid>
            <date>2012-12-21 16:24:34 -0800</date>
            <delta_ts>2013-02-12 14:33:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105559-20121221162149.patch</filename>
            <type>text/plain</type>
            <size>26357</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ0MGU4NDA4NjQ2MDY0
ODQ4OTNiMzUxOTU3ZWQ3OTU1N2ZhYjMwZS4uODZlN2ExYWNkZTJkMWFjYzM2MTcxOTE4YmM3OGJk
M2U5M2NhYWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEyLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJP
cGVuREJSZXF1ZXN0IHNvbWV0aW1lcyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hdGNoIHRoZSBJREIg
c3BlYyBtb3JlIGNsb3NlbHkgZm9yIHRoZSBzdGVwcyBmb3Igb3BlbnMsIGRlbGV0ZXMsIGFuZCB2
ZXJzaW9uIGNoYW5nZXM6CisKKyAgICAgICAgVGhlIG9wZW4gc3RlcHM6CisgICAgICAgIC0gd2Fp
dCB1bnRpbCB0aGVyZSBhcmUgbm8gcnVubmluZyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb25z
IG9yIHBlbmRpbmcgZGVsZXRlcy4KKyAgICAgICAgLSBjcmVhdGUgYSAvY29ubmVjdGlvbi8KKyAg
ICAgICAgLSBydW4gdGhlICJ2ZXJzaW9uY2hhbmdlIiBzdGVwcyAoaWYgbmVjZXNzYXJ5KQorICAg
ICAgICBUaGUgInZlcnNpb25jaGFuZ2UiIHN0ZXBzOgorICAgICAgICAtIHNlbmQgInZlcnNpb25j
aGFuZ2UiIGFuZCAiYmxvY2tlZCIgZXZlbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAtIHdhaXQg
Zm9yIGFsbCBvdGhlciBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQKKyAgICAgICAgLSBjcmVhdGUg
YW4gZXhlY3V0ZSBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbgorCisgICAgICAgIFJlbGF0
aXZlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbidzIHByZXZpb3VzIGJlaGF2aW9yLCB0aGUgb3Blbi92
ZXJzaW9uY2hhbmdlIHN0ZXBzCisgICAgICAgIGFyZSBuZXZlciByZS1ydW4gc28gZHVwbGljYXRl
ICJibG9ja2VkIiBldmVudHMgYXJlIG5ldmVyIHNlbnQuIEFsc28sIHRoZSBjb25jZXB0dWFsCisg
ICAgICAgIC9jb25uZWN0aW9uLyBpcyBjcmVhdGVkIGVhcmxpZXIgd2hpY2ggYWZmZWN0cyBsYXRl
ciBkZWxldGVEYXRhYmFzZSByZXF1ZXN0cywgd2hpY2gKKyAgICAgICAgYXJlIGJsb2NrZWQgb24g
Y29ubmVjdGlvbnMuIFRoaXMgYWZmZWN0cyBhIGhhbmRmdWwgb2YgdGVzdHMgd2hpY2ggcHJvYmVk
IHRoaXMKKyAgICAgICAgaW50ZXJhY3Rpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5odG1sCisg
ICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25D
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNz
UGVuZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmlzUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQmxvY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5WZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6aXNEZWxldGVEYXRhYmFzZUJsb2NrZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFi
YXNlQmFja2VuZEltcGwpOgorCiAyMDEyLTEyLTIxICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpo
dUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFVzZSBoYXJmYnV6
ei1uZyBpbnN0ZWFkIG9mIGhhcmZidXp6LW9sZCBvbiBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwCmluZGV4IDI4NmM3OWVlZTJiYWZhYTI1YmE0OTk4YjUyZWY1OGYwMmU1YmFlOWMuLjdhYjMz
NzMzZDMyMTk0YzA4YTYwODZkZjFlZmNlNGFhMWY2YWFmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmgiCisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQyNyw3ICs0MjgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURC
VAogICAgICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiB9CiAKLXNpemVfdCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKQorc2l6ZV90IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkb2VzIG5vdCBp
bmNsdWRlIHBlbmRpbmcgb3BlbiBjYWxscywgYXMgdGhvc2Ugc2hvdWxkIG5vdCBibG9jayB2ZXJz
aW9uIGNoYW5nZXMgYW5kIGRlbGV0ZXMuCiAgICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQuc2l6ZSgpOwpAQCAtNDQzLDIzICs0NDQsMjMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHdoZW4g
Y29tcGxldGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBtYXkgYmUgKHBhcnRpYWxseSkgdW5ibG9ja2Vk
LgogICAgIH0KIAotICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNoZWNrIGlzIG9ubHkgYW4gb3B0aW1p
emF0aW9uIHRvIHJlZHVjZSBxdWV1ZS1jaHVybiBhbmQKLSAgICAvLyBub3QgbmVjZXNzYXJ5IGZv
ciBjb3JyZWN0bmVzczsgZGVsZXRlRGF0YWJhc2UgYW5kIG9wZW5Db25uZWN0aW9uIHdpbGwKLSAg
ICAvLyByZXF1ZXVlIHRoZWlyIGNhbGxzIGlmIHRoaXMgY29uZGl0aW9uIGlzIHRydWUuCi0gICAg
aWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikKLSAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpICYmICFpc0RlbGV0ZURhdGFi
YXNlQmxvY2tlZCgpKSB7CisgICAgICAgIHdoaWxlICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBPd25QdHI8UGVuZGluZ0RlbGV0ZUNhbGw+IHBlbmRpbmdE
ZWxldGVDYWxsID0gbV9wZW5kaW5nRGVsZXRlQ2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgICAg
ICBkZWxldGVEYXRhYmFzZUZpbmFsKHBlbmRpbmdEZWxldGVDYWxsLT5jYWxsYmFja3MoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gZGVsZXRlRGF0YWJhc2VGaW5hbCBzaG91bGQgbmV2ZXIgcmUt
cXVldWUgY2FsbHMuCisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5
KCkpOworICAgIH0KIAotICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpICYm
IGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkpCisgICAgaWYgKCFtX3BlbmRpbmdSdW5WZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb25DYWxscy5pc0VtcHR5KCkgJiYgIWlzUnVuVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uQmxvY2tlZCgpKSB7CisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdSdW5WZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb25DYWxscy5zaXplKCkgPT0gMSk7CisgICAgICAgIE93blB0cjxQZW5k
aW5nT3BlbkNhbGw+IHBlbmRpbmdDYWxsID0gbV9wZW5kaW5nUnVuVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uQ2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbkZpbmFsKHBlbmRpbmdDYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ0NhbGwtPmRhdGFiYXNl
Q2FsbGJhY2tzKCksIHBlbmRpbmdDYWxsLT50cmFuc2FjdGlvbklkKCksIHBlbmRpbmdDYWxsLT52
ZXJzaW9uKCkpOwogICAgICAgICByZXR1cm47Ci0gICAgd2hpbGUgKCFtX3BlbmRpbmdEZWxldGVD
YWxscy5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFBlbmRpbmdEZWxldGVDYWxsPiBwZW5k
aW5nRGVsZXRlQ2FsbCA9IG1fcGVuZGluZ0RlbGV0ZUNhbGxzLnRha2VGaXJzdCgpOwotICAgICAg
ICBkZWxldGVEYXRhYmFzZUZpbmFsKHBlbmRpbmdEZWxldGVDYWxsLT5jYWxsYmFja3MoKSk7CiAg
ICAgfQotICAgIC8vIGRlbGV0ZURhdGFiYXNlRmluYWwgc2hvdWxkIG5ldmVyIHJlLXF1ZXVlIGNh
bGxzLgotICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpOwogCi0gICAg
Ly8gVGhpcyBjaGVjayBpcyBhbHNvIG5vdCByZWFsbHkgbmVlZGVkLCBvcGVuQ29ubmVjdGlvbiB3
b3VsZCBqdXN0IHJlcXVldWUgaXRzIGNhbGxzLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pCisgICAgaWYgKGlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIE9wZW4gY2FsbHMgY2FuIGJlIHJlcXVldWVkIGlmIGFuIG9w
ZW4gY2FsbCBzdGFydGVkIGEgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24uCkBAIC00ODUsMTMg
KzQ4NiwxOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZVRyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cgogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmlzT3BlbkNvbm5lY3Rpb25C
bG9ja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uIHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCk7Cit9CisKIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0
YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQog
ewogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKIAotICAg
IGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbikgeworICAgIGlmIChpc09wZW5Db25uZWN0aW9uQmxvY2tlZCgpKSB7
CiAgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVh
dGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTI1LDcgKzUzMSw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrCiAKICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pIHsKICAgICAgICAgaWYgKCFpc05ld0RhdGFiYXNlKSB7Ci0gICAgICAgICAg
ICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KGRhdGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0
LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyh0aGlzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTM0LDUyICs1NDAs
NjggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICB9CiAKICAgICBpZiAodmVyc2lvbiA+
IG1fbWV0YWRhdGEuaW50VmVyc2lvbikgewotICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVy
c2lvbik7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJh
Y2tzKTsKKyAgICAgICAgcnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGNhbGxiYWNrcywgZGF0
YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQorCiAgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRhLmludFZlcnNpb24pIHsKICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VmVyc2lvbkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3Rl
ZCB2ZXJzaW9uICglbGxkKSBpcyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsbGQp
LiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmVyc2lvbiksIHN0YXRpY19jYXN0PGxvbmcgbG9u
Zz4obV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwog
ICAgIEFTU0VSVCh2ZXJzaW9uID09IG1fbWV0YWRhdGEuaW50VmVyc2lvbik7CiAgICAgbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKHRoaXMpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bklu
dFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxi
YWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCiti
b29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmlzUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
QmxvY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbm5lY3Rpb25Db3VudCgpID4gMTsKK30K
Kwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgQVNT
RVJUKGNhbGxiYWNrcyk7Ci0gICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJh
c2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxi
YWNrc1NldC5jb250YWlucyhkYXRhYmFzZUNhbGxiYWNrcykpOworICAgIGlmIChpc1J1blZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSkgewogICAgICAgICAvLyBGcm9udCBlbmQgZW5z
dXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9z
ZVBlbmRpbmcgc2V0LgotICAgICAgICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAg
ICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRhLmludFZlcnNpb24sIHJl
cXVlc3RlZFZlcnNpb24pOwotICAgIH0KLSAgICAvLyBUaGUgc3BlYyBkaWN0YXRlcyB3ZSB3YWl0
IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRzIGFyZQotICAgIC8vIGRlbGl2ZXJl
ZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tzLmVtcHR5KCkgYmVmb3JlIHByb2Nl
ZWRpbmcKLSAgICAvLyBvciBmaXJpbmcgYSBibG9ja2VkIGV2ZW50LCBidXQgaW5zdGVhZCB3ZSBz
aG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGhvdwotICAgIC8vIHRoZSBvbGQgc2V0VmVyc2lvbiAo
aW5jb3JyZWN0bHkpIGRpZCBpdC4KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBjYWxsIHRvIG9u
QmxvY2tlZCBhbmQgaW5zdGVhZCB3YWl0IHVudGlsIHRoZSBmcm9udGVuZAotICAgIC8vIHRlbGxz
IHVzIHRoYXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUK
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAg
ICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1f
bWV0YWRhdGEuaW50VmVyc2lvbik7Ci0gICAgLy8gRklYTUU6IEFkZCB0ZXN0IGZvciBtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCi0gICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSkgewotICAgICAgICBtX3BlbmRpbmdP
cGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24pKTsKKyAgICAgICAg
Zm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MuZ2V0KCkp
CisgICAgICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRhLmludFZl
cnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworICAgICAgICB9CisgICAgICAgIC8vIFRoZSBzcGVj
IGRpY3RhdGVzIHdlIHdhaXQgdW50aWwgYWxsIHRoZSB2ZXJzaW9uIGNoYW5nZSBldmVudHMgYXJl
CisgICAgICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tz
LmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKKyAgICAgICAgLy8gb3IgZmlyaW5nIGEgYmxvY2tl
ZCBldmVudCwgYnV0IGluc3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cKKyAg
ICAgICAgLy8gdGhlIG9sZCBzZXRWZXJzaW9uIChpbmNvcnJlY3RseSkgZGlkIGl0LgorICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBjYWxsIHRvIG9uQmxvY2tlZCBhbmQgaW5zdGVhZCB3YWl0
IHVudGlsIHRoZSBmcm9udGVuZAorICAgICAgICAvLyB0ZWxscyB1cyB0aGF0IGFsbCB0aGUgYmxv
Y2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAorICAgICAgICBpZiAoY29ubmVj
dGlvbkNvdW50KCkgPiAxKQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9tZXRh
ZGF0YS5pbnRWZXJzaW9uKTsKKworICAgICAgICBtX3BlbmRpbmdSdW5WZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBk
YXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkZpbmFs
KGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZl
cnNpb24pOworfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1blZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbkZpbmFsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBB
U1NFUlQoIWlzUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQmxvY2tlZCgpKTsKKworICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxs
YmFja3M7CiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwogICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gY3Jl
YXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2Fj
dGlvbkludGVyZmFjZS5nZXQoKSk7CiAKLSAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHRyYW5zYWN0aW9uSWQsIHJl
cXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpLCBWZXJzaW9uQ2hh
bmdlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpKSB7CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbklkLCByZXF1
ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5n
ZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFk
YXRhLmludFZlcnNpb24pKSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQor
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbik7Ci0gICAgbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MpCkBAIC02MDAsNyArNjIyLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAg
ICBkZWxldGVEYXRhYmFzZUZpbmFsKGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29sIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkKK2Jvb2wgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6aXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKSBjb25zdAogewog
ICAgIHJldHVybiBjb25uZWN0aW9uQ291bnQoKTsKIH0KQEAgLTYzMSw5ICs2NTMsNiBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IHBycENhbGxiYWNrcwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5yZWxl
YXNlKCk7CiAgICAgfQogCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgLy8gcHJvY2Vzc1BlbmRpbmdDYWxscyBhbGxvd3MgdGhlIGluc3BlY3Rv
ciB0byBwcm9jZXNzIGEgcGVuZGluZyBvcGVuIGNhbGwKICAgICAvLyBhbmQgY2FsbCBjbG9zZSwg
cmVlbnRlcmluZyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZS4gVGhlbiB0aGUKICAgICAv
LyBiYWNrZW5kIHdvdWxkIGJlIHJlbW92ZWQgYm90aCBieSB0aGUgaW5zcGVjdG9yIGNsb3Npbmcg
aXRzIGNvbm5lY3Rpb24sIGFuZApAQCAtNjQxLDcgKzY2MCwxMiBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENh
bGxiYWNrcwogICAgIC8vIFRvIGF2b2lkIHRoYXQgc2l0dWF0aW9uLCBkb24ndCBwcm9jZWVkIGlu
IGNhc2Ugb2YgcmVlbnRyYW5jeS4KICAgICBpZiAobV9jbG9zaW5nQ29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY2xvc2luZ0Nvbm5lY3Rpb24gPSB0cnVlOworICAgIFRlbXBvcmFy
eUNoYW5nZTxib29sPiBjbG9zaW5nQ29ubmVjdGlvbihtX2Nsb3NpbmdDb25uZWN0aW9uLCB0cnVl
KTsKKworICAgIC8vIElmIHRoZXJlIGFyZSAyIGNvbm5lY3Rpb25zIHJlbWFpbmluZyBvcGVyYXRp
b25zIGFyZSBub3QgdW5ibG9ja2VkLCBidXQgYSBjb3VudAorICAgIC8vIG9mIDEgdW5ibG9ja3Mg
YSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiwgYW5kIGEgY291bnQgb2YgMCB1bmJsb2NrcyBh
IGRlbGV0ZS4KKyAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAyKQorICAgICAgICByZXR1cm47
CiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCiAgICAgLy8gRklYTUU6IEFkZCBhIHRlc3Qg
Zm9yIHRoZSBtX3BlbmRpbmdPcGVuQ2FsbHMgY2FzZXMgYmVsb3cuCkBAIC02NTgsNyArNjgyLDYg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKICAgICAgICAgaWYgKG1fZmFjdG9yeSkKICAgICAg
ICAgICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKG1faWRlbnRpZmllcik7
CiAgICAgfQotICAgIG1fY2xvc2luZ0Nvbm5lY3Rpb24gPSBmYWxzZTsKIH0KIAogdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApp
bmRleCAwNDQ4OTdiZTM4ZjlhYjU3NTU5YjM1MDRkZTFhMTBlM2FmOThkODMzLi5kMGVmMGU0ODU0
NDY5MTY2NzAwMzFlMjEzY2I2MzYwYWVkOWExMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC05
MCwxMiArOTAsMTYgQEAgcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCRmFjdG9yeUJhY2tl
bmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgb3Bl
bkludGVybmFsKCk7Ci0gICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZv
aWQgbG9hZE9iamVjdFN0b3JlcygpOwotICAgIHNpemVfdCBjb25uZWN0aW9uQ291bnQoKTsKKyAg
ICBzaXplX3QgY29ubmVjdGlvbkNvdW50KCkgY29uc3Q7CiAgICAgdm9pZCBwcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7CiAKLSAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCk7CisgICAgYm9v
bCBpc09wZW5Db25uZWN0aW9uQmxvY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNSdW5WZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb25CbG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCBydW5WZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3Rl
ZFZlcnNpb24pOworICAgIHZvaWQgcnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOworCisgICAg
Ym9vbCBpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlRGF0
YWJhc2VGaW5hbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgY2xhc3MgQ3JlYXRl
T2JqZWN0U3RvcmVPcGVyYXRpb247CkBAIC0xMjUsNiArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAg
IGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsKICAgICBEZXF1ZTxPd25QdHI8UGVuZGluZ09wZW5DYWxs
PiA+IG1fcGVuZGluZ09wZW5DYWxsczsKKyAgICBEZXF1ZTxPd25QdHI8UGVuZGluZ09wZW5DYWxs
PiA+IG1fcGVuZGluZ1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkNhbGxzOwogICAgIE93blB0
cjxQZW5kaW5nT3BlbkNhbGw+IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuOwogCiAgICAgY2xhc3Mg
UGVuZGluZ0RlbGV0ZUNhbGw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDRiYjU2MDIzYTY4ZjQ3OGRmOTgzNzI5NjRiYTM5
MTRiNDM3OGFhZC4uZjdjMTkzMDA4MjY3MjVkOTMxOWMxNTNlNzZjNDgwNWNjYzQwZTNmMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTIwICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJPcGVuREJSZXF1ZXN0IHNvbWV0aW1l
cyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2Ut
ZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVldWUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxl
dGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UuanM6CisgICAgICAgIChoMU9wZW5T
dWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLmgyT3BlblN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1v
bi1vcGVuLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpcnN0VXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChmaXJzdE9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNlY29uZE9wZW5CbG9ja2VkKToKKyAgICAg
ICAgKHRoaXJkT3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3BlblN1Y2Nlc3MpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWxvbmctcXVldWUu
anM6CisgICAgICAgIChjb25uZWN0aW9uMlVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoY29ubmVj
dGlvbjJTdWNjZXNzKToKKyAgICAgICAgKGNvbm5lY3Rpb24zVXBncmFkZU5lZWRlZCk6CisgICAg
ICAgIChjb25uZWN0aW9uM1N1Y2Nlc3MpOgorCiAyMDEyLTEyLTIxICBKb3NodWEgQmVsbCAgPGpz
YmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBDb21iaW5lIG9wZW5Db25u
ZWN0aW9uIGFuZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25j
aGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRl
ZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLWV4cGVjdGVkLnR4dAppbmRleCAwZDhm
MzQ1M2FiYTI3ZDFhNDAxMGVhYzdmNjY4MzYzODRlNGQyMGIzLi4wNGJlY2JkNGNhMTczMDhkYjM4
YmQzMzJmOWVhZDBjZTg3ZjNlNDI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRl
bGF5ZWQtYnktdmVyc2lvbmNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTQ2LDE1ICs0NiwxNiBAQCBk
ZWxldGVEYXRhYmFzZU9uQmxvY2tlZCgpOgogZGVsZXRlRGF0YWJhc2VCbG9ja2VkRXZlbnRGaXJl
ZCA9IHRydWUKIGgxLmNsb3NlKCkKIAotZGVsZXRlRGF0YWJhc2VPblN1Y2Nlc3MoKToKLWRlbGV0
ZURhdGFiYXNlQ29tcGxldGUgPSB0cnVlCi0KIGgzT25VcGdyYWRlbmVlZGVkKCk6CiAKIHRyYW5z
YWN0aW9uT25Db21wbGV0ZSgpOgogdmVyc2lvbkNoYW5nZUNvbXBsZXRlID0gdHJ1ZQogCiBoM09w
ZW5TdWNjZXNzKCk6CitoMy5jbG9zZSgpCisKK2RlbGV0ZURhdGFiYXNlT25TdWNjZXNzKCk6Citk
ZWxldGVEYXRhYmFzZUNvbXBsZXRlID0gdHJ1ZQogCiBoNE9wZW5TdWNjZXNzKCk6CiBQQVNTIHNl
dFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MDQ5M2IyNzVmMDhhYmQxMzliZGIwYTJkYzg4ZGI1Mjlj
NDM3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
b3VibGUtYmxvY2tlZC1vbi1vcGVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitSZWdy
ZXNzaW9uIHRlc3QgZm9yIGNhc2Ugd2hlcmUgYW4gSURCT3BlbkRCUmVxdWVzdCByZWNlaXZlcyBh
IHNlY29uZCBibG9ja2VkIGV2ZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
aW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2Vs
Zi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisK
K2RibmFtZSA9ICJkb3VibGUtYmxvY2tlZC1vbi1vcGVuLmh0bWwiCitpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitmaXJzdFVwZ3JhZGVO
ZWVkZWQoKToKK2Jsb2NrZWRFdmVudEZpcmVkID0gZmFsc2UKKworZmlyc3RPcGVuU3VjY2Vzcygp
OgorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0CitpbmRleGVkREIub3BlbihkYm5h
bWUsIDIpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3NlY29uZE9wZW5CbG9ja2VkKCk6CitQ
QVNTIGJsb2NrZWRFdmVudEZpcmVkIGlzIGZhbHNlCitibG9ja2VkRXZlbnRGaXJlZCA9IHRydWUK
KwordGhpcmRPcGVuU3VjY2VzcygpOgorY29ubmVjdGlvbjMgPSBldmVudC50YXJnZXQucmVzdWx0
Citjb25uZWN0aW9uMS5jbG9zZSgpCitjb25uZWN0aW9uMy5jbG9zZSgpCisKK3NlY29uZE9wZW5T
dWNjZXNzKCk6CitQQVNTIGJsb2NrZWRFdmVudEZpcmVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmY1NWM1ZjM1NTAyN2ExZjRhNDdkOTczNGM2YzE4NzI2N2E5MjFmNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2Vk
LW9uLW9wZW4uaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1sb25nLXF1ZXVlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3Rl
ZC50eHQKaW5kZXggYmJiNjBjZDcwNTIyY2JhMWNiNzVjNGM2ZjBlOTgyZjEyMWM3NzJkZC4uMGJh
ODMwZTgzY2Y2Zjg0NGJkN2EzM2UyMGEzM2NhZmE0NmUzNDUxNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1sb25nLXF1ZXVlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVl
dWUtZXhwZWN0ZWQudHh0CkBAIC00MiwxNCArNDIsOCBAQCBGQUlMIGV2ZW50Lm9sZFZlcnNpb24g
c2hvdWxkIGJlIDEgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRl
ZgogRkFJTCBldmVudC5uZXdWZXJzaW9uIHNob3VsZCBiZSBudWxsIChvZiB0eXBlIG9iamVjdCku
IFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KIEZBSUwgZXZlbnQudmVyc2lvbiBz
aG91bGQgYmUgdW5kZWZpbmVkLiBXYXMgCiAKLWRlbGV0ZURhdGFiYXNlU3VjY2Vzc0NhbGxiYWNr
KCk6Ci1QQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVkLgotRklYTUU6IGh0dHA6
Ly9jcmJ1Zy5jb20vMTUzMTIyCi1GQUlMIGV2ZW50Lm9sZFZlcnNpb24gc2hvdWxkIGJlIDEgKG9m
IHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotRkFJTCBl
dmVudC5uZXdWZXJzaW9uIHNob3VsZCBiZSBudWxsIChvZiB0eXBlIG9iamVjdCkuIFdhcyB1bmRl
ZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLQogY29ubmVjdGlvbjJVcGdyYWRlTmVlZGVkKCk6
Ci1QQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDEK
IFBBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAyCiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIFBB
U1MgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMApAQCAtNjIsMjMgKzU2LDIyIEBAIFBB
U1MgZGIudmVyc2lvbiBpcyAyCiAKIGNvbm5lY3Rpb24yU3VjY2VzcygpOgogY29ubmVjdGlvbjIg
PSBldmVudC50YXJnZXQucmVzdWx0Ci1jb25uZWN0aW9uMi5vbnZlcnNpb25jaGFuZ2UgPSBjb25u
ZWN0aW9uMlZlcnNpb25DaGFuZ2VFdmVudAotCi1jb25uZWN0aW9uMlZlcnNpb25DaGFuZ2VFdmVu
dCgpOgotUEFTUyBldmVudC50eXBlIGlzICJ2ZXJzaW9uY2hhbmdlIgotUEFTUyBldmVudC5vbGRW
ZXJzaW9uIGlzIDIKLVBBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAzCi1QQVNTIGV2ZW50LnZlcnNp
b24gaXMgdW5kZWZpbmVkLgogY29ubmVjdGlvbjIuY2xvc2UoKQogCitkZWxldGVEYXRhYmFzZVN1
Y2Nlc3NDYWxsYmFjaygpOgorUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHVuZGVmaW5lZC4K
K0ZJWE1FOiBodHRwOi8vY3JidWcuY29tLzE1MzEyMgorRkFJTCBldmVudC5vbGRWZXJzaW9uIHNo
b3VsZCBiZSAxIChvZiB0eXBlIG51bWJlcikuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZp
bmVkKS4KK0ZBSUwgZXZlbnQubmV3VmVyc2lvbiBzaG91bGQgYmUgbnVsbCAob2YgdHlwZSBvYmpl
Y3QpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCisKIGNvbm5lY3Rpb24zVXBn
cmFkZU5lZWRlZCgpOgogZ290VXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZQogUEFTUyBldmVudC5u
ZXdWZXJzaW9uIGlzIDMKLVBBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAyCitQQVNTIGV2ZW50Lm9s
ZFZlcnNpb24gaXMgMAogCiBjb25uZWN0aW9uM1N1Y2Nlc3MoKToKIFBBU1MgZ290VXBncmFkZU5l
ZWRlZEV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnkt
dmVyc2lvbmNoYW5nZS5qcwppbmRleCBhNjY1YmZjZTg5ZmI4YzViZjg5MjdhOWU2ZjJmNjY3ZDYz
YTFiMmU2Li41OTI1MmFjZGMwYmEwMGZlYzAwMjU5NDE0YjU4YThkMTJjOWFjYTY4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJh
c2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFu
Z2UuanMKQEAgLTQzLDcgKzQzLDkgQEAgZnVuY3Rpb24gaDFPcGVuU3VjY2VzcyhldnQpCiAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGgzT3BlblN1Y2Nlc3MoZXZ0KSB7CiAgICAgICAg
ICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICB9CisgICAgICAgICAgICBoMyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJoMy5jbG9zZSgpIik7CisgICAg
ICAgIH07CiAgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24gaDNCbG9ja2VkKGV2
dCkgewogICAgICAgICAgICAgcHJlYW1ibGUoZXZ0KTsKICAgICAgICAgICAgIGV2YWxBbmRMb2co
InNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUiKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVu
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvdWJsZS1ibG9j
a2VkLW9uLW9wZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ5ODMyZmMzMjA3ZTc2NmRlN2JkZWU5ZDc4OTdm
OWJhNTkyMTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmpzCkBAIC0wLDAgKzEsNTEgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiUmVncmVzc2lvbiB0ZXN0IGZvciBjYXNlIHdo
ZXJlIGFuIElEQk9wZW5EQlJlcXVlc3QgcmVjZWl2ZXMgYSBzZWNvbmQgYmxvY2tlZCBldmVudC4i
KTsKK2luZGV4ZWREQlRlc3QoZmlyc3RVcGdyYWRlTmVlZGVkLCBmaXJzdE9wZW5TdWNjZXNzKTsK
K2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsK
KyAgICBldmFsQW5kTG9nKCJibG9ja2VkRXZlbnRGaXJlZCA9IGZhbHNlIik7Cit9CisKK2Z1bmN0
aW9uIGZpcnN0T3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0
Lm9uYmxvY2tlZCA9IHNlY29uZE9wZW5CbG9ja2VkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2Vjb25kT3Bl
blN1Y2Nlc3M7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJu
YW1lKSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aGlyZE9wZW5TdWNjZXNzOworfQorCitmdW5jdGlv
biBzZWNvbmRPcGVuQmxvY2tlZChldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBzaG91
bGRCZUZhbHNlKCJibG9ja2VkRXZlbnRGaXJlZCIpOworICAgIGV2YWxBbmRMb2coImJsb2NrZWRF
dmVudEZpcmVkID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiB0aGlyZE9wZW5TdWNjZXNzKGV2dCkK
K3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xLmNsb3NlKCki
KTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9zZSgpIik7Cit9CisKK2Z1bmN0aW9u
IHNlY29uZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiYmxvY2tlZEV2ZW50RmlyZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZl
cnNpb24tbG9uZy1xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9pbnR2ZXJzaW9uLWxvbmctcXVldWUuanMKaW5kZXggNWQ0MGU3ZDlmY2IxMjRkZDZiYzA3
YTAwNzU2YjIzNWE4ZDAwYjU3ZC4uMGM4MjNmNmY5M2Y3N2Q2MTcxNDg1NjA4MDg3OGU0OWUwY2Fh
ZGFhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVlLmpzCkBAIC03MCw3ICs3MCw3IEBA
IGZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2Vzc0NhbGxiYWNrKGV2dCkKIGZ1bmN0aW9uIGNv
bm5lY3Rpb24yVXBncmFkZU5lZWRlZChldnQpCiB7CiAgICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBz
aG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9s
ZFZlcnNpb24iLCAiMSIpOwogICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjIiKTsK
ICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwpAQCAtODMsNyArODMsOCBAQCBm
dW5jdGlvbiBjb25uZWN0aW9uMlN1Y2Nlc3MoZXZ0KQogewogICAgIHByZWFtYmxlKGV2dCk7CiAg
ICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
ZXZhbEFuZExvZygiY29ubmVjdGlvbjIub252ZXJzaW9uY2hhbmdlID0gY29ubmVjdGlvbjJWZXJz
aW9uQ2hhbmdlRXZlbnQiKTsKKyAgICBjb25uZWN0aW9uMi5vbnZlcnNpb25jaGFuZ2UgPSB1bmV4
cGVjdGVkVmVyc2lvbkNoYW5nZUNhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24y
LmNsb3NlKCkiKTsKIH0KIAogZnVuY3Rpb24gY29ubmVjdGlvbjJUcmFuc2FjdGlvbkNvbXBsZXRl
KGV2dCkKQEAgLTkyLDI5ICs5MywxOSBAQCBmdW5jdGlvbiBjb25uZWN0aW9uMlRyYW5zYWN0aW9u
Q29tcGxldGUoZXZ0KQogICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjIiKTsKIH0KIAotZnVu
Y3Rpb24gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQoZXZ0KQotewotICAgIHByZWFtYmxl
KGV2dCk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50eXBlIiwgInZlcnNpb25j
aGFuZ2UiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIyIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOwotICAgIHNob3VsZEJlVW5kZWZpbmVkKCJl
dmVudC52ZXJzaW9uIik7Ci0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIuY2xvc2UoKSIpOwot
fQotCiB2YXIgZ290VXBncmFkZU5lZWRlZEV2ZW50ID0gZmFsc2U7CiBmdW5jdGlvbiBjb25uZWN0
aW9uM1VwZ3JhZGVOZWVkZWQoZXZ0KQogewogICAgIHByZWFtYmxlKGV2dCk7CiAgICAgZXZhbEFu
ZExvZygiZ290VXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOwogICAgIHNob3VsZEJlKCJldmVu
dC5uZXdWZXJzaW9uIiwgIjMiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIy
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOwogfQogCiBmdW5jdGlv
biBjb25uZWN0aW9uM1N1Y2Nlc3MoZXZ0KQogewogICAgIHByZWFtYmxlKGV2dCk7CiAgICAgc2hv
dWxkQmVUcnVlKCJnb3RVcGdyYWRlTmVlZGVkRXZlbnQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwog
ICAgIGZpbmlzaEpTVGVzdCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187937</attachid>
            <date>2013-02-12 14:33:45 -0800</date>
            <delta_ts>2013-03-11 14:06:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105559-20130212143015.patch</filename>
            <type>text/plain</type>
            <size>25593</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUwODgzMjRkMzU1ZThh
ZDRiMmMzNTcwNTRiZjMzNzUzMjJjY2E0MS4uMGMyZTUxZTFhY2UxZmIwNzA5NjA2ZTY0YzVhNTlh
ZjE4MDY5Y2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJP
cGVuREJSZXF1ZXN0IHNvbWV0aW1lcyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hdGNoIHRoZSBJREIg
c3BlYyBtb3JlIGNsb3NlbHkgZm9yIHRoZSBzdGVwcyBmb3Igb3BlbnMsIGRlbGV0ZXMsIGFuZCB2
ZXJzaW9uIGNoYW5nZXM6CisKKyAgICAgICAgVGhlIG9wZW4gc3RlcHM6CisgICAgICAgIC0gd2Fp
dCB1bnRpbCB0aGVyZSBhcmUgbm8gcnVubmluZyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb25z
IG9yIHBlbmRpbmcgZGVsZXRlcy4KKyAgICAgICAgLSBjcmVhdGUgYSAvY29ubmVjdGlvbi8KKyAg
ICAgICAgLSBydW4gdGhlICJ2ZXJzaW9uY2hhbmdlIiBzdGVwcyAoaWYgbmVjZXNzYXJ5KQorICAg
ICAgICBUaGUgInZlcnNpb25jaGFuZ2UiIHN0ZXBzOgorICAgICAgICAtIHNlbmQgInZlcnNpb25j
aGFuZ2UiIGFuZCAiYmxvY2tlZCIgZXZlbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAtIHdhaXQg
Zm9yIGFsbCBvdGhlciBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQKKyAgICAgICAgLSBjcmVhdGUg
YW4gZXhlY3V0ZSBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbgorCisgICAgICAgIFJlbGF0
aXZlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbidzIHByZXZpb3VzIGJlaGF2aW9yLCB0aGUgb3Blbi92
ZXJzaW9uY2hhbmdlIHN0ZXBzCisgICAgICAgIGFyZSBuZXZlciByZS1ydW4gc28gZHVwbGljYXRl
ICJibG9ja2VkIiBldmVudHMgYXJlIG5ldmVyIHNlbnQuIEFsc28sIHRoZSBjb25jZXB0dWFsCisg
ICAgICAgIC9jb25uZWN0aW9uLyBpcyBjcmVhdGVkIGVhcmxpZXIgd2hpY2ggYWZmZWN0cyBsYXRl
ciBkZWxldGVEYXRhYmFzZSByZXF1ZXN0cywgd2hpY2gKKyAgICAgICAgYXJlIGJsb2NrZWQgb24g
Y29ubmVjdGlvbnMuIFRoaXMgYWZmZWN0cyBhIGhhbmRmdWwgb2YgdGVzdHMgd2hpY2ggcHJvYmVk
IHRoaXMKKyAgICAgICAgaW50ZXJhY3Rpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5odG1sCisg
ICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25D
b3VudCk6IE1hcmsgYXMgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKTogVXNlIGlzRm9vQmxvY2tlZCgpL2Zvb0ZpbmFs
KCkgcGF0dGVybi4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Omlz
T3BlbkNvbm5lY3Rpb25CbG9ja2VkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IEFkZCBjb25uZWN0aW9uIHRvIHNldCBo
ZXJlLCBzaW5jZSBpdCBjb3VudHMKKyAgICAgICAgZm9yIG9wZW4vdmVyc2lvbmNoYW5nZS9kZWxl
dGUgc3RlcHMuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjppc1J1
blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQpOiBTcGxpdCBpbnRvIGlzRm9vQmxvY2tl
ZCgpLi4uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5WZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pOiAuLi5mb28oKS4uLgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwpOiAu
Li5mb29GaW5hbCgpIHBhdHRlcm4uIEFsc28sCisgICAgICAgIGNvbm5lY3Rpb24gYWxyZWFkeSBh
ZGRlZCB0byBzZXQgYnkgdGhpcyBwb2ludC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKTogTWFyayBjb25zdC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKTogUmVhcnJhbmdlIGFu
ZCBjb21tZW50IGNvbmRpdGlvbnM7IHVzZSBUZW1wb3JhcnlDaGFuZ2UgZm9yIHNhZmV0eS4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IE5ldyBt
ZXRob2RzLgorCiAyMDEzLTAyLTEyICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+
CiAKICAgICAgICAgW0dUS11bSW50cm9zcGVjdGlvbl0gR09iamVjdCBiaW5kaW5ncyBmb3IgRGF0
YVRyYW5zZmVySXRlbUxpc3QgLSBvbmUgYWRkKCkgbWV0aG9kIG11c3QgYmUgcmVtb3ZlZCBmcm9t
IC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggZjhkYzcxOTE0YjljZWY0NmFhMTBhMTdh
MGU1MzA4OTdjMTRkOTk1NC4uZTk0ZTNlYWFmZDhjOWU5YTVhZjQ2YWVmMjEwMDg4ZTA5NmZlNTE5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJ
REJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgogI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVGVtcG9y
YXJ5Q2hhbmdlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTExOCw3ICsxMTE5LDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29t
cGxldGVGaXJlZChQYXNzUmVmUHRyPElEQlQKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygp
OwogfQogCi1zaXplX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50KCkK
K3NpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBwZW5kaW5nIG9wZW4gY2FsbHMsIGFzIHRo
b3NlIHNob3VsZCBub3QgYmxvY2sgdmVyc2lvbiBjaGFuZ2VzIGFuZCBkZWxldGVzLgogICAgIHJl
dHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKTsKQEAgLTExMzEsMjYgKzExMzIsMjYg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAg
ICAgICAgQVNTRVJUKG1fbWV0YWRhdGEuaWQgIT0gSW52YWxpZElkKTsKICAgICAgICAgbV9wZW5k
aW5nU2Vjb25kSGFsZk9wZW4tPmNhbGxiYWNrcygpLT5vblN1Y2Nlc3ModGhpcywgdGhpcy0+bWV0
YWRhdGEoKSk7CiAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLnJlbGVhc2UoKTsKLSAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBt
YXkgYmUgKHBhcnRpYWxseSkgdW5ibG9ja2VkLgorICAgICAgICAvLyBGYWxsIHRocm91Z2ggd2hl
biBjb21wbGV0ZSwgYXMgcGVuZGluZyBvcGVucyBtYXkgYmUgdW5ibG9ja2VkLgogICAgIH0KIAot
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNoZWNrIGlzIG9ubHkgYW4gb3B0aW1pemF0aW9uIHRvIHJl
ZHVjZSBxdWV1ZS1jaHVybiBhbmQKLSAgICAvLyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVz
czsgZGVsZXRlRGF0YWJhc2UgYW5kIG9wZW5Db25uZWN0aW9uIHdpbGwKLSAgICAvLyByZXF1ZXVl
IHRoZWlyIGNhbGxzIGlmIHRoaXMgY29uZGl0aW9uIGlzIHRydWUuCi0gICAgaWYgKG1fcnVubmlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghaXNE
ZWxldGVEYXRhYmFzZUJsb2NrZWQoKSkgeworICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ0RlbGV0
ZUNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgT3duUHRyPFBlbmRpbmdEZWxldGVDYWxs
PiBwZW5kaW5nRGVsZXRlQ2FsbCA9IG1fcGVuZGluZ0RlbGV0ZUNhbGxzLnRha2VGaXJzdCgpOwor
ICAgICAgICAgICAgZGVsZXRlRGF0YWJhc2VGaW5hbChwZW5kaW5nRGVsZXRlQ2FsbC0+Y2FsbGJh
Y2tzKCkpOworICAgICAgICB9CisgICAgICAgIC8vIGRlbGV0ZURhdGFiYXNlRmluYWwgc2hvdWxk
IG5ldmVyIHJlLXF1ZXVlIGNhbGxzLgorICAgICAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlQ2Fs
bHMuaXNFbXB0eSgpKTsKKyAgICB9CiAKLSAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlz
RW1wdHkoKSAmJiBpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpKQorICAgIGlmICghbV9wZW5kaW5n
UnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHMuaXNFbXB0eSgpICYmICFpc1J1blZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSkgeworICAgICAgICBBU1NFUlQobV9wZW5kaW5n
UnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHMuc2l6ZSgpID09IDEpOworICAgICAgICBP
d25QdHI8UGVuZGluZ09wZW5DYWxsPiBwZW5kaW5nQ2FsbCA9IG1fcGVuZGluZ1J1blZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbkNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBydW5WZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb25GaW5hbChwZW5kaW5nQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdDYWxs
LT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nQ2FsbC0+dHJhbnNhY3Rpb25JZCgpLCBwZW5k
aW5nQ2FsbC0+dmVyc2lvbigpKTsKICAgICAgICAgcmV0dXJuOwotICAgIHdoaWxlICghbV9wZW5k
aW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nRGVsZXRl
Q2FsbD4gcGVuZGluZ0RlbGV0ZUNhbGwgPSBtX3BlbmRpbmdEZWxldGVDYWxscy50YWtlRmlyc3Qo
KTsKLSAgICAgICAgZGVsZXRlRGF0YWJhc2VGaW5hbChwZW5kaW5nRGVsZXRlQ2FsbC0+Y2FsbGJh
Y2tzKCkpOwogICAgIH0KLSAgICAvLyBkZWxldGVEYXRhYmFzZUZpbmFsIHNob3VsZCBuZXZlciBy
ZS1xdWV1ZSBjYWxscy4KLSAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgp
KTsKIAotICAgIC8vIFRoaXMgY2hlY2sgaXMgYWxzbyBub3QgcmVhbGx5IG5lZWRlZCwgb3BlbkNv
bm5lY3Rpb24gd291bGQganVzdCByZXF1ZXVlIGl0cyBjYWxscy4KLSAgICBpZiAobV9ydW5uaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKQorICAgIGlmIChpc09wZW5Db25uZWN0aW9uQmxvY2tl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPcGVuIGNhbGxzIGNhbiBiZSByZXF1ZXVl
ZCBpZiBhbiBvcGVuIGNhbGwgc3RhcnRlZCBhIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uLgpA
QCAtMTE2OSwxMyArMTE3MCwxOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0
ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cgogICAgIG1fdHJh
bnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbklkLCB0cmFuc2FjdGlvbi5nZXQoKSk7CiB9CiAKK2Jv
b2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6aXNPcGVuQ29ubmVjdGlvbkJsb2NrZWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1f
cGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNr
cywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24pCiB7CiAgICAgQVNTRVJU
KG1fYmFja2luZ1N0b3JlLmdldCgpKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRh
YmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogCi0gICAgaWYgKCFtX3BlbmRp
bmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKSB7CisgICAgaWYgKGlzT3BlbkNvbm5lY3Rpb25CbG9ja2VkKCkpIHsKICAgICAgICAgbV9w
ZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3Ms
IGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjA5LDcgKzEyMTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
awogCiAgICAgaWYgKHZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
KSB7CiAgICAgICAgIGlmICghaXNOZXdEYXRhYmFzZSkgewotICAgICAgICAgICAgbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5hZGQoUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPihkYXRhYmFzZUNh
bGxiYWNrcykpOworICAgICAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJh
c2VDYWxsYmFja3MpOwogICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcywgdGhp
cy0+bWV0YWRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyMTgs
NyArMTIyNCw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24o
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgfQogCiAgICAgaWYgKHZl
cnNpb24gPiBtX21ldGFkYXRhLmludFZlcnNpb24pIHsKLSAgICAgICAgcnVuSW50VmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9u
SWQsIHZlcnNpb24pOworICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRhYmFz
ZUNhbGxiYWNrcyk7CisgICAgICAgIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFj
a3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAodmVyc2lvbiA8IG1fbWV0YWRhdGEuaW50VmVyc2lvbikg
ewpAQCAtMTIzMCwzMSArMTIzNyw0NCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawogICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKHRoaXMsIHRoaXMtPm1ldGFkYXRhKCkpOwogfQogCi12b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Omlz
UnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQmxvY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbm5lY3Rpb25Db3VudCgpID4gMTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpydW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VD
YWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9u
KQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJw
RGF0YWJhc2VDYWxsYmFja3M7CiAgICAgQVNTRVJUKGNhbGxiYWNrcyk7Ci0gICAgZm9yIChEYXRh
YmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxiYWNrc1NldC5jb250YWlucyhkYXRhYmFzZUNhbGxi
YWNrcykpOworICAgIGlmIChpc1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSkg
ewogICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0
IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgotICAgICAgICBpZiAoKml0
ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5n
ZShtX21ldGFkYXRhLmludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwotICAgIH0KLSAgICAv
LyBUaGUgc3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2Ug
ZXZlbnRzIGFyZQotICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2Fs
bGJhY2tzLmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKLSAgICAvLyBvciBmaXJpbmcgYSBibG9j
a2VkIGV2ZW50LCBidXQgaW5zdGVhZCB3ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGhvdwot
ICAgIC8vIHRoZSBvbGQgc2V0VmVyc2lvbiAoaW5jb3JyZWN0bHkpIGRpZCBpdC4KLSAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoZSBjYWxsIHRvIG9uQmxvY2tlZCBhbmQgaW5zdGVhZCB3YWl0IHVudGls
IHRoZSBmcm9udGVuZAotICAgIC8vIHRlbGxzIHVzIHRoYXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50
cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCisgICAg
ICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVu
ZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzLmdl
dCgpKQorICAgICAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9tZXRhZGF0YS5p
bnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUg
c3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRz
IGFyZQorICAgICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxi
YWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCisgICAgICAgIC8vIG9yIGZpcmluZyBhIGJs
b2NrZWQgZXZlbnQsIGJ1dCBpbnN0ZWFkIHdlIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggaG93
CisgICAgICAgIC8vIHRoZSBvbGQgc2V0VmVyc2lvbiAoaW5jb3JyZWN0bHkpIGRpZCBpdC4KKyAg
ICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJsb2NrZWQgYW5kIGluc3RlYWQg
d2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKKyAgICAgICAgLy8gdGVsbHMgdXMgdGhhdCBhbGwgdGhl
IGJsb2NrZWQgZXZlbnRzIGhhdmUgYmVlbiBkZWxpdmVyZWQuIFNlZQorICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKICAgICAgICAgY2FsbGJh
Y2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKLSAgICAvLyBGSVhNRTogQWRk
IHRlc3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KLSAgICBpZiAobV9y
dW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpKSB7Ci0g
ICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUo
Y2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVy
c2lvbikpOworCisgICAgICAgIG1fcGVuZGluZ1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkNh
bGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2Fs
bGJhY2tzLCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgcnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbik7Cit9
CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uRmluYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIEFTU0VSVCghaXNS
dW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25CbG9ja2VkKCkpOwogCisgICAgUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAg
ICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7CiAgICAgY3JlYXRlVHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsK
QEAgLTEyNjIsNyArMTI4Miw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhCiAgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
dHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxi
YWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fbWV0YWRh
dGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CiAKICAgICBBU1NFUlQoIW1fcGVu
ZGluZ1NlY29uZEhhbGZPcGVuKTsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRh
YmFzZUNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRl
RGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKQEAgLTEyODMs
NyArMTMwMiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2Uo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgZGVsZXRlRGF0YWJhc2VG
aW5hbChjYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotYm9vbCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjppc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpCitib29sIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29ubmVj
dGlvbkNvdW50KCk7CiB9CkBAIC0xMzE0LDkgKzEzMzMsNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxi
YWNrcwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5yZWxlYXNlKCk7CiAgICAgfQog
Ci0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
Ly8gcHJvY2Vzc1BlbmRpbmdDYWxscyBhbGxvd3MgdGhlIGluc3BlY3RvciB0byBwcm9jZXNzIGEg
cGVuZGluZyBvcGVuIGNhbGwKICAgICAvLyBhbmQgY2FsbCBjbG9zZSwgcmVlbnRlcmluZyBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZS4gVGhlbiB0aGUKICAgICAvLyBiYWNrZW5kIHdvdWxk
IGJlIHJlbW92ZWQgYm90aCBieSB0aGUgaW5zcGVjdG9yIGNsb3NpbmcgaXRzIGNvbm5lY3Rpb24s
IGFuZApAQCAtMTMyNCw3ICsxMzQwLDEyIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAgICAg
Ly8gVG8gYXZvaWQgdGhhdCBzaXR1YXRpb24sIGRvbid0IHByb2NlZWQgaW4gY2FzZSBvZiByZWVu
dHJhbmN5LgogICAgIGlmIChtX2Nsb3NpbmdDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jbG9zaW5nQ29ubmVjdGlvbiA9IHRydWU7CisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+
IGNsb3NpbmdDb25uZWN0aW9uKG1fY2xvc2luZ0Nvbm5lY3Rpb24sIHRydWUpOworCisgICAgLy8g
SWYgdGhlcmUgYXJlIDIgY29ubmVjdGlvbnMgcmVtYWluaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCB1
bmJsb2NrZWQsIGJ1dCBhIGNvdW50CisgICAgLy8gb2YgMSB1bmJsb2NrcyBhIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uLCBhbmQgYSBjb3VudCBvZiAwIHVuYmxvY2tzIGEgZGVsZXRlLgorICAg
IGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCisgICAgICAgIHJldHVybjsKICAgICBwcm9jZXNz
UGVuZGluZ0NhbGxzKCk7CiAKICAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3IgdGhlIG1fcGVu
ZGluZ09wZW5DYWxscyBjYXNlcyBiZWxvdy4KQEAgLTEzNDEsNyArMTM2Miw2IEBAIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzCiAgICAgICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAgICAgICBtX2Zh
Y3RvcnktPnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChtX2lkZW50aWZpZXIpOwogICAgIH0KLSAg
ICBtX2Nsb3NpbmdDb25uZWN0aW9uID0gZmFsc2U7CiB9CiAKIHZvaWQgQ3JlYXRlT2JqZWN0U3Rv
cmVBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA1YmIxNjU0MGZlODdhZWUxMmZjZTk0MGVi
M2JmMmIxOWE2ODUwYjQ0Li5kOTdkODZlMGU4ZTE0YmMzZTkzNmQyMGZhNzIwMjIwZTFkNzU4ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC05MywxMSArOTMsMTUgQEAgcHJpdmF0ZToKICAgICBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3Jl
KiBkYXRhYmFzZSwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKTsKIAogICAgIGJvb2wgb3BlbkludGVybmFsKCk7Ci0gICAgdm9pZCBydW5JbnRW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IHJlcXVlc3RlZFZlcnNpb24pOwotICAgIHNpemVfdCBjb25uZWN0aW9uQ291bnQoKTsKKyAgICBz
aXplX3QgY29ubmVjdGlvbkNvdW50KCkgY29uc3Q7CiAgICAgdm9pZCBwcm9jZXNzUGVuZGluZ0Nh
bGxzKCk7CiAKLSAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCk7CisgICAgYm9vbCBp
c09wZW5Db25uZWN0aW9uQmxvY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNSdW5WZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb25CbG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCBydW5WZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZl
cnNpb24pOworICAgIHZvaWQgcnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOworCisgICAgYm9v
bCBpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlRGF0YWJh
c2VGaW5hbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgY2xhc3MgVmVyc2lvbkNo
YW5nZU9wZXJhdGlvbjsKQEAgLTEyMCw2ICsxMjQsNyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3Mg
UGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gbV9w
ZW5kaW5nT3BlbkNhbGxzOworICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gbV9w
ZW5kaW5nUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHM7CiAgICAgT3duUHRyPFBlbmRp
bmdPcGVuQ2FsbD4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW47CiAKICAgICBjbGFzcyBQZW5kaW5n
RGVsZXRlQ2FsbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA3ZWZhOTk3ZDlhZWIwMGM5M2NlNmRhZTU2MjNhZjNlYjU5YmZm
MGY4Li5mNmNhZDVjMjQ3ZTRkODJjNzcxZTZhNmI3NzcwNDU4N2U0ODM5NzIwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMTItMjAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IElEQk9wZW5EQlJlcXVlc3Qgc29tZXRpbWVzIHJlY2Vp
dmVzIHR3byBibG9ja2VkIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA1NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVk
LWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVjdGVkIGV2ZW50IG9y
ZGVyaW5nLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9w
ZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgZXhwZWN0ZWQg
ZXZlbnQgb3JkZXJpbmcuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Rl
bGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5qczoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5qczogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1x
dWV1ZS5qczogVXBkYXRlZCBleHBlY3RlZCBldmVudCBvcmRlcmluZy4KKwogMjAxMy0wMi0xMiAg
VWRheSBLaXJhbiAgPHVkYXlraXJhbkBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgQmFja2dyb3Vu
ZCBzaXplIHdpZHRoIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBwZXJjZW50YWdlIHVuaXRzIG5vdCB3
b3JraW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVk
YXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hh
bmdlLWV4cGVjdGVkLnR4dAppbmRleCBkNzdmNjZiY2JkNTFlNDZhZWFhZjBmNzk0Mjg0ZDgwN2Jk
ZmNjYzA5Li44YmJiMjcwNmE2OWRmYWUwMDQzOWE2NTQxNGM4Y2M0MTk3MTkxYjg3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVk
LWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS1leHBlY3Rl
ZC50eHQKQEAgLTQ4LDE1ICs0OCwxNiBAQCBkZWxldGVEYXRhYmFzZU9uQmxvY2tlZCgpOgogZGVs
ZXRlRGF0YWJhc2VCbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUKIGgxLmNsb3NlKCkKIAotZGVsZXRl
RGF0YWJhc2VPblN1Y2Nlc3MoKToKLWRlbGV0ZURhdGFiYXNlQ29tcGxldGUgPSB0cnVlCi0KIGgz
T25VcGdyYWRlbmVlZGVkKCk6CiAKIHRyYW5zYWN0aW9uT25Db21wbGV0ZSgpOgogdmVyc2lvbkNo
YW5nZUNvbXBsZXRlID0gdHJ1ZQogCiBoM09wZW5TdWNjZXNzKCk6CitoMy5jbG9zZSgpCisKK2Rl
bGV0ZURhdGFiYXNlT25TdWNjZXNzKCk6CitkZWxldGVEYXRhYmFzZUNvbXBsZXRlID0gdHJ1ZQog
CiBoNE9wZW5TdWNjZXNzKCk6CiBQQVNTIHNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCBpcyB0
cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxv
Y2tlZC1vbi1vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MDQ5M2Iy
NzVmMDhhYmQxMzliZGIwYTJkYzg4ZGI1MjljNDM3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDM0IEBACitSZWdyZXNzaW9uIHRlc3QgZm9yIGNhc2Ugd2hlcmUgYW4g
SURCT3BlbkRCUmVxdWVzdCByZWNlaXZlcyBhIHNlY29uZCBibG9ja2VkIGV2ZW50LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwg
c2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4
ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJkb3VibGUtYmxvY2tlZC1vbi1v
cGVuLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9w
ZW4oZGJuYW1lKQorCitmaXJzdFVwZ3JhZGVOZWVkZWQoKToKK2Jsb2NrZWRFdmVudEZpcmVkID0g
ZmFsc2UKKworZmlyc3RPcGVuU3VjY2VzcygpOgorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQu
cmVzdWx0CitpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCitpbmRleGVkREIub3BlbihkYm5hbWUp
CisKK3NlY29uZE9wZW5CbG9ja2VkKCk6CitQQVNTIGJsb2NrZWRFdmVudEZpcmVkIGlzIGZhbHNl
CitibG9ja2VkRXZlbnRGaXJlZCA9IHRydWUKKwordGhpcmRPcGVuU3VjY2VzcygpOgorY29ubmVj
dGlvbjMgPSBldmVudC50YXJnZXQucmVzdWx0Citjb25uZWN0aW9uMS5jbG9zZSgpCitjb25uZWN0
aW9uMy5jbG9zZSgpCisKK3NlY29uZE9wZW5TdWNjZXNzKCk6CitQQVNTIGJsb2NrZWRFdmVudEZp
cmVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUt
YmxvY2tlZC1vbi1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1NWM1ZjM1NTAyN2ExZjRhNDdk
OTczNGM2YzE4NzI2N2E5MjFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1s
b25nLXF1ZXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQKaW5kZXggN2Y5MDVhZjhkZjFiMTU5Mjcz
OGQ1ODkzZGVjYzhkZmExNmEyYTBlMS4uNjgyOWVhOGYzY2JhZTIxMmNjY2YwNTAxNDg2M2I4YzI5
NzQzMzdlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1sb25nLXF1ZXVlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVldWUtZXhwZWN0ZWQudHh0CkBAIC0zOSwxMiArMzks
OCBAQCBkZWxldGVEYXRhYmFzZUJsb2NrZWRDYWxsYmFjaygpOgogUEFTUyBldmVudC5vbGRWZXJz
aW9uIGlzIDEKIFBBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyBudWxsCiAKLWRlbGV0ZURhdGFiYXNl
U3VjY2Vzc0NhbGxiYWNrKCk6Ci1QQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVk
LgotUEFTUyBldmVudC50eXBlIGlzICJzdWNjZXNzIgotCiBjb25uZWN0aW9uMlVwZ3JhZGVOZWVk
ZWQoKToKLVBBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24g
aXMgMQogUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDIKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAogUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAwCkBAIC01NywyMiArNTMsMjAg
QEAgUEFTUyBkYi52ZXJzaW9uIGlzIDIKIAogY29ubmVjdGlvbjJTdWNjZXNzKCk6CiBjb25uZWN0
aW9uMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLWNvbm5lY3Rpb24yLm9udmVyc2lvbmNoYW5nZSA9
IGNvbm5lY3Rpb24yVmVyc2lvbkNoYW5nZUV2ZW50Ci0KLWNvbm5lY3Rpb24yVmVyc2lvbkNoYW5n
ZUV2ZW50KCk6Ci1QQVNTIGV2ZW50LnR5cGUgaXMgInZlcnNpb25jaGFuZ2UiCi1QQVNTIGV2ZW50
Lm9sZFZlcnNpb24gaXMgMgotUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKIGNvbm5lY3Rpb24y
LmNsb3NlKCkKIAorZGVsZXRlRGF0YWJhc2VTdWNjZXNzQ2FsbGJhY2soKToKK1BBU1MgZXZlbnQu
dGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQuCitQQVNTIGV2ZW50LnR5cGUgaXMgInN1Y2Nlc3Mi
CisKIGNvbm5lY3Rpb24zVXBncmFkZU5lZWRlZCgpOgogZ290VXBncmFkZU5lZWRlZEV2ZW50ID0g
dHJ1ZQogUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKLVBBU1MgZXZlbnQub2xkVmVyc2lvbiBp
cyAyCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAogCiBjb25uZWN0aW9uM1N1Y2Nlc3MoKToK
IFBBU1MgZ290VXBncmFkZU5lZWRlZEV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJl
c3VsdC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hh
bmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWRh
dGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5qcwppbmRleCA3MDQ1MzcwNDhjNTg4NzUy
MTU0OWQxYTU3ZDcwZmFhYjcxNDlmMzJmLi43NmJjMGEyZmYxNTNmYzJkNjhlOWFlYzgyZDk0MTcw
MTgzNmRlYjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1kZWxh
eWVkLWJ5LXZlcnNpb25jaGFuZ2UuanMKQEAgLTUwLDcgKzUwLDkgQEAgZnVuY3Rpb24gaDFPcGVu
U3VjY2VzcyhldnQpCiAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwogICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGgzT3BlblN1Y2Nl
c3MoZXZ0KSB7CiAgICAgICAgICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICB9CisgICAgICAg
ICAgICBoMyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJo
My5jbG9zZSgpIik7CisgICAgICAgIH07CiAgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVu
Y3Rpb24gaDNCbG9ja2VkKGV2dCkgewogICAgICAgICAgICAgcHJlYW1ibGUoZXZ0KTsKICAgICAg
ICAgICAgIGV2YWxBbmRMb2coInNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ5ODMyZmMzMjA3
ZTc2NmRlN2JkZWU5ZDc4OTdmOWJhNTkyMTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmpz
CkBAIC0wLDAgKzEsNTEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiUmVncmVzc2lv
biB0ZXN0IGZvciBjYXNlIHdoZXJlIGFuIElEQk9wZW5EQlJlcXVlc3QgcmVjZWl2ZXMgYSBzZWNv
bmQgYmxvY2tlZCBldmVudC4iKTsKK2luZGV4ZWREQlRlc3QoZmlyc3RVcGdyYWRlTmVlZGVkLCBm
aXJzdE9wZW5TdWNjZXNzKTsKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQpCit7Cisg
ICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJibG9ja2VkRXZlbnRGaXJlZCA9IGZh
bHNlIik7Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHByZWFt
YmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwg
MikiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHNlY29uZE9wZW5CbG9ja2VkOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2Vjb25kT3BlblN1Y2Nlc3M7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBl
Y3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdy
YWRlTmVlZGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aGlyZE9wZW5TdWNj
ZXNzOworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuQmxvY2tlZChldnQpCit7CisgICAgcHJlYW1i
bGUoZXZ0KTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkRXZlbnRGaXJlZCIpOworICAgIGV2
YWxBbmRMb2coImJsb2NrZWRFdmVudEZpcmVkID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiB0aGly
ZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb24xLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9zZSgp
Iik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJs
ZShldnQpOworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZEV2ZW50RmlyZWQiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWxvbmctcXVldWUuanMKaW5kZXggNTJj
ZmU1NGQ0MTBlZWI4MjE1ZTMzOTA2YTcwODI2N2Y1MmYzNDhlMS4uYzBiNjE3OWFmZWJkNDI0ZmI4
ZmRkNmZiNTc2YTBlMDE1NDg3NGU3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVlLmpz
CkBAIC02NSw3ICs2NSw3IEBAIGZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2Vzc0NhbGxiYWNr
KGV2dCkKIGZ1bmN0aW9uIGNvbm5lY3Rpb24yVXBncmFkZU5lZWRlZChldnQpCiB7CiAgICAgcHJl
YW1ibGUoZXZ0KTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAg
c2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMSIpOwogICAgIHNob3VsZEJlKCJldmVudC5u
ZXdWZXJzaW9uIiwgIjIiKTsKICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwpA
QCAtNzgsNyArNzgsOCBAQCBmdW5jdGlvbiBjb25uZWN0aW9uMlN1Y2Nlc3MoZXZ0KQogewogICAg
IHByZWFtYmxlKGV2dCk7CiAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIub252ZXJzaW9uY2hhbmdl
ID0gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQiKTsKKyAgICBjb25uZWN0aW9uMi5vbnZl
cnNpb25jaGFuZ2UgPSB1bmV4cGVjdGVkVmVyc2lvbkNoYW5nZUNhbGxiYWNrOworICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24yLmNsb3NlKCkiKTsKIH0KIAogZnVuY3Rpb24gY29ubmVjdGlvbjJU
cmFuc2FjdGlvbkNvbXBsZXRlKGV2dCkKQEAgLTg3LDI4ICs4OCwxOSBAQCBmdW5jdGlvbiBjb25u
ZWN0aW9uMlRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0KQogICAgIHNob3VsZEJlKCJkYi52ZXJzaW9u
IiwgIjIiKTsKIH0KIAotZnVuY3Rpb24gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQoZXZ0
KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50eXBlIiwgInZlcnNpb25jaGFuZ2UiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lv
biIsICIyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOwotICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb24yLmNsb3NlKCkiKTsKLX0KLQogdmFyIGdvdFVwZ3JhZGVOZWVk
ZWRFdmVudCA9IGZhbHNlOwogZnVuY3Rpb24gY29ubmVjdGlvbjNVcGdyYWRlTmVlZGVkKGV2dCkK
IHsKICAgICBwcmVhbWJsZShldnQpOwogICAgIGV2YWxBbmRMb2coImdvdFVwZ3JhZGVOZWVkZWRF
dmVudCA9IHRydWUiKTsKICAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIzIik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVu
dC5vbGRWZXJzaW9uIiwgIjAiKTsKIH0KIAogZnVuY3Rpb24gY29ubmVjdGlvbjNTdWNjZXNzKGV2
dCkKIHsKICAgICBwcmVhbWJsZShldnQpOwogICAgIHNob3VsZEJlVHJ1ZSgiZ290VXBncmFkZU5l
ZWRlZEV2ZW50Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192552</attachid>
            <date>2013-03-11 14:06:36 -0700</date>
            <delta_ts>2013-04-01 13:14:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105559-20130311140236.patch</filename>
            <type>text/plain</type>
            <size>25529</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBkNjM0MGRhZGJiOTc2
OTZkMDJlMjYxYmZlOWU4ZjVjNzc3YjM3Ni4uOGFjNGFjNjhiZmQyYmRkMDQwNDcwZTdhZGI5OTdh
MWMxNjdhYTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJP
cGVuREJSZXF1ZXN0IHNvbWV0aW1lcyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hdGNoIHRoZSBJREIg
c3BlYyBtb3JlIGNsb3NlbHkgZm9yIHRoZSBzdGVwcyBmb3Igb3BlbnMsIGRlbGV0ZXMsIGFuZCB2
ZXJzaW9uIGNoYW5nZXM6CisKKyAgICAgICAgVGhlIG9wZW4gc3RlcHM6CisgICAgICAgIC0gd2Fp
dCB1bnRpbCB0aGVyZSBhcmUgbm8gcnVubmluZyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb25z
IG9yIHBlbmRpbmcgZGVsZXRlcy4KKyAgICAgICAgLSBjcmVhdGUgYSAvY29ubmVjdGlvbi8KKyAg
ICAgICAgLSBydW4gdGhlICJ2ZXJzaW9uY2hhbmdlIiBzdGVwcyAoaWYgbmVjZXNzYXJ5KQorICAg
ICAgICBUaGUgInZlcnNpb25jaGFuZ2UiIHN0ZXBzOgorICAgICAgICAtIHNlbmQgInZlcnNpb25j
aGFuZ2UiIGFuZCAiYmxvY2tlZCIgZXZlbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAtIHdhaXQg
Zm9yIGFsbCBvdGhlciBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQKKyAgICAgICAgLSBjcmVhdGUg
YW4gZXhlY3V0ZSBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbgorCisgICAgICAgIFJlbGF0
aXZlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbidzIHByZXZpb3VzIGJlaGF2aW9yLCB0aGUgb3Blbi92
ZXJzaW9uY2hhbmdlIHN0ZXBzCisgICAgICAgIGFyZSBuZXZlciByZS1ydW4gc28gZHVwbGljYXRl
ICJibG9ja2VkIiBldmVudHMgYXJlIG5ldmVyIHNlbnQuIEFsc28sIHRoZSBjb25jZXB0dWFsCisg
ICAgICAgIC9jb25uZWN0aW9uLyBpcyBjcmVhdGVkIGVhcmxpZXIgd2hpY2ggYWZmZWN0cyBsYXRl
ciBkZWxldGVEYXRhYmFzZSByZXF1ZXN0cywgd2hpY2gKKyAgICAgICAgYXJlIGJsb2NrZWQgb24g
Y29ubmVjdGlvbnMuIFRoaXMgYWZmZWN0cyBhIGhhbmRmdWwgb2YgdGVzdHMgd2hpY2ggcHJvYmVk
IHRoaXMKKyAgICAgICAgaW50ZXJhY3Rpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5odG1sCisg
ICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25D
b3VudCk6IE1hcmsgYXMgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKTogVXNlIGlzRm9vQmxvY2tlZCgpL2Zvb0ZpbmFs
KCkgcGF0dGVybi4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Omlz
T3BlbkNvbm5lY3Rpb25CbG9ja2VkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IEFkZCBjb25uZWN0aW9uIHRvIHNldCBo
ZXJlLCBzaW5jZSBpdCBjb3VudHMKKyAgICAgICAgZm9yIG9wZW4vdmVyc2lvbmNoYW5nZS9kZWxl
dGUgc3RlcHMuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjppc1J1
blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQpOiBTcGxpdCBpbnRvIGlzRm9vQmxvY2tl
ZCgpLi4uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5WZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pOiAuLi5mb28oKS4uLgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwpOiAu
Li5mb29GaW5hbCgpIHBhdHRlcm4uIEFsc28sCisgICAgICAgIGNvbm5lY3Rpb24gYWxyZWFkeSBh
ZGRlZCB0byBzZXQgYnkgdGhpcyBwb2ludC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKTogTWFyayBjb25zdC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKTogUmVhcnJhbmdlIGFu
ZCBjb21tZW50IGNvbmRpdGlvbnM7IHVzZSBUZW1wb3JhcnlDaGFuZ2UgZm9yIHNhZmV0eS4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IE5ldyBt
ZXRob2RzLgorCiAyMDEzLTAzLTEwICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgaW5lcnQgc3VidHJlZXMgbmVlZGVkIGZvciBtb2Rh
bCA8ZGlhbG9nPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAyYzMwMzIwYTU0ZjM0Y2MyMzI4
NzFjZGNmN2IzY2RhYjFjNDdjYzY2Li4yN2RiYWM1NjM3ODQyZGM5Nzg3ZDM1OTRlMjA2YzA1MGU3
Y2ExZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3Rm
L1RlbXBvcmFyeUNoYW5nZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMTksNyAr
MTEyMCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hl
ZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJUCiAgICAgICAgIHByb2Nlc3NQZW5kaW5n
Q2FsbHMoKTsKIH0KIAotc2l6ZV90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25D
b3VudCgpCitzaXplX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50KCkg
Y29uc3QKIHsKICAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcGVuZGluZyBvcGVuIGNhbGxz
LCBhcyB0aG9zZSBzaG91bGQgbm90IGJsb2NrIHZlcnNpb24gY2hhbmdlcyBhbmQgZGVsZXRlcy4K
ICAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCk7CkBAIC0xMTMyLDI2ICsx
MTMzLDI2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxs
cygpCiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmlkICE9IEludmFsaWRJZCk7CiAgICAgICAg
IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLT5jYWxsYmFja3MoKS0+b25TdWNjZXNzKHRoaXMsIHRo
aXMtPm1ldGFkYXRhKCkpOwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5yZWxlYXNl
KCk7Ci0gICAgICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNvbXBsZXRlLCBhcyBwZW5kaW5nIGRl
bGV0ZXMgbWF5IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4KKyAgICAgICAgLy8gRmFsbCB0aHJv
dWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgb3BlbnMgbWF5IGJlIHVuYmxvY2tlZC4KICAg
ICB9CiAKLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBjaGVjayBpcyBvbmx5IGFuIG9wdGltaXphdGlv
biB0byByZWR1Y2UgcXVldWUtY2h1cm4gYW5kCi0gICAgLy8gbm90IG5lY2Vzc2FyeSBmb3IgY29y
cmVjdG5lc3M7IGRlbGV0ZURhdGFiYXNlIGFuZCBvcGVuQ29ubmVjdGlvbiB3aWxsCi0gICAgLy8g
cmVxdWV1ZSB0aGVpciBjYWxscyBpZiB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlLgotICAgIGlmICht
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pCi0gICAgICAgIHJldHVybjsKKyAgICBp
ZiAoIWlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkpIHsKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRp
bmdEZWxldGVDYWxscy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIE93blB0cjxQZW5kaW5nRGVs
ZXRlQ2FsbD4gcGVuZGluZ0RlbGV0ZUNhbGwgPSBtX3BlbmRpbmdEZWxldGVDYWxscy50YWtlRmly
c3QoKTsKKyAgICAgICAgICAgIGRlbGV0ZURhdGFiYXNlRmluYWwocGVuZGluZ0RlbGV0ZUNhbGwt
PmNhbGxiYWNrcygpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBkZWxldGVEYXRhYmFzZUZpbmFs
IHNob3VsZCBuZXZlciByZS1xdWV1ZSBjYWxscy4KKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0Rl
bGV0ZUNhbGxzLmlzRW1wdHkoKSk7CisgICAgfQogCi0gICAgaWYgKCFtX3BlbmRpbmdEZWxldGVD
YWxscy5pc0VtcHR5KCkgJiYgaXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKSkKKyAgICBpZiAoIW1f
cGVuZGluZ1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkNhbGxzLmlzRW1wdHkoKSAmJiAhaXNS
dW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25CbG9ja2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKG1f
cGVuZGluZ1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkNhbGxzLnNpemUoKSA9PSAxKTsKKyAg
ICAgICAgT3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gcGVuZGluZ0NhbGwgPSBtX3BlbmRpbmdSdW5W
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25DYWxscy50YWtlRmlyc3QoKTsKKyAgICAgICAgcnVuVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwocGVuZGluZ0NhbGwtPmNhbGxiYWNrcygpLCBwZW5k
aW5nQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ0NhbGwtPnRyYW5zYWN0aW9uSWQo
KSwgcGVuZGluZ0NhbGwtPnZlcnNpb24oKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB3aGlsZSAo
IW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8UGVuZGlu
Z0RlbGV0ZUNhbGw+IHBlbmRpbmdEZWxldGVDYWxsID0gbV9wZW5kaW5nRGVsZXRlQ2FsbHMudGFr
ZUZpcnN0KCk7Ci0gICAgICAgIGRlbGV0ZURhdGFiYXNlRmluYWwocGVuZGluZ0RlbGV0ZUNhbGwt
PmNhbGxiYWNrcygpKTsKICAgICB9Ci0gICAgLy8gZGVsZXRlRGF0YWJhc2VGaW5hbCBzaG91bGQg
bmV2ZXIgcmUtcXVldWUgY2FsbHMuCi0gICAgQVNTRVJUKG1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlz
RW1wdHkoKSk7CiAKLSAgICAvLyBUaGlzIGNoZWNrIGlzIGFsc28gbm90IHJlYWxseSBuZWVkZWQs
IG9wZW5Db25uZWN0aW9uIHdvdWxkIGp1c3QgcmVxdWV1ZSBpdHMgY2FsbHMuCi0gICAgaWYgKG1f
cnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikKKyAgICBpZiAoaXNPcGVuQ29ubmVjdGlv
bkJsb2NrZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT3BlbiBjYWxscyBjYW4gYmUg
cmVxdWV1ZWQgaWYgYW4gb3BlbiBjYWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbi4KQEAgLTExNzAsMTMgKzExNzEsMTggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHIKICAg
ICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0KCkpOwog
fQogCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmlzT3BlbkNvbm5lY3Rpb25CbG9ja2Vk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
IHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCk7Cit9CisKIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VD
YWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQogewogICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKIAotICAgIGlmICgh
bV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbikgeworICAgIGlmIChpc09wZW5Db25uZWN0aW9uQmxvY2tlZCgpKSB7CiAgICAg
ICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2Fs
bGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIxMCw3ICsxMjE2LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2sKIAogICAgIGlmICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbikgewogICAgICAgICBpZiAoIWlzTmV3RGF0YWJhc2UpIHsKLSAgICAgICAgICAgIG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oZGF0
YWJhc2VDYWxsYmFja3MpKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRk
KGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRo
aXMsIHRoaXMtPm1ldGFkYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xMjE5LDcgKzEyMjUsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25u
ZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawogICAgIH0KIAogICAg
IGlmICh2ZXJzaW9uID4gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Ci0gICAgICAgIHJ1bkludFZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFu
c2FjdGlvbklkLCB2ZXJzaW9uKTsKKyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQo
ZGF0YWJhc2VDYWxsYmFja3MpOworICAgICAgICBydW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
Y2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRhLmludFZl
cnNpb24pIHsKQEAgLTEyMzEsMzEgKzEyMzgsNDQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sK
ICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzLCB0aGlzLT5tZXRhZGF0YSgpKTsKIH0KIAot
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQorYm9vbCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjppc1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSBjb25zdAoreworICAg
IHJldHVybiBjb25uZWN0aW9uQ291bnQoKSA+IDE7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERh
dGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIEFTU0VSVChjYWxsYmFja3MpOwotICAgIGZv
ciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyAr
K2l0KSB7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFpbnMoZGF0YWJh
c2VDYWxsYmFja3MpKTsKKyAgICBpZiAoaXNSdW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25CbG9j
a2VkKCkpIHsKICAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBm
aXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4KLSAgICAgICAg
aWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKLSAgICAgICAgICAgICgqaXQpLT5vblZlcnNp
b25DaGFuZ2UobV9tZXRhZGF0YS5pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKLSAgICB9
Ci0gICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24g
Y2hhbmdlIGV2ZW50cyBhcmUKLSAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRh
YmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCi0gICAgLy8gb3IgZmlyaW5n
IGEgYmxvY2tlZCBldmVudCwgYnV0IGluc3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0
aCBob3cKLSAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQgaXQuCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJsb2NrZWQgYW5kIGluc3RlYWQgd2Fp
dCB1bnRpbCB0aGUgZnJvbnRlbmQKLSAgICAvLyB0ZWxscyB1cyB0aGF0IGFsbCB0aGUgYmxvY2tl
ZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgp
KQorICAgICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxi
YWNrcy5nZXQoKSkKKyAgICAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1fbWV0
YWRhdGEuaW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdl
IGV2ZW50cyBhcmUKKyAgICAgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNoZWNrIG1fZGF0YWJh
c2VDYWxsYmFja3MuZW1wdHkoKSBiZWZvcmUgcHJvY2VlZGluZworICAgICAgICAvLyBvciBmaXJp
bmcgYSBibG9ja2VkIGV2ZW50LCBidXQgaW5zdGVhZCB3ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3
aXRoIGhvdworICAgICAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQg
aXQuCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGNhbGwgdG8gb25CbG9ja2VkIGFuZCBp
bnN0ZWFkIHdhaXQgdW50aWwgdGhlIGZyb250ZW5kCisgICAgICAgIC8vIHRlbGxzIHVzIHRoYXQg
YWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKKyAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCiAgICAgICAg
IGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEuaW50VmVyc2lvbik7Ci0gICAgLy8gRklY
TUU6IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCi0gICAg
aWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQo
KSkgewotICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVl
c3RlZFZlcnNpb24pKTsKKworICAgICAgICBtX3BlbmRpbmdSdW5WZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkZpbmFsKGNh
bGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNp
b24pOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1blZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbkZpbmFsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBBU1NF
UlQoIWlzUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQmxvY2tlZCgpKTsKIAorICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFj
a3M7CiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwogICAgIGNyZWF0ZVRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9yZUlkcywg
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFu
c2FjdGlvbklkKTsKQEAgLTEyNjMsNyArMTI4Myw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
CiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBk
YXRhYmFzZUNhbGxiYWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CiAKICAgICBB
U1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuKTsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cykKQEAgLTEyODQsNyArMTMwMyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVs
ZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgZGVs
ZXRlRGF0YWJhc2VGaW5hbChjYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotYm9vbCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjppc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpCitib29sIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29ubmVjdGlvbkNvdW50KCk7CiB9CkBAIC0xMzE1LDkgKzEzMzQsNiBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IHBycENhbGxiYWNrcwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5yZWxlYXNl
KCk7CiAgICAgfQogCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgLy8gcHJvY2Vzc1BlbmRpbmdDYWxscyBhbGxvd3MgdGhlIGluc3BlY3RvciB0
byBwcm9jZXNzIGEgcGVuZGluZyBvcGVuIGNhbGwKICAgICAvLyBhbmQgY2FsbCBjbG9zZSwgcmVl
bnRlcmluZyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZS4gVGhlbiB0aGUKICAgICAvLyBi
YWNrZW5kIHdvdWxkIGJlIHJlbW92ZWQgYm90aCBieSB0aGUgaW5zcGVjdG9yIGNsb3NpbmcgaXRz
IGNvbm5lY3Rpb24sIGFuZApAQCAtMTMyNSw3ICsxMzQxLDEyIEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzCiAgICAgLy8gVG8gYXZvaWQgdGhhdCBzaXR1YXRpb24sIGRvbid0IHByb2NlZWQgaW4g
Y2FzZSBvZiByZWVudHJhbmN5LgogICAgIGlmIChtX2Nsb3NpbmdDb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jbG9zaW5nQ29ubmVjdGlvbiA9IHRydWU7CisgICAgVGVtcG9yYXJ5
Q2hhbmdlPGJvb2w+IGNsb3NpbmdDb25uZWN0aW9uKG1fY2xvc2luZ0Nvbm5lY3Rpb24sIHRydWUp
OworCisgICAgLy8gSWYgdGhlcmUgYXJlIDIgY29ubmVjdGlvbnMgcmVtYWluaW5nIG9wZXJhdGlv
bnMgYXJlIG5vdCB1bmJsb2NrZWQsIGJ1dCBhIGNvdW50CisgICAgLy8gb2YgMSB1bmJsb2NrcyBh
IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uLCBhbmQgYSBjb3VudCBvZiAwIHVuYmxvY2tzIGEg
ZGVsZXRlLgorICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCisgICAgICAgIHJldHVybjsK
ICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKICAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBm
b3IgdGhlIG1fcGVuZGluZ09wZW5DYWxscyBjYXNlcyBiZWxvdy4KQEAgLTEzNDIsNyArMTM2Myw2
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAgICAgICAgIGlmIChtX2ZhY3RvcnkpCiAgICAg
ICAgICAgICBtX2ZhY3RvcnktPnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChtX2lkZW50aWZpZXIp
OwogICAgIH0KLSAgICBtX2Nsb3NpbmdDb25uZWN0aW9uID0gZmFsc2U7CiB9CiAKIHZvaWQgQ3Jl
YXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAzNTNiZmEwOTMxODlk
MWQ4NGJkZmEwNjkxOTk3NzVkNTgwMTVjYjkyLi4xM2U4MzRlMDMyMzE3NmIzMjgzNDI4ZmQ1ZTI1
MjgwOTMzYThmN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC05MywxMSArOTMsMTUgQEAgcHJp
dmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURC
QmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3Ry
aW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgb3BlbkludGVybmFsKCk7Ci0gICAg
dm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwotICAgIHNpemVfdCBjb25uZWN0aW9uQ291
bnQoKTsKKyAgICBzaXplX3QgY29ubmVjdGlvbkNvdW50KCkgY29uc3Q7CiAgICAgdm9pZCBwcm9j
ZXNzUGVuZGluZ0NhbGxzKCk7CiAKLSAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCk7
CisgICAgYm9vbCBpc09wZW5Db25uZWN0aW9uQmxvY2tlZCgpIGNvbnN0OworICAgIGJvb2wgaXNS
dW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25CbG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCBydW5W
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IHJlcXVlc3RlZFZlcnNpb24pOworICAgIHZvaWQgcnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
RmluYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24p
OworCisgICAgYm9vbCBpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpIGNvbnN0OwogICAgIHZvaWQg
ZGVsZXRlRGF0YWJhc2VGaW5hbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgY2xh
c3MgVmVyc2lvbkNoYW5nZU9wZXJhdGlvbjsKQEAgLTEyMCw2ICsxMjQsNyBAQCBwcml2YXRlOgog
CiAgICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3Bl
bkNhbGw+ID4gbV9wZW5kaW5nT3BlbkNhbGxzOworICAgIERlcXVlPE93blB0cjxQZW5kaW5nT3Bl
bkNhbGw+ID4gbV9wZW5kaW5nUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQ2FsbHM7CiAgICAg
T3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW47CiAKICAgICBj
bGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZmJhOTI2MmU4NzhiY2M0ODhkMjg4MDE3
ODI3YjRjMjNmNWE2OTA1Li5hYzA1YTQwMWQyOTQzMjJjODg3Yzk2NDkyNzg2NzFmMmJlNDQ4MmJm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTItMjAgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElEQk9wZW5EQlJlcXVlc3Qgc29t
ZXRpbWVzIHJlY2VpdmVzIHR3byBibG9ja2VkIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRh
YmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGV4cGVj
dGVkIGV2ZW50IG9yZGVyaW5nLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1i
bG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQ6IFVwZGF0
ZWQgZXhwZWN0ZWQgZXZlbnQgb3JkZXJpbmcuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5qczoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG91YmxlLWJsb2NrZWQtb24tb3Bl
bi5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZl
cnNpb24tbG9uZy1xdWV1ZS5qczogVXBkYXRlZCBleHBlY3RlZCBldmVudCBvcmRlcmluZy4KKwog
MjAxMy0wMy0xMCAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgSW1wbGVtZW50IGluZXJ0IHN1YnRyZWVzIG5lZWRlZCBmb3IgbW9kYWwgPGRpYWxvZz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNl
LWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhw
ZWN0ZWQudHh0CmluZGV4IGQ3N2Y2NmJjYmQ1MWU0NmFlYWFmMGY3OTQyODRkODA3YmRmY2NjMDku
LjhiYmIyNzA2YTY5ZGZhZTAwNDM5YTY1NDE0YzhjYzQxOTcxOTFiODcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVy
c2lvbmNoYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLWV4cGVjdGVkLnR4dApA
QCAtNDgsMTUgKzQ4LDE2IEBAIGRlbGV0ZURhdGFiYXNlT25CbG9ja2VkKCk6CiBkZWxldGVEYXRh
YmFzZUJsb2NrZWRFdmVudEZpcmVkID0gdHJ1ZQogaDEuY2xvc2UoKQogCi1kZWxldGVEYXRhYmFz
ZU9uU3VjY2VzcygpOgotZGVsZXRlRGF0YWJhc2VDb21wbGV0ZSA9IHRydWUKLQogaDNPblVwZ3Jh
ZGVuZWVkZWQoKToKIAogdHJhbnNhY3Rpb25PbkNvbXBsZXRlKCk6CiB2ZXJzaW9uQ2hhbmdlQ29t
cGxldGUgPSB0cnVlCiAKIGgzT3BlblN1Y2Nlc3MoKToKK2gzLmNsb3NlKCkKKworZGVsZXRlRGF0
YWJhc2VPblN1Y2Nlc3MoKToKK2RlbGV0ZURhdGFiYXNlQ29tcGxldGUgPSB0cnVlCiAKIGg0T3Bl
blN1Y2Nlc3MoKToKIFBBU1Mgc2V0VmVyc2lvbkJsb2NrZWRFdmVudEZpcmVkIGlzIHRydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9u
LW9wZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZG91Ymxl
LWJsb2NrZWQtb24tb3Blbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwNDkzYjI3NWYwOGFi
ZDEzOWJkYjBhMmRjODhkYjUyOWM0MzdkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzQgQEAKK1JlZ3Jlc3Npb24gdGVzdCBmb3IgY2FzZSB3aGVyZSBhbiBJREJPcGVu
REJSZXF1ZXN0IHJlY2VpdmVzIGEgc2Vjb25kIGJsb2NrZWQgZXZlbnQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndl
YmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8
IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gImRvdWJsZS1ibG9ja2VkLW9uLW9wZW4uaHRt
bCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5h
bWUpCisKK2ZpcnN0VXBncmFkZU5lZWRlZCgpOgorYmxvY2tlZEV2ZW50RmlyZWQgPSBmYWxzZQor
CitmaXJzdE9wZW5TdWNjZXNzKCk6Citjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K2luZGV4ZWREQi5vcGVuKGRibmFtZSwgMikKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworc2Vj
b25kT3BlbkJsb2NrZWQoKToKK1BBU1MgYmxvY2tlZEV2ZW50RmlyZWQgaXMgZmFsc2UKK2Jsb2Nr
ZWRFdmVudEZpcmVkID0gdHJ1ZQorCit0aGlyZE9wZW5TdWNjZXNzKCk6Citjb25uZWN0aW9uMyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQKK2Nvbm5lY3Rpb24xLmNsb3NlKCkKK2Nvbm5lY3Rpb24zLmNs
b3NlKCkKKworc2Vjb25kT3BlblN1Y2Nlc3MoKToKK1BBU1MgYmxvY2tlZEV2ZW50RmlyZWQgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2Vk
LW9uLW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9j
a2VkLW9uLW9wZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjU1YzVmMzU1MDI3YTFmNGE0N2Q5NzM0YzZj
MTg3MjY3YTkyMWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RvdWJsZS1ibG9j
a2VkLW9uLW9wZW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVl
dWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1sb25nLXF1ZXVlLWV4cGVjdGVkLnR4dAppbmRleCA3ZjkwNWFmOGRmMWIxNTkyNzM4ZDU4OTNk
ZWNjOGRmYTE2YTJhMGUxLi42ODI5ZWE4ZjNjYmFlMjEyY2NjZjA1MDE0ODYzYjhjMjk3NDMzN2Uz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWxv
bmctcXVldWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQKQEAgLTM5LDEyICszOSw4IEBAIGRl
bGV0ZURhdGFiYXNlQmxvY2tlZENhbGxiYWNrKCk6CiBQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMg
MQogUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIG51bGwKIAotZGVsZXRlRGF0YWJhc2VTdWNjZXNz
Q2FsbGJhY2soKToKLVBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQuCi1QQVNT
IGV2ZW50LnR5cGUgaXMgInN1Y2Nlc3MiCi0KIGNvbm5lY3Rpb24yVXBncmFkZU5lZWRlZCgpOgot
UEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAxCiBQ
QVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgMgogZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiBQQVNT
IGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDAKQEAgLTU3LDIyICs1MywyMCBAQCBQQVNT
IGRiLnZlcnNpb24gaXMgMgogCiBjb25uZWN0aW9uMlN1Y2Nlc3MoKToKIGNvbm5lY3Rpb24yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAotY29ubmVjdGlvbjIub252ZXJzaW9uY2hhbmdlID0gY29ubmVj
dGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQKLQotY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQo
KToKLVBBU1MgZXZlbnQudHlwZSBpcyAidmVyc2lvbmNoYW5nZSIKLVBBU1MgZXZlbnQub2xkVmVy
c2lvbiBpcyAyCi1QQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgMwogY29ubmVjdGlvbjIuY2xvc2Uo
KQogCitkZWxldGVEYXRhYmFzZVN1Y2Nlc3NDYWxsYmFjaygpOgorUEFTUyBldmVudC50YXJnZXQu
cmVzdWx0IGlzIHVuZGVmaW5lZC4KK1BBU1MgZXZlbnQudHlwZSBpcyAic3VjY2VzcyIKKwogY29u
bmVjdGlvbjNVcGdyYWRlTmVlZGVkKCk6CiBnb3RVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlCiBQ
QVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgMwotUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDIKK1BB
U1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCiAKIGNvbm5lY3Rpb24zU3VjY2VzcygpOgogUEFTUyBn
b3RVcGdyYWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVzdWx0Lm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5vYmpl
Y3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAwCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2Ut
ZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzCmluZGV4IDcwNDUzNzA0OGM1ODg3NTIxNTQ5ZDFh
NTdkNzBmYWFiNzE0OWYzMmYuLjc2YmMwYTJmZjE1M2ZjMmQ2OGU5YWVjODJkOTQxNzAxODM2ZGVi
NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
ZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UuanMKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnkt
dmVyc2lvbmNoYW5nZS5qcwpAQCAtNTAsNyArNTAsOSBAQCBmdW5jdGlvbiBoMU9wZW5TdWNjZXNz
KGV2dCkKICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CiAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gaDNPcGVuU3VjY2VzcyhldnQp
IHsKICAgICAgICAgICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGgz
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImgzLmNsb3Nl
KCkiKTsKKyAgICAgICAgfTsKICAgICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbiBo
M0Jsb2NrZWQoZXZ0KSB7CiAgICAgICAgICAgICBwcmVhbWJsZShldnQpOwogICAgICAgICAgICAg
ZXZhbEFuZExvZygic2V0VmVyc2lvbkJsb2NrZWRFdmVudEZpcmVkID0gdHJ1ZSIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvdWJsZS1ibG9j
a2VkLW9uLW9wZW4uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZG91YmxlLWJsb2NrZWQtb24tb3Blbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDk4MzJmYzMyMDdlNzY2ZGU3
YmRlZTlkNzg5N2Y5YmE1OTIxMTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanMKQEAgLTAs
MCArMSw1MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJSZWdyZXNzaW9uIHRlc3Qg
Zm9yIGNhc2Ugd2hlcmUgYW4gSURCT3BlbkRCUmVxdWVzdCByZWNlaXZlcyBhIHNlY29uZCBibG9j
a2VkIGV2ZW50LiIpOworaW5kZXhlZERCVGVzdChmaXJzdFVwZ3JhZGVOZWVkZWQsIGZpcnN0T3Bl
blN1Y2Nlc3MpOworZnVuY3Rpb24gZmlyc3RVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBwcmVh
bWJsZShldnQpOworICAgIGV2YWxBbmRMb2coImJsb2NrZWRFdmVudEZpcmVkID0gZmFsc2UiKTsK
K30KKworZnVuY3Rpb24gZmlyc3RPcGVuU3VjY2VzcyhldnQpCit7CisgICAgcHJlYW1ibGUoZXZ0
KTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOwor
ICAgIHJlcXVlc3Qub25ibG9ja2VkID0gc2Vjb25kT3BlbkJsb2NrZWQ7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZWNvbmRPcGVuU3VjY2VzczsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxv
Y2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVOZWVk
ZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRoaXJkT3BlblN1Y2Nlc3M7Cit9
CisKK2Z1bmN0aW9uIHNlY29uZE9wZW5CbG9ja2VkKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQp
OworICAgIHNob3VsZEJlRmFsc2UoImJsb2NrZWRFdmVudEZpcmVkIik7CisgICAgZXZhbEFuZExv
ZygiYmxvY2tlZEV2ZW50RmlyZWQgPSB0cnVlIik7Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3BlblN1
Y2Nlc3MoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiY29ubmVj
dGlvbjMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlv
bjEuY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNsb3NlKCkiKTsKK30K
KworZnVuY3Rpb24gc2Vjb25kT3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHByZWFtYmxlKGV2dCk7
CisgICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkRXZlbnRGaXJlZCIpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcwppbmRleCA1MmNmZTU0ZDQx
MGVlYjgyMTVlMzM5MDZhNzA4MjY3ZjUyZjM0OGUxLi5jMGI2MTc5YWZlYmQ0MjRmYjhmZGQ2ZmI1
NzZhMGUwMTU0ODc0ZTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWxvbmctcXVldWUuanMKQEAgLTY1
LDcgKzY1LDcgQEAgZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzQ2FsbGJhY2soZXZ0KQog
ZnVuY3Rpb24gY29ubmVjdGlvbjJVcGdyYWRlTmVlZGVkKGV2dCkKIHsKICAgICBwcmVhbWJsZShl
dnQpOwotICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjAiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQub2xkVmVyc2lvbiIsICIxIik7CiAgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNp
b24iLCAiMiIpOwogICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwog
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CkBAIC03OCw3
ICs3OCw4IEBAIGZ1bmN0aW9uIGNvbm5lY3Rpb24yU3VjY2VzcyhldnQpCiB7CiAgICAgcHJlYW1i
bGUoZXZ0KTsKICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMi5vbnZlcnNpb25jaGFuZ2UgPSBjb25u
ZWN0aW9uMlZlcnNpb25DaGFuZ2VFdmVudCIpOworICAgIGNvbm5lY3Rpb24yLm9udmVyc2lvbmNo
YW5nZSA9IHVuZXhwZWN0ZWRWZXJzaW9uQ2hhbmdlQ2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygi
Y29ubmVjdGlvbjIuY2xvc2UoKSIpOwogfQogCiBmdW5jdGlvbiBjb25uZWN0aW9uMlRyYW5zYWN0
aW9uQ29tcGxldGUoZXZ0KQpAQCAtODcsMjggKzg4LDE5IEBAIGZ1bmN0aW9uIGNvbm5lY3Rpb24y
VHJhbnNhY3Rpb25Db21wbGV0ZShldnQpCiAgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiMiIp
OwogfQogCi1mdW5jdGlvbiBjb25uZWN0aW9uMlZlcnNpb25DaGFuZ2VFdmVudChldnQpCi17Ci0g
ICAgcHJlYW1ibGUoZXZ0KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUi
LCAidmVyc2lvbmNoYW5nZSIpOwotICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjIi
KTsKLSAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIzIik7Ci0gICAgZXZhbEFuZExv
ZygiY29ubmVjdGlvbjIuY2xvc2UoKSIpOwotfQotCiB2YXIgZ290VXBncmFkZU5lZWRlZEV2ZW50
ID0gZmFsc2U7CiBmdW5jdGlvbiBjb25uZWN0aW9uM1VwZ3JhZGVOZWVkZWQoZXZ0KQogewogICAg
IHByZWFtYmxlKGV2dCk7CiAgICAgZXZhbEFuZExvZygiZ290VXBncmFkZU5lZWRlZEV2ZW50ID0g
dHJ1ZSIpOwogICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjMiKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZl
cnNpb24iLCAiMCIpOwogfQogCiBmdW5jdGlvbiBjb25uZWN0aW9uM1N1Y2Nlc3MoZXZ0KQogewog
ICAgIHByZWFtYmxlKGV2dCk7CiAgICAgc2hvdWxkQmVUcnVlKCJnb3RVcGdyYWRlTmVlZGVkRXZl
bnQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196011</attachid>
            <date>2013-04-01 13:14:05 -0700</date>
            <delta_ts>2013-04-08 15:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105559-20130401131357.patch</filename>
            <type>text/plain</type>
            <size>24909</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmMGViMDg3MmYxNjBl
Mjk0YjVhMDgxY2FmODZiM2Y0NjkwMzFmYi4uN2ViZDBlYTE1ODRlNmViMWNmNWQ0NDkyMjY3YmJj
OTFmOTNmNDY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJP
cGVuREJSZXF1ZXN0IHNvbWV0aW1lcyByZWNlaXZlcyB0d28gYmxvY2tlZCBldmVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hdGNoIHRoZSBJREIg
c3BlYyBtb3JlIGNsb3NlbHkgZm9yIHRoZSBzdGVwcyBmb3Igb3BlbnMsIGRlbGV0ZXMsIGFuZCB2
ZXJzaW9uIGNoYW5nZXM6CisKKyAgICAgICAgVGhlIG9wZW4gc3RlcHM6CisgICAgICAgIC0gd2Fp
dCB1bnRpbCB0aGVyZSBhcmUgbm8gcnVubmluZyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb25z
IG9yIHBlbmRpbmcgZGVsZXRlcy4KKyAgICAgICAgLSBjcmVhdGUgYSAvY29ubmVjdGlvbi8KKyAg
ICAgICAgLSBydW4gdGhlICJ2ZXJzaW9uY2hhbmdlIiBzdGVwcyAoaWYgbmVjZXNzYXJ5KQorICAg
ICAgICBUaGUgInZlcnNpb25jaGFuZ2UiIHN0ZXBzOgorICAgICAgICAtIHNlbmQgInZlcnNpb25j
aGFuZ2UiIGFuZCAiYmxvY2tlZCIgZXZlbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAtIHdhaXQg
Zm9yIGFsbCBvdGhlciBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQKKyAgICAgICAgLSBjcmVhdGUg
YW4gZXhlY3V0ZSBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbgorCisgICAgICAgIFJlbGF0
aXZlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbidzIHByZXZpb3VzIGJlaGF2aW9yLCB0aGUgb3Blbi92
ZXJzaW9uY2hhbmdlIHN0ZXBzCisgICAgICAgIGFyZSBuZXZlciByZS1ydW4gc28gZHVwbGljYXRl
ICJibG9ja2VkIiBldmVudHMgYXJlIG5ldmVyIHNlbnQuIEFsc28sIHRoZSBjb25jZXB0dWFsCisg
ICAgICAgIC9jb25uZWN0aW9uLyBpcyBjcmVhdGVkIGVhcmxpZXIgd2hpY2ggYWZmZWN0cyBsYXRl
ciBkZWxldGVEYXRhYmFzZSByZXF1ZXN0cywgd2hpY2gKKyAgICAgICAgYXJlIGJsb2NrZWQgb24g
Y29ubmVjdGlvbnMuIFRoaXMgYWZmZWN0cyBhIGhhbmRmdWwgb2YgdGVzdHMgd2hpY2ggcHJvYmVk
IHRoaXMKKyAgICAgICAgaW50ZXJhY3Rpb24uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5odG1sCisg
ICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25D
b3VudCk6IE1hcmsgYXMgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKTogVXNlIGlzRm9vQmxvY2tlZCgpL2Zvb0ZpbmFs
KCkgcGF0dGVybi4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Omlz
T3BlbkNvbm5lY3Rpb25CbG9ja2VkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IEFkZCBjb25uZWN0aW9uIHRvIHNldCBo
ZXJlLCBzaW5jZSBpdCBjb3VudHMKKyAgICAgICAgZm9yIG9wZW4vdmVyc2lvbmNoYW5nZS9kZWxl
dGUgc3RlcHMuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjppc1J1
blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQpOiBTcGxpdCBpbnRvIGlzRm9vQmxvY2tl
ZCgpLi4uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5WZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pOiAuLi5mb28oKS4uLgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwpOiAu
Li5mb29GaW5hbCgpIHBhdHRlcm4uIEFsc28sCisgICAgICAgIGNvbm5lY3Rpb24gYWxyZWFkeSBh
ZGRlZCB0byBzZXQgYnkgdGhpcyBwb2ludC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKTogTWFyayBjb25zdC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKTogUmVhcnJhbmdlIGFu
ZCBjb21tZW50IGNvbmRpdGlvbnM7IHVzZSBUZW1wb3JhcnlDaGFuZ2UgZm9yIHNhZmV0eS4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6IE5ldyBt
ZXRob2RzLgorCiAyMDEzLTA0LTAxICBLb2ppIElzaGlpICA8a29qaWlzaGlAZ21haWwuY29tPgog
CiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1fcHVyZ2VQcmV2ZW50Q291bnQgd2hlbiBjbGlj
a2luZyB0ZXh0IHdpdGggZW1waGFzaXMgbWFya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
NDU3M2M5Y2ViYjNiZDAyZTU4ODg5MjM4ZmYwNGJkOThhZmFlMjhjNC4uNzk4NDZhY2FkN2IzZGI5
ZDEyOWM4ODA4N2FjNjRiZWE0ZjM1OTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEx
MjksNyArMTEyOSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25G
aW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJUCiAgICAgICAgIHByb2Nlc3NQ
ZW5kaW5nQ2FsbHMoKTsKIH0KIAotc2l6ZV90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5l
Y3Rpb25Db3VudCgpCitzaXplX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNv
dW50KCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcGVuZGluZyBvcGVu
IGNhbGxzLCBhcyB0aG9zZSBzaG91bGQgbm90IGJsb2NrIHZlcnNpb24gY2hhbmdlcyBhbmQgZGVs
ZXRlcy4KICAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCk7CkBAIC0xMTQy
LDI2ICsxMTQyLDI2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRp
bmdDYWxscygpCiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmlkICE9IEludmFsaWRJZCk7CiAg
ICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLT5jYWxsYmFja3MoKS0+b25TdWNjZXNzKHRo
aXMsIHRoaXMtPm1ldGFkYXRhKCkpOwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5y
ZWxlYXNlKCk7Ci0gICAgICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNvbXBsZXRlLCBhcyBwZW5k
aW5nIGRlbGV0ZXMgbWF5IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4KKyAgICAgICAgLy8gRmFs
bCB0aHJvdWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgb3BlbnMgbWF5IGJlIHVuYmxvY2tl
ZC4KICAgICB9CiAKLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBjaGVjayBpcyBvbmx5IGFuIG9wdGlt
aXphdGlvbiB0byByZWR1Y2UgcXVldWUtY2h1cm4gYW5kCi0gICAgLy8gbm90IG5lY2Vzc2FyeSBm
b3IgY29ycmVjdG5lc3M7IGRlbGV0ZURhdGFiYXNlIGFuZCBvcGVuQ29ubmVjdGlvbiB3aWxsCi0g
ICAgLy8gcmVxdWV1ZSB0aGVpciBjYWxscyBpZiB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlLgotICAg
IGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pCi0gICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkpIHsKKyAgICAgICAgd2hpbGUgKCFt
X3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIE93blB0cjxQZW5k
aW5nRGVsZXRlQ2FsbD4gcGVuZGluZ0RlbGV0ZUNhbGwgPSBtX3BlbmRpbmdEZWxldGVDYWxscy50
YWtlRmlyc3QoKTsKKyAgICAgICAgICAgIGRlbGV0ZURhdGFiYXNlRmluYWwocGVuZGluZ0RlbGV0
ZUNhbGwtPmNhbGxiYWNrcygpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBkZWxldGVEYXRhYmFz
ZUZpbmFsIHNob3VsZCBuZXZlciByZS1xdWV1ZSBjYWxscy4KKyAgICAgICAgQVNTRVJUKG1fcGVu
ZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSk7CisgICAgfQogCi0gICAgaWYgKCFtX3BlbmRpbmdE
ZWxldGVDYWxscy5pc0VtcHR5KCkgJiYgaXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKSkKKyAgICBp
ZiAoIW1fcGVuZGluZ1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkNhbGxzLmlzRW1wdHkoKSAm
JiAhaXNSdW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25CbG9ja2VkKCkpIHsKKyAgICAgICAgQVNT
RVJUKG1fcGVuZGluZ1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkNhbGxzLnNpemUoKSA9PSAx
KTsKKyAgICAgICAgT3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gcGVuZGluZ0NhbGwgPSBtX3BlbmRp
bmdSdW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25DYWxscy50YWtlRmlyc3QoKTsKKyAgICAgICAg
cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRmluYWwocGVuZGluZ0NhbGwtPmNhbGxiYWNrcygp
LCBwZW5kaW5nQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ0NhbGwtPnRyYW5zYWN0
aW9uSWQoKSwgcGVuZGluZ0NhbGwtPnZlcnNpb24oKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB3
aGlsZSAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8
UGVuZGluZ0RlbGV0ZUNhbGw+IHBlbmRpbmdEZWxldGVDYWxsID0gbV9wZW5kaW5nRGVsZXRlQ2Fs
bHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIGRlbGV0ZURhdGFiYXNlRmluYWwocGVuZGluZ0RlbGV0
ZUNhbGwtPmNhbGxiYWNrcygpKTsKICAgICB9Ci0gICAgLy8gZGVsZXRlRGF0YWJhc2VGaW5hbCBz
aG91bGQgbmV2ZXIgcmUtcXVldWUgY2FsbHMuCi0gICAgQVNTRVJUKG1fcGVuZGluZ0RlbGV0ZUNh
bGxzLmlzRW1wdHkoKSk7CiAKLSAgICAvLyBUaGlzIGNoZWNrIGlzIGFsc28gbm90IHJlYWxseSBu
ZWVkZWQsIG9wZW5Db25uZWN0aW9uIHdvdWxkIGp1c3QgcmVxdWV1ZSBpdHMgY2FsbHMuCi0gICAg
aWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikKKyAgICBpZiAoaXNPcGVuQ29u
bmVjdGlvbkJsb2NrZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT3BlbiBjYWxscyBj
YW4gYmUgcmVxdWV1ZWQgaWYgYW4gb3BlbiBjYWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbi4KQEAgLTExODAsMTMgKzExODAsMTggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHIKICAgICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb25JZCwgdHJhbnNhY3Rpb24uZ2V0
KCkpOwogfQogCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmlzT3BlbkNvbm5lY3Rpb25C
bG9ja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uIHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCk7Cit9CisKIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0
YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQog
ewogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKIAotICAg
IGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbikgeworICAgIGlmIChpc09wZW5Db25uZWN0aW9uQmxvY2tlZCgpKSB7
CiAgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVh
dGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIyMCw3ICsxMjI1LDcgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2sKIAogICAgIGlmICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbikgewogICAgICAgICBpZiAoIWlzTmV3RGF0YWJhc2UpIHsKLSAgICAgICAg
ICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKHRoaXMsIHRoaXMtPm1ldGFkYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0xMjI5LDcgKzEyMzQsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawogICAgIH0K
IAogICAgIGlmICh2ZXJzaW9uID4gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Ci0gICAgICAgIHJ1
bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tz
LCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKTsKKyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOworICAgICAgICBydW5WZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24oY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRh
LmludFZlcnNpb24pIHsKQEAgLTEyNDEsMzEgKzEyNDcsNDQgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2sKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzLCB0aGlzLT5tZXRhZGF0YSgpKTsK
IH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQorYm9vbCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjppc1J1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkJsb2NrZWQoKSBjb25zdAor
eworICAgIHJldHVybiBjb25uZWN0aW9uQ291bnQoKSA+IDE7Cit9CisKK3ZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIEFTU0VSVChjYWxsYmFja3MpOwot
ICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVu
ZCgpOyArK2l0KSB7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFpbnMo
ZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICBpZiAoaXNSdW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b25CbG9ja2VkKCkpIHsKICAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50IGlz
IG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4KLSAg
ICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKLSAgICAgICAgICAgICgqaXQpLT5v
blZlcnNpb25DaGFuZ2UobV9tZXRhZGF0YS5pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsK
LSAgICB9Ci0gICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZl
cnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKLSAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sg
bV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCi0gICAgLy8gb3Ig
ZmlyaW5nIGEgYmxvY2tlZCBldmVudCwgYnV0IGluc3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3Rl
bnQgd2l0aCBob3cKLSAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQg
aXQuCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJsb2NrZWQgYW5kIGluc3Rl
YWQgd2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKLSAgICAvLyB0ZWxscyB1cyB0aGF0IGFsbCB0aGUg
YmxvY2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25D
b3VudCgpKQorICAgICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFz
ZUNhbGxiYWNrcy5nZXQoKSkKKyAgICAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdl
KG1fbWV0YWRhdGEuaW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24g
Y2hhbmdlIGV2ZW50cyBhcmUKKyAgICAgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNoZWNrIG1f
ZGF0YWJhc2VDYWxsYmFja3MuZW1wdHkoKSBiZWZvcmUgcHJvY2VlZGluZworICAgICAgICAvLyBv
ciBmaXJpbmcgYSBibG9ja2VkIGV2ZW50LCBidXQgaW5zdGVhZCB3ZSBzaG91bGQgYmUgY29uc2lz
dGVudCB3aXRoIGhvdworICAgICAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5
KSBkaWQgaXQuCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGNhbGwgdG8gb25CbG9ja2Vk
IGFuZCBpbnN0ZWFkIHdhaXQgdW50aWwgdGhlIGZyb250ZW5kCisgICAgICAgIC8vIHRlbGxzIHVz
IHRoYXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCiAg
ICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEuaW50VmVyc2lvbik7Ci0gICAg
Ly8gRklYTUU6IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24u
Ci0gICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9u
Q291bnQoKSkgewotICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVu
Q2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQs
IHJlcXVlc3RlZFZlcnNpb24pKTsKKworICAgICAgICBtX3BlbmRpbmdSdW5WZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkZp
bmFsKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3Rl
ZFZlcnNpb24pOworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1blZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbkZpbmFsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tz
LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAg
ICBBU1NFUlQoIWlzUnVuVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uQmxvY2tlZCgpKTsKIAorICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VD
YWxsYmFja3M7CiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwogICAgIGNyZWF0
ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvYmplY3RTdG9y
ZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkKTsKQEAgLTEyNzMsNyArMTI5Miw2IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJh
Y2tzLCBkYXRhYmFzZUNhbGxiYWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CiAK
ICAgICBBU1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuKTsKLSAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrcykKQEAgLTEyOTQsNyArMTMxMiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAg
ICAgZGVsZXRlRGF0YWJhc2VGaW5hbChjYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotYm9vbCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjppc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpCitib29sIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gY29ubmVjdGlvbkNvdW50KCk7CiB9CkBAIC0xMzI1LDkgKzEzNDMsNiBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IHBycENhbGxiYWNrcwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5y
ZWxlYXNlKCk7CiAgICAgfQogCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgLy8gcHJvY2Vzc1BlbmRpbmdDYWxscyBhbGxvd3MgdGhlIGluc3Bl
Y3RvciB0byBwcm9jZXNzIGEgcGVuZGluZyBvcGVuIGNhbGwKICAgICAvLyBhbmQgY2FsbCBjbG9z
ZSwgcmVlbnRlcmluZyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZS4gVGhlbiB0aGUKICAg
ICAvLyBiYWNrZW5kIHdvdWxkIGJlIHJlbW92ZWQgYm90aCBieSB0aGUgaW5zcGVjdG9yIGNsb3Np
bmcgaXRzIGNvbm5lY3Rpb24sIGFuZApAQCAtMTMzNiw2ICsxMzUxLDExIEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzCiAgICAgaWYgKG1fY2xvc2luZ0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2xvc2luZ0Nvbm5lY3Rpb24obV9jbG9zaW5n
Q29ubmVjdGlvbiwgdHJ1ZSk7CisKKyAgICAvLyBJZiB0aGVyZSBhcmUgMiBjb25uZWN0aW9ucyBy
ZW1haW5pbmcgb3BlcmF0aW9ucyBhcmUgbm90IHVuYmxvY2tlZCwgYnV0IGEgY291bnQKKyAgICAv
LyBvZiAxIHVuYmxvY2tzIGEgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24sIGFuZCBhIGNvdW50
IG9mIDAgdW5ibG9ja3MgYSBkZWxldGUuCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkK
KyAgICAgICAgcmV0dXJuOwogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIC8vIEZJ
WE1FOiBBZGQgYSB0ZXN0IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxzIGNhc2VzIGJlbG93Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCmluZGV4IDM1M2JmYTA5MzE4OWQxZDg0YmRmYTA2OTE5OTc3NWQ1ODAx
NWNiOTIuLjEzZTgzNGUwMzIzMTc2YjMyODM0MjhmZDVlMjUyODA5MzNhOGY3ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKQEAgLTkzLDExICs5MywxNSBAQCBwcml2YXRlOgogICAgIElEQkRhdGFiYXNl
QmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNl
LCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIp
OwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKLSAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbik7Ci0gICAgc2l6ZV90IGNvbm5lY3Rpb25Db3VudCgpOworICAgIHNpemVfdCBjb25u
ZWN0aW9uQ291bnQoKSBjb25zdDsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAot
ICAgIGJvb2wgaXNEZWxldGVEYXRhYmFzZUJsb2NrZWQoKTsKKyAgICBib29sIGlzT3BlbkNvbm5l
Y3Rpb25CbG9ja2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1J1blZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbkJsb2NrZWQoKSBjb25zdDsKKyAgICB2b2lkIHJ1blZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7Cisg
ICAgdm9pZCBydW5WZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25GaW5hbChQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CisKKyAgICBib29sIGlzRGVsZXRl
RGF0YWJhc2VCbG9ja2VkKCkgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZUZpbmFsKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICBjbGFzcyBWZXJzaW9uQ2hhbmdlT3BlcmF0
aW9uOwpAQCAtMTIwLDYgKzEyNCw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBQZW5kaW5nT3Bl
bkNhbGw7CiAgICAgRGVxdWU8T3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gPiBtX3BlbmRpbmdPcGVu
Q2FsbHM7CisgICAgRGVxdWU8T3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gPiBtX3BlbmRpbmdSdW5W
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25DYWxsczsKICAgICBPd25QdHI8UGVuZGluZ09wZW5DYWxs
PiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbjsKIAogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVDYWxs
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDExOWU4YjMxM2ZjZmJmOTVmM2IyMzJmNjFjM2QwNzk3NWQwMzk1MDMuLmFmOGI0
MmFmM2ZlNjVmY2IyN2QyZTEyZDM1MTQ5MDMzMzU5OWY3MDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxMi0xMi0yMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEluZGV4ZWREQjogSURCT3BlbkRCUmVxdWVzdCBzb21ldGltZXMgcmVjZWl2ZXMgdHdvIGJs
b2NrZWQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU1NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lv
bmNoYW5nZS1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgZXhwZWN0ZWQgZXZlbnQgb3JkZXJpbmcuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZG91YmxlLWJsb2NrZWQtb24tb3Blbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2Vk
LW9uLW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1sb25nLXF1ZXVlLWV4cGVjdGVkLnR4dDogVXBkYXRlZCBleHBlY3RlZCBldmVudCBvcmRl
cmluZy4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJh
c2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVlLmpzOiBV
cGRhdGVkIGV4cGVjdGVkIGV2ZW50IG9yZGVyaW5nLgorCiAyMDEzLTA0LTAxICBaYW4gRG9iZXJz
ZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJk
ZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVk
YXRhYmFzZS1kZWxheWVkLWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hh
bmdlLWV4cGVjdGVkLnR4dAppbmRleCBkNzdmNjZiY2JkNTFlNDZhZWFhZjBmNzk0Mjg0ZDgwN2Jk
ZmNjYzA5Li44YmJiMjcwNmE2OWRmYWUwMDQzOWE2NTQxNGM4Y2M0MTk3MTkxYjg3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS1kZWxheWVk
LWJ5LXZlcnNpb25jaGFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS1leHBlY3Rl
ZC50eHQKQEAgLTQ4LDE1ICs0OCwxNiBAQCBkZWxldGVEYXRhYmFzZU9uQmxvY2tlZCgpOgogZGVs
ZXRlRGF0YWJhc2VCbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUKIGgxLmNsb3NlKCkKIAotZGVsZXRl
RGF0YWJhc2VPblN1Y2Nlc3MoKToKLWRlbGV0ZURhdGFiYXNlQ29tcGxldGUgPSB0cnVlCi0KIGgz
T25VcGdyYWRlbmVlZGVkKCk6CiAKIHRyYW5zYWN0aW9uT25Db21wbGV0ZSgpOgogdmVyc2lvbkNo
YW5nZUNvbXBsZXRlID0gdHJ1ZQogCiBoM09wZW5TdWNjZXNzKCk6CitoMy5jbG9zZSgpCisKK2Rl
bGV0ZURhdGFiYXNlT25TdWNjZXNzKCk6CitkZWxldGVEYXRhYmFzZUNvbXBsZXRlID0gdHJ1ZQog
CiBoNE9wZW5TdWNjZXNzKCk6CiBQQVNTIHNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCBpcyB0
cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxv
Y2tlZC1vbi1vcGVuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MDQ5M2Iy
NzVmMDhhYmQxMzliZGIwYTJkYzg4ZGI1MjljNDM3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDM0IEBACitSZWdyZXNzaW9uIHRlc3QgZm9yIGNhc2Ugd2hlcmUgYW4g
SURCT3BlbkRCUmVxdWVzdCByZWNlaXZlcyBhIHNlY29uZCBibG9ja2VkIGV2ZW50LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwg
c2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4
ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJkb3VibGUtYmxvY2tlZC1vbi1v
cGVuLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9w
ZW4oZGJuYW1lKQorCitmaXJzdFVwZ3JhZGVOZWVkZWQoKToKK2Jsb2NrZWRFdmVudEZpcmVkID0g
ZmFsc2UKKworZmlyc3RPcGVuU3VjY2VzcygpOgorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQu
cmVzdWx0CitpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCitpbmRleGVkREIub3BlbihkYm5hbWUp
CisKK3NlY29uZE9wZW5CbG9ja2VkKCk6CitQQVNTIGJsb2NrZWRFdmVudEZpcmVkIGlzIGZhbHNl
CitibG9ja2VkRXZlbnRGaXJlZCA9IHRydWUKKwordGhpcmRPcGVuU3VjY2VzcygpOgorY29ubmVj
dGlvbjMgPSBldmVudC50YXJnZXQucmVzdWx0Citjb25uZWN0aW9uMS5jbG9zZSgpCitjb25uZWN0
aW9uMy5jbG9zZSgpCisKK3NlY29uZE9wZW5TdWNjZXNzKCk6CitQQVNTIGJsb2NrZWRFdmVudEZp
cmVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3VibGUt
YmxvY2tlZC1vbi1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1NWM1ZjM1NTAyN2ExZjRhNDdk
OTczNGM2YzE4NzI2N2E5MjFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1s
b25nLXF1ZXVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tbG9uZy1xdWV1ZS1leHBlY3RlZC50eHQKaW5kZXggN2Y5MDVhZjhkZjFiMTU5Mjcz
OGQ1ODkzZGVjYzhkZmExNmEyYTBlMS4uNjgyOWVhOGYzY2JhZTIxMmNjY2YwNTAxNDg2M2I4YzI5
NzQzMzdlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1sb25nLXF1ZXVlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWxvbmctcXVldWUtZXhwZWN0ZWQudHh0CkBAIC0zOSwxMiArMzks
OCBAQCBkZWxldGVEYXRhYmFzZUJsb2NrZWRDYWxsYmFjaygpOgogUEFTUyBldmVudC5vbGRWZXJz
aW9uIGlzIDEKIFBBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyBudWxsCiAKLWRlbGV0ZURhdGFiYXNl
U3VjY2Vzc0NhbGxiYWNrKCk6Ci1QQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdW5kZWZpbmVk
LgotUEFTUyBldmVudC50eXBlIGlzICJzdWNjZXNzIgotCiBjb25uZWN0aW9uMlVwZ3JhZGVOZWVk
ZWQoKToKLVBBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24g
aXMgMQogUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDIKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAogUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAwCkBAIC01NywyMiArNTMsMjAg
QEAgUEFTUyBkYi52ZXJzaW9uIGlzIDIKIAogY29ubmVjdGlvbjJTdWNjZXNzKCk6CiBjb25uZWN0
aW9uMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLWNvbm5lY3Rpb24yLm9udmVyc2lvbmNoYW5nZSA9
IGNvbm5lY3Rpb24yVmVyc2lvbkNoYW5nZUV2ZW50Ci0KLWNvbm5lY3Rpb24yVmVyc2lvbkNoYW5n
ZUV2ZW50KCk6Ci1QQVNTIGV2ZW50LnR5cGUgaXMgInZlcnNpb25jaGFuZ2UiCi1QQVNTIGV2ZW50
Lm9sZFZlcnNpb24gaXMgMgotUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKIGNvbm5lY3Rpb24y
LmNsb3NlKCkKIAorZGVsZXRlRGF0YWJhc2VTdWNjZXNzQ2FsbGJhY2soKToKK1BBU1MgZXZlbnQu
dGFyZ2V0LnJlc3VsdCBpcyB1bmRlZmluZWQuCitQQVNTIGV2ZW50LnR5cGUgaXMgInN1Y2Nlc3Mi
CisKIGNvbm5lY3Rpb24zVXBncmFkZU5lZWRlZCgpOgogZ290VXBncmFkZU5lZWRlZEV2ZW50ID0g
dHJ1ZQogUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKLVBBU1MgZXZlbnQub2xkVmVyc2lvbiBp
cyAyCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAogCiBjb25uZWN0aW9uM1N1Y2Nlc3MoKToK
IFBBU1MgZ290VXBncmFkZU5lZWRlZEV2ZW50IGlzIHRydWUKLVBBU1MgZXZlbnQudGFyZ2V0LnJl
c3VsdC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hh
bmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWRh
dGFiYXNlLWRlbGF5ZWQtYnktdmVyc2lvbmNoYW5nZS5qcwppbmRleCA3MDQ1MzcwNDhjNTg4NzUy
MTU0OWQxYTU3ZDcwZmFhYjcxNDlmMzJmLi43NmJjMGEyZmYxNTNmYzJkNjhlOWFlYzgyZDk0MTcw
MTgzNmRlYjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGVsZXRlZGF0YWJhc2UtZGVsYXllZC1ieS12ZXJzaW9uY2hhbmdlLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkYXRhYmFzZS1kZWxh
eWVkLWJ5LXZlcnNpb25jaGFuZ2UuanMKQEAgLTUwLDcgKzUwLDkgQEAgZnVuY3Rpb24gaDFPcGVu
U3VjY2VzcyhldnQpCiAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwogICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGgzT3BlblN1Y2Nl
c3MoZXZ0KSB7CiAgICAgICAgICAgICBwcmVhbWJsZShldnQpOwotICAgICAgICB9CisgICAgICAg
ICAgICBoMyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJo
My5jbG9zZSgpIik7CisgICAgICAgIH07CiAgICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVu
Y3Rpb24gaDNCbG9ja2VkKGV2dCkgewogICAgICAgICAgICAgcHJlYW1ibGUoZXZ0KTsKICAgICAg
ICAgICAgIGV2YWxBbmRMb2coInNldFZlcnNpb25CbG9ja2VkRXZlbnRGaXJlZCA9IHRydWUiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3Vi
bGUtYmxvY2tlZC1vbi1vcGVuLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RvdWJsZS1ibG9ja2VkLW9uLW9wZW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ5ODMyZmMzMjA3
ZTc2NmRlN2JkZWU5ZDc4OTdmOWJhNTkyMTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb3VibGUtYmxvY2tlZC1vbi1vcGVuLmpz
CkBAIC0wLDAgKzEsNTEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiUmVncmVzc2lv
biB0ZXN0IGZvciBjYXNlIHdoZXJlIGFuIElEQk9wZW5EQlJlcXVlc3QgcmVjZWl2ZXMgYSBzZWNv
bmQgYmxvY2tlZCBldmVudC4iKTsKK2luZGV4ZWREQlRlc3QoZmlyc3RVcGdyYWRlTmVlZGVkLCBm
aXJzdE9wZW5TdWNjZXNzKTsKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQpCit7Cisg
ICAgcHJlYW1ibGUoZXZ0KTsKKyAgICBldmFsQW5kTG9nKCJibG9ja2VkRXZlbnRGaXJlZCA9IGZh
bHNlIik7Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIHByZWFt
YmxlKGV2dCk7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwg
MikiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHNlY29uZE9wZW5CbG9ja2VkOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2Vjb25kT3BlblN1Y2Nlc3M7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBl
Y3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdy
YWRlTmVlZGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aGlyZE9wZW5TdWNj
ZXNzOworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuQmxvY2tlZChldnQpCit7CisgICAgcHJlYW1i
bGUoZXZ0KTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkRXZlbnRGaXJlZCIpOworICAgIGV2
YWxBbmRMb2coImJsb2NrZWRFdmVudEZpcmVkID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiB0aGly
ZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJsZShldnQpOworICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb24xLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9zZSgp
Iik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBwcmVhbWJs
ZShldnQpOworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZEV2ZW50RmlyZWQiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWxvbmctcXVldWUuanMKaW5kZXggNTJj
ZmU1NGQ0MTBlZWI4MjE1ZTMzOTA2YTcwODI2N2Y1MmYzNDhlMS4uYzBiNjE3OWFmZWJkNDI0ZmI4
ZmRkNmZiNTc2YTBlMDE1NDg3NGU3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tbG9uZy1xdWV1ZS5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1sb25nLXF1ZXVlLmpz
CkBAIC02NSw3ICs2NSw3IEBAIGZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2Vzc0NhbGxiYWNr
KGV2dCkKIGZ1bmN0aW9uIGNvbm5lY3Rpb24yVXBncmFkZU5lZWRlZChldnQpCiB7CiAgICAgcHJl
YW1ibGUoZXZ0KTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAg
c2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMSIpOwogICAgIHNob3VsZEJlKCJldmVudC5u
ZXdWZXJzaW9uIiwgIjIiKTsKICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwpA
QCAtNzgsNyArNzgsOCBAQCBmdW5jdGlvbiBjb25uZWN0aW9uMlN1Y2Nlc3MoZXZ0KQogewogICAg
IHByZWFtYmxlKGV2dCk7CiAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIub252ZXJzaW9uY2hhbmdl
ID0gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQiKTsKKyAgICBjb25uZWN0aW9uMi5vbnZl
cnNpb25jaGFuZ2UgPSB1bmV4cGVjdGVkVmVyc2lvbkNoYW5nZUNhbGxiYWNrOworICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24yLmNsb3NlKCkiKTsKIH0KIAogZnVuY3Rpb24gY29ubmVjdGlvbjJU
cmFuc2FjdGlvbkNvbXBsZXRlKGV2dCkKQEAgLTg3LDI4ICs4OCwxOSBAQCBmdW5jdGlvbiBjb25u
ZWN0aW9uMlRyYW5zYWN0aW9uQ29tcGxldGUoZXZ0KQogICAgIHNob3VsZEJlKCJkYi52ZXJzaW9u
IiwgIjIiKTsKIH0KIAotZnVuY3Rpb24gY29ubmVjdGlvbjJWZXJzaW9uQ2hhbmdlRXZlbnQoZXZ0
KQotewotICAgIHByZWFtYmxlKGV2dCk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50eXBlIiwgInZlcnNpb25jaGFuZ2UiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lv
biIsICIyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOwotICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb24yLmNsb3NlKCkiKTsKLX0KLQogdmFyIGdvdFVwZ3JhZGVOZWVk
ZWRFdmVudCA9IGZhbHNlOwogZnVuY3Rpb24gY29ubmVjdGlvbjNVcGdyYWRlTmVlZGVkKGV2dCkK
IHsKICAgICBwcmVhbWJsZShldnQpOwogICAgIGV2YWxBbmRMb2coImdvdFVwZ3JhZGVOZWVkZWRF
dmVudCA9IHRydWUiKTsKICAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIzIik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVu
dC5vbGRWZXJzaW9uIiwgIjAiKTsKIH0KIAogZnVuY3Rpb24gY29ubmVjdGlvbjNTdWNjZXNzKGV2
dCkKIHsKICAgICBwcmVhbWJsZShldnQpOwogICAgIHNob3VsZEJlVHJ1ZSgiZ290VXBncmFkZU5l
ZWRlZEV2ZW50Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>