<?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>52831</bug_id>
          
          <creation_ts>2011-01-20 12:14:47 -0800</creation_ts>
          <short_desc>Crash in glDrawArrays with NaCl crystal model</short_desc>
          <delta_ts>2011-02-07 09:31:17 -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>WebGL</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>http://www.ibiblio.org/e-notes/webgl/models/NaClb5.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>gman</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337497</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 12:14:47 -0800</bug_when>
    <thetext>The NaCl crystal model in the link above is causing WebKit&apos;s WebGL implementation to crash in glDrawArrays, at least on an NVIDIA GeForce 8600M GT. In Safari the stack trace is as follows:

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.GeForceGLDriver     	0x00000002000c24b9 glrCompExecuteKernel + 643065
1   GLEngine                      	0x000000011902ca70 glDrawArrays_ACC_Exec + 882
2   com.apple.WebCore             	0x00000001018685a1 WebCore::WebGLRenderingContext::drawArrays(unsigned int, int, int, int&amp;) + 289
3   com.apple.WebCore             	0x00000001014bb969 WebCore::jsWebGLRenderingContextPrototypeFunctionDrawArrays(JSC::ExecState*) + 569
4   ???                           	0x00004afef92001b8 0 + 82458961772984
5   com.apple.JavaScriptCore      	0x00000001007d891c JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 780
6   ???                           	0x000000000000000a 0 + 10
7   ???                           	0x00000001188cf320 0 + 4706857760
8   com.apple.JavaScriptCore      	0x000000010083a440 JSC::JSFunction::~JSFunction() + 0
9   ???                           	0x9090909090909090 0 + 10416984888683040912

I assume the application is doing something illegal and the WebGL layer isn&apos;t catching it before handing the call down to OpenGL.

In Chromium it looks like the GPU process crashes and restarts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338099</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-21 09:20:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/8898613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344309</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-02 15:32:48 -0800</bug_when>
    <thetext>I&apos;ll have a look.  Can reproduce on my mac with ToT chromium and webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345130</commentid>
    <comment_count>3</comment_count>
      <attachid>81138</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-03 16:34:46 -0800</bug_when>
    <thetext>Created attachment 81138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345246</commentid>
    <comment_count>4</comment_count>
      <attachid>81169</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-03 18:48:43 -0800</bug_when>
    <thetext>Created attachment 81169
revised patch: test added

Test is copied from khronos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345254</commentid>
    <comment_count>5</comment_count>
      <attachid>81169</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-03 19:09:03 -0800</bug_when>
    <thetext>Comment on attachment 81169
revised patch: test added

What would happen if we instead disabled vertex attribute 0 as an array if the program isn&apos;t consuming it? The original reason for the simulation of vertex attribute 0 is that that attribute can&apos;t be set to a constant value in desktop GL. If the program was consuming it and it wasn&apos;t enabled as an array, draw calls would be completely ignored. If the program isn&apos;t consuming it at all, then if we silently disable it as an array behind the scenes, would draw calls using that program still generate output?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345450</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-04 05:58:02 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 81169 [details])
&gt; What would happen if we instead disabled vertex attribute 0 as an array if the program isn&apos;t consuming it? The original reason for the simulation of vertex attribute 0 is that that attribute can&apos;t be set to a constant value in desktop GL. If the program was consuming it and it wasn&apos;t enabled as an array, draw calls would be completely ignored. If the program isn&apos;t consuming it at all, then if we silently disable it as an array behind the scenes, would draw calls using that program still generate output?

On desktop GL we have to enable vertex attribute 0 to trigger the draw.  (An alternative is to call vertexPointer, which isn&apos;t exposed through GraphicContext3D).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345824</commentid>
    <comment_count>7</comment_count>
      <attachid>81293</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-04 14:58:03 -0800</bug_when>
    <thetext>Created attachment 81293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345825</commentid>
    <comment_count>8</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-04 15:00:12 -0800</bug_when>
    <thetext>This seems to avoid crash in both attrib0+attrib1 and attrib1+attrib2 cases.  I&apos;ve tested with multiple contexts in one page in Safari, and it seems to work fine.

Please review.

I am working on filing a bug report to Apple at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345854</commentid>
    <comment_count>9</comment_count>
      <attachid>81293</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-04 15:33:51 -0800</bug_when>
    <thetext>Comment on attachment 81293
Patch

The workaround looks fine. It&apos;s unfortunate how complicated it is. The test of whether vertex attribute 0 has ever been used in this context before is disconcerting. Please do make sure a bug gets filed against Apple&apos;s OpenGL implementation so that this code might be removed at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345939</commentid>
    <comment_count>10</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-04 17:25:08 -0800</bug_when>
    <thetext>I just filed a bug report to Apple, tracking ID is 8962402.

Chris, is there anyway you could boost this bug a little bit so it gets solved sooner than later?  Even with this patch, I am worried that disaster might happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346627</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-02-07 09:31:17 -0800</bug_when>
    <thetext>Committed r77821: &lt;http://trac.webkit.org/changeset/77821&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81138</attachid>
            <date>2011-02-03 16:34:46 -0800</date>
            <delta_ts>2011-02-03 18:48:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52831-20110203163445.patch</filename>
            <type>text/plain</type>
            <size>3490</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMDMgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDcmFzaCBpbiBnbERyYXdBcnJheXMgd2l0aCBOYUNsIGNyeXN0YWwgbW9k
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyODMx
CisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnRleEF0dHJp
YjApOiBNYWtlIHN1cmUgYXR0cmliMCBpcyBib3VuZCB0byBhIGxhcmdlIGVub3VnaCBidWZmZXIg
aW4gdGhlIHNpdHVhdGlvbiB3aGVyZSBhdHRyaWIwIGlzIGVuYWJsZWQgYnV0IG5vdCB1c2VkLiAg
V2l0aCB0aGlzIHBhdGNoIGNyYXNoIGlzIGdvbmUuCisKIDIwMTEtMDItMDMgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHJldmlzaW9uIDc3NDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUzNSwxNyAr
NDUzNSwyNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5pdFZlcnRleEF0CiBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0RzaXplaSBu
dW1WZXJ0ZXgpCiB7CiAgICAgY29uc3QgVmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0
ZXhBdHRyaWJTdGF0ZVswXTsKLSAgICBpZiAoc3RhdGUuZW5hYmxlZCB8fCAhbV9jdXJyZW50UHJv
Z3JhbSB8fCAhbV9jdXJyZW50UHJvZ3JhbS0+b2JqZWN0KCkKLSAgICAgICAgfHwgIW1fY3VycmVu
dFByb2dyYW0tPmlzVXNpbmdWZXJ0ZXhBdHRyaWIwKCkpCisgICAgaWYgKCFtX2N1cnJlbnRQcm9n
cmFtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCB1c2luZ1ZlcnRleEF0dHJpYjAg
PSBtX2N1cnJlbnRQcm9ncmFtLT5pc1VzaW5nVmVydGV4QXR0cmliMCgpOworICAgIGlmIChzdGF0
ZS5lbmFibGVkICYmIHVzaW5nVmVydGV4QXR0cmliMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
LCBtX3ZlcnRleEF0dHJpYjBCdWZmZXItPm9iamVjdCgpKTsKICAgICBHQzNEc2l6ZWlwdHIgYnVm
ZmVyRGF0YVNpemUgPSAobnVtVmVydGV4ICsgMSkgKiA0ICogc2l6ZW9mKEdDM0RmbG9hdCk7Ci0g
ICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6ZQotICAgICAg
ICB8fCBzdGF0ZS52YWx1ZVswXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVswXQotICAg
ICAgICB8fCBzdGF0ZS52YWx1ZVsxXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsxXQot
ICAgICAgICB8fCBzdGF0ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsy
XQotICAgICAgICB8fCBzdGF0ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1
ZVszXSkgewotICAgICAgICBPd25BcnJheVB0cjxHQzNEZmxvYXQ+IGJ1ZmZlckRhdGEobmV3IEdD
M0RmbG9hdFsobnVtVmVydGV4ICsgMSkgKiA0XSk7CisgICAgT3duQXJyYXlQdHI8R0MzRGZsb2F0
PiBidWZmZXJEYXRhOworICAgIGlmIChidWZmZXJEYXRhU2l6ZSA+IG1fdmVydGV4QXR0cmliMEJ1
ZmZlclNpemUpIHsKKyAgICAgICAgYnVmZmVyRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IEdDM0Rm
bG9hdFsobnVtVmVydGV4ICsgMSkgKiA0XSk7CisgICAgICAgIC8vIEZJWE1FOiBpZiBtZW1vcnkg
YWxsb3djYXRpb24gZmFpbHMsIExvc2VDb250ZXh0IGV2ZW50IHNob3VsZCBiZQorICAgICAgICAv
LyBzaW11bGF0ZWQgYmVjYXVzZSBnb2luZyBhaGVhZCB3aXRoIGRyYXcgY2FsbHMgbWlnaHQgY3Jh
c2ggdGhlIGRyaXZlci4KKyAgICAgICAgQVNTRVJUKGJ1ZmZlckRhdGEpOworICAgICAgICBtX3Zl
cnRleEF0dHJpYjBCdWZmZXJTaXplID0gYnVmZmVyRGF0YVNpemU7CisgICAgfQorICAgIGlmICh1
c2luZ1ZlcnRleEF0dHJpYjAKKyAgICAgICAgJiYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhB
dHRyaWIwQnVmZmVyU2l6ZQorICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVbMF0gIT0gbV92ZXJ0
ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMF0KKyAgICAgICAgICAgIHx8IHN0YXRlLnZhbHVlWzFdICE9
IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdCisgICAgICAgICAgICB8fCBzdGF0ZS52YWx1
ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXQorICAgICAgICAgICAgfHwgc3Rh
dGUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10pKSB7CiAgICAgICAg
IGZvciAoR0MzRHNpemVpIGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lpKSB7CiAgICAg
ICAgICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBzdGF0ZS52YWx1ZVswXTsKICAgICAgICAgICAg
IGJ1ZmZlckRhdGFbaWkgKiA0ICsgMV0gPSBzdGF0ZS52YWx1ZVsxXTsKQEAgLTQ1NTMsNyArNDU2
Myw2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnQKICAgICAgICAg
ICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgM10gPSBzdGF0ZS52YWx1ZVszXTsKICAgICAgICAgfQog
ICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JV
RkZFUiwgYnVmZmVyRGF0YVNpemUsIGJ1ZmZlckRhdGEuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNE
OjpEWU5BTUlDX0RSQVcpOwotICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplID0gYnVm
ZmVyRGF0YVNpemU7CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzBdID0gc3Rh
dGUudmFsdWVbMF07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdID0gc3Rh
dGUudmFsdWVbMV07CiAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdID0gc3Rh
dGUudmFsdWVbMl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81169</attachid>
            <date>2011-02-03 18:48:43 -0800</date>
            <delta_ts>2011-02-04 14:58:01 -0800</delta_ts>
            <desc>revised patch: test added</desc>
            <filename>attrib0.patch</filename>
            <type>text/plain</type>
            <size>9688</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMDMgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDcmFzaCBpbiBnbERyYXdBcnJheXMgd2l0aCBOYUNsIGNyeXN0YWwgbW9k
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyODMx
CisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBBbGxv
Y2F0ZSBsYXJnZSBlbm91Z2ggYnVmZmVyIGZvciBhdHR0cmliMCBpZiBpdCdzIGVuYWJsZWQgYW5k
IG5vdCB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0
VmVydGV4QXR0cmliMCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnNpbXVsYXRlVmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Lmg6CisKIDIwMTEtMDItMDIgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCShyZXZpc2lvbiA3NzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MzAsMjEgKzQ1MzAs
MzAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmluaXRWZXJ0ZXhBdAogICAgIG1fdmVy
dGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdID0gMC4wZjsKICAgICBtX3ZlcnRleEF0dHJpYjBCdWZm
ZXJWYWx1ZVsyXSA9IDAuMGY7CiAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10gPSAx
LjBmOworICAgIG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsID0gZmFsc2U7CiB9CiAKIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0MzRHNpemVpIG51
bVZlcnRleCkKIHsKICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJTdGF0ZSYgc3RhdGUgPSBtX3ZlcnRl
eEF0dHJpYlN0YXRlWzBdOwotICAgIGlmIChzdGF0ZS5lbmFibGVkIHx8ICFtX2N1cnJlbnRQcm9n
cmFtIHx8ICFtX2N1cnJlbnRQcm9ncmFtLT5vYmplY3QoKQotICAgICAgICB8fCAhbV9jdXJyZW50
UHJvZ3JhbS0+aXNVc2luZ1ZlcnRleEF0dHJpYjAoKSkKKyAgICBpZiAoIW1fY3VycmVudFByb2dy
YW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHVzaW5nVmVydGV4QXR0cmliMCA9
IG1fY3VycmVudFByb2dyYW0tPmlzVXNpbmdWZXJ0ZXhBdHRyaWIwKCk7CisgICAgaWYgKHN0YXRl
LmVuYWJsZWQgJiYgdXNpbmdWZXJ0ZXhBdHRyaWIwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIs
IG1fdmVydGV4QXR0cmliMEJ1ZmZlci0+b2JqZWN0KCkpOwogICAgIEdDM0RzaXplaXB0ciBidWZm
ZXJEYXRhU2l6ZSA9IChudW1WZXJ0ZXggKyAxKSAqIDQgKiBzaXplb2YoR0MzRGZsb2F0KTsKLSAg
ICBpZiAoYnVmZmVyRGF0YVNpemUgPiBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplCi0gICAgICAg
IHx8IHN0YXRlLnZhbHVlWzBdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzBdCi0gICAg
ICAgIHx8IHN0YXRlLnZhbHVlWzFdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdCi0g
ICAgICAgIHx8IHN0YXRlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJd
Ci0gICAgICAgIHx8IHN0YXRlLnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVl
WzNdKSB7CisgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6
ZSkgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFS
UkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpEWU5BTUlD
X0RSQVcpOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplID0gYnVmZmVyRGF0YVNp
emU7CisgICAgICAgIG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsID0gdHJ1ZTsKKyAgICB9Cisg
ICAgaWYgKHVzaW5nVmVydGV4QXR0cmliMAorICAgICAgICAmJiAobV9mb3JjZUF0dHJpYjBCdWZm
ZXJSZWZpbGwKKyAgICAgICAgICAgIHx8IHN0YXRlLnZhbHVlWzBdICE9IG1fdmVydGV4QXR0cmli
MEJ1ZmZlclZhbHVlWzBdCisgICAgICAgICAgICB8fCBzdGF0ZS52YWx1ZVsxXSAhPSBtX3ZlcnRl
eEF0dHJpYjBCdWZmZXJWYWx1ZVsxXQorICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVbMl0gIT0g
bV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0KKyAgICAgICAgICAgIHx8IHN0YXRlLnZhbHVl
WzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSkgewogICAgICAgICBPd25BcnJh
eVB0cjxHQzNEZmxvYXQ+IGJ1ZmZlckRhdGEobmV3IEdDM0RmbG9hdFsobnVtVmVydGV4ICsgMSkg
KiA0XSk7CiAgICAgICAgIGZvciAoR0MzRHNpemVpIGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAx
OyArK2lpKSB7CiAgICAgICAgICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBzdGF0ZS52YWx1ZVsw
XTsKQEAgLTQ1NTIsMTIgKzQ1NjEsMTIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNp
bXVsYXRlVmVydAogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAyXSA9IHN0YXRlLnZh
bHVlWzJdOwogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAzXSA9IHN0YXRlLnZhbHVl
WzNdOwogICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFwaGljc0Nv
bnRleHQzRDo6QVJSQVlfQlVGRkVSLCBidWZmZXJEYXRhU2l6ZSwgYnVmZmVyRGF0YS5nZXQoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkRZTkFNSUNfRFJBVyk7Ci0gICAgICAgIG1fdmVydGV4QXR0cmli
MEJ1ZmZlclNpemUgPSBidWZmZXJEYXRhU2l6ZTsKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyVmFsdWVbMF0gPSBzdGF0ZS52YWx1ZVswXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyVmFsdWVbMV0gPSBzdGF0ZS52YWx1ZVsxXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyVmFsdWVbMl0gPSBzdGF0ZS52YWx1ZVsyXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyVmFsdWVbM10gPSBzdGF0ZS52YWx1ZVszXTsKKyAgICAgICAgbV9mb3JjZUF0dHJpYjBCdWZm
ZXJSZWZpbGwgPSBmYWxzZTsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRhKEdyYXBo
aWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAsIGJ1ZmZlckRhdGFTaXplLCBidWZmZXJEYXRh
LmdldCgpKTsKICAgICB9CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQs
IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgMCwgMCwgMCk7CiAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAkocmV2aXNpb24gNzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzk5LDYgKzM5OSw3IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fdmVydGV4QXR0cmliMEJ1ZmZlcjsK
ICAgICBsb25nIG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemU7CiAgICAgR0MzRGZsb2F0IG1fdmVy
dGV4QXR0cmliMEJ1ZmZlclZhbHVlWzRdOworICAgIGJvb2wgbV9mb3JjZUF0dHJpYjBCdWZmZXJS
ZWZpbGw7CiAKICAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBtX2N1cnJlbnRQcm9ncmFtOwogICAg
IFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBtX2ZyYW1lYnVmZmVyQmluZGluZzsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc3NTgyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMDMgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFz
aCBpbiBnbERyYXdBcnJheXMgd2l0aCBOYUNsIGNyeXN0YWwgbW9kZWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyODMxCisKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmliLXplcm8taXNzdWVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJv
LWlzc3Vlcy5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0wMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVy
bm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNpbXBsZSBxdCB0ZXN0IGJh
c2VsaW5lLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0
dHJpYi16ZXJvLWlzc3Vlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0
ZXgtYXR0cmliLXplcm8taXNzdWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMiBAQAorVGVzdCBzb21lIG9mIHRoZSBpc3N1ZXMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biBhdHRyaWIgMCBvbiBPcGVuR0wgdnMgV2ViR0wKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgZ19hdHRyaWJMb2NhdGlvbiBpcyBnbC5nZXRBdHRyaWJMb2NhdGlvbihnX3By
b2dyYW0sICd2UG9zaXRpb24nKQorUEFTUyBnX2F0dHJpYkxvY2F0aW9uIGlzIGdsLmdldEF0dHJp
YkxvY2F0aW9uKGdfcHJvZ3JhbSwgJ3ZQb3NpdGlvbicpCitQQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogTk9fRVJST1IgOiBkcmF3aW5nIHVzaW5nIGF0dHJpYiAwIHdpdGggMyB2ZXJ0
cworUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB1
c2luZyBhdHRyaWIgMyB3aXRoIDYwMDAwIHZlcnRzCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiBkcmF3aW5nIHVzaW5nIGF0dHJpYiAwIHdpdGggMyB2ZXJ0cwor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB1c2lu
ZyBhdHRyaWIgMyB3aXRoIDYwMDAwIHZlcnRzCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOiBkcmF3aW5nIHVzaW5nIGF0dHJpYiAwIHdpdGggMyB2ZXJ0cworUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB1c2luZyBh
dHRyaWIgMyB3aXRoIDYwMDAwIHZlcnRzCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IgOiBkcmF3aW5nIHVzaW5nIGF0dHJpYiAwIHdpdGggMyB2ZXJ0cworUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB1c2luZyBhdHRy
aWIgMyB3aXRoIDYwMDAwIHZlcnRzCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOiBkcmF3aW5nIHVzaW5nIGF0dHJpYiAwIHdpdGggMyB2ZXJ0cworUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJhd2luZyB1c2luZyBhdHRyaWIg
MyB3aXRoIDYwMDAwIHZlcnRzCitQQVNTIGNhbnZhcyBzaG91bGQgYmUgMCwgMCwgMCwgMAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1ZXMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0
ZXgtYXR0cmliLXplcm8taXNzdWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmliLXplcm8taXNzdWVzLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5XZWJHTCBFbmFibGUgVmVydGV4IEF0dHJpYiBaZXJvIFRlc3Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj4gPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIj4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94
LXZlcnRleCI+CisgICAgYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworICAgIHZvaWQgbWFpbigp
CisgICAgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgICB9Cis8L3Njcmlw
dD4KKworPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cisg
ICAgdm9pZCBtYWluKCkKKyAgICB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLDAu
MCwwLjAsMC4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0IHNvbWUgb2YgdGhlIGlzc3VlcyBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGF0dHJpYiAw
IG9uIE9wZW5HTCB2cyBXZWJHTCIpOworZGVidWcoIiIpOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlIik7Cit2
YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisKK2Z1bmN0aW9uIHNldHVwKG51
bVZlcnRzLCBhdHRyaWJJbmRleCkgeworICB2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0o
CisgICAgICBnbCwKKyAgICAgIFt3dHUubG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsICd2c2hhZGVy
JywgZ2wuVkVSVEVYX1NIQURFUiksCisgICAgICAgd3R1LmxvYWRTaGFkZXJGcm9tU2NyaXB0KGds
LCAnZnNoYWRlcicsIGdsLkZSQUdNRU5UX1NIQURFUildLAorICAgICAgWyd2UG9zaXRpb24nXSwg
W2F0dHJpYkluZGV4XSk7CisgIC8vIGRyYXcgd2l0aCBzb21ldGhpbmcgb24gYXR0cmliIHplcm8g
d2l0aCBhIHNtYWxsIG51bWJlciBvZiB2ZXJ0aWNlcworICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wu
Y3JlYXRlQnVmZmVyKCk7CisgIGdfcHJvZ3JhbSA9IHByb2dyYW07CisgIGdfYXR0cmliTG9jYXRp
b24gPSBhdHRyaWJJbmRleDsKKyAgc2hvdWxkQmUoImdfYXR0cmliTG9jYXRpb24iLCAiZ2wuZ2V0
QXR0cmliTG9jYXRpb24oZ19wcm9ncmFtLCAndlBvc2l0aW9uJykiKTsKKyAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgIGdsLmJ1ZmZlckRhdGEoCisgICAg
ICBnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkobnVtVmVydHMgKiAzKSwgZ2wuU1RB
VElDX0RSQVcpOworICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkluZGV4LCAzLCBnbC5G
TE9BVCwgZmFsc2UsIDAsIDApOworICB2YXIgaW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheShudW1W
ZXJ0cyk7CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBudW1WZXJ0czsgKytpaSkgeworICAgIGlu
ZGljZXNbaWldID0gaWk7CisgIH0KKyAgdmFyIGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVy
KCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmZmVy
KTsKKyAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywgZ2wu
U1RBVElDX0RSQVcpOworICByZXR1cm4gcHJvZ3JhbTsKK30KKwordmFyIHAxID0gc2V0dXAoMywg
MCk7Cit2YXIgcDIgPSBzZXR1cCg2MDAwMCwgMyk7CisKK2ZvciAodmFyIGlpID0gMDsgaWkgPCA1
OyArK2lpKSB7CisgIGdsLnVzZVByb2dyYW0ocDEpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSgwKTsKKyAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURf
U0hPUlQsIDApOworICBnbEVycm9yU2hvdWxkQmUoCisgICAgICBnbCwgZ2wuTk9fRVJST1IsCisg
ICAgICAiZHJhd2luZyB1c2luZyBhdHRyaWIgMCB3aXRoIDMgdmVydHMiKTsKKworICBnbC51c2VQ
cm9ncmFtKHAyKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMyk7CisgIGdsLmRyYXdB
cnJheXMoZ2wuTElORVMsIDAsIDYwMDAwKTsKKyAgZ2xFcnJvclNob3VsZEJlKAorICAgICAgZ2ws
IGdsLk5PX0VSUk9SLAorICAgICAgImRyYXdpbmcgdXNpbmcgYXR0cmliIDMgd2l0aCA2MDAwMCB2
ZXJ0cyIpOworfQorCit3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAwLCAwLCAwXSwgImNhbnZhcyBz
aG91bGQgYmUgMCwgMCwgMCwgMCIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81293</attachid>
            <date>2011-02-04 14:58:03 -0800</date>
            <delta_ts>2011-02-04 15:33:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52831-20110204145802.patch</filename>
            <type>text/plain</type>
            <size>9959</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMDMgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDcmFzaCBpbiBnbERyYXdBcnJheXMgd2l0aCBOYUNsIGNyeXN0YWwgbW9k
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyODMx
CisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBBbGxv
Y2F0ZSBsYXJnZSBlbm91Z2ggYnVmZmVyIGZvciBhdHR0cmliMCBpZiBpdCdzIGVuYWJsZWQgYW5k
IG5vdCB1c2VkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppbml0
VmVydGV4QXR0cmliMCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnNpbXVsYXRlVmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Lmg6CisKIDIwMTEtMDItMDIgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCShyZXZpc2lvbiA3NzU4MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NjIsMjEgKzQ1NjIs
MzYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmluaXRWZXJ0ZXhBdAogICAgIG1fdmVy
dGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdID0gMC4wZjsKICAgICBtX3ZlcnRleEF0dHJpYjBCdWZm
ZXJWYWx1ZVsyXSA9IDAuMGY7CiAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10gPSAx
LjBmOworICAgIG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsID0gZmFsc2U7CisgICAgbV92ZXJ0
ZXhBdHRyaWIwVXNlZEJlZm9yZSA9IGZhbHNlOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0RzaXplaSBudW1WZXJ0ZXgpCiB7CiAgICAg
Y29uc3QgVmVydGV4QXR0cmliU3RhdGUmIHN0YXRlID0gbV92ZXJ0ZXhBdHRyaWJTdGF0ZVswXTsK
LSAgICBpZiAoc3RhdGUuZW5hYmxlZCB8fCAhbV9jdXJyZW50UHJvZ3JhbSB8fCAhbV9jdXJyZW50
UHJvZ3JhbS0+b2JqZWN0KCkKLSAgICAgICAgfHwgIW1fY3VycmVudFByb2dyYW0tPmlzVXNpbmdW
ZXJ0ZXhBdHRyaWIwKCkpCisgICAgaWYgKCFtX2N1cnJlbnRQcm9ncmFtKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgYm9vbCB1c2luZ1ZlcnRleEF0dHJpYjAgPSBtX2N1cnJlbnRQcm9ncmFt
LT5pc1VzaW5nVmVydGV4QXR0cmliMCgpOworICAgIGlmICh1c2luZ1ZlcnRleEF0dHJpYjApCisg
ICAgICAgIG1fdmVydGV4QXR0cmliMFVzZWRCZWZvcmUgPSB0cnVlOworICAgIGlmIChzdGF0ZS5l
bmFibGVkICYmIHVzaW5nVmVydGV4QXR0cmliMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghdXNpbmdWZXJ0ZXhBdHRyaWIwICYmICFtX3ZlcnRleEF0dHJpYjBVc2VkQmVmb3JlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9IHRy
dWU7CiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9C
VUZGRVIsIG1fdmVydGV4QXR0cmliMEJ1ZmZlci0+b2JqZWN0KCkpOwogICAgIEdDM0RzaXplaXB0
ciBidWZmZXJEYXRhU2l6ZSA9IChudW1WZXJ0ZXggKyAxKSAqIDQgKiBzaXplb2YoR0MzRGZsb2F0
KTsKLSAgICBpZiAoYnVmZmVyRGF0YVNpemUgPiBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplCi0g
ICAgICAgIHx8IHN0YXRlLnZhbHVlWzBdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzBd
Ci0gICAgICAgIHx8IHN0YXRlLnZhbHVlWzFdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVl
WzFdCi0gICAgICAgIHx8IHN0YXRlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZh
bHVlWzJdCi0gICAgICAgIHx8IHN0YXRlLnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZl
clZhbHVlWzNdKSB7CisgICAgaWYgKGJ1ZmZlckRhdGFTaXplID4gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyU2l6ZSkgeworICAgICAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUiwgYnVmZmVyRGF0YVNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpE
WU5BTUlDX0RSQVcpOworICAgICAgICBtX3ZlcnRleEF0dHJpYjBCdWZmZXJTaXplID0gYnVmZmVy
RGF0YVNpemU7CisgICAgICAgIG1fZm9yY2VBdHRyaWIwQnVmZmVyUmVmaWxsID0gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKHVzaW5nVmVydGV4QXR0cmliMAorICAgICAgICAmJiAobV9mb3JjZUF0dHJp
YjBCdWZmZXJSZWZpbGwKKyAgICAgICAgICAgIHx8IHN0YXRlLnZhbHVlWzBdICE9IG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzBdCisgICAgICAgICAgICB8fCBzdGF0ZS52YWx1ZVsxXSAhPSBt
X3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsxXQorICAgICAgICAgICAgfHwgc3RhdGUudmFsdWVb
Ml0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0KKyAgICAgICAgICAgIHx8IHN0YXRl
LnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSkgewogICAgICAgICBP
d25BcnJheVB0cjxHQzNEZmxvYXQ+IGJ1ZmZlckRhdGEobmV3IEdDM0RmbG9hdFsobnVtVmVydGV4
ICsgMSkgKiA0XSk7CiAgICAgICAgIGZvciAoR0MzRHNpemVpIGlpID0gMDsgaWkgPCBudW1WZXJ0
ZXggKyAxOyArK2lpKSB7CiAgICAgICAgICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBzdGF0ZS52
YWx1ZVswXTsKQEAgLTQ1ODQsMTIgKzQ1OTksMTIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnNpbXVsYXRlVmVydAogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAyXSA9IHN0
YXRlLnZhbHVlWzJdOwogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAzXSA9IHN0YXRl
LnZhbHVlWzNdOwogICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHcmFw
aGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBidWZmZXJEYXRhU2l6ZSwgYnVmZmVyRGF0YS5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkRZTkFNSUNfRFJBVyk7Ci0gICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclNpemUgPSBidWZmZXJEYXRhU2l6ZTsKICAgICAgICAgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyVmFsdWVbMF0gPSBzdGF0ZS52YWx1ZVswXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyVmFsdWVbMV0gPSBzdGF0ZS52YWx1ZVsxXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyVmFsdWVbMl0gPSBzdGF0ZS52YWx1ZVsyXTsKICAgICAgICAgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyVmFsdWVbM10gPSBzdGF0ZS52YWx1ZVszXTsKKyAgICAgICAgbV9mb3JjZUF0dHJp
YjBCdWZmZXJSZWZpbGwgPSBmYWxzZTsKKyAgICAgICAgbV9jb250ZXh0LT5idWZmZXJTdWJEYXRh
KEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAsIGJ1ZmZlckRhdGFTaXplLCBidWZm
ZXJEYXRhLmdldCgpKTsKICAgICB9CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDAsIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgMCwgMCwgMCk7CiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAkocmV2aXNpb24gNzc1ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzk5LDYgKzM5
OSw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IG1fdmVydGV4QXR0cmliMEJ1
ZmZlcjsKICAgICBsb25nIG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemU7CiAgICAgR0MzRGZsb2F0
IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzRdOworICAgIGJvb2wgbV9mb3JjZUF0dHJpYjBC
dWZmZXJSZWZpbGw7CisgICAgYm9vbCBtX3ZlcnRleEF0dHJpYjBVc2VkQmVmb3JlOwogCiAgICAg
UmVmUHRyPFdlYkdMUHJvZ3JhbT4gbV9jdXJyZW50UHJvZ3JhbTsKICAgICBSZWZQdHI8V2ViR0xG
cmFtZWJ1ZmZlcj4gbV9mcmFtZWJ1ZmZlckJpbmRpbmc7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzU4
MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDExLTAyLTAzICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jhc2ggaW4gZ2xEcmF3QXJy
YXlzIHdpdGggTmFDbCBjcnlzdGFsIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjgzMQorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1ZXMuaHRtbDog
QWRkZWQuCisKIDIwMTEtMDItMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCBzaW1wbGUgcXQgdGVzdCBiYXNlbGluZS4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1
ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2dsLXZlcnRleC1hdHRyaWItemVyby1pc3N1ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJv
LWlzc3Vlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3Qg
c29tZSBvZiB0aGUgaXNzdWVzIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYXR0cmliIDAgb24g
T3BlbkdMIHZzIFdlYkdMCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGdf
YXR0cmliTG9jYXRpb24gaXMgZ2wuZ2V0QXR0cmliTG9jYXRpb24oZ19wcm9ncmFtLCAndlBvc2l0
aW9uJykKK1BBU1MgZ19hdHRyaWJMb2NhdGlvbiBpcyBnbC5nZXRBdHRyaWJMb2NhdGlvbihnX3By
b2dyYW0sICd2UG9zaXRpb24nKQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogZHJhd2luZyB1c2luZyBhdHRyaWIgMCB3aXRoIDMgdmVydHMKK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGRyYXdpbmcgdXNpbmcgYXR0cmliIDMg
d2l0aCA2MDAwMCB2ZXJ0cworUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VS
Uk9SIDogZHJhd2luZyB1c2luZyBhdHRyaWIgMCB3aXRoIDMgdmVydHMKK1BBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGRyYXdpbmcgdXNpbmcgYXR0cmliIDMgd2l0
aCA2MDAwMCB2ZXJ0cworUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogZHJhd2luZyB1c2luZyBhdHRyaWIgMCB3aXRoIDMgdmVydHMKK1BBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGRyYXdpbmcgdXNpbmcgYXR0cmliIDMgd2l0aCA2
MDAwMCB2ZXJ0cworUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
ZHJhd2luZyB1c2luZyBhdHRyaWIgMCB3aXRoIDMgdmVydHMKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGRyYXdpbmcgdXNpbmcgYXR0cmliIDMgd2l0aCA2MDAw
MCB2ZXJ0cworUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogZHJh
d2luZyB1c2luZyBhdHRyaWIgMCB3aXRoIDMgdmVydHMKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBOT19FUlJPUiA6IGRyYXdpbmcgdXNpbmcgYXR0cmliIDMgd2l0aCA2MDAwMCB2
ZXJ0cworUEFTUyBjYW52YXMgc2hvdWxkIGJlIDAsIDAsIDAsIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9nbC12ZXJ0ZXgtYXR0cmliLXplcm8taXNzdWVzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJv
LWlzc3Vlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtdmVydGV4LWF0dHJpYi16ZXJvLWlzc3Vlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDkyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+V2ViR0wg
RW5hYmxlIFZlcnRleCBBdHRyaWIgWmVybyBUZXN0PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+Cis8L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICAg
IGF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKKyAgICB2b2lkIG1haW4oKQorICAgIHsKKyAgICAg
ICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgICAgfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQg
aWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAgIHZvaWQgbWFpbigp
CisgICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwwLjAsMC4wLDAuMCk7Cisg
ICAgfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBzb21lIG9mIHRo
ZSBpc3N1ZXMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhdHRyaWIgMCBvbiBPcGVuR0wgdnMg
V2ViR0wiKTsKK2RlYnVnKCIiKTsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52
YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOwordmFyIGdsID0gd3R1LmNy
ZWF0ZTNEQ29udGV4dChjYW52YXMpOworCitmdW5jdGlvbiBzZXR1cChudW1WZXJ0cywgYXR0cmli
SW5kZXgpIHsKKyAgdmFyIHByb2dyYW0gPSB3dHUuc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsCisg
ICAgICBbd3R1LmxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCAndnNoYWRlcicsIGdsLlZFUlRFWF9T
SEFERVIpLAorICAgICAgIHd0dS5sb2FkU2hhZGVyRnJvbVNjcmlwdChnbCwgJ2ZzaGFkZXInLCBn
bC5GUkFHTUVOVF9TSEFERVIpXSwKKyAgICAgIFsndlBvc2l0aW9uJ10sIFthdHRyaWJJbmRleF0p
OworICAvLyBkcmF3IHdpdGggc29tZXRoaW5nIG9uIGF0dHJpYiB6ZXJvIHdpdGggYSBzbWFsbCBu
dW1iZXIgb2YgdmVydGljZXMKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICBnX3Byb2dyYW0gPSBwcm9ncmFtOworICBnX2F0dHJpYkxvY2F0aW9uID0gYXR0cmliSW5k
ZXg7CisgIHNob3VsZEJlKCJnX2F0dHJpYkxvY2F0aW9uIiwgImdsLmdldEF0dHJpYkxvY2F0aW9u
KGdfcHJvZ3JhbSwgJ3ZQb3NpdGlvbicpIik7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCB2ZXJ0ZXhPYmplY3QpOworICBnbC5idWZmZXJEYXRhKAorICAgICAgZ2wuQVJSQVlfQlVG
RkVSLCBuZXcgRmxvYXQzMkFycmF5KG51bVZlcnRzICogMyksIGdsLlNUQVRJQ19EUkFXKTsKKyAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWJJbmRleCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAw
LCAwKTsKKyAgdmFyIGluZGljZXMgPSBuZXcgVWludDE2QXJyYXkobnVtVmVydHMpOworICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgbnVtVmVydHM7ICsraWkpIHsKKyAgICBpbmRpY2VzW2lpXSA9IGlp
OworICB9CisgIHZhciBpbmRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5k
QnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7CisgIGdsLmJ1ZmZl
ckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMsIGdsLlNUQVRJQ19EUkFXKTsK
KyAgcmV0dXJuIHByb2dyYW07Cit9CisKK3ZhciBwMSA9IHNldHVwKDMsIDApOwordmFyIHAyID0g
c2V0dXAoNjAwMDAsIDMpOworCitmb3IgKHZhciBpaSA9IDA7IGlpIDwgNTsgKytpaSkgeworICBn
bC51c2VQcm9ncmFtKHAxKTsKKyAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgIGds
LmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDMsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKKyAg
Z2xFcnJvclNob3VsZEJlKAorICAgICAgZ2wsIGdsLk5PX0VSUk9SLAorICAgICAgImRyYXdpbmcg
dXNpbmcgYXR0cmliIDAgd2l0aCAzIHZlcnRzIik7CisKKyAgZ2wudXNlUHJvZ3JhbShwMik7Cisg
IGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDMpOworICBnbC5kcmF3QXJyYXlzKGdsLkxJTkVT
LCAwLCA2MDAwMCk7CisgIGdsRXJyb3JTaG91bGRCZSgKKyAgICAgIGdsLCBnbC5OT19FUlJPUiwK
KyAgICAgICJkcmF3aW5nIHVzaW5nIGF0dHJpYiAzIHdpdGggNjAwMDAgdmVydHMiKTsKK30KKwor
d3R1LmNoZWNrQ2FudmFzKGdsLCBbMCwgMCwgMCwgMF0sICJjYW52YXMgc2hvdWxkIGJlIDAsIDAs
IDAsIDAiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0PgorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>
<flag name="review"
          id="72859"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>