<?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>34152</bug_id>
          
          <creation_ts>2010-01-25 20:00:06 -0800</creation_ts>
          <short_desc>SQLiteTransactions&apos;s destructor should not try to rollback a transaction in progress</short_desc>
          <delta_ts>2010-02-01 15:33: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184474</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-25 20:00:06 -0800</bug_when>
    <thetext>Currently, SQLiteTransaction&apos;s destructor tries to rollback a transaction that&apos;s in progress. This is not the right thing to do and leads to an assertion failure if the SQLiteTransaction object happens to be destroyed on the main thread (this could happen at shutdown). I believe the right thing to do is to do nothing in ~SQLiteTransaction. SQLTransaction already has logic to rollback a transaction if a transaction&apos;s error callback is invoked; and if a shutdown happens in the middle of a transaction, the DB thread makes sure to close all DB connections, which makes sqlite automatically rollback any transaction in progress, according to http://www.sqlite.org/c3ref/close.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184478</commentid>
    <comment_count>1</comment_count>
      <attachid>47383</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-25 20:32:08 -0800</bug_when>
    <thetext>Created attachment 47383
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184661</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 12:04:04 -0800</bug_when>
    <thetext>Hmmm... I don&apos;t think this is a good change.

sql/SQLiteTransaction dtor with the call to rollback() if in progress looks very correct. 

It sounds like there are some cases where that behavior doesn&apos;t work well for storage/SQLTransaction, but I think the place to &apos;fix&apos; whatever issues those are would be closer to storage/SQLTransaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184715</commentid>
    <comment_count>3</comment_count>
      <attachid>47383</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-26 14:02:28 -0800</bug_when>
    <thetext>Comment on attachment 47383
patch

Should we be replacing this with an ASSERT?  r- pending response to michael&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184921</commentid>
    <comment_count>4</comment_count>
      <attachid>47488</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-26 20:36:11 -0800</bug_when>
    <thetext>Created attachment 47488
patch

An alternative approach: destroy the SQLiteTransaction objects associated with in-progress transactions (and thus, roll back those transactions) on the DB thread, before the DB thread goes away, but after it stops processing tasks from its task queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184927</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-26 21:12:35 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=47488) [details]
&gt; patch

This approach looks much better to me.

It may nice to ASSERT(!m_sqliteTransaction) in the ~SQLTransation.

442	    m_database-&gt;m_databaseAuthorizer-&gt;disable();
443	    m_sqliteTransaction-&gt;commit();
444	    m_database-&gt;m_databaseAuthorizer-&gt;enable();
445	
446	    // If the commit failed, the transaction will still be marked as &quot;in progress&quot;
447	    if (m_sqliteTransaction-&gt;inProgress()) {
448	        m_transactionError = SQLError::create(0, &quot;failed to commit the transaction&quot;);
449	        handleTransactionError(false);
450	        return;
451	    }

           m_sqliteTransaction.clear();

I think we could make that assertion if the ptr was cleared after successfully committing in postflightAndCommit(). The error cases and early thread shutdown cases result in a cleared ptr, only the success case leaves it allocated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185197</commentid>
    <comment_count>6</comment_count>
      <attachid>47560</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-27 13:20:48 -0800</bug_when>
    <thetext>Created attachment 47560
patch

Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185217</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-27 14:17:33 -0800</bug_when>
    <thetext>this lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185218</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-27 14:23:33 -0800</bug_when>
    <thetext>Somewhat unrelated to this change...

void SQLiteTransaction::commit()
{
    if (m_inProgress) {
        ASSERT(m_db.m_transactionInProgress);
        m_db.executeCommand(&quot;COMMIT;&quot;);
        m_inProgress = false;
        m_db.m_transactionInProgress = false;
    }
}

... what if the COMMIT fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185221</commentid>
    <comment_count>9</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-27 14:32:22 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Somewhat unrelated to this change...
&gt; 
&gt; void SQLiteTransaction::commit()
&gt; {
&gt;     if (m_inProgress) {
&gt;         ASSERT(m_db.m_transactionInProgress);
&gt;         m_db.executeCommand(&quot;COMMIT;&quot;);
&gt;         m_inProgress = false;
&gt;         m_db.m_transactionInProgress = false;
&gt;     }
&gt; }
&gt; 
&gt; ... what if the COMMIT fails?

This is a bug that should be fixed in this patch, because SQLTransaction is expecting m_inProgress to be false if commit() fails. SQLTransaction treats a failed commit() as any other transaction error, and tries to rollback the transaction.

New patch coming in a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185309</commentid>
    <comment_count>10</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-27 18:34:26 -0800</bug_when>
    <thetext>Actually, while trying to make the last change Michael suggested (&quot;what if COMMIT fails?&quot;), we ran into a much bigger problem, that is way beyond the scope of this bug. So Michael and I decided that the last patch that I uploaded (and Michael LGTM&apos;d) is the most appropriate patch for this bug.

Eric (or whoever will be reviewing this patch), can you please take a look at the last patch, and ignore Michael&apos;s comments about COMMIT failing for now? I will open a separate bug for that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185999</commentid>
    <comment_count>11</comment_count>
      <attachid>47743</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-29 16:25:13 -0800</bug_when>
    <thetext>Created attachment 47743
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186583</commentid>
    <comment_count>12</comment_count>
      <attachid>47743</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 15:10:38 -0800</bug_when>
    <thetext>Comment on attachment 47743
patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186602</commentid>
    <comment_count>13</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-01 15:33:31 -0800</bug_when>
    <thetext>Landed as r54162.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47383</attachid>
            <date>2010-01-25 20:32:08 -0800</date>
            <delta_ts>2010-01-26 20:36:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>2410</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDEtMjUgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEbyBub3Qgcm9sbGJhY2sgYSB0cmFuc2FjdGlvbiB3aGVuIGEgU1FMaXRlVHJhbnNhY3Rpb24g
b2JqZWN0IGlzCisgICAgICAgIGRlc3Ryb3llZC4gSW5zdGVhZCwgYSB0cmFuc2FjdGlvbiBzaG91
bGQgYmUgcm9sbGVkIGFzIHBsYW5uZWQgaW4KKyAgICAgICAgdGhlIGVycm9yIGNhbGxiYWNrLCBv
ciBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgcm9sbGVkIGJhY2sgYnkKKyAgICAgICAgc3FsaXRl
IGlmIGEgREIgY29ubmVjdGlvbiBpcyBjbG9zZWQgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbgor
ICAgICAgICBwcm9ncmVzcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzQxNTIKKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmg6CisK
IDIwMTAtMDEtMjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDUzODM2KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcs
NiBAQCBTUUxpdGVUcmFuc2FjdGlvbjo6U1FMaXRlVHJhbnNhY3Rpb24oU1FMCiB7CiB9CiAKLVNR
TGl0ZVRyYW5zYWN0aW9uOjp+U1FMaXRlVHJhbnNhY3Rpb24oKQotewotICAgIGlmIChtX2luUHJv
Z3Jlc3MpCi0gICAgICAgIHJvbGxiYWNrKCk7Ci19Ci0KIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246
OmJlZ2luKCkKIHsKICAgICBpZiAoIW1faW5Qcm9ncmVzcykgewpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiA1MzgzNikKKysrIFdlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcg
KzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBTUUxpdGVUcmFuc2FjdGlv
bl9oCkBAIC0zNiwxMyArMzYsMTIgQEAgY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb24gOiBwdWJsaWMg
Tm9uY29weQogewogcHVibGljOgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNl
JiBkYiwgYm9vbCByZWFkT25seSA9IGZhbHNlKTsKLSAgICB+U1FMaXRlVHJhbnNhY3Rpb24oKTsK
LSAgICAKKwogICAgIHZvaWQgYmVnaW4oKTsKICAgICB2b2lkIGNvbW1pdCgpOwogICAgIHZvaWQg
cm9sbGJhY2soKTsKICAgICB2b2lkIHN0b3AoKTsKLSAgICAKKwogICAgIGJvb2wgaW5Qcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Qcm9ncmVzczsgfQogcHJpdmF0ZToKICAgICBTUUxpdGVE
YXRhYmFzZSYgbV9kYjsKQEAgLTUyLDQgKzUxLDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gU1FMaXRlVHJhbnNhdGlvbl9ICisjZW5kaWYgLy8gU1FM
aXRlVHJhbnNhdGlvbl9oCg==
</data>
<flag name="review"
          id="29806"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="29807"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47488</attachid>
            <date>2010-01-26 20:36:11 -0800</date>
            <delta_ts>2010-01-27 13:20:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4564</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzg5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMjYgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtpbmcgc3VyZSB0aGF0IGFsbCBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHJvbGxl
ZCBiYWNrIG9uCisgICAgICAgIHRoZSBkYXRhYmFzZSB0aHJlYWQgYmVmb3JlIHRoZXkncmUgZGVz
dHJveWVkLiBPdGhlcndpc2UsCisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uJ3MgZGVzdHJ1Y3Rv
ciB3aWxsIHRyeSB0byBkbyBhIHJvbGxiYWNrIGFuZCB0aGF0CisgICAgICAgIHdvdWxkIGNhdXNl
IGFuIGFzc2VydGlvbiBmYWlsdXJlLCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBkZXN0cm95ZWQKKyAg
ICAgICAgb24gdGhlIERCIHRocmVhZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzQxNTIKKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6c3Rv
cCk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6
CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIHN0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yOjpzaHV0ZG93bik6CisKIDIwMTAtMDEtMjYgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAkocmV2
aXNpb24gNTM4ODgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDggKzg0LDEwIEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rp
b246OnJvbGxiYWNrKCkKIAogdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6c3RvcCgpCiB7Ci0gICAg
bV9pblByb2dyZXNzID0gZmFsc2U7Ci0gICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IGZhbHNlOworICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKKyAgICAgICAgbV9pblByb2dyZXNzID0g
ZmFsc2U7CisgICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAg
ICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcAkocmV2aXNpb24gNTM4ODgpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKICNpbmNsdWRlICJEYXRh
YmFzZURldGFpbHMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpA
QCAtMjAzLDYgKzIwNCwxNiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0Nh
bGxiCiAgICAgICAgICh0aGlzLT4qbV9uZXh0U3RlcCkoKTsKIH0KIAordm9pZCBTUUxUcmFuc2Fj
dGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpCit7CisgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOworCisgICAgLy8gSWYgdGhlIHRyYW5z
YWN0aW9uIGlzIGluIHByb2dyZXNzLCB3ZSBzaG91bGQgcm9sbCBpdCBiYWNrIGhlcmUsIHNpbmNl
IHRoaXMgaXMgb3VyIGxhc3QKKyAgICAvLyBvcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyByZWxh
dGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlIERCIHRocmVhZC4KKyAgICAvLyBDbGVhcmlu
ZyBtX3NxbGl0ZVRyYW5zYWN0aW9uIGludm9rZXMgU1FMaXRlVHJhbnNhY3Rpb24ncyBkZXN0cnVj
dG9yIHdoaWNoIGRvZXMganVzdCB0aGF0LgorICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24uY2xlYXIo
KTsKK30KKwogdm9pZCBTUUxUcmFuc2FjdGlvbjo6YWNxdWlyZUxvY2soKQogewogICAgIG1fZGF0
YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+YWNxdWlyZUxvY2sodGhpcyk7CkluZGV4
OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gNTM4ODgpCisrKyBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBw
dWJsaWM6CiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdl
dCgpOyB9CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgeyByZXR1cm4gbV9yZWFkT25seTsgfQorICAg
IHZvaWQgbm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogCiBwcml2YXRlOgog
ICAgIFNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LApJbmRleDog
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAkocmV2aXNp
b24gNTM4ODgpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksMjAgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yOjpyZWxlYXNlTAogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6
OnNodXRkb3duKCkKIHsKKyAgICAvLyBOb3RpZnkgYWxsIHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVz
cyB0aGF0IHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgc2h1dHRpbmcgZG93bgorICAgIGZvciAoQ29v
cmRpbmF0aW9uSW5mb01hcDo6aXRlcmF0b3IgY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9j
b29yZGluYXRpb25JbmZvTWFwLmJlZ2luKCk7CisgICAgICAgICBjb29yZGluYXRpb25JbmZvSXRl
cmF0b3IgIT0gbV9jb29yZGluYXRpb25JbmZvTWFwLmVuZCgpOyArK2Nvb3JkaW5hdGlvbkluZm9J
dGVyYXRvcikgeworICAgICAgICBDb29yZGluYXRpb25JbmZvJiBpbmZvID0gY29vcmRpbmF0aW9u
SW5mb0l0ZXJhdG9yLT5zZWNvbmQ7CisgICAgICAgIGlmIChpbmZvLmFjdGl2ZVdyaXRlVHJhbnNh
Y3Rpb24pCisgICAgICAgICAgICBpbmZvLmFjdGl2ZVdyaXRlVHJhbnNhY3Rpb24tPm5vdGlmeURh
dGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFJlZlB0
cjxTUUxUcmFuc2FjdGlvbj4gPjo6aXRlcmF0b3IgYWN0aXZlUmVhZFRyYW5zYWN0aW9uc0l0ZXJh
dG9yID0KKyAgICAgICAgICAgICAgICAgICAgIGluZm8uYWN0aXZlUmVhZFRyYW5zYWN0aW9ucy5i
ZWdpbigpOworICAgICAgICAgICAgIGFjdGl2ZVJlYWRUcmFuc2FjdGlvbnNJdGVyYXRvciAhPSBp
bmZvLmFjdGl2ZVJlYWRUcmFuc2FjdGlvbnMuZW5kKCk7CisgICAgICAgICAgICAgKythY3RpdmVS
ZWFkVHJhbnNhY3Rpb25zSXRlcmF0b3IpIHsKKyAgICAgICAgICAgICgqYWN0aXZlUmVhZFRyYW5z
YWN0aW9uc0l0ZXJhdG9yKS0+bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgLy8gQ2xlYW4gdXAgYWxsIHBlbmRpbmcgdHJhbnNhY3Rp
b25zIGZvciBhbGwgZGF0YWJhc2VzCiAgICAgbV9jb29yZGluYXRpb25JbmZvTWFwLmNsZWFyKCk7
CiB9Cg==
</data>
<flag name="commit-queue"
          id="29937"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47560</attachid>
            <date>2010-01-27 13:20:48 -0800</date>
            <delta_ts>2010-01-29 16:25:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5236</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzk0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMjYgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtpbmcgc3VyZSB0aGF0IGFsbCBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHJvbGxl
ZCBiYWNrIG9uCisgICAgICAgIHRoZSBkYXRhYmFzZSB0aHJlYWQgYmVmb3JlIHRoZXkncmUgZGVz
dHJveWVkLiBPdGhlcndpc2UsCisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uJ3MgZGVzdHJ1Y3Rv
ciB3aWxsIHRyeSB0byBkbyBhIHJvbGxiYWNrIGFuZCB0aGF0CisgICAgICAgIHdvdWxkIGNhdXNl
IGFuIGFzc2VydGlvbiBmYWlsdXJlLCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBkZXN0cm95ZWQKKyAg
ICAgICAgb24gdGhlIERCIHRocmVhZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzQxNTIKKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6c3Rv
cCk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6
CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIHN0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yOjpzaHV0ZG93bik6CisKIDIwMTAtMDEtMjcgIFlhZWwgQWhhcm9u
ICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBH
b21ib3MuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3Bw
CShyZXZpc2lvbiA1Mzk0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsOCArODQsMTAgQEAgdm9pZCBTUUxpdGVUcmFu
c2FjdGlvbjo6cm9sbGJhY2soKQogCiB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpzdG9wKCkKIHsK
LSAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzID0gZmFsc2U7CisgICAgaWYgKG1faW5Qcm9ncmVzcykgeworICAgICAgICBtX2luUHJvZ3Jl
c3MgPSBmYWxzZTsKKyAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNl
OworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiA1Mzk0OCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlRGV0YWlscy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdl
LmgiCkBAIC04Myw2ICs4NCw3IEBAIFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbihEYXRh
YmFzZSoKIAogU1FMVHJhbnNhY3Rpb246On5TUUxUcmFuc2FjdGlvbigpCiB7CisgICAgQVNTRVJU
KCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0
ZVNRTChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYg
YXJndW1lbnRzLCBQYXNzUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiBjYWxsYmFjaywgUGFz
c1JlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBjYWxsYmFja0Vycm9yLCBFeGNlcHRp
b25Db2RlJiBlKQpAQCAtMjAzLDYgKzIwNSwxNiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJm
b3JtUGVuZGluZ0NhbGxiCiAgICAgICAgICh0aGlzLT4qbV9uZXh0U3RlcCkoKTsKIH0KIAordm9p
ZCBTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpCit7
CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOworCisgICAgLy8g
SWYgdGhlIHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzLCB3ZSBzaG91bGQgcm9sbCBpdCBiYWNr
IGhlcmUsIHNpbmNlIHRoaXMgaXMgb3VyIGxhc3QKKyAgICAvLyBvcG9ydHVuaXR5IHRvIGRvIHNv
bWV0aGluZyByZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlIERCIHRocmVhZC4KKyAg
ICAvLyBDbGVhcmluZyBtX3NxbGl0ZVRyYW5zYWN0aW9uIGludm9rZXMgU1FMaXRlVHJhbnNhY3Rp
b24ncyBkZXN0cnVjdG9yIHdoaWNoIGRvZXMganVzdCB0aGF0LgorICAgIG1fc3FsaXRlVHJhbnNh
Y3Rpb24uY2xlYXIoKTsKK30KKwogdm9pZCBTUUxUcmFuc2FjdGlvbjo6YWNxdWlyZUxvY2soKQog
ewogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+YWNxdWlyZUxvY2so
dGhpcyk7CkBAIC00OTEsNiArNTAzLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2xlYW51cEFm
dGVyU3VjY2VzcwogICAgIC8vIFRoZXJlIGlzIG5vIG5leHQgc3RlcAogICAgIExPRyhTdG9yYWdl
QVBJLCAiVHJhbnNhY3Rpb24gJXAgaXMgY29tcGxldGVcbiIsIHRoaXMpOwogICAgIEFTU0VSVCgh
bV9kYXRhYmFzZS0+bV9zcWxpdGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7Cisg
ICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSAwOwogCiAg
ICAgLy8gUmVsZWFzZSB0aGUgbG9jayBvbiB0aGlzIGRhdGFiYXNlCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb24uaAkocmV2aXNpb24gNTM5NDgpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBwdWJsaWM6CiAKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAgICAg
Ym9vbCBpc1JlYWRPbmx5KCkgeyByZXR1cm4gbV9yZWFkT25seTsgfQorICAgIHZvaWQgbm90aWZ5
RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogCiBwcml2YXRlOgogICAgIFNRTFRyYW5z
YWN0aW9uKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LApJbmRleDogV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gNTM5NDgpCisr
KyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSw2ICsxMDksMjAgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
OjpyZWxlYXNlTAogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnNodXRkb3duKCkK
IHsKKyAgICAvLyBOb3RpZnkgYWxsIHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyB0aGF0IHRoZSBk
YXRhYmFzZSB0aHJlYWQgaXMgc2h1dHRpbmcgZG93bgorICAgIGZvciAoQ29vcmRpbmF0aW9uSW5m
b01hcDo6aXRlcmF0b3IgY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25J
bmZvTWFwLmJlZ2luKCk7CisgICAgICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgIT0gbV9j
b29yZGluYXRpb25JbmZvTWFwLmVuZCgpOyArK2Nvb3JkaW5hdGlvbkluZm9JdGVyYXRvcikgewor
ICAgICAgICBDb29yZGluYXRpb25JbmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9y
LT5zZWNvbmQ7CisgICAgICAgIGlmIChpbmZvLmFjdGl2ZVdyaXRlVHJhbnNhY3Rpb24pCisgICAg
ICAgICAgICBpbmZvLmFjdGl2ZVdyaXRlVHJhbnNhY3Rpb24tPm5vdGlmeURhdGFiYXNlVGhyZWFk
SXNTaHV0dGluZ0Rvd24oKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbj4gPjo6aXRlcmF0b3IgYWN0aXZlUmVhZFRyYW5zYWN0aW9uc0l0ZXJhdG9yID0KKyAgICAg
ICAgICAgICAgICAgICAgIGluZm8uYWN0aXZlUmVhZFRyYW5zYWN0aW9ucy5iZWdpbigpOworICAg
ICAgICAgICAgIGFjdGl2ZVJlYWRUcmFuc2FjdGlvbnNJdGVyYXRvciAhPSBpbmZvLmFjdGl2ZVJl
YWRUcmFuc2FjdGlvbnMuZW5kKCk7CisgICAgICAgICAgICAgKythY3RpdmVSZWFkVHJhbnNhY3Rp
b25zSXRlcmF0b3IpIHsKKyAgICAgICAgICAgICgqYWN0aXZlUmVhZFRyYW5zYWN0aW9uc0l0ZXJh
dG9yKS0+bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgLy8gQ2xlYW4gdXAgYWxsIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciBhbGwg
ZGF0YWJhc2VzCiAgICAgbV9jb29yZGluYXRpb25JbmZvTWFwLmNsZWFyKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="30023"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47743</attachid>
            <date>2010-01-29 16:25:13 -0800</date>
            <delta_ts>2010-02-01 15:10:37 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5916</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDA4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMjkgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtpbmcgc3VyZSB0aGF0IGFsbCBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHJvbGxl
ZCBiYWNrIG9uCisgICAgICAgIHRoZSBkYXRhYmFzZSB0aHJlYWQgYmVmb3JlIHRoZXkncmUgZGVz
dHJveWVkLiBPdGhlcndpc2UsCisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uJ3MgZGVzdHJ1Y3Rv
ciB3aWxsIHRyeSB0byBkbyBhIHJvbGxiYWNrIGFuZCB0aGF0CisgICAgICAgIHdvdWxkIGNhdXNl
IGFuIGFzc2VydGlvbiBmYWlsdXJlLCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBkZXN0cm95ZWQKKyAg
ICAgICAgb24gdGhlIERCIHRocmVhZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzQxNTIKKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6c3Rv
cCk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6
CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIHN0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yOjpzaHV0ZG93bik6CisKIDIwMTAtMDEtMjkgIEJyaWFuIFdlaW5z
dGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
Um9iZW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3Bw
CShyZXZpc2lvbiA1NDA4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTEgQEAgdm9pZCBTUUxpdGVUcmFu
c2FjdGlvbjo6YmVnaW4oKQogCiB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogewor
ICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgaXMgYnVnZ3k7IGl0IGFzc3VtZXMgdGhhdCBDT01NSVQg
YWx3YXlzIHN1Y2NlZWRzIHdoaWNoIGlzIG5vdCB0aGUgY2FzZToKKyAgICAvLyB0aGUgdHJhbnNh
Y3Rpb24gY291bGQndmUgYmVlbiBzaWxlbnRseSByb2xsZWQgYmFjayBiZWZvcmUgZ2V0dGluZyB0
byB0aGUgQ09NTUlUIHN0YXRlbWVudAorICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzQyODApLiBIb3dldmVyLCB0aGUgcmVzdCBvZiB0aGUgY29kZSBkb2Vz
IG5vdAorICAgIC8vIGtub3cgaG93IHRvIGRlYWwgd2l0aCBhIHByZW1hdHVyZSByb2xsYmFjayBh
bmQgYSBmYWlsZWQgQ09NTUlUIGF0IHRoaXMgbW9tZW50LCBzbyB1bnRpbAorICAgIC8vIHdlIGZp
Z3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIGJ1ZyAzNDI4MCwgaXQncyBiZXR0ZXIgdG8gbGVhdmUg
dGhpcyBjb2RlIGFzIGl0IGlzLgogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAgICAgICAgQVNT
RVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwogICAgICAgICBtX2RiLmV4ZWN1dGVD
b21tYW5kKCJDT01NSVQ7Iik7CkBAIC04NCw4ICs4OSwxMCBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0
aW9uOjpyb2xsYmFjaygpCiAKIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OnN0b3AoKQogewotICAg
IG1faW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSBmYWxzZTsKKyAgICBpZiAobV9pblByb2dyZXNzKSB7CisgICAgICAgIG1faW5Qcm9ncmVzcyA9
IGZhbHNlOworICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7Cisg
ICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbi5jcHAJKHJldmlzaW9uIDU0MDg0KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VEZXRhaWxzLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTgzLDYgKzg0LDcgQEAgU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNl
KgogCiBTUUxUcmFuc2FjdGlvbjo6flNRTFRyYW5zYWN0aW9uKCkKIHsKKyAgICBBU1NFUlQoIW1f
c3FsaXRlVHJhbnNhY3Rpb24pOwogfQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU1FM
KGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1
bWVudHMsIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVm
UHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGNhbGxiYWNrRXJyb3IsIEV4Y2VwdGlvbkNv
ZGUmIGUpCkBAIC0yMDMsNiArMjA1LDE2IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBlcmZvcm1Q
ZW5kaW5nQ2FsbGIKICAgICAgICAgKHRoaXMtPiptX25leHRTdGVwKSgpOwogfQogCit2b2lkIFNR
TFRyYW5zYWN0aW9uOjpub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCkKK3sKKyAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisKKyAgICAvLyBJZiB0
aGUgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVy
ZSwgc2luY2UgdGhpcyBpcyBvdXIgbGFzdAorICAgIC8vIG9wb3J0dW5pdHkgdG8gZG8gc29tZXRo
aW5nIHJlbGF0ZWQgdG8gdGhpcyB0cmFuc2FjdGlvbiBvbiB0aGUgREIgdGhyZWFkLgorICAgIC8v
IENsZWFyaW5nIG1fc3FsaXRlVHJhbnNhY3Rpb24gaW52b2tlcyBTUUxpdGVUcmFuc2FjdGlvbidz
IGRlc3RydWN0b3Igd2hpY2ggZG9lcyBqdXN0IHRoYXQuCisgICAgbV9zcWxpdGVUcmFuc2FjdGlv
bi5jbGVhcigpOworfQorCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjphY3F1aXJlTG9jaygpCiB7CiAg
ICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpLT5hY3F1aXJlTG9jayh0aGlz
KTsKQEAgLTQ5MSw2ICs1MDMsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJT
dWNjZXNzCiAgICAgLy8gVGhlcmUgaXMgbm8gbmV4dCBzdGVwCiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJUcmFuc2FjdGlvbiAlcCBpcyBjb21wbGV0ZVxuIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2Rh
dGFiYXNlLT5tX3NxbGl0ZURhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICBt
X3NxbGl0ZVRyYW5zYWN0aW9uLmNsZWFyKCk7CiAgICAgbV9uZXh0U3RlcCA9IDA7CiAKICAgICAv
LyBSZWxlYXNlIHRoZSBsb2NrIG9uIHRoaXMgZGF0YWJhc2UKSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbi5oCShyZXZpc2lvbiA1NDA4NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIERh
dGFiYXNlKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KICAgICBib29s
IGlzUmVhZE9ubHkoKSB7IHJldHVybiBtX3JlYWRPbmx5OyB9CisgICAgdm9pZCBub3RpZnlEYXRh
YmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCk7CiAKIHByaXZhdGU6CiAgICAgU1FMVHJhbnNhY3Rp
b24oRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiA1NDA4NCkKKysrIFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA5LDYgKzEwOSwyMCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnJl
bGVhc2VMCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6c2h1dGRvd24oKQogewor
ICAgIC8vIE5vdGlmeSBhbGwgdHJhbnNhY3Rpb25zIGluIHByb2dyZXNzIHRoYXQgdGhlIGRhdGFi
YXNlIHRocmVhZCBpcyBzaHV0dGluZyBkb3duCisgICAgZm9yIChDb29yZGluYXRpb25JbmZvTWFw
OjppdGVyYXRvciBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9N
YXAuYmVnaW4oKTsKKyAgICAgICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciAhPSBtX2Nvb3Jk
aW5hdGlvbkluZm9NYXAuZW5kKCk7ICsrY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yKSB7CisgICAg
ICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBjb29yZGluYXRpb25JbmZvSXRlcmF0b3ItPnNl
Y29uZDsKKyAgICAgICAgaWYgKGluZm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbikKKyAgICAgICAg
ICAgIGluZm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbi0+bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1No
dXR0aW5nRG93bigpOworICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFNRTFRyYW5zYWN0aW9u
PiA+OjppdGVyYXRvciBhY3RpdmVSZWFkVHJhbnNhY3Rpb25zSXRlcmF0b3IgPQorICAgICAgICAg
ICAgICAgICAgICAgaW5mby5hY3RpdmVSZWFkVHJhbnNhY3Rpb25zLmJlZ2luKCk7CisgICAgICAg
ICAgICAgYWN0aXZlUmVhZFRyYW5zYWN0aW9uc0l0ZXJhdG9yICE9IGluZm8uYWN0aXZlUmVhZFRy
YW5zYWN0aW9ucy5lbmQoKTsKKyAgICAgICAgICAgICArK2FjdGl2ZVJlYWRUcmFuc2FjdGlvbnNJ
dGVyYXRvcikgeworICAgICAgICAgICAgKCphY3RpdmVSZWFkVHJhbnNhY3Rpb25zSXRlcmF0b3Ip
LT5ub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICAvLyBDbGVhbiB1cCBhbGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIGFsbCBkYXRh
YmFzZXMKICAgICBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuY2xlYXIoKTsKIH0K
</data>
<flag name="review"
          id="30278"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="30279"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>