<?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>10114</bug_id>
          
          <creation_ts>2006-07-25 19:14:07 -0700</creation_ts>
          <short_desc>Exceptions thrown by WebKitPlugins are ignored</short_desc>
          <delta_ts>2006-09-03 12:19:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Dan Waylonis">waylonis</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>50809</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-07-25 19:14:07 -0700</bug_when>
    <thetext>I have a WebKitPlugin.  I found that if my plugin calls [WebScriptObject throwException:@&quot;foo&quot;], the exception is not propagated.  The problem is that there are multiple ExecStates that are created by the interpreter when evaluating a try / catch block.  The throwException routine (and setException:) do not take this into account.

I have created a patch to fix this.  The patch includes code changes and test changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50810</commentid>
    <comment_count>1</comment_count>
      <attachid>9688</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-07-25 19:16:29 -0700</bug_when>
    <thetext>Created attachment 9688
Patch to fix WebKitPlugin exceptions

This patch provides code to fix the bug and test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50867</commentid>
    <comment_count>2</comment_count>
      <attachid>9688</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-26 13:57:38 -0700</bug_when>
    <thetext>Comment on attachment 9688
Patch to fix WebKitPlugin exceptions

I want Geoff Garen or Maciej Stachowiak to review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50870</commentid>
    <comment_count>3</comment_count>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-07-26 14:04:48 -0700</bug_when>
    <thetext>Hi, sounds like a good idea.  I thought about this some more and there might be a problem in a multi-view or threaded environment.  It might be better to use the pthread_getspecific() / pthread_setspecific() for the storage to the ExecStates pointer in the ObjcInstance class rather than a static variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51091</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-28 20:34:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Hi, sounds like a good idea.  I thought about this some more and there might be
&gt; a problem in a multi-view or threaded environment.  It might be better to use
&gt; the pthread_getspecific() / pthread_setspecific() for the storage to the
&gt; ExecStates pointer in the ObjcInstance class rather than a static variable.

I agree that per-thread would be better in principle. May not matter in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51247</commentid>
    <comment_count>5</comment_count>
      <attachid>9688</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-07-31 16:02:16 -0700</bug_when>
    <thetext>Comment on attachment 9688
Patch to fix WebKitPlugin exceptions

I don&apos;t think it&apos;s right for the WebScriptObject API to be responsible for tracking the current ExecState. That&apos;s really a job for the JS engine. We attempted a similar hack to this one in JavaScriptGlue, and bad things happened (crashes, incompatibilities when the engine changed, mismatches between the stored ExecState and the real one). There&apos;s also the threading issue you mention, if we add support for ObjC plug-ins to the JS API.

The interpreter knows about the global ExecState and the most nested Context. I think a better solution would be to use that model. Giving Context a back-pointer to its sibling ExecState (ExecState already keeps a pointer to its sibling Context) is probably easiest. Then you can write code like this:

throwError(interp-&gt;context()-&gt;execState(), GeneralError, exceptionMessage);

Since Context and ExecState should probably merge in the end, the code can eventually become this:

throwError(interp-&gt;context(), GeneralError, exceptionMessage);

For now, a Context is transient and stack-allocated, so there aren&apos;t any ownership issues to worry about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51370</commentid>
    <comment_count>6</comment_count>
      <attachid>9805</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-08-01 16:01:51 -0700</bug_when>
    <thetext>Created attachment 9805
Updated patch with ggaren&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51371</commentid>
    <comment_count>7</comment_count>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-08-01 16:02:46 -0700</bug_when>
    <thetext>I made a new patch using Geoff&apos;s suggestion to put the ExecState backpointer in the Context.  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51382</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-08-01 19:26:14 -0700</bug_when>
    <thetext>This looks pretty good.

+    ExecState(Interpreter* interp, Context* con);

In this prototype, and others, there&apos;s no need to provide names that give no additional data. This would be better:

+    ExecState(Interpreter*, Context*);

+ExecState::ExecState(Interpreter* interp, Context* con)

In this implementation, and others, it would be clearer to use the full words &quot;interpreter&quot; and &quot;context.&quot;

+    void setExecState(ExecState *es) { m_execState = es; }

Our formatting guidelines say to use &quot;Type* &quot; rather than &quot;Type *&quot;, even though not all of our code follows that guideline yet. Also, it&apos;s an idiom throughout JavaScriptCore to name ExecState variables &quot;exec&quot;, rather than &quot;es&quot;.

 - (void)setException:(NSString *)description
 {
-    if (const RootObject *root = [self _executionContext])
-        throwError(root-&gt;interpreter()-&gt;globalExec(), GeneralError, description);
+    [[self class] throwException:description];
 }

This isn&apos;t quite right, as it won&apos;t necessarily set an exception in the target object&apos;s execution context, which is what the API promises. You really want logic that says, &quot;Use root-&gt;interpreter()-&gt;context()-&gt;execState() if it exists, otherwise root-&gt;interpreter()-&gt;globalExec().&quot;

+    void setExecState(ExecState *es) { m_execState = es; }
+    ExecState* execState() { return (m_execState); }

I think it&apos;s impossible to create a Context without having an ExecState available. So a clearer approach would be to require an ExecState as an argument to the Context&apos;s constructor. Then you could change this code

+          if (state) {
+            throwError(state, GeneralError, exceptionMessage);
             return YES;
+          } else
+            fprintf(stderr, &quot;No exec state for 0x%x\n&quot;, (unsigned int)interp-&gt;context());
         }

into an assertion. Also, &quot;state&quot; should be &quot;exec&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51383</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-08-01 19:27:03 -0700</bug_when>
    <thetext>PS. &quot;throwIfArgumentIsNotHello&quot; is a pretty cool method name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51672</commentid>
    <comment_count>10</comment_count>
      <attachid>9864</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-08-03 18:00:08 -0700</bug_when>
    <thetext>Created attachment 9864
Patch to fix WebKitPlugin exceptions

Using Geoff&apos;s suggestions to update the patch.  I wasn&apos;t able to use the ExecState as an argument to the Context&apos;s constructor as there are times that the Context is created before the new ExecState (JSC/kjs/function.cpp: callAsFunction()) is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52779</commentid>
    <comment_count>11</comment_count>
    <who name="Igor Morozov">imorozov</who>
    <bug_when>2006-08-16 13:41:16 -0700</bug_when>
    <thetext>I got the same problem developing plugin for safari. The only difference is that I&apos;m using NPAPI.  So if I call setexception I cannot try/catch it in Javascript. I don&apos;t get any exception at all.  Are you guys saying there is no way to throw an exception in current execution context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53083</commentid>
    <comment_count>12</comment_count>
      <attachid>9864</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-08-22 13:52:55 -0700</bug_when>
    <thetext>Comment on attachment 9864
Patch to fix WebKitPlugin exceptions

Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54170</commentid>
    <comment_count>13</comment_count>
      <attachid>9864</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-29 13:41:06 -0700</bug_when>
    <thetext>Comment on attachment 9864
Patch to fix WebKitPlugin exceptions

Is there a reason the ExecState function has been changed to no longer be inlined? I ask because I&apos;m concerned about how the change might affect performance, and avoiding one extra level of function call in code that is used in only a few places seems still worthwhile.

Formatting is incorrect in ExecState.cpp: indenting is inconsistent and we normally indent the initializers rather than putting them flush left.

+    ExecState* execState() { return (m_execState); }

We don&apos;t put parentheses around return statements like these.

We&apos;ll need to do a performance test to check that this is OK.

Actually I have one big question. What guarantees that the context won&apos;t outlast the execution state? I&apos;m worried that the code in WebScriptObject.mm might try to set the exception in a deallocated ExecState on the stack.

review- only because of that one last question. The other issues seem to be minor ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54195</commentid>
    <comment_count>14</comment_count>
      <attachid>10307</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-08-29 15:30:11 -0700</bug_when>
    <thetext>Created attachment 10307
Patch to fix WebKitPlugin exceptions

Fix indention, formatting, parenthesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54197</commentid>
    <comment_count>15</comment_count>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2006-08-29 15:38:20 -0700</bug_when>
    <thetext>I changed the ExecState constructor to be in the .cpp file because I couldn&apos;t get it to compile when it was inlined in the ExecState.h file.  As far as the concern about a deallocated ExecState goes, I don&apos;t know.  If I had to take a guess, it seems like ExecState and Context travel in pairs.  If you haven&apos;t already seen bugs with exceptions being thrown with stale Contexts, then you probably won&apos;t see the problem with ExecState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54199</commentid>
    <comment_count>16</comment_count>
      <attachid>9864</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-08-29 15:38:40 -0700</bug_when>
    <thetext>Comment on attachment 9864
Patch to fix WebKitPlugin exceptions

I spoke with Darin about this.

The Context won&apos;t outlast the ExecState because both are allocated in tandem on the stack. Our current code relies on the same idiom to ensure that the ExecState won&apos;t outlast the Context.

Eventually, ExecState and Context should just merge to become the same object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54200</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-08-29 15:40:50 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I got the same problem developing plugin for safari. The only difference is
&gt; that I&apos;m using NPAPI.

Igor, the NPAPI is a completely different API. With respect to the WebKit Objective-C API, no, without this patch there is no way to throw an exception in the current execution context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54208</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-08-29 16:10:26 -0700</bug_when>
    <thetext>I&apos;ll land this after performance testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54251</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-08-30 11:39:00 -0700</bug_when>
    <thetext>Committed revision 16117.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54644</commentid>
    <comment_count>20</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-09-02 11:29:45 -0700</bug_when>
    <thetext>This has landed, why is there another patch waiting to be reviewed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54720</commentid>
    <comment_count>21</comment_count>
      <attachid>10307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-09-03 12:19:07 -0700</bug_when>
    <thetext>Comment on attachment 10307
Patch to fix WebKitPlugin exceptions

I&apos;m clearing the review flag on this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9688</attachid>
            <date>2006-07-25 19:16:29 -0700</date>
            <delta_ts>2006-08-01 16:01:51 -0700</delta_ts>
            <desc>Patch to fix WebKitPlugin exceptions</desc>
            <filename>bug-10114.diff</filename>
            <type>text/plain</type>
            <size>9488</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjMzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDctMjUgIHdheWxvbmlz
ICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDogRXhwb3J0IGdldEN1cnJlbnRF
eGVjU3RhdGUoKSBzeW1ib2wKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL29iamNfaW5zdGFuY2Uu
aDogQWRkIGdldEN1cnJlbnRFeGVjU3RhdGUoKSBmdW5jdGlvbgorICAgICAgICAqIGJpbmRpbmdz
L29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52b2tlTWV0
aG9kKTogVXNlIHRoZSBjdXJyZW50RXhlY1N0YXRlIHN0YXRpYyB2YXJpYWJsZSB0byAKKyAgICAg
ICAgc2V0IHRoZSBFeGVjU3RhdGUgdGhhdCB3YXMgcGFzc2VkIGludG8gaW52b2tlTWV0aG9kLiAg
VGhpcyBhbGxvd3MgdGhlCisgICAgICAgIFdlYlNjcmlwdE9iamVjdCB0byBhY2Nlc3MgdGhpcyBF
eGVjU3RhdGUgd2hlbiBzZXR0aW5nIGV4Y2VwdGlvbnMKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6
Z2V0Q3VycmVudEV4ZWNTdGF0ZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgRXhlY1N0YXRlCisKIDIw
MDYtMDctMjQgIERhbiBXYXlsb25pcyAgPHdheWxvbmlzQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYW5kIHR3ZWFrZWQgYSBiaXQgYnkgRGFyaW4uCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCShyZXZpc2lvbiAxNTYzMykKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIF9fWk4zS0pTOEJp
bmRpbmdzMjNjb252ZXJ0VmFsdWVUb09iamNWYWwKIF9fWk4zS0pTOEJpbmRpbmdzOEluc3RhbmNl
MThkaWRFeGVjdXRlRnVuY3Rpb25FdgogX19aTjNLSlM4QmluZGluZ3M4SW5zdGFuY2UyMXNldERp
ZEV4ZWN1dGVGdW5jdGlvbkVQRnZQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RUUKIF9fWk4z
S0pTOEJpbmRpbmdzOEluc3RhbmNlMzJjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJbnN0YW5jZUVO
UzFfMTVCaW5kaW5nTGFuZ3VhZ2VFUHZQS05TMF8xMFJvb3RPYmplY3RFCitfX1pOM0tKUzhCaW5k
aW5nczEyT2JqY0luc3RhbmNlMTlnZXRDdXJyZW50RXhlY1N0YXRlRXYKIF9fWk4zS0pTOERlYnVn
Z2VyMTJzb3VyY2VVbnVzZWRFUE5TXzlFeGVjU3RhdGVFaQogX19aTjNLSlM4RGVidWdnZXI2YXR0
YWNoRVBOU18xMUludGVycHJldGVyRQogX19aTjNLSlM4RGVidWdnZXI5ZXhjZXB0aW9uRVBOU185
RXhlY1N0YXRlRWlpUE5TXzdKU1ZhbHVlRQpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
b2JqYy9vYmpjX2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3Mvb2JqYy9vYmpjX2luc3RhbmNlLmgJKHJldmlzaW9uIDE1NjMzKQorKysgSmF2YVNjcmlwdENv
cmUvYmluZGluZ3Mvb2JqYy9vYmpjX2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYg
KzcyLDggQEAgcHVibGljOgogICAgIEpTVmFsdWUgKm51bWJlclZhbHVlKCkgY29uc3Q7CiAgICAg
SlNWYWx1ZSAqYm9vbGVhblZhbHVlKCkgY29uc3Q7CiAgICAgCisgICAgc3RhdGljIEV4ZWNTdGF0
ZSAqZ2V0Q3VycmVudEV4ZWNTdGF0ZSgpOworICAgIAogcHJpdmF0ZToKICAgICBPYmplY3RTdHJ1
Y3RQdHIgX2luc3RhbmNlOwogICAgIG11dGFibGUgT2JqY0NsYXNzICpfY2xhc3M7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lv
biAxNTYzMykKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogdXNpbmcgbmFtZXNwYWNlIEtKUzo6
QmluZGluZ3M7CiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCitzdGF0aWMgRXhlY1N0YXRlICpjdXJy
ZW50RXhlY1N0YXRlID0gTlVMTDsKKwogT2JqY0luc3RhbmNlOjpPYmpjSW5zdGFuY2UoT2JqZWN0
U3RydWN0UHRyIGluc3RhbmNlKSAKIHsKICAgICBfaW5zdGFuY2UgPSBpbnN0YW5jZTsKQEAgLTE5
NSw3ICsxOTcsMTIgQEAgSlNWYWx1ZSogT2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlYwog
ICAgIH0KIAogICAgIC8vIEludm9rZSB0aGUgT2JqZWN0aXZlQyBtZXRob2QuCisgICAgLy8gUHVz
aCB0aGUgZXhlYyBhcyB0aGUgY3VycmVudEV4ZWNTdGF0ZSBzbyB0aGF0IFdlYlNjcmlwdE9iamVj
dCBrbm93cworICAgIC8vIHRoZSBjdXJyZW50IEV4ZWNTdGF0ZQorICAgIEV4ZWNTdGF0ZSAqc2F2
ZWRTdGF0ZSA9IGN1cnJlbnRFeGVjU3RhdGU7CisgICAgY3VycmVudEV4ZWNTdGF0ZSA9IGV4ZWM7
CiAgICAgW2ludm9jYXRpb24gaW52b2tlXTsKKyAgICBjdXJyZW50RXhlY1N0YXRlID0gc2F2ZWRT
dGF0ZTsKIAogICAgIC8vIEdldCB0aGUgcmV0dXJuIHZhbHVlIHR5cGUuCiAgICAgY29uc3QgY2hh
ciogdHlwZSA9IFtzaWduYXR1cmUgbWV0aG9kUmV0dXJuVHlwZV07CkBAIC0zNjcsMyArMzc0LDkg
QEAgSlNWYWx1ZSogT2JqY0luc3RhbmNlOjp2YWx1ZU9mKCkgY29uc3QgCiB7CiAgICAgcmV0dXJu
IHN0cmluZ1ZhbHVlKCk7CiB9CisKK0V4ZWNTdGF0ZSAqT2JqY0luc3RhbmNlOjpnZXRDdXJyZW50
RXhlY1N0YXRlKCkgCit7CisgICAgcmV0dXJuIGN1cnJlbnRFeGVjU3RhdGU7Cit9CisKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE1NjMzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTAgQEAKKzIwMDYtMDctMjUgIHdheWxvbmlzICA8d2F5bG9uaXNAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsdWdpbnMvYmluZGluZ3MtdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGx1Z2lu
cy9iaW5kaW5ncy10ZXN0Lmh0bWw6IEFkZGVkIGNoZWNrIGZvciBleGNlcHRpb24gaGFuZGxpbmcu
CisKIDIwMDYtMDctMjUgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBhZGVsZQpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9i
aW5kaW5ncy10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVn
aW5zL2JpbmRpbmdzLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTYzMykKKysrIExheW91
dFRlc3RzL3BsdWdpbnMvYmluZGluZ3MtdGVzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDYgKzEwLDggQEAgQUxFUlQ6IG51bGwgPSBudWxsIChzYW1lKQogQUxFUlQ6IG9iamVj
dCA9IG9iamVjdCAoc2FtZSkKIEFMRVJUOiBvbmUsdHdvID0gb25lLHR3byAoc2FtZSkKIEFMRVJU
OiBvYmplY3QgPSBvYmplY3QgKHNhbWUpCitBTEVSVDogU3RyaW5nIEhlbGxvID09IEhlbGxvCitB
TEVSVDogU3RyaW5nIE5vdCBIZWxsbyAhPSBIZWxsbwogQUxFUlQ6IHR5cGVvZihjUGx1Z2luKT1m
dW5jdGlvbgogQUxFUlQ6IGNQbHVnaW4oKT0xCiBBTEVSVDogdHlwZW9mKGNQbHVnaW4pPW9iamVj
dApJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9iaW5kaW5ncy10ZXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9iaW5kaW5ncy10ZXN0Lmh0bWwJKHJldmlzaW9uIDE1
NjMzKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9iaW5kaW5ncy10ZXN0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDIxIEBAIGZ1bmN0aW9uIGRvVGVzdCgpCiAgICAgICAgIGVjaG9U
ZXN0KDQyKTsKICAgICAgICAgZWNob1Rlc3QobnVsbCk7CiAgICAgICAgIGVjaG9UZXN0KG5ldyBB
cnJheSgib25lIiwgInR3byIpKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgZXhjZXB0aW9u
cworICAgICAgICBmdW5jdGlvbiBleGNlcHRpb25UZXN0KGFyZykgeworICAgICAgICAJdHJ5IHsK
KyAgICAgICAgCQlvYmpDUGx1Z2luLnRocm93SWZBcmd1bWVudElzTm90SGVsbG8oYXJnKTsKKyAg
ICAgICAgCX0gY2F0Y2ggKGUpIHsKKyAgICAgICAgCQlhbGVydCgiU3RyaW5nICIgKyBhcmcgKyAi
ICE9IEhlbGxvIik7CisgICAgICAgIAkJcmV0dXJuOworICAgICAgICAJfQorICAgICAgICAJCisg
ICAgICAgIAlhbGVydCgiU3RyaW5nICIgKyBhcmcgKyAiID09IEhlbGxvIik7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGV4Y2VwdGlvblRlc3QoIkhlbGxvIik7CisgICAgICAgIGV4Y2Vw
dGlvblRlc3QoIk5vdCBIZWxsbyIpOwogICAgIH0KICAgICAKICAgICAvLyBUZXN0IHRoZSBDIHBs
dWdpbgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1NjMzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAwNi0wNy0yNSAgd2F5bG9uaXMgIDx3YXlsb25pc0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgrW1dlYlNjcmlwdE9iamVj
dCB0aHJvd0V4Y2VwdGlvbjpdKTogVXNlIE9iakNJbnN0YW5jZTo6Z2V0Q3VycmVudEV4ZWNTdGF0
ZSgpCisgICAgICAgIHRvIGdldCB0aGUgY3VycmVudCBFeGVjU3RhdGUuCisgICAgICAgICgtW1dl
YlNjcmlwdE9iamVjdCBzZXRFeGNlcHRpb246XSk6IFVzZSBPYmpDSW5zdGFuY2U6OmdldEN1cnJl
bnRFeGVjU3RhdGUoKQorICAgICAgICB0byBnZXQgdGhlIGN1cnJlbnQgRXhlY1N0YXRlLgorCiAy
MDA2LTA3LTI1ICBEYXZpZCBIYXJyaXNvbiAgPGhhcnJpc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSB0aW1vIGFuZCBEYXJpbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbQkocmV2aXNpb24gMTU2MzMpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMjIgKzEyOSwx
MyBAQCBzdGF0aWMgdm9pZCBfZGlkRXhlY3V0ZShXZWJTY3JpcHRPYmplY3QgCiAKICsgKEJPT0wp
dGhyb3dFeGNlcHRpb246KE5TU3RyaW5nICopZXhjZXB0aW9uTWVzc2FnZQogewotICAgIEludGVy
cHJldGVyICpmaXJzdCwgKmludGVycCA9IEludGVycHJldGVyOjpmaXJzdEludGVycHJldGVyKCk7
CisgICAgRXhlY1N0YXRlICpleGVjID0gT2JqY0luc3RhbmNlOjpnZXRDdXJyZW50RXhlY1N0YXRl
KCk7CiAKLSAgICAvLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHdlIG9ubHkgZXZlciBoYXZlIG9u
ZSBydW5uaW5nIGludGVycHJldGVyLiAgQQotICAgIC8vIGdvb2QgYXNzdW1wdGlvbiBmb3Igbm93
LCBhcyB3ZSBkZXBlbmQgb24gdGhhdCBlbHNld2hlcmUuICBIb3dldmVyLAotICAgIC8vIGluIHRo
ZSBmdXR1cmUgd2UgbWF5IGhhdmUgdGhlIGFiaWxpdHkgdG8gcnVuIG11bHRpcGxlIGludGVycHJl
dGVycywKLSAgICAvLyBpbiB3aGljaCBjYXNlIHRoaXMgd2lsbCBoYXZlIHRvIGNoYW5nZS4KLSAg
ICBmaXJzdCA9IGludGVycDsKLSAgICBkbyB7Ci0gICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IGlu
dGVycC0+Z2xvYmFsRXhlYygpOwotICAgICAgICAvLyBJZiB0aGUgaW50ZXJwcmV0ZXIgaGFzIGEg
Y29udGV4dCwgd2Ugc2V0IHRoZSBleGNlcHRpb24uCi0gICAgICAgIGlmIChpbnRlcnAtPmNvbnRl
eHQoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsIGV4Y2Vw
dGlvbk1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgfQotICAgICAg
ICBpbnRlcnAgPSBpbnRlcnAtPm5leHRJbnRlcnByZXRlcigpOwotICAgIH0gd2hpbGUgKGludGVy
cCAhPSBmaXJzdCk7CisgICAgaWYgKGV4ZWMpCisgICAgeworICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIEdlbmVyYWxFcnJvciwgZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgICAgIHJldHVybiBZRVM7
CisgICAgfQogICAgIAogICAgIHJldHVybiBOTzsKIH0KQEAgLTM4OCw4ICszNzksMTAgQEAgc3Rh
dGljIExpc3QgbGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZQogCiAtICh2b2lkKXNldEV4Y2Vw
dGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewotICAgIGlmIChjb25zdCBSb290T2JqZWN0
ICpyb290ID0gW3NlbGYgX2V4ZWN1dGlvbkNvbnRleHRdKQotICAgICAgICB0aHJvd0Vycm9yKHJv
b3QtPmludGVycHJldGVyKCktPmdsb2JhbEV4ZWMoKSwgR2VuZXJhbEVycm9yLCBkZXNjcmlwdGlv
bik7CisgICAgRXhlY1N0YXRlICpleGVjID0gT2JqY0luc3RhbmNlOjpnZXRDdXJyZW50RXhlY1N0
YXRlKCk7CisgICAgCisgICAgaWYgKGV4ZWMpCisgICAgICB0aHJvd0Vycm9yKGV4ZWMsIEdlbmVy
YWxFcnJvciwgZGVzY3JpcHRpb24pOwogfQogCiArIChpZClfY29udmVydFZhbHVlVG9PYmpjVmFs
dWU6KEpTVmFsdWUgKil2YWx1ZSBvcmlnaW5FeGVjdXRpb25Db250ZXh0Oihjb25zdCBSb290T2Jq
ZWN0ICopb3JpZ2luRXhlY3V0aW9uQ29udGV4dCBleGVjdXRpb25Db250ZXh0Oihjb25zdCBSb290
T2JqZWN0ICopZXhlY3V0aW9uQ29udGV4dApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2MzMpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAw
Ni0wNy0yNSAgd2F5bG9uaXMgIDx3YXlsb25pc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9PYmpDUGx1Z2luLm06CisgICAgICAgICgrW09iakNQbHVnaW4gaXNTZWxlY3RvckV4Y2x1
ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbT2JqQ1BsdWdpbiB3ZWJTY3JpcHROYW1l
Rm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW09iakNQbHVnaW4gdGhyb3dJZkFyZ3VtZW50SXNO
b3RIZWxsbzpdKTogQWRkIG1ldGhvZCB0byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAgaWYg
dGhlIGFyZ3VlbWVudCBwYXNzZWQgaW4gaXMgbm90IHRoZSBzdHJpbmcgIkhlbGxvIgorCiAyMDA2
LTA3LTI0ICBEYW4gV2F5bG9uaXMgIDx3YXlsb25pc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGFuZCB0d2Vha2VkIGEgYml0IGJ5IERhcmluLgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvT2JqQ1BsdWdpbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL09iakNQbHVnaW4ubQkocmV2aXNpb24gMTU2MzMpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9PYmpDUGx1Z2luLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI2ltcG9ydCAiT2JqQ1BsdWdpbi5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KIAogCiAvLyA9PT0gTlNPYmplY3QgY2F0ZWdv
cnkgdG8gZXhwb3NlIGFsbW9zdCBldmVyeXRoaW5nIHRvIEphdmFTY3JpcHQgPT09CkBAIC0xMzks
NiArMTQwLDkgQEAgc3RhdGljIEJPT0wgX2FsbG93c1NjcmlwdHNGdWxsQWNjZXNzID0gTgogICAg
IGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGVjaG86KSkKICAgICAgICAgcmV0dXJuIE5POwog
CisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodGhyb3dJZkFyZ3VtZW50SXNOb3RIZWxs
bzopKQorICAgICAgcmV0dXJuIE5POworCiAgICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtMTQ2LDcg
KzE1MCwxMCBAQCBzdGF0aWMgQk9PTCBfYWxsb3dzU2NyaXB0c0Z1bGxBY2Nlc3MgPSBOCiB7CiAg
ICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoZWNobzopKQogICAgICAgICByZXR1cm4gQCJl
Y2hvIjsKLSAgCisKKyAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcih0aHJvd0lmQXJndW1l
bnRJc05vdEhlbGxvOikpCisgICAgICByZXR1cm4gQCJ0aHJvd0lmQXJndW1lbnRJc05vdEhlbGxv
IjsKKwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTE2Niw0ICsxNzMsMTAgQEAgc3RhdGljIEJP
T0wgX2FsbG93c1NjcmlwdHNGdWxsQWNjZXNzID0gTgogICAgIHJldHVybiBvYmo7CiB9CiAKKy0g
KHZvaWQpdGhyb3dJZkFyZ3VtZW50SXNOb3RIZWxsbzooTlNTdHJpbmcgKilzdHIgCit7CisgICAg
aWYgKCFbc3RyIGlzRXF1YWxUb1N0cmluZzpAIkhlbGxvIl0pIAorICAgICAgICBbV2ViU2NyaXB0
T2JqZWN0IHRocm93RXhjZXB0aW9uOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgIT0g
SGVsbG8iLCBzdHJdXTsKK30KKwogQGVuZAo=
</data>
<flag name="review"
          id="2958"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9805</attachid>
            <date>2006-08-01 16:01:51 -0700</date>
            <delta_ts>2006-08-03 18:00:25 -0700</delta_ts>
            <desc>Updated patch with ggaren&apos;s suggestions</desc>
            <filename>bug-10114b.diff</filename>
            <type>text/plain</type>
            <size>8988</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQ4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDYtMDgtMDEgIHdheWxvbmlz
ICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIEFkZGVkIHN0b3JhZ2UgYW5kIGFjY2Vzc29yIGZ1bmN0aW9ucyBm
b3IgRXhlY1N0YXRlIGFzIGEgZml4IGZvcgorICAgICAgICAgIGJ1ZyAxMDExNAorICAgICAgICAK
KyAgICAgICAgKiBranMvRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpF
eGVjU3RhdGUpOgorICAgICAgICAqIGtqcy9FeGVjU3RhdGUuaDoKKyAgICAgICAgKiBranMvY29u
dGV4dC5oOgorICAgICAgICAoS0pTOjpDb250ZXh0OjpzZXRFeGVjU3RhdGUpOgorICAgICAgICAo
S0pTOjpDb250ZXh0OjpleGVjU3RhdGUpOgorCiAyMDA2LTA3LTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICAtIFJlbW92ZWQgdGFicyBmcm9tIHRoZXNlIHNvdXJj
ZSBmaWxlcyB0aGF0IHN0aWxsIGhhZCB0aGVtLgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0V4
ZWNTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5j
cHAJKHJldmlzaW9uIDE1NzM3KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDE2IEBACiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIK
IAogbmFtZXNwYWNlIEtKUyB7CisgIAorRXhlY1N0YXRlOjpFeGVjU3RhdGUoSW50ZXJwcmV0ZXIq
IGludGVycCwgQ29udGV4dCogY29uKQorOiBtX2ludGVycHJldGVyKGludGVycCkKKywgbV9jb250
ZXh0KGNvbikKKywgbV9leGNlcHRpb24oMCkKK3sgCisgICAgLy8gU2V0dXAgYmFja3BvaW50ZXIg
dG8gdGhlIGNvbnRleHQgKGlmIHRoZXJlIGlzIG9uZSkKKyAgICBpZiAoY29uKQorICAgICAgY29u
LT5zZXRFeGVjU3RhdGUodGhpcyk7Cit9CiAKIEludGVycHJldGVyKiBFeGVjU3RhdGU6OmxleGlj
YWxJbnRlcnByZXRlcigpIGNvbnN0CiB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5oCShyZXZp
c2lvbiAxNTczNykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNzYsMTIgKzc2LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgYm9vbCBoYWRFeGNl
cHRpb24oKSBjb25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsgfQogCiAgIHByaXZhdGU6Ci0gICAg
RXhlY1N0YXRlKEludGVycHJldGVyKiBpbnRlcnAsIENvbnRleHQqIGNvbikKLSAgICAgICAgOiBt
X2ludGVycHJldGVyKGludGVycCkKLSAgICAgICAgLCBtX2NvbnRleHQoY29uKQotICAgICAgICAs
IG1fZXhjZXB0aW9uKDApCi0gICAgeyAKLSAgICB9CisgICAgRXhlY1N0YXRlKEludGVycHJldGVy
KiBpbnRlcnAsIENvbnRleHQqIGNvbik7CisKICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRl
cjsKICAgICBDb250ZXh0KiBtX2NvbnRleHQ7CiAgICAgSlNWYWx1ZSogbV9leGNlcHRpb247Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9jb250ZXh0LmgJKHJldmlzaW9uIDE1NzM3KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL2NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3Bh
Y2UgS0pTICB7CiAKKyAgY2xhc3MgRXhlY1N0YXRlOworICAKICAgLyoqIAogICAgKiBAc2hvcnQg
RXhlY3V0aW9uIGNvbnRleHQuCiAgICAqCkBAIC0xMTYsNiArMTE4LDkgQEAgbmFtZXNwYWNlIEtK
UyAgewogICAgIGJvb2wgaW5Td2l0Y2goKSBjb25zdCB7IHJldHVybiAobV9zd2l0Y2hEZXB0aCA+
IDApOyB9CiAgICAgICAgIAogICAgIHZvaWQgbWFyaygpOworICAgIAorICAgIHZvaWQgc2V0RXhl
Y1N0YXRlKEV4ZWNTdGF0ZSAqZXMpIHsgbV9leGVjU3RhdGUgPSBlczsgfQorICAgIEV4ZWNTdGF0
ZSogZXhlY1N0YXRlKCkgeyByZXR1cm4gKG1fZXhlY1N0YXRlKTsgfQogCiAgIHByaXZhdGU6CiAg
ICAgLy8gQ29udGV4dHMgYXJlIGFsd2F5cyBzdGFjay1hbGxvY2F0ZWQsIGFuZCB0aGUgZ2FyYmFn
ZSBjb2xsZWN0b3IKQEAgLTEyNCw2ICsxMjksNyBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgSW50
ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAgICAgQ29udGV4dCogbV9jYWxsaW5nQ29udGV4dDsK
ICAgICBGdW5jdGlvbkJvZHlOb2RlKiBtX2N1cnJlbnRCb2R5OworICAgIEV4ZWNTdGF0ZSogbV9l
eGVjU3RhdGU7CiAKICAgICBGdW5jdGlvbkltcCogbV9mdW5jdGlvbjsKICAgICBjb25zdCBMaXN0
KiBtX2FyZ3VtZW50czsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQ4KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDYtMDgtMDEgIHdh
eWxvbmlzICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgLSBVcGRhdGVkIHRlc3QgdG8gY2hlY2sgZm9yIGV4Y2VwdGlv
bnMgdGhyb3duIGluIGEgcGx1Zy1pbi4gIFRoaXMgaXMKKyAgICAgICAgICBhIHRlc3QgZm9yIGJ1
ZyAxMDExNC4KKyAgICAgICAgKiBwbHVnaW5zL2JpbmRpbmdzLXRlc3QtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsdWdpbnMvYmluZGluZ3MtdGVzdC5odG1sOgorCiAyMDA2LTA4LTAxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAtIHVwZGF0ZWQgYSB0ZXN0IGFm
ZmVjdGVkIGJ5IGNoYW5nZXMgdG8gdGhlIER1bXBSZW5kZXJUcmVlIHRvb2wKSW5kZXg6IExheW91
dFRlc3RzL3BsdWdpbnMvYmluZGluZ3MtdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGx1Z2lucy9iaW5kaW5ncy10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU3MzcpCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL2JpbmRpbmdzLXRlc3QtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw4IEBAIEFMRVJUOiBudWxsID0gbnVsbCAoc2Ft
ZSkKIEFMRVJUOiBvYmplY3QgPSBvYmplY3QgKHNhbWUpCiBBTEVSVDogb25lLHR3byA9IG9uZSx0
d28gKHNhbWUpCiBBTEVSVDogb2JqZWN0ID0gb2JqZWN0IChzYW1lKQorQUxFUlQ6IFN0cmluZyBI
ZWxsbyA9PSBIZWxsbworQUxFUlQ6IFN0cmluZyBOb3QgSGVsbG8gIT0gSGVsbG8KIEFMRVJUOiB0
eXBlb2YoY1BsdWdpbik9ZnVuY3Rpb24KIEFMRVJUOiBjUGx1Z2luKCk9MQogQUxFUlQ6IHR5cGVv
ZihjUGx1Z2luKT1vYmplY3QKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvYmluZGluZ3MtdGVz
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvYmluZGluZ3MtdGVzdC5o
dG1sCShyZXZpc2lvbiAxNTczNykKKysrIExheW91dFRlc3RzL3BsdWdpbnMvYmluZGluZ3MtdGVz
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywyMSBAQCBmdW5jdGlvbiBkb1Rlc3Qo
KQogICAgICAgICBlY2hvVGVzdCg0Mik7CiAgICAgICAgIGVjaG9UZXN0KG51bGwpOwogICAgICAg
ICBlY2hvVGVzdChuZXcgQXJyYXkoIm9uZSIsICJ0d28iKSk7CisgICAgICAgIAorICAgICAgICAv
LyBUZXN0IGV4Y2VwdGlvbnMKKyAgICAgICAgZnVuY3Rpb24gZXhjZXB0aW9uVGVzdChhcmcpIHsK
KyAgICAgICAgCXRyeSB7CisgICAgICAgIAkJb2JqQ1BsdWdpbi50aHJvd0lmQXJndW1lbnRJc05v
dEhlbGxvKGFyZyk7CisgICAgICAgIAl9IGNhdGNoIChlKSB7CisgICAgICAgIAkJYWxlcnQoIlN0
cmluZyAiICsgYXJnICsgIiAhPSBIZWxsbyIpOworICAgICAgICAJCXJldHVybjsKKyAgICAgICAg
CX0KKyAgICAgICAgCQorICAgICAgICAJYWxlcnQoIlN0cmluZyAiICsgYXJnICsgIiA9PSBIZWxs
byIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBleGNlcHRpb25UZXN0KCJIZWxsbyIp
OworICAgICAgICBleGNlcHRpb25UZXN0KCJOb3QgSGVsbG8iKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gVGVzdCB0aGUgQyBwbHVnaW4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc0OCkKKysrIFdlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDgtMDEgIHdheWxvbmlz
ICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSBFeGVjU3RhdGUgb24gY3VycmVudCBjb250
ZXh0IHJhdGhlciB0aGFuIGdsb2JhbC4gIEFsc28sCisgICAgICAgICAgY2hhbmdlZCB0aGUgaW5z
dGFuY2Ugc2V0RXhjZXB0aW9uIG1ldGhvZCB0byBjYWxsIHRoZSBjbGFzcyBtZXRob2QuCisgICAg
ICAgICAgUGFydCBvZiB0aGUgZml4IGZvciBidWcgMTAxMTQKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IHRocm93
RXhjZXB0aW9uOl0pOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3Qgc2V0RXhjZXB0aW9uOl0p
OgorCiAyMDA2LTA3LTMxICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDE1NzM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAKKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL2NvbnRleHQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L29iamNfaW5zdGFuY2UuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWVfb2JqZWN0
Lmg+CiAKQEAgLTEzNywxMSArMTM4LDE1IEBAIHN0YXRpYyB2b2lkIF9kaWRFeGVjdXRlKFdlYlNj
cmlwdE9iamVjdCAKICAgICAvLyBpbiB3aGljaCBjYXNlIHRoaXMgd2lsbCBoYXZlIHRvIGNoYW5n
ZS4KICAgICBmaXJzdCA9IGludGVycDsKICAgICBkbyB7Ci0gICAgICAgIEV4ZWNTdGF0ZSAqZXhl
YyA9IGludGVycC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAvLyBJZiB0aGUgaW50ZXJwcmV0ZXIg
aGFzIGEgY29udGV4dCwgd2Ugc2V0IHRoZSBleGNlcHRpb24uCiAgICAgICAgIGlmIChpbnRlcnAt
PmNvbnRleHQoKSkgewotICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3Is
IGV4Y2VwdGlvbk1lc3NhZ2UpOworICAgICAgICAgICAgRXhlY1N0YXRlICpzdGF0ZSA9IGludGVy
cC0+Y29udGV4dCgpLT5leGVjU3RhdGUoKTsKKyAgICAgICAgICAKKyAgICAgICAgICBpZiAoc3Rh
dGUpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsIEdlbmVyYWxFcnJvciwgZXhjZXB0
aW9uTWVzc2FnZSk7CiAgICAgICAgICAgICByZXR1cm4gWUVTOworICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJObyBleGVjIHN0YXRlIGZvciAweCV4XG4iLCAo
dW5zaWduZWQgaW50KWludGVycC0+Y29udGV4dCgpKTsKICAgICAgICAgfQogICAgICAgICBpbnRl
cnAgPSBpbnRlcnAtPm5leHRJbnRlcnByZXRlcigpOwogICAgIH0gd2hpbGUgKGludGVycCAhPSBm
aXJzdCk7CkBAIC0zODgsOCArMzkzLDcgQEAgc3RhdGljIExpc3QgbGlzdEZyb21OU0FycmF5KEV4
ZWNTdGF0ZSAqZQogCiAtICh2b2lkKXNldEV4Y2VwdGlvbjooTlNTdHJpbmcgKilkZXNjcmlwdGlv
bgogewotICAgIGlmIChjb25zdCBSb290T2JqZWN0ICpyb290ID0gW3NlbGYgX2V4ZWN1dGlvbkNv
bnRleHRdKQotICAgICAgICB0aHJvd0Vycm9yKHJvb3QtPmludGVycHJldGVyKCktPmdsb2JhbEV4
ZWMoKSwgR2VuZXJhbEVycm9yLCBkZXNjcmlwdGlvbik7CisgICAgW1tzZWxmIGNsYXNzXSB0aHJv
d0V4Y2VwdGlvbjpkZXNjcmlwdGlvbl07CiB9CiAKICsgKGlkKV9jb252ZXJ0VmFsdWVUb09iamNW
YWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG9yaWdpbkV4ZWN1dGlvbkNvbnRleHQ6KGNvbnN0IFJvb3RP
YmplY3QgKilvcmlnaW5FeGVjdXRpb25Db250ZXh0IGV4ZWN1dGlvbkNvbnRleHQ6KGNvbnN0IFJv
b3RPYmplY3QgKilleGVjdXRpb25Db250ZXh0CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc0OCkKKysr
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDA2LTA4LTAxICB3YXlsb25pcyAgPHdheWxvbmlzQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIC0gVmVyaWZpY2F0aW9uIG9mIGV4Y2Vw
dGlvbnMgdGhyb3duIGluIGEgcGx1Z2luLiAgVGVzdCBmb3IgYnVnIDEwMTE0LgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvT2JqQ1BsdWdpbi5tOgorICAgICAgICAoK1tPYmpD
UGx1Z2luIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW09i
akNQbHVnaW4gd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtPYmpDUGx1
Z2luIHRocm93SWZBcmd1bWVudElzTm90SGVsbG86XSk6CisKIDIwMDYtMDgtMDEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIC0gZml4IGEgYnVnIGluIG15IHJlY2Vu
dCBjaGFuZ2Ugd2hlcmUgdGhlIG1vdXNlIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YKSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL09iakNQbHVnaW4ubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9PYmpDUGx1Z2luLm0JKHJldmlzaW9uIDE1NzM3KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvT2JqQ1BsdWdpbi5tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNpbXBvcnQgIk9iakNQbHVnaW4uaCIKICNpbXBvcnQgPG9iamMv
b2JqYy1ydW50aW1lLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAKIAogLy8gPT09IE5T
T2JqZWN0IGNhdGVnb3J5IHRvIGV4cG9zZSBhbG1vc3QgZXZlcnl0aGluZyB0byBKYXZhU2NyaXB0
ID09PQpAQCAtMTM5LDYgKzE0MCw5IEBAIHN0YXRpYyBCT09MIF9hbGxvd3NTY3JpcHRzRnVsbEFj
Y2VzcyA9IE4KICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3RvcihlY2hvOikpCiAgICAgICAg
IHJldHVybiBOTzsKIAorICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHRocm93SWZBcmd1
bWVudElzTm90SGVsbG86KSkKKyAgICAgIHJldHVybiBOTzsKKwogICAgIHJldHVybiBZRVM7CiB9
CiAKQEAgLTE0Niw3ICsxNTAsMTAgQEAgc3RhdGljIEJPT0wgX2FsbG93c1NjcmlwdHNGdWxsQWNj
ZXNzID0gTgogewogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGVjaG86KSkKICAgICAg
ICAgcmV0dXJuIEAiZWNobyI7Ci0gIAorCisgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
dGhyb3dJZkFyZ3VtZW50SXNOb3RIZWxsbzopKQorICAgICAgcmV0dXJuIEAidGhyb3dJZkFyZ3Vt
ZW50SXNOb3RIZWxsbyI7CisKICAgICByZXR1cm4gbmlsOwogfQogCkBAIC0xNjYsNCArMTczLDEw
IEBAIHN0YXRpYyBCT09MIF9hbGxvd3NTY3JpcHRzRnVsbEFjY2VzcyA9IE4KICAgICByZXR1cm4g
b2JqOwogfQogCistICh2b2lkKXRocm93SWZBcmd1bWVudElzTm90SGVsbG86KE5TU3RyaW5nICop
c3RyIAoreworICAgIGlmICghW3N0ciBpc0VxdWFsVG9TdHJpbmc6QCJIZWxsbyJdKSAKKyAgICAg
ICAgW1dlYlNjcmlwdE9iamVjdCB0aHJvd0V4Y2VwdGlvbjpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVAICE9IEhlbGxvIiwgc3RyXV07Cit9CisKIEBlbmQK
</data>
<flag name="review"
          id="3019"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9864</attachid>
            <date>2006-08-03 18:00:08 -0700</date>
            <delta_ts>2006-08-29 15:38:40 -0700</delta_ts>
            <desc>Patch to fix WebKitPlugin exceptions</desc>
            <filename>bug-10114c.diff</filename>
            <type>text/plain</type>
            <size>11098</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQ4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDYtMDgtMDEgIHdheWxvbmlz
ICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIEFkZGVkIHN0b3JhZ2UgYW5kIGFjY2Vzc29yIGZ1bmN0aW9ucyBm
b3IgRXhlY1N0YXRlIGFzIGEgZml4IGZvcgorICAgICAgICAgIGJ1ZyAxMDExNAorICAgICAgICAK
KyAgICAgICAgKiBranMvRXhlY1N0YXRlLmNwcDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpF
eGVjU3RhdGUpOgorICAgICAgICAqIGtqcy9FeGVjU3RhdGUuaDoKKyAgICAgICAgKiBranMvY29u
dGV4dC5oOgorICAgICAgICAoS0pTOjpDb250ZXh0OjpzZXRFeGVjU3RhdGUpOgorICAgICAgICAo
S0pTOjpDb250ZXh0OjpleGVjU3RhdGUpOgorCiAyMDA2LTA3LTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICAtIFJlbW92ZWQgdGFicyBmcm9tIHRoZXNlIHNvdXJj
ZSBmaWxlcyB0aGF0IHN0aWxsIGhhZCB0aGVtLgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0V4
ZWNTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5j
cHAJKHJldmlzaW9uIDE1NzM3KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDE2IEBACiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIK
IAogbmFtZXNwYWNlIEtKUyB7CisgIAorRXhlY1N0YXRlOjpFeGVjU3RhdGUoSW50ZXJwcmV0ZXIq
IGludGVycCwgQ29udGV4dCogY29uKQorOiBtX2ludGVycHJldGVyKGludGVycCkKKywgbV9jb250
ZXh0KGNvbikKKywgbV9leGNlcHRpb24oMCkKK3sgCisgICAgLy8gU2V0dXAgYmFja3BvaW50ZXIg
dG8gdGhlIGNvbnRleHQgKGlmIHRoZXJlIGlzIG9uZSkKKyAgICBpZiAoY29uKQorICAgICAgY29u
LT5zZXRFeGVjU3RhdGUodGhpcyk7Cit9CiAKIEludGVycHJldGVyKiBFeGVjU3RhdGU6OmxleGlj
YWxJbnRlcnByZXRlcigpIGNvbnN0CiB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5oCShyZXZp
c2lvbiAxNTczNykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNzYsMTIgKzc2LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgYm9vbCBoYWRFeGNl
cHRpb24oKSBjb25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsgfQogCiAgIHByaXZhdGU6Ci0gICAg
RXhlY1N0YXRlKEludGVycHJldGVyKiBpbnRlcnAsIENvbnRleHQqIGNvbikKLSAgICAgICAgOiBt
X2ludGVycHJldGVyKGludGVycCkKLSAgICAgICAgLCBtX2NvbnRleHQoY29uKQotICAgICAgICAs
IG1fZXhjZXB0aW9uKDApCi0gICAgeyAKLSAgICB9CisgICAgRXhlY1N0YXRlKEludGVycHJldGVy
KiwgQ29udGV4dCopOworCiAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAgICAgQ29u
dGV4dCogbV9jb250ZXh0OwogICAgIEpTVmFsdWUqIG1fZXhjZXB0aW9uOwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL2NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
Y29udGV4dC5oCShyZXZpc2lvbiAxNTczNykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIEtKUyAgewog
CisgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgCiAgIC8qKiAKICAgICogQHNob3J0IEV4ZWN1dGlvbiBj
b250ZXh0LgogICAgKgpAQCAtMTE3LDYgKzExOSw5IEBAIG5hbWVzcGFjZSBLSlMgIHsKICAgICAg
ICAgCiAgICAgdm9pZCBtYXJrKCk7CiAKKyAgICB2b2lkIHNldEV4ZWNTdGF0ZShFeGVjU3RhdGUq
IGV4ZWMpIHsgbV9leGVjU3RhdGUgPSBleGVjOyB9CisgICAgRXhlY1N0YXRlKiBleGVjU3RhdGUo
KSB7IHJldHVybiAobV9leGVjU3RhdGUpOyB9CisKICAgcHJpdmF0ZToKICAgICAvLyBDb250ZXh0
cyBhcmUgYWx3YXlzIHN0YWNrLWFsbG9jYXRlZCwgYW5kIHRoZSBnYXJiYWdlIGNvbGxlY3Rvcgog
ICAgIC8vIG1hcmtzIHRoZSBzdGFjaywgc28gd2UgZG9uJ3QgbmVlZCB0byBwcm90ZWN0IHRoZSBv
YmplY3RzIGJlbG93IGZyb20gR0MuCkBAIC0xMjQsNiArMTI5LDcgQEAgbmFtZXNwYWNlIEtKUyAg
ewogICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogICAgIENvbnRleHQqIG1fY2FsbGlu
Z0NvbnRleHQ7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbV9jdXJyZW50Qm9keTsKKyAgICBFeGVj
U3RhdGUqIG1fZXhlY1N0YXRlOwogCiAgICAgRnVuY3Rpb25JbXAqIG1fZnVuY3Rpb247CiAgICAg
Y29uc3QgTGlzdCogbV9hcmd1bWVudHM7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc0OCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA2
LTA4LTAxICB3YXlsb25pcyAgPHdheWxvbmlzQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIC0gVXBkYXRlZCB0ZXN0IHRvIGNoZWNrIGZv
ciBleGNlcHRpb25zIHRocm93biBpbiBhIHBsdWctaW4uICBUaGlzIGlzCisgICAgICAgICAgYSB0
ZXN0IGZvciBidWcgMTAxMTQuCisgICAgICAgICogcGx1Z2lucy9iaW5kaW5ncy10ZXN0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbHVnaW5zL2JpbmRpbmdzLXRlc3QuaHRtbDoKKwogMjAwNi0w
OC0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgLSB1cGRhdGVk
IGEgdGVzdCBhZmZlY3RlZCBieSBjaGFuZ2VzIHRvIHRoZSBEdW1wUmVuZGVyVHJlZSB0b29sCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL2JpbmRpbmdzLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvYmluZGluZ3MtdGVzdC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NzM3KQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9iaW5kaW5ncy10ZXN0LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsOCBAQCBBTEVSVDogbnVsbCA9
IG51bGwgKHNhbWUpCiBBTEVSVDogb2JqZWN0ID0gb2JqZWN0IChzYW1lKQogQUxFUlQ6IG9uZSx0
d28gPSBvbmUsdHdvIChzYW1lKQogQUxFUlQ6IG9iamVjdCA9IG9iamVjdCAoc2FtZSkKK0FMRVJU
OiBTdHJpbmcgSGVsbG8gPT0gSGVsbG8KK0FMRVJUOiBTdHJpbmcgTm90IEhlbGxvICE9IEhlbGxv
CiBBTEVSVDogdHlwZW9mKGNQbHVnaW4pPWZ1bmN0aW9uCiBBTEVSVDogY1BsdWdpbigpPTEKIEFM
RVJUOiB0eXBlb2YoY1BsdWdpbik9b2JqZWN0CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL2Jp
bmRpbmdzLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL2JpbmRp
bmdzLXRlc3QuaHRtbAkocmV2aXNpb24gMTU3MzcpCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL2Jp
bmRpbmdzLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMjEgQEAgZnVuY3Rp
b24gZG9UZXN0KCkKICAgICAgICAgZWNob1Rlc3QoNDIpOwogICAgICAgICBlY2hvVGVzdChudWxs
KTsKICAgICAgICAgZWNob1Rlc3QobmV3IEFycmF5KCJvbmUiLCAidHdvIikpOworICAgICAgICAK
KyAgICAgICAgLy8gVGVzdCBleGNlcHRpb25zCisgICAgICAgIGZ1bmN0aW9uIGV4Y2VwdGlvblRl
c3QoYXJnKSB7CisgICAgICAgIAl0cnkgeworICAgICAgICAJCW9iakNQbHVnaW4udGhyb3dJZkFy
Z3VtZW50SXNOb3RIZWxsbyhhcmcpOworICAgICAgICAJfSBjYXRjaCAoZSkgeworICAgICAgICAJ
CWFsZXJ0KCJTdHJpbmcgIiArIGFyZyArICIgIT0gSGVsbG8iKTsKKyAgICAgICAgCQlyZXR1cm47
CisgICAgICAgIAl9CisgICAgICAgIAkKKyAgICAgICAgCWFsZXJ0KCJTdHJpbmcgIiArIGFyZyAr
ICIgPT0gSGVsbG8iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZXhjZXB0aW9uVGVz
dCgiSGVsbG8iKTsKKyAgICAgICAgZXhjZXB0aW9uVGVzdCgiTm90IEhlbGxvIik7CiAgICAgfQog
ICAgIAogICAgIC8vIFRlc3QgdGhlIEMgcGx1Z2luCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDgpCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA2LTA4LTAx
ICB3YXlsb25pcyAgPHdheWxvbmlzQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgRXhlY1N0YXRlIG9uIGN1
cnJlbnQgY29udGV4dCByYXRoZXIgdGhhbiBnbG9iYWwuCisgICAgICAgICAgUGFydCBvZiB0aGUg
Zml4IGZvciBidWcgMTAxMTQKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IHRocm93RXhjZXB0aW9uOl0pOgorICAg
ICAgICAoLVtXZWJTY3JpcHRPYmplY3Qgc2V0RXhjZXB0aW9uOl0pOgorCiAyMDA2LTA3LTMxICBT
YW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHJl
dmlzaW9uIDE1NzM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL2NvbnRleHQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL29iamNfaW5zdGFuY2UuaD4K
ICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWVfb2JqZWN0Lmg+CiAKQEAgLTEzNywxMSAr
MTM4LDE0IEBAIHN0YXRpYyB2b2lkIF9kaWRFeGVjdXRlKFdlYlNjcmlwdE9iamVjdCAKICAgICAv
LyBpbiB3aGljaCBjYXNlIHRoaXMgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICBmaXJzdCA9IGlu
dGVycDsKICAgICBkbyB7Ci0gICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IGludGVycC0+Z2xvYmFs
RXhlYygpOwogICAgICAgICAvLyBJZiB0aGUgaW50ZXJwcmV0ZXIgaGFzIGEgY29udGV4dCwgd2Ug
c2V0IHRoZSBleGNlcHRpb24uCiAgICAgICAgIGlmIChpbnRlcnAtPmNvbnRleHQoKSkgewotICAg
ICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsIGV4Y2VwdGlvbk1lc3NhZ2Up
OwotICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAgICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9
IGludGVycC0+Y29udGV4dCgpLT5leGVjU3RhdGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKGV4ZWMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIEdlbmVyYWxF
cnJvciwgZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpbnRlcnAgPSBpbnRlcnAtPm5leHRJbnRl
cnByZXRlcigpOwogICAgIH0gd2hpbGUgKGludGVycCAhPSBmaXJzdCk7CkBAIC0zODgsOCArMzky
LDE1IEBAIHN0YXRpYyBMaXN0IGxpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmUKIAogLSAodm9p
ZClzZXRFeGNlcHRpb246KE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKLSAgICBpZiAoY29uc3Qg
Um9vdE9iamVjdCAqcm9vdCA9IFtzZWxmIF9leGVjdXRpb25Db250ZXh0XSkKLSAgICAgICAgdGhy
b3dFcnJvcihyb290LT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCksIEdlbmVyYWxFcnJvciwg
ZGVzY3JpcHRpb24pOworICAgIGlmIChjb25zdCBSb290T2JqZWN0ICpyb290ID0gW3NlbGYgX2V4
ZWN1dGlvbkNvbnRleHRdKSB7CisgICAgICAgIGlmIChyb290LT5pbnRlcnByZXRlcigpLT5jb250
ZXh0KCkpIHsKKyAgICAgICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IHJvb3QtPmludGVycHJldGVy
KCktPmNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CisKKyAgICAgICAgICAgIEFTU0VSVChleGVjKTsK
KyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgR2VuZXJhbEVycm9yLCBkZXNjcmlwdGlvbik7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhyb3dFcnJvcihyb290LT5pbnRlcnByZXRl
cigpLT5nbG9iYWxFeGVjKCksIEdlbmVyYWxFcnJvciwgZGVzY3JpcHRpb24pOworICAgIH0KIH0K
IAogKyAoaWQpX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3JpZ2lu
RXhlY3V0aW9uQ29udGV4dDooY29uc3QgUm9vdE9iamVjdCAqKW9yaWdpbkV4ZWN1dGlvbkNvbnRl
eHQgZXhlY3V0aW9uQ29udGV4dDooY29uc3QgUm9vdE9iamVjdCAqKWV4ZWN1dGlvbkNvbnRleHQK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQ4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDgtMDEgIHdheWxvbmlzICA8d2F5bG9u
aXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgLSBWZXJpZmljYXRpb24gb2YgZXhjZXB0aW9ucyB0aHJvd24gaW4gYSBwbHVnaW4uICBU
ZXN0IGZvciBidWcgMTAxMTQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9P
YmpDUGx1Z2luLm06CisgICAgICAgICgrW09iakNQbHVnaW4gaXNTZWxlY3RvckV4Y2x1ZGVkRnJv
bVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbT2JqQ1BsdWdpbiB3ZWJTY3JpcHROYW1lRm9yU2Vs
ZWN0b3I6XSk6CisgICAgICAgICgtW09iakNQbHVnaW4gdGhyb3dJZkFyZ3VtZW50SXNOb3RIZWxs
bzpdKToKKwogMjAwNi0wOC0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgLSBmaXggYSBidWcgaW4gbXkgcmVjZW50IGNoYW5nZSB3aGVyZSB0aGUgbW91c2UgcG9z
aXRpb24gYXQgdGhlIGVuZCBvZgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvT2Jq
Q1BsdWdpbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL09iakNQ
bHVnaW4ubQkocmV2aXNpb24gMTU3MzcpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9P
YmpDUGx1Z2luLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2ltcG9ydCAi
T2JqQ1BsdWdpbi5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KIAogCiAvLyA9PT0gTlNPYmplY3QgY2F0ZWdvcnkgdG8gZXhwb3NlIGFs
bW9zdCBldmVyeXRoaW5nIHRvIEphdmFTY3JpcHQgPT09CkBAIC0xMzksNiArMTQwLDkgQEAgc3Rh
dGljIEJPT0wgX2FsbG93c1NjcmlwdHNGdWxsQWNjZXNzID0gTgogICAgIGlmIChhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKGVjaG86KSkKICAgICAgICAgcmV0dXJuIE5POwogCisgICAgaWYgKGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3IodGhyb3dJZkFyZ3VtZW50SXNOb3RIZWxsbzopKQorICAgICAgcmV0
dXJuIE5POworCiAgICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtMTQ2LDcgKzE1MCwxMCBAQCBzdGF0
aWMgQk9PTCBfYWxsb3dzU2NyaXB0c0Z1bGxBY2Nlc3MgPSBOCiB7CiAgICAgaWYgKGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3IoZWNobzopKQogICAgICAgICByZXR1cm4gQCJlY2hvIjsKLSAgCisKKyAg
ICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcih0aHJvd0lmQXJndW1lbnRJc05vdEhlbGxvOikp
CisgICAgICByZXR1cm4gQCJ0aHJvd0lmQXJndW1lbnRJc05vdEhlbGxvIjsKKwogICAgIHJldHVy
biBuaWw7CiB9CiAKQEAgLTE2Niw0ICsxNzMsMTAgQEAgc3RhdGljIEJPT0wgX2FsbG93c1Njcmlw
dHNGdWxsQWNjZXNzID0gTgogICAgIHJldHVybiBvYmo7CiB9CiAKKy0gKHZvaWQpdGhyb3dJZkFy
Z3VtZW50SXNOb3RIZWxsbzooTlNTdHJpbmcgKilzdHIgCit7CisgICAgaWYgKCFbc3RyIGlzRXF1
YWxUb1N0cmluZzpAIkhlbGxvIl0pIAorICAgICAgICBbV2ViU2NyaXB0T2JqZWN0IHRocm93RXhj
ZXB0aW9uOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgIT0gSGVsbG8iLCBzdHJdXTsK
K30KKwogQGVuZApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNTczNykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsNyBAQAogCQkyMjE4MUJEMDA5REM4QzRCMDA4MzQyRTggLyogT2JqQ1BsdWdpbkZ1bmN0aW9u
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBPYmpDUGx1Z2luRnVuY3Rp
b24ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzJBNzBBQUIwMzcwNUUxRjAwQzkx
NzgzIC8qIER1bXBSZW5kZXJUcmVlUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IER1bXBSZW5kZXJUcmVlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMzU0MzVGMDNENzU1MDIwMDg2MzVDRSAvKiBXZWJLaXQuZnJhbWV3b3JrICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IHBhdGggPSBXZWJLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwotCQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IER1bXBSZW5kZXJU
cmVlOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5MzQwOTk1NDA4NTQw
Q0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgaW5jbHVkZUluSW5kZXggPSAwOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZXhlY3V0YWJsZSI7IHBhdGggPSBEdW1wUmVuZGVyVHJlZTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM0NDJDRjQwOEY4QkE0OTAwQkZFOENBIC8qIFRleHRJbnB1
dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dElucHV0
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQ0MkNGNTA4RjhC
QTQ5MDBCRkU4Q0EgLyogVGV4dElucHV0Q29udHJvbGxlci5tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLm9iamM7IHBhdGggPSBUZXh0SW5wdXRDb250cm9sbGVyLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4MDNGQ0I3MDlDQUFBQjAwMDlCMkEzNyAvKiBFdmVudFNlbmRpbmdDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRpbmdD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Cg==
</data>
<flag name="review"
          id="3183"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10307</attachid>
            <date>2006-08-29 15:30:11 -0700</date>
            <delta_ts>2006-09-03 12:19:07 -0700</delta_ts>
            <desc>Patch to fix WebKitPlugin exceptions</desc>
            <filename>bug-10114d.diff</filename>
            <type>text/plain</type>
            <size>11248</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTAxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDYtMDgtMjkgIHdheWxvbmlz
ICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBzdG9yYWdlIGFuZCBhY2Nlc3NvciBmdW5jdGlvbnMgZm9y
IEV4ZWNTdGF0ZSBhcyBhIGZpeCBmb3IgYnVnIDEwMTE0CisKKyAgICAgICAgKiBranMvRXhlY1N0
YXRlLmNwcDoKKyAgICAgICAgKEtKUzo6RXhlY1N0YXRlOjpFeGVjU3RhdGUpOgorICAgICAgICAq
IGtqcy9FeGVjU3RhdGUuaDoKKyAgICAgICAgKiBranMvY29udGV4dC5oOgorICAgICAgICAoS0pT
OjpDb250ZXh0OjpzZXRFeGVjU3RhdGUpOgorICAgICAgICAoS0pTOjpDb250ZXh0OjpleGVjU3Rh
dGUpOgorCiAyMDA2LTA4LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3Rh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuY3BwCShy
ZXZpc2lvbiAxNjEwMSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxNiBAQAogI2luY2x1ZGUgImludGVybmFsLmgiCiAKIG5h
bWVzcGFjZSBLSlMgeworICAKK0V4ZWNTdGF0ZTo6RXhlY1N0YXRlKEludGVycHJldGVyKiBpbnRl
cnAsIENvbnRleHQqIGNvbikKKyAgOiBtX2ludGVycHJldGVyKGludGVycCkKKyAgLCBtX2NvbnRl
eHQoY29uKQorICAsIG1fZXhjZXB0aW9uKDApCit7IAorICAgIC8vIFNldHVwIGJhY2twb2ludGVy
IHRvIHRoZSBjb250ZXh0IChpZiB0aGVyZSBpcyBvbmUpCisgICAgaWYgKGNvbikKKyAgICAgIGNv
bi0+c2V0RXhlY1N0YXRlKHRoaXMpOworfQogCiBJbnRlcnByZXRlciogRXhlY1N0YXRlOjpsZXhp
Y2FsSW50ZXJwcmV0ZXIoKSBjb25zdAogewpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0V4ZWNT
dGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAkocmV2
aXNpb24gMTYxMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDEyICs3Niw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGJvb2wgaGFkRXhj
ZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9leGNlcHRpb247IH0KIAogICBwcml2YXRlOgotICAg
IEV4ZWNTdGF0ZShJbnRlcnByZXRlciogaW50ZXJwLCBDb250ZXh0KiBjb24pCi0gICAgICAgIDog
bV9pbnRlcnByZXRlcihpbnRlcnApCi0gICAgICAgICwgbV9jb250ZXh0KGNvbikKLSAgICAgICAg
LCBtX2V4Y2VwdGlvbigwKQotICAgIHsgCi0gICAgfQorICAgIEV4ZWNTdGF0ZShJbnRlcnByZXRl
ciosIENvbnRleHQqKTsKKwogICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogICAgIENv
bnRleHQqIG1fY29udGV4dDsKICAgICBKU1ZhbHVlKiBtX2V4Y2VwdGlvbjsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9jb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2NvbnRleHQuaAkocmV2aXNpb24gMTYxMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBLSlMgIHsK
IAorICBjbGFzcyBFeGVjU3RhdGU7CisgIAogICAvKiogCiAgICAqIEBzaG9ydCBFeGVjdXRpb24g
Y29udGV4dC4KICAgICoKQEAgLTExNyw2ICsxMTksOSBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAg
ICAgIAogICAgIHZvaWQgbWFyaygpOwogCisgICAgdm9pZCBzZXRFeGVjU3RhdGUoRXhlY1N0YXRl
KiBleGVjKSB7IG1fZXhlY1N0YXRlID0gZXhlYzsgfQorICAgIEV4ZWNTdGF0ZSogZXhlY1N0YXRl
KCkgeyByZXR1cm4gbV9leGVjU3RhdGU7IH0KKwogICBwcml2YXRlOgogICAgIC8vIENvbnRleHRz
IGFyZSBhbHdheXMgc3RhY2stYWxsb2NhdGVkLCBhbmQgdGhlIGdhcmJhZ2UgY29sbGVjdG9yCiAg
ICAgLy8gbWFya3MgdGhlIHN0YWNrLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHByb3RlY3QgdGhlIG9i
amVjdHMgYmVsb3cgZnJvbSBHQy4KQEAgLTEyNCw2ICsxMjksNyBAQCBuYW1lc3BhY2UgS0pTICB7
CiAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAgICAgQ29udGV4dCogbV9jYWxsaW5n
Q29udGV4dDsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBtX2N1cnJlbnRCb2R5OworICAgIEV4ZWNT
dGF0ZSogbV9leGVjU3RhdGU7CiAKICAgICBGdW5jdGlvbkltcCogbV9mdW5jdGlvbjsKICAgICBj
b25zdCBMaXN0KiBtX2FyZ3VtZW50czsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTAxKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYt
MDgtMjkgIHdheWxvbmlzICA8d2F5bG9uaXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRlc3QgdG8gY2hlY2sgZm9y
IGV4Y2VwdGlvbnMgdGhyb3duIGluIGEgcGx1Zy1pbi4gIFRoaXMgaXMKKyAgICAgICAgYSB0ZXN0
IGZvciBidWcgMTAxMTQuCisgICAgICAgICogcGx1Z2lucy9iaW5kaW5ncy10ZXN0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbHVnaW5zL2JpbmRpbmdzLXRlc3QuaHRtbDoKKwogMjAwNi0wOC0y
OCAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IGhhcnJpc29uCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL2JpbmRpbmdzLXRl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvYmluZGlu
Z3MtdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2MTAxKQorKysgTGF5b3V0VGVzdHMvcGx1
Z2lucy9iaW5kaW5ncy10ZXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiAr
MTAsOCBAQCBBTEVSVDogbnVsbCA9IG51bGwgKHNhbWUpCiBBTEVSVDogb2JqZWN0ID0gb2JqZWN0
IChzYW1lKQogQUxFUlQ6IG9uZSx0d28gPSBvbmUsdHdvIChzYW1lKQogQUxFUlQ6IG9iamVjdCA9
IG9iamVjdCAoc2FtZSkKK0FMRVJUOiBTdHJpbmcgSGVsbG8gPT0gSGVsbG8KK0FMRVJUOiBTdHJp
bmcgTm90IEhlbGxvICE9IEhlbGxvCiBBTEVSVDogdHlwZW9mKGNQbHVnaW4pPWZ1bmN0aW9uCiBB
TEVSVDogY1BsdWdpbigpPTEKIEFMRVJUOiB0eXBlb2YoY1BsdWdpbik9b2JqZWN0CkluZGV4OiBM
YXlvdXRUZXN0cy9wbHVnaW5zL2JpbmRpbmdzLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbHVnaW5zL2JpbmRpbmdzLXRlc3QuaHRtbAkocmV2aXNpb24gMTYxMDEpCisrKyBM
YXlvdXRUZXN0cy9wbHVnaW5zL2JpbmRpbmdzLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsMjEgQEAgZnVuY3Rpb24gZG9UZXN0KCkKICAgICAgICAgZWNob1Rlc3QoNDIpOwog
ICAgICAgICBlY2hvVGVzdChudWxsKTsKICAgICAgICAgZWNob1Rlc3QobmV3IEFycmF5KCJvbmUi
LCAidHdvIikpOworICAgICAgICAKKyAgICAgICAgLy8gVGVzdCBleGNlcHRpb25zCisgICAgICAg
IGZ1bmN0aW9uIGV4Y2VwdGlvblRlc3QoYXJnKSB7CisgICAgICAgIAl0cnkgeworICAgICAgICAJ
CW9iakNQbHVnaW4udGhyb3dJZkFyZ3VtZW50SXNOb3RIZWxsbyhhcmcpOworICAgICAgICAJfSBj
YXRjaCAoZSkgeworICAgICAgICAJCWFsZXJ0KCJTdHJpbmcgIiArIGFyZyArICIgIT0gSGVsbG8i
KTsKKyAgICAgICAgCQlyZXR1cm47CisgICAgICAgIAl9CisgICAgICAgIAkKKyAgICAgICAgCWFs
ZXJ0KCJTdHJpbmcgIiArIGFyZyArICIgPT0gSGVsbG8iKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgZXhjZXB0aW9uVGVzdCgiSGVsbG8iKTsKKyAgICAgICAgZXhjZXB0aW9uVGVzdCgi
Tm90IEhlbGxvIik7CiAgICAgfQogICAgIAogICAgIC8vIFRlc3QgdGhlIEMgcGx1Z2luCkluZGV4
OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTYxMDEpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDA2LTA4LTI5ICB3YXlsb25pcyAgPHdheWxvbmlzQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCB0
byB1c2UgRXhlY1N0YXRlIG9uIGN1cnJlbnQgY29udGV4dCByYXRoZXIgdGhhbiBnbG9iYWwuCisg
ICAgICAgIFBhcnQgb2YgdGhlIGZpeCBmb3IgYnVnIDEwMTE0CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgrW1dlYlNjcmlwdE9iamVjdCB0aHJv
d0V4Y2VwdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHNldEV4Y2VwdGlvbjpd
KToKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvbGluay10ZXN0Lm06IEFkZGVkLgorICAgICAgICAo
LVtDb250cm9sbGVyIHRlc3RdKToKKyAgICAgICAgKC1bQ29udHJvbGxlciB3ZWJWaWV3OmRpZEZp
bmlzaExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKG1haW4pOgorCiAyMDA2LTA4LTI5ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZp
c2lvbiAxNjEwMSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9jb250ZXh0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9vYmpjX2luc3RhbmNlLmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lX29iamVjdC5oPgogCkBAIC0xMzcsMTEgKzEz
OCwxNCBAQCBzdGF0aWMgdm9pZCBfZGlkRXhlY3V0ZShXZWJTY3JpcHRPYmplY3QgCiAgICAgLy8g
aW4gd2hpY2ggY2FzZSB0aGlzIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCiAgICAgZmlyc3QgPSBpbnRl
cnA7CiAgICAgZG8gewotICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBpbnRlcnAtPmdsb2JhbEV4
ZWMoKTsKICAgICAgICAgLy8gSWYgdGhlIGludGVycHJldGVyIGhhcyBhIGNvbnRleHQsIHdlIHNl
dCB0aGUgZXhjZXB0aW9uLgogICAgICAgICBpZiAoaW50ZXJwLT5jb250ZXh0KCkpIHsKLSAgICAg
ICAgICAgIHRocm93RXJyb3IoZXhlYywgR2VuZXJhbEVycm9yLCBleGNlcHRpb25NZXNzYWdlKTsK
LSAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAgICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSBp
bnRlcnAtPmNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChleGVjKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJy
b3IsIGV4Y2VwdGlvbk1lc3NhZ2UpOworICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaW50ZXJwID0gaW50ZXJwLT5uZXh0SW50ZXJw
cmV0ZXIoKTsKICAgICB9IHdoaWxlIChpbnRlcnAgIT0gZmlyc3QpOwpAQCAtMzg4LDggKzM5Miwx
NSBAQCBzdGF0aWMgTGlzdCBsaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICplCiAKIC0gKHZvaWQp
c2V0RXhjZXB0aW9uOihOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7Ci0gICAgaWYgKGNvbnN0IFJv
b3RPYmplY3QgKnJvb3QgPSBbc2VsZiBfZXhlY3V0aW9uQ29udGV4dF0pCi0gICAgICAgIHRocm93
RXJyb3Iocm9vdC0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFsRXhlYygpLCBHZW5lcmFsRXJyb3IsIGRl
c2NyaXB0aW9uKTsKKyAgICBpZiAoY29uc3QgUm9vdE9iamVjdCAqcm9vdCA9IFtzZWxmIF9leGVj
dXRpb25Db250ZXh0XSkgeworICAgICAgICBpZiAocm9vdC0+aW50ZXJwcmV0ZXIoKS0+Y29udGV4
dCgpKSB7CisgICAgICAgICAgICBFeGVjU3RhdGUgKmV4ZWMgPSByb290LT5pbnRlcnByZXRlcigp
LT5jb250ZXh0KCktPmV4ZWNTdGF0ZSgpOworCisgICAgICAgICAgICBBU1NFUlQoZXhlYyk7Cisg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIEdlbmVyYWxFcnJvciwgZGVzY3JpcHRpb24pOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRocm93RXJyb3Iocm9vdC0+aW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsRXhlYygpLCBHZW5lcmFsRXJyb3IsIGRlc2NyaXB0aW9uKTsKKyAgICB9CiB9CiAK
ICsgKGlkKV9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG9yaWdpbkV4
ZWN1dGlvbkNvbnRleHQ6KGNvbnN0IFJvb3RPYmplY3QgKilvcmlnaW5FeGVjdXRpb25Db250ZXh0
IGV4ZWN1dGlvbkNvbnRleHQ6KGNvbnN0IFJvb3RPYmplY3QgKilleGVjdXRpb25Db250ZXh0Cklu
ZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9saW5rLXRlc3QubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL21hbnVhbC10ZXN0cy9saW5rLXRlc3QubQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL2xpbmstdGVzdC5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
Ky8qCisgZ2NjIGxpbmstdGVzdC5tIC1vIGx0IC1mcmFtZXdvcmsgV2ViS2l0IC1mcmFtZXdvcmsg
QXBwS2l0CisqLworCitzdGF0aWMgQk9PTCBnSXNGaW5pc2hlZCA9IE5POworCitAaW50ZXJmYWNl
IENvbnRyb2xsZXIgOiBOU09iamVjdAorLSAodm9pZCl0ZXN0OworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gQ29udHJvbGxlcgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSAodm9pZCl0ZXN0IHsK
KwlXZWJWaWV3ICp2aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3QgZnJhbWVOYW1lOkAiZnJhbWUiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3JvdXBOYW1lOm5pbF07CisJV2ViRnJhbWUgKmZyYW1lID0gW3ZpZXcgbWFpbkZyYW1l
XTsKKwlOU1N0cmluZyAqaHRtbCA9IEAiPGh0bWw+PGJvZHk+SGVsbG88L2JvZHk+PC9odG1sPlxu
IjsKKyAgCisgIFt2aWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOnNlbGZdOworCVtmcmFtZSBsb2Fk
SFRNTFN0cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKK30KKworLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZSB7CisJRE9NSFRNTERvY3VtZW50ICpkb2MgPSAoRE9NSFRNTERv
Y3VtZW50ICopW2ZyYW1lIERPTURvY3VtZW50XTsKKwlET01IVE1MTGlua0VsZW1lbnQgKmxpbmsg
PSAoRE9NSFRNTExpbmtFbGVtZW50ICopW2RvYyBjcmVhdGVFbGVtZW50OkAibGluayJdOworICBO
U1N0cmluZyAqaHJlZlN0ciA9IEAiaHR0cDovL3d3dy5hcHBsZS5jb20vIjsKKyAgTlNTdHJpbmcg
KmxpbmtIcmVmU3RyOworICBCT09MIGFyZUVxdWFsOworICAKKyAgTlNMb2coQCJMaW5rIHRlc3Q6
JUAiLCBbbGluayBocmVmXSk7CisgIFtsaW5rIHNldEhyZWY6aHJlZlN0cl07CisgIGxpbmtIcmVm
U3RyID0gW2xpbmsgaHJlZl07CisgIGFyZUVxdWFsID0gW2hyZWZTdHIgaXNFcXVhbFRvU3RyaW5n
OmxpbmtIcmVmU3RyXTsKKyAgTlNMb2coQCIlQCAlQCAlQCIsIGhyZWZTdHIsIGFyZUVxdWFsID8g
QCI9IiA6IEAiTk9UID0iLCBsaW5rSHJlZlN0cik7CisgIGdJc0ZpbmlzaGVkID0gWUVTOworfQor
QGVuZAorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbnQgbWFpbiAoaW50IGFyZ2MsIGNvbnN0
IGNoYXIgKiBhcmd2W10pIHsKKyAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3Jl
bGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKyAgQ29udHJvbGxlciAqYyA9IG5pbDsKKyAgCisgIHdo
aWxlICghIGdJc0ZpbmlzaGVkKSB7CisgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1
blVudGlsRGF0ZToKKyAgICAgIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzow
LjFdXTsKKyAgICAKKyAgICBpZiAoISBjKSB7CisgICAgICBjID0gW1tDb250cm9sbGVyIGFsbG9j
XSBpbml0XTsKKyAgICAgIFtjIHRlc3RdOworICAgIH0KKyAgfQorICAKKyAgLy8gQ2xlYW51cAor
ICBbYyByZWxlYXNlXTsKKyAgW3Bvb2wgcmVsZWFzZV07CisKKyAgcmV0dXJuIDA7Cit9CkluZGV4
OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNjEwMSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA2LTA4LTI5ICB3YXlsb25pcyAgPHdheWxvbmlzQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVmVyaWZpY2F0aW9uIG9mIGV4Y2VwdGlvbnMgdGhyb3duIGluIGEgcGx1Z2luLiAgVGVzdCBm
b3IgYnVnIDEwMTE0LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvT2JqQ1Bs
dWdpbi5tOgorICAgICAgICAoK1tPYmpDUGx1Z2luIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJT
Y3JpcHQ6XSk6CisgICAgICAgICgrW09iakNQbHVnaW4gd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9y
Ol0pOgorICAgICAgICAoLVtPYmpDUGx1Z2luIHRocm93SWZBcmd1bWVudElzTm90SGVsbG86XSk6
CisKIDIwMDYtMDgtMTYgIFRpbSBPbWVybmljayAgPHRpbW9AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9PYmpDUGx1Z2luLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvT2JqQ1BsdWdpbi5tCShyZXZpc2lvbiAxNjEwMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL09iakNQbHVnaW4ubQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAj
aW1wb3J0ICJPYmpDUGx1Z2luLmgiCiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dlYktpdC5oPgogCiAKIC8vID09PSBOU09iamVjdCBjYXRlZ29yeSB0byBl
eHBvc2UgYWxtb3N0IGV2ZXJ5dGhpbmcgdG8gSmF2YVNjcmlwdCA9PT0KQEAgLTEzOSw2ICsxNDAs
OSBAQCBzdGF0aWMgQk9PTCBfYWxsb3dzU2NyaXB0c0Z1bGxBY2Nlc3MgPSBOCiAgICAgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoZWNobzopKQogICAgICAgICByZXR1cm4gTk87CiAKKyAgICBp
ZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcih0aHJvd0lmQXJndW1lbnRJc05vdEhlbGxvOikpCisg
ICAgICByZXR1cm4gTk87CisKICAgICByZXR1cm4gWUVTOwogfQogCkBAIC0xNDYsNyArMTUwLDEw
IEBAIHN0YXRpYyBCT09MIF9hbGxvd3NTY3JpcHRzRnVsbEFjY2VzcyA9IE4KIHsKICAgICBpZiAo
YVNlbGVjdG9yID09IEBzZWxlY3RvcihlY2hvOikpCiAgICAgICAgIHJldHVybiBAImVjaG8iOwot
ICAKKworICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHRocm93SWZBcmd1bWVudElzTm90
SGVsbG86KSkKKyAgICAgIHJldHVybiBAInRocm93SWZBcmd1bWVudElzTm90SGVsbG8iOworCiAg
ICAgcmV0dXJuIG5pbDsKIH0KIApAQCAtMTY2LDQgKzE3MywxMCBAQCBzdGF0aWMgQk9PTCBfYWxs
b3dzU2NyaXB0c0Z1bGxBY2Nlc3MgPSBOCiAgICAgcmV0dXJuIG9iajsKIH0KIAorLSAodm9pZCl0
aHJvd0lmQXJndW1lbnRJc05vdEhlbGxvOihOU1N0cmluZyAqKXN0ciAKK3sKKyAgICBpZiAoIVtz
dHIgaXNFcXVhbFRvU3RyaW5nOkAiSGVsbG8iXSkgCisgICAgICAgIFtXZWJTY3JpcHRPYmplY3Qg
dGhyb3dFeGNlcHRpb246W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAhPSBIZWxsbyIs
IHN0cl1dOworfQorCiBAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>