<?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>94235</bug_id>
          
          <creation_ts>2012-08-16 11:42:39 -0700</creation_ts>
          <short_desc>IndexedDB: IDBRequest can be GCd during event dispatch</short_desc>
          <delta_ts>2012-08-21 19:43:29 -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>WebCore Misc.</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>alecflett</cc>
    
    <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697322</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 11:42:39 -0700</bug_when>
    <thetext>This may be V8/Chromium and possibly Worker specific.

Repro is at: http://crbug.com/142419

Scenario:

* Build up a lot of garbage in script
* Iterate a cursor using syntax like this:

store.openCursor(lo, hi).onsuccess = function(e) {
  var cursor = e.target.result;
  if (cursor) {
    cursor.continue();
  }
};

* Since there is no reference to the IDBRequest returned by openCursor() it can be reclaimed. 

There is logic in IDBRequest::hasPendingActivity() to prevent this, which tests:

  m_readyState·==·PENDING·||·ActiveDOMObject::hasPendingActivity()

But m_readyState is set to DONE at the start of IDBRequest::dispatchEvent(), so when the dispatch actually occurs and we dive into script, GC can kick in before the listener function is called and request can be GC&apos;d on the script side of things.

A trivial fix is to add m_isDispatching to IDBRequest and set/unset it around the actual IDBEventDispatcher::dispatch() call.

This might be a (new?) Worker/V8 bug, though - it seems like allowing GC to kick in at this point is a little sketchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697349</commentid>
    <comment_count>1</comment_count>
      <attachid>158873</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 12:20:08 -0700</bug_when>
    <thetext>Created attachment 158873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697411</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 13:10:04 -0700</bug_when>
    <thetext>tony@ or ojan@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697417</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-16 13:13:33 -0700</bug_when>
    <thetext>This seems reasonable to me. I&apos;m not too familiar with how we generally handle GC issues though. CC&apos;ing some people more knowledgeable about the right ways to handle keeping objects alive during event dispatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697426</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 13:17:35 -0700</bug_when>
    <thetext>For IDBRequest, this would have been broken by:

http://trac.webkit.org/changeset/123275

The m_requestFinished flag (which was removed) was tested in hasPendingActivity() and was set after the dispatch occurred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697438</commentid>
    <comment_count>5</comment_count>
      <attachid>158873</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 13:28:12 -0700</bug_when>
    <thetext>Comment on attachment 158873
Patch

Removing r? - on further thinking, some of the previous simplifications went too far. Namely, since an IDBCursor can be asked to continue at an arbitrary time the IDBRequest it came from must be kept alive. This means http://trac.webkit.org/changeset/124842 should really be reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697443</commentid>
    <comment_count>6</comment_count>
      <attachid>158873</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:31:11 -0700</bug_when>
    <thetext>Comment on attachment 158873
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:468
&gt; +    m_dispatching = true;
&gt;      bool dontPreventDefault = IDBEventDispatcher::dispatch(event.get(), targets);
&gt; +    m_dispatching = false;

Can this be re-entered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697448</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 13:33:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 158873 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158873&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:468
&gt; &gt; +    m_dispatching = true;
&gt; &gt;      bool dontPreventDefault = IDBEventDispatcher::dispatch(event.get(), targets);
&gt; &gt; +    m_dispatching = false;
&gt; 
&gt; Can this be re-entered?

No - script actions can cause new events to be enqueued, but dispatch should occur asynchronously.

(Upcoming patch removes that anyway, though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697516</commentid>
    <comment_count>8</comment_count>
      <attachid>158902</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 14:18:49 -0700</bug_when>
    <thetext>Created attachment 158902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697523</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 14:27:01 -0700</bug_when>
    <thetext>As mentioned in the comments and changelog, after further thought this was reintroduced by previous refactors that went too far and missed this case.

The patch is now a partial reversion of:

http://trac.webkit.org/changeset/121492 - IDBTransaction state simplification; effectively reverts the m_transactionFinished changes, but changes the variable to m_hasPendingActivity to clarify the use


http://trac.webkit.org/changeset/123275 - IDBRequest state simplification; effectively reverts the m_requestFinished and m_cursorFinished changes, but (again) changes the variable to m_hasPendingActivity to clarify the use

http://trac.webkit.org/changeset/124842 - simplification following the above; turns out this is necessary, so wholesale reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697648</commentid>
    <comment_count>10</comment_count>
      <attachid>158902</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-08-16 16:20:58 -0700</bug_when>
    <thetext>Comment on attachment 158902
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:480
&gt; +    if (m_readyState == DONE &amp;&amp; (!cursorToNotify || m_cursorFinished))

I would have expected garbage collection to run on this same thread, in between dispatching events. But if I understand this problem, gc runs in some other thread, querying IDBRequest::hasPendingActivity() when the script execution thread is between line 432/440 and 464/472.  Accurate?

&gt; LayoutTests/storage/indexeddb/resources/pending-activity.js:1
&gt; +if (this.importScripts) {

Somewhere I saw that this might only be a problem when run from a worker. Do you want to run this script from a worker in pending-activity-workers.html?

&gt; LayoutTests/storage/indexeddb/resources/pending-activity.js:6
&gt; +description(&quot;Checks that garbage collection doesn&apos;t relaim objects with pending activity&quot;);

reclaim

&gt; LayoutTests/storage/indexeddb/resources/pending-activity.js:55
&gt; +    debug(&quot;&quot;);

You can use preamble() in place of these two debug lines.  For standalone functions at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697652</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 16:28:50 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 158902 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158902&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:480
&gt; &gt; +    if (m_readyState == DONE &amp;&amp; (!cursorToNotify || m_cursorFinished))
&gt; 
&gt; I would have expected garbage collection to run on this same thread, in between dispatching events. But if I understand this problem, gc runs in some other thread, querying IDBRequest::hasPendingActivity() when the script execution thread is between line 432/440 and 464/472.  Accurate?

Nope, GC does run in the same thread.

The GC is kicking in when the event is asked to fire - basically, as soon as we drop into script execution, GC happens and claims this IDBRequest, then the logic to fire the event proceeds but the object is gone so it&apos;s a no-op.
 
&gt; &gt; LayoutTests/storage/indexeddb/resources/pending-activity.js:1
&gt; &gt; +if (this.importScripts) {
&gt; 
&gt; Somewhere I saw that this might only be a problem when run from a worker. Do you want to run this script from a worker in pending-activity-workers.html?

Good idea, With the Chromium repro I couldn&apos;t get it to happen outside of Workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697689</commentid>
    <comment_count>12</comment_count>
      <attachid>158949</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-16 17:01:15 -0700</bug_when>
    <thetext>Created attachment 158949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700923</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-21 10:58:35 -0700</bug_when>
    <thetext>Added Worker tests.

tony@ or abarth@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700935</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 11:07:51 -0700</bug_when>
    <thetext>This is a good way of integrating with the GC, but I don&apos;t know much about the IDB specific parts of this patch.  Perhaps Tony is the better reviewer here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700998</commentid>
    <comment_count>15</comment_count>
      <attachid>158949</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-08-21 12:29:09 -0700</bug_when>
    <thetext>Comment on attachment 158949
Patch

IDB stuff LGTM, for what it&apos;s worth</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701031</commentid>
    <comment_count>16</comment_count>
      <attachid>159745</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-21 13:05:01 -0700</bug_when>
    <thetext>Created attachment 159745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701033</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-21 13:05:55 -0700</bug_when>
    <thetext>Needed a rebase. dgrogan@ can you take another look, mostly at the IDBRequest::dispatchEvent method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701040</commentid>
    <comment_count>18</comment_count>
      <attachid>159745</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-08-21 13:10:43 -0700</bug_when>
    <thetext>Comment on attachment 159745
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701078</commentid>
    <comment_count>19</comment_count>
      <attachid>159745</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 13:37:41 -0700</bug_when>
    <thetext>Comment on attachment 159745
Patch

Attachment 159745 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13545695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701106</commentid>
    <comment_count>20</comment_count>
      <attachid>159764</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-21 14:03:11 -0700</bug_when>
    <thetext>Created attachment 159764
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701504</commentid>
    <comment_count>21</comment_count>
      <attachid>159764</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 19:43:25 -0700</bug_when>
    <thetext>Comment on attachment 159764
Patch for landing

Clearing flags on attachment: 159764

Committed r126254: &lt;http://trac.webkit.org/changeset/126254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701505</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 19:43:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158873</attachid>
            <date>2012-08-16 12:20:08 -0700</date>
            <delta_ts>2012-08-16 14:18:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94235-20120816121933.patch</filename>
            <type>text/plain</type>
            <size>6525</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdjZWY3NGNhNTA3OThh
OGYxY2M3MzgyOGQ1NTQ1OGVjNzFkM2NjNC4uMGYyNmFmMmVjNDg4OTQyZTE0OWM2NDA3NTkxZmQw
Nzc1Yjg5NjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA4LTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJS
ZXF1ZXN0IGNhbiBiZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgR0MgZnJvbSByZWNsYWltaW5n
IElEQiBvYmplY3RzIGluIG1pZC1kaXNwYXRjaC4gVGhpcyB3YXMKKyAgICAgICAgcHJldmlvdXNs
eSBoYW5kbGVkIGJ5IG90aGVyIHN0YXRlIHZhcmlhYmxlcyB3aGljaCB3ZXJlIHJlZmFjdG9yZWQK
KyAgICAgICAgb3V0IHdpdGhvdXQgY29uc2lkZXJpbmcgdGhpcyBjYXNlLgorCisgICAgICAgIE5v
IG5ldyBsYXlvdXQgdGVzdHMgLSB0aGUgaXNzdWUgaXMgZXh0cmVtZWx5IHRpbWluZyBzZW5zaXRp
dmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOiBJbml0ICJpcyBkaXNwYXRjaGlu
ZyIgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSk6IFRlc3QgaXQuCisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KTogU2V0L3Jlc2V0IGl0LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJREJU
cmFuc2FjdGlvbik6IEluaXQgImlzIGRpc3BhdGNoaW5nIiBmbGFnLgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6IFRlc3QgaXQuCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6IFNldC9yZXNldCBpdC4K
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorCiAyMDEyLTA4
LTE1ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgogCiAgICAgICAgIE1hcmsgU2tp
YSBhbmQgQ29tcG9zaXRvciBDb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCBmMDg4NmM2NmNiMWRmY2RjZjA0YzEwM2ZlYTFk
NThjMzA1OGU5MjRhLi5lNzczYjQ5NjE0NDk3Y2IwMjJkMTM2NzhkNWYxNGM0OGVkMDgwNmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApA
QCAtNTksNiArNTksNyBAQCBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyYwogICAgICwgbV9yZWFkeVN0
YXRlKFBFTkRJTkcpCiAgICAgLCBtX3JlcXVlc3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9jb250
ZXh0U3RvcHBlZChmYWxzZSkKKyAgICAsIG1fZGlzcGF0Y2hpbmcoZmFsc2UpCiAgICAgLCBtX2N1
cnNvclR5cGUoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAg
ICAgLCBtX2N1cnNvckRpcmVjdGlvbihJREJDdXJzb3I6Ok5FWFQpCiAgICAgLCBtX3BlbmRpbmdD
dXJzb3IoMCkKQEAgLTM4OSw3ICszOTAsNyBAQCBib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91
bGQgcmV0dXJuIHRydWUgYXMgbG9uZyBhcyBhbnlvbmUgaGFzIGEgb3IgY2FuCiAgICAgLy8gICAg
ICAgIGdldCBhIGhhbmRsZSB0byB1cyBhbmQgd2UgaGF2ZSBldmVudCBsaXN0ZW5lcnMuIFRoaXMg
aXMgb3JkZXIgdG8gaGFuZGxlCiAgICAgLy8gICAgICAgIHVzZXIgZ2VuZXJhdGVkIGV2ZW50cyBw
cm9wZXJseS4KLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlID09IFBFTkRJTkcgfHwgQWN0aXZlRE9N
T2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV9kaXNwYXRjaGluZyB8
fCBtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnN0b3AoKQpAQCAtNDI0LDYgKzQyNSw3
IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcpOwogICAgIEFTU0VSVCghbV9j
b250ZXh0U3RvcHBlZCk7CiAgICAgQVNTRVJUKG1fZW5xdWV1ZWRFdmVudHMuc2l6ZSgpKTsKKyAg
ICBBU1NFUlQoIW1fZGlzcGF0Y2hpbmcpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX3JlYWR5U3RhdGUgPCBET05FLCAibV9yZWFkeVN0YXRlIDwgRE9ORSgl
ZCksIHdhcyAlZCIsIERPTkUsIG1fcmVhZHlTdGF0ZSk7CkBAIC00NjEsNyArNDYzLDkgQEAgYm9v
bCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAg
ICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRB
Y3RpdmUodHJ1ZSk7CisgICAgbV9kaXNwYXRjaGluZyA9IHRydWU7CiAgICAgYm9vbCBkb250UHJl
dmVudERlZmF1bHQgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0
YXJnZXRzKTsKKyAgICBtX2Rpc3BhdGNoaW5nID0gZmFsc2U7CiAgICAgaWYgKHNldFRyYW5zYWN0
aW9uQWN0aXZlKQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRBY3RpdmUoZmFsc2UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggZDgx
YzNmNzg0YWNhNGY2MmRkYTNlODUyZjRhNTk0MzQ5ZDA5M2I1NS4uZTYyNzU2NDI2YmI3OGNjMGQ1
MTUxZmY5MWQ5MGRmNzEzZDUyZjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTMxLDYgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgUmVh
ZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9vbCBtX3JlcXVlc3RBYm9ydGVkOyAvLyBNYXkg
YmUgYWJvcnRlZCBieSB0cmFuc2FjdGlvbiB0aGVuIHJlY2VpdmUgYXN5bmMgb25zdWNjZXNzOyBp
Z25vcmUgdnMuIGFzc2VydC4KICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CisgICAgYm9vbCBt
X2Rpc3BhdGNoaW5nOwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50
czsKIAogICAgIC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNv
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBhMjMzZTdhMzBlOTcwMTdiN2UwODBjMDYwNjU0NjUwYjg1OGE1MzRiLi44
YWU1OTU0NGFjYjhkNDc4NWMyZWMyZjUwZGUyZGI1ZGViODNiZmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC04Niw2
ICs4Niw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyCiAgICAgLCBtX21vZGUobW9kZSkKICAg
ICAsIG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKKyAgICAsIG1fZGlzcGF0
Y2hpbmcoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogewogICAgIEFTU0VS
VChtX2JhY2tlbmQpOwpAQCAtMzEzLDcgKzMxNCw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IEluIGFuIGlkZWFsIHdvcmxk
LCB3ZSBzaG91bGQgcmV0dXJuIHRydWUgYXMgbG9uZyBhcyBhbnlvbmUgaGFzIGEgb3IgY2FuCiAg
ICAgLy8gICAgICAgIGdldCBhIGhhbmRsZSB0byB1cyBvciBhbnkgY2hpbGQgcmVxdWVzdCBvYmpl
Y3QgYW5kIGFueSBvZiB0aG9zZSBoYXZlCiAgICAgLy8gICAgICAgIGV2ZW50IGxpc3RlbmVycy4g
VGhpcyBpcyAgaW4gb3JkZXIgdG8gaGFuZGxlIHVzZXIgZ2VuZXJhdGVkIGV2ZW50cyBwcm9wZXJs
eS4KLSAgICByZXR1cm4gbV9zdGF0ZSAhPSBGaW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX2Rpc3BhdGNoaW5nIHx8IG1fc3RhdGUg
IT0gRmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0K
IAogSURCVHJhbnNhY3Rpb246Ok1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1RvTW9kZShjb25z
dCBTdHJpbmcmIG1vZGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzYyLDYgKzM2Myw3
IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCIp
OwogICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBBU1NFUlQoIW1fZGlzcGF0
Y2hpbmcpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VS
VChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwpAQCAt
Mzc3LDcgKzM3OSwxMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxsb3cgY3VzdG9t
IGV2ZW50IGRpc3BhdGNoaW5nLCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2UuCiAg
ICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQgfHwg
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgcmV0dXJuIElE
QkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOworICAgIG1f
ZGlzcGF0Y2hpbmcgPSB0cnVlOworICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZl
bnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgbV9kaXNw
YXRjaGluZyA9IGZhbHNlOworICAgIHJldHVybiBkb250UHJldmVudERlZmF1bHQ7CiB9CiAKIGJv
b2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMWY3YWY3ZGFkMWJl
OTQ4ZjZiNDE5NTdmNzllNWY2ODc0MmI5OWFmMC4uNDI0MjlmMDFlNmE3MTI3NDdjZGRmY2JmNzJh
Njk4ZTJlMjVhZGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBNb2RlIG1fbW9kZTsKICAgICBib29sIG1fYWN0aXZlOwogICAgIFN0YXRlIG1fc3RhdGU7Cisg
ICAgYm9vbCBtX2Rpc3BhdGNoaW5nOwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAgICBS
ZWZQdHI8RE9NRXJyb3I+IG1fZXJyb3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158902</attachid>
            <date>2012-08-16 14:18:49 -0700</date>
            <delta_ts>2012-08-16 17:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94235-20120816141814.patch</filename>
            <type>text/plain</type>
            <size>15341</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdjZWY3NGNhNTA3OThh
OGYxY2M3MzgyOGQ1NTQ1OGVjNzFkM2NjNC4uNmVmNzM2MTQwZTY0YzJkNWEwMGM4YmMwZmJkZWVi
MGE3M2JjN2E2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA4LTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJS
ZXF1ZXN0IGNhbiBiZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIHJhY2UgY29uZGl0aW9uIGFsbG93
aW5nIEdDIHRvIHJlY2xhaW0gSURCIG9iamVjdHMgaW4gbWlkLWRpc3BhdGNoLgorICAgICAgICBU
aGlzIGlzIGEgcGFydGlhbCByZXZlcnNpb24gKHdpdGggcmVuYW1lcywgZXRjKSBvZiByMTIzMjc1
LCByMTI0ODQyLAorICAgICAgICBhbmQgcjEyMTQ5Mi4gQWRkZWQgYSBuZXcgdGVzdCwgYWx0aG91
Z2ggaXQgZG9lcyBub3QgZXhlcmNpc2UgdGhlIHJhY2UKKyAgICAgICAgY29uZGl0aW9uIGRpcmVj
dGx5LgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHku
aHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y2xvc2UpOiBMZXQgdGhlIElEQlJlcXVlc3Qga25vdyBp
dCB0aGlzIGN1cnNvciB3b24ndAorICAgICAgICBtYWtlIGl0IGZpcmUgYWdhaW4uCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpJREJSZXF1ZXN0KTogUmVpbnRyb2R1Y2UgImFtIEkgZG9uZT8iIGZsYWcuCisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpmaW5pc2hDdXJzb3IpOiBDdXJzb3JzIG1heSBm
aXJlIGV2ZW50cyBhdCB0aGUgc2FtZQorICAgICAgICBJREJSZXF1ZXN0IHJlcGVhdGVkbHksIHNv
IHdlIG5lZWQgdG8ga25vdyB3aGVuIHRoZXkncmUgYXJlIHJlYWxseSBkb25lLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZp
dHkpOiBUZXN0IHRoZSBmbGFnLgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0
Y2hFdmVudCk6IFNldCB0aGUgZmxhZy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0Lmg6CisgICAgICAgIChJREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6SURCVHJhbnNhY3Rpb24pOiBSZWludHJvZHVjZSAiYW0gSSBkb25lPyIgZmxhZy4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkpOiBUZXN0IHRo
ZSBmbGFnLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQp
OiBTZXQgdGhlIGZsYWcuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaDoKKwogMjAxMi0wOC0xNSAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBNYXJrIFNraWEgYW5kIENvbXBvc2l0b3IgQ29udGV4dHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDE1MzljNjI4N2I2ZDM5
MmNlYTA3M2FkYjdkNDYyYjJjNmRkMGQ2YmEuLjkwM2RhYjU4M2MzNjMyYTc2NmI5NWQ5NzliM2Uy
NWQ5ZmI3MzU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcApAQCAtMjYyLDYgKzI2Miw3IEBAIHZvaWQgSURCQ3Vyc29yOjpwb3N0U3VjY2Vz
c0hhbmRsZXJDYWxsYmFjaygpCiB2b2lkIElEQkN1cnNvcjo6Y2xvc2UoKQogewogICAgIEFTU0VS
VChtX3JlcXVlc3QpOworICAgIG1fcmVxdWVzdC0+ZmluaXNoQ3Vyc29yKCk7CiAgICAgbV9yZXF1
ZXN0LmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKaW5kZXggZjA4ODZjNjZjYjFkZmNkY2YwNGMxMDNmZWExZDU4YzMwNThl
OTI0YS4uYWNhYjU0ZmE1NzFjZmQwZjBjNTg1MDg3NTNkNzllMWQ2NzIzNDI3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTU4LDkg
KzU4LDExIEBAIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQogICAgICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcpCiAgICAgLCBtX3JlcXVlc3RB
Ym9ydGVkKGZhbHNlKQorICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKICAgICAsIG1f
Y29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJ
REJDdXJzb3I6Ok5FWFQpCisgICAgLCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9w
ZW5kaW5nQ3Vyc29yKDApCiB7CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKQEAgLTIxNCw2ICsy
MTYsMTEgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJD
dXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXkKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6
Y3JlYXRlKElEQkN1cnNvcldpdGhWYWx1ZTo6ZnJvbUN1cnNvcihjdXJzb3IpKTsKIH0KIAordm9p
ZCBJREJSZXF1ZXN0OjpmaW5pc2hDdXJzb3IoKQoreworICAgIG1fY3Vyc29yRmluaXNoZWQgPSB0
cnVlOworfQorCiBib29sIElEQlJlcXVlc3Q6OnNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
QEAgLTM4OSw3ICszOTYsNyBAQCBib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiAgICAgLy8gRklYTUU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0dXJu
IHRydWUgYXMgbG9uZyBhcyBhbnlvbmUgaGFzIGEgb3IgY2FuCiAgICAgLy8gICAgICAgIGdldCBh
IGhhbmRsZSB0byB1cyBhbmQgd2UgaGF2ZSBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgb3JkZXIg
dG8gaGFuZGxlCiAgICAgLy8gICAgICAgIHVzZXIgZ2VuZXJhdGVkIGV2ZW50cyBwcm9wZXJseS4K
LSAgICByZXR1cm4gbV9yZWFkeVN0YXRlID09IFBFTkRJTkcgfHwgQWN0aXZlRE9NT2JqZWN0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHkgfHwg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAogdm9pZCBJREJSZXF1
ZXN0OjpzdG9wKCkKQEAgLTQyMyw2ICs0MzAsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0
OjpkaXNwYXRjaEV2ZW50Iik7CiAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HKTsK
ICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOworICAgIEFTU0VSVChtX2hhc1BlbmRpbmdB
Y3Rpdml0eSk7CiAgICAgQVNTRVJUKG1fZW5xdWV1ZWRFdmVudHMuc2l6ZSgpKTsKICAgICBBU1NF
UlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgp
ID09IHRoaXMpOwpAQCAtNDY4LDYgKzQ3NiwxMCBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKGN1cnNvclRvTm90aWZ5KQog
ICAgICAgICBjdXJzb3JUb05vdGlmeS0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKIAor
ICAgIC8vIEZJWE1FOiBTaG91bGQgcmVtYWluIHRydWUgYWZ0ZXIgInVwZ3JhZGVuZWVkZWQiIGlz
IGZpcmVkLgorICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRE9ORSAmJiAoIWN1cnNvclRvTm90aWZ5
IHx8IG1fY3Vyc29yRmluaXNoZWQpKQorICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGZh
bHNlOworCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgZG9udFByZXZlbnREZWZhdWx0ICYmICFt
X3JlcXVlc3RBYm9ydGVkKSB7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRFcnJvciht
X2Vycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAppbmRleCBkODFjM2Y3ODRhY2E0ZjYyZGRhM2U4NTJmNGE1OTQzNDlkMDkzYjU1Li43NmEyY2Ey
ZmQ3ZGQxOGViYzJhZTczMTQ4NDRhMmUzODA2M2NmMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1hcmtFYXJseURlYXRoKCk7CiAgICAgdm9pZCBzZXRDdXJzb3JEZXRhaWxzKElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9u
KTsKICAgICB2b2lkIHNldFBlbmRpbmdDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKKyAg
ICB2b2lkIGZpbmlzaEN1cnNvcigpOwogICAgIHZvaWQgYWJvcnQoKTsKIAogICAgIC8vIElEQkNh
bGxiYWNrcwpAQCAtMTMwLDEyICsxMzEsMTQgQEAgcHJpdmF0ZToKIAogICAgIFJlYWR5U3RhdGUg
bV9yZWFkeVN0YXRlOwogICAgIGJvb2wgbV9yZXF1ZXN0QWJvcnRlZDsgLy8gTWF5IGJlIGFib3J0
ZWQgYnkgdHJhbnNhY3Rpb24gdGhlbiByZWNlaXZlIGFzeW5jIG9uc3VjY2VzczsgaWdub3JlIHZz
LiBhc3NlcnQuCisgICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKICAgICBib29sIG1fY29u
dGV4dFN0b3BwZWQ7CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRz
OwogCiAgICAgLy8gT25seSB1c2VkIGlmIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGEgY3Vyc29y
LgogICAgIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgbV9jdXJzb3JUeXBl
OwogICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIG1fY3Vyc29yRGlyZWN0aW9uOworICAgIGJvb2wg
bV9jdXJzb3JGaW5pc2hlZDsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7
CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JLZXk7CiAgICAgUmVmUHRyPElEQktleT4gbV9j
dXJzb3JQcmltYXJ5S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGEyMzNlN2EzMGU5NzAxN2I3ZTA4MGMwNjA2NTQ2
NTBiODU4YTUzNGIuLjdkMzljZWUwNmIzYjc1MzYyYzliMGNjOWRhZjYzOGRlMzJhMWFjN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHIKICAgICAsIG1f
bW9kZShtb2RlKQogICAgICwgbV9hY3RpdmUodHJ1ZSkKICAgICAsIG1fc3RhdGUoVW51c2VkKQor
ICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CkBAIC0zMTMsNyArMzE0LDcgQEAgYm9v
bCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICAvLyBGSVhN
RTogSW4gYW4gaWRlYWwgd29ybGQsIHdlIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGFu
eW9uZSBoYXMgYSBvciBjYW4KICAgICAvLyAgICAgICAgZ2V0IGEgaGFuZGxlIHRvIHVzIG9yIGFu
eSBjaGlsZCByZXF1ZXN0IG9iamVjdCBhbmQgYW55IG9mIHRob3NlIGhhdmUKICAgICAvLyAgICAg
ICAgZXZlbnQgbGlzdGVuZXJzLiBUaGlzIGlzICBpbiBvcmRlciB0byBoYW5kbGUgdXNlciBnZW5l
cmF0ZWQgZXZlbnRzIHByb3Blcmx5LgotICAgIHJldHVybiBtX3N0YXRlICE9IEZpbmlzaGVkIHx8
IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1faGFz
UGVuZGluZ0FjdGl2aXR5IHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7
CiB9CiAKIElEQlRyYW5zYWN0aW9uOjpNb2RlIElEQlRyYW5zYWN0aW9uOjpzdHJpbmdUb01vZGUo
Y29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM2Miw2ICsz
NjMsNyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQogewogICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZl
bnQiKTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CisgICAgQVNTRVJUKG1faGFz
UGVuZGluZ0FjdGl2aXR5KTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwogICAgIG1fc3RhdGUgPSBGaW5p
c2hlZDsKQEAgLTM3Nyw3ICszNzksOSBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxs
b3cgY3VzdG9tIGV2ZW50IGRpc3BhdGNoaW5nLCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBj
aGFuZ2UuCiAgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbXBsZXRl
RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAg
cmV0dXJuIElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMp
OworICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgbV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBm
YWxzZTsKKyAgICByZXR1cm4gZG9udFByZXZlbnREZWZhdWx0OwogfQogCiBib29sIElEQlRyYW5z
YWN0aW9uOjpjYW5TdXNwZW5kKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDFmN2FmN2RhZDFiZTk0OGY2YjQxOTU3
Zjc5ZTVmNjg3NDJiOTlhZjAuLjVkNWRmZWI2ZTA3NTJkZjcyMmYxZWI2YjQzY2I5MjRlZDk1Zjhj
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTW9kZSBtX21v
ZGU7CiAgICAgYm9vbCBtX2FjdGl2ZTsKICAgICBTdGF0ZSBtX3N0YXRlOworICAgIGJvb2wgbV9o
YXNQZW5kaW5nQWN0aXZpdHk7CiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0
cjxET01FcnJvcj4gbV9lcnJvcjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA3ZTU0NDgzZWIzMTJiNTU4ZTNmZmY3NjZh
YjUwMzQxNDljZmVjYmEuLmExNzJhMGMyOGFjYjVjNmE4NGViOGZkZjY3NjRjYzA4YTc5NzQyYjYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wOC0xNiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSURCUmVxdWVzdCBjYW4gYmUgR0Nk
IGR1cmluZyBldmVudCBkaXNwYXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQyMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWxlYXNlIHJlZmVyZW5jZXMgdG8gSURCUmVxdWVzdCBhbmQgSURCVHJh
bnNhY3Rpb24gb2JqZWN0cyBhbmQgZm9yY2UgR0MsCisgICAgICAgIHRvIGVuc3VyZSB0aGF0IHBl
bmRpbmcgZXZlbnRzIGFyZSBzdGlsbCBmaXJlZC4gKERvZXNuJ3QgZXhlcmNpc2UgcmFjZQorICAg
ICAgICBjb25kaXRpb24gd2hlcmUgR0MgaXMgdHJpZ2dlcmVkIGJ5IHNjcmlwdCBkdXJpbmcgZGlz
cGF0Y2ggaXRzZWxmLCB0aG91Z2guKQorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcGVu
ZGluZy1hY3Rpdml0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3BlbmRpbmctYWN0aXZpdHkuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3BlbmRpbmctYWN0aXZpdHkuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVz
dC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNl
LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVE
YXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgor
ICAgICAgICAodGVzdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKHRyYW5zYWN0aW9uT25Db21wbGV0
ZSk6CisgICAgICAgICh0ZXN0UmVxdWVzdCk6CisgICAgICAgIChyZXF1ZXN0T25TdWNjZXNzKToK
KyAgICAgICAgKHRlc3RDdXJzb3JSZXF1ZXN0KToKKyAgICAgICAgKGN1cnNvclJlcXVlc3RPbkZp
cnN0U3VjY2Vzcyk6CisgICAgICAgIChjdXJzb3JSZXF1ZXN0T25TZWNvbmRTdWNjZXNzKToKKwog
MjAxMi0wOC0xNSAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBbUXRdIHVuc2tpcCBwYXNzaW5nIGZhc3QvdGV4dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWMyNTI5NDQ1MGYxMjM2NTgwYmYyMjdjNjZiZGMwMDUwODUwZTY2
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRp
bmctYWN0aXZpdHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDkgQEAKK0NoZWNrcyB0aGF0IGdh
cmJhZ2UgY29sbGVjdGlvbiBkb2Vzbid0IHJlbGFpbSBvYmplY3RzIHdpdGggcGVuZGluZyBhY3Rp
dml0eQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICdwZW5kaW5n
LWFjdGl2aXR5JworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5v
cGVuKGRibmFtZSkKK2RiID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyAiIgor
ZGIuc2V0VmVyc2lvbignMScpCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
CitzdG9yZS5wdXQoMCwgMCkKKwordGVzdFRyYW5zYWN0aW9uKCk6Cit0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScpCit0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rp
b25PbkNvbXBsZXRlCit0cmFuc2FjdGlvbiA9IG51bGwKK3NlbGYuZ2MoKQorUEFTUyBUcmFuc2Fj
dGlvbiAnY29tcGxldGUnIGV2ZW50IGZpcmVkLgorCit0ZXN0UmVxdWVzdCgpOgordHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0b3JlLmdldCgwKQorcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSByZXF1ZXN0T25TdWNjZXNzCityZXF1ZXN0ID0gbnVsbAorc2VsZi5nYygpCitQQVNTIFJlcXVl
c3QgJ3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLgorCit0ZXN0Q3Vyc29yUmVxdWVzdCgpOgordHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3JSZXF1ZXN0T25GaXJzdFN1Y2Nlc3MKK1BBU1MgUmVxdWVzdCAnc3Vj
Y2VzcycgZXZlbnQgZmlyZWQuCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorY3Vyc29yLmNvbnRp
bnVlKCkKK3JlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yUmVxdWVzdE9uU2Vjb25kU3VjY2Vzcwor
cmVxdWVzdCA9IG51bGwKK3NlbGYuZ2MoKQorUEFTUyBSZXF1ZXN0ICdzdWNjZXNzJyBldmVudCBm
aXJlZC4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0
aXZpdHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZp
dHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NGFhY2UzYWViNGM4MGRiNTg2ZWE0ZmNjYmY3MzJjZmFlZjIw
NjZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVu
ZGluZy1hY3Rpdml0eS5odG1sCkBAIC0wLDAgKzEsNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wZW5kaW5nLWFjdGl2aXR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3BlbmRpbmct
YWN0aXZpdHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcGVu
ZGluZy1hY3Rpdml0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjUzYTUxOWEzMzI3ZjBmMDZmZTdhMzFkYTEz
ZDEyZDYwOTAwMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3BlbmRpbmctYWN0aXZpdHkuanMKQEAgLTAsMCArMSw5OSBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaGVja3MgdGhhdCBnYXJiYWdlIGNvbGxlY3Rpb24g
ZG9lc24ndCByZWxhaW0gb2JqZWN0cyB3aXRoIHBlbmRpbmcgYWN0aXZpdHkiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBwcmVwYXJlRGF0
YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBldmFsQW5k
TG9nKCJkYm5hbWUgPSAncGVuZGluZy1hY3Rpdml0eSciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKGRibmFtZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAg
ICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOworICAgICAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICB0cmFucyA9IHJl
cXVlc3QucmVzdWx0OworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoMCwgMCkiKTsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVz
dFRyYW5zYWN0aW9uOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitm
dW5jdGlvbiB0ZXN0VHJhbnNhY3Rpb24oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dGVzdFRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSB0cmFuc2FjdGlvbk9uQ29tcGxldGUiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCkiKTsKK30KKworZnVuY3Rp
b24gdHJhbnNhY3Rpb25PbkNvbXBsZXRlKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlv
biAnY29tcGxldGUnIGV2ZW50IGZpcmVkLiIpOworICAgIHRlc3RSZXF1ZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RSZXF1ZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RS
ZXF1ZXN0KCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuZ2V0KDAp
Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbnN1Y2Nlc3MgPSByZXF1ZXN0T25TdWNjZXNz
Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJz
ZWxmLmdjKCkiKTsKK30KKworZnVuY3Rpb24gcmVxdWVzdE9uU3VjY2VzcygpCit7CisgICAgdGVz
dFBhc3NlZCgiUmVxdWVzdCAnc3VjY2VzcycgZXZlbnQgZmlyZWQuIik7CisgICAgdGVzdEN1cnNv
clJlcXVlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdEN1cnNvclJlcXVlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEN1cnNvclJlcXVlc3QoKToiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJlcXVlc3RPbkZpcnN0U3VjY2VzcyIpOworfQor
CitmdW5jdGlvbiBjdXJzb3JSZXF1ZXN0T25GaXJzdFN1Y2Nlc3MoKQoreworICAgIHRlc3RQYXNz
ZWQoIlJlcXVlc3QgJ3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLiIpOworICAgIGV2YWxBbmRMb2coImN1
cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJlcXVlc3RP
blNlY29uZFN1Y2Nlc3MiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gbnVsbCIpOworICAg
IGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JSZXF1ZXN0T25T
ZWNvbmRTdWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJSZXF1ZXN0ICdzdWNjZXNzJyBldmVu
dCBmaXJlZC4iKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158949</attachid>
            <date>2012-08-16 17:01:15 -0700</date>
            <delta_ts>2012-08-21 13:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94235-20120816170039.patch</filename>
            <type>text/plain</type>
            <size>18469</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdjZWY3NGNhNTA3OThh
OGYxY2M3MzgyOGQ1NTQ1OGVjNzFkM2NjNC4uMGE4NjMzYzU2NmEzNjg1ZDdlN2E3NjZkNWY3NzRk
MTMxYTA2N2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJS
ZXF1ZXN0IGNhbiBiZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIGEgInJhY2UiIHdoZXJlIEdDIG1h
eSBhdHRlbXB0IHRvIHJlY2xhaW0gSURCIG9iamVjdHMgdGhhdCBhcmUgbWFya2VkCisgICAgICAg
ICJkb25lIiBwcmlvciB0byB0aGUgY29tcGxldGlvbiBvZiB0aGUgZXZlbnQgZGlzcGF0Y2guIFRo
ZSBzY3JpcHQgcnVudGltZQorICAgICAgICBtYXkgZGVjaWRlIHRvIGRvIGEgR0MgcGFzcyBiZWZv
cmUgY2FsbGluZyB0aGUgZXZlbnQgaGFuZGxlciwgcmVsZWFzaW5nIHRoZQorICAgICAgICBvYmpl
Y3QgYW5kIHR1cm5pbmcgdGhlIGRpc3BhdGNoIGludG8gYSBuby1vcC4KKworICAgICAgICBUaGlz
IGlzIGEgcGFydGlhbCByZXZlcnNpb24gKHdpdGggcmVuYW1lcywgZXRjKSBvZiByMTIzMjc1LCBy
MTI0ODQyLAorICAgICAgICBhbmQgcjEyMTQ5Mi4gQWRkZWQgYSBuZXcgdGVzdCwgYWx0aG91Z2gg
aXQgZG9lcyBub3QgZXhlcmNpc2UgdGhlICJyYWNlIgorICAgICAgICBjb25kaXRpb24gZGlyZWN0
bHkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS5o
dG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29y
a2Vycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbG9zZSk6IExldCB0aGUgSURCUmVxdWVzdCBr
bm93IGl0IHRoaXMgY3Vyc29yIHdvbid0CisgICAgICAgIG1ha2UgaXQgZmlyZSBhZ2Fpbi4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOiBSZWludHJvZHVjZSAiYW0gSSBkb25lPyIgZmxh
Zy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmZpbmlzaEN1cnNvcik6IEN1cnNvcnMg
bWF5IGZpcmUgZXZlbnRzIGF0IHRoZSBzYW1lCisgICAgICAgIElEQlJlcXVlc3QgcmVwZWF0ZWRs
eSwgc28gd2UgbmVlZCB0byBrbm93IHdoZW4gdGhleSdyZSBhcmUgcmVhbGx5IGRvbmUuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSk6IFRlc3QgdGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpk
aXNwYXRjaEV2ZW50KTogU2V0IHRoZSBmbGFnLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpJREJUcmFuc2FjdGlvbik6IFJlaW50cm9kdWNlICJhbSBJIGRvbmU/IiBmbGFnLgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6IFRl
c3QgdGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hF
dmVudCk6IFNldCB0aGUgZmxhZy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oOgorCiAyMDEyLTA4LTE1ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29t
PgogCiAgICAgICAgIE1hcmsgU2tpYSBhbmQgQ29tcG9zaXRvciBDb250ZXh0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMTUzOWM2Mjg3
YjZkMzkyY2VhMDczYWRiN2Q0NjJiMmM2ZGQwZDZiYS4uOTAzZGFiNTgzYzM2MzJhNzY2Yjk1ZDk3
OWIzZTI1ZDlmYjczNTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCkBAIC0yNjIsNiArMjYyLDcgQEAgdm9pZCBJREJDdXJzb3I6OnBvc3RT
dWNjZXNzSGFuZGxlckNhbGxiYWNrKCkKIHZvaWQgSURCQ3Vyc29yOjpjbG9zZSgpCiB7CiAgICAg
QVNTRVJUKG1fcmVxdWVzdCk7CisgICAgbV9yZXF1ZXN0LT5maW5pc2hDdXJzb3IoKTsKICAgICBt
X3JlcXVlc3QuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCBmMDg4NmM2NmNiMWRmY2RjZjA0YzEwM2ZlYTFkNThj
MzA1OGU5MjRhLi5hY2FiNTRmYTU3MWNmZDBmMGM1ODUwODc1M2Q3OWUxZDY3MjM0MjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAt
NTgsOSArNTgsMTEgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fdHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3JlYWR5U3RhdGUoUEVORElORykKICAgICAsIG1fcmVx
dWVzdEFib3J0ZWQoZmFsc2UpCisgICAgLCBtX2hhc1BlbmRpbmdBY3Rpdml0eSh0cnVlKQogICAg
ICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAgICAsIG1fY3Vyc29yVHlwZShJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpJbnZhbGlkQ3Vyc29yVHlwZSkKICAgICAsIG1fY3Vyc29yRGlyZWN0
aW9uKElEQkN1cnNvcjo6TkVYVCkKKyAgICAsIG1fY3Vyc29yRmluaXNoZWQoZmFsc2UpCiAgICAg
LCBtX3BlbmRpbmdDdXJzb3IoMCkKIHsKICAgICBpZiAobV90cmFuc2FjdGlvbikgewpAQCAtMjE0
LDYgKzIxNiwxMSBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleQogICAgIG1fcmVzdWx0ID0gSURC
QW55OjpjcmVhdGUoSURCQ3Vyc29yV2l0aFZhbHVlOjpmcm9tQ3Vyc29yKGN1cnNvcikpOwogfQog
Cit2b2lkIElEQlJlcXVlc3Q6OmZpbmlzaEN1cnNvcigpCit7CisgICAgbV9jdXJzb3JGaW5pc2hl
ZCA9IHRydWU7Cit9CisKIGJvb2wgSURCUmVxdWVzdDo6c2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29u
c3QKIHsKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQpAQCAtMzg5LDcgKzM5Niw3IEBAIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKICAgICAvLyBGSVhNRTogSW4gYW4gaWRlYWwgd29ybGQsIHdlIHNob3VsZCBy
ZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGFueW9uZSBoYXMgYSBvciBjYW4KICAgICAvLyAgICAgICAg
Z2V0IGEgaGFuZGxlIHRvIHVzIGFuZCB3ZSBoYXZlIGV2ZW50IGxpc3RlbmVycy4gVGhpcyBpcyBv
cmRlciB0byBoYW5kbGUKICAgICAvLyAgICAgICAgdXNlciBnZW5lcmF0ZWQgZXZlbnRzIHByb3Bl
cmx5LgotICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBBY3RpdmVET01PYmpl
Y3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0
eSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIElE
QlJlcXVlc3Q6OnN0b3AoKQpAQCAtNDIzLDYgKzQzMCw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBJREJfVFJBQ0UoIklEQlJl
cXVlc3Q6OmRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJ
TkcpOwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CisgICAgQVNTRVJUKG1faGFzUGVu
ZGluZ0FjdGl2aXR5KTsKICAgICBBU1NFUlQobV9lbnF1ZXVlZEV2ZW50cy5zaXplKCkpOwogICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFy
Z2V0KCkgPT0gdGhpcyk7CkBAIC00NjgsNiArNDc2LDEwIEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBpZiAoY3Vyc29yVG9Ob3Rp
ZnkpCiAgICAgICAgIGN1cnNvclRvTm90aWZ5LT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
OwogCisgICAgLy8gRklYTUU6IFNob3VsZCByZW1haW4gdHJ1ZSBhZnRlciAidXBncmFkZW5lZWRl
ZCIgaXMgZmlyZWQuCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYmICghY3Vyc29yVG9O
b3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkpCisgICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5
ID0gZmFsc2U7CisKICAgICBpZiAobV90cmFuc2FjdGlvbikgewogICAgICAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCAmJiBkb250UHJldmVudERlZmF1bHQg
JiYgIW1fcmVxdWVzdEFib3J0ZWQpIHsKICAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEVy
cm9yKG1fZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oCmluZGV4IGQ4MWMzZjc4NGFjYTRmNjJkZGEzZTg1MmY0YTU5NDM0OWQwOTNiNTUuLjc2
YTJjYTJmZDdkZDE4ZWJjMmFlNzMxNDg0NGEyZTM4MDYzY2YzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbWFya0Vhcmx5RGVhdGgoKTsKICAgICB2b2lkIHNldEN1cnNvckRldGFp
bHMoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24pOwogICAgIHZvaWQgc2V0UGVuZGluZ0N1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4p
OworICAgIHZvaWQgZmluaXNoQ3Vyc29yKCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCiAgICAgLy8g
SURCQ2FsbGJhY2tzCkBAIC0xMzAsMTIgKzEzMSwxNCBAQCBwcml2YXRlOgogCiAgICAgUmVhZHlT
dGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9vbCBtX3JlcXVlc3RBYm9ydGVkOyAvLyBNYXkgYmUg
YWJvcnRlZCBieSB0cmFuc2FjdGlvbiB0aGVuIHJlY2VpdmUgYXN5bmMgb25zdWNjZXNzOyBpZ25v
cmUgdnMuIGFzc2VydC4KKyAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wg
bV9jb250ZXh0U3RvcHBlZDsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5xdWV1ZWRF
dmVudHM7CiAKICAgICAvLyBPbmx5IHVzZWQgaWYgdGhlIHJlc3VsdCB0eXBlIHdpbGwgYmUgYSBj
dXJzb3IuCiAgICAgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBtX2N1cnNv
clR5cGU7CiAgICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gbV9jdXJzb3JEaXJlY3Rpb247CisgICAg
Ym9vbCBtX2N1cnNvckZpbmlzaGVkOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1
cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKICAgICBSZWZQdHI8SURCS2V5
PiBtX2N1cnNvclByaW1hcnlLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYTIzM2U3YTMwZTk3MDE3YjdlMDgwYzA2
MDY1NDY1MGI4NThhNTM0Yi4uN2QzOWNlZTA2YjNiNzUzNjJjOWIwY2M5ZGFmNjM4ZGUzMmExYWM3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcApAQCAtODYsNiArODYsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcgogICAg
ICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2FjdGl2ZSh0cnVlKQogICAgICwgbV9zdGF0ZShVbnVz
ZWQpCisgICAgLCBtX2hhc1BlbmRpbmdBY3Rpdml0eSh0cnVlKQogICAgICwgbV9jb250ZXh0U3Rv
cHBlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKQEAgLTMxMyw3ICszMTQsNyBA
QCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIC8v
IEZJWE1FOiBJbiBhbiBpZGVhbCB3b3JsZCwgd2Ugc2hvdWxkIHJldHVybiB0cnVlIGFzIGxvbmcg
YXMgYW55b25lIGhhcyBhIG9yIGNhbgogICAgIC8vICAgICAgICBnZXQgYSBoYW5kbGUgdG8gdXMg
b3IgYW55IGNoaWxkIHJlcXVlc3Qgb2JqZWN0IGFuZCBhbnkgb2YgdGhvc2UgaGF2ZQogICAgIC8v
ICAgICAgICBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgIGluIG9yZGVyIHRvIGhhbmRsZSB1c2Vy
IGdlbmVyYXRlZCBldmVudHMgcHJvcGVybHkuCi0gICAgcmV0dXJuIG1fc3RhdGUgIT0gRmluaXNo
ZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4g
bV9oYXNQZW5kaW5nQWN0aXZpdHkgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZp
dHkoKTsKIH0KIAogSURCVHJhbnNhY3Rpb246Ok1vZGUgSURCVHJhbnNhY3Rpb246OnN0cmluZ1Rv
TW9kZShjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzYy
LDYgKzM2Myw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbjo6ZGlzcGF0
Y2hFdmVudCIpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBBU1NFUlQo
bV9oYXNQZW5kaW5nQWN0aXZpdHkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7CiAgICAgbV9zdGF0ZSA9
IEZpbmlzaGVkOwpAQCAtMzc3LDcgKzM3OSw5IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKICAgICAvLyBGSVhNRTogV2hlbiB3
ZSBhbGxvdyBjdXN0b20gZXZlbnQgZGlzcGF0Y2hpbmcsIHRoaXMgd2lsbCBwcm9iYWJseSBuZWVk
IHRvIGNoYW5nZS4KICAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY29t
cGxldGVFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50KTsK
LSAgICByZXR1cm4gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFy
Z2V0cyk7CisgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKyAgICBtX2hhc1BlbmRpbmdBY3Rpdml0
eSA9IGZhbHNlOworICAgIHJldHVybiBkb250UHJldmVudERlZmF1bHQ7CiB9CiAKIGJvb2wgSURC
VHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMWY3YWY3ZGFkMWJlOTQ4ZjZi
NDE5NTdmNzllNWY2ODc0MmI5OWFmMC4uNWQ1ZGZlYjZlMDc1MmRmNzIyZjFlYjZiNDNjYjkyNGVk
OTVmOGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBNb2Rl
IG1fbW9kZTsKICAgICBib29sIG1fYWN0aXZlOwogICAgIFN0YXRlIG1fc3RhdGU7CisgICAgYm9v
bCBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CiAgICAg
UmVmUHRyPERPTUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDdlNTQ0ODNlYjMxMmI1NThlM2Zm
Zjc2NmFiNTAzNDE0OWNmZWNiYS4uNjQ1ZTQ5NDdiM2FhMWJkNmEzNjVhMTdmZDBiYjQ2MDc3NzNl
YTkxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA4LTE2ICBKb3NodWEgQmVsbCAgPGpz
YmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJSZXF1ZXN0IGNhbiBi
ZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NDIzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbGVhc2UgcmVmZXJlbmNlcyB0byBJREJSZXF1ZXN0IGFuZCBJ
REJUcmFuc2FjdGlvbiBvYmplY3RzIGFuZCBmb3JjZSBHQywKKyAgICAgICAgdG8gZW5zdXJlIHRo
YXQgcGVuZGluZyBldmVudHMgYXJlIHN0aWxsIGZpcmVkLiAoRG9lc24ndCBleGVyY2lzZSByYWNl
CisgICAgICAgIGNvbmRpdGlvbiB3aGVyZSBHQyBpcyB0cmlnZ2VyZWQgYnkgc2NyaXB0IGR1cmlu
ZyBkaXNwYXRjaCBpdHNlbGYsIHRob3VnaC4pCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9wZW5kaW5nLWFjdGl2aXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHku
aHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3BlbmRp
bmctYWN0aXZpdHkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcmVwYXJl
RGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAodGVzdFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKHRyYW5zYWN0aW9uT25Db21wbGV0ZSk6CisgICAgICAgICh0ZXN0UmVxdWVz
dCk6CisgICAgICAgIChyZXF1ZXN0T25TdWNjZXNzKToKKyAgICAgICAgKHRlc3RDdXJzb3JSZXF1
ZXN0KToKKyAgICAgICAgKGN1cnNvclJlcXVlc3RPbkZpcnN0U3VjY2Vzcyk6CisgICAgICAgIChj
dXJzb3JSZXF1ZXN0T25TZWNvbmRTdWNjZXNzKToKKwogMjAxMi0wOC0xNSAgTGF1cm8gTmV0byAg
PGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIHVuc2tpcCBwYXNzaW5n
IGZhc3QvdGV4dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3BlbmRpbmctYWN0aXZpdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM2NTM0
YWNjNWZiNzM1ZTM0YWQ1NGQxYWM3NWU5ODQyOTE2YWY3MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNTEgQEAKK0NoZWNrcyB0aGF0IGdhcmJhZ2UgY29sbGVjdGlvbiBkb2Vzbid0
IHJlY2xhaW0gb2JqZWN0cyB3aXRoIHBlbmRpbmcgYWN0aXZpdHkKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0
SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2Vs
Zi5PSW5kZXhlZERCOworCitkYm5hbWUgPSAicGVuZGluZy1hY3Rpdml0eS5odG1sIgorCitwcmVw
YXJlRGF0YWJhc2UoKToKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVk
REIub3BlbihkYm5hbWUpCitkYiA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGRiLnZlcnNpb24gaXMg
IiIKK2RiLnNldFZlcnNpb24oJzEnKQorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUnKQorc3RvcmUucHV0KDAsIDApCisKK3Rlc3RUcmFuc2FjdGlvbigpOgordHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQordHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5z
YWN0aW9uT25Db21wbGV0ZQordHJhbnNhY3Rpb24gPSBudWxsCitzZWxmLmdjKCkKK1BBU1MgVHJh
bnNhY3Rpb24gJ2NvbXBsZXRlJyBldmVudCBmaXJlZC4KKwordGVzdFJlcXVlc3QoKToKK3RyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykKK3JlcXVlc3QgPSBzdG9yZS5nZXQoMCkKK3JlcXVlc3Qub25zdWNj
ZXNzID0gcmVxdWVzdE9uU3VjY2VzcworcmVxdWVzdCA9IG51bGwKK3NlbGYuZ2MoKQorUEFTUyBS
ZXF1ZXN0ICdzdWNjZXNzJyBldmVudCBmaXJlZC4KKwordGVzdEN1cnNvclJlcXVlc3QoKToKK3Ry
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK3N0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK3JlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yUmVxdWVzdE9uRmlyc3RTdWNjZXNzCitQQVNTIFJlcXVlc3Qg
J3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLgorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK2N1cnNvci5j
b250aW51ZSgpCityZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJlcXVlc3RPblNlY29uZFN1Y2Nl
c3MKK3JlcXVlc3QgPSBudWxsCitzZWxmLmdjKCkKK1BBU1MgUmVxdWVzdCAnc3VjY2VzcycgZXZl
bnQgZmlyZWQuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5n
LWFjdGl2aXR5LXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NGU3YWFkZGViY2MyNmMyY2YzNTYwMDY3NjE2YjY1YzA5YWM4NmM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUyIEBACitbV29ya2VyXSBDaGVja3MgdGhhdCBnYXJi
YWdlIGNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG9iamVjdHMgd2l0aCBwZW5kaW5nIGFjdGl2
aXR5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTdGFydGluZyB3b3JrZXI6IHJl
c291cmNlcy9wZW5kaW5nLWFjdGl2aXR5LmpzCitbV29ya2VyXSBpbmRleGVkREIgPSBzZWxmLmlu
ZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBz
ZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKK1tXb3JrZXJdIAorW1dvcmtlcl0g
ZGJuYW1lID0gInBlbmRpbmctYWN0aXZpdHkuanMiCitbV29ya2VyXSAKK1tXb3JrZXJdIHByZXBh
cmVEYXRhYmFzZSgpOgorW1dvcmtlcl0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkK
K1tXb3JrZXJdIGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK1tXb3JrZXJdIGRiID0gcmVxdWVzdC5y
ZXN1bHQKK1BBU1MgW1dvcmtlcl0gZGIudmVyc2lvbiBpcyAiIgorW1dvcmtlcl0gZGIuc2V0VmVy
c2lvbignMScpCitbV29ya2VyXSBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
CitbV29ya2VyXSBzdG9yZS5wdXQoMCwgMCkKK1tXb3JrZXJdIAorW1dvcmtlcl0gdGVzdFRyYW5z
YWN0aW9uKCk6CitbV29ya2VyXSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScp
CitbV29ya2VyXSB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25PbkNvbXBsZXRl
CitbV29ya2VyXSB0cmFuc2FjdGlvbiA9IG51bGwKK1tXb3JrZXJdIHNlbGYuZ2MoKQorUEFTUyBb
V29ya2VyXSBUcmFuc2FjdGlvbiAnY29tcGxldGUnIGV2ZW50IGZpcmVkLgorW1dvcmtlcl0gCitb
V29ya2VyXSB0ZXN0UmVxdWVzdCgpOgorW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKQorW1dvcmtlcl0gcmVxdWVzdCA9IHN0b3JlLmdldCgwKQorW1dvcmtlcl0gcmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZXF1ZXN0T25TdWNjZXNzCitbV29ya2VyXSByZXF1ZXN0ID0gbnVsbAor
W1dvcmtlcl0gc2VsZi5nYygpCitQQVNTIFtXb3JrZXJdIFJlcXVlc3QgJ3N1Y2Nlc3MnIGV2ZW50
IGZpcmVkLgorW1dvcmtlcl0gCitbV29ya2VyXSB0ZXN0Q3Vyc29yUmVxdWVzdCgpOgorW1dvcmtl
cl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorW1dvcmtlcl0gc3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorW1dvcmtlcl0gcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKQorW1dvcmtlcl0gcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JSZXF1
ZXN0T25GaXJzdFN1Y2Nlc3MKK1BBU1MgW1dvcmtlcl0gUmVxdWVzdCAnc3VjY2VzcycgZXZlbnQg
ZmlyZWQuCitbV29ya2VyXSBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorW1dvcmtlcl0gY3Vyc29y
LmNvbnRpbnVlKCkKK1tXb3JrZXJdIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yUmVxdWVzdE9u
U2Vjb25kU3VjY2VzcworW1dvcmtlcl0gcmVxdWVzdCA9IG51bGwKK1tXb3JrZXJdIHNlbGYuZ2Mo
KQorUEFTUyBbV29ya2VyXSBSZXF1ZXN0ICdzdWNjZXNzJyBldmVudCBmaXJlZC4KK1tXb3JrZXJd
IAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHkt
d29ya2Vycy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rp
dml0eS13b3JrZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZjMzZmMzNlYzRmM2EzOGQ0ZDcwODc1MzNj
M2QxNmFmNWUzOGQ3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29ya2Vycy5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPGJvZHk+Cis8c2NyaXB0PnN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvcGVuZGluZy1h
Y3Rpdml0eS5qcycpOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODRhYWNlM2FlYjRjODBkYjU4NmVhNGZjY2JmNzMyY2ZhZWYyMDY2ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHkuaHRtbApA
QCAtMCwwICsxLDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcGVuZGlu
Zy1hY3Rpdml0eS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wZW5kaW5nLWFjdGl2aXR5LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3BlbmRpbmctYWN0aXZpdHkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjI5OWUwMjk0MzJlYTNkZDdjNTgxMzQxYWExZTQ3MDhhYWRmOWI0YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wZW5k
aW5nLWFjdGl2aXR5LmpzCkBAIC0wLDAgKzEsOTcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQ2hlY2tzIHRoYXQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRvZXNuJ3QgcmVjbGFpbSBvYmpl
Y3RzIHdpdGggcGVuZGluZyBhY3Rpdml0eSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHNldERCTmFtZUZyb21QYXRoKCk7CisgICAgcHJl
cGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAg
cHJlYW1ibGUoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIg
PSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
Yi52ZXJzaW9uIiwgIiIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMCwgMCkiKTsKKyAgICAg
ICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdFRyYW5zYWN0aW9uOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0VHJhbnNhY3Rpb24o
KQoreworICAgIHByZWFtYmxlKCk7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSB0cmFuc2FjdGlvbk9uQ29tcGxldGUiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCkiKTsKK30KKworZnVuY3Rp
b24gdHJhbnNhY3Rpb25PbkNvbXBsZXRlKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlv
biAnY29tcGxldGUnIGV2ZW50IGZpcmVkLiIpOworICAgIHRlc3RSZXF1ZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RSZXF1ZXN0KCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IHN0b3JlLmdldCgwKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qu
b25zdWNjZXNzID0gcmVxdWVzdE9uU3VjY2VzcyIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBudWxsIik7CisgICAgZXZhbEFuZExvZygic2VsZi5nYygpIik7Cit9CisKK2Z1bmN0aW9uIHJl
cXVlc3RPblN1Y2Nlc3MoKQoreworICAgIHRlc3RQYXNzZWQoIlJlcXVlc3QgJ3N1Y2Nlc3MnIGV2
ZW50IGZpcmVkLiIpOworICAgIHRlc3RDdXJzb3JSZXF1ZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RDdXJzb3JSZXF1ZXN0KCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExv
ZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yUmVxdWVzdE9uRmlyc3RTdWNjZXNzIik7Cit9CisKK2Z1bmN0
aW9uIGN1cnNvclJlcXVlc3RPbkZpcnN0U3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiUmVx
dWVzdCAnc3VjY2VzcycgZXZlbnQgZmlyZWQuIik7CisgICAgZXZhbEFuZExvZygiY3Vyc29yID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yUmVxdWVzdE9uU2Vjb25k
U3VjY2VzcyIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBudWxsIik7CisgICAgZXZhbEFu
ZExvZygic2VsZi5nYygpIik7Cit9CisKK2Z1bmN0aW9uIGN1cnNvclJlcXVlc3RPblNlY29uZFN1
Y2Nlc3MoKQoreworICAgIHRlc3RQYXNzZWQoIlJlcXVlc3QgJ3N1Y2Nlc3MnIGV2ZW50IGZpcmVk
LiIpOworCisgICAgZGVidWcoIiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159745</attachid>
            <date>2012-08-21 13:05:01 -0700</date>
            <delta_ts>2012-08-21 14:03:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94235-20120821130500.patch</filename>
            <type>text/plain</type>
            <size>18300</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY4OTBlNTI4ZGI2ZmM5
Y2ZkNzJhMzc0ZTVlZjM0MmY5MTdjMDFlZS4uMDM1NWY1YzhmMzkzZTVkMmQ1ZjkxZDMwOTViYjIy
MGRkNzM0ODEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJS
ZXF1ZXN0IGNhbiBiZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIGEgInJhY2UiIHdoZXJlIEdDIG1h
eSBhdHRlbXB0IHRvIHJlY2xhaW0gSURCIG9iamVjdHMgdGhhdCBhcmUgbWFya2VkCisgICAgICAg
ICJkb25lIiBwcmlvciB0byB0aGUgY29tcGxldGlvbiBvZiB0aGUgZXZlbnQgZGlzcGF0Y2guIFRo
ZSBzY3JpcHQgcnVudGltZQorICAgICAgICBtYXkgZGVjaWRlIHRvIGRvIGEgR0MgcGFzcyBiZWZv
cmUgY2FsbGluZyB0aGUgZXZlbnQgaGFuZGxlciwgcmVsZWFzaW5nIHRoZQorICAgICAgICBvYmpl
Y3QgYW5kIHR1cm5pbmcgdGhlIGRpc3BhdGNoIGludG8gYSBuby1vcC4KKworICAgICAgICBUaGlz
IGlzIGEgcGFydGlhbCByZXZlcnNpb24gKHdpdGggcmVuYW1lcywgZXRjKSBvZiByMTIzMjc1LCBy
MTI0ODQyLAorICAgICAgICBhbmQgcjEyMTQ5Mi4gQWRkZWQgYSBuZXcgdGVzdCwgYWx0aG91Z2gg
aXQgZG9lcyBub3QgZXhlcmNpc2UgdGhlICJyYWNlIgorICAgICAgICBjb25kaXRpb24gZGlyZWN0
bHkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS5o
dG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29y
a2Vycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbG9zZSk6IExldCB0aGUgSURCUmVxdWVzdCBr
bm93IGl0IHRoaXMgY3Vyc29yIHdvbid0CisgICAgICAgIG1ha2UgaXQgZmlyZSBhZ2Fpbi4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOiBSZWludHJvZHVjZSAiYW0gSSBkb25lPyIgZmxh
Zy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmZpbmlzaEN1cnNvcik6IEN1cnNvcnMg
bWF5IGZpcmUgZXZlbnRzIGF0IHRoZSBzYW1lCisgICAgICAgIElEQlJlcXVlc3QgcmVwZWF0ZWRs
eSwgc28gd2UgbmVlZCB0byBrbm93IHdoZW4gdGhleSdyZSBhcmUgcmVhbGx5IGRvbmUuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSk6IFRlc3QgdGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpk
aXNwYXRjaEV2ZW50KTogU2V0IHRoZSBmbGFnLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpJREJUcmFuc2FjdGlvbik6IFJlaW50cm9kdWNlICJhbSBJIGRvbmU/IiBmbGFnLgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6IFRl
c3QgdGhlIGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hF
dmVudCk6IFNldCB0aGUgZmxhZy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oOgorCiAyMDEyLTA4LTIwICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBzY3JlZW4gc3BhY2Ugc2Nyb2xs
IGdlc3R1cmVzIHRvIGxheWVyIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCAxNTM5YzYyODdiNmQzOTJjZWEwNzNhZGI3ZDQ2MmIy
YzZkZDBkNmJhLi45MDNkYWI1ODNjMzYzMmE3NjZiOTVkOTc5YjNlMjVkOWZiNzM1ODkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTI2
Miw2ICsyNjIsNyBAQCB2b2lkIElEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2so
KQogdm9pZCBJREJDdXJzb3I6OmNsb3NlKCkKIHsKICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKKyAg
ICBtX3JlcXVlc3QtPmZpbmlzaEN1cnNvcigpOwogICAgIG1fcmVxdWVzdC5jbGVhcigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmlu
ZGV4IGE2MzMzOWYyYTIzOWFhMzM5ZDMyNDkxNDJhYTAyY2IyMDQ2Yzc4YzQuLjA3OTFkZTlhYjk4
OGQ2MTIwNWQyMWQwMzVkY2I1M2NmYWY2MWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC02Myw2ICs2Myw3IEBAIElEQlJlcXVl
c3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3Jlc3VsdCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkK
ICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCisgICAgLCBtX2hhc1BlbmRpbmdBY3Rpdml0
eSh0cnVlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fcmVhZHlT
dGF0ZShQRU5ESU5HKQogICAgICwgbV9yZXF1ZXN0QWJvcnRlZChmYWxzZSkKQEAgLTcwLDYgKzcx
LDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fdGFza1R5cGUodGFza1R5cGUp
CiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1
cnNvclR5cGUpCiAgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJREJDdXJzb3I6Ok5FWFQpCisgICAg
LCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDApCiAgICAg
LCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQoZmFsc2UpCiB7CkBAIC0yMjQsNiArMjI2LDEx
IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5CiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0
ZShJREJDdXJzb3JXaXRoVmFsdWU6OmZyb21DdXJzb3IoY3Vyc29yKSk7CiB9CiAKK3ZvaWQgSURC
UmVxdWVzdDo6ZmluaXNoQ3Vyc29yKCkKK3sKKyAgICBtX2N1cnNvckZpbmlzaGVkID0gdHJ1ZTsK
K30KKwogYm9vbCBJREJSZXF1ZXN0OjpzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdAogewogICAg
IGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCkBAIC00
MDQsNyArNDExLDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dAogICAgIC8vIEZJWE1FOiBJbiBhbiBpZGVhbCB3b3JsZCwgd2Ugc2hvdWxkIHJldHVybiB0cnVl
IGFzIGxvbmcgYXMgYW55b25lIGhhcyBhIG9yIGNhbgogICAgIC8vICAgICAgICBnZXQgYSBoYW5k
bGUgdG8gdXMgYW5kIHdlIGhhdmUgZXZlbnQgbGlzdGVuZXJzLiBUaGlzIGlzIG9yZGVyIHRvIGhh
bmRsZQogICAgIC8vICAgICAgICB1c2VyIGdlbmVyYXRlZCBldmVudHMgcHJvcGVybHkuCi0gICAg
cmV0dXJuIG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1faGFzUGVuZGluZ0FjdGl2aXR5IHx8IEFjdGl2
ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6
c3RvcCgpCkBAIC00MzgsNiArNDQ1LDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudCIpOwogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CiAgICAg
QVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKKyAgICBBU1NFUlQobV9oYXNQZW5kaW5nQWN0aXZp
dHkpOwogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0
aGlzKTsKQEAgLTQ4OCw2ICs0OTYsOSBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIG1fZGlkRmlyZVVwZ3JhZGVOZWVkZWRF
dmVudCA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYmICgh
Y3Vyc29yVG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZlbnQtPnR5cGUoKSAhPSBl
dmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KQorICAgICAgICBtX2hhc1BlbmRpbmdBY3Rp
dml0eSA9IGZhbHNlOworCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgZG9udFByZXZlbnREZWZh
dWx0ICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5z
ZXRFcnJvcihtX2Vycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaAppbmRleCA3YTEyNDk2YWM2OTYzNmYxMDdiMzIzY2VlNDgzYTQ0YWEwYTc1OWU2
Li45MmQ1OGI3NDg1MzQ2YTEyMmI1ZTg0YzBhMmJkNmMyOWI5NTQwMDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC03Nyw2ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtFYXJseURlYXRoKCk7CiAgICAgdm9pZCBzZXRDdXJzb3JE
ZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUsIElEQkN1cnNvcjo6
RGlyZWN0aW9uKTsKICAgICB2b2lkIHNldFBlbmRpbmdDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJz
b3I+KTsKKyAgICB2b2lkIGZpbmlzaEN1cnNvcigpOwogICAgIHZvaWQgYWJvcnQoKTsKIAogICAg
IC8vIElEQkNhbGxiYWNrcwpAQCAtMTM4LDExICsxMzksMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SURCQW55PiBtX3NvdXJjZTsKICAgICBjb25zdCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CiAKKyAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2
aXR5OwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAg
IC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KICAgICBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKICAgICBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBtX2N1cnNvckRpcmVjdGlvbjsKKyAgICBib29sIG1fY3Vyc29y
RmluaXNoZWQ7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gbV9wZW5kaW5nQ3Vyc29yOwogICAgIFJl
ZlB0cjxJREJLZXk+IG1fY3Vyc29yS2V5OwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yUHJp
bWFyeUtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcAppbmRleCA1MDIxNmY2YjNhOWM5ODk3OWZhNjk3YzU5ODNkMDQyOWI1NDE4
MjdkLi4yMWU1ZjMyOGUzNDU1Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVmNjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC05NCw2ICs5NCw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyCiAgICAgLCBtX21vZGUobW9k
ZSkKICAgICAsIG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKKyAgICAsIG1f
aGFzUGVuZGluZ0FjdGl2aXR5KHRydWUpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQog
ewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwpAQCAtMzIxLDcgKzMyMiw3IEBAIGJvb2wgSURCVHJh
bnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IEluIGFu
IGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0dXJuIHRydWUgYXMgbG9uZyBhcyBhbnlvbmUgaGFz
IGEgb3IgY2FuCiAgICAgLy8gICAgICAgIGdldCBhIGhhbmRsZSB0byB1cyBvciBhbnkgY2hpbGQg
cmVxdWVzdCBvYmplY3QgYW5kIGFueSBvZiB0aG9zZSBoYXZlCiAgICAgLy8gICAgICAgIGV2ZW50
IGxpc3RlbmVycy4gVGhpcyBpcyAgaW4gb3JkZXIgdG8gaGFuZGxlIHVzZXIgZ2VuZXJhdGVkIGV2
ZW50cyBwcm9wZXJseS4KLSAgICByZXR1cm4gbV9zdGF0ZSAhPSBGaW5pc2hlZCB8fCBBY3RpdmVE
T01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX2hhc1BlbmRpbmdB
Y3Rpdml0eSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBJ
REJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5nVG9Nb2RlKGNvbnN0IFN0
cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzAsNiArMzcxLDcgQEAg
Ym9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKIHsKICAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50Iik7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIEFTU0VSVChtX2hhc1BlbmRpbmdB
Y3Rpdml0eSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNT
RVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7CkBA
IC0zOTIsNiArMzk0LDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsK
ICAgICAgICAgbV9vcGVuREJSZXF1ZXN0LT50cmFuc2FjdGlvbkRpZEZpbmlzaEFuZERpc3BhdGNo
KCk7CiAgICAgfQorICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gZmFsc2U7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAwMDVlMzczNjMwYTRkMmZmMmViYWZkODFlZTM2ZWEw
Yzk4OWE5MjA3Li43NWY1ZDkwOGUwZGJjMWQ3MTVhZWJjODc1MDVkM2QxYzU4NWEzMGYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
QEAgLTE0OCw2ICsxNDgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IE1vZGUgbV9tb2RlOwogICAg
IGJvb2wgbV9hY3RpdmU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBib29sIG1faGFzUGVuZGlu
Z0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAgICBSZWZQdHI8RE9NRXJy
b3I+IG1fZXJyb3I7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMTMxMzEyY2VkZjZlMWUzM2ZiYjlhOTM0ZmFlNTE0ZmIw
ZDQyYTU2Li4wYjA0ZmY1M2VhNDUxOWIzMzgzMzFlYjY3YmM4MTZkNjdkMDViMTJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTItMDgtMTYgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElEQlJlcXVlc3QgY2FuIGJlIEdDZCBkdXJpbmcg
ZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk0MjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVsZWFzZSByZWZlcmVuY2VzIHRvIElEQlJlcXVlc3QgYW5kIElEQlRyYW5zYWN0aW9u
IG9iamVjdHMgYW5kIGZvcmNlIEdDLAorICAgICAgICB0byBlbnN1cmUgdGhhdCBwZW5kaW5nIGV2
ZW50cyBhcmUgc3RpbGwgZmlyZWQuIChEb2Vzbid0IGV4ZXJjaXNlIHJhY2UKKyAgICAgICAgY29u
ZGl0aW9uIHdoZXJlIEdDIGlzIHRyaWdnZXJlZCBieSBzY3JpcHQgZHVyaW5nIGRpc3BhdGNoIGl0
c2VsZiwgdGhvdWdoLikKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0
aXZpdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9w
ZW5kaW5nLWFjdGl2aXR5LXdvcmtlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXdvcmtlcnMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcGVuZGluZy1hY3Rpdml0eS5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5yZXF1
ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgIChwcmVwYXJlRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh0ZXN0VHJhbnNhY3Rpb24pOgorICAgICAgICAo
dHJhbnNhY3Rpb25PbkNvbXBsZXRlKToKKyAgICAgICAgKHRlc3RSZXF1ZXN0KToKKyAgICAgICAg
KHJlcXVlc3RPblN1Y2Nlc3MpOgorICAgICAgICAodGVzdEN1cnNvclJlcXVlc3QpOgorICAgICAg
ICAoY3Vyc29yUmVxdWVzdE9uRmlyc3RTdWNjZXNzKToKKyAgICAgICAgKGN1cnNvclJlcXVlc3RP
blNlY29uZFN1Y2Nlc3MpOgorCiAyMDEyLTA4LTIwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gTWFyayBzZXZlcmFsIGluc3Bl
Y3RvciB0ZXN0cyBhcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcGVuZGluZy1hY3Rpdml0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzY1
MzRhY2M1ZmI3MzVlMzRhZDU0ZDFhYzc1ZTk4NDI5MTZhZjczCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1MSBAQAorQ2hlY2tzIHRoYXQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRvZXNu
J3QgcmVjbGFpbSBvYmplY3RzIHdpdGggcGVuZGluZyBhY3Rpdml0eQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJr
aXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBz
ZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICJwZW5kaW5nLWFjdGl2aXR5Lmh0bWwiCisKK3By
ZXBhcmVEYXRhYmFzZSgpOgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4
ZWREQi5vcGVuKGRibmFtZSkKK2RiID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBp
cyAiIgorZGIuc2V0VmVyc2lvbignMScpCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZScpCitzdG9yZS5wdXQoMCwgMCkKKwordGVzdFRyYW5zYWN0aW9uKCk6Cit0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCit0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25PbkNvbXBsZXRlCit0cmFuc2FjdGlvbiA9IG51bGwKK3NlbGYuZ2MoKQorUEFTUyBU
cmFuc2FjdGlvbiAnY29tcGxldGUnIGV2ZW50IGZpcmVkLgorCit0ZXN0UmVxdWVzdCgpOgordHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0b3JlLmdldCgwKQorcmVxdWVzdC5vbnN1
Y2Nlc3MgPSByZXF1ZXN0T25TdWNjZXNzCityZXF1ZXN0ID0gbnVsbAorc2VsZi5nYygpCitQQVNT
IFJlcXVlc3QgJ3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLgorCit0ZXN0Q3Vyc29yUmVxdWVzdCgpOgor
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorc3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JSZXF1ZXN0T25GaXJzdFN1Y2Nlc3MKK1BBU1MgUmVxdWVz
dCAnc3VjY2VzcycgZXZlbnQgZmlyZWQuCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorY3Vyc29y
LmNvbnRpbnVlKCkKK3JlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yUmVxdWVzdE9uU2Vjb25kU3Vj
Y2VzcworcmVxdWVzdCA9IG51bGwKK3NlbGYuZ2MoKQorUEFTUyBSZXF1ZXN0ICdzdWNjZXNzJyBl
dmVudCBmaXJlZC4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRp
bmctYWN0aXZpdHktd29ya2Vycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXdvcmtlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0ZTdhYWRkZWJjYzI2YzJjZjM1NjAwNjc2MTZiNjVjMDlhYzg2YzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXdvcmtl
cnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1tXb3JrZXJdIENoZWNrcyB0aGF0IGdh
cmJhZ2UgY29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gb2JqZWN0cyB3aXRoIHBlbmRpbmcgYWN0
aXZpdHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YXJ0aW5nIHdvcmtlcjog
cmVzb3VyY2VzL3BlbmRpbmctYWN0aXZpdHkuanMKK1tXb3JrZXJdIGluZGV4ZWREQiA9IHNlbGYu
aW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8
IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworW1dvcmtlcl0gCitbV29ya2Vy
XSBkYm5hbWUgPSAicGVuZGluZy1hY3Rpdml0eS5qcyIKK1tXb3JrZXJdIAorW1dvcmtlcl0gcHJl
cGFyZURhdGFiYXNlKCk6CitbV29ya2VyXSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQorW1dvcmtlcl0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorW1dvcmtlcl0gZGIgPSByZXF1ZXN0
LnJlc3VsdAorUEFTUyBbV29ya2VyXSBkYi52ZXJzaW9uIGlzICIiCitbV29ya2VyXSBkYi5zZXRW
ZXJzaW9uKCcxJykKK1tXb3JrZXJdIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
JykKK1tXb3JrZXJdIHN0b3JlLnB1dCgwLCAwKQorW1dvcmtlcl0gCitbV29ya2VyXSB0ZXN0VHJh
bnNhY3Rpb24oKToKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JykKK1tXb3JrZXJdIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbk9uQ29tcGxl
dGUKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gbnVsbAorW1dvcmtlcl0gc2VsZi5nYygpCitQQVNT
IFtXb3JrZXJdIFRyYW5zYWN0aW9uICdjb21wbGV0ZScgZXZlbnQgZmlyZWQuCitbV29ya2VyXSAK
K1tXb3JrZXJdIHRlc3RSZXF1ZXN0KCk6CitbV29ya2VyXSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5z
YWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZScpCitbV29ya2VyXSByZXF1ZXN0ID0gc3RvcmUuZ2V0KDApCitbV29ya2VyXSByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHJlcXVlc3RPblN1Y2Nlc3MKK1tXb3JrZXJdIHJlcXVlc3QgPSBudWxs
CitbV29ya2VyXSBzZWxmLmdjKCkKK1BBU1MgW1dvcmtlcl0gUmVxdWVzdCAnc3VjY2VzcycgZXZl
bnQgZmlyZWQuCitbV29ya2VyXSAKK1tXb3JrZXJdIHRlc3RDdXJzb3JSZXF1ZXN0KCk6CitbV29y
a2VyXSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitbV29ya2VyXSByZXF1ZXN0ID0g
c3RvcmUub3BlbkN1cnNvcigpCitbV29ya2VyXSByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJl
cXVlc3RPbkZpcnN0U3VjY2VzcworUEFTUyBbV29ya2VyXSBSZXF1ZXN0ICdzdWNjZXNzJyBldmVu
dCBmaXJlZC4KK1tXb3JrZXJdIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0CitbV29ya2VyXSBjdXJz
b3IuY29udGludWUoKQorW1dvcmtlcl0gcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JSZXF1ZXN0
T25TZWNvbmRTdWNjZXNzCitbV29ya2VyXSByZXF1ZXN0ID0gbnVsbAorW1dvcmtlcl0gc2VsZi5n
YygpCitQQVNTIFtXb3JrZXJdIFJlcXVlc3QgJ3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLgorW1dvcmtl
cl0gCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0
eS13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFj
dGl2aXR5LXdvcmtlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmMzNmYzM2VjNGYzYTM4ZDRkNzA4NzUz
M2MzZDE2YWY1ZTM4ZDczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJzLmh0bWwKQEAgLTAsMCArMSw3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+c3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9wZW5kaW5n
LWFjdGl2aXR5LmpzJyk7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHkuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NGFhY2UzYWViNGM4MGRiNTg2ZWE0ZmNjYmY3MzJjZmFlZjIwNjZlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS5odG1s
CkBAIC0wLDAgKzEsNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wZW5k
aW5nLWFjdGl2aXR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3BlbmRpbmctYWN0aXZpdHkuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcGVuZGluZy1hY3Rpdml0eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMjk5ZTAyOTQzMmVhM2RkN2M1ODEzNDFhYTFlNDcwOGFhZGY5YjRiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Bl
bmRpbmctYWN0aXZpdHkuanMKQEAgLTAsMCArMSw5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJDaGVja3MgdGhhdCBnYXJiYWdlIGNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG9i
amVjdHMgd2l0aCBwZW5kaW5nIGFjdGl2aXR5Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgc2V0REJOYW1lRnJvbVBhdGgoKTsKKyAgICBw
cmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAg
ICBwcmVhbWJsZSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJk
YiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRiLnZlcnNpb24iLCAiIik7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgeworICAgICAgICAgICAgICAgIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgwLCAwKSIpOworICAg
ICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VHJhbnNhY3Rpb247CisgICAgICAg
ICAgICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3RUcmFuc2FjdGlv
bigpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IHRyYW5zYWN0aW9uT25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uID0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworfQorCitmdW5j
dGlvbiB0cmFuc2FjdGlvbk9uQ29tcGxldGUoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0
aW9uICdjb21wbGV0ZScgZXZlbnQgZmlyZWQuIik7CisgICAgdGVzdFJlcXVlc3QoKTsKK30KKwor
ZnVuY3Rpb24gdGVzdFJlcXVlc3QoKQoreworICAgIHByZWFtYmxlKCk7CisgICAgZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuZ2V0KDApIik7CisgICAgZXZhbEFuZExvZygicmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZXF1ZXN0T25TdWNjZXNzIik7CisgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCkiKTsKK30KKworZnVuY3Rpb24g
cmVxdWVzdE9uU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiUmVxdWVzdCAnc3VjY2Vzcycg
ZXZlbnQgZmlyZWQuIik7CisgICAgdGVzdEN1cnNvclJlcXVlc3QoKTsKK30KKworZnVuY3Rpb24g
dGVzdEN1cnNvclJlcXVlc3QoKQoreworICAgIHByZWFtYmxlKCk7CisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygicmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JSZXF1ZXN0T25GaXJzdFN1Y2Nlc3MiKTsKK30KKworZnVu
Y3Rpb24gY3Vyc29yUmVxdWVzdE9uRmlyc3RTdWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJS
ZXF1ZXN0ICdzdWNjZXNzJyBldmVudCBmaXJlZC4iKTsKKyAgICBldmFsQW5kTG9nKCJjdXJzb3Ig
PSByZXF1ZXN0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7
CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JSZXF1ZXN0T25TZWNv
bmRTdWNjZXNzIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IG51bGwiKTsKKyAgICBldmFs
QW5kTG9nKCJzZWxmLmdjKCkiKTsKK30KKworZnVuY3Rpb24gY3Vyc29yUmVxdWVzdE9uU2Vjb25k
U3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiUmVxdWVzdCAnc3VjY2VzcycgZXZlbnQgZmly
ZWQuIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3Qo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159764</attachid>
            <date>2012-08-21 14:03:11 -0700</date>
            <delta_ts>2012-08-21 19:43:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-94235-20120821140310.patch</filename>
            <type>text/plain</type>
            <size>18083</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY4OTBlNTI4ZGI2ZmM5
Y2ZkNzJhMzc0ZTVlZjM0MmY5MTdjMDFlZS4uYzg0OWM5MzNiZmE3Yzg2ZmUxNTcwZjJlYzY0MGIx
ODM5MWMyYzk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJS
ZXF1ZXN0IGNhbiBiZSBHQ2QgZHVyaW5nIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgQXZvaWQgYSAicmFjZSIgd2hlcmUgR0MgbWF5IGF0
dGVtcHQgdG8gcmVjbGFpbSBJREIgb2JqZWN0cyB0aGF0IGFyZSBtYXJrZWQKKyAgICAgICAgImRv
bmUiIHByaW9yIHRvIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBldmVudCBkaXNwYXRjaC4gVGhlIHNj
cmlwdCBydW50aW1lCisgICAgICAgIG1heSBkZWNpZGUgdG8gZG8gYSBHQyBwYXNzIGJlZm9yZSBj
YWxsaW5nIHRoZSBldmVudCBoYW5kbGVyLCByZWxlYXNpbmcgdGhlCisgICAgICAgIG9iamVjdCBh
bmQgdHVybmluZyB0aGUgZGlzcGF0Y2ggaW50byBhIG5vLW9wLgorCisgICAgICAgIFRoaXMgaXMg
YSBwYXJ0aWFsIHJldmVyc2lvbiAod2l0aCByZW5hbWVzLCBldGMpIG9mIHIxMjMyNzUsIHIxMjQ4
NDIsCisgICAgICAgIGFuZCByMTIxNDkyLiBBZGRlZCBhIG5ldyB0ZXN0LCBhbHRob3VnaCBpdCBk
b2VzIG5vdCBleGVyY2lzZSB0aGUgInJhY2UiCisgICAgICAgIGNvbmRpdGlvbiBkaXJlY3RseS4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5Lmh0bWwK
KyAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJz
Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNsb3NlKTogTGV0IHRoZSBJREJSZXF1ZXN0IGtub3cg
aXQgdGhpcyBjdXJzb3Igd29uJ3QKKyAgICAgICAgbWFrZSBpdCBmaXJlIGFnYWluLgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6IFJlaW50cm9kdWNlICJhbSBJIGRvbmU/IiBmbGFnLgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZmluaXNoQ3Vyc29yKTogQ3Vyc29ycyBtYXkg
ZmlyZSBldmVudHMgYXQgdGhlIHNhbWUKKyAgICAgICAgSURCUmVxdWVzdCByZXBlYXRlZGx5LCBz
byB3ZSBuZWVkIHRvIGtub3cgd2hlbiB0aGV5J3JlIGFyZSByZWFsbHkgZG9uZS4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2
aXR5KTogVGVzdCB0aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3Bh
dGNoRXZlbnQpOiBTZXQgdGhlIGZsYWcuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oOgorICAgICAgICAoSURCUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OklEQlRyYW5zYWN0aW9uKTogUmVpbnRyb2R1Y2UgImFtIEkgZG9uZT8iIGZsYWcuCisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KTogVGVzdCB0
aGUgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KTogU2V0IHRoZSBmbGFnLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmg6CisKIDIwMTItMDgtMjAgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IHNjcmVlbiBzcGFjZSBzY3JvbGwgZ2Vz
dHVyZXMgdG8gbGF5ZXIgc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCmluZGV4IDE1MzljNjI4N2I2ZDM5MmNlYTA3M2FkYjdkNDYyYjJjNmRk
MGQ2YmEuLjkwM2RhYjU4M2MzNjMyYTc2NmI5NWQ5NzliM2UyNWQ5ZmI3MzU4OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMjYyLDYg
KzI2Miw3IEBAIHZvaWQgSURCQ3Vyc29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpCiB2
b2lkIElEQkN1cnNvcjo6Y2xvc2UoKQogewogICAgIEFTU0VSVChtX3JlcXVlc3QpOworICAgIG1f
cmVxdWVzdC0+ZmluaXNoQ3Vyc29yKCk7CiAgICAgbV9yZXF1ZXN0LmNsZWFyKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXgg
YTYzMzM5ZjJhMjM5YWEzMzlkMzI0OTE0MmFhMDJjYjIwNDZjNzhjNC4uZjY4YTUyNWRkYzAzOTUz
ZjQ4ZmQyMzIwMWNjMThhM2EzMTk2YjhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTY4LDggKzY4LDEwIEBAIElEQlJlcXVlc3Q6
OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjCiAgICAgLCBtX3JlcXVlc3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQogICAgICwgbV90YXNrVHlwZSh0YXNrVHlwZSkKKyAgICAsIG1faGFzUGVuZGlu
Z0FjdGl2aXR5KHRydWUpCiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJREJDdXJz
b3I6Ok5FWFQpCisgICAgLCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wZW5kaW5n
Q3Vyc29yKDApCiAgICAgLCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQoZmFsc2UpCiB7CkBA
IC0yMjQsNiArMjI2LDExIEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5CiAgICAgbV9yZXN1bHQg
PSBJREJBbnk6OmNyZWF0ZShJREJDdXJzb3JXaXRoVmFsdWU6OmZyb21DdXJzb3IoY3Vyc29yKSk7
CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6ZmluaXNoQ3Vyc29yKCkKK3sKKyAgICBtX2N1cnNvckZp
bmlzaGVkID0gdHJ1ZTsKK30KKwogYm9vbCBJREJSZXF1ZXN0OjpzaG91bGRFbnF1ZXVlRXZlbnQo
KSBjb25zdAogewogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCkBAIC00MDQsNyArNDExLDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogICAgIC8vIEZJWE1FOiBJbiBhbiBpZGVhbCB3b3JsZCwgd2Ugc2hv
dWxkIHJldHVybiB0cnVlIGFzIGxvbmcgYXMgYW55b25lIGhhcyBhIG9yIGNhbgogICAgIC8vICAg
ICAgICBnZXQgYSBoYW5kbGUgdG8gdXMgYW5kIHdlIGhhdmUgZXZlbnQgbGlzdGVuZXJzLiBUaGlz
IGlzIG9yZGVyIHRvIGhhbmRsZQogICAgIC8vICAgICAgICB1c2VyIGdlbmVyYXRlZCBldmVudHMg
cHJvcGVybHkuCi0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HIHx8IEFjdGl2ZURP
TU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1faGFzUGVuZGluZ0Fj
dGl2aXR5IHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIHZv
aWQgSURCUmVxdWVzdDo6c3RvcCgpCkBAIC00MzgsNiArNDQ1LDcgQEAgYm9vbCBJREJSZXF1ZXN0
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIElEQl9UUkFDRSgi
SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOwogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0g
UEVORElORyk7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKKyAgICBBU1NFUlQobV9o
YXNQZW5kaW5nQWN0aXZpdHkpOwogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
LT50YXJnZXQoKSA9PSB0aGlzKTsKQEAgLTQ4OCw2ICs0OTYsOSBAQCBib29sIElEQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIG1fZGlkRmly
ZVVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBET05FICYmICghY3Vyc29yVG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZl
bnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KQorICAgICAgICBt
X2hhc1BlbmRpbmdBY3Rpdml0eSA9IGZhbHNlOworCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsK
ICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYg
ZG9udFByZXZlbnREZWZhdWx0ICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7CiAgICAgICAgICAgICBt
X3RyYW5zYWN0aW9uLT5zZXRFcnJvcihtX2Vycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA3YTEyNDk2YWM2OTYzNmYxMDdiMzIzY2Vl
NDgzYTQ0YWEwYTc1OWU2Li45MmQ1OGI3NDg1MzQ2YTEyMmI1ZTg0YzBhMmJkNmMyOWI5NTQwMDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBA
IC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtFYXJseURlYXRoKCk7CiAgICAg
dm9pZCBzZXRDdXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5
cGUsIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKICAgICB2b2lkIHNldFBlbmRpbmdDdXJzb3IoUGFz
c1JlZlB0cjxJREJDdXJzb3I+KTsKKyAgICB2b2lkIGZpbmlzaEN1cnNvcigpOwogICAgIHZvaWQg
YWJvcnQoKTsKIAogICAgIC8vIElEQkNhbGxiYWNrcwpAQCAtMTM4LDExICsxMzksMTMgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKICAgICBjb25zdCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CiAKKyAgICBib29sIG1f
aGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVl
ZEV2ZW50czsKIAogICAgIC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBh
IGN1cnNvci4KICAgICBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIG1fY3Vy
c29yVHlwZTsKICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2N1cnNvckRpcmVjdGlvbjsKKyAg
ICBib29sIG1fY3Vyc29yRmluaXNoZWQ7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gbV9wZW5kaW5n
Q3Vyc29yOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yS2V5OwogICAgIFJlZlB0cjxJREJL
ZXk+IG1fY3Vyc29yUHJpbWFyeUtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA1MDIxNmY2YjNhOWM5ODk3OWZhNjk3
YzU5ODNkMDQyOWI1NDE4MjdkLi4yMWU1ZjMyOGUzNDU1Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVm
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCkBAIC05NCw2ICs5NCw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyCiAg
ICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3N0YXRlKFVu
dXNlZCkKKyAgICAsIG1faGFzUGVuZGluZ0FjdGl2aXR5KHRydWUpCiAgICAgLCBtX2NvbnRleHRT
dG9wcGVkKGZhbHNlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwpAQCAtMzIxLDcgKzMyMiw3
IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAg
Ly8gRklYTUU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0dXJuIHRydWUgYXMgbG9u
ZyBhcyBhbnlvbmUgaGFzIGEgb3IgY2FuCiAgICAgLy8gICAgICAgIGdldCBhIGhhbmRsZSB0byB1
cyBvciBhbnkgY2hpbGQgcmVxdWVzdCBvYmplY3QgYW5kIGFueSBvZiB0aG9zZSBoYXZlCiAgICAg
Ly8gICAgICAgIGV2ZW50IGxpc3RlbmVycy4gVGhpcyBpcyAgaW4gb3JkZXIgdG8gaGFuZGxlIHVz
ZXIgZ2VuZXJhdGVkIGV2ZW50cyBwcm9wZXJseS4KLSAgICByZXR1cm4gbV9zdGF0ZSAhPSBGaW5p
c2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVy
biBtX2hhc1BlbmRpbmdBY3Rpdml0eSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpOwogfQogCiBJREJUcmFuc2FjdGlvbjo6TW9kZSBJREJUcmFuc2FjdGlvbjo6c3RyaW5n
VG9Nb2RlKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0z
NzAsNiArMzcxLDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uOjpkaXNw
YXRjaEV2ZW50Iik7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIEFTU0VS
VChtX2hhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBtX3N0YXRl
ID0gRmluaXNoZWQ7CkBAIC0zOTIsNiArMzk0LDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgQVNTRVJUKGlzVmVy
c2lvbkNoYW5nZSgpKTsKICAgICAgICAgbV9vcGVuREJSZXF1ZXN0LT50cmFuc2FjdGlvbkRpZEZp
bmlzaEFuZERpc3BhdGNoKCk7CiAgICAgfQorICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gZmFs
c2U7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAwMDVlMzczNjMwYTRkMmZm
MmViYWZkODFlZTM2ZWEwYzk4OWE5MjA3Li43NWY1ZDkwOGUwZGJjMWQ3MTVhZWJjODc1MDVkM2Qx
YzU4NWEzMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKQEAgLTE0OCw2ICsxNDgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IE1v
ZGUgbV9tb2RlOwogICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBi
b29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAg
ICBSZWZQdHI8RE9NRXJyb3I+IG1fZXJyb3I7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMTMxMzEyY2VkZjZlMWUzM2Zi
YjlhOTM0ZmFlNTE0ZmIwZDQyYTU2Li5lMGQ5YTYwMGEyYzc2ZmVjMmQ5YmJhYTUyYzU3MTJhMWNk
MWFjY2ExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDgtMTYgIEpvc2h1YSBCZWxsICA8
anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElEQlJlcXVlc3QgY2Fu
IGJlIEdDZCBkdXJpbmcgZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBW
YWZhaS4KKworICAgICAgICBSZWxlYXNlIHJlZmVyZW5jZXMgdG8gSURCUmVxdWVzdCBhbmQgSURC
VHJhbnNhY3Rpb24gb2JqZWN0cyBhbmQgZm9yY2UgR0MsCisgICAgICAgIHRvIGVuc3VyZSB0aGF0
IHBlbmRpbmcgZXZlbnRzIGFyZSBzdGlsbCBmaXJlZC4gKERvZXNuJ3QgZXhlcmNpc2UgcmFjZQor
ICAgICAgICBjb25kaXRpb24gd2hlcmUgR0MgaXMgdHJpZ2dlcmVkIGJ5IHNjcmlwdCBkdXJpbmcg
ZGlzcGF0Y2ggaXRzZWxmLCB0aG91Z2guKQorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cGVuZGluZy1hY3Rpdml0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29ya2Vycy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29ya2Vycy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wZW5kaW5n
LWFjdGl2aXR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAocHJlcGFyZURh
dGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNj
ZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKHRlc3RUcmFuc2FjdGlvbik6
CisgICAgICAgICh0cmFuc2FjdGlvbk9uQ29tcGxldGUpOgorICAgICAgICAodGVzdFJlcXVlc3Qp
OgorICAgICAgICAocmVxdWVzdE9uU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0Q3Vyc29yUmVxdWVz
dCk6CisgICAgICAgIChjdXJzb3JSZXF1ZXN0T25GaXJzdFN1Y2Nlc3MpOgorICAgICAgICAoY3Vy
c29yUmVxdWVzdE9uU2Vjb25kU3VjY2Vzcyk6CisKIDIwMTItMDgtMjAgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBNYXJrIHNl
dmVyYWwgaW5zcGVjdG9yIHRlc3RzIGFzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAzNjUzNGFjYzVmYjczNWUzNGFkNTRkMWFjNzVlOTg0MjkxNmFmNzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUxIEBACitDaGVja3MgdGhhdCBnYXJiYWdlIGNvbGxl
Y3Rpb24gZG9lc24ndCByZWNsYWltIG9iamVjdHMgd2l0aCBwZW5kaW5nIGFjdGl2aXR5CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8
fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5k
ZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInBlbmRpbmctYWN0aXZpdHku
aHRtbCIKKworcHJlcGFyZURhdGFiYXNlKCk6CitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorZGIgPSByZXF1ZXN0LnJlc3VsdAorUEFTUyBk
Yi52ZXJzaW9uIGlzICIiCitkYi5zZXRWZXJzaW9uKCcxJykKK3N0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLnB1dCgwLCAwKQorCit0ZXN0VHJhbnNhY3Rpb24oKToK
K3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK3RyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSB0cmFuc2FjdGlvbk9uQ29tcGxldGUKK3RyYW5zYWN0aW9uID0gbnVsbAorc2VsZi5n
YygpCitQQVNTIFRyYW5zYWN0aW9uICdjb21wbGV0ZScgZXZlbnQgZmlyZWQuCisKK3Rlc3RSZXF1
ZXN0KCk6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCityZXF1ZXN0ID0gc3RvcmUuZ2V0KDApCity
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlcXVlc3RPblN1Y2Nlc3MKK3JlcXVlc3QgPSBudWxsCitzZWxm
LmdjKCkKK1BBU1MgUmVxdWVzdCAnc3VjY2VzcycgZXZlbnQgZmlyZWQuCisKK3Rlc3RDdXJzb3JS
ZXF1ZXN0KCk6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1
cnNvcigpCityZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJlcXVlc3RPbkZpcnN0U3VjY2Vzcwor
UEFTUyBSZXF1ZXN0ICdzdWNjZXNzJyBldmVudCBmaXJlZC4KK2N1cnNvciA9IHJlcXVlc3QucmVz
dWx0CitjdXJzb3IuY29udGludWUoKQorcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JSZXF1ZXN0
T25TZWNvbmRTdWNjZXNzCityZXF1ZXN0ID0gbnVsbAorc2VsZi5nYygpCitQQVNTIFJlcXVlc3Qg
J3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29ya2Vycy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjRlN2FhZGRlYmNjMjZjMmNmMzU2MDA2NzYxNmI2NWMwOWFjODZjNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0
aXZpdHktd29ya2Vycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MiBAQAorW1dvcmtlcl0gQ2hl
Y2tzIHRoYXQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRvZXNuJ3QgcmVjbGFpbSBvYmplY3RzIHdpdGgg
cGVuZGluZyBhY3Rpdml0eQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU3RhcnRp
bmcgd29ya2VyOiByZXNvdXJjZXMvcGVuZGluZy1hY3Rpdml0eS5qcworW1dvcmtlcl0gaW5kZXhl
ZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJ
bmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CitbV29ya2Vy
XSAKK1tXb3JrZXJdIGRibmFtZSA9ICJwZW5kaW5nLWFjdGl2aXR5LmpzIgorW1dvcmtlcl0gCitb
V29ya2VyXSBwcmVwYXJlRGF0YWJhc2UoKToKK1tXb3JrZXJdIGluZGV4ZWREQi5kZWxldGVEYXRh
YmFzZShkYm5hbWUpCitbV29ya2VyXSBpbmRleGVkREIub3BlbihkYm5hbWUpCitbV29ya2VyXSBk
YiA9IHJlcXVlc3QucmVzdWx0CitQQVNTIFtXb3JrZXJdIGRiLnZlcnNpb24gaXMgIiIKK1tXb3Jr
ZXJdIGRiLnNldFZlcnNpb24oJzEnKQorW1dvcmtlcl0gc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKQorW1dvcmtlcl0gc3RvcmUucHV0KDAsIDApCitbV29ya2VyXSAKK1tXb3Jr
ZXJdIHRlc3RUcmFuc2FjdGlvbigpOgorW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnKQorW1dvcmtlcl0gdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0
aW9uT25Db21wbGV0ZQorW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBudWxsCitbV29ya2VyXSBzZWxm
LmdjKCkKK1BBU1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gJ2NvbXBsZXRlJyBldmVudCBmaXJlZC4K
K1tXb3JrZXJdIAorW1dvcmtlcl0gdGVzdFJlcXVlc3QoKToKK1tXb3JrZXJdIHRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykKK1tXb3JrZXJdIHJlcXVlc3QgPSBzdG9yZS5nZXQoMCkKK1tX
b3JrZXJdIHJlcXVlc3Qub25zdWNjZXNzID0gcmVxdWVzdE9uU3VjY2VzcworW1dvcmtlcl0gcmVx
dWVzdCA9IG51bGwKK1tXb3JrZXJdIHNlbGYuZ2MoKQorUEFTUyBbV29ya2VyXSBSZXF1ZXN0ICdz
dWNjZXNzJyBldmVudCBmaXJlZC4KK1tXb3JrZXJdIAorW1dvcmtlcl0gdGVzdEN1cnNvclJlcXVl
c3QoKToKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tX
b3JrZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1tXb3JrZXJd
IHJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK1tXb3JrZXJdIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3Vyc29yUmVxdWVzdE9uRmlyc3RTdWNjZXNzCitQQVNTIFtXb3JrZXJdIFJlcXVlc3QgJ3N1
Y2Nlc3MnIGV2ZW50IGZpcmVkLgorW1dvcmtlcl0gY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK1tX
b3JrZXJdIGN1cnNvci5jb250aW51ZSgpCitbV29ya2VyXSByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvclJlcXVlc3RPblNlY29uZFN1Y2Nlc3MKK1tXb3JrZXJdIHJlcXVlc3QgPSBudWxsCitbV29y
a2VyXSBzZWxmLmdjKCkKK1BBU1MgW1dvcmtlcl0gUmVxdWVzdCAnc3VjY2VzcycgZXZlbnQgZmly
ZWQuCitbV29ya2VyXSAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5k
aW5nLWFjdGl2aXR5LXdvcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3BlbmRpbmctYWN0aXZpdHktd29ya2Vycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzM2ZjMzZWM0ZjNh
MzhkNGQ3MDg3NTMzYzNkMTZhZjVlMzhkNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXdvcmtlcnMuaHRtbApAQCAtMCww
ICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD5zdGFydFdvcmtlcigncmVzb3Vy
Y2VzL3BlbmRpbmctYWN0aXZpdHkuanMnKTs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0YWFjZTNhZWI0YzgwZGI1ODZlYTRmY2NiZjczMmNmYWVmMjA2NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFj
dGl2aXR5Lmh0bWwKQEAgLTAsMCArMSw1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3BlbmRpbmctYWN0aXZpdHkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcGVuZGluZy1hY3Rpdml0
eS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wZW5kaW5nLWFj
dGl2aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyOTllMDI5NDMyZWEzZGQ3YzU4MTM0MWFhMWU0NzA4YWFk
ZjliNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvcGVuZGluZy1hY3Rpdml0eS5qcwpAQCAtMCwwICsxLDk3IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIkNoZWNrcyB0aGF0IGdhcmJhZ2UgY29sbGVjdGlvbiBkb2Vzbid0
IHJlY2xhaW0gb2JqZWN0cyB3aXRoIHBlbmRpbmcgYWN0aXZpdHkiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzZXREQk5hbWVGcm9tUGF0
aCgpOworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJh
c2UoKQoreworICAgIHByZWFtYmxlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUp
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgdHJhbnMgPSByZXF1ZXN0LnJlc3Vs
dDsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDAs
IDApIik7CisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RUcmFuc2FjdGlv
bjsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVz
dFRyYW5zYWN0aW9uKCkKK3sKKyAgICBwcmVhbWJsZSgpOworICAgIGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25PbkNvbXBsZXRlIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24gPSBudWxsIik7CisgICAgZXZhbEFuZExvZygic2VsZi5nYygpIik7
Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uT25Db21wbGV0ZSgpCit7CisgICAgdGVzdFBhc3Nl
ZCgiVHJhbnNhY3Rpb24gJ2NvbXBsZXRlJyBldmVudCBmaXJlZC4iKTsKKyAgICB0ZXN0UmVxdWVz
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0UmVxdWVzdCgpCit7CisgICAgcHJlYW1ibGUoKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoMCkiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlcXVlc3RPblN1Y2Nlc3MiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworfQor
CitmdW5jdGlvbiByZXF1ZXN0T25TdWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJSZXF1ZXN0
ICdzdWNjZXNzJyBldmVudCBmaXJlZC4iKTsKKyAgICB0ZXN0Q3Vyc29yUmVxdWVzdCgpOworfQor
CitmdW5jdGlvbiB0ZXN0Q3Vyc29yUmVxdWVzdCgpCit7CisgICAgcHJlYW1ibGUoKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJlcXVlc3RPbkZpcnN0U3VjY2VzcyIp
OworfQorCitmdW5jdGlvbiBjdXJzb3JSZXF1ZXN0T25GaXJzdFN1Y2Nlc3MoKQoreworICAgIHRl
c3RQYXNzZWQoIlJlcXVlc3QgJ3N1Y2Nlc3MnIGV2ZW50IGZpcmVkLiIpOworICAgIGV2YWxBbmRM
b2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiY3Vyc29yLmNv
bnRpbnVlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclJl
cXVlc3RPblNlY29uZFN1Y2Nlc3MiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gbnVsbCIp
OworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JSZXF1
ZXN0T25TZWNvbmRTdWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJSZXF1ZXN0ICdzdWNjZXNz
JyBldmVudCBmaXJlZC4iKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>