<?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>43744</bug_id>
          
          <creation_ts>2010-08-09 13:35:22 -0700</creation_ts>
          <short_desc>Beginnings of IndexedDB persistance + IDBDatabase.description fleshed out</short_desc>
          <delta_ts>2010-08-17 09:18:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>andreip</cc>
    
    <cc>bulach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262298</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-09 13:35:22 -0700</bug_when>
    <thetext>Beginnings of IndexedDB persistance + IDBDatabase.description fleshed out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262312</commentid>
    <comment_count>1</comment_count>
      <attachid>63927</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-09 14:02:38 -0700</bug_when>
    <thetext>Created attachment 63927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262323</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-09 14:25:16 -0700</bug_when>
    <thetext>Attachment 63927 did not build on chromium:
Build output: http://queues.webkit.org/results/3746002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262585</commentid>
    <comment_count>3</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-08-10 03:05:31 -0700</bug_when>
    <thetext>exciting stuff! some general drive-by comments:

41 function thirdSuccess() {
   
brackets on the next line here and all above
 
   
2         request = indexedDB.open(&quot;another&quot;, &quot;test of the description attribute&quot;);   
there&apos;s a bunch of places with this string, perhaps declare it as a global?
var test_description = &quot;test of the description attribute&quot;;
   
54     String description() const { return m_description; }
I thought we were not caching anything yet?

39 static bool extractMetaData
as for the table name and metadataQuery below, s/D/d/

60 static bool setMetaData
ditto

64     sqliteDatabase-&gt;executeCommand(&quot;DELETE FROM MetaData&quot;);
well, as long as it&apos;s consistent, change it either way.. :)

66     SQLiteStatement insert(*sqliteDatabase, &quot;INSERT INTO MetaData VALUES (?, ?, ?)&quot;);
I&apos;m not sure what&apos;s the SQLite dialect, but if possible, it&apos;s safer to name the columns rather than positional arguments:
INSERT INTO Metada (name, description, version) VALUES (?, ?, ?)


72     insert.bindText(1, name);
getColumnText is 0-based, but bindText is 1-based, how convenient. :)

81     // FIXME: Should we assert there&apos;s only one row?
should it just assert that the call above:
  64     sqliteDatabase-&gt;executeCommand(&quot;DELETE FROM MetaData&quot;);
returns true?

31         [CallWith=ScriptExecutionContext] IDBRequest open(in DOMString name, in [Optional,ConvertUndefinedOrNullToNullString] DOMString description);
add a space:
s/Optional,/Optional, /

35 #include &quot;SQLiteDatabase.h&quot;
36 #include &quot;SecurityOrigin.h&quot;
sort order

52 static PassOwnPtr&lt;SQLiteDatabase&gt; openSQLiteDatabase
we surely need to sanitize this function..

81     for (const char** cur = commands; *cur; ++cur) {
is there an ARRAYSIZE or some variation of it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262645</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 06:11:15 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; exciting stuff! some general drive-by comments:
&gt; 
&gt; 41 function thirdSuccess() {
&gt; 
&gt; brackets on the next line here and all above

done
 
&gt; 2         request = indexedDB.open(&quot;another&quot;, &quot;test of the description attribute&quot;);   
&gt; there&apos;s a bunch of places with this string, perhaps declare it as a global?
&gt; var test_description = &quot;test of the description attribute&quot;;

I don&apos;t really see the point.  I mean this test, like most, is kind of crappy/contrived code.  I don&apos;t really know what I&apos;d name it.  After all, it&apos;s just one of many test_descriptions, so that doesn&apos;t seem very accurate.  To be honest, I think it&apos;s more clear as is.
 
&gt; 54     String description() const { return m_description; }
&gt; I thought we were not caching anything yet?

This is specced to stay the value it was when the DB was initialized.  So this is actually for correctness, not an optimization.
 
&gt; 39 static bool extractMetaData
&gt; as for the table name and metadataQuery below, s/D/d/
&gt; 
&gt; 60 static bool setMetaData
&gt; ditto

Now consistent.
 
&gt; 64     sqliteDatabase-&gt;executeCommand(&quot;DELETE FROM MetaData&quot;);
&gt; well, as long as it&apos;s consistent, change it either way.. :)
&gt; 
&gt; 66     SQLiteStatement insert(*sqliteDatabase, &quot;INSERT INTO MetaData VALUES (?, ?, ?)&quot;);
&gt; I&apos;m not sure what&apos;s the SQLite dialect, but if possible, it&apos;s safer to name the columns rather than positional arguments:
&gt; INSERT INTO Metada (name, description, version) VALUES (?, ?, ?)

k

&gt; 72     insert.bindText(1, name);
&gt; getColumnText is 0-based, but bindText is 1-based, how convenient. :)

Yes.  Quite lovely.

&gt; 81     // FIXME: Should we assert there&apos;s only one row?
&gt; should it just assert that the call above:

Hu?

&gt;   64     sqliteDatabase-&gt;executeCommand(&quot;DELETE FROM MetaData&quot;);
&gt; returns true?

We don&apos;t really care whether it succeeds.
 
&gt; 31         [CallWith=ScriptExecutionContext] IDBRequest open(in DOMString name, in [Optional,ConvertUndefinedOrNullToNullString] DOMString description);
&gt; add a space:
&gt; s/Optional,/Optional, /

done

&gt; 35 #include &quot;SQLiteDatabase.h&quot;
&gt; 36 #include &quot;SecurityOrigin.h&quot;
&gt; sort order

Q comes before e in ASCII
 
&gt; 52 static PassOwnPtr&lt;SQLiteDatabase&gt; openSQLiteDatabase
&gt; we surely need to sanitize this function..

Good point...prob need this before landing.

&gt; 81     for (const char** cur = commands; *cur; ++cur) {
&gt; is there an ARRAYSIZE or some variation of it?

I think it&apos;s only in certain platform layers, but I&apos;m not sure why.  Is there any other code that establishes another way of doing this that&apos;s standard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262649</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 06:19:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; 52 static PassOwnPtr&lt;SQLiteDatabase&gt; openSQLiteDatabase
&gt; &gt; we surely need to sanitize this function..
&gt; 
&gt; Good point...prob need this before landing.

Changed the host encoding in security origin to be used for this.
 
&gt; &gt; 81     for (const char** cur = commands; *cur; ++cur) {
&gt; &gt; is there an ARRAYSIZE or some variation of it?
&gt; 
&gt; I think it&apos;s only in certain platform layers, but I&apos;m not sure why.  Is there any other code that establishes another way of doing this that&apos;s standard?

arraysize seems to work.  switched it to use that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262650</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 06:20:47 -0700</bug_when>
    <thetext>Hmm...before landing I guess I should also un-hard-code /tmp/test.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262665</commentid>
    <comment_count>7</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-10 07:01:56 -0700</bug_when>
    <thetext> WebCore/manual-tests/indexed-database.html
&gt;  document.getElementById(&quot;description&quot;).innerHTML = &quot;&lt;font color

Wow, font tag! Make it a marquee element instead? :)

&gt; WebCore/storage/IDBDatabaseBackendImpl.cpp
&gt;  extractMetaData(SQLiteDatabase* sqliteDatabase, const String&amp; expectedName, String&amp; foundDescription, String&amp; foundVersion)

Hmm, what is the WK style wrt reference arguments? foundDescription/Version are output params so should they be pointers instead? That&apos;s what the Google styleguide recommends and I think it&apos;s a good recommendation.


&gt; String foundDescription = &quot;&quot;;
&gt;   bool result = extractMetaData(m_sqliteDatabase.get(), m_name, foundDescription, m_version);
&gt;     m_description = description.isNull() ? foundDescription : description;
&gt; 
&gt;     if (!result || m_description != foundDescription)
&gt;         setMetaData(m_sqliteDatabase.get(), m_name, m_description, m_version);

This transforms null strings to empty strings but that&apos;s not what the spec says. Add a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262670</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 07:10:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt;  WebCore/manual-tests/indexed-database.html
&gt; &gt;  document.getElementById(&quot;description&quot;).innerHTML = &quot;&lt;font color
&gt; 
&gt; Wow, font tag! Make it a marquee element instead? :)
&gt; 
&gt; &gt; WebCore/storage/IDBDatabaseBackendImpl.cpp
&gt; &gt;  extractMetaData(SQLiteDatabase* sqliteDatabase, const String&amp; expectedName, String&amp; foundDescription, String&amp; foundVersion)
&gt; 
&gt; Hmm, what is the WK style wrt reference arguments? foundDescription/Version are output params so should they be pointers instead? That&apos;s what the Google styleguide recommends and I think it&apos;s a good recommendation.

I believe what I did is the proper style within WebKit.
 
&gt; &gt; String foundDescription = &quot;&quot;;
&gt; &gt;   bool result = extractMetaData(m_sqliteDatabase.get(), m_name, foundDescription, m_version);
&gt; &gt;     m_description = description.isNull() ? foundDescription : description;
&gt; &gt; 
&gt; &gt;     if (!result || m_description != foundDescription)
&gt; &gt;         setMetaData(m_sqliteDatabase.get(), m_name, m_description, m_version);
&gt; 
&gt; This transforms null strings to empty strings but that&apos;s not what the spec says. Add a FIXME.

The spec is in flux.  Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262671</commentid>
    <comment_count>9</comment_count>
      <attachid>64011</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-10 07:14:33 -0700</bug_when>
    <thetext>Created attachment 64011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262677</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 07:57:25 -0700</bug_when>
    <thetext>Attachment 64011 did not build on chromium:
Build output: http://queues.webkit.org/results/3771024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263161</commentid>
    <comment_count>11</comment_count>
      <attachid>64011</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-11 04:04:30 -0700</bug_when>
    <thetext>Comment on attachment 64011
Patch

WebCore/storage/IDBFactoryBackendImpl.cpp:101
 +      // FIXME: Everything from now on should be done on another thread.
Shouldn&apos;t the call to setDescription be on another thread too, as it calls setMetaData() ?

WebCore/page/SecurityOrigin.h:161
 +      static String encodeForFileName(const String&amp;);
I&apos;m not sure this should be part of SecurityOrigin - it has little to do with origins or security!

WebCore/manual-tests/indexed-database.html:41
 +          indexedDB.open(&quot;another&quot;, &quot;xyz&quot;);
It would be good to test that having re-opened these databases with new descriptions, JavaScript doesn&apos;t see the new descriptions until the page is reloaded.

WebCore/manual-tests/indexed-database.html:49
 +          } else if (window.anotherDB.description != &quot;test of the description attribute&quot;) {
This test looks wrong, at least for the use pattern described at the top

WebCore/manual-tests/indexed-database.html:47
 +              // Since we passed in nothing, the description should not be reset.
This comment looks wrong

WebCore/manual-tests/indexed-database.html:13
 +  &lt;p&gt;Now click &lt;a href=&quot;javascript:updateDescription()&quot;&gt;here&lt;/a&gt;, close the browser, come back, and click &lt;a href=&quot;javascript:readDescription()&quot;&gt;here&lt;/a&gt;.  If everything worked well, this should be a success here: &lt;span id=description&gt;...&lt;/span&gt;&lt;/p&gt;
It looks like this page suffers from race conditions. If the open() commands in the inline script are still executing when the user starts clicking these links, the test won&apos;t proceed as expected.

WebCore/manual-tests/indexed-database.html:13
 +  &lt;p&gt;Now click &lt;a href=&quot;javascript:updateDescription()&quot;&gt;here&lt;/a&gt;, close the browser, come back, and click &lt;a href=&quot;javascript:readDescription()&quot;&gt;here&lt;/a&gt;.  If everything worked well, this should be a success here: &lt;span id=description&gt;...&lt;/span&gt;&lt;/p&gt;
Is it better to use onclick, rather than the javascript protocol?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263169</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-11 04:18:55 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 64011 [details])
&gt; WebCore/storage/IDBFactoryBackendImpl.cpp:101
&gt;  +      // FIXME: Everything from now on should be done on another thread.
&gt; Shouldn&apos;t the call to setDescription be on another thread too, as it calls setMetaData() ?

Yes, but I think that&apos;ll be an implementation detail in that class.

This is all a work in progress.  I could add a million fixmes, but I&apos;ve tried to use my judgement to place in the most important ones.  If you think it&apos;s confusing, I can take the existing one out.

&gt; WebCore/page/SecurityOrigin.h:161
&gt;  +      static String encodeForFileName(const String&amp;);
&gt; I&apos;m not sure this should be part of SecurityOrigin - it has little to do with origins or security!

It has everything to do with security and the original use of it was for origins.  I agree it&apos;s probably not the right place, but I also can&apos;t think of any better place.  Can you?  Maybe in WTF somewhere?

&gt; WebCore/manual-tests/indexed-database.html:41
&gt;  +          indexedDB.open(&quot;another&quot;, &quot;xyz&quot;);
&gt; It would be good to test that having re-opened these databases with new descriptions, JavaScript doesn&apos;t see the new descriptions until the page is reloaded.

That&apos;s exactly what this test does.

&gt; WebCore/manual-tests/indexed-database.html:49
&gt;  +          } else if (window.anotherDB.description != &quot;test of the description attribute&quot;) {
&gt; This test looks wrong, at least for the use pattern described at the top

It&apos;s using another DB to test 2 different things.  What&apos;s wrong about it?

&gt; WebCore/manual-tests/indexed-database.html:47
&gt;  +              // Since we passed in nothing, the description should not be reset.
&gt; This comment looks wrong

It&apos;s correct.

&gt; WebCore/manual-tests/indexed-database.html:13
&gt;  +  &lt;p&gt;Now click &lt;a href=&quot;javascript:updateDescription()&quot;&gt;here&lt;/a&gt;, close the browser, come back, and click &lt;a href=&quot;javascript:readDescription()&quot;&gt;here&lt;/a&gt;.  If everything worked well, this should be a success here: &lt;span id=description&gt;...&lt;/span&gt;&lt;/p&gt;
&gt; It looks like this page suffers from race conditions. If the open() commands in the inline script are still executing when the user starts clicking these links, the test won&apos;t proceed as expected.

True.  I&apos;ll disable the links until the page is ready.

&gt; WebCore/manual-tests/indexed-database.html:13
&gt;  +  &lt;p&gt;Now click &lt;a href=&quot;javascript:updateDescription()&quot;&gt;here&lt;/a&gt;, close the browser, come back, and click &lt;a href=&quot;javascript:readDescription()&quot;&gt;here&lt;/a&gt;.  If everything worked well, this should be a success here: &lt;span id=description&gt;...&lt;/span&gt;&lt;/p&gt;
&gt; Is it better to use onclick, rather than the javascript protocol?

I don&apos;t know, but does it really matter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263181</commentid>
    <comment_count>13</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-11 04:51:55 -0700</bug_when>
    <thetext>WebCore/manual-tests/indexed-database.html:5
 +  &lt;p&gt;This page opens up a database with the name &quot;name&quot; and a description of &quot;description&quot;.  Result of open: &lt;span id=result&gt;Pending...&lt;/span&gt;&lt;/p&gt;
Is this correct?

&gt; &gt; WebCore/page/SecurityOrigin.h:161
&gt; &gt;  +      static String encodeForFileName(const String&amp;);
&gt; &gt; I&apos;m not sure this should be part of SecurityOrigin - it has little to do with origins or security!
&gt; It has everything to do with security and the original use of it was for
&gt; origins.  I agree it&apos;s probably not the right place, but I also can&apos;t think
&gt; of any better place.  Can you?  Maybe in WTF somewhere?
Yes but this method now has little to do with the fact it&apos;s a SecurityOrigin. WTF sounds like the right place, but I&apos;m not sure where exactly.

&gt; &gt; WebCore/manual-tests/indexed-database.html:41
&gt; &gt;  +          indexedDB.open(&quot;another&quot;, &quot;xyz&quot;);
&gt; &gt; It would be good to test that having re-opened these databases with new descriptions, JavaScript doesn&apos;t see the new descriptions until the page is reloaded.
&gt; That&apos;s exactly what this test does.
I meant testing that the old database object doesn&apos;t have the new description, but I guess you&apos;re testing that in the layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263242</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-11 07:20:32 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; WebCore/manual-tests/indexed-database.html:5
&gt;  +  &lt;p&gt;This page opens up a database with the name &quot;name&quot; and a description of &quot;description&quot;.  Result of open: &lt;span id=result&gt;Pending...&lt;/span&gt;&lt;/p&gt;
&gt; Is this correct?

Ha.  Not anymore.  Will make it more vague.

&gt; &gt; &gt; WebCore/page/SecurityOrigin.h:161
&gt; &gt; &gt;  +      static String encodeForFileName(const String&amp;);
&gt; &gt; &gt; I&apos;m not sure this should be part of SecurityOrigin - it has little to do with origins or security!
&gt; &gt; It has everything to do with security and the original use of it was for
&gt; &gt; origins.  I agree it&apos;s probably not the right place, but I also can&apos;t think
&gt; &gt; of any better place.  Can you?  Maybe in WTF somewhere?
&gt; Yes but this method now has little to do with the fact it&apos;s a SecurityOrigin. WTF sounds like the right place, but I&apos;m not sure where exactly.

Didn&apos;t see a good place in WTF...maybe in WebCore/platform?  I don&apos;t see a good file there either, so maybe I&apos;ll make one called &quot;FileUtils.h&quot;?  Or I could put it in FileSystem.h?

&gt; &gt; &gt; WebCore/manual-tests/indexed-database.html:41
&gt; &gt; &gt;  +          indexedDB.open(&quot;another&quot;, &quot;xyz&quot;);
&gt; &gt; &gt; It would be good to test that having re-opened these databases with new descriptions, JavaScript doesn&apos;t see the new descriptions until the page is reloaded.
&gt; &gt; That&apos;s exactly what this test does.
&gt; I meant testing that the old database object doesn&apos;t have the new description, but I guess you&apos;re testing that in the layout test.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263261</commentid>
    <comment_count>15</comment_count>
      <attachid>64117</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-11 08:35:47 -0700</bug_when>
    <thetext>Created attachment 64117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263264</commentid>
    <comment_count>16</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-11 08:43:33 -0700</bug_when>
    <thetext>Attachment 64117 did not build on qt:
Build output: http://queues.webkit.org/results/3775054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263267</commentid>
    <comment_count>17</comment_count>
      <attachid>64119</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-11 08:49:29 -0700</bug_when>
    <thetext>Created attachment 64119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263745</commentid>
    <comment_count>18</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-12 05:46:01 -0700</bug_when>
    <thetext>I think we&apos;ve settled on what the spec should say and it&apos;s different from this, but since it&apos;s almost done being reviewed, I think it might be easiest to submit it as is and then do another patch to make it match the new prescribed behavior.  (It&apos;s mostly just changes to the test that&apos;ll happen.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265559</commentid>
    <comment_count>19</comment_count>
      <attachid>64119</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-08-17 08:28:10 -0700</bug_when>
    <thetext>Comment on attachment 64119
Patch

WebCore/WebCore.xcodeproj/project.pbxproj: 
 +  			developmentRegion = English;
I don&apos;t think this should be removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265597</commentid>
    <comment_count>20</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-08-17 09:18:43 -0700</bug_when>
    <thetext>Committed r65509: &lt;http://trac.webkit.org/changeset/65509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63927</attachid>
            <date>2010-08-09 14:02:38 -0700</date>
            <delta_ts>2010-08-10 07:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43744-20100809220235.patch</filename>
            <type>text/plain</type>
            <size>25102</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NjEzYjRjMjQ3YzZjMDk0YzBjN2RhNWZjNDJkZmUwZGQ1NGYyZjk0Li5iMDg4NTU2
NTlhOGY2ZTk5NmE4MjM2MTQzZGIxYTU3ZTZmMGRkOTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDgtMDkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVnaW5uaW5ncyBvZiBJ
bmRleGVkREIgcGVyc2lzdGFuY2UgKyBJREJEYXRhYmFzZS5kZXNjcmlwdGlvbiBmbGVzaGVkIG91
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDQK
KworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCBmb3IgSURCRGF0YWJhc2UuZGVzY3JpcHRpb24u
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRl
c2NyaXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Njcmlw
dC10ZXN0cy9kYXRhYmFzZS1kZXNjcmlwdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKGZpcnN0U3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRTdWNjZXNzKToKKyAgICAg
ICAgKHRoaXJkU3VjY2Vzcyk6CisKIDIwMTAtMDgtMDUgIE5pa29sYXMgWmltbWVybWFubiAgPG56
aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBBZGQgbWlzc2luZyBw
aXhlbCB0ZXN0IHJlc3VsdHMgZm9yIHN2Zy9pbi1odG1sIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkwZDMzZDgxY2M4ODhhMDI1MDU2ZDdmNzJhZDNkN2Y2
YzFhMDFhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RhdGFiYXNlLWRlc2NyaXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc0IEBACitUZXN0
IElEQkZhY3Rvcnkub3BlbidzIGRlc2NyaXB0aW9uIHBhcmFtZXRlci4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgJ2luZGV4ZWREQicgaW4gd2luZG93IGlzIHRydWUKK1BB
U1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKCdhYmNkJywgJ2Zp
cnN0JykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3In
IGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdhYm9ydCcgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1Mg
J3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9y
dGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlz
IHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBl
dmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50
LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdh
Ym9ydCcgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50
LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRh
cmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVzdWx0LmRlc2NyaXB0aW9uIGlzICJmaXJzdCIKK2lu
ZGV4ZWREQi5vcGVuKCdhYmNkJywgJ3NlY29uZCcpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3Vs
dCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnYWJvcnQn
IGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQor
QW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgor
UEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBm
YWxzZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4g
ZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdv
bnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVu
dC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnYWJvcnQnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIGZpcnN0REIuZGVzY3Jp
cHRpb24gaXMgImZpcnN0IgorUEFTUyBzZWNvbmREQi5kZXNjcmlwdGlvbiBpcyAic2Vjb25kIgor
aW5kZXhlZERCLm9wZW4oJ2FiY2QnKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1
ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiByZXN1
bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50
IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jl
c3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BB
U1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlz
IHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNz
JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVh
ZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5
U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFTUyBmaXJzdERCLmRlc2NyaXB0aW9uIGlz
ICJmaXJzdCIKK1BBU1Mgc2Vjb25kREIuZGVzY3JpcHRpb24gaXMgInNlY29uZCIKK1BBU1MgZXZl
bnQucmVzdWx0LmRlc2NyaXB0aW9uIGlzICJzZWNvbmQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVzY3JpcHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E2
YTRkNjAyZmNjYjlhZGQxYzQwY2NiN2U3MWRiYzJmZDAwODZjYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rp
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kYXRhYmFzZS1kZXNj
cmlwdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvZGF0YWJhc2UtZGVzY3JpcHRp
b24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvZGF0YWJh
c2UtZGVzY3JpcHRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU5YWQ0M2QxOWQyMWE0NmEwMDBhZGY2ZGZl
NTEzZTdmMDc1ZmJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NjcmlwdC10ZXN0cy9kYXRhYmFzZS1kZXNjcmlwdGlvbi5qcwpAQCAtMCwwICsxLDUz
IEBACitkZXNjcmlwdGlvbigiVGVzdCBJREJGYWN0b3J5Lm9wZW4ncyBkZXNjcmlwdGlvbiBwYXJh
bWV0ZXIuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
c2hvdWxkQmVUcnVlKCInaW5kZXhlZERCJyBpbiB3aW5kb3ciKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2FiY2QnLCAnZmlyc3QnKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwor
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBmaXJzdFN1Y2Nlc3M7CisgICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZmlyc3RTdWNjZXNzKCkg
eworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgd2luZG93LmZpcnN0REIgPSBl
dmVudC5yZXN1bHQ7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5k
ZXNjcmlwdGlvbicsICdmaXJzdCcpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2FiY2QnLCAnc2Vjb25kJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsK
KyAgICByZXN1bHQub25zdWNjZXNzID0gc2Vjb25kU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZWNvbmRTdWNjZXNz
KCkgeworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgd2luZG93LnNlY29uZERC
ID0gZXZlbnQucmVzdWx0OworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdmaXJzdERCLmRl
c2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdzZWNvbmRE
Qi5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCdhYmNkJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICBy
ZXN1bHQub25zdWNjZXNzID0gdGhpcmRTdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRoaXJkU3VjY2VzcygpIHsKKyAg
ICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdmaXJzdERCLmRlc2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdzZWNvbmREQi5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKworICAgIGRv
bmUoKTsKK30KKwordGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFh
MjRhNzU4ODc4YWNiZDFkYzQyOWFiOTQwYTYyODhmMzUzNTgxZC4uZjkyZjFjMjU5MzMzYmUxNmE1
ZTEzN2YwNDc4NThhYzkxNThlY2ZhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wOC0wOSAgSmVyZW15
IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCZWdpbm5pbmdzIG9mIEluZGV4ZWREQiBwZXJzaXN0YW5j
ZSArIElEQkRhdGFiYXNlLmRlc2NyaXB0aW9uIGZsZXNoZWQgb3V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzc0NAorCisgICAgICAgIFRoZSBiZWdp
bm5pbmdzIG9mIGEgU1FMaXRlIGJhY2tlbmQgZm9yIEluZGV4ZWREQi4gIFJpZ2h0IG5vdywgb25s
eSBwZXJzaXN0cworICAgICAgICBtZXRhLWRhdGEgZm9yIHRoZSBkYXRhYmFzZS4gIFRoZSByZXN0
IGlzIGNvbWluZyBpbiBmdXR1cmUgcGF0Y2hlcy4gIEFkZHMKKyAgICAgICAgYSBtYW51YWwgdGVz
dCB0byB2ZXJpZnkgcGVyc2lzdGFuY2UuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2UtZGVzY3JpcHRpb24uaHRtbAorICAgICAgICAgICAgICArIGEgbWFudWFsIHRl
c3QKKworICAgICAgICAqIG1hbnVhbC10ZXN0cy9pbmRleGVkLWRhdGFiYXNlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVzY3JpcHRpb24pOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0TWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWV0YURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXREZXNj
cmlwdGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5p
ZGw6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjp+SURCRmFjdG9yeUJh
Y2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVUYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUp
OgorCiAyMDEwLTA4LTA1ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L21hbnVhbC10ZXN0cy9pbmRleGVkLWRhdGFiYXNlLmh0bWwgYi9XZWJDb3JlL21hbnVhbC10ZXN0
cy9pbmRleGVkLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJmZmNlNDg0MzI3NTI0NjdjNjNm
NGUyMzYxZjM3NTVlOTBlYTU3MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbWFudWFsLXRl
c3RzL2luZGV4ZWQtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDY2IEBACis8aHRtbD4KKzxib2R5
PgorPHA+VGhpcyBpcyBhIHRlc3QgdGhhdCBvbmx5IGFwcGxpZXMgdG8gSW5kZXhlZERCLiAgPHNw
YW4gaWQ9ZW5hYmxlZD5PdXIgdGVzdCBmb3Igd2hldGhlciB5b3UgaGF2ZSBpdCBlbmFibGVkIHNl
ZW1zIHRvIGhhdmUgZmFpbGVkLjwvc3Bhbj48L3A+CisKKzxwPlRoaXMgcGFnZSBvcGVucyB1cCBh
IGRhdGFiYXNlIHdpdGggdGhlIG5hbWUgIm5hbWUiIGFuZCBhIGRlc2NyaXB0aW9uIG9mICJkZXNj
cmlwdGlvbiIuICBSZXN1bHQgb2Ygb3BlbjogPHNwYW4gaWQ9cmVzdWx0PlBlbmRpbmcuLi48L3Nw
YW4+PC9wPgorCis8cD5UaGUgZmlyc3QgdGltZSB5b3Ugb3BlbiB0aGlzIHBhZ2UgdXAsIHRoZSBt
ZXNzYWdlIHNob3VsZCBiZSBhIHN1Y2Nlc3MuICBOb3csIGxldHMgbWFrZSBpdCBmYWlsLiAgRmlu
ZCB3aGVyZSB0aGUgYXNzb2NpYXRlZCAuaW5kZXhlZGRiIGZpbGUgaXMKKyAgIGZvciB0aGlzIHBh
Z2UsIHJlcGxhY2UgaXQgd2l0aCBzb21ldGhpbmcgdGhhdCdzIG5vdCBhIHNxbGl0ZSBkYXRhYmFz
ZSwgYW5kIG1ha2UgaXQgcmVhZCBvbmx5IHRvIHlvdXIgdXNlci4gIE5vdyBjbG9zZSBhbmQgcmUt
b3BlbiB0aGUgYnJvd3Nlci4KKyAgIFdoZW4geW91IHJlLW9wZW4gaXQsIHlvdSBzaG91bGQgZ2V0
IGFuIGludGVybmFsIGVycm9yIGZyb20gdGhlIHBhZ2UuPC9wPgorCis8cD5Ob3cgZGVsZXRlIGFs
bCBJbmRleGVkREIgZmlsZXMgKGluY2x1ZGluZyB0aGUgb25lIHlvdSBqdXN0IG1hZGUpLCByZXN0
YXJ0IHRoZSBicm93c2VyLCBhbmQgY29tZSBiYWNrIHRvIHRoaXMgcGFnZS4gIEl0IHNob3VsZCBz
dGFydCB1cCBmaW5lIGFnYWluLjwvcD4KKworPHA+Tm93IGNsaWNrIDxhIGhyZWY9ImphdmFzY3Jp
cHQ6dXBkYXRlRGVzY3JpcHRpb24oKSI+aGVyZTwvYT4sIGNsb3NlIHRoZSBicm93c2VyLCBjb21l
IGJhY2ssIGFuZCBjbGljayA8YSBocmVmPSJqYXZhc2NyaXB0OnJlYWREZXNjcmlwdGlvbigpIj5o
ZXJlPC9hPi4gIElmIGV2ZXJ5dGhpbmcgd29ya2VkIHdlbGwsIHRoaXMgc2hvdWxkIGJlIGEgc3Vj
Y2VzcyBoZXJlOiA8c3BhbiBpZD1kZXNjcmlwdGlvbj4uLi48L3NwYW4+PC9wPgorCis8cD5UaGF0
J3MgaXQhPC9wPgorCis8c2NyaXB0PgorICAgIGlmICghKCdpbmRleGVkREInIGluIHdpbmRvdykp
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbmFibGVkIikuaW5uZXJIVE1MID0g
Ijxmb250IGNvbG9yPXJlZD5Zb3VyIGJ1aWxkIGRvZXMgTk9UIHNlZW0gdG8gaGF2ZSBpdCBlbmFi
bGVkLiAgU28gYWxsIGNvZGUgb24gdGhpcyBwYWdlIGlzIGRpc2FibGVkLjwvZm9udD4iOworICAg
IGVsc2UgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZW5hYmxlZCIpLmlubmVy
SFRNTCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5Zb3VyIGJ1aWxkIHNlZW1zIHRvIGhhdmUgaXQgZW5h
YmxlZC48L2ZvbnQ+IjsKKworICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oIm5hbWUi
KTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiPGZvbnQgY29s
b3I9Z3JlZW4+U3VjY2VzcyE8L2ZvbnQ+IjsKKyAgICAgICAgICAgIHdpbmRvdy5uYW1lREIgPSBl
dmVudC5yZXN1bHQ7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RXJyb3I6ICIgKyBldmVudC5tZXNzYWdlICsgIi48
L2ZvbnQ+IjsKKyAgICAgICAgfTsKKworICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ImFub3RoZXIiLCAidGVzdCBvZiB0aGUgZGVzY3JpcHRpb24gYXR0cmlidXRlIik7CisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cuYW5v
dGhlckRCID0gZXZlbnQucmVzdWx0OworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9u
IHVwZGF0ZURlc2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIGluZGV4ZWREQi5vcGVuKCJuYW1l
IiwgInRlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uIGF0dHJpYnV0ZSIpOworICAgICAgICBpbmRleGVk
REIub3BlbigiYW5vdGhlciIsICJ4eXoiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZWFkRGVz
Y3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5uYW1lREIuZGVzY3JpcHRpb24g
IT0gInRlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uIGF0dHJpYnV0ZSIpIHsKKyAgICAgICAgICAgIC8v
IFNpbmNlIHdlIHBhc3NlZCBpbiBub3RoaW5nLCB0aGUgZGVzY3JpcHRpb24gc2hvdWxkIG5vdCBi
ZSByZXNldC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlv
biIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RmFpbHVyZTogKERhdGFiYXNlICduYW1l
JyB3YXMgdGhpczogIiArIHdpbmRvdy5uYW1lREIuZGVzY3JpcHRpb24gKyAiKS48L2ZvbnQ+IjsK
KyAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuYW5vdGhlckRCLmRlc2NyaXB0aW9uICE9ICJ0ZXN0
IG9mIHRoZSBkZXNjcmlwdGlvbiBhdHRyaWJ1dGUiKSB7CisgICAgICAgICAgICAvLyBCdXQgaW4g
dGhpcyBjYXNlIHdlIGRpZCBwYXNzIHNvbWV0aGluZyBpbiwgc28gaXQgc2hvdWxkIGhhdmUgYmVl
biByZXNldC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlv
biIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RmFpbHVyZTogKERhdGFiYXNlICdhbm90
aGVyJyB3YXMgdGhpczogIiArIHdpbmRvdy5hbm90aGVyREIuZGVzY3JpcHRpb24gKyAiKS48L2Zv
bnQ+IjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbigiYW5vdGhlciIsICIxMjMiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gQW5kIGhlcmUgaXQgc2hvdWxkIGhhdmUg
YmVlbiByZXNldCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQucmVzdWx0LmRlc2Ny
aXB0aW9uICE9ICIxMjMiKQorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZGVzY3JpcHRpb24iKS5pbm5lckhUTUwgPSAiPGZvbnQgY29sb3I9cmVkPkZhaWx1cmU6
IChEYXRhYmFzZSAnYW5vdGhlcicgd2FzIHRoaXM6ICIgKyBldmVudC5yZXN1bHQuZGVzY3JpcHRp
b24gKyAiKS48L2ZvbnQ+IjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICI8
Zm9udCBjb2xvcj1ncmVlbj5TdWNjZXNzITwvZm9udD4iOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgfQorICAgIH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcAppbmRleCBlNGQ0Mzg1MDNlOGJkNmFmZjEwZmJlZmI2Yjk1OThmNTY2NWY3NTk2Li5h
ZGNjZTAzNTEyYzcxZDg3MzY2N2UwM2RhZGExODQwNjg3YWY3ZDU0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJREJEYXRh
YmFzZTo6SURCRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGJhY2tlbmQpCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKKyAgICAsIG1fZGVzY3JpcHRpb24o
bV9iYWNrZW5kLT5kZXNjcmlwdGlvbigpKQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ug
dG8gdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRp
b25SZXF1aXJlbWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAppbmRleCBjY2EyMGUzY2Q0ZDI4NmI5
ZjMxYmQ0MDVjZGYwNTYwYTgyNzI4MGFhLi5kOGM2ZmZmZWY3MjczOTZhNDI1NGFiYzg4M2MxY2Q1
NGI2NzMyNmIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAogICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPmRlc2NyaXB0aW9uKCk7IH0KKyAgICBTdHJpbmcgZGVzY3Jp
cHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAgICAgU3RyaW5nIHZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnZlcnNpb24oKTsgfQogICAgIFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
LT5vYmplY3RTdG9yZXMoKTsgfQogCkBAIC02Myw2ICs2Myw4IEBAIHByaXZhdGU6CiAgICAgSURC
RGF0YWJhc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKKworICAgIFN0
cmluZyBtX2Rlc2NyaXB0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDg2MjI4YmRlMjI0YWM1
OTUzNDU0ZWZmMzU5MjYzMjg4MTIxZjBhODUuLjkwZjhiNzRhMDI3NThjMTY4NjQ5ZTI2NmQ1YzAx
OTE2ZTlkZTYzN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKQEAgLTI5LDIyICsyOSw4OCBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlNRTGl0
ZVN0YXRlbWVudC5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0
IFN0cmluZyYgdmVyc2lvbikKLSAgICA6IG1fbmFtZShuYW1lKQotICAgICwgbV9kZXNjcmlwdGlv
bihkZXNjcmlwdGlvbikKLSAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorc3RhdGljIGJvb2wgZXh0
cmFjdE1ldGFEYXRhKFNRTGl0ZURhdGFiYXNlKiBzcWxpdGVEYXRhYmFzZSwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZE5hbWUsIFN0cmluZyYgZm91bmREZXNjcmlwdGlvbiwgU3RyaW5nJiBmb3VuZFZl
cnNpb24pCiB7CisgICAgU1FMaXRlU3RhdGVtZW50IG1ldGFkYXRhUXVlcnkoKnNxbGl0ZURhdGFi
YXNlLCAiU0VMRUNUIG5hbWUsIGRlc2NyaXB0aW9uLCB2ZXJzaW9uIEZST00gTWV0YWRhdGEiKTsK
KyAgICBpZiAobWV0YWRhdGFRdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2sgfHwgbWV0YWRh
dGFRdWVyeS5zdGVwKCkgIT0gU1FMUmVzdWx0Um93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobWV0YWRhdGFRdWVyeS5nZXRDb2x1bW5UZXh0KDApICE9IGV4cGVjdGVkTmFtZSkg
eworICAgICAgICBMT0dfRVJST1IoIk5hbWUgaW4gTWV0YURhdGEgKCVzKSBkb2Vzbid0IG1hdGNo
IGV4cGVjdGVkICglcykgZm9yIEluZGV4ZWREQiIsIG1ldGFkYXRhUXVlcnkuZ2V0Q29sdW1uVGV4
dCgwKS51dGY4KCkuZGF0YSgpLCBleHBlY3RlZE5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBmb3VuZERlc2NyaXB0aW9uID0gbWV0
YWRhdGFRdWVyeS5nZXRDb2x1bW5UZXh0KDEpOworICAgIGZvdW5kVmVyc2lvbiA9IG1ldGFkYXRh
UXVlcnkuZ2V0Q29sdW1uVGV4dCgyKTsKKworICAgIGlmIChtZXRhZGF0YVF1ZXJ5LnN0ZXAoKSA9
PSBTUUxSZXN1bHRSb3cpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJNb3JlIHRoYW4gb25lIHJvdyBm
b3VuZCBpbiBNZXRhRGF0YSB0YWJsZSIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgc2V0TWV0YURhdGEo
U1FMaXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKK3sKKyAgICBBU1NF
UlQoIW5hbWUuaXNOdWxsKCkgJiYgIWRlc2NyaXB0aW9uLmlzTnVsbCgpICYmICF2ZXJzaW9uLmlz
TnVsbCgpKTsKKworICAgIHNxbGl0ZURhdGFiYXNlLT5leGVjdXRlQ29tbWFuZCgiREVMRVRFIEZS
T00gTWV0YURhdGEiKTsKKworICAgIFNRTGl0ZVN0YXRlbWVudCBpbnNlcnQoKnNxbGl0ZURhdGFi
YXNlLCAiSU5TRVJUIElOVE8gTWV0YURhdGEgVkFMVUVTICg/LCA/LCA/KSIpOworICAgIGlmIChp
bnNlcnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIHByZXBhcmUgTWV0YURhdGEgaW5zZXJ0IHN0YXRlbWVudCBmb3IgSW5kZXhlZERCIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnNlcnQuYmluZFRleHQoMSwg
bmFtZSk7CisgICAgaW5zZXJ0LmJpbmRUZXh0KDIsIGRlc2NyaXB0aW9uKTsKKyAgICBpbnNlcnQu
YmluZFRleHQoMywgdmVyc2lvbik7CisKKyAgICBpZiAoaW5zZXJ0LnN0ZXAoKSAhPSBTUUxSZXN1
bHREb25lKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGluc2VydCByb3cgaW50byBN
ZXRhRGF0YSBmb3IgSW5kZXhlZERCIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGVyZSdzIG9ubHkgb25lIHJvdz8KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgUGFzc093blB0cjxTUUxpdGVEYXRhYmFzZT4gc3FsaXRlRGF0YWJhc2UpCisgICAgOiBtX3Nx
bGl0ZURhdGFiYXNlKHNxbGl0ZURhdGFiYXNlKQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBt
X3ZlcnNpb24oIiIpCit7CisgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkpOworCisgICAgU3Ry
aW5nIGZvdW5kRGVzY3JpcHRpb24gPSAiIjsKKyAgICBib29sIHJlc3VsdCA9IGV4dHJhY3RNZXRh
RGF0YShtX3NxbGl0ZURhdGFiYXNlLmdldCgpLCBtX25hbWUsIGZvdW5kRGVzY3JpcHRpb24sIG1f
dmVyc2lvbik7CisgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmlzTnVsbCgpID8gZm91
bmREZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9uOworCisgICAgaWYgKCFyZXN1bHQgfHwgbV9kZXNj
cmlwdGlvbiAhPSBmb3VuZERlc2NyaXB0aW9uKQorICAgICAgICBzZXRNZXRhRGF0YShtX3NxbGl0
ZURhdGFiYXNlLmdldCgpLCBtX25hbWUsIG1fZGVzY3JpcHRpb24sIG1fdmVyc2lvbik7CiB9CiAK
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6On5JREJEYXRhYmFzZUJhY2tlbmRJbXBsKCkKIHsKIH0K
IAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXREZXNjcmlwdGlvbihjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uKQoreworICAgIGlmIChkZXNjcmlwdGlvbiA9PSBtX2Rlc2NyaXB0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Cisg
ICAgc2V0TWV0YURhdGEobV9zcWxpdGVEYXRhYmFzZS5nZXQoKSwgbV9uYW1lLCBtX2Rlc2NyaXB0
aW9uLCBtX3ZlcnNpb24pOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDg3ZTA3MGExMjMyNGZh
YmI0ZTMzNWM3ZjgyOWNkNTdkOWZhZTYzZDcuLjA4MDAwNDE0NmUzNTUxM2Q0MmQzODI4M2Y1ODI4
NjQwZDU3YjAwMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApA
QCAtMzUsMTQgKzM1LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1FMaXRl
RGF0YWJhc2U7CisKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZURhdGFi
YXNlPiBkYXRhYmFzZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbikpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZEltcGwobmFtZSwgZGVzY3JpcHRp
b24sIGRhdGFiYXNlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZElt
cGwoKTsKIAorICAgIHZvaWQgc2V0RGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CisKICAgICAvLyBJbXBsZW1lbnRzIElEQkRhdGFiYXNlCiAgICAgdmlydHVhbCBTdHJpbmcg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGRlc2Ny
aXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQpAQCAtNTQsNyArNTgsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKLSAgICBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc093
blB0cjxTUUxpdGVEYXRhYmFzZT4gZGF0YWJhc2UpOworCisgICAgT3duUHRyPFNRTGl0ZURhdGFi
YXNlPiBtX3NxbGl0ZURhdGFiYXNlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcg
bV9kZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5Lmgg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5oCmluZGV4IDYxNjE5YjliNWVlNzBiYzFmMzU3
NjdhM2JjMDRkN2Q1NDNiODkzZTYuLmE5NmFhMzgyMmQ0ZmE5MjYzODhjNTE2OTNhOGIwOWUxZGQ2
OTIwMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIH5JREJGYWN0b3J5KCk7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW4o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24gPSBTdHJpbmcoKSk7CiAKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeShJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnkuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuaWRsCmluZGV4IGNkODg3ZjAwNmI2
YmYxMGE5NWYwZmNjMzVmNGQ2N2E0Y2FlZDQwOTIuLmZmNjE3MjI2ODUyYzZlNWU1Zjg3ZTZlNThi
YzYyODVlNWU2OTJmZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5Lmlk
bAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5pZGwKQEAgLTI4LDcgKzI4LDcgQEAg
bW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKICAgICBdIElEQkZhY3RvcnkgewotICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBp
biBET01TdHJpbmcgZGVzY3JpcHRpb24pOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9u
YWwsQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGRlc2NyaXB0
aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwu
Y3BwCmluZGV4IDdiZGQ3MGQzMDgxNTY4MzZiZmU3Y2YyZmE2YmQwZjFiZDllMjllMmIuLmUyMTQx
YWIxYTY2OTY1NmM5NDdiOGVkYjQ5NWYzMGU4ZmI5ZGIzNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
REJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAKICNpbmNsdWRlICJE
T01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgorI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTM5LDMxICs0MSw3NCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBJ
REJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpCitJREJGYWN0b3J5QmFja2VuZEltcGw6OklE
QkZhY3RvcnlCYWNrZW5kSW1wbCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJGYWN0
b3J5QmFja2VuZEltcGwpOwogfQogCi1JREJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3RvcnlC
YWNrZW5kSW1wbCgpCitJREJGYWN0b3J5QmFja2VuZEltcGw6On5JREJGYWN0b3J5QmFja2VuZElt
cGwoKQogewogfQogCi1JREJGYWN0b3J5QmFja2VuZEltcGw6On5JREJGYWN0b3J5QmFja2VuZElt
cGwoKQorc3RhdGljIFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IG9wZW5TUUxpdGVEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFN0cmluZyBuYW1lKQogeworICAgIFN0
cmluZyBwYXRoQmFzZSA9ICIvdG1wL3Rlc3QiOyAvLyBGSVhNRTogVXNlIHNvbWV0aGluZyBzZW5z
aWJsZS4KKyAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhwYXRoQmFzZSkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IElzIHRoZXJlIGFueSBvdGhlciB0aGluZyB3ZSBjb3VsZCBwb3NzaWJseSBkbyB0
byByZWNvdmVyIGF0IHRoaXMgcG9pbnQ/IElmIHNvLCBkbyBpdCByYXRoZXIgdGhhbiBqdXN0IGVy
cm9yaW5nIG91dC4KKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGVkIHRvIGNyZWF0ZSBMb2NhbFN0
b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIHBhdGhCYXNlLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gc2Vj
dXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOworICAgIC8vIEZJWE1FOiBOYW1lIHNo
b3VsZCBiZSBzYW5pdGl6ZWQuIFByb2JhYmx5IHZpYSBTZWN1cml0eU9yaWdpbjo6ZW5jb2RlZEhv
c3QgKG9yIHNvbWV0aGluZyBzaW1pbGFyKS4KKyAgICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgZGF0YWJhc2VJZGVudGlmaWVyICsgIl8iICsgbmFtZSAr
ICIuaW5kZXhlZGRiIik7CisgICAgCisgICAgT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBzcWxpdGVE
YXRhYmFzZSA9IGFkb3B0UHRyKG5ldyBTUUxpdGVEYXRhYmFzZSgpKTsKKyAgICBpZiAoIXNxbGl0
ZURhdGFiYXNlLT5vcGVuKHBhdGgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhbnkg
b3RoZXIgdGhpbmcgd2UgY291bGQgcG9zc2libHkgZG8gdG8gcmVjb3ZlciBhdCB0aGlzIHBvaW50
PyBJZiBzbywgZG8gaXQgcmF0aGVyIHRoYW4ganVzdCBlcnJvcmluZyBvdXQuCisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgSW5kZXhlZERCIiwg
cGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0
dXJuIHNxbGl0ZURhdGFiYXNlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgRnJhbWUqKQorc3RhdGljIGJvb2wgY3JlYXRlVGFibGVzKFNRTGl0ZURhdGFiYXNl
KiBzcWxpdGVEYXRhYmFzZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29tbWFuZHNbXSA9
IHsKKyAgICAgICAgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE1ldGFEYXRhIChuYW1lIFRF
WFQsIGRlc2NyaXB0aW9uIFRFWFQsIHZlcnNpb24gVEVYVCkiLAorICAgICAgICAwfTsKKworICAg
IGZvciAoY29uc3QgY2hhcioqIGN1ciA9IGNvbW1hbmRzOyAqY3VyOyArK2N1cikgeworICAgICAg
ICBpZiAoIXNxbGl0ZURhdGFiYXNlLT5leGVjdXRlQ29tbWFuZCgqY3VyKSkgeworICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gcmVjb3ZlciBmcm9tIHRoaXMgc2l0dWF0aW9u
LiBNYXliZSBudWtlIHRoZSBkYXRhYmFzZSBhbmQgc3RhcnQgb3Zlcj8KKyAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9yIEluZGV4ZWRE
QjogJXMiLCAqY3VyKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiwgRnJhbWUqKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZChuYW1lKTsKLSAgICBpZiAoaXQg
PT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQg
c2hvdWxkIHRoZSB2ZXJzaW9uIGJlPyAgVGhlIHNwZWMgZG9lc24ndCBkZWZpbmUgaXQgeWV0Lgot
ICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUo
bmFtZSwgZGVzY3JpcHRpb24sICIiKTsKLSAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0
KG5hbWUsIGRhdGFiYXNlQmFja2VuZCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGRhdGFiYXNlQmFj
a2VuZCA9IGl0LT5zZWNvbmQ7Ci0KLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFzZUJh
Y2tlbmQucmVsZWFzZSgpKTsKKyAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5k
KCkpIHsKKyAgICAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsgLy8gVGhlIGRlc2NyaXB0aW9u
IG1heSBoYXZlIGNoYW5nZWQuCisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGl0LT5zZWNv
bmQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IEV2ZXJ5
dGhpbmcgZnJvbSBub3cgb24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCisKKyAg
ICBPd25QdHI8U1FMaXRlRGF0YWJhc2U+IHNxbGl0ZURhdGFiYXNlID0gb3BlblNRTGl0ZURhdGFi
YXNlKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBuYW1lKTsKKyAgICBpZiAoIXNxbGl0ZURhdGFiYXNl
IHx8ICFjcmVhdGVUYWJsZXMoc3FsaXRlRGF0YWJhc2UuZ2V0KCkpKSB7CisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2Vu
ZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBkZXNjcmlwdGlvbiwgc3Fs
aXRlRGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFz
ZUJhY2tlbmQuZ2V0KCkpOworICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldChuYW1lLCBkYXRh
YmFzZUJhY2tlbmQucmVsZWFzZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGJiY2M1MzdjNzk5NGYxZTY5
NmY1MTI4MDE1MDk4ODZjOWY4NTUwYTYuLjdhMTU1Y2Y2MzU1NzIwMjVkNGFmNTRhOTRlOTcxYjhi
YTM3MDIwODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZElt
cGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTM3
LDEwICszNywxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0
OworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDsKIAogY2xhc3MgSURCRmFjdG9yeUJhY2tl
bmRJbXBsIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IGNyZWF0ZSgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRmFjdG9yeUJhY2tlbmRJbXBsKCkpOwor
ICAgIH0KICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEltcGwoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
RnJhbWUqKTsKQEAgLTQ4LDcgKzUyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJGYWN0
b3J5QmFja2VuZEltcGwoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+ID4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiA+
IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9kYXRh
YmFzZUJhY2tlbmRNYXA7CiAKICAgICAvLyBXZSBvbmx5IGNyZWF0ZSBvbmUgaW5zdGFuY2Ugb2Yg
dGhpcyBjbGFzcyBhdCBhIHRpbWUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64011</attachid>
            <date>2010-08-10 07:14:33 -0700</date>
            <delta_ts>2010-08-11 08:35:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43744-20100810151431.patch</filename>
            <type>text/plain</type>
            <size>27162</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NjEzYjRjMjQ3YzZjMDk0YzBjN2RhNWZjNDJkZmUwZGQ1NGYyZjk0Li5iMDg4NTU2
NTlhOGY2ZTk5NmE4MjM2MTQzZGIxYTU3ZTZmMGRkOTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDgtMDkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVnaW5uaW5ncyBvZiBJ
bmRleGVkREIgcGVyc2lzdGFuY2UgKyBJREJEYXRhYmFzZS5kZXNjcmlwdGlvbiBmbGVzaGVkIG91
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDQK
KworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCBmb3IgSURCRGF0YWJhc2UuZGVzY3JpcHRpb24u
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRl
c2NyaXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Njcmlw
dC10ZXN0cy9kYXRhYmFzZS1kZXNjcmlwdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKGZpcnN0U3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRTdWNjZXNzKToKKyAgICAg
ICAgKHRoaXJkU3VjY2Vzcyk6CisKIDIwMTAtMDgtMDUgIE5pa29sYXMgWmltbWVybWFubiAgPG56
aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBBZGQgbWlzc2luZyBw
aXhlbCB0ZXN0IHJlc3VsdHMgZm9yIHN2Zy9pbi1odG1sIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkwZDMzZDgxY2M4ODhhMDI1MDU2ZDdmNzJhZDNkN2Y2
YzFhMDFhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RhdGFiYXNlLWRlc2NyaXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc0IEBACitUZXN0
IElEQkZhY3Rvcnkub3BlbidzIGRlc2NyaXB0aW9uIHBhcmFtZXRlci4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgJ2luZGV4ZWREQicgaW4gd2luZG93IGlzIHRydWUKK1BB
U1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKCdhYmNkJywgJ2Zp
cnN0JykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3In
IGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdhYm9ydCcgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1Mg
J3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9y
dGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlz
IHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBl
dmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50
LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdh
Ym9ydCcgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50
LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRh
cmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVzdWx0LmRlc2NyaXB0aW9uIGlzICJmaXJzdCIKK2lu
ZGV4ZWREQi5vcGVuKCdhYmNkJywgJ3NlY29uZCcpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3Vs
dCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnYWJvcnQn
IGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQor
QW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgor
UEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBm
YWxzZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4g
ZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdv
bnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVu
dC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnYWJvcnQnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIGZpcnN0REIuZGVzY3Jp
cHRpb24gaXMgImZpcnN0IgorUEFTUyBzZWNvbmREQi5kZXNjcmlwdGlvbiBpcyAic2Vjb25kIgor
aW5kZXhlZERCLm9wZW4oJ2FiY2QnKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1
ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiByZXN1
bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50
IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jl
c3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BB
U1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlz
IHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNz
JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVh
ZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5
U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFTUyBmaXJzdERCLmRlc2NyaXB0aW9uIGlz
ICJmaXJzdCIKK1BBU1Mgc2Vjb25kREIuZGVzY3JpcHRpb24gaXMgInNlY29uZCIKK1BBU1MgZXZl
bnQucmVzdWx0LmRlc2NyaXB0aW9uIGlzICJzZWNvbmQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVzY3JpcHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E2
YTRkNjAyZmNjYjlhZGQxYzQwY2NiN2U3MWRiYzJmZDAwODZjYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rp
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kYXRhYmFzZS1kZXNj
cmlwdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvZGF0YWJhc2UtZGVzY3JpcHRp
b24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvZGF0YWJh
c2UtZGVzY3JpcHRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI0YWNiYTZiMGMwOTYyOWFkOGYwODBjZDIy
MDJjYmUxYmI1YWRkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NjcmlwdC10ZXN0cy9kYXRhYmFzZS1kZXNjcmlwdGlvbi5qcwpAQCAtMCwwICsxLDU2
IEBACitkZXNjcmlwdGlvbigiVGVzdCBJREJGYWN0b3J5Lm9wZW4ncyBkZXNjcmlwdGlvbiBwYXJh
bWV0ZXIuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
c2hvdWxkQmVUcnVlKCInaW5kZXhlZERCJyBpbiB3aW5kb3ciKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2FiY2QnLCAnZmlyc3QnKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwor
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBmaXJzdFN1Y2Nlc3M7CisgICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZmlyc3RTdWNjZXNzKCkK
K3sKKyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHdpbmRvdy5maXJzdERCID0g
ZXZlbnQucmVzdWx0OworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHQu
ZGVzY3JpcHRpb24nLCAnZmlyc3QnKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdhYmNkJywgJ3NlY29uZCcpIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7
CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNlY29uZFN1Y2Nlc3M7CisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2Vjb25kU3VjY2Vz
cygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cuc2Vjb25k
REIgPSBldmVudC5yZXN1bHQ7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ZpcnN0REIu
ZGVzY3JpcHRpb24nLCAnZmlyc3QnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3NlY29u
ZERCLmRlc2NyaXB0aW9uJywgJ3NlY29uZCcpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2FiY2QnKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSB0aGlyZFN1Y2Nlc3M7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGhpcmRTdWNjZXNzKCkKK3sK
KyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdmaXJzdERCLmRlc2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdzZWNvbmREQi5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2V2ZW50LnJlc3VsdC5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKworICAg
IGRvbmUoKTsKK30KKwordGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWFhMjRhNzU4ODc4YWNiZDFkYzQyOWFiOTQwYTYyODhmMzUzNTgxZC4uZjkyZjFjMjU5MzMzYmUx
NmE1ZTEzN2YwNDc4NThhYzkxNThlY2ZhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wOC0wOSAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWdpbm5pbmdzIG9mIEluZGV4ZWREQiBwZXJzaXN0
YW5jZSArIElEQkRhdGFiYXNlLmRlc2NyaXB0aW9uIGZsZXNoZWQgb3V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzc0NAorCisgICAgICAgIFRoZSBi
ZWdpbm5pbmdzIG9mIGEgU1FMaXRlIGJhY2tlbmQgZm9yIEluZGV4ZWREQi4gIFJpZ2h0IG5vdywg
b25seSBwZXJzaXN0cworICAgICAgICBtZXRhLWRhdGEgZm9yIHRoZSBkYXRhYmFzZS4gIFRoZSBy
ZXN0IGlzIGNvbWluZyBpbiBmdXR1cmUgcGF0Y2hlcy4gIEFkZHMKKyAgICAgICAgYSBtYW51YWwg
dGVzdCB0byB2ZXJpZnkgcGVyc2lzdGFuY2UuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvZGF0YWJhc2UtZGVzY3JpcHRpb24uaHRtbAorICAgICAgICAgICAgICArIGEgbWFudWFs
IHRlc3QKKworICAgICAgICAqIG1hbnVhbC10ZXN0cy9pbmRleGVkLWRhdGFiYXNlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVzY3JpcHRpb24pOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0TWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWV0YURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9y
eS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjp+SURCRmFjdG9y
eUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5TUUxpdGVEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVh
dGUpOgorCiAyMDEwLTA4LTA1ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL21hbnVhbC10ZXN0cy9pbmRleGVkLWRhdGFiYXNlLmh0bWwgYi9XZWJDb3JlL21hbnVhbC10
ZXN0cy9pbmRleGVkLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJmZmNlNDg0MzI3NTI0Njdj
NjNmNGUyMzYxZjM3NTVlOTBlYTU3MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbWFudWFs
LXRlc3RzL2luZGV4ZWQtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDY2IEBACis8aHRtbD4KKzxi
b2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgdGhhdCBvbmx5IGFwcGxpZXMgdG8gSW5kZXhlZERCLiAg
PHNwYW4gaWQ9ZW5hYmxlZD5PdXIgdGVzdCBmb3Igd2hldGhlciB5b3UgaGF2ZSBpdCBlbmFibGVk
IHNlZW1zIHRvIGhhdmUgZmFpbGVkLjwvc3Bhbj48L3A+CisKKzxwPlRoaXMgcGFnZSBvcGVucyB1
cCBhIGRhdGFiYXNlIHdpdGggdGhlIG5hbWUgIm5hbWUiIGFuZCBhIGRlc2NyaXB0aW9uIG9mICJk
ZXNjcmlwdGlvbiIuICBSZXN1bHQgb2Ygb3BlbjogPHNwYW4gaWQ9cmVzdWx0PlBlbmRpbmcuLi48
L3NwYW4+PC9wPgorCis8cD5UaGUgZmlyc3QgdGltZSB5b3Ugb3BlbiB0aGlzIHBhZ2UgdXAsIHRo
ZSBtZXNzYWdlIHNob3VsZCBiZSBhIHN1Y2Nlc3MuICBOb3csIGxldHMgbWFrZSBpdCBmYWlsLiAg
RmluZCB3aGVyZSB0aGUgYXNzb2NpYXRlZCAuaW5kZXhlZGRiIGZpbGUgaXMKKyAgIGZvciB0aGlz
IHBhZ2UsIHJlcGxhY2UgaXQgd2l0aCBzb21ldGhpbmcgdGhhdCdzIG5vdCBhIHNxbGl0ZSBkYXRh
YmFzZSwgYW5kIG1ha2UgaXQgcmVhZCBvbmx5IHRvIHlvdXIgdXNlci4gIE5vdyBjbG9zZSBhbmQg
cmUtb3BlbiB0aGUgYnJvd3Nlci4KKyAgIFdoZW4geW91IHJlLW9wZW4gaXQsIHlvdSBzaG91bGQg
Z2V0IGFuIGludGVybmFsIGVycm9yIGZyb20gdGhlIHBhZ2UuPC9wPgorCis8cD5Ob3cgZGVsZXRl
IGFsbCBJbmRleGVkREIgZmlsZXMgKGluY2x1ZGluZyB0aGUgb25lIHlvdSBqdXN0IG1hZGUpLCBy
ZXN0YXJ0IHRoZSBicm93c2VyLCBhbmQgY29tZSBiYWNrIHRvIHRoaXMgcGFnZS4gIEl0IHNob3Vs
ZCBzdGFydCB1cCBmaW5lIGFnYWluLjwvcD4KKworPHA+Tm93IGNsaWNrIDxhIGhyZWY9ImphdmFz
Y3JpcHQ6dXBkYXRlRGVzY3JpcHRpb24oKSI+aGVyZTwvYT4sIGNsb3NlIHRoZSBicm93c2VyLCBj
b21lIGJhY2ssIGFuZCBjbGljayA8YSBocmVmPSJqYXZhc2NyaXB0OnJlYWREZXNjcmlwdGlvbigp
Ij5oZXJlPC9hPi4gIElmIGV2ZXJ5dGhpbmcgd29ya2VkIHdlbGwsIHRoaXMgc2hvdWxkIGJlIGEg
c3VjY2VzcyBoZXJlOiA8c3BhbiBpZD1kZXNjcmlwdGlvbj4uLi48L3NwYW4+PC9wPgorCis8cD5U
aGF0J3MgaXQhPC9wPgorCis8c2NyaXB0PgorICAgIGlmICghKCdpbmRleGVkREInIGluIHdpbmRv
dykpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbmFibGVkIikuaW5uZXJIVE1M
ID0gIjxmb250IGNvbG9yPXJlZD5Zb3VyIGJ1aWxkIGRvZXMgTk9UIHNlZW0gdG8gaGF2ZSBpdCBl
bmFibGVkLiAgU28gYWxsIGNvZGUgb24gdGhpcyBwYWdlIGlzIGRpc2FibGVkLjwvZm9udD4iOwor
ICAgIGVsc2UgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZW5hYmxlZCIpLmlu
bmVySFRNTCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5Zb3VyIGJ1aWxkIHNlZW1zIHRvIGhhdmUgaXQg
ZW5hYmxlZC48L2ZvbnQ+IjsKKworICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oIm5h
bWUiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiPGZvbnQg
Y29sb3I9Z3JlZW4+U3VjY2VzcyE8L2ZvbnQ+IjsKKyAgICAgICAgICAgIHdpbmRvdy5uYW1lREIg
PSBldmVudC5yZXN1bHQ7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RXJyb3I6ICIgKyBldmVudC5tZXNzYWdlICsg
Ii48L2ZvbnQ+IjsKKyAgICAgICAgfTsKKworICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oImFub3RoZXIiLCAidGVzdCBvZiB0aGUgZGVzY3JpcHRpb24gYXR0cmlidXRlIik7CisgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cu
YW5vdGhlckRCID0gZXZlbnQucmVzdWx0OworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0
aW9uIHVwZGF0ZURlc2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIGluZGV4ZWREQi5vcGVuKCJu
YW1lIiwgInRlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uIGF0dHJpYnV0ZSIpOworICAgICAgICBpbmRl
eGVkREIub3BlbigiYW5vdGhlciIsICJ4eXoiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZWFk
RGVzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy5uYW1lREIuZGVzY3JpcHRp
b24gIT0gInRlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uIGF0dHJpYnV0ZSIpIHsKKyAgICAgICAgICAg
IC8vIFNpbmNlIHdlIHBhc3NlZCBpbiBub3RoaW5nLCB0aGUgZGVzY3JpcHRpb24gc2hvdWxkIG5v
dCBiZSByZXNldC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlw
dGlvbiIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RmFpbHVyZTogKERhdGFiYXNlICdu
YW1lJyB3YXMgdGhpczogIiArIHdpbmRvdy5uYW1lREIuZGVzY3JpcHRpb24gKyAiKS48L2ZvbnQ+
IjsKKyAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuYW5vdGhlckRCLmRlc2NyaXB0aW9uICE9ICJ0
ZXN0IG9mIHRoZSBkZXNjcmlwdGlvbiBhdHRyaWJ1dGUiKSB7CisgICAgICAgICAgICAvLyBCdXQg
aW4gdGhpcyBjYXNlIHdlIGRpZCBwYXNzIHNvbWV0aGluZyBpbiwgc28gaXQgc2hvdWxkIGhhdmUg
YmVlbiByZXNldC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlw
dGlvbiIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RmFpbHVyZTogKERhdGFiYXNlICdh
bm90aGVyJyB3YXMgdGhpczogIiArIHdpbmRvdy5hbm90aGVyREIuZGVzY3JpcHRpb24gKyAiKS48
L2ZvbnQ+IjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVk
REIub3BlbigiYW5vdGhlciIsICIxMjMiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gQW5kIGhlcmUgaXQgc2hvdWxkIGhh
dmUgYmVlbiByZXNldCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQucmVzdWx0LmRl
c2NyaXB0aW9uICE9ICIxMjMiKQorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGVzY3JpcHRpb24iKS5pbm5lckhUTUwgPSAiPGZvbnQgY29sb3I9cmVkPkZhaWx1
cmU6IChEYXRhYmFzZSAnYW5vdGhlcicgd2FzIHRoaXM6ICIgKyBldmVudC5yZXN1bHQuZGVzY3Jp
cHRpb24gKyAiKS48L2ZvbnQ+IjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9
ICI8Zm9udCBjb2xvcj1ncmVlbj5TdWNjZXNzITwvZm9udD4iOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfQorICAgIH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcAppbmRleCA4N2IzZWQyYmIzOTc3Nzc1YzdlNzk0NWNhMmJlMWMzNWY0YWU0ZDc2
Li44Y2Y3NjczMzAwZDEzMGVhMjFlOWVjYWI2YWMyNzRkNGQ4YjRjZTc0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTQ0OCwxMyArNDQ4LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91
bGRFc2NhcGVVQ2hhcihVQ2hhciBjKQogCiBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTdd
ID0gIjAxMjM0NTY3ODlBQkNERUYiOwogCi1zdGF0aWMgU3RyaW5nIGVuY29kZWRIb3N0KGNvbnN0
IFN0cmluZyYgaG9zdCkKK1N0cmluZyBTZWN1cml0eU9yaWdpbjo6ZW5jb2RlRm9yRmlsZU5hbWUo
Y29uc3QgU3RyaW5nJiBpbnB1dFN0cikKIHsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBob3N0Lmxl
bmd0aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyLmxlbmd0aCgpOwogICAgIFZl
Y3RvcjxVQ2hhciwgNTEyPiBidWZmZXIobGVuZ3RoICogMyArIDEpOwogICAgIFVDaGFyKiBwID0g
YnVmZmVyLmRhdGEoKTsKIAotICAgIGNvbnN0IFVDaGFyKiBzdHIgPSBob3N0LmNoYXJhY3RlcnMo
KTsKKyAgICBjb25zdCBVQ2hhciogc3RyID0gaW5wdXRTdHIuY2hhcmFjdGVycygpOwogICAgIGNv
bnN0IFVDaGFyKiBzdHJFbmQgPSBzdHIgKyBsZW5ndGg7CiAKICAgICB3aGlsZSAoc3RyIDwgc3Ry
RW5kKSB7CkBAIC00NzcsNyArNDc3LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdAogICAgIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcoJlNlcGFyYXRv
ckNoYXJhY3RlciwgMSk7CiAKICAgICBpZiAobV9lbmNvZGVkSG9zdC5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fZW5jb2RlZEhvc3QgPSBlbmNvZGVkSG9zdChtX2hvc3QpOworICAgICAgICBtX2VuY29k
ZWRIb3N0ID0gZW5jb2RlRm9yRmlsZU5hbWUobV9ob3N0KTsKIAogICAgIHJldHVybiBtX3Byb3Rv
Y29sICsgc2VwYXJhdG9yU3RyaW5nICsgbV9lbmNvZGVkSG9zdCArIHNlcGFyYXRvclN0cmluZyAr
IFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7IAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmggYi9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCBmYTVi
MWU0YTZlZjE4YTVkOWY0Njk3YzI5ODczM2EyYzFjZjk3ZTUwLi43MjdmYjg5ZDg3N2I3ODU5Yjk3
NGNhOTA3ZWE1MDFiMjdkNWZiODliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaAorKysgYi9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMTU3LDYgKzE1
Nyw5IEBAIHB1YmxpYzoKICAgICAvLyB3ZSBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3Mu
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKKyAgICAvLyBFbmNvZGUgYSBzdHJpbmcg
Zm9yIHVzZSB3aXRoaW4gYSBmaWxlIG5hbWUuIFVzZWQgaW50ZXJuYWxseSBmb3IgdGhlIGRhdGFi
YXNlIGlkZW50aWZpZXIuCisgICAgc3RhdGljIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25z
dCBTdHJpbmcmKTsKKwogICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIHRvIGEg
c3RyaW5nIHRoYXQgY291bGQgYmUgdXNlZCBhcyBwYXJ0IG9mCiAgICAgLy8gZmlsZSBuYW1lcy4g
VGhpcyBmb3JtYXQgc2hvdWxkIGJlIHVzZWQgaW4gc3RvcmFnZSBBUElzIG9ubHkuCiAgICAgU3Ry
aW5nIGRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5k
ZXggZTRkNDM4NTAzZThiZDZhZmYxMGZiZWZiNmI5NTk4ZjU2NjVmNzU5Ni4uYWRjY2UwMzUxMmM3
MWQ4NzM2NjdlMDNkYWRhMTg0MDY4N2FmN2Q1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBA
IC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSURCRGF0YWJhc2U6OklEQkRh
dGFiYXNlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQog
ICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCisgICAgLCBtX2Rlc2NyaXB0aW9uKG1fYmFja2VuZC0+
ZGVzY3JpcHRpb24oKSkKIHsKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoaXMgb2Jq
ZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggY2NhMjBlM2NkNGQyODZiOWYzMWJkNDA1Y2Rm
MDU2MGE4MjcyODBhYS4uZDhjNmZmZmVmNzI3Mzk2YTQyNTRhYmM4ODNjMWNkNTRiNjczMjZiMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgLy8g
SW1wbGVtZW50IHRoZSBJREwKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZC0+bmFtZSgpOyB9Ci0gICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZW5kLT5kZXNjcmlwdGlvbigpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQogICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLT52ZXJzaW9uKCk7IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IG9iamVjdFN0b3JlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+b2JqZWN0U3Rv
cmVzKCk7IH0KIApAQCAtNjMsNiArNjMsOCBAQCBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKICAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CisKKyAgICBTdHJpbmcgbV9kZXNj
cmlwdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA4NjIyOGJkZTIyNGFjNTk1MzQ1NGVmZjM1
OTI2MzI4ODEyMWYwYTg1Li42Mjk5ODFiYjQ1MTc2NGE3YmQ5MTM3MDY4YWUzYTgzN2QyM2VjZjkx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
KysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yOSwy
MiArMjksODkgQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgi
CisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQu
aCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUlEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRp
b24pCi0gICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3N0YXRpYyBib29sIGV4dHJhY3RNZXRhRGF0
YShTUUxpdGVEYXRhYmFzZSogc3FsaXRlRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRO
YW1lLCBTdHJpbmcmIGZvdW5kRGVzY3JpcHRpb24sIFN0cmluZyYgZm91bmRWZXJzaW9uKQogewor
ICAgIFNRTGl0ZVN0YXRlbWVudCBtZXRhRGF0YVF1ZXJ5KCpzcWxpdGVEYXRhYmFzZSwgIlNFTEVD
VCBuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbiBGUk9NIE1ldGFEYXRhIik7CisgICAgaWYgKG1l
dGFEYXRhUXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rIHx8IG1ldGFEYXRhUXVlcnkuc3Rl
cCgpICE9IFNRTFJlc3VsdFJvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1l
dGFEYXRhUXVlcnkuZ2V0Q29sdW1uVGV4dCgwKSAhPSBleHBlY3RlZE5hbWUpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJOYW1lIGluIE1ldGFEYXRhICglcykgZG9lc24ndCBtYXRjaCBleHBlY3RlZCAo
JXMpIGZvciBJbmRleGVkREIiLCBtZXRhRGF0YVF1ZXJ5LmdldENvbHVtblRleHQoMCkudXRmOCgp
LmRhdGEoKSwgZXhwZWN0ZWROYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgZm91bmREZXNjcmlwdGlvbiA9IG1ldGFEYXRhUXVlcnku
Z2V0Q29sdW1uVGV4dCgxKTsKKyAgICBmb3VuZFZlcnNpb24gPSBtZXRhRGF0YVF1ZXJ5LmdldENv
bHVtblRleHQoMik7CisKKyAgICBpZiAobWV0YURhdGFRdWVyeS5zdGVwKCkgPT0gU1FMUmVzdWx0
Um93KSB7CisgICAgICAgIExPR19FUlJPUigiTW9yZSB0aGFuIG9uZSByb3cgZm91bmQgaW4gTWV0
YURhdGEgdGFibGUiKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHNldE1ldGFEYXRhKFNRTGl0ZURhdGFi
YXNlKiBzcWxpdGVEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCit7CisgICAgQVNTRVJUKCFuYW1lLmlz
TnVsbCgpICYmICFkZXNjcmlwdGlvbi5pc051bGwoKSAmJiAhdmVyc2lvbi5pc051bGwoKSk7CisK
KyAgICBzcWxpdGVEYXRhYmFzZS0+ZXhlY3V0ZUNvbW1hbmQoIkRFTEVURSBGUk9NIE1ldGFEYXRh
Iik7CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgaW5zZXJ0KCpzcWxpdGVEYXRhYmFzZSwgIklOU0VS
VCBJTlRPIE1ldGFEYXRhIChuYW1lLCBkZXNjcmlwdGlvbiwgdmVyc2lvbikgVkFMVUVTICg/LCA/
LCA/KSIpOworICAgIGlmIChpbnNlcnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgTWV0YURhdGEgaW5zZXJ0IHN0YXRlbWVu
dCBmb3IgSW5kZXhlZERCIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
bnNlcnQuYmluZFRleHQoMSwgbmFtZSk7CisgICAgaW5zZXJ0LmJpbmRUZXh0KDIsIGRlc2NyaXB0
aW9uKTsKKyAgICBpbnNlcnQuYmluZFRleHQoMywgdmVyc2lvbik7CisKKyAgICBpZiAoaW5zZXJ0
LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGluc2VydCByb3cgaW50byBNZXRhRGF0YSBmb3IgSW5kZXhlZERCIik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGVyZSdz
IG9ubHkgb25lIHJvdz8KKworICAgIHJldHVybiB0cnVlOworfQorCitJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc093blB0cjxTUUxpdGVEYXRhYmFzZT4gc3FsaXRlRGF0
YWJhc2UpCisgICAgOiBtX3NxbGl0ZURhdGFiYXNlKHNxbGl0ZURhdGFiYXNlKQorICAgICwgbV9u
YW1lKG5hbWUpCisgICAgLCBtX3ZlcnNpb24oIiIpCit7CisgICAgQVNTRVJUKCFtX25hbWUuaXNO
dWxsKCkpOworCisgICAgLy8gRklYTUU6IFRoZSBzcGVjIGlzIGluIGZsdXggYWJvdXQgaG93IHRv
IGhhbmRsZSBkZXNjcmlwdGlvbi4gU3luYyBpdCB1cCBvbmNlIGEgZmluYWwgZGVjaXNpb24gaXMg
bWFkZS4KKyAgICBTdHJpbmcgZm91bmREZXNjcmlwdGlvbiA9ICIiOworICAgIGJvb2wgcmVzdWx0
ID0gZXh0cmFjdE1ldGFEYXRhKG1fc3FsaXRlRGF0YWJhc2UuZ2V0KCksIG1fbmFtZSwgZm91bmRE
ZXNjcmlwdGlvbiwgbV92ZXJzaW9uKTsKKyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24u
aXNOdWxsKCkgPyBmb3VuZERlc2NyaXB0aW9uIDogZGVzY3JpcHRpb247CisKKyAgICBpZiAoIXJl
c3VsdCB8fCBtX2Rlc2NyaXB0aW9uICE9IGZvdW5kRGVzY3JpcHRpb24pCisgICAgICAgIHNldE1l
dGFEYXRhKG1fc3FsaXRlRGF0YWJhc2UuZ2V0KCksIG1fbmFtZSwgbV9kZXNjcmlwdGlvbiwgbV92
ZXJzaW9uKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2Vu
ZEltcGwoKQogewogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldERlc2NyaXB0
aW9uKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGRlc2NyaXB0aW9uID09
IG1fZGVzY3JpcHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbjsKKyAgICBzZXRNZXRhRGF0YShtX3NxbGl0ZURhdGFiYXNlLmdldCgpLCBtX25h
bWUsIG1fZGVzY3JpcHRpb24sIG1fdmVyc2lvbik7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmVzKCkgY29uc3QKIHsKICAg
ICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6
OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXgg
ODdlMDcwYTEyMzI0ZmFiYjRlMzM1YzdmODI5Y2Q1N2Q5ZmFlNjNkNy4uMDgwMDA0MTQ2ZTM1NTEz
ZDQyZDM4MjgzZjU4Mjg2NDBkNTdiMDAxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCkBAIC0zNSwxNCArMzUsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBTUUxpdGVEYXRhYmFzZTsKKwogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6
IHB1YmxpYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NPd25Q
dHI8U1FMaXRlRGF0YWJhc2U+IGRhdGFiYXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRlc2NyaXB0aW9uLCB2ZXJzaW9u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChu
YW1lLCBkZXNjcmlwdGlvbiwgZGF0YWJhc2UpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SURCRGF0
YWJhc2VCYWNrZW5kSW1wbCgpOwogCisgICAgdm9pZCBzZXREZXNjcmlwdGlvbihjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uKTsKKwogICAgIC8vIEltcGxlbWVudHMgSURCRGF0YWJhc2UKICAgICB2
aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVh
bCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CkBA
IC01NCw3ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiBwcml2
YXRlOgotICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIElEQkRh
dGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBkYXRhYmFzZSk7CisKKyAgICBPd25Q
dHI8U1FMaXRlRGF0YWJhc2U+IG1fc3FsaXRlRGF0YWJhc2U7CiAKICAgICBTdHJpbmcgbV9uYW1l
OwogICAgIFN0cmluZyBtX2Rlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdl
L0lEQkZhY3RvcnkuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKaW5kZXggNjE2MTli
OWI1ZWU3MGJjMWYzNTc2N2EzYmMwNGQ3ZDU0M2I4OTNlNi4uYTk2YWEzODIyZDRmYTkyNjM4OGM1
MTY5M2E4YjA5ZTFkZDY5MjAzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgfklEQkZhY3RvcnkoKTsKIAotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiA9IFN0cmluZygpKTsKIAogcHJpdmF0ZToKICAgICBJREJGYWN0
b3J5KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRmFjdG9yeS5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5pZGwKaW5k
ZXggY2Q4ODdmMDA2YjZiZjEwYTk1ZjBmY2MzNWY0ZDY3YTRjYWVkNDA5Mi4uMjE1ZDY3YzY0YjBl
OTY0OTFhYWQxYjg4YzQxYjk2ZjBjY2QxZjg2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0lEQkZhY3RvcnkuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmlkbApAQCAt
MjgsNyArMjgsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAg
Q29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAgIF0gSURCRmFjdG9yeSB7Ci0gICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9N
U3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBkZXNjcmlwdGlvbik7CisgICAgICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5h
bWUsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nIGRlc2NyaXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDdiZGQ3MGQzMDgxNTY4MzZiZmU3Y2YyZmE2YmQwZjFi
ZDllMjllMmIuLmQ2MTIxMjQ0YWU4YTQxNWYyYTlhNTk2ZmU5MjRkYmMyNDgyMDY1ZTcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0zMSw2ICszMSw4IEBA
CiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAi
U1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTM5LDMx
ICs0MSw3NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRmFjdG9y
eUJhY2tlbmRJbXBsPiBJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpCitJREJGYWN0b3J5
QmFja2VuZEltcGw6OklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJGYWN0b3J5QmFja2VuZEltcGwpOwogfQogCi1JREJGYWN0b3J5QmFja2VuZElt
cGw6OklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCitJREJGYWN0b3J5QmFja2VuZEltcGw6On5JREJG
YWN0b3J5QmFja2VuZEltcGwoKQogewogfQogCi1JREJGYWN0b3J5QmFja2VuZEltcGw6On5JREJG
YWN0b3J5QmFja2VuZEltcGwoKQorc3RhdGljIFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IG9w
ZW5TUUxpdGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFN0cmluZyBu
YW1lKQogeworICAgIFN0cmluZyBwYXRoQmFzZSA9ICIvdG1wL3RlbXBvcmFyeS1pbmRleGVkLWRi
LWZpbGVzIjsgLy8gRklYTUU6IFdyaXRlIGEgUGFnZUdyb3VwU2V0dGluZ3MgY2xhc3MgYW5kIGhh
dmUgdGhpcyB2YWx1ZSBjb21lIGZyb20gdGhhdC4KKyAgICBpZiAoIW1ha2VBbGxEaXJlY3Rvcmll
cyhwYXRoQmFzZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBvdGhlciB0aGlu
ZyB3ZSBjb3VsZCBwb3NzaWJseSBkbyB0byByZWNvdmVyIGF0IHRoaXMgcG9pbnQ/IElmIHNvLCBk
byBpdCByYXRoZXIgdGhhbiBqdXN0IGVycm9yaW5nIG91dC4KKyAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGVkIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIHBhdGhCYXNl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyID0gc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigp
OworICAgIFN0cmluZyBzYW50aXplZE5hbWUgPSBTZWN1cml0eU9yaWdpbjo6ZW5jb2RlRm9yRmls
ZU5hbWUobmFtZSk7CisgICAgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aEJhc2UsIGRhdGFiYXNlSWRlbnRpZmllciArICJfIiArIHNhbnRpemVkTmFtZSArICIuaW5k
ZXhlZGRiIik7CisgICAgCisgICAgT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBzcWxpdGVEYXRhYmFz
ZSA9IGFkb3B0UHRyKG5ldyBTUUxpdGVEYXRhYmFzZSgpKTsKKyAgICBpZiAoIXNxbGl0ZURhdGFi
YXNlLT5vcGVuKHBhdGgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhbnkgb3RoZXIg
dGhpbmcgd2UgY291bGQgcG9zc2libHkgZG8gdG8gcmVjb3ZlciBhdCB0aGlzIHBvaW50PyBJZiBz
bywgZG8gaXQgcmF0aGVyIHRoYW4ganVzdCBlcnJvcmluZyBvdXQuCisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIG9wZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgSW5kZXhlZERCIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHNx
bGl0ZURhdGFiYXNlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6
Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgRnJhbWUqKQorc3RhdGljIGJvb2wgY3JlYXRlVGFibGVzKFNRTGl0ZURhdGFiYXNlKiBzcWxp
dGVEYXRhYmFzZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29tbWFuZHNbXSA9IHsKKyAg
ICAgICAgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE1ldGFEYXRhIChuYW1lIFRFWFQsIGRl
c2NyaXB0aW9uIFRFWFQsIHZlcnNpb24gVEVYVCkiCisgICAgICAgIH07CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShjb21tYW5kcyk7ICsraSkgeworICAgICAgICBpZiAo
IXNxbGl0ZURhdGFiYXNlLT5leGVjdXRlQ29tbWFuZChjb21tYW5kc1tpXSkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIHJlY292ZXIgZnJvbSB0aGlzIHNpdHVhdGlv
bi4gTWF5YmUgbnVrZSB0aGUgZGF0YWJhc2UgYW5kIHN0YXJ0IG92ZXI/CisgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvciBJbmRleGVk
REI6ICVzIiwgY29tbWFuZHNbaV0pOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIElEQkZhY3RvcnlCYWNrZW5k
SW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBGcmFtZSopCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kOwogICAgIElEQkRhdGFiYXNlQmFja2Vu
ZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQmFja2VuZE1hcC5maW5kKG5hbWUpOwotICAg
IGlmIChpdCA9PSBtX2RhdGFiYXNlQmFja2VuZE1hcC5lbmQoKSkgewotICAgICAgICAvLyBGSVhN
RTogV2hhdCBzaG91bGQgdGhlIHZlcnNpb24gYmU/ICBUaGUgc3BlYyBkb2Vzbid0IGRlZmluZSBp
dCB5ZXQuCi0gICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZShuYW1lLCBkZXNjcmlwdGlvbiwgIiIpOwotICAgICAgICBtX2RhdGFiYXNlQmFja2Vu
ZE1hcC5zZXQobmFtZSwgZGF0YWJhc2VCYWNrZW5kKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZGF0
YWJhc2VCYWNrZW5kID0gaXQtPnNlY29uZDsKLQotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRh
dGFiYXNlQmFja2VuZC5yZWxlYXNlKCkpOworICAgIGlmIChpdCAhPSBtX2RhdGFiYXNlQmFja2Vu
ZE1hcC5lbmQoKSkgeworICAgICAgICBpZiAoIWRlc2NyaXB0aW9uLmlzTnVsbCgpKQorICAgICAg
ICAgICAgaXQtPnNlY29uZC0+c2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOyAvLyBUaGUgZGVz
Y3JpcHRpb24gbWF5IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
aXQtPnNlY29uZC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhN
RTogRXZlcnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVh
ZC4KKworICAgIE93blB0cjxTUUxpdGVEYXRhYmFzZT4gc3FsaXRlRGF0YWJhc2UgPSBvcGVuU1FM
aXRlRGF0YWJhc2Uoc2VjdXJpdHlPcmlnaW4uZ2V0KCksIG5hbWUpOworICAgIGlmICghc3FsaXRl
RGF0YWJhc2UgfHwgIWNyZWF0ZVRhYmxlcyhzcWxpdGVEYXRhYmFzZS5nZXQoKSkpIHsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGRlc2NyaXB0
aW9uLCBzcWxpdGVEYXRhYmFzZS5yZWxlYXNlKCkpOworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNz
KGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KG5h
bWUsIGRhdGFiYXNlQmFja2VuZC5yZWxlYXNlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggYmJjYzUzN2M3
OTk0ZjFlNjk2ZjUxMjgwMTUwOTg4NmM5Zjg1NTBhNi4uN2ExNTVjZjYzNTU3MjAyNWQ0YWY1NGE5
NGU5NzFiOGJhMzcwMjA4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwu
aApAQCAtMzcsMTAgKzM3LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVN0
cmluZ0xpc3Q7CitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogCiBjbGFzcyBJREJGYWN0
b3J5QmFja2VuZEltcGwgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gY3JlYXRl
KCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJGYWN0b3J5QmFja2VuZElt
cGwoKSk7CisgICAgfQogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBGcmFtZSopOwpAQCAtNDgsNyArNTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gPiBJREJEYXRhYmFzZUJhY2tlbmRN
YXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+ID4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1h
cCBtX2RhdGFiYXNlQmFja2VuZE1hcDsKIAogICAgIC8vIFdlIG9ubHkgY3JlYXRlIG9uZSBpbnN0
YW5jZSBvZiB0aGlzIGNsYXNzIGF0IGEgdGltZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64117</attachid>
            <date>2010-08-11 08:35:47 -0700</date>
            <delta_ts>2010-08-11 08:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43744-20100811163545.patch</filename>
            <type>text/plain</type>
            <size>40663</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkY2U1ZWI0ZjU3MjQ4ZDQ5MzJkZTkwZTk0MzhhYjRlZTU3Mjk4Nzc0Li4zMTU1YWM3
MzZiNmUwYjJmOWM2ZTBiYTA2NTA1MWNlZWU4NzZkZThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDgtMDkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVnaW5uaW5ncyBvZiBJ
bmRleGVkREIgcGVyc2lzdGFuY2UgKyBJREJEYXRhYmFzZS5kZXNjcmlwdGlvbiBmbGVzaGVkIG91
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDQK
KworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCBmb3IgSURCRGF0YWJhc2UuZGVzY3JpcHRpb24u
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRl
c2NyaXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Njcmlw
dC10ZXN0cy9kYXRhYmFzZS1kZXNjcmlwdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKGZpcnN0U3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRTdWNjZXNzKToKKyAgICAg
ICAgKHRoaXJkU3VjY2Vzcyk6CisKIDIwMTAtMDgtMTEgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBDaHJvbWl1bSByZWJhc2VsaW5lLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVzY3Jp
cHRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2UtZGVzY3JpcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MGQzM2Q4MWNjODg4YTAy
NTA1NmQ3ZjcyYWQzZDdmNmMxYTAxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw3NCBAQAorVGVzdCBJREJGYWN0b3J5Lm9wZW4ncyBkZXNjcmlwdGlvbiBwYXJhbWV0ZXIu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdpbmRleGVkREInIGluIHdp
bmRvdyBpcyB0cnVlCitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIu
b3BlbignYWJjZCcsICdmaXJzdCcpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
CitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnYWJvcnQnIGluIHJlc3Vs
dCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQg
c2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVz
dWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFT
UyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMg
dHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3Mn
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQorUEFTUyAnYWJvcnQnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFk
eVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlT
dGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIGV2ZW50LnJlc3VsdC5kZXNjcmlwdGlv
biBpcyAiZmlyc3QiCitpbmRleGVkREIub3BlbignYWJjZCcsICdzZWNvbmQnKQorUEFTUyAnb25z
dWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRy
dWUKK1BBU1MgJ2Fib3J0JyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4g
cmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2Vz
cyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29k
ZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQ
QVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwg
aXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAn
b25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFT
UyBmaXJzdERCLmRlc2NyaXB0aW9uIGlzICJmaXJzdCIKK1BBU1Mgc2Vjb25kREIuZGVzY3JpcHRp
b24gaXMgInNlY29uZCIKK2luZGV4ZWREQi5vcGVuKCdhYmNkJykKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNT
ICdhYm9ydCcgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBp
cyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQg
ZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2
ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291
cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUK
K1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3In
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdhYm9ydCcgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2
ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZmlyc3RE
Qi5kZXNjcmlwdGlvbiBpcyAiZmlyc3QiCitQQVNTIHNlY29uZERCLmRlc2NyaXB0aW9uIGlzICJz
ZWNvbmQiCitQQVNTIGV2ZW50LnJlc3VsdC5kZXNjcmlwdGlvbiBpcyAic2Vjb25kIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNhNmE0ZDYwMmZjY2I5YWRkMWM0MGNjYjdlNzFkYmMyZmQwMDg2Y2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1k
ZXNjcmlwdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvZGF0YWJhc2UtZGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL2Rh
dGFiYXNlLWRlc2NyaXB0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2Ny
aXB0LXRlc3RzL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNGFjYmE2YjBj
MDk2MjlhZDhmMDgwY2QyMjAyY2JlMWJiNWFkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvZGF0YWJhc2UtZGVzY3JpcHRpb24u
anMKQEAgLTAsMCArMSw1NiBAQAorZGVzY3JpcHRpb24oIlRlc3QgSURCRmFjdG9yeS5vcGVuJ3Mg
ZGVzY3JpcHRpb24gcGFyYW1ldGVyLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4ZWREQicgaW4gd2luZG93Iik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdhYmNkJywgJ2ZpcnN0JykiKTsKKyAgICB2ZXJpZnlS
ZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZmlyc3RTdWNjZXNzOworICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGZpcnN0U3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3
aW5kb3cuZmlyc3REQiA9IGV2ZW50LnJlc3VsdDsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZXZlbnQucmVzdWx0LmRlc2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisKKyAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignYWJjZCcsICdzZWNvbmQnKSIpOworICAgIHZlcmlm
eVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZWNvbmRTdWNjZXNzOwor
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHNlY29uZFN1Y2Nlc3MoKQoreworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Cisg
ICAgd2luZG93LnNlY29uZERCID0gZXZlbnQucmVzdWx0OworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdmaXJzdERCLmRlc2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdzZWNvbmREQi5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdhYmNkJykiKTsKKyAgICB2ZXJpZnlSZXN1
bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gdGhpcmRTdWNjZXNzOworICAgIHJl
c3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRo
aXJkU3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZmlyc3REQi5kZXNjcmlwdGlvbicsICdmaXJzdCcpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnc2Vjb25kREIuZGVzY3JpcHRpb24nLCAnc2Vjb25kJyk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHQuZGVzY3JpcHRpb24nLCAn
c2Vjb25kJyk7CisKKyAgICBkb25lKCk7Cit9CisKK3Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3Jl
L0FuZHJvaWQubWsKaW5kZXggYWM4OTRmMTEzNGY1OWYxYmQ1NDg3ZTk5YTcxMzkzZDdkNWVjMGJi
Yi4uMWEzMGRjNmZkZDIxOWZhZjFiMmUwMmVhNmMxZGU2NzkyYjAzNGE2YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtNDE0LDYgKzQx
NCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXBsYXRmb3Jt
L0RyYWdEYXRhLmNwcCBcCiAJcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCiAJcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwIFwKKwlwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCiAJcGxhdGZvcm0vR2Vv
bG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAJcGxhdGZvcm0vS1VSTC5jcHAgXAogCXBsYXRmb3JtL0tV
UkxHb29nbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc1NDQ1YzIwMjA4OWJmMzBiNTQ2Y2Y1NjYyNDUyMTI4
Mjk5N2JhNzIuLmVjMDA3MGFjNzc1YTIwNjk1OGJmYjEwMjE4ZDRiMDE1NGU5MTEyNWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTIwNiw2ICsxMjA2LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L0RyYWdEYXRhLmNwcAogICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5jcHAKKyAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAogICAgIHBsYXRmb3Jt
L0dlb2xvY2F0aW9uU2VydmljZS5jcHAKICAgICBwbGF0Zm9ybS9LVVJMLmNwcAogICAgIHBsYXRm
b3JtL0tpbGxSaW5nTm9uZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiMmI4NTViYzhkMDJlMDVhZDMzNTFiODliZDM1NTkxYTdi
MDMwMy4uMGYzNjM2MzY5NTU1OGU2NmM2MzEwNTQ2Yzg3NmQ3ZTBlNTIyY2VhOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MSBAQAorMjAxMC0wOC0xMSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBCZWdpbm5pbmdzIG9mIEluZGV4ZWREQiBwZXJzaXN0YW5jZSArIElEQkRhdGFiYXNl
LmRlc2NyaXB0aW9uIGZsZXNoZWQgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Mzc0NAorCisgICAgICAgIFRoZSBiZWdpbm5pbmdzIG9mIGEgU1FM
aXRlIGJhY2tlbmQgZm9yIEluZGV4ZWREQi4gIFJpZ2h0IG5vdywgb25seSBwZXJzaXN0cworICAg
ICAgICBtZXRhLWRhdGEgZm9yIHRoZSBkYXRhYmFzZS4gIFRoZSByZXN0IGlzIGNvbWluZyBpbiBm
dXR1cmUgcGF0Y2hlcy4gIEFkZHMKKyAgICAgICAgYSBtYW51YWwgdGVzdCB0byB2ZXJpZnkgcGVy
c2lzdGFuY2UuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVz
Y3JpcHRpb24uaHRtbAorICAgICAgICAgICAgICArIGEgbWFudWFsIHRlc3QKKworICAgICAgICAq
IEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvaW5kZXhlZC1kYXRhYmFzZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRFc2NhcGVVQ2hhcik6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVG
b3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWV0
YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWV0YURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXREZXNjcmlwdGlvbik6Cisg
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCRmFjdG9yeS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5pZGw6CisgICAgICAg
ICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjp+SURCRmFjdG9yeUJhY2tlbmRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVUYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorCiAyMDEwLTA4
LTExICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNmVmZWE4NTQ5OTkxMzBiOTY0OTEy
MGE5NTBmYzA4OTI2MDRlMTU1MS4uNGU5MGE4NzI3NGU3ZjYyOTUzNWY1NWY1NTI5N2FhYTVlYTFh
Njc2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xOTAzLDYgKzE5MDMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vRXZlbnRMb29wLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXAorCVdlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMGMyZDE0MGFjNmJiZmQ3M2Y3NTVj
Mzc5MDAzYzA3MjE5ZTUwYjAzLi5lMDcyYzI2YjFhNTRkYjI2ZWY4N2Q1OWJhYWU3ZGMxNGI5MjVi
NTgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzAyMSw2ICszMDIxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9FdmVu
dExvb3AuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZUNob29zZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9G
aWxlU3lzdGVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZVN5c3RlbS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9GbG9hdENvbnZlcnNpb24uaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBjZjA5ODhhYjU5OGY5NzEwMTU4MjYxZjM4YzEzZTQxYjdlYWFhODIzLi5k
MDg2OGRhM2ViYzVjZjIxODM1MDMyZmFhZGQwODFlNWY3ODM4N2YxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIzMzQxLDYgKzIzMzQxLDEwIEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXEZpbGVT
eXN0ZW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cRmlsZVN5c3RlbS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODFmYTczZjZmY2Ez
ZDFmNGU2MWE5YTczZjdiMzY0ZTY3NGQ4M2VjOS4uMWY3YTBjZWQxMzc3MDU5MTQ5NjM2YzYzYTM2
Y2MyYzJlZDc2OTM4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQ5NzcsNiArNDk3Nyw3IEBACiAJCUM1NzJFRTBGMTIwMUM3MzYwMDdEOEY4MiAvKiBJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1NzJFRTA5MTIwMUM3MzYwMDdEOEY4MiAvKiBJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2UuaCAqLzsgfTsKIAkJQzU3MkVFMUUxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURC
SW5kZXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzU3MkVFMUMxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguY3BwICovOyB9OwogCQlDNTcy
RUUxRjEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3MkVFMUQxMjAxQzlCQzAwN0Q4RjgyIC8qIEpT
SURCSW5kZXguaCAqLzsgfTsKKwkJQzU3RkVERTExMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0
ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3
RkVERTAxMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlDNTg1QTY1
RTExRDRGQUIyMDA0QzNFNEIgLyogSlNJREJBbnlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU4NUE2NUMxMUQ0RkFCMjAwNEMzRTRCIC8q
IEpTSURCQW55Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQzU4NUE2NUYxMUQ0RkFCMjAwNEMzRTRCIC8q
IEpTSURCS2V5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1ODVBNjVEMTFENEZBQjIwMDRDM0U0QiAvKiBKU0lEQktleUN1c3RvbS5jcHAg
Ki87IH07CiAJCUM1ODVBNjYyMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1ODVB
NjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCAqLzsgfTsKQEAg
LTEwNzMxLDYgKzEwNzMyLDcgQEAKIAkJQzU3MkVFMDkxMjAxQzczNjAwN0Q4RjgyIC8qIElEQklu
ZGV4QmFja2VuZEludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzU3MkVFMUMxMjAxQzlCQzAwN0Q4RjgyIC8qIEpTSURCSW5kZXguY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJJbmRleC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCSW5kZXguaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzU3RkVERTAxMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVBNjVDMTFENEZBQjIwMDRDM0U0QiAv
KiBKU0lEQkFueUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0lEQkFueUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1ODVB
NjVEMTFENEZBQjIwMDRDM0U0QiAvKiBKU0lEQktleUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lEQktleUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM1ODVBNjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRp
bGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0NjMsNiAr
MTY0NjUsNyBAQAogCQkJCTFDQTE5RTE1MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCAq
LywKIAkJCQk5MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwICovLAog
CQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAorCQkJCUM1
N0ZFREUwMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk1MTRCM0Y3
MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovLAogCQkJCUJDMDczQkE5MEMzOTlC
MUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCAqLywKIAkJCQlCQzNCQzI5QjBFOTFBQjBG
MDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLApAQCAtMjAyMTUsNyArMjAyMTgsNiBAQAogCQkJ
aXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4
OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0
ICJXZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0J
CQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CiAJCQloYXNTY2FubmVkRm9yRW5jb2Rpbmdz
ID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtMjI1ODMsNiArMjI1
ODUsNyBAQAogCQkJCTJFRUQ1NzU1MTIxMDlFRDAwMDc2NTZCQiAvKiBCbG9iVVJMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJFRUQ1NzVCMTIxMDlFRjMwMDc2NTZCQiAvKiBCbG9iRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzhCNkZDOTEyMTI4ODIxMDAxNTk1RUYgLyogSFRNTFZpZXdT
b3VyY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzU3RkVERTExMjEyRUU5QzAwOTdC
RTY1IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L21hbnVhbC10ZXN0cy9pbmRleGVkLWRhdGFiYXNlLmh0bWwgYi9XZWJDb3JlL21hbnVhbC10ZXN0
cy9pbmRleGVkLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBmYjM4MTRkNzA5OWM0ODc2MDg3
ZDBlNDU1MmJkNTU1YTc0N2QzNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbWFudWFsLXRl
c3RzL2luZGV4ZWQtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDY3IEBACis8aHRtbD4KKzxib2R5
PgorPHA+VGhpcyBpcyBhIHRlc3QgdGhhdCBvbmx5IGFwcGxpZXMgdG8gSW5kZXhlZERCLiAgPHNw
YW4gaWQ9ZW5hYmxlZD5PdXIgdGVzdCBmb3Igd2hldGhlciB5b3UgaGF2ZSBpdCBlbmFibGVkIHNl
ZW1zIHRvIGhhdmUgZmFpbGVkLjwvc3Bhbj48L3A+CisKKzxwPlRoaXMgcGFnZSBvcGVucyB1cCBh
IGRhdGFiYXNlIHdpdGggdGhlIG5hbWUgIm5hbWUiIGFuZCBhIGRlc2NyaXB0aW9uIG9mICJkZXNj
cmlwdGlvbiIuICBSZXN1bHQgb2Ygb3BlbjogPHNwYW4gaWQ9cmVzdWx0PlBlbmRpbmcuLi48L3Nw
YW4+PC9wPgorCis8cD5UaGUgZmlyc3QgdGltZSB5b3Ugb3BlbiB0aGlzIHBhZ2UgdXAsIHRoZSBt
ZXNzYWdlIHNob3VsZCBiZSBhIHN1Y2Nlc3MuICBOb3csIGxldHMgbWFrZSBpdCBmYWlsLiAgRmlu
ZCB3aGVyZSB0aGUgYXNzb2NpYXRlZCAuaW5kZXhlZGRiIGZpbGUgaXMKKyAgIGZvciB0aGlzIHBh
Z2UsIHJlcGxhY2UgaXQgd2l0aCBzb21ldGhpbmcgdGhhdCdzIG5vdCBhIHNxbGl0ZSBkYXRhYmFz
ZSwgYW5kIG1ha2UgaXQgcmVhZCBvbmx5IHRvIHlvdXIgdXNlci4gIE5vdyBjbG9zZSBhbmQgcmUt
b3BlbiB0aGUgYnJvd3Nlci4KKyAgIFdoZW4geW91IHJlLW9wZW4gaXQsIHlvdSBzaG91bGQgZ2V0
IGFuIGludGVybmFsIGVycm9yIGZyb20gdGhlIHBhZ2UuPC9wPgorCis8cD5Ob3cgZGVsZXRlIGFs
bCBJbmRleGVkREIgZmlsZXMgKGluY2x1ZGluZyB0aGUgb25lIHlvdSBqdXN0IG1hZGUpLCByZXN0
YXJ0IHRoZSBicm93c2VyLCBhbmQgY29tZSBiYWNrIHRvIHRoaXMgcGFnZS4gIEl0IHNob3VsZCBz
dGFydCB1cCBmaW5lIGFnYWluLjwvcD4KKworPHA+Tm93IGNsaWNrIDxhIGhyZWY9ImphdmFzY3Jp
cHQ6dXBkYXRlRGVzY3JpcHRpb24oKSI+aGVyZTwvYT4sIGNsb3NlIHRoZSBicm93c2VyLCBjb21l
IGJhY2ssIGFuZCBjbGljayA8YSBocmVmPSJqYXZhc2NyaXB0OnJlYWREZXNjcmlwdGlvbigpIj5o
ZXJlPC9hPi4gIElmIGV2ZXJ5dGhpbmcgd29ya2VkIHdlbGwsIHRoaXMgc2hvdWxkIGJlIGEgc3Vj
Y2VzcyBoZXJlOiA8c3BhbiBpZD1kZXNjcmlwdGlvbj4uLi48L3NwYW4+PC9wPgorCis8cD5UaGF0
J3MgaXQhPC9wPgorCis8c2NyaXB0PgorCisgICAgaWYgKCEoJ2luZGV4ZWREQicgaW4gd2luZG93
KSkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVuYWJsZWQiKS5pbm5lckhUTUwg
PSAiPGZvbnQgY29sb3I9cmVkPllvdXIgYnVpbGQgZG9lcyBOT1Qgc2VlbSB0byBoYXZlIGl0IGVu
YWJsZWQuICBTbyBhbGwgY29kZSBvbiB0aGlzIHBhZ2UgaXMgZGlzYWJsZWQuPC9mb250PiI7Cisg
ICAgZWxzZSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbmFibGVkIikuaW5u
ZXJIVE1MID0gIjxmb250IGNvbG9yPWdyZWVuPllvdXIgYnVpbGQgc2VlbXMgdG8gaGF2ZSBpdCBl
bmFibGVkLjwvZm9udD4iOworCisgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbigibmFt
ZSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICI8Zm9udCBj
b2xvcj1ncmVlbj5TdWNjZXNzITwvZm9udD4iOworICAgICAgICAgICAgd2luZG93Lm5hbWVEQiA9
IGV2ZW50LnJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJIVE1MID0gIjxmb250IGNvbG9yPXJlZD5FcnJvcjogIiArIGV2ZW50Lm1lc3NhZ2UgKyAi
LjwvZm9udD4iOworICAgICAgICB9OworCisgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bigiYW5vdGhlciIsICJ0ZXN0IG9mIHRoZSBkZXNjcmlwdGlvbiBhdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5h
bm90aGVyREIgPSBldmVudC5yZXN1bHQ7CisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rp
b24gdXBkYXRlRGVzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgaW5kZXhlZERCLm9wZW4oIm5h
bWUiLCAidGVzdCBvZiB0aGUgZGVzY3JpcHRpb24gYXR0cmlidXRlIik7CisgICAgICAgIGluZGV4
ZWREQi5vcGVuKCJhbm90aGVyIiwgInh5eiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlYWRE
ZXNjcmlwdGlvbigpCisgICAgeworICAgICAgICBpZiAod2luZG93Lm5hbWVEQi5kZXNjcmlwdGlv
biAhPSAidGVzdCBvZiB0aGUgZGVzY3JpcHRpb24gYXR0cmlidXRlIikgeworICAgICAgICAgICAg
Ly8gU2luY2Ugd2UgcGFzc2VkIGluIG5vdGhpbmcsIHRoZSBkZXNjcmlwdGlvbiBzaG91bGQgbm90
IGJlIHJlc2V0LgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0
aW9uIikuaW5uZXJIVE1MID0gIjxmb250IGNvbG9yPXJlZD5GYWlsdXJlOiAoRGF0YWJhc2UgJ25h
bWUnIHdhcyB0aGlzOiAiICsgd2luZG93Lm5hbWVEQi5kZXNjcmlwdGlvbiArICIpLjwvZm9udD4i
OworICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5hbm90aGVyREIuZGVzY3JpcHRpb24gIT0gInRl
c3Qgb2YgdGhlIGRlc2NyaXB0aW9uIGF0dHJpYnV0ZSIpIHsKKyAgICAgICAgICAgIC8vIEJ1dCBp
biB0aGlzIGNhc2Ugd2UgZGlkIHBhc3Mgc29tZXRoaW5nIGluLCBzbyBpdCBzaG91bGQgaGF2ZSBi
ZWVuIHJlc2V0LgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0
aW9uIikuaW5uZXJIVE1MID0gIjxmb250IGNvbG9yPXJlZD5GYWlsdXJlOiAoRGF0YWJhc2UgJ2Fu
b3RoZXInIHdhcyB0aGlzOiAiICsgd2luZG93LmFub3RoZXJEQi5kZXNjcmlwdGlvbiArICIpLjwv
Zm9udD4iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKCJhbm90aGVyIiwgIjEyMyIpOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBBbmQgaGVyZSBpdCBzaG91bGQgaGF2
ZSBiZWVuIHJlc2V0IGFnYWluLgorICAgICAgICAgICAgICAgIGlmIChldmVudC5yZXN1bHQuZGVz
Y3JpcHRpb24gIT0gIjEyMyIpCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1yZWQ+RmFpbHVy
ZTogKERhdGFiYXNlICdhbm90aGVyJyB3YXMgdGhpczogIiArIGV2ZW50LnJlc3VsdC5kZXNjcmlw
dGlvbiArICIpLjwvZm9udD4iOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuaW5uZXJIVE1MID0g
Ijxmb250IGNvbG9yPWdyZWVuPlN1Y2Nlc3MhPC9mb250PiI7CisgICAgICAgICAgICB9OworICAg
ICAgICB9CisgICAgfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDg3YjNlZDJiYjM5Nzc3NzVjN2U3OTQ1Y2EyYmUxYzM1ZjRhZTRkNzYu
LmU0MTc4MzY3NjU5NThlZWJkZTc2ODMxZmI5N2M1YjVlNWVlMGU5Y2IgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgpAQCAtMzk5LDg1ICs0MDAsMTIgQEAgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29u
c3QgU3QKICAgICByZXR1cm4gY3JlYXRlKEtVUkwoS1VSTCgpLCBwcm90b2NvbCArICI6Ly8iICsg
aG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpKSk7CiB9CiAKLS8vIFRoZSBmb2xsb3dp
bmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBm
aWxlbmFtZQotLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2luZG93czoKLS8vICAg
ICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKLS8vICAgICAtIFNwYWNlICAgICAgICAgICAg
ICgyMCkKLS8vICAgICAtIERvdWJsZSBxdW90ZSAgICAgICgyMikKLS8vICAgICAtIFBlcmNlbnQg
ICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNjYXBlIGNoYXJhY3Rl
cikKLS8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgyQSkKLS8vICAgICAtIFNsYXNoICAgICAg
ICAgICAgICgyRikKLS8vICAgICAtIENvbG9uICAgICAgICAgICAgICgzQSkKLS8vICAgICAtIExl
c3MtdGhhbiAgICAgICAgICgzQykKLS8vICAgICAtIEdyZWF0ZXItdGhhbiAgICAgICgzRSkKLS8v
ICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKLS8vICAgICAtIEJhY2tzbGFzaCAgICAgICAg
ICg1QykKLS8vICAgICAtIFBpcGUgICAgICAgICAgICAgICg3QykKLS8vICAgICAtIERlbGV0ZSAg
ICAgICAgICAgICg3RikKLQotc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2NhcGluZ1sxMjhdID0g
ewotICAgIC8qIDAwLTA3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAKLSAgICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0KLSAgICAvKiAxMC0xNyAqLyB0cnVl
LCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0gICAg
LyogMTgtMUYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsIAotCi0gICAgLyogMjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2Us
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiAyOC0yRiAqLyBmYWxzZSwgZmFs
c2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCi0gICAgCi0gICAg
LyogMzAtMzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCAKLSAgICAvKiAzOC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwg
dHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgCi0gICAgCi0gICAgLyogNDAtNDcgKi8gZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAv
KiA0OC00RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNTAtNTcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA1OC01RiAqLyBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0g
ICAgLyogNjAtNjcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAKLSAgICAvKiA2OC02RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0gICAgCi0gICAgLyogNzAtNzcgKi8gZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKLSAg
ICAvKiA3OC03RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBm
YWxzZSwgdHJ1ZSwgCi19OwotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXNjYXBlVUNoYXIo
VUNoYXIgYykKLXsKLSAgICByZXR1cm4gYyA+IDEyNyA/IGZhbHNlIDogbmVlZHNFc2NhcGluZ1tj
XTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJD
REVGIjsKLQotc3RhdGljIFN0cmluZyBlbmNvZGVkSG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCi17
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gaG9zdC5sZW5ndGgoKTsKLSAgICBWZWN0b3I8VUNoYXIs
IDUxMj4gYnVmZmVyKGxlbmd0aCAqIDMgKyAxKTsKLSAgICBVQ2hhciogcCA9IGJ1ZmZlci5kYXRh
KCk7Ci0KLSAgICBjb25zdCBVQ2hhciogc3RyID0gaG9zdC5jaGFyYWN0ZXJzKCk7Ci0gICAgY29u
c3QgVUNoYXIqIHN0ckVuZCA9IHN0ciArIGxlbmd0aDsKLQotICAgIHdoaWxlIChzdHIgPCBzdHJF
bmQpIHsKLSAgICAgICAgVUNoYXIgYyA9ICpzdHIrKzsKLSAgICAgICAgaWYgKHNob3VsZEVzY2Fw
ZVVDaGFyKGMpKSB7Ci0gICAgICAgICAgICAqcCsrID0gJyUnOwotICAgICAgICAgICAgKnArKyA9
IGhleERpZ2l0c1soYyA+PiA0KSAmIDB4Rl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4RGlnaXRz
W2MgJiAweEZdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0K
LQotICAgIEFTU0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZl
ci5zaXplKCkpKTsKLQotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZl
ci5kYXRhKCkpOwotfQotCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmll
cigpIGNvbnN0IAogewogICAgIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcoJlNlcGFyYXRvckNoYXJh
Y3RlciwgMSk7CiAKICAgICBpZiAobV9lbmNvZGVkSG9zdC5pc0VtcHR5KCkpCi0gICAgICAgIG1f
ZW5jb2RlZEhvc3QgPSBlbmNvZGVkSG9zdChtX2hvc3QpOworICAgICAgICBtX2VuY29kZWRIb3N0
ID0gZW5jb2RlRm9yRmlsZU5hbWUobV9ob3N0KTsKIAogICAgIHJldHVybiBtX3Byb3RvY29sICsg
c2VwYXJhdG9yU3RyaW5nICsgbV9lbmNvZGVkSG9zdCArIHNlcGFyYXRvclN0cmluZyArIFN0cmlu
Zzo6bnVtYmVyKG1fcG9ydCk7IAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3lzdGVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTExZjhhYWI5Y2ZiYTgxYzNhNjlmNGQ5OGQyMTIyMWZhYjM5MGQ2NQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJz
IG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCisvLyBhY3Jvc3MgYWxsIHN5
c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgorLy8gICAgIC0gVW5wcmludGFibGUgQVNDSUkgKDAw
LTFGKQorLy8gICAgIC0gU3BhY2UgICAgICAgICAgICAgKDIwKQorLy8gICAgIC0gRG91YmxlIHF1
b3RlICAgICAgKDIyKQorLy8gICAgIC0gUGVyY2VudCAgICAgICAgICAgKDI1KSAoZXNjYXBlZCBi
ZWNhdXNlIGl0IGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyKQorLy8gICAgIC0gQXN0ZXJpc2sgICAg
ICAgICAgKDJBKQorLy8gICAgIC0gU2xhc2ggICAgICAgICAgICAgKDJGKQorLy8gICAgIC0gQ29s
b24gICAgICAgICAgICAgKDNBKQorLy8gICAgIC0gTGVzcy10aGFuICAgICAgICAgKDNDKQorLy8g
ICAgIC0gR3JlYXRlci10aGFuICAgICAgKDNFKQorLy8gICAgIC0gUXVlc3Rpb24gTWFyayAgICAg
KDNGKQorLy8gICAgIC0gQmFja3NsYXNoICAgICAgICAgKDVDKQorLy8gICAgIC0gUGlwZSAgICAg
ICAgICAgICAgKDdDKQorLy8gICAgIC0gRGVsZXRlICAgICAgICAgICAgKDdGKQorCitzdGF0aWMg
Y29uc3QgYm9vbCBuZWVkc0VzY2FwaW5nWzEyOF0gPSB7CisgICAgLyogMDAtMDcgKi8gdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAorICAgIC8q
IDA4LTBGICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAKKworICAgIC8qIDEwLTE3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKKyAgICAvKiAxOC0xRiAqLyB0cnVlLCAgdHJ1ZSwg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCisKKyAgICAvKiAyMC0y
NyAqLyB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFs
c2UsIAorICAgIC8qIDI4LTJGICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlLCAKKyAgICAKKyAgICAvKiAzMC0zNyAqLyBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAorICAgIC8qIDM4LTNG
ICovIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVl
LCAKKyAgICAKKyAgICAvKiA0MC00NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAorICAgIC8qIDQ4LTRGICovIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAgICAKKyAgICAvKiA1
MC01NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIAorICAgIC8qIDU4LTVGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAgICAKKyAgICAvKiA2MC02NyAqLyBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAorICAgIC8qIDY4
LTZGICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwKKyAgICAKKyAgICAvKiA3MC03NyAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIAorICAgIC8qIDc4LTdGICovIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAKK307CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2hhciBjKQoreworICAgIHJldHVybiBj
ID4gMTI3ID8gZmFsc2UgOiBuZWVkc0VzY2FwaW5nW2NdOworfQorCitzdGF0aWMgY29uc3QgY2hh
ciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOworCitTdHJpbmcgZW5jb2RlRm9y
RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0cikKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSBpbnB1dFN0ci5sZW5ndGgoKTsKKyAgICBWZWN0b3I8VUNoYXIsIDUxMj4gYnVmZmVyKGxlbmd0
aCAqIDMgKyAxKTsKKyAgICBVQ2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7CisKKyAgICBjb25zdCBV
Q2hhciogc3RyID0gaW5wdXRTdHIuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBzdHJF
bmQgPSBzdHIgKyBsZW5ndGg7CisKKyAgICB3aGlsZSAoc3RyIDwgc3RyRW5kKSB7CisgICAgICAg
IFVDaGFyIGMgPSAqc3RyKys7CisgICAgICAgIGlmIChzaG91bGRFc2NhcGVVQ2hhcihjKSkgewor
ICAgICAgICAgICAgKnArKyA9ICclJzsKKyAgICAgICAgICAgICpwKysgPSBoZXhEaWdpdHNbKGMg
Pj4gNCkgJiAweEZdOworICAgICAgICAgICAgKnArKyA9IGhleERpZ2l0c1tjICYgMHhGXTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICB9CisKKyAgICBBU1NFUlQo
cCAtIGJ1ZmZlci5kYXRhKCkgPD0gc3RhdGljX2Nhc3Q8aW50PihidWZmZXIuc2l6ZSgpKSk7CisK
KyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHAgLSBidWZmZXIuZGF0YSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3lzdGVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCA2MTc0NzBi
N2ZlOGI1ZTcxODg3MmM2YmNjMGY2MTllNjM2OTc0NjZjLi5lYzc1YTIxMDNhNTUwODczYzU3ZTQx
N2U2ZjMzMmUwOGI2OGQ3YWRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0
ZW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTcwLDYgKzE3MCw5
IEBAIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKIC8vIE1ldGhvZHMgZm9yIGRlYWxpbmcgd2l0aCBsb2FkYWJsZSBtb2R1bGVzCiBi
b29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSk7CiAKKy8vIEVuY29kZSBhIHN0cmluZyBm
b3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KK1N0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25z
dCBTdHJpbmcmKTsKKwogI2lmIFBMQVRGT1JNKFdJTikKIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggZmExODA3Y2NkMzU2YTEwNjJj
MjY3YWIwYjUzNGY2NjQ3MDY3MGZkNS4uYjAwNjk1YmQxMTUxMjgxYWVhNWQ0MGI4ZmQzZDYxZjky
N2RmYzVmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogICAgIDogbV9iYWNrZW5kKGJhY2tl
bmQpCisgICAgLCBtX2Rlc2NyaXB0aW9uKG1fYmFja2VuZC0+ZGVzY3JpcHRpb24oKSkKIHsKICAg
ICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUg
YWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmgKaW5kZXggNjkwMGVmZDQ0MGRjY2I4MTkyMDE4ZmUyNGJmMjUwZDk2NGIwZmVkNy4uMWFkM2M2
NWVjZmEwNzdjZDNkZmEzODY1NWJjNDY3YTk0ZGVkMDJiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKICAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0gICAg
U3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5kZXNjcmlwdGlv
bigpOyB9CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlw
dGlvbjsgfQogICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT52
ZXJzaW9uKCk7IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3Jlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+b2JqZWN0U3RvcmVzKCk7IH0KIApAQCAtNjUsNiAr
NjUsOCBAQCBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPik7CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBtX2JhY2tlbmQ7CisKKyAgICBTdHJpbmcgbV9kZXNjcmlwdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAppbmRleCAwOWI5ZGVlNjE1YjUyNmNkZGVmZmZmOGE3MjVjNzdmODBhMWFkNTZjLi5lNTUw
ZTE4Njk0ZTUwMzMyODA1N2FmMjMwOTYwZjExMDQ5MWQzNDQ1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yOSwyMiArMjksODkgQEAKICNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKIAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCi0gICAgOiBtX25hbWUo
bmFtZSkKLSAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCi0gICAgLCBtX3ZlcnNpb24o
dmVyc2lvbikKK3N0YXRpYyBib29sIGV4dHJhY3RNZXRhRGF0YShTUUxpdGVEYXRhYmFzZSogc3Fs
aXRlRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWROYW1lLCBTdHJpbmcmIGZvdW5kRGVz
Y3JpcHRpb24sIFN0cmluZyYgZm91bmRWZXJzaW9uKQogeworICAgIFNRTGl0ZVN0YXRlbWVudCBt
ZXRhRGF0YVF1ZXJ5KCpzcWxpdGVEYXRhYmFzZSwgIlNFTEVDVCBuYW1lLCBkZXNjcmlwdGlvbiwg
dmVyc2lvbiBGUk9NIE1ldGFEYXRhIik7CisgICAgaWYgKG1ldGFEYXRhUXVlcnkucHJlcGFyZSgp
ICE9IFNRTFJlc3VsdE9rIHx8IG1ldGFEYXRhUXVlcnkuc3RlcCgpICE9IFNRTFJlc3VsdFJvdykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1ldGFEYXRhUXVlcnkuZ2V0Q29sdW1u
VGV4dCgwKSAhPSBleHBlY3RlZE5hbWUpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJOYW1lIGluIE1l
dGFEYXRhICglcykgZG9lc24ndCBtYXRjaCBleHBlY3RlZCAoJXMpIGZvciBJbmRleGVkREIiLCBt
ZXRhRGF0YVF1ZXJ5LmdldENvbHVtblRleHQoMCkudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWROYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cisg
ICAgZm91bmREZXNjcmlwdGlvbiA9IG1ldGFEYXRhUXVlcnkuZ2V0Q29sdW1uVGV4dCgxKTsKKyAg
ICBmb3VuZFZlcnNpb24gPSBtZXRhRGF0YVF1ZXJ5LmdldENvbHVtblRleHQoMik7CisKKyAgICBp
ZiAobWV0YURhdGFRdWVyeS5zdGVwKCkgPT0gU1FMUmVzdWx0Um93KSB7CisgICAgICAgIExPR19F
UlJPUigiTW9yZSB0aGFuIG9uZSByb3cgZm91bmQgaW4gTWV0YURhdGEgdGFibGUiKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBib29sIHNldE1ldGFEYXRhKFNRTGl0ZURhdGFiYXNlKiBzcWxpdGVEYXRhYmFzZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJp
bmcmIHZlcnNpb24pCit7CisgICAgQVNTRVJUKCFuYW1lLmlzTnVsbCgpICYmICFkZXNjcmlwdGlv
bi5pc051bGwoKSAmJiAhdmVyc2lvbi5pc051bGwoKSk7CisKKyAgICBzcWxpdGVEYXRhYmFzZS0+
ZXhlY3V0ZUNvbW1hbmQoIkRFTEVURSBGUk9NIE1ldGFEYXRhIik7CisKKyAgICBTUUxpdGVTdGF0
ZW1lbnQgaW5zZXJ0KCpzcWxpdGVEYXRhYmFzZSwgIklOU0VSVCBJTlRPIE1ldGFEYXRhIChuYW1l
LCBkZXNjcmlwdGlvbiwgdmVyc2lvbikgVkFMVUVTICg/LCA/LCA/KSIpOworICAgIGlmIChpbnNl
cnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIHByZXBhcmUgTWV0YURhdGEgaW5zZXJ0IHN0YXRlbWVudCBmb3IgSW5kZXhlZERCIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnNlcnQuYmluZFRleHQoMSwgbmFt
ZSk7CisgICAgaW5zZXJ0LmJpbmRUZXh0KDIsIGRlc2NyaXB0aW9uKTsKKyAgICBpbnNlcnQuYmlu
ZFRleHQoMywgdmVyc2lvbik7CisKKyAgICBpZiAoaW5zZXJ0LnN0ZXAoKSAhPSBTUUxSZXN1bHRE
b25lKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGluc2VydCByb3cgaW50byBNZXRh
RGF0YSBmb3IgSW5kZXhlZERCIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGVyZSdzIG9ubHkgb25lIHJvdz8KKworICAg
IHJldHVybiB0cnVlOworfQorCitJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
UGFzc093blB0cjxTUUxpdGVEYXRhYmFzZT4gc3FsaXRlRGF0YWJhc2UpCisgICAgOiBtX3NxbGl0
ZURhdGFiYXNlKHNxbGl0ZURhdGFiYXNlKQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX3Zl
cnNpb24oIiIpCit7CisgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkpOworCisgICAgLy8gRklY
TUU6IFRoZSBzcGVjIGlzIGluIGZsdXggYWJvdXQgaG93IHRvIGhhbmRsZSBkZXNjcmlwdGlvbi4g
U3luYyBpdCB1cCBvbmNlIGEgZmluYWwgZGVjaXNpb24gaXMgbWFkZS4KKyAgICBTdHJpbmcgZm91
bmREZXNjcmlwdGlvbiA9ICIiOworICAgIGJvb2wgcmVzdWx0ID0gZXh0cmFjdE1ldGFEYXRhKG1f
c3FsaXRlRGF0YWJhc2UuZ2V0KCksIG1fbmFtZSwgZm91bmREZXNjcmlwdGlvbiwgbV92ZXJzaW9u
KTsKKyAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uaXNOdWxsKCkgPyBmb3VuZERlc2Ny
aXB0aW9uIDogZGVzY3JpcHRpb247CisKKyAgICBpZiAoIXJlc3VsdCB8fCBtX2Rlc2NyaXB0aW9u
ICE9IGZvdW5kRGVzY3JpcHRpb24pCisgICAgICAgIHNldE1ldGFEYXRhKG1fc3FsaXRlRGF0YWJh
c2UuZ2V0KCksIG1fbmFtZSwgbV9kZXNjcmlwdGlvbiwgbV92ZXJzaW9uKTsKIH0KIAogSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2VuZEltcGwoKQogewogfQogCit2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldERlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24pCit7CisgICAgaWYgKGRlc2NyaXB0aW9uID09IG1fZGVzY3JpcHRpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKyAgICBzZXRN
ZXRhRGF0YShtX3NxbGl0ZURhdGFiYXNlLmdldCgpLCBtX25hbWUsIG1fZGVzY3JpcHRpb24sIG1f
dmVyc2lvbik7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b2JqZWN0U3RvcmVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggNGQwMWE5M2QwNzE4NzAyNjhmMjE3
OWJjMzFhZjA3NjlmZGU5ZTM0Ni4uNjBiZWMxZjc4Nzg3Y2ExZWY5Y2JmNDgzMDVhOWM4OWYzNjVj
YTM5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC0zNSwx
NCArMzUsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTUUxpdGVEYXRhYmFz
ZTsKKwogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IGRh
dGFiYXNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKG5hbWUsIGRlc2NyaXB0aW9uLCB2ZXJzaW9uKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkZXNjcmlwdGlvbiwgZGF0
YWJhc2UpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpOwog
CisgICAgdm9pZCBzZXREZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKwog
ICAgIC8vIEltcGxlbWVudHMgSURCRGF0YWJhc2UKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24o
KSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CkBAIC01NCw3ICs1OCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0
b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiBw
cml2YXRlOgotICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIElE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBkYXRhYmFzZSk7CisKKyAgICBP
d25QdHI8U1FMaXRlRGF0YWJhc2U+IG1fc3FsaXRlRGF0YWJhc2U7CiAKICAgICBTdHJpbmcgbV9u
YW1lOwogICAgIFN0cmluZyBtX2Rlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9y
YWdlL0lEQkZhY3RvcnkuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKaW5kZXggNjE2
MTliOWI1ZWU3MGJjMWYzNTc2N2EzYmMwNGQ3ZDU0M2I4OTNlNi4uYTk2YWEzODIyZDRmYTkyNjM4
OGM1MTY5M2E4YjA5ZTFkZDY5MjAzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZh
Y3RvcnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5oCkBAIC01NCw3ICs1NCw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfklEQkZhY3RvcnkoKTsKIAotICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiA9IFN0cmluZygpKTsKIAogcHJpdmF0ZToKICAgICBJREJG
YWN0b3J5KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeS5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5pZGwK
aW5kZXggY2Q4ODdmMDA2YjZiZjEwYTk1ZjBmY2MzNWY0ZDY3YTRjYWVkNDA5Mi4uMjE1ZDY3YzY0
YjBlOTY0OTFhYWQxYjg4YzQxYjk2ZjBjY2QxZjg2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0lEQkZhY3RvcnkuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmlkbApA
QCAtMjgsNyArMjgsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAg
ICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogICAgIF0gSURCRmFjdG9yeSB7Ci0gICAg
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4g
RE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBkZXNjcmlwdGlvbik7CisgICAgICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5n
IG5hbWUsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIGRlc2NyaXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDdiZGQ3MGQzMDgxNTY4MzZiZmU3Y2YyZmE2YmQw
ZjFiZDllMjllMmIuLjkwNTcyNmZjOThiNzI4YjQwYmJmOTgzZjY4YjVjMmRkZTcyMjhkM2MgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0zMCw3ICszMCwx
MCBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogCiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpA
QCAtMzksMzEgKzQyLDc0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJ
REJGYWN0b3J5QmFja2VuZEltcGw+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCkKK0lE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6SURCRmFjdG9yeUJhY2tlbmRJbXBsKCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkZhY3RvcnlCYWNrZW5kSW1wbCk7CiB9CiAKLUlEQkZhY3RvcnlC
YWNrZW5kSW1wbDo6SURCRmFjdG9yeUJhY2tlbmRJbXBsKCkKK0lEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6fklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCiB7CiB9CiAKLUlEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6fklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCitzdGF0aWMgUGFzc093blB0cjxTUUxpdGVEYXRh
YmFzZT4gb3BlblNRTGl0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
U3RyaW5nIG5hbWUpCiB7CisgICAgU3RyaW5nIHBhdGhCYXNlID0gIi90bXAvdGVtcG9yYXJ5LWlu
ZGV4ZWQtZGItZmlsZXMiOyAvLyBGSVhNRTogV3JpdGUgYSBQYWdlR3JvdXBTZXR0aW5ncyBjbGFz
cyBhbmQgaGF2ZSB0aGlzIHZhbHVlIGNvbWUgZnJvbSB0aGF0LgorICAgIGlmICghbWFrZUFsbERp
cmVjdG9yaWVzKHBhdGhCYXNlKSkgeworICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IG90
aGVyIHRoaW5nIHdlIGNvdWxkIHBvc3NpYmx5IGRvIHRvIHJlY292ZXIgYXQgdGhpcyBwb2ludD8g
SWYgc28sIGRvIGl0IHJhdGhlciB0aGFuIGp1c3QgZXJyb3Jpbmcgb3V0LgorICAgICAgICBMT0df
RVJST1IoIlVuYWJsZWQgdG8gY3JlYXRlIExvY2FsU3RvcmFnZSBkYXRhYmFzZSBwYXRoICVzIiwg
cGF0aEJhc2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCk7CisgICAgU3RyaW5nIHNhbnRpemVkTmFtZSA9IGVuY29kZUZvckZpbGVOYW1lKG5h
bWUpOworICAgIFN0cmluZyBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhCYXNl
LCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiXyIgKyBzYW50aXplZE5hbWUgKyAiLmluZGV4ZWRkYiIp
OworICAgIAorICAgIE93blB0cjxTUUxpdGVEYXRhYmFzZT4gc3FsaXRlRGF0YWJhc2UgPSBhZG9w
dFB0cihuZXcgU1FMaXRlRGF0YWJhc2UoKSk7CisgICAgaWYgKCFzcWxpdGVEYXRhYmFzZS0+b3Bl
bihwYXRoKSkgeworICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IG90aGVyIHRoaW5nIHdl
IGNvdWxkIHBvc3NpYmx5IGRvIHRvIHJlY292ZXIgYXQgdGhpcyBwb2ludD8gSWYgc28sIGRvIGl0
IHJhdGhlciB0aGFuIGp1c3QgZXJyb3Jpbmcgb3V0LgorICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIGRhdGFiYXNlIGZpbGUgJXMgZm9yIEluZGV4ZWREQiIsIHBhdGgudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBzcWxpdGVEYXRh
YmFzZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1l
KikKK3N0YXRpYyBib29sIGNyZWF0ZVRhYmxlcyhTUUxpdGVEYXRhYmFzZSogc3FsaXRlRGF0YWJh
c2UpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbW1hbmRzW10gPSB7CisgICAgICAgICJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBNZXRhRGF0YSAobmFtZSBURVhULCBkZXNjcmlwdGlv
biBURVhULCB2ZXJzaW9uIFRFWFQpIgorICAgICAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcnJheXNpemUoY29tbWFuZHMpOyArK2kpIHsKKyAgICAgICAgaWYgKCFzcWxpdGVE
YXRhYmFzZS0+ZXhlY3V0ZUNvbW1hbmQoY29tbWFuZHNbaV0pKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHRyeSB0byByZWNvdmVyIGZyb20gdGhpcyBzaXR1YXRpb24uIE1heWJl
IG51a2UgdGhlIGRhdGFiYXNlIGFuZCBzdGFydCBvdmVyPworICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3IgSW5kZXhlZERCOiAlcyIs
IGNvbW1hbmRzW2ldKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiwgRnJhbWUqKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZChuYW1lKTsKLSAgICBpZiAoaXQg
PT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQg
c2hvdWxkIHRoZSB2ZXJzaW9uIGJlPyAgVGhlIHNwZWMgZG9lc24ndCBkZWZpbmUgaXQgeWV0Lgot
ICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUo
bmFtZSwgZGVzY3JpcHRpb24sICIiKTsKLSAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0
KG5hbWUsIGRhdGFiYXNlQmFja2VuZCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGRhdGFiYXNlQmFj
a2VuZCA9IGl0LT5zZWNvbmQ7Ci0KLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFzZUJh
Y2tlbmQucmVsZWFzZSgpKTsKKyAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5k
KCkpIHsKKyAgICAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsgLy8gVGhlIGRlc2NyaXB0aW9u
IG1heSBoYXZlIGNoYW5nZWQuCisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGl0LT5zZWNv
bmQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IEV2ZXJ5
dGhpbmcgZnJvbSBub3cgb24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCisKKyAg
ICBPd25QdHI8U1FMaXRlRGF0YWJhc2U+IHNxbGl0ZURhdGFiYXNlID0gb3BlblNRTGl0ZURhdGFi
YXNlKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBuYW1lKTsKKyAgICBpZiAoIXNxbGl0ZURhdGFiYXNl
IHx8ICFjcmVhdGVUYWJsZXMoc3FsaXRlRGF0YWJhc2UuZ2V0KCkpKSB7CisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2Vu
ZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBkZXNjcmlwdGlvbiwgc3Fs
aXRlRGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFz
ZUJhY2tlbmQuZ2V0KCkpOworICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldChuYW1lLCBkYXRh
YmFzZUJhY2tlbmQucmVsZWFzZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IDI3MGZiNzVjOTE5NDljMTU2
Zjc4MzllMGNlYTk5NzQ4N2U5YzlmZWQuLmU4N2VhMzllY2ZjMmVkMDZiY2NkNDkyYzJhMmQ0MDBl
OGJhYmE2ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZElt
cGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTM3
LDEwICszNywxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0
OworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDsKIAogY2xhc3MgSURCRmFjdG9yeUJhY2tl
bmRJbXBsIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IGNyZWF0ZSgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRmFjdG9yeUJhY2tlbmRJbXBsKCkpOwor
ICAgIH0KICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEltcGwoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
RnJhbWUqKTsKQEAgLTQ4LDcgKzUyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJGYWN0
b3J5QmFja2VuZEltcGwoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+ID4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiA+
IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9kYXRh
YmFzZUJhY2tlbmRNYXA7CiAKICAgICAvLyBXZSBvbmx5IGNyZWF0ZSBvbmUgaW5zdGFuY2Ugb2Yg
dGhpcyBjbGFzcyBhdCBhIHRpbWUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64119</attachid>
            <date>2010-08-11 08:49:29 -0700</date>
            <delta_ts>2010-08-17 08:28:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43744-20100811164927.patch</filename>
            <type>text/plain</type>
            <size>41441</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkY2U1ZWI0ZjU3MjQ4ZDQ5MzJkZTkwZTk0MzhhYjRlZTU3Mjk4Nzc0Li4zMTU1YWM3
MzZiNmUwYjJmOWM2ZTBiYTA2NTA1MWNlZWU4NzZkZThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDgtMDkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVnaW5uaW5ncyBvZiBJ
bmRleGVkREIgcGVyc2lzdGFuY2UgKyBJREJEYXRhYmFzZS5kZXNjcmlwdGlvbiBmbGVzaGVkIG91
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDQK
KworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCBmb3IgSURCRGF0YWJhc2UuZGVzY3JpcHRpb24u
CisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRl
c2NyaXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Njcmlw
dC10ZXN0cy9kYXRhYmFzZS1kZXNjcmlwdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKGZpcnN0U3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRTdWNjZXNzKToKKyAgICAg
ICAgKHRoaXJkU3VjY2Vzcyk6CisKIDIwMTAtMDgtMTEgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBDaHJvbWl1bSByZWJhc2VsaW5lLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVzY3Jp
cHRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2UtZGVzY3JpcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MGQzM2Q4MWNjODg4YTAy
NTA1NmQ3ZjcyYWQzZDdmNmMxYTAxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw3NCBAQAorVGVzdCBJREJGYWN0b3J5Lm9wZW4ncyBkZXNjcmlwdGlvbiBwYXJhbWV0ZXIu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdpbmRleGVkREInIGluIHdp
bmRvdyBpcyB0cnVlCitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIu
b3BlbignYWJjZCcsICdmaXJzdCcpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
CitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnYWJvcnQnIGluIHJlc3Vs
dCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQg
c2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVz
dWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFT
UyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMg
dHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3Mn
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQorUEFTUyAnYWJvcnQnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFk
eVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlT
dGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIGV2ZW50LnJlc3VsdC5kZXNjcmlwdGlv
biBpcyAiZmlyc3QiCitpbmRleGVkREIub3BlbignYWJjZCcsICdzZWNvbmQnKQorUEFTUyAnb25z
dWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRy
dWUKK1BBU1MgJ2Fib3J0JyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4g
cmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2Vz
cyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29k
ZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQ
QVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwg
aXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAn
b25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ2Fib3J0JyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFT
UyBmaXJzdERCLmRlc2NyaXB0aW9uIGlzICJmaXJzdCIKK1BBU1Mgc2Vjb25kREIuZGVzY3JpcHRp
b24gaXMgInNlY29uZCIKK2luZGV4ZWREQi5vcGVuKCdhYmNkJykKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNT
ICdhYm9ydCcgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBp
cyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQg
ZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2
ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291
cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUK
K1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3In
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdhYm9ydCcgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2
ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZmlyc3RE
Qi5kZXNjcmlwdGlvbiBpcyAiZmlyc3QiCitQQVNTIHNlY29uZERCLmRlc2NyaXB0aW9uIGlzICJz
ZWNvbmQiCitQQVNTIGV2ZW50LnJlc3VsdC5kZXNjcmlwdGlvbiBpcyAic2Vjb25kIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1kZXNjcmlwdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNhNmE0ZDYwMmZjY2I5YWRkMWM0MGNjYjdlNzFkYmMyZmQwMDg2Y2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1k
ZXNjcmlwdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvZGF0YWJhc2UtZGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL2Rh
dGFiYXNlLWRlc2NyaXB0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2Ny
aXB0LXRlc3RzL2RhdGFiYXNlLWRlc2NyaXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNGFjYmE2YjBj
MDk2MjlhZDhmMDgwY2QyMjAyY2JlMWJiNWFkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zY3JpcHQtdGVzdHMvZGF0YWJhc2UtZGVzY3JpcHRpb24u
anMKQEAgLTAsMCArMSw1NiBAQAorZGVzY3JpcHRpb24oIlRlc3QgSURCRmFjdG9yeS5vcGVuJ3Mg
ZGVzY3JpcHRpb24gcGFyYW1ldGVyLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ2luZGV4ZWREQicgaW4gd2luZG93Iik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdhYmNkJywgJ2ZpcnN0JykiKTsKKyAgICB2ZXJpZnlS
ZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZmlyc3RTdWNjZXNzOworICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGZpcnN0U3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3
aW5kb3cuZmlyc3REQiA9IGV2ZW50LnJlc3VsdDsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZXZlbnQucmVzdWx0LmRlc2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisKKyAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignYWJjZCcsICdzZWNvbmQnKSIpOworICAgIHZlcmlm
eVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZWNvbmRTdWNjZXNzOwor
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHNlY29uZFN1Y2Nlc3MoKQoreworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Cisg
ICAgd2luZG93LnNlY29uZERCID0gZXZlbnQucmVzdWx0OworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdmaXJzdERCLmRlc2NyaXB0aW9uJywgJ2ZpcnN0Jyk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdzZWNvbmREQi5kZXNjcmlwdGlvbicsICdzZWNvbmQnKTsKKworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdhYmNkJykiKTsKKyAgICB2ZXJpZnlSZXN1
bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gdGhpcmRTdWNjZXNzOworICAgIHJl
c3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRo
aXJkU3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZmlyc3REQi5kZXNjcmlwdGlvbicsICdmaXJzdCcpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnc2Vjb25kREIuZGVzY3JpcHRpb24nLCAnc2Vjb25kJyk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5yZXN1bHQuZGVzY3JpcHRpb24nLCAn
c2Vjb25kJyk7CisKKyAgICBkb25lKCk7Cit9CisKK3Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3Jl
L0FuZHJvaWQubWsKaW5kZXggYWM4OTRmMTEzNGY1OWYxYmQ1NDg3ZTk5YTcxMzkzZDdkNWVjMGJi
Yi4uMWEzMGRjNmZkZDIxOWZhZjFiMmUwMmVhNmMxZGU2NzkyYjAzNGE2YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtNDE0LDYgKzQx
NCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXBsYXRmb3Jt
L0RyYWdEYXRhLmNwcCBcCiAJcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCiAJcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwIFwKKwlwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCiAJcGxhdGZvcm0vR2Vv
bG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAJcGxhdGZvcm0vS1VSTC5jcHAgXAogCXBsYXRmb3JtL0tV
UkxHb29nbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc1NDQ1YzIwMjA4OWJmMzBiNTQ2Y2Y1NjYyNDUyMTI4
Mjk5N2JhNzIuLmVjMDA3MGFjNzc1YTIwNjk1OGJmYjEwMjE4ZDRiMDE1NGU5MTEyNWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTIwNiw2ICsxMjA2LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L0RyYWdEYXRhLmNwcAogICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5jcHAKKyAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAogICAgIHBsYXRmb3Jt
L0dlb2xvY2F0aW9uU2VydmljZS5jcHAKICAgICBwbGF0Zm9ybS9LVVJMLmNwcAogICAgIHBsYXRm
b3JtL0tpbGxSaW5nTm9uZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiMmI4NTViYzhkMDJlMDVhZDMzNTFiODliZDM1NTkxYTdi
MDMwMy4uMGYzNjM2MzY5NTU1OGU2NmM2MzEwNTQ2Yzg3NmQ3ZTBlNTIyY2VhOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MSBAQAorMjAxMC0wOC0xMSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBCZWdpbm5pbmdzIG9mIEluZGV4ZWREQiBwZXJzaXN0YW5jZSArIElEQkRhdGFiYXNl
LmRlc2NyaXB0aW9uIGZsZXNoZWQgb3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Mzc0NAorCisgICAgICAgIFRoZSBiZWdpbm5pbmdzIG9mIGEgU1FM
aXRlIGJhY2tlbmQgZm9yIEluZGV4ZWREQi4gIFJpZ2h0IG5vdywgb25seSBwZXJzaXN0cworICAg
ICAgICBtZXRhLWRhdGEgZm9yIHRoZSBkYXRhYmFzZS4gIFRoZSByZXN0IGlzIGNvbWluZyBpbiBm
dXR1cmUgcGF0Y2hlcy4gIEFkZHMKKyAgICAgICAgYSBtYW51YWwgdGVzdCB0byB2ZXJpZnkgcGVy
c2lzdGFuY2UuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVz
Y3JpcHRpb24uaHRtbAorICAgICAgICAgICAgICArIGEgbWFudWFsIHRlc3QKKworICAgICAgICAq
IEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvaW5kZXhlZC1kYXRhYmFzZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRFc2NhcGVVQ2hhcik6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVG
b3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWV0
YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWV0YURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXREZXNjcmlwdGlvbik6Cisg
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCRmFjdG9yeS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5pZGw6CisgICAgICAg
ICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjp+SURCRmFjdG9yeUJhY2tlbmRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVUYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorCiAyMDEwLTA4
LTExICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNmVmZWE4NTQ5OTkxMzBiOTY0OTEy
MGE5NTBmYzA4OTI2MDRlMTU1MS4uNGU5MGE4NzI3NGU3ZjYyOTUzNWY1NWY1NTI5N2FhYTVlYTFh
Njc2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xOTAzLDYgKzE5MDMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vRXZlbnRMb29wLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXAorCVdlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMGMyZDE0MGFjNmJiZmQ3M2Y3NTVj
Mzc5MDAzYzA3MjE5ZTUwYjAzLi5lMDcyYzI2YjFhNTRkYjI2ZWY4N2Q1OWJhYWU3ZGMxNGI5MjVi
NTgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzAyMSw2ICszMDIxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9FdmVu
dExvb3AuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZUNob29zZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9G
aWxlU3lzdGVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRmlsZVN5c3RlbS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9GbG9hdENvbnZlcnNpb24uaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwZTYzYWY4YTE2NzE4MDBhN2M0NDll
MmE4NzkwNTI0NGM2MmNmZjcyLi5hNjMzM2MzZDJhNzljZjI3NTFhNWM0OGY3Mzg1ZmNmYTQ0NmUx
NjBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTg4Miw2ICs4ODIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9EcmFn
RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcCBcCisgICAgcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgXAogICAgIHBsYXRm
b3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3F0L1JHQkEzMkJ1ZmZlclF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2Ny
aXB0aW9uLmNwcCBcCkBAIC0xNjU4LDYgKzE2NTksNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0
Zm9ybS9EcmFnRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9EcmFnSW1hZ2UuaCBcCiAgICAgcGxhdGZv
cm0vRmlsZUNob29zZXIuaCBcCisgICAgcGxhdGZvcm0vRmlsZVN5c3RlbS5oIFwKICAgICBwbGF0
Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggY2YwOTg4
YWI1OThmOTcxMDE1ODI2MWYzOGMxM2U0MWI3ZWFhYTgyMy4uZDA4NjhkYTNlYmM1Y2YyMTgzNTAz
MmZhYWRkMDgxZTVmNzgzODdmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0yMzM0MSw2ICsyMzM0MSwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxGaWxlU3lzdGVtLmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXEZp
bGVTeXN0ZW0uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxZmE3M2Y2ZmNhM2QxZjRlNjFhOWE3M2Y3YjM2NGU2
NzRkODNlYzkuLjFmN2EwY2VkMTM3NzA1OTE0OTYzNmM2M2EzNmNjMmMyZWQ3NjkzOGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTc3LDYgKzQ5Nzcs
NyBAQAogCQlDNTcyRUUwRjEyMDFDNzM2MDA3RDhGODIgLyogSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTcy
RUUwOTEyMDFDNzM2MDA3RDhGODIgLyogSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmggKi87IH07
CiAJCUM1NzJFRTFFMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NzJFRTFDMTIwMUM5QkMwMDdE
OEY4MiAvKiBKU0lEQkluZGV4LmNwcCAqLzsgfTsKIAkJQzU3MkVFMUYxMjAxQzlCQzAwN0Q4Rjgy
IC8qIEpTSURCSW5kZXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NzJFRTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi87IH07CisJ
CUM1N0ZFREUxMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1N0ZFREUwMTIxMkVFOUMwMDk3QkU2
NSAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQzU4NUE2NUUxMUQ0RkFCMjAwNEMzRTRCIC8q
IEpTSURCQW55Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1ODVBNjVDMTFENEZBQjIwMDRDM0U0QiAvKiBKU0lEQkFueUN1c3RvbS5jcHAg
Ki87IH07CiAJCUM1ODVBNjVGMTFENEZBQjIwMDRDM0U0QiAvKiBKU0lEQktleUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTY1RDEx
RDRGQUIyMDA0QzNFNEIgLyogSlNJREJLZXlDdXN0b20uY3BwICovOyB9OwogCQlDNTg1QTY2MjEx
RDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIg
LyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgKi87IH07CkBAIC0xMDczMSw2ICsxMDczMiw3IEBA
CiAJCUM1NzJFRTA5MTIwMUM3MzYwMDdEOEY4MiAvKiBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NzJFRTFDMTIwMUM5QkMwMDdE
OEY4MiAvKiBKU0lEQkluZGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSURCSW5kZXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTcyRUUx
RDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0lEQkluZGV4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1
N0ZFREUwMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTg1QTY1QzExRDRGQUIyMDA0QzNFNEIgLyogSlNJREJBbnlDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJBbnlDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTg1QTY1RDExRDRGQUIyMDA0QzNFNEIg
LyogSlNJREJLZXlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJREJLZXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTg1
QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDYzLDYgKzE2NDY1LDcgQEAKIAkJCQkxQ0Ex
OUUxNTBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29wLmggKi8sCiAJCQkJOTM0RkU5RTQwQjVD
QTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLywKIAkJCQkwNjZDNzcyQTBBQjYwM0I3
MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCAqLywKKwkJCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JF
NjUgLyogRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8q
IEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRD
b252ZXJzaW9uLmggKi8sCiAJCQkJQkMzQkMyOUIwRTkxQUIwRjAwODM1NTg4IC8qIEhvc3RXaW5k
b3cuaCAqLywKQEAgLTIwMjE1LDcgKzIwMjE4LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQlj
b21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24g
PSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lv
bnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTIyNTgzLDYgKzIyNTg1LDcgQEAKIAkJCQkyRUVENTc1
NTEyMTA5RUQwMDA3NjU2QkIgLyogQmxvYlVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUVE
NTc1QjEyMTA5RUYzMDA3NjU2QkIgLyogQmxvYkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTc4QjZGQzkxMjEyODgyMTAwMTU5NUVGIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUM1N0ZFREUxMTIxMkVFOUMwMDk3QkU2NSAvKiBGaWxlU3lzdGVtLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9tYW51YWwtdGVzdHMvaW5kZXhl
ZC1kYXRhYmFzZS5odG1sIGIvV2ViQ29yZS9tYW51YWwtdGVzdHMvaW5kZXhlZC1kYXRhYmFzZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwZmIzODE0ZDcwOTljNDg3NjA4N2QwZTQ1NTJiZDU1NWE3NDdkMzQK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9pbmRleGVkLWRhdGFiYXNl
Lmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0
IHRoYXQgb25seSBhcHBsaWVzIHRvIEluZGV4ZWREQi4gIDxzcGFuIGlkPWVuYWJsZWQ+T3VyIHRl
c3QgZm9yIHdoZXRoZXIgeW91IGhhdmUgaXQgZW5hYmxlZCBzZWVtcyB0byBoYXZlIGZhaWxlZC48
L3NwYW4+PC9wPgorCis8cD5UaGlzIHBhZ2Ugb3BlbnMgdXAgYSBkYXRhYmFzZSB3aXRoIHRoZSBu
YW1lICJuYW1lIiBhbmQgYSBkZXNjcmlwdGlvbiBvZiAiZGVzY3JpcHRpb24iLiAgUmVzdWx0IG9m
IG9wZW46IDxzcGFuIGlkPXJlc3VsdD5QZW5kaW5nLi4uPC9zcGFuPjwvcD4KKworPHA+VGhlIGZp
cnN0IHRpbWUgeW91IG9wZW4gdGhpcyBwYWdlIHVwLCB0aGUgbWVzc2FnZSBzaG91bGQgYmUgYSBz
dWNjZXNzLiAgTm93LCBsZXRzIG1ha2UgaXQgZmFpbC4gIEZpbmQgd2hlcmUgdGhlIGFzc29jaWF0
ZWQgLmluZGV4ZWRkYiBmaWxlIGlzCisgICBmb3IgdGhpcyBwYWdlLCByZXBsYWNlIGl0IHdpdGgg
c29tZXRoaW5nIHRoYXQncyBub3QgYSBzcWxpdGUgZGF0YWJhc2UsIGFuZCBtYWtlIGl0IHJlYWQg
b25seSB0byB5b3VyIHVzZXIuICBOb3cgY2xvc2UgYW5kIHJlLW9wZW4gdGhlIGJyb3dzZXIuCisg
ICBXaGVuIHlvdSByZS1vcGVuIGl0LCB5b3Ugc2hvdWxkIGdldCBhbiBpbnRlcm5hbCBlcnJvciBm
cm9tIHRoZSBwYWdlLjwvcD4KKworPHA+Tm93IGRlbGV0ZSBhbGwgSW5kZXhlZERCIGZpbGVzIChp
bmNsdWRpbmcgdGhlIG9uZSB5b3UganVzdCBtYWRlKSwgcmVzdGFydCB0aGUgYnJvd3NlciwgYW5k
IGNvbWUgYmFjayB0byB0aGlzIHBhZ2UuICBJdCBzaG91bGQgc3RhcnQgdXAgZmluZSBhZ2Fpbi48
L3A+CisKKzxwPk5vdyBjbGljayA8YSBocmVmPSJqYXZhc2NyaXB0OnVwZGF0ZURlc2NyaXB0aW9u
KCkiPmhlcmU8L2E+LCBjbG9zZSB0aGUgYnJvd3NlciwgY29tZSBiYWNrLCBhbmQgY2xpY2sgPGEg
aHJlZj0iamF2YXNjcmlwdDpyZWFkRGVzY3JpcHRpb24oKSI+aGVyZTwvYT4uICBJZiBldmVyeXRo
aW5nIHdvcmtlZCB3ZWxsLCB0aGlzIHNob3VsZCBiZSBhIHN1Y2Nlc3MgaGVyZTogPHNwYW4gaWQ9
ZGVzY3JpcHRpb24+Li4uPC9zcGFuPjwvcD4KKworPHA+VGhhdCdzIGl0ITwvcD4KKworPHNjcmlw
dD4KKworICAgIGlmICghKCdpbmRleGVkREInIGluIHdpbmRvdykpCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJlbmFibGVkIikuaW5uZXJIVE1MID0gIjxmb250IGNvbG9yPXJlZD5Z
b3VyIGJ1aWxkIGRvZXMgTk9UIHNlZW0gdG8gaGF2ZSBpdCBlbmFibGVkLiAgU28gYWxsIGNvZGUg
b24gdGhpcyBwYWdlIGlzIGRpc2FibGVkLjwvZm9udD4iOworICAgIGVsc2UgeworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZW5hYmxlZCIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xv
cj1ncmVlbj5Zb3VyIGJ1aWxkIHNlZW1zIHRvIGhhdmUgaXQgZW5hYmxlZC48L2ZvbnQ+IjsKKwor
ICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oIm5hbWUiKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiPGZvbnQgY29sb3I9Z3JlZW4+U3VjY2VzcyE8
L2ZvbnQ+IjsKKyAgICAgICAgICAgIHdpbmRvdy5uYW1lREIgPSBldmVudC5yZXN1bHQ7CisgICAg
ICAgIH07CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICI8Zm9udCBj
b2xvcj1yZWQ+RXJyb3I6ICIgKyBldmVudC5tZXNzYWdlICsgIi48L2ZvbnQ+IjsKKyAgICAgICAg
fTsKKworICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oImFub3RoZXIiLCAidGVzdCBv
ZiB0aGUgZGVzY3JpcHRpb24gYXR0cmlidXRlIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3aW5kb3cuYW5vdGhlckRCID0gZXZlbnQucmVz
dWx0OworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIHVwZGF0ZURlc2NyaXB0aW9u
KCkKKyAgICB7CisgICAgICAgIGluZGV4ZWREQi5vcGVuKCJuYW1lIiwgInRlc3Qgb2YgdGhlIGRl
c2NyaXB0aW9uIGF0dHJpYnV0ZSIpOworICAgICAgICBpbmRleGVkREIub3BlbigiYW5vdGhlciIs
ICJ4eXoiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZWFkRGVzY3JpcHRpb24oKQorICAgIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5uYW1lREIuZGVzY3JpcHRpb24gIT0gInRlc3Qgb2YgdGhlIGRl
c2NyaXB0aW9uIGF0dHJpYnV0ZSIpIHsKKyAgICAgICAgICAgIC8vIFNpbmNlIHdlIHBhc3NlZCBp
biBub3RoaW5nLCB0aGUgZGVzY3JpcHRpb24gc2hvdWxkIG5vdCBiZSByZXNldC4KKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICI8
Zm9udCBjb2xvcj1yZWQ+RmFpbHVyZTogKERhdGFiYXNlICduYW1lJyB3YXMgdGhpczogIiArIHdp
bmRvdy5uYW1lREIuZGVzY3JpcHRpb24gKyAiKS48L2ZvbnQ+IjsKKyAgICAgICAgfSBlbHNlIGlm
ICh3aW5kb3cuYW5vdGhlckRCLmRlc2NyaXB0aW9uICE9ICJ0ZXN0IG9mIHRoZSBkZXNjcmlwdGlv
biBhdHRyaWJ1dGUiKSB7CisgICAgICAgICAgICAvLyBCdXQgaW4gdGhpcyBjYXNlIHdlIGRpZCBw
YXNzIHNvbWV0aGluZyBpbiwgc28gaXQgc2hvdWxkIGhhdmUgYmVlbiByZXNldC4KKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICI8
Zm9udCBjb2xvcj1yZWQ+RmFpbHVyZTogKERhdGFiYXNlICdhbm90aGVyJyB3YXMgdGhpczogIiAr
IHdpbmRvdy5hbm90aGVyREIuZGVzY3JpcHRpb24gKyAiKS48L2ZvbnQ+IjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbigiYW5vdGhlciIsICIx
MjMiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgLy8gQW5kIGhlcmUgaXQgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBhZ2Fpbi4K
KyAgICAgICAgICAgICAgICBpZiAoZXZlbnQucmVzdWx0LmRlc2NyaXB0aW9uICE9ICIxMjMiKQor
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24i
KS5pbm5lckhUTUwgPSAiPGZvbnQgY29sb3I9cmVkPkZhaWx1cmU6IChEYXRhYmFzZSAnYW5vdGhl
cicgd2FzIHRoaXM6ICIgKyBldmVudC5yZXN1bHQuZGVzY3JpcHRpb24gKyAiKS48L2ZvbnQ+IjsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5T
dWNjZXNzITwvZm9udD4iOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0KKworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwIGIvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA4N2Iz
ZWQyYmIzOTc3Nzc1YzdlNzk0NWNhMmJlMWMzNWY0YWU0ZDc2Li5lNDE3ODM2NzY1OTU4ZWViZGU3
NjgzMWZiOTdjNWI1ZTVlZTBlOWNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIk9yaWdpbkFjY2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAg
LTM5OSw4NSArNDAwLDEyIEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0CiAgICAgcmV0dXJuIGNy
ZWF0ZShLVVJMKEtVUkwoKSwgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6
Om51bWJlcihwb3J0KSkpOwogfQogCi0vLyBUaGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJh
Y3RlcnMgbmVlZCBlc2NhcGluZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUKLS8vIGFjcm9zcyBh
bGwgc3lzdGVtcywgaW5jbHVkaW5nIFdpbmRvd3M6Ci0vLyAgICAgLSBVbnByaW50YWJsZSBBU0NJ
SSAoMDAtMUYpCi0vLyAgICAgLSBTcGFjZSAgICAgICAgICAgICAoMjApCi0vLyAgICAgLSBEb3Vi
bGUgcXVvdGUgICAgICAoMjIpCi0vLyAgICAgLSBQZXJjZW50ICAgICAgICAgICAoMjUpIChlc2Nh
cGVkIGJlY2F1c2UgaXQgaXMgb3VyIGVzY2FwZSBjaGFyYWN0ZXIpCi0vLyAgICAgLSBBc3Rlcmlz
ayAgICAgICAgICAoMkEpCi0vLyAgICAgLSBTbGFzaCAgICAgICAgICAgICAoMkYpCi0vLyAgICAg
LSBDb2xvbiAgICAgICAgICAgICAoM0EpCi0vLyAgICAgLSBMZXNzLXRoYW4gICAgICAgICAoM0Mp
Ci0vLyAgICAgLSBHcmVhdGVyLXRoYW4gICAgICAoM0UpCi0vLyAgICAgLSBRdWVzdGlvbiBNYXJr
ICAgICAoM0YpCi0vLyAgICAgLSBCYWNrc2xhc2ggICAgICAgICAoNUMpCi0vLyAgICAgLSBQaXBl
ICAgICAgICAgICAgICAoN0MpCi0vLyAgICAgLSBEZWxldGUgICAgICAgICAgICAoN0YpCi0KLXN0
YXRpYyBjb25zdCBib29sIG5lZWRzRXNjYXBpbmdbMTI4XSA9IHsKLSAgICAvKiAwMC0wNyAqLyB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCi0g
ICAgLyogMDgtMEYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgIHRydWUsIAotCi0gICAgLyogMTAtMTcgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAotICAgIC8qIDE4LTFGICovIHRydWUsICB0
cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKLQotICAgIC8q
IDIwLTI3ICovIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNl
LCBmYWxzZSwgCi0gICAgLyogMjgtMkYgKi8gZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIAotICAgIAotICAgIC8qIDMwLTM3ICovIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyog
MzgtM0YgKi8gZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwg
IHRydWUsIAotICAgIAotICAgIC8qIDQwLTQ3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNDgtNEYgKi8gZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgIAotICAg
IC8qIDUwLTU3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgCi0gICAgLyogNTgtNUYgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgIAotICAgIC8qIDYwLTY3ICovIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAg
LyogNjgtNkYgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLAotICAgIAotICAgIC8qIDcwLTc3ICovIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgCi0gICAgLyogNzgtN0YgKi8gZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsIAotfTsKLQot
c3RhdGljIGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaGFyIGMpCi17Ci0gICAgcmV0
dXJuIGMgPiAxMjcgPyBmYWxzZSA6IG5lZWRzRXNjYXBpbmdbY107Ci19Ci0KLXN0YXRpYyBjb25z
dCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7Ci0KLXN0YXRpYyBTdHJp
bmcgZW5jb2RlZEhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQotewotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGhvc3QubGVuZ3RoKCk7Ci0gICAgVmVjdG9yPFVDaGFyLCA1MTI+IGJ1ZmZlcihsZW5ndGgg
KiAzICsgMSk7Ci0gICAgVUNoYXIqIHAgPSBidWZmZXIuZGF0YSgpOwotCi0gICAgY29uc3QgVUNo
YXIqIHN0ciA9IGhvc3QuY2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBzdHJFbmQgPSBz
dHIgKyBsZW5ndGg7Ci0KLSAgICB3aGlsZSAoc3RyIDwgc3RyRW5kKSB7Ci0gICAgICAgIFVDaGFy
IGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChzaG91bGRFc2NhcGVVQ2hhcihjKSkgewotICAgICAg
ICAgICAgKnArKyA9ICclJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhEaWdpdHNbKGMgPj4gNCkg
JiAweEZdOwotICAgICAgICAgICAgKnArKyA9IGhleERpZ2l0c1tjICYgMHhGXTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAqcCsrID0gYzsKLSAgICB9Ci0KLSAgICBBU1NFUlQocCAtIGJ1
ZmZlci5kYXRhKCkgPD0gc3RhdGljX2Nhc3Q8aW50PihidWZmZXIuc2l6ZSgpKSk7Ci0KLSAgICBy
ZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHAgLSBidWZmZXIuZGF0YSgpKTsKLX0KLQogU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdCAKIHsKICAgICBT
dHJpbmcgc2VwYXJhdG9yU3RyaW5nKCZTZXBhcmF0b3JDaGFyYWN0ZXIsIDEpOwogCiAgICAgaWYg
KG1fZW5jb2RlZEhvc3QuaXNFbXB0eSgpKQotICAgICAgICBtX2VuY29kZWRIb3N0ID0gZW5jb2Rl
ZEhvc3QobV9ob3N0KTsKKyAgICAgICAgbV9lbmNvZGVkSG9zdCA9IGVuY29kZUZvckZpbGVOYW1l
KG1faG9zdCk7CiAKICAgICByZXR1cm4gbV9wcm90b2NvbCArIHNlcGFyYXRvclN0cmluZyArIG1f
ZW5jb2RlZEhvc3QgKyBzZXBhcmF0b3JTdHJpbmcgKyBTdHJpbmc6Om51bWJlcihtX3BvcnQpOyAK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMWY4YWFiOWNmYmE4MWMzYTY5
ZjRkOThkMjEyMjFmYWIzOTBkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTeXN0ZW0uY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8v
IFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRvIGJl
IHVzZWQgaW4gYSBmaWxlbmFtZQorLy8gYWNyb3NzIGFsbCBzeXN0ZW1zLCBpbmNsdWRpbmcgV2lu
ZG93czoKKy8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikKKy8vICAgICAtIFNwYWNl
ICAgICAgICAgICAgICgyMCkKKy8vICAgICAtIERvdWJsZSBxdW90ZSAgICAgICgyMikKKy8vICAg
ICAtIFBlcmNlbnQgICAgICAgICAgICgyNSkgKGVzY2FwZWQgYmVjYXVzZSBpdCBpcyBvdXIgZXNj
YXBlIGNoYXJhY3RlcikKKy8vICAgICAtIEFzdGVyaXNrICAgICAgICAgICgyQSkKKy8vICAgICAt
IFNsYXNoICAgICAgICAgICAgICgyRikKKy8vICAgICAtIENvbG9uICAgICAgICAgICAgICgzQSkK
Ky8vICAgICAtIExlc3MtdGhhbiAgICAgICAgICgzQykKKy8vICAgICAtIEdyZWF0ZXItdGhhbiAg
ICAgICgzRSkKKy8vICAgICAtIFF1ZXN0aW9uIE1hcmsgICAgICgzRikKKy8vICAgICAtIEJhY2tz
bGFzaCAgICAgICAgICg1QykKKy8vICAgICAtIFBpcGUgICAgICAgICAgICAgICg3QykKKy8vICAg
ICAtIERlbGV0ZSAgICAgICAgICAgICg3RikKKworc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNFc2Nh
cGluZ1sxMjhdID0geworICAgIC8qIDAwLTA3ICovIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAKKyAgICAvKiAwOC0wRiAqLyB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgCisKKyAgICAvKiAx
MC0xNyAqLyB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAg
dHJ1ZSwgCisgICAgLyogMTgtMUYgKi8gdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUs
ICB0cnVlLCAgdHJ1ZSwgIHRydWUsIAorCisgICAgLyogMjAtMjcgKi8gdHJ1ZSwgIGZhbHNlLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAKKyAgICAvKiAyOC0yRiAq
LyBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg
CisgICAgCisgICAgLyogMzAtMzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKKyAgICAvKiAzOC0zRiAqLyBmYWxzZSwgZmFsc2UsIHRy
dWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgCisgICAgCisgICAgLyogNDAt
NDcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAKKyAgICAvKiA0OC00RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgCisgICAgLyogNTAtNTcgKi8gZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKKyAgICAvKiA1OC01
RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFs
c2UsCisgICAgCisgICAgLyogNjAtNjcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAKKyAgICAvKiA2OC02RiAqLyBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgCisgICAgLyog
NzAtNzcgKi8gZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAKKyAgICAvKiA3OC03RiAqLyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgCit9OworCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxk
RXNjYXBlVUNoYXIoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA+IDEyNyA/IGZhbHNlIDogbmVl
ZHNFc2NhcGluZ1tjXTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIw
MTIzNDU2Nzg5QUJDREVGIjsKKworU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmlu
ZyYgaW5wdXRTdHIpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHIubGVuZ3RoKCk7
CisgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGJ1ZmZlcihsZW5ndGggKiAzICsgMSk7CisgICAgVUNo
YXIqIHAgPSBidWZmZXIuZGF0YSgpOworCisgICAgY29uc3QgVUNoYXIqIHN0ciA9IGlucHV0U3Ry
LmNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogc3RyRW5kID0gc3RyICsgbGVuZ3RoOwor
CisgICAgd2hpbGUgKHN0ciA8IHN0ckVuZCkgeworICAgICAgICBVQ2hhciBjID0gKnN0cisrOwor
ICAgICAgICBpZiAoc2hvdWxkRXNjYXBlVUNoYXIoYykpIHsKKyAgICAgICAgICAgICpwKysgPSAn
JSc7CisgICAgICAgICAgICAqcCsrID0gaGV4RGlnaXRzWyhjID4+IDQpICYgMHhGXTsKKyAgICAg
ICAgICAgICpwKysgPSBoZXhEaWdpdHNbYyAmIDB4Rl07CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgKnArKyA9IGM7CisgICAgfQorCisgICAgQVNTRVJUKHAgLSBidWZmZXIuZGF0YSgpIDw9
IHN0YXRpY19jYXN0PGludD4oYnVmZmVyLnNpemUoKSkpOworCisgICAgcmV0dXJuIFN0cmluZyhi
dWZmZXIuZGF0YSgpLCBwIC0gYnVmZmVyLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggNjE3NDcwYjdmZThiNWU3MTg4NzJjNmJjYzBm
NjE5ZTYzNjk3NDY2Yy4uZWM3NWEyMTAzYTU1MDg3M2M1N2U0MTdlNmYzMzJlMDhiNjhkN2FkZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE3MCw2ICsxNzAsOSBAQCBpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAvLyBNZXRob2Rz
IGZvciBkZWFsaW5nIHdpdGggbG9hZGFibGUgbW9kdWxlcwogYm9vbCB1bmxvYWRNb2R1bGUoUGxh
dGZvcm1Nb2R1bGUpOwogCisvLyBFbmNvZGUgYSBzdHJpbmcgZm9yIHVzZSB3aXRoaW4gYSBmaWxl
IG5hbWUuCitTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJik7CisKICNpZiBQ
TEFURk9STShXSU4pCiBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7
CiBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCmluZGV4IGZhMTgwN2NjZDM1NmExMDYyYzI2N2FiMGI1MzRmNjY0NzA2NzBm
ZDUuLmIwMDY5NWJkMTE1MTI4MWFlYTVkNDBiOGZkM2Q2MWY5MjdkZmM1ZjAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElE
QkRhdGFiYXNlOjpJREJEYXRhYmFzZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCkKICAgICA6IG1fYmFja2VuZChiYWNrZW5kKQorICAgICwgbV9kZXNjcmlw
dGlvbihtX2JhY2tlbmQtPmRlc2NyaXB0aW9uKCkpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVy
ZW5jZSB0byB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhB
ZG9wdGlvblJlcXVpcmVtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCmluZGV4IDY5MDBlZmQ0NDBk
Y2NiODE5MjAxOGZlMjRiZjI1MGQ5NjRiMGZlZDcuLjFhZDNjNjVlY2ZhMDc3Y2QzZGZhMzg2NTVi
YzQ2N2E5NGRlZDAyYjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5o
CisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgU3RyaW5nIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQotICAgIFN0cmluZyBkZXNjcmlwdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+ZGVzY3JpcHRpb24oKTsgfQorICAgIFN0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KICAgICBTdHJpbmcg
dmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigpOyB9CiAgICAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZXMoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmQtPm9iamVjdFN0b3JlcygpOyB9CiAKQEAgLTY1LDYgKzY1LDggQEAgcHJpdmF0ZToKICAg
ICBJREJEYXRhYmFzZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwog
CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOworCisg
ICAgU3RyaW5nIG1fZGVzY3JpcHRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMDliOWRlZTYx
NWI1MjZjZGRlZmZmZjhhNzI1Yzc3ZjgwYTFhZDU2Yy4uZTU1MGUxODY5NGU1MDMzMjgwNTdhZjIz
MDk2MGYxMTA0OTFkMzQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcApAQCAtMjksMjIgKzI5LDg5IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKQotICAgIDogbV9uYW1lKG5hbWUpCi0gICAgLCBtX2Rlc2Ny
aXB0aW9uKGRlc2NyaXB0aW9uKQotICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCitzdGF0aWMgYm9v
bCBleHRyYWN0TWV0YURhdGEoU1FMaXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkTmFtZSwgU3RyaW5nJiBmb3VuZERlc2NyaXB0aW9uLCBTdHJpbmcmIGZv
dW5kVmVyc2lvbikKIHsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgbWV0YURhdGFRdWVyeSgqc3FsaXRl
RGF0YWJhc2UsICJTRUxFQ1QgbmFtZSwgZGVzY3JpcHRpb24sIHZlcnNpb24gRlJPTSBNZXRhRGF0
YSIpOworICAgIGlmIChtZXRhRGF0YVF1ZXJ5LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPayB8fCBt
ZXRhRGF0YVF1ZXJ5LnN0ZXAoKSAhPSBTUUxSZXN1bHRSb3cpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtZXRhRGF0YVF1ZXJ5LmdldENvbHVtblRleHQoMCkgIT0gZXhwZWN0ZWRO
YW1lKSB7CisgICAgICAgIExPR19FUlJPUigiTmFtZSBpbiBNZXRhRGF0YSAoJXMpIGRvZXNuJ3Qg
bWF0Y2ggZXhwZWN0ZWQgKCVzKSBmb3IgSW5kZXhlZERCIiwgbWV0YURhdGFRdWVyeS5nZXRDb2x1
bW5UZXh0KDApLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIGZvdW5kRGVzY3JpcHRpb24g
PSBtZXRhRGF0YVF1ZXJ5LmdldENvbHVtblRleHQoMSk7CisgICAgZm91bmRWZXJzaW9uID0gbWV0
YURhdGFRdWVyeS5nZXRDb2x1bW5UZXh0KDIpOworCisgICAgaWYgKG1ldGFEYXRhUXVlcnkuc3Rl
cCgpID09IFNRTFJlc3VsdFJvdykgeworICAgICAgICBMT0dfRVJST1IoIk1vcmUgdGhhbiBvbmUg
cm93IGZvdW5kIGluIE1ldGFEYXRhIHRhYmxlIik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBzZXRNZXRh
RGF0YShTUUxpdGVEYXRhYmFzZSogc3FsaXRlRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQoreworICAg
IEFTU0VSVCghbmFtZS5pc051bGwoKSAmJiAhZGVzY3JpcHRpb24uaXNOdWxsKCkgJiYgIXZlcnNp
b24uaXNOdWxsKCkpOworCisgICAgc3FsaXRlRGF0YWJhc2UtPmV4ZWN1dGVDb21tYW5kKCJERUxF
VEUgRlJPTSBNZXRhRGF0YSIpOworCisgICAgU1FMaXRlU3RhdGVtZW50IGluc2VydCgqc3FsaXRl
RGF0YWJhc2UsICJJTlNFUlQgSU5UTyBNZXRhRGF0YSAobmFtZSwgZGVzY3JpcHRpb24sIHZlcnNp
b24pIFZBTFVFUyAoPywgPywgPykiKTsKKyAgICBpZiAoaW5zZXJ0LnByZXBhcmUoKSAhPSBTUUxS
ZXN1bHRPaykgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIE1ldGFEYXRh
IGluc2VydCBzdGF0ZW1lbnQgZm9yIEluZGV4ZWREQiIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaW5zZXJ0LmJpbmRUZXh0KDEsIG5hbWUpOworICAgIGluc2VydC5iaW5k
VGV4dCgyLCBkZXNjcmlwdGlvbik7CisgICAgaW5zZXJ0LmJpbmRUZXh0KDMsIHZlcnNpb24pOwor
CisgICAgaWYgKGluc2VydC5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBpbnNlcnQgcm93IGludG8gTWV0YURhdGEgZm9yIEluZGV4ZWREQiIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBhc3NlcnQgdGhlcmUncyBvbmx5IG9uZSByb3c/CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NPd25QdHI8U1FMaXRlRGF0
YWJhc2U+IHNxbGl0ZURhdGFiYXNlKQorICAgIDogbV9zcWxpdGVEYXRhYmFzZShzcWxpdGVEYXRh
YmFzZSkKKyAgICAsIG1fbmFtZShuYW1lKQorICAgICwgbV92ZXJzaW9uKCIiKQoreworICAgIEFT
U0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKKworICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBpcyBpbiBm
bHV4IGFib3V0IGhvdyB0byBoYW5kbGUgZGVzY3JpcHRpb24uIFN5bmMgaXQgdXAgb25jZSBhIGZp
bmFsIGRlY2lzaW9uIGlzIG1hZGUuCisgICAgU3RyaW5nIGZvdW5kRGVzY3JpcHRpb24gPSAiIjsK
KyAgICBib29sIHJlc3VsdCA9IGV4dHJhY3RNZXRhRGF0YShtX3NxbGl0ZURhdGFiYXNlLmdldCgp
LCBtX25hbWUsIGZvdW5kRGVzY3JpcHRpb24sIG1fdmVyc2lvbik7CisgICAgbV9kZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uLmlzTnVsbCgpID8gZm91bmREZXNjcmlwdGlvbiA6IGRlc2NyaXB0aW9u
OworCisgICAgaWYgKCFyZXN1bHQgfHwgbV9kZXNjcmlwdGlvbiAhPSBmb3VuZERlc2NyaXB0aW9u
KQorICAgICAgICBzZXRNZXRhRGF0YShtX3NxbGl0ZURhdGFiYXNlLmdldCgpLCBtX25hbWUsIG1f
ZGVzY3JpcHRpb24sIG1fdmVyc2lvbik7CiB9CiAKIElEQkRhdGFiYXNlQmFja2VuZEltcGw6On5J
REJEYXRhYmFzZUJhY2tlbmRJbXBsKCkKIHsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpzZXREZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQoreworICAgIGlm
IChkZXNjcmlwdGlvbiA9PSBtX2Rlc2NyaXB0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgc2V0TWV0YURhdGEobV9zcWxpdGVEYXRh
YmFzZS5nZXQoKSwgbV9uYW1lLCBtX2Rlc2NyaXB0aW9uLCBtX3ZlcnNpb24pOworfQorCiBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3Jl
cygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMg
PSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCmluZGV4IDRkMDFhOTNkMDcxODcwMjY4ZjIxNzliYzMxYWYwNzY5ZmRlOWUzNDYu
LjYwYmVjMWY3ODc4N2NhMWVmOWNiZjQ4MzA1YTljODlmMzY1Y2EzOTYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtMzUsMTQgKzM1LDE4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1FMaXRlRGF0YWJhc2U7CisKIGNsYXNzIElEQkRhdGFi
YXNlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNv
bnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZURhdGFiYXNlPiBkYXRhYmFzZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkZXNj
cmlwdGlvbiwgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFi
YXNlQmFja2VuZEltcGwobmFtZSwgZGVzY3JpcHRpb24sIGRhdGFiYXNlKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIAorICAgIHZvaWQgc2V0RGVzY3Jp
cHRpb24oY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbik7CisKICAgICAvLyBJbXBsZW1lbnRzIElE
QkRhdGFiYXNlCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXNjcmlwdGlvbjsgfQpAQCAtNTQsNyArNTgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBz
aG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwogcHJpdmF0ZToKLSAgICBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc093blB0
cjxTUUxpdGVEYXRhYmFzZT4gZGF0YWJhc2UpOworCisgICAgT3duUHRyPFNRTGl0ZURhdGFiYXNl
PiBtX3NxbGl0ZURhdGFiYXNlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9k
ZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmggYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5oCmluZGV4IDYxNjE5YjliNWVlNzBiYzFmMzU3Njdh
M2JjMDRkN2Q1NDNiODkzZTYuLmE5NmFhMzgyMmQ0ZmE5MjYzODhjNTE2OTNhOGIwOWUxZGQ2OTIw
MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnkuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIH5JREJGYWN0b3J5KCk7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24gPSBTdHJpbmcoKSk7CiAKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeShJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rvcnku
aWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuaWRsCmluZGV4IGNkODg3ZjAwNmI2YmYx
MGE5NWYwZmNjMzVmNGQ2N2E0Y2FlZDQwOTIuLjIxNWQ2N2M2NGIwZTk2NDkxYWFkMWI4OGM0MWI5
NmYwY2NkMWY4NmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmlkbAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5pZGwKQEAgLTI4LDcgKzI4LDcgQEAgbW9k
dWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKICAgICBdIElEQkZhY3RvcnkgewotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBpbiBE
T01TdHJpbmcgZGVzY3JpcHRpb24pOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWws
IENvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBkZXNjcmlwdGlv
bik7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNw
cAppbmRleCA3YmRkNzBkMzA4MTU2ODM2YmZlN2NmMmZhNmJkMGYxYmQ5ZTI5ZTJiLi45MDU3MjZm
Yzk4YjcyOGI0MGJiZjk4M2Y2OGI1YzJkZGU3MjI4ZDNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMzAsNyArMzAsMTAgQEAKICNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEltcGwuaCIKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgor
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTM5LDMxICs0Miw3NCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBs
PiBJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpCitJREJGYWN0b3J5QmFja2VuZEltcGw6
OklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJG
YWN0b3J5QmFja2VuZEltcGwpOwogfQogCi1JREJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZhY3Rv
cnlCYWNrZW5kSW1wbCgpCitJREJGYWN0b3J5QmFja2VuZEltcGw6On5JREJGYWN0b3J5QmFja2Vu
ZEltcGwoKQogewogfQogCi1JREJGYWN0b3J5QmFja2VuZEltcGw6On5JREJGYWN0b3J5QmFja2Vu
ZEltcGwoKQorc3RhdGljIFBhc3NPd25QdHI8U1FMaXRlRGF0YWJhc2U+IG9wZW5TUUxpdGVEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFN0cmluZyBuYW1lKQogeworICAg
IFN0cmluZyBwYXRoQmFzZSA9ICIvdG1wL3RlbXBvcmFyeS1pbmRleGVkLWRiLWZpbGVzIjsgLy8g
RklYTUU6IFdyaXRlIGEgUGFnZUdyb3VwU2V0dGluZ3MgY2xhc3MgYW5kIGhhdmUgdGhpcyB2YWx1
ZSBjb21lIGZyb20gdGhhdC4KKyAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhwYXRoQmFzZSkp
IHsKKyAgICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBvdGhlciB0aGluZyB3ZSBjb3VsZCBw
b3NzaWJseSBkbyB0byByZWNvdmVyIGF0IHRoaXMgcG9pbnQ/IElmIHNvLCBkbyBpdCByYXRoZXIg
dGhhbiBqdXN0IGVycm9yaW5nIG91dC4KKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGVkIHRvIGNy
ZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIHBhdGhCYXNlLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBTdHJpbmcgZGF0YWJhc2VJZGVu
dGlmaWVyID0gc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOworICAgIFN0cmlu
ZyBzYW50aXplZE5hbWUgPSBlbmNvZGVGb3JGaWxlTmFtZShuYW1lKTsKKyAgICBTdHJpbmcgcGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgZGF0YWJhc2VJZGVudGlmaWVy
ICsgIl8iICsgc2FudGl6ZWROYW1lICsgIi5pbmRleGVkZGIiKTsKKyAgICAKKyAgICBPd25QdHI8
U1FMaXRlRGF0YWJhc2U+IHNxbGl0ZURhdGFiYXNlID0gYWRvcHRQdHIobmV3IFNRTGl0ZURhdGFi
YXNlKCkpOworICAgIGlmICghc3FsaXRlRGF0YWJhc2UtPm9wZW4ocGF0aCkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IElzIHRoZXJlIGFueSBvdGhlciB0aGluZyB3ZSBjb3VsZCBwb3NzaWJseSBkbyB0
byByZWNvdmVyIGF0IHRoaXMgcG9pbnQ/IElmIHNvLCBkbyBpdCByYXRoZXIgdGhhbiBqdXN0IGVy
cm9yaW5nIG91dC4KKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZSBm
aWxlICVzIGZvciBJbmRleGVkREIiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gc3FsaXRlRGF0YWJhc2UucmVsZWFzZSgpOwogfQog
Ci12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSopCitzdGF0aWMgYm9vbCBjcmVh
dGVUYWJsZXMoU1FMaXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFiYXNlKQoreworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb21tYW5kc1tdID0geworICAgICAgICAiQ1JFQVRFIFRBQkxFIElGIE5PVCBF
WElTVFMgTWV0YURhdGEgKG5hbWUgVEVYVCwgZGVzY3JpcHRpb24gVEVYVCwgdmVyc2lvbiBURVhU
KSIKKyAgICAgICAgfTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKGNv
bW1hbmRzKTsgKytpKSB7CisgICAgICAgIGlmICghc3FsaXRlRGF0YWJhc2UtPmV4ZWN1dGVDb21t
YW5kKGNvbW1hbmRzW2ldKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
dG8gcmVjb3ZlciBmcm9tIHRoaXMgc2l0dWF0aW9uLiBNYXliZSBudWtlIHRoZSBkYXRhYmFzZSBh
bmQgc3RhcnQgb3Zlcj8KKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJ1biB0aGUg
Zm9sbG93aW5nIGNvbW1hbmQgZm9yIEluZGV4ZWREQjogJXMiLCBjb21tYW5kc1tpXSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIEZyYW1l
KikKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJh
Y2tlbmQ7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJh
c2VCYWNrZW5kTWFwLmZpbmQobmFtZSk7Ci0gICAgaWYgKGl0ID09IG1fZGF0YWJhc2VCYWNrZW5k
TWFwLmVuZCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGUgdmVyc2lvbiBi
ZT8gIFRoZSBzcGVjIGRvZXNuJ3QgZGVmaW5lIGl0IHlldC4KLSAgICAgICAgZGF0YWJhc2VCYWNr
ZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGRlc2NyaXB0aW9uLCAi
Iik7Ci0gICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldChuYW1lLCBkYXRhYmFzZUJhY2tl
bmQpOwotICAgIH0gZWxzZQotICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwot
Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5kLnJlbGVhc2UoKSk7Cisg
ICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CisgICAgICAgIGlmICgh
ZGVzY3JpcHRpb24uaXNOdWxsKCkpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXREZXNjcmlw
dGlvbihkZXNjcmlwdGlvbik7IC8vIFRoZSBkZXNjcmlwdGlvbiBtYXkgaGF2ZSBjaGFuZ2VkLgor
ICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhpdC0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBFdmVyeXRoaW5nIGZyb20gbm93IG9uIHNo
b3VsZCBiZSBkb25lIG9uIGFub3RoZXIgdGhyZWFkLgorCisgICAgT3duUHRyPFNRTGl0ZURhdGFi
YXNlPiBzcWxpdGVEYXRhYmFzZSA9IG9wZW5TUUxpdGVEYXRhYmFzZShzZWN1cml0eU9yaWdpbi5n
ZXQoKSwgbmFtZSk7CisgICAgaWYgKCFzcWxpdGVEYXRhYmFzZSB8fCAhY3JlYXRlVGFibGVzKHNx
bGl0ZURhdGFiYXNlLmdldCgpKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIklu
dGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjcmVhdGUobmFtZSwgZGVzY3JpcHRpb24sIHNxbGl0ZURhdGFiYXNlLnJlbGVhc2Uo
KSk7CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAg
ICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQobmFtZSwgZGF0YWJhc2VCYWNrZW5kLnJlbGVhc2Uo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5
QmFja2VuZEltcGwuaAppbmRleCAyNzBmYjc1YzkxOTQ5YzE1NmY3ODM5ZTBjZWE5OTc0ODdlOWM5
ZmVkLi5lODdlYTM5ZWNmYzJlZDA2YmNjZDQ5MmMyYTJkNDAwZThiYWJhNmVkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9z
dG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC0zNywxMCArMzcsMTQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3RyaW5nTGlzdDsKK2NsYXNzIElEQkRhdGFiYXNl
QmFja2VuZEltcGw7CiAKIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJGYWN0b3J5QmFja2VuZEltcGw+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkZhY3RvcnlCYWNrZW5kSW1wbCgpKTsKKyAgICB9CiAgICAgdmlydHVhbCB+
SURCRmFjdG9yeUJhY2tlbmRJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1lKik7CkBAIC00OCw3ICs1
Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbXBsKCk7CiAK
LSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiA+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gPiBJREJEYXRhYmFzZUJhY2tlbmRN
YXA7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwIG1fZGF0YWJhc2VCYWNrZW5kTWFwOwogCiAg
ICAgLy8gV2Ugb25seSBjcmVhdGUgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgYXQgYSB0aW1l
Lgo=
</data>
<flag name="review"
          id="52611"
          type_id="1"
          status="+"
          setter="steveblock"
    />
          </attachment>
      

    </bug>

</bugzilla>