<?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>79835</bug_id>
          
          <creation_ts>2012-02-28 14:35:35 -0800</creation_ts>
          <short_desc>IndexedDB: Resource leak with IDBObjectStore.openCursor</short_desc>
          <delta_ts>2012-02-29 15:03:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</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>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>567112</commentid>
    <comment_count>0</comment_count>
      <attachid>129333</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-28 14:35:35 -0800</bug_when>
    <thetext>Created attachment 129333
Repro case

Run attached page. It will &quot;leak&quot; 123 of each of:

IDBRequest: 123
IDBTransaction: 123
IDBCursorWithValue: 123
IDBTransactionBackendImpl: 123
IDBCursor: 123
IDBKey: 123
IDBObjectStore: 123
IDBCursorBackendImpl: 123

(The backend objects are reclaimed on app shutdown, so it&apos;s not a true memory leak.)

After setting up a database with a single store, and (necessarily) a single record, the script runs:

function runtest(db) {
  for (var i = 0; i &lt; 123; ++i) {
    db.transaction(&apos;store&apos;, webkitIDBTransaction.READ_ONLY).objectStore(&apos;store&apos;).openCursor();
  }
  done();
}

done() just runs an explicit GC call to clean up temporary objects that aren&apos;t being leaked.

The leak goes away if either (1) there are no records in the store, or (2) openCursor() is not called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567185</commentid>
    <comment_count>1</comment_count>
      <attachid>129346</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-28 15:58:37 -0800</bug_when>
    <thetext>Created attachment 129346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567202</commentid>
    <comment_count>2</comment_count>
      <attachid>129346</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-28 16:18:35 -0800</bug_when>
    <thetext>Comment on attachment 129346
Patch

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

LGTM

Hopefully this ref-counting spaghetti gets a bit untangled in idb.next.

&gt; Source/WebCore/storage/IDBCursor.cpp:117
&gt; +    if (m_request &amp;&amp; m_request-&gt;resetReadyState(m_transaction.get())) {

Similar question to below; m_request would only eval to false if continue() is called after close(), which I wouldn&apos;t have thought possible.  Are there situations where that happens?

&gt; Source/WebCore/storage/IDBCursor.cpp:143
&gt; +    if (m_request) {

This check seems to indicate that close can be called twice.  When does that happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567205</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-28 16:27:04 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 129346 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129346&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; Hopefully this ref-counting spaghetti gets a bit untangled in idb.next.
&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursor.cpp:117
&gt; &gt; +    if (m_request &amp;&amp; m_request-&gt;resetReadyState(m_transaction.get())) {
&gt; 
&gt; Similar question to below; m_request would only eval to false if continue() is called after close(), which I wouldn&apos;t have thought possible.  Are there situations where that happens?

This can happen if the user retains a reference to the IDBCursor object but the transaction has finished. Once the transaction finishes, m_request will be cleared out (the new behavior). Previously, it would have called through to IDBCursorBackendImpl::continueFunction which would try and schedule a task against the transaction, which would fail with IDBDatabaseException::TRANSACTION_INACTIVE_ERR

So... I should update this to fail early with that error instead if m_request is null. I&apos;ll add a test to verify the error.

&gt; &gt; Source/WebCore/storage/IDBCursor.cpp:143
&gt; &gt; +    if (m_request) {
&gt; 
&gt; This check seems to indicate that close can be called twice.  When does that happen?

Ah, you&apos;re right, I can take that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567257</commentid>
    <comment_count>4</comment_count>
      <attachid>129359</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-28 17:18:35 -0800</bug_when>
    <thetext>Created attachment 129359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567270</commentid>
    <comment_count>5</comment_count>
      <attachid>129359</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-28 17:30:46 -0800</bug_when>
    <thetext>Comment on attachment 129359
Patch

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

&gt; Source/WebCore/storage/IDBCursor.cpp:58
&gt; +    m_transaction-&gt;registerOpenCursor(this);

Is it possible to use a C++ class with scoping for this so you don&apos;t have to remember to call unregisterOpenCursor manually?

&gt; Source/WebCore/storage/IDBTransaction.cpp:144
&gt; +    for (HashSet&lt;IDBCursor*&gt;::iterator i = cursors.begin(); i != cursors.end(); ++i)
&gt; +        (*i)-&gt;close();

Does calling closeOpenCursors cause unregisterOpenCursor to be called?  I guess at that point m_openCursors is an empty HashSet and remove just ignores the call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567284</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-28 17:45:27 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 129359 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129359&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursor.cpp:58
&gt; &gt; +    m_transaction-&gt;registerOpenCursor(this);
&gt; 
&gt; Is it possible to use a C++ class with scoping for this so you don&apos;t have to remember to call unregisterOpenCursor manually?
&gt; 

Yep. I was blindly following the pattern used in IDBTransactionBackendImpl but I agree RAII-style is cleaner. I&apos;ll update the patch. 


&gt; &gt; Source/WebCore/storage/IDBTransaction.cpp:144
&gt; &gt; +    for (HashSet&lt;IDBCursor*&gt;::iterator i = cursors.begin(); i != cursors.end(); ++i)
&gt; &gt; +        (*i)-&gt;close();
&gt; 
&gt; Does calling closeOpenCursors cause unregisterOpenCursor to be called?  I guess at that point m_openCursors is an empty HashSet and remove just ignores the call?

It depends on whether there are requests in flight or if script holds any references. I used the swap pattern so such calls are safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567760</commentid>
    <comment_count>7</comment_count>
      <attachid>129480</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-29 11:15:58 -0800</bug_when>
    <thetext>Created attachment 129480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567982</commentid>
    <comment_count>8</comment_count>
      <attachid>129480</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 15:03:27 -0800</bug_when>
    <thetext>Comment on attachment 129480
Patch

Clearing flags on attachment: 129480

Committed r109271: &lt;http://trac.webkit.org/changeset/109271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567983</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 15:03:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>129333</attachid>
            <date>2012-02-28 14:35:35 -0800</date>
            <delta_ts>2012-02-28 14:35:35 -0800</delta_ts>
            <desc>Repro case</desc>
            <filename>releak3.html</filename>
            <type>text/html</type>
            <size>971</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cjx0aXRsZT5MZWFrIFRlc3Q8L3RpdGxlPgo8c2NyaXB0Pgp2YXIgREJO
QU1FID0gJ2xlYWszJzsKdmFyIFZFUlNJT04gPSAnMSc7CgpzZWxmLm9ubG9hZCA9IGZ1bmN0aW9u
ICgpIHsKICB2YXIgcmVxdWVzdCA9IHdlYmtpdEluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShEQk5B
TUUpOwogIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewogICAgcmVxdWVzdCA9IHdl
YmtpdEluZGV4ZWREQi5vcGVuKERCTkFNRSk7CiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKICAgICAgdmFyIGRiID0gcmVxdWVzdC5yZXN1bHQ7CiAgICAgIHJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKFZFUlNJT04pOwogICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKICAgICAgICB2YXIgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKICAgICAgICB2YXIgc3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKTsKICAgICAgICBzdG9yZS5wdXQoMCwg
MCk7CiAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsgcnVudGVzdChkYik7
IH07CiAgICAgIH07CiAgICB9OwogIH07Cn07CgpmdW5jdGlvbiBydW50ZXN0KGRiKSB7CiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMjM7ICsraSkgeyAKICAgIGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkub2JqZWN0U3RvcmUoJ3N0b3JlJykub3Bl
bkN1cnNvcigpOwogICAgaWYgKHNlbGYuZ2MpIHsgc2VsZi5nYygpOyB9CiAgfQogIGRvbmUoKTsK
fQoKZnVuY3Rpb24gZG9uZSgpIHsKICBzZXRUaW1lb3V0KAogICAgZnVuY3Rpb24oKSB7CiAgICAg
IGlmIChzZWxmLmdjKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiZm9yY2luZyBHQyIpOyAKICAg
ICAgICBzZWxmLmdjKCk7IAogICAgICB9CiAgICB9LAogICAgMjAwMAogICk7Cn0KCjwvc2NyaXB0
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129346</attachid>
            <date>2012-02-28 15:58:37 -0800</date>
            <delta_ts>2012-02-28 17:18:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79835-20120228155836.patch</filename>
            <type>text/plain</type>
            <size>8971</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxNGE2ZDIxMjMxZmNl
ZTgzZDU0OWQ4MTg3ODMwODIxMjE5MTdkZC4uNGQ2Nzc3MDg1MDQ3YmZkNDNjYzQ5ZDVlNDBmMWNj
MmVkNjEzYjNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTI4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZXNv
dXJjZSBsZWFrIHdpdGggSURCT2JqZWN0U3RvcmUub3BlbkN1cnNvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4MzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyByZXNvdXJjZSBsZWFrcyAtIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6fklEQkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVl
RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAgICAgICAoSURC
Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpmaW5pc2hDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVl
c3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyT3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjp1bnJlZ2lzdGVyT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6b25BYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21w
bGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJREJUcmFuc2FjdGlvbik6CisKIDIwMTItMDItMjcgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFtjaHJvbWl1bV0gUHJvZmlsZXMgLSBUb29sdGlwIHdpdGggb2JqZWN0L3Byb3BlcnR5IHR5cGVz
IHN0YXlzIG9uIHNjcmVlbiB3aGVuIGFub3RoZXIgdGFiIHNlbGVjdGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAKaW5kZXggMWRkMWU5ZWJlOTA2MzhiOTcwOGEyZGZkMWE1MzNjOGUy
YjM1NzRkNC4uMWI5ZjA1NTg1NTJkZjNhMzcyMmQ5Y2E1MzM2YzA5ZmJhY2M2YTkyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcApAQCAtNTUsMTAgKzU1LDEyIEBAIElEQkN1cnNv
cjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgSURCUmVxdWVzdCoKICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKICAgICBBU1NFUlQobV9zb3Vy
Y2UtPnR5cGUoKSA9PSBJREJBbnk6OklEQk9iamVjdFN0b3JlVHlwZSB8fCBtX3NvdXJjZS0+dHlw
ZSgpID09IElEQkFueTo6SURCSW5kZXhUeXBlKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbik7
CisgICAgbV90cmFuc2FjdGlvbi0+cmVnaXN0ZXJPcGVuQ3Vyc29yKHRoaXMpOwogfQogCiBJREJD
dXJzb3I6On5JREJDdXJzb3IoKQogeworICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJPcGVu
Q3Vyc29yKHRoaXMpOwogfQogCiB1bnNpZ25lZCBzaG9ydCBJREJDdXJzb3I6OmRpcmVjdGlvbigp
IGNvbnN0CkBAIC0xMTIsNyArMTE0LDcgQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyBG
SVhNRTogV2UncmUgbm90IHVzaW5nIHRoZSBjb250ZXh0IGZyb20gd2hlbiBjb250aW51ZSB3YXMg
Y2FsbGVkLCB3aGljaCBtZWFucyB0aGUgY2FsbGJhY2sKICAgICAvLyAgICAgICAgd2lsbCBiZSBv
biB0aGUgb3JpZ2luYWwgY29udGV4dCBvcGVuQ3Vyc29yIHdhcyBjYWxsZWQgb24uIElzIHRoaXMg
cmlnaHQ/Ci0gICAgaWYgKG1fcmVxdWVzdC0+cmVzZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rpb24u
Z2V0KCkpKSB7CisgICAgaWYgKG1fcmVxdWVzdCAmJiBtX3JlcXVlc3QtPnJlc2V0UmVhZHlTdGF0
ZShtX3RyYW5zYWN0aW9uLmdldCgpKSkgewogICAgICAgICBtX3JlcXVlc3QtPnNldEN1cnNvcih0
aGlzKTsKICAgICAgICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbV9yZXF1ZXN0
LCBlYyk7CiAgICAgfSBlbHNlCkBAIC0xMzYsNiArMTM4LDE0IEBAIHZvaWQgSURCQ3Vyc29yOjpw
b3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpCiAgICAgbV9iYWNrZW5kLT5wb3N0U3VjY2Vzc0hh
bmRsZXJDYWxsYmFjaygpOwogfQogCit2b2lkIElEQkN1cnNvcjo6Y2xvc2UoKQoreworICAgIGlm
IChtX3JlcXVlc3QpIHsKKyAgICAgICAgbV9yZXF1ZXN0LT5maW5pc2hDdXJzb3IoKTsKKyAgICAg
ICAgbV9yZXF1ZXN0LmNsZWFyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkN1cnNvci5oCmluZGV4IGJhNDlkODI3Y2Q0MDViMzljMmI5YmM1ZjZiOTdjMmRhNTUyZDMwNDEu
LjkzMWVkZmRlMjc3OTZjMjhhYTQ0NmRlNzg3NjEzNTQ3NjUyYjQ4ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJDdXJzb3IuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwor
ICAgIHZvaWQgY2xvc2UoKTsKIAogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2Us
IElEQlRyYW5zYWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRl
eCBhMDRjMGM2Njg3ZDgzOTVhNDFlMzIwYWRhNmRkYmYzZjBmMGJmYzg0Li45MGMxODhjYmZjMGE0
NTFmYjNiMWU5ZmRkNzhiOGVjNTg1Nzk5MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAs
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3JlYWR5U3RhdGUoTE9BRElORykK
ICAgICAsIG1fcmVxdWVzdEZpbmlzaGVkKGZhbHNlKQorICAgICwgbV9jdXJzb3JGaW5pc2hlZChm
YWxzZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUo
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1
cnNvcigwKQpAQCAtMTgyLDYgKzE4MywxMyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldEN1cnNvcihQ
YXNzUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yKQogICAgIG1fY3Vyc29yID0gY3Vyc29yOwogfQog
Cit2b2lkIElEQlJlcXVlc3Q6OmZpbmlzaEN1cnNvcigpCit7CisgICAgbV9jdXJzb3JGaW5pc2hl
ZCA9IHRydWU7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBMT0FESU5HKQorICAgICAgICBtX3Jl
cXVlc3RGaW5pc2hlZCA9IHRydWU7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6b25FcnJvcihQYXNz
UmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yKQogewogICAgIEFTU0VSVCghbV9lcnJvckNv
ZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKQEAgLTM2NCw3ICsz
NzIsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKIAogICAgIC8vIElmIHRoZSByZXN1bHQg
d2FzIG9mIHR5cGUgSURCQ3Vyc29yLCBvciBhIG9uQmxvY2tlZCBldmVudCwgdGhlbiB3ZSdsbCBm
aXJlIGFnYWluLgotICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2Vk
RXZlbnQgJiYgbV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNv
clR5cGUgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5
cGUpCisgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAm
JiAoIWN1cnNvclRvTm90aWZ5IHx8IG1fY3Vyc29yRmluaXNoZWQpKQogICAgICAgICBtX3JlcXVl
c3RGaW5pc2hlZCA9IHRydWU7CiAKICAgICBpZiAoY3Vyc29yVG9Ob3RpZnkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDhiYzc4NjVhYzcxNTI4ZGMyNTA5MDg4M2JjODU4NjFm
YTI5OGRmZWIuLmE2YjU3M2Q4N2RkNzE4NzM3NWNiNTMxY2M1MjEzNDk0ZjJjZDVmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHJlc2V0UmVhZHlTdGF0ZShJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgc2V0Q3Vy
c29yVHlwZShJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlKTsKICAgICB2b2lk
IHNldEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOworICAgIHZvaWQgZmluaXNoQ3Vyc29y
KCk7CiAgICAgSURCQW55KiBzb3VyY2UoKTsKICAgICB2b2lkIGFib3J0KCk7CiAKQEAgLTEyMiw2
ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAg
Ym9vbCBtX3JlcXVlc3RGaW5pc2hlZDsgLy8gSXMgaXQgcG9zc2libGUgdGhhdCB3ZSdsbCBmaXJl
IGFueSBtb3JlIGV2ZW50cz8gSWYgbm90LCB3ZSdyZSBmaW5pc2hlZC4KKyAgICBib29sIG1fY3Vy
c29yRmluaXNoZWQ7CiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBjY2RmYjJiOWU2NzVlNWVjYTBiYWNjNTgxMzU1ZTJlZTA5
MGM5NDA0Li5lNThhOTE2M2VhYTNjYjQ3ZDVjYmY0NmQzMzIyNzVlOGYxYjFiNTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTI2LDYgKzEyNiwyNCBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCiAgICAgICAgIG1fYmFja2VuZC0+YWJvcnQo
KTsKIH0KIAordm9pZCBJREJUcmFuc2FjdGlvbjo6cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNv
ciogY3Vyc29yKQoreworICAgIG1fb3BlbkN1cnNvcnMuYWRkKGN1cnNvcik7Cit9CisKK3ZvaWQg
SURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvciogY3Vyc29yKQor
eworICAgIG1fb3BlbkN1cnNvcnMucmVtb3ZlKGN1cnNvcik7Cit9CisKK3ZvaWQgSURCVHJhbnNh
Y3Rpb246OmNsb3NlT3BlbkN1cnNvcnMoKQoreworICAgIEhhc2hTZXQ8SURCQ3Vyc29yKj4gY3Vy
c29yczsKKyAgICBjdXJzb3JzLnN3YXAobV9vcGVuQ3Vyc29ycyk7CisgICAgZm9yIChIYXNoU2V0
PElEQkN1cnNvcio+OjppdGVyYXRvciBpID0gY3Vyc29ycy5iZWdpbigpOyBpICE9IGN1cnNvcnMu
ZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+Y2xvc2UoKTsKK30KKwogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6cmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgbV9jaGls
ZFJlcXVlc3RzLmFkZChyZXF1ZXN0KTsKQEAgLTE0OCw2ICsxNjYsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KCkKIAogICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKQogICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbih0aGlzKTsKKyAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBpZiAobV9jb250
ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47
CkBAIC0xNjAsNiArMTc5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiAg
ICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwogICAgIGlmIChtX21vZGUgPT0gSURC
VHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKQogICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbih0aGlzKTsKKyAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAK
ICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKaW5k
ZXggMWQzNGNjM2JkNDAzMzc5ODkyMDY5MWMwMGJhODk5YWQxMjBlMjg4OC4uN2ZhYmJhYWQ5YTY3
ZjJjNjg1MTA5MzVkN2ZiYWNmNjkyZGQwZThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb24uaApAQCAtMzYsMTAgKzM2LDEyIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBJREJDdXJzb3I7CiBjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQk9iamVjdFN0b3JlOwog
CkBAIC02Miw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIGFib3J0KCk7CiAKKyAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3IqKTsK
KyAgICB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvciopOwogICAgIHZvaWQgcmVn
aXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJSZXF1ZXN0KElE
QlJlcXVlc3QqKTsKICAgICB2b2lkIG9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmLCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPik7CkBAIC05Myw2ICs5Nyw3IEBAIHByaXZhdGU6CiAg
ICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgSURCRGF0YWJhc2UqKTsKIAogICAgIHZvaWQg
ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGNsb3NlT3BlbkN1cnNv
cnMoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQpAQCAtMTExLDYgKzExNiw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3Jl
TWFwOwogICAgIElEQk9iamVjdFN0b3JlTWFwIG1fb2JqZWN0U3RvcmVNYXA7CiAKKyAgICBIYXNo
U2V0PElEQkN1cnNvcio+IG1fb3BlbkN1cnNvcnM7CisKICAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129359</attachid>
            <date>2012-02-28 17:18:35 -0800</date>
            <delta_ts>2012-02-29 11:15:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79835-20120228171834.patch</filename>
            <type>text/plain</type>
            <size>12423</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxNGE2ZDIxMjMxZmNl
ZTgzZDU0OWQ4MTg3ODMwODIxMjE5MTdkZC4uNWMxNTYxMmJjMWIwYThhMjczYzNlZDg0NjliNmVm
ZDFhNDk0YzQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAyLTI4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZXNv
dXJjZSBsZWFrIHdpdGggSURCT2JqZWN0U3RvcmUub3BlbkN1cnNvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4MzUKKworICAgICAgICBJREJDdXJz
b3Igb2JqZWN0IHRoYXQgd2VyZSBuZXZlciBjb250aW51ZSgpJ2QgdG8gdGhlIGVuZCB3b3VsZCBs
ZWFrIGR1ZSB0byBhIAorICAgICAgICByZWZlcmVuY2UgY3ljbGUgd2l0aCBJREJSZXF1ZXN0LiBJ
biBhZGRpdGlvbiwgdGhlIElEQlJlcXVlc3Qgd291bGQgbmV2ZXIgYmUKKyAgICAgICAgbWFya2Vk
ICJmaW5pc2hlZCIgd2hpY2ggd291bGQgcHJldmVudCBHQyBmcm9tIHJlY2xhaW1pbmcgaXQuIElE
QlRyYW5zYWN0aW9ucworICAgICAgICBub3cgdHJhY2sgYW5kIG5vdGlmeSBJREJDdXJzb3JzIHRv
IGJyZWFrIHRoZXNlIHJlZmVyZW5jZXMgd2hlbiB0aGUgdHJhbnNhY3Rpb24KKyAgICAgICAgY2Fu
IG5vIGxvbmdlciBub3QgcHJvY2VzcyByZXF1ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWNvbnRpbnVlLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29yKTogUmVnaXN0ZXIgd2l0aCBJREJUcmFu
c2FjdGlvbiBib29ra2VlcGluZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6fklEQkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOiBF
YXJseSBlcnJvciBpZiB0cmFuc2FjdGlvbiBoYXMgZmluaXNoZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNsb3NlKTogQnJlYWsgdGhlIHJlZmVyZW5jZSBjeWNsZSB3aXRoIElEQlJl
cXVlc3QsIGFuZCBub3RpZnkgaXQKKyAgICAgICAgdGhhdCB0aGUgY3Vyc29yIGlzIGZpbmlzaGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAg
ICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6ZmluaXNoQ3Vyc29yKTogSWYgdGhlcmUgaXMgbm8gcmVxdWVzdCBpbiBm
bGlnaHQsIG1hcmsgaXRzZWxmIGFzIAorICAgICAgICBmaW5pc2hlZCB0byBhbGxvdyBHQy4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hF
dmVudCk6IE9uY2UgYW4gaW4tZmxpZ2h0IHJlcXVlc3QgaGFzIGJlZW4gcHJvY2Vzc2VkLAorICAg
ICAgICBtYXJrIHRoZSByZXF1ZXN0IGFzIGZpbmlzaGVkIHRvIGFsbG93IEdDLgorICAgICAgICAq
IHN0b3JhZ2UvSURCUmVxdWVzdC5oOgorICAgICAgICAoSURCUmVxdWVzdCk6CisgICAgICAgICog
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6IFRyYWNrIG9wZW4gY3Vyc29ycywgY2xvc2Ugd2hl
biBmaW5pc2hlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZWdpc3Rlck9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnVucmVnaXN0ZXJP
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjbG9zZU9wZW5D
dXJzb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkFib3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkNvbXBsZXRlKToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElE
QlRyYW5zYWN0aW9uKToKKwogMjAxMi0wMi0yNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW2Nocm9taXVtXSBQcm9maWxl
cyAtIFRvb2x0aXAgd2l0aCBvYmplY3QvcHJvcGVydHkgdHlwZXMgc3RheXMgb24gc2NyZWVuIHdo
ZW4gYW5vdGhlciB0YWIgc2VsZWN0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcApp
bmRleCAxZGQxZTllYmU5MDYzOGI5NzA4YTJkZmQxYTUzM2M4ZTJiMzU3NGQ0Li5lZDQwZjgzYTc4
NTVhODRjNDRmYjEzMGI4OTEzZTZiYjQzMzY3ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJD
dXJzb3IuY3BwCkBAIC01NSwxMCArNTUsMTIgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJSZXF1ZXN0KgogICAg
IEFTU0VSVChtX3JlcXVlc3QpOwogICAgIEFTU0VSVChtX3NvdXJjZS0+dHlwZSgpID09IElEQkFu
eTo6SURCT2JqZWN0U3RvcmVUeXBlIHx8IG1fc291cmNlLT50eXBlKCkgPT0gSURCQW55OjpJREJJ
bmRleFR5cGUpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKKyAgICBtX3RyYW5zYWN0aW9u
LT5yZWdpc3Rlck9wZW5DdXJzb3IodGhpcyk7CiB9CiAKIElEQkN1cnNvcjo6fklEQkN1cnNvcigp
CiB7CisgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3Rlck9wZW5DdXJzb3IodGhpcyk7CiB9CiAK
IHVuc2lnbmVkIHNob3J0IElEQkN1cnNvcjo6ZGlyZWN0aW9uKCkgY29uc3QKQEAgLTExMCw2ICsx
MTIsMTAgQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAoIW1fcmVxdWVzdCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpU
UkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgLy8g
RklYTUU6IFdlJ3JlIG5vdCB1c2luZyB0aGUgY29udGV4dCBmcm9tIHdoZW4gY29udGludWUgd2Fz
IGNhbGxlZCwgd2hpY2ggbWVhbnMgdGhlIGNhbGxiYWNrCiAgICAgLy8gICAgICAgIHdpbGwgYmUg
b24gdGhlIG9yaWdpbmFsIGNvbnRleHQgb3BlbkN1cnNvciB3YXMgY2FsbGVkIG9uLiBJcyB0aGlz
IHJpZ2h0PwogICAgIGlmIChtX3JlcXVlc3QtPnJlc2V0UmVhZHlTdGF0ZShtX3RyYW5zYWN0aW9u
LmdldCgpKSkgewpAQCAtMTM2LDYgKzE0MiwxMyBAQCB2b2lkIElEQkN1cnNvcjo6cG9zdFN1Y2Nl
c3NIYW5kbGVyQ2FsbGJhY2soKQogICAgIG1fYmFja2VuZC0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2Fs
bGJhY2soKTsKIH0KIAordm9pZCBJREJDdXJzb3I6OmNsb3NlKCkKK3sKKyAgICBBU1NFUlQobV9y
ZXF1ZXN0KTsKKyAgICBtX3JlcXVlc3QtPmZpbmlzaEN1cnNvcigpOworICAgIG1fcmVxdWVzdC5j
bGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCmluZGV4IGJhNDlk
ODI3Y2Q0MDViMzljMmI5YmM1ZjZiOTdjMmRhNTUyZDMwNDEuLjkzMWVkZmRlMjc3OTZjMjhhYTQ0
NmRlNzg3NjEzNTQ3NjUyYjQ4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApAQCAt
NzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
dm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworICAgIHZvaWQgY2xvc2UoKTsKIAog
cHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBhMDRjMGM2Njg3ZDgzOTVhNDFl
MzIwYWRhNmRkYmYzZjBmMGJmYzg0Li45MGMxODhjYmZjMGE0NTFmYjNiMWU5ZmRkNzhiOGVjNTg1
Nzk5MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTU4LDYgKzU4
LDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24pCiAgICAgLCBtX3JlYWR5U3RhdGUoTE9BRElORykKICAgICAsIG1fcmVxdWVzdEZpbmlz
aGVkKGZhbHNlKQorICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxzZSkKICAgICAsIG1fY29udGV4
dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNvcigwKQpAQCAtMTgyLDYgKzE4
MywxMyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4g
Y3Vyc29yKQogICAgIG1fY3Vyc29yID0gY3Vyc29yOwogfQogCit2b2lkIElEQlJlcXVlc3Q6OmZp
bmlzaEN1cnNvcigpCit7CisgICAgbV9jdXJzb3JGaW5pc2hlZCA9IHRydWU7CisgICAgaWYgKG1f
cmVhZHlTdGF0ZSAhPSBMT0FESU5HKQorICAgICAgICBtX3JlcXVlc3RGaW5pc2hlZCA9IHRydWU7
Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6b25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+IGVycm9yKQogewogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2Uu
aXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKQEAgLTM2NCw3ICszNzIsNyBAQCBib29sIElEQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgYm9vbCBkb250
UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgp
LCB0YXJnZXRzKTsKIAogICAgIC8vIElmIHRoZSByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29y
LCBvciBhIG9uQmxvY2tlZCBldmVudCwgdGhlbiB3ZSdsbCBmaXJlIGFnYWluLgotICAgIGlmIChl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQgJiYgbV9yZXN1bHQgJiYg
bV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvclR5cGUgJiYgbV9yZXN1bHQtPnR5
cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCisgICAgaWYgKGV2ZW50LT50
eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAmJiAoIWN1cnNvclRvTm90aWZ5IHx8
IG1fY3Vyc29yRmluaXNoZWQpKQogICAgICAgICBtX3JlcXVlc3RGaW5pc2hlZCA9IHRydWU7CiAK
ICAgICBpZiAoY3Vyc29yVG9Ob3RpZnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmlu
ZGV4IDhiYzc4NjVhYzcxNTI4ZGMyNTA5MDg4M2JjODU4NjFmYTI5OGRmZWIuLmE2YjU3M2Q4N2Rk
NzE4NzM3NWNiNTMxY2M1MjEzNDk0ZjJjZDVmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlc2V0UmVhZHlTdGF0
ZShJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgc2V0Q3Vyc29yVHlwZShJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlKTsKICAgICB2b2lkIHNldEN1cnNvcihQYXNzUmVmUHRy
PElEQkN1cnNvcj4pOworICAgIHZvaWQgZmluaXNoQ3Vyc29yKCk7CiAgICAgSURCQW55KiBzb3Vy
Y2UoKTsKICAgICB2b2lkIGFib3J0KCk7CiAKQEAgLTEyMiw2ICsxMjMsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9vbCBtX3JlcXVlc3RGaW5pc2hl
ZDsgLy8gSXMgaXQgcG9zc2libGUgdGhhdCB3ZSdsbCBmaXJlIGFueSBtb3JlIGV2ZW50cz8gSWYg
bm90LCB3ZSdyZSBmaW5pc2hlZC4KKyAgICBib29sIG1fY3Vyc29yRmluaXNoZWQ7CiAgICAgYm9v
bCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVl
ZEV2ZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCBjY2RmYjJiOWU2NzVlNWVjYTBiYWNjNTgxMzU1ZTJlZTA5MGM5NDA0Li5lNThhOTE2M2VhYTNj
YjQ3ZDVjYmY0NmQzMzIyNzVlOGYxYjFiNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uLmNwcApAQCAtMTI2LDYgKzEyNiwyNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjphYm9ydCgpCiAgICAgICAgIG1fYmFja2VuZC0+YWJvcnQoKTsKIH0KIAordm9pZCBJREJUcmFu
c2FjdGlvbjo6cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvciogY3Vyc29yKQoreworICAgIG1f
b3BlbkN1cnNvcnMuYWRkKGN1cnNvcik7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVn
aXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvciogY3Vyc29yKQoreworICAgIG1fb3BlbkN1cnNvcnMu
cmVtb3ZlKGN1cnNvcik7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmNsb3NlT3BlbkN1cnNv
cnMoKQoreworICAgIEhhc2hTZXQ8SURCQ3Vyc29yKj4gY3Vyc29yczsKKyAgICBjdXJzb3JzLnN3
YXAobV9vcGVuQ3Vyc29ycyk7CisgICAgZm9yIChIYXNoU2V0PElEQkN1cnNvcio+OjppdGVyYXRv
ciBpID0gY3Vyc29ycy5iZWdpbigpOyBpICE9IGN1cnNvcnMuZW5kKCk7ICsraSkKKyAgICAgICAg
KCppKS0+Y2xvc2UoKTsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVnaXN0ZXJSZXF1ZXN0
KElEQlJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgbV9jaGlsZFJlcXVlc3RzLmFkZChyZXF1ZXN0
KTsKQEAgLTE0OCw2ICsxNjYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKIAog
ICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKQogICAgICAg
ICBtX2RhdGFiYXNlLT5jbGVhclZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih0aGlzKTsKKyAgICBj
bG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjAsNiArMTc5LDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0
aW9uRmluaXNoZWQpOwogICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFKQogICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bih0aGlzKTsKKyAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMWQzNGNjM2JkNDAzMzc5ODky
MDY5MWMwMGJhODk5YWQxMjBlMjg4OC4uN2ZhYmJhYWQ5YTY3ZjJjNjg1MTA5MzVkN2ZiYWNmNjky
ZGQwZThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaApAQCAtMzYs
MTAgKzM2LDEyIEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJDdXJzb3I7CiBjbGFzcyBJ
REJEYXRhYmFzZTsKIGNsYXNzIElEQk9iamVjdFN0b3JlOwogCkBAIC02Miw2ICs2NCw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFib3J0KCk7CiAKKyAgICB2
b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3IqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJP
cGVuQ3Vyc29yKElEQkN1cnNvciopOwogICAgIHZvaWQgcmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVl
c3QqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqKTsKICAgICB2b2lk
IG9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlPik7CkBAIC05Myw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiwgSURCRGF0YWJhc2UqKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+KTsKKyAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQpAQCAt
MTExLDYgKzExNiw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3JlTWFwOwogICAgIElEQk9iamVjdFN0
b3JlTWFwIG1fb2JqZWN0U3RvcmVNYXA7CiAKKyAgICBIYXNoU2V0PElEQkN1cnNvcio+IG1fb3Bl
bkN1cnNvcnM7CisKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9Owog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjIzZTVhMmJhZDIyZWM2YWUxM2ViNjY4ZjBjNzExODE5Y2QwYTVmOS4uNTYzNTJj
MTFmNTkyOWQ2MzRkYjg2N2RiNWZkYjAxM2VkNWE1OTdjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTAyLTI4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5kZXhlZERCOiBSZXNvdXJjZSBsZWFrIHdpdGggSURCT2JqZWN0U3RvcmUub3BlbkN1cnNv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4MzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWw6CisKIDIwMTItMDItMjcgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgPHVsPiwg
PGxpPiBpbnNpZGUgc2hhZG93IERPTSB0cmlnZ2VycyBhc3NlcnRpb24gaW4gdXBkYXRlTGlzdE1h
cmtlck51bWJlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1jb250aW51ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItY29udGludWUtZXhwZWN0ZWQudHh0CmluZGV4IDNmNDBiYTJkZjM3OWRmZGU4NWQy
MmQ4YmFiYmNmMWFiMDAwNGRmYTQuLmI2NGRkZDlmYWRmOWQ2YTM0NTQ2ZTgwOGQxOThhMzlhNmM2
NDQyOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1j
b250aW51ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWNvbnRpbnVlLWV4cGVjdGVkLnR4dApAQCAtMTA4LDkgKzEwOCwxMyBAQCBpbmRleE9i
amVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKQogUEFTUyBldmVudC50YXJn
ZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgMTcKIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
J0EgYml0MicpCiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSBpcyAxNQorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpCiBQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgogUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSCitFeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIGNvZGUgaXMgSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250
aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVl
Lmh0bWwKaW5kZXggMjhiNjc5YjgwZGQ5YmIzMzM1YjgzZGE1NDUxYjI3NDdkZjI0Y2I4OS4uNDk4
Y2Y4OWU4NzY1MWFkMzk2NmIwODk3ODFmZGUyZmJkMmI0MmNhYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKQEAgLTI2Miw4ICsy
NjIsOSBAQCBmdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQogICAgICAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKICAg
ICAgICAgfSBlbHNlIGlmICh3aW5kb3cuc3RhZ2UgPT0gMSkgewogICAgICAgICAgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwogICAgICAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBi
aXQyJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgIHdpbmRvdy50cmFucy5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlv
bkNvbXBsZXRlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwpAQCAtMjcyLDYgKzI3MywxMiBAQCBm
dW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQogICAgIH07CiB9CiAKK2Z1bmN0aW9u
IG9uVHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
Y3Vyc29yLmNvbnRpbnVlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7CisgICAgZG9uZSgpOworfQorCiB0ZXN0KCk7CiAgCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129480</attachid>
            <date>2012-02-29 11:15:58 -0800</date>
            <delta_ts>2012-02-29 15:03:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79835-20120229111557.patch</filename>
            <type>text/plain</type>
            <size>13789</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxNGE2ZDIxMjMxZmNl
ZTgzZDU0OWQ4MTg3ODMwODIxMjE5MTdkZC4uNzc4OTQwNjgxNjAyMTUyZmUzMTYwNDllYjE0ZjQw
ZTQ0OTNmODBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAyLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZXNv
dXJjZSBsZWFrIHdpdGggSURCT2JqZWN0U3RvcmUub3BlbkN1cnNvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk4MzUKKworICAgICAgICBJREJDdXJz
b3Igb2JqZWN0IHRoYXQgd2VyZSBuZXZlciBjb250aW51ZSgpJ2QgdG8gdGhlIGVuZCB3b3VsZCBs
ZWFrIGR1ZSB0byBhIAorICAgICAgICByZWZlcmVuY2UgY3ljbGUgd2l0aCBJREJSZXF1ZXN0LiBJ
biBhZGRpdGlvbiwgdGhlIElEQlJlcXVlc3Qgd291bGQgbmV2ZXIgYmUKKyAgICAgICAgbWFya2Vk
ICJmaW5pc2hlZCIgd2hpY2ggd291bGQgcHJldmVudCBHQyBmcm9tIHJlY2xhaW1pbmcgaXQuIElE
QlRyYW5zYWN0aW9ucworICAgICAgICBub3cgdHJhY2sgYW5kIG5vdGlmeSBJREJDdXJzb3JzIHRv
IGJyZWFrIHRoZXNlIHJlZmVyZW5jZXMgd2hlbiB0aGUgdHJhbnNhY3Rpb24KKyAgICAgICAgY2Fu
IG5vIGxvbmdlciBub3QgcHJvY2VzcyByZXF1ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWNvbnRpbnVlLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vyc29yKTogUmVnaXN0ZXIgd2l0aCBJREJUcmFu
c2FjdGlvbiBib29ra2VlcGluZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y29udGlu
dWVGdW5jdGlvbik6IEVhcmx5IGVycm9yIGlmIHRyYW5zYWN0aW9uIGhhcyBmaW5pc2hlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y2xvc2UpOiBCcmVhayB0aGUgcmVmZXJlbmNlIGN5
Y2xlIHdpdGggSURCUmVxdWVzdCwgYW5kIG5vdGlmeSBpdAorICAgICAgICB0aGF0IHRoZSBjdXJz
b3IgaXMgZmluaXNoZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJDdXJzb3IpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmZpbmlzaEN1
cnNvcik6IElmIHRoZXJlIGlzIG5vIHJlcXVlc3QgaW4gZmxpZ2h0LCBtYXJrIGl0c2VsZiBhcwor
ICAgICAgICBmaW5pc2hlZCB0byBhbGxvdyBHQy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6IE9uY2UgYW4gaW4tZmxpZ2h0
IHJlcXVlc3QgaGFzIGJlZW4gcHJvY2Vzc2VkLAorICAgICAgICBtYXJrIHRoZSByZXF1ZXN0IGFz
IGZpbmlzaGVkIGlmIHRoZSBjdXJzb3IgaXMgZmluaXNoZWQsIHRvIGFsbG93IEdDLgorICAgICAg
ICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgorICAgICAgICAoSURCUmVxdWVzdCk6CisgICAgICAg
ICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6IFRyYWNrIG9wZW4gY3Vyc29ycywgY2xvc2Ug
dGhlbSB3aGVuIGZpbmlzaGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Ok9w
ZW5DdXJzb3JOb3RpZmllcjo6T3BlbkN1cnNvck5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Ok9wZW5DdXJzb3JOb3RpZmllcjo6
fk9wZW5DdXJzb3JOb3RpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
cmVnaXN0ZXJPcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp1
bnJlZ2lzdGVyT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y2xvc2VPcGVuQ3Vyc29ycyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25B
Ym9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6Cisg
ICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChPcGVuQ3Vyc29yTm90aWZpZXIpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgor
CiAyMDEyLTAyLTI3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbY2hyb21pdW1dIFByb2ZpbGVzIC0gVG9vbHRpcCB3aXRo
IG9iamVjdC9wcm9wZXJ0eSB0eXBlcyBzdGF5cyBvbiBzY3JlZW4gd2hlbiBhbm90aGVyIHRhYiBz
ZWxlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IDFkZDFlOWViZTkw
NjM4Yjk3MDhhMmRmZDFhNTMzYzhlMmIzNTc0ZDQuLmU3YTAxZWNiNzlhOGE4OGNiNTJkNDk3OWU1
NDE5N2JjMTk2MzRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vy
c29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKQEAgLTUw
LDYgKzUwLDcgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJSZXF1ZXN0KgogICAgICwgbV9yZXF1ZXN0KHJlcXVl
c3QpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uKQorICAgICwgbV90cmFuc2FjdGlvbk5vdGlmaWVyKHRyYW5zYWN0aW9uLCB0aGlzKQogewog
ICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIEFTU0VSVChtX3JlcXVlc3QpOwpAQCAtMTEwLDYg
KzExMSwxMCBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmICghbV9yZXF1ZXN0KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAv
LyBGSVhNRTogV2UncmUgbm90IHVzaW5nIHRoZSBjb250ZXh0IGZyb20gd2hlbiBjb250aW51ZSB3
YXMgY2FsbGVkLCB3aGljaCBtZWFucyB0aGUgY2FsbGJhY2sKICAgICAvLyAgICAgICAgd2lsbCBi
ZSBvbiB0aGUgb3JpZ2luYWwgY29udGV4dCBvcGVuQ3Vyc29yIHdhcyBjYWxsZWQgb24uIElzIHRo
aXMgcmlnaHQ/CiAgICAgaWYgKG1fcmVxdWVzdC0+cmVzZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rp
b24uZ2V0KCkpKSB7CkBAIC0xMzYsNiArMTQxLDEzIEBAIHZvaWQgSURCQ3Vyc29yOjpwb3N0U3Vj
Y2Vzc0hhbmRsZXJDYWxsYmFjaygpCiAgICAgbV9iYWNrZW5kLT5wb3N0U3VjY2Vzc0hhbmRsZXJD
YWxsYmFjaygpOwogfQogCit2b2lkIElEQkN1cnNvcjo6Y2xvc2UoKQoreworICAgIEFTU0VSVCht
X3JlcXVlc3QpOworICAgIG1fcmVxdWVzdC0+ZmluaXNoQ3Vyc29yKCk7CisgICAgbV9yZXF1ZXN0
LmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXggYmE0
OWQ4MjdjZDQwNWIzOWMyYjliYzVmNmI5N2MyZGE1NTJkMzA0MS4uZWI3NjcwNjQzNTk5MTM0ZDBk
NTA2YmYyMjJiYzdkNTg2NDhkNWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC0zOSw3ICs0MCw2IEBAIGNsYXNzIElEQkFueTsKIGNsYXNzIElEQkNhbGxi
YWNrczsKIGNsYXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJSZXF1ZXN0
OwotY2xhc3MgSURCVHJhbnNhY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHBvc3RTdWNjZXNzSGFuZGxl
ckNhbGxiYWNrKCk7CisgICAgdm9pZCBjbG9zZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgSURCQ3Vy
c29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIElEQlJlcXVlc3QqLCBJ
REJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKQEAgLTgwLDYgKzgxLDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFJlZlB0cjxJREJBbnk+
IG1fc291cmNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKKyAg
ICBJREJUcmFuc2FjdGlvbjo6T3BlbkN1cnNvck5vdGlmaWVyIG1fdHJhbnNhY3Rpb25Ob3RpZmll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCmluZGV4IGEwNGMwYzY2ODdkODM5NWE0MWUzMjBhZGE2ZGRiZjNmMGYwYmZjODQu
LjkwYzE4OGNiZmMwYTQ1MWZiM2IxZTlmZGQ3OGI4ZWM1ODU3OTkyMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtNTgsNiArNTgsNyBAQCBJREJSZXF1ZXN0OjpJREJS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyYwogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fcmVhZHlT
dGF0ZShMT0FESU5HKQogICAgICwgbV9yZXF1ZXN0RmluaXNoZWQoZmFsc2UpCisgICAgLCBtX2N1
cnNvckZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAgICAs
IG1fY3Vyc29yVHlwZShJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpJbnZhbGlkQ3Vyc29yVHlw
ZSkKICAgICAsIG1fY3Vyc29yKDApCkBAIC0xODIsNiArMTgzLDEzIEBAIHZvaWQgSURCUmVxdWVz
dDo6c2V0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3IpCiAgICAgbV9jdXJzb3Ig
PSBjdXJzb3I7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6ZmluaXNoQ3Vyc29yKCkKK3sKKyAgICBt
X2N1cnNvckZpbmlzaGVkID0gdHJ1ZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IExPQURJTkcp
CisgICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKK30KKwogdm9pZCBJREJSZXF1ZXN0
OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCiB7CiAgICAgQVNT
RVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQp
OwpAQCAtMzY0LDcgKzM3Miw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOwogCiAgICAgLy8g
SWYgdGhlIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIG9yIGEgb25CbG9ja2VkIGV2ZW50
LCB0aGVuIHdlJ2xsIGZpcmUgYWdhaW4uCi0gICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLmJsb2NrZWRFdmVudCAmJiBtX3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElE
QkFueTo6SURCQ3Vyc29yVHlwZSAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vy
c29yV2l0aFZhbHVlVHlwZSkKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCku
YmxvY2tlZEV2ZW50ICYmICghY3Vyc29yVG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkpCiAg
ICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAogICAgIGlmIChjdXJzb3JUb05vdGlm
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggOGJjNzg2NWFjNzE1MjhkYzI1
MDkwODgzYmM4NTg2MWZhMjk4ZGZlYi4uYTZiNTczZDg3ZGQ3MTg3Mzc1Y2I1MzFjYzUyMTM0OTRm
MmNkNWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTcyLDYgKzcyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgcmVzZXRSZWFkeVN0YXRlKElEQlRyYW5zYWN0aW9uKik7CiAg
ICAgdm9pZCBzZXRDdXJzb3JUeXBlKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5
cGUpOwogICAgIHZvaWQgc2V0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CisgICAgdm9p
ZCBmaW5pc2hDdXJzb3IoKTsKICAgICBJREJBbnkqIHNvdXJjZSgpOwogICAgIHZvaWQgYWJvcnQo
KTsKIApAQCAtMTIyLDYgKzEyMyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZTsKICAgICBib29sIG1fcmVxdWVzdEZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0
aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZlbnRzPyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVkLgor
ICAgIGJvb2wgbV9jdXJzb3JGaW5pc2hlZDsKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CiAg
ICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGNjZGZiMmI5ZTY3NWU1ZWNhMGJh
Y2M1ODEzNTVlMmVlMDkwYzk0MDQuLjllMGIzYThmNzI5YzRiNjFkMDg0YzdhZGNkMjBjMWExYTYy
Yzg1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0x
MjYsNiArMTI2LDM2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0KCkKICAgICAgICAgbV9i
YWNrZW5kLT5hYm9ydCgpOwogfQogCitJREJUcmFuc2FjdGlvbjo6T3BlbkN1cnNvck5vdGlmaWVy
OjpPcGVuQ3Vyc29yTm90aWZpZXIoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rp
b24sIElEQkN1cnNvciogY3Vyc29yKQorICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbiks
CisgICAgICBtX2N1cnNvcihjdXJzb3IpCit7CisgICAgbV90cmFuc2FjdGlvbi0+cmVnaXN0ZXJP
cGVuQ3Vyc29yKG1fY3Vyc29yKTsKK30KKworSURCVHJhbnNhY3Rpb246Ok9wZW5DdXJzb3JOb3Rp
Zmllcjo6fk9wZW5DdXJzb3JOb3RpZmllcigpCit7CisgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdp
c3Rlck9wZW5DdXJzb3IobV9jdXJzb3IpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpyZWdp
c3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yKiBjdXJzb3IpCit7CisgICAgbV9vcGVuQ3Vyc29ycy5h
ZGQoY3Vyc29yKTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3Rlck9wZW5DdXJz
b3IoSURCQ3Vyc29yKiBjdXJzb3IpCit7CisgICAgbV9vcGVuQ3Vyc29ycy5yZW1vdmUoY3Vyc29y
KTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycygpCit7CisgICAg
SGFzaFNldDxJREJDdXJzb3IqPiBjdXJzb3JzOworICAgIGN1cnNvcnMuc3dhcChtX29wZW5DdXJz
b3JzKTsKKyAgICBmb3IgKEhhc2hTZXQ8SURCQ3Vyc29yKj46Oml0ZXJhdG9yIGkgPSBjdXJzb3Jz
LmJlZ2luKCk7IGkgIT0gY3Vyc29ycy5lbmQoKTsgKytpKQorICAgICAgICAoKmkpLT5jbG9zZSgp
OworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCog
cmVxdWVzdCkKIHsKICAgICBtX2NoaWxkUmVxdWVzdHMuYWRkKHJlcXVlc3QpOwpAQCAtMTQ4LDYg
KzE3OCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoKQogCiAgICAgaWYgKG1fbW9k
ZSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpCiAgICAgICAgIG1fZGF0YWJhc2Ut
PmNsZWFyVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHRoaXMpOworICAgIGNsb3NlT3BlbkN1cnNv
cnMoKTsKIAogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MCw2ICsxOTEsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvbkNvbXBsZXRlKCkKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7
CiAgICAgaWYgKG1fbW9kZSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpCiAgICAg
ICAgIG1fZGF0YWJhc2UtPmNsZWFyVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHRoaXMpOworICAg
IGNsb3NlT3BlbkN1cnNvcnMoKTsKIAogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uaAppbmRleCAxZDM0Y2MzYmQ0MDMzNzk4OTIwNjkxYzAwYmE4OTlh
ZDEyMGUyODg4Li4zYzYwMzUwZDZmOWFlMDVhYjAxYzI2OGZlYmMwNDZkZWYyMzQ2ZGZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNiwxMCArMzYsMTIgQEAK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkN1cnNvcjsKIGNsYXNzIElEQkRhdGFiYXNlOwog
Y2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKQEAgLTYyLDYgKzY0LDE1IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFib3J0KCk7CiAKKyAgICBjbGFzcyBPcGVuQ3Vy
c29yTm90aWZpZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgT3BlbkN1cnNvck5vdGlmaWVyKFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+LCBJREJDdXJzb3IqKTsKKyAgICAgICAgfk9wZW5DdXJz
b3JOb3RpZmllcigpOworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gbV90cmFuc2FjdGlvbjsKKyAgICAgICAgSURCQ3Vyc29yKiBtX2N1cnNvcjsKKyAgICB9Owor
CiAgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCopOwogICAgIHZvaWQgdW5yZWdp
c3RlclJlcXVlc3QoSURCUmVxdWVzdCopOwogICAgIHZvaWQgb2JqZWN0U3RvcmVDcmVhdGVkKGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKQEAgLTkzLDYgKzEwNCwx
MCBAQCBwcml2YXRlOgogICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIElEQkRhdGFiYXNl
Kik7CiAKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdm9p
ZCBjbG9zZU9wZW5DdXJzb3JzKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJD
dXJzb3IqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvciopOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9CkBAIC0xMTEsNiArMTI2LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVNYXA7CiAgICAg
SURCT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZU1hcDsKIAorICAgIEhhc2hTZXQ8SURCQ3Vy
c29yKj4gbV9vcGVuQ3Vyc29yczsKKwogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0
RGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2MjNlNWEyYmFkMjJlYzZhZTEzZWI2NjhmMGM3MTE4MTljZDBh
NWY5Li40MmMyZjJkN2I2NzZjYjQ5OTk2YWVkNGQwMDc3OTA3MmI2ZTFjMjUyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDItMjkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IFJlc291cmNlIGxlYWsgd2l0aCBJREJPYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03OTgzNQorCisgICAgICAgIEVuc3VyZSB0aGF0IElEQkN1cnNvci5jb250aW51ZSgpIHRo
cm93cyB0aGUgcmlnaHQgZXhjZXB0aW9uIHdoZW4gdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItY29udGludWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sOgorCiAyMDEyLTAyLTI3ICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlbW92aW5nIDx1bD4sIDxs
aT4gaW5zaWRlIHNoYWRvdyBET00gdHJpZ2dlcnMgYXNzZXJ0aW9uIGluIHVwZGF0ZUxpc3RNYXJr
ZXJOdW1iZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItY29udGludWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWNvbnRpbnVlLWV4cGVjdGVkLnR4dAppbmRleCAzZjQwYmEyZGYzNzlkZmRlODVkMjJk
OGJhYmJjZjFhYjAwMDRkZmE0Li5iNjRkZGQ5ZmFkZjlkNmEzNDU0NmU4MDhkMTk4YTM5YTZjNjQ0
MjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29u
dGludWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1jb250aW51ZS1leHBlY3RlZC50eHQKQEAgLTEwOCw5ICsxMDgsMTMgQEAgaW5kZXhPYmpl
Y3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVikKIFBBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDE3CiBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdB
IGJpdDInKQogUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgMTUKK2N1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKQogUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KIFBBU1MgY29kZSBpcyBJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIGN1cnNvci5jb250aW51ZSgpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29udGlu
dWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5o
dG1sCmluZGV4IDI4YjY3OWI4MGRkOWJiMzMzNWI4M2RhNTQ1MWIyNzQ3ZGYyNGNiODkuLjQ5OGNm
ODllODc2NTFhZDM5NjZiMDg5NzgxZmRlMmZiZDJiNDJjYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sCkBAIC0yNjIsOCArMjYy
LDkgQEAgZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKICAgICAgICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CiAgICAg
ICAgIH0gZWxzZSBpZiAod2luZG93LnN0YWdlID09IDEpIHsKICAgICAgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTUiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAgICAgICAgICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0
MicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICB3aW5kb3cudHJhbnMub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25D
b21wbGV0ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKQEAgLTI3Miw2ICsyNzMsMTIgQEAgZnVu
Y3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKICAgICB9OwogfQogCitmdW5jdGlvbiBv
blRyYW5zYWN0aW9uQ29tcGxldGUoKQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1
cnNvci5jb250aW51ZSgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwogdGVzdCgpOwogIAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>