<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>54</bug_id>
          
          <creation_ts>2003-11-25 04:21:37 +0100</creation_ts>
          <short_desc>No GL listener callbacks when setting render thread before window is visible</short_desc>
          <delta_ts>2010-03-24 07:46:07 +0100</delta_ts>
          <reporter_accessible>0</reporter_accessible>
          <cclist_accessible>0</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Jogl</product>
          <component>core</component>
          <version>1</version>
          <rep_platform>All</rep_platform>
          <op_sys>windows</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sven Gothel">sgothel</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          
          
          <cf_type>DEFECT</cf_type>
          <cf_scm_refs></cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>70</commentid>
    <comment_count>0</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2010-03-24 07:46:07 +0100</bug_when>
    <thetext>


---- Reported by mithrandir 2003-11-25 16:21:37 ----

When creating a managed render thread, using
setRenderingThread()/setNoAutoRedrawMode() if the window is not visible
initially, then GLEventListener callbacks are not called. For example:

class Myframe extends Frame implements Runnable {
  MyFrame() {
        GLDrawableFactory fac = GLDrawableFactory.getFactory();
        canvas = fac.createGLCanvas(caps);
        canvas.addGLEventListener(this);

        add(canvas);

         // setVisible(true) here will have callbacks work correctly
        Thread th = new Thread(this);
         th.start();

        setVisible(true);
  }

   public void run() {
        canvas.setRenderingThread(Thread.currentThread());
        canvas.setNoAutoRedrawMode(true);

        while(some_condition)
          canvas.display(); 

  }
}

In this code, the following exception is generated (includes a few lines of our
internal test program):

net.java.games.jogl.GLException: Surface already unlocked
        at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.unlockSurfa
ce(WindowsOnscreenGLContext.java:192)
        at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.free(Window
sOnscreenGLContext.java:134)
        at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:203)
        at net.java.games.jogl.GLCanvas.displayImpl(GLCanvas.java:182)
        at net.java.games.jogl.GLCanvas.display(GLCanvas.java:82)
        at org.j3d.aviatrix3d.surface.SimpleAWTSurface.run(SimpleAWTSurface.java
:349)
        at java.lang.Thread.run(Thread.java:534)

After this point, no further events are generated to the listeners. 

By uncommenting the first setVisible() call and commenting out the later,
repainting and event generation occurs as expected.



---- Additional Comments From kbr 2005-01-26 13:06:34 ----

This problem is still reproducible with the latest JOGL (1.1 b07). It appears to
be due to a race condition in the GLContext implementation. Running it under the
debugger succeeds. I&apos;ll attach a complete test case.




---- Additional Comments From kbr 2005-01-26 13:08:21 ----

Created an attachment
Complete test case




---- Additional Comments From kbr 2005-01-27 18:57:21 ----

The issue (or a related one) is still present in the current JOGL
build, although the symptom was different: a deadlock upon startup of
the application. When the OpenGL context is created in the
WindowsOnscreenGLContext implementation, it causes
Component.getGraphicsConfiguration() to be called, which causes the
AWT tree lock to be grabbed. Under some circumstances, another thread
can already hold the AWT tree lock and call GLContext.invokeGL(),
which leads to a classic deadlock. Resolved this by eagerly grabbing
the tree lock under some circumstances (not all the time) before
entering the synchronized invokeGL in (only) the Windows onscreen
context implementation.

Note that the first test case attached above hangs or crashes the JVM upon exit,
apparently because the OpenGL context is active while the process is being taken
down. This has been seen in other applications as well. To the best of my
knowledge it is not due to a lack of synchronization in JOGL, but probably due
to a driver bug when the process is torn down while asynchronous OpenGL
rendering is being performed. To work around this problem a modification to the
application is required to cooperatively shut down the animation thrad, as is
done in JOGL&apos;s Animator class and in the JOGL demos. A revised copy of the test
case which works has been posted above.




---- Additional Comments From kbr 2005-01-27 18:58:06 ----

Created an attachment
Revised test case which works correctly




--- Bug imported by sgothel@jausoft.com 2010-03-24 07:46 EDT  ---

This bug was previously known as _bug_ 54 at https://jogl.dev.java.net/bugs/show_bug.cgi?id=54
Imported an attachment (id=14)
Imported an attachment (id=15)

The original submitter of attachment 14 is unknown.
   Reassigning to the person who moved it here: sgothel@jausoft.com.
The original submitter of attachment 15 is unknown.
   Reassigning to the person who moved it here: sgothel@jausoft.com.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14</attachid>
            <date>2005-01-26 13:08:00 +0100</date>
            <delta_ts>2005-01-26 13:08:00 +0100</delta_ts>
            <desc>Complete test case</desc>
            <filename>MyFrame.java</filename>
            <type>text/plain</type>
            <size>12030</size>
            <attacher name="Sven Gothel">sgothel</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCg0KaW1wb3J0IG5l
dC5qYXZhLmdhbWVzLmpvZ2wuKjsNCg0KY2xhc3MgTXlGcmFtZSBleHRlbmRzIEZyYW1lIGltcGxl
bWVudHMgUnVubmFibGUgew0KICBHTENhbnZhcyBjYW52YXM7DQoNCiAgcHVibGljIHN0YXRpYyB2
b2lkIG1haW4oU3RyaW5nW10gYXJncykgew0KICAgIG5ldyBNeUZyYW1lKCk7DQogIH0NCg0KICBN
eUZyYW1lKCkgew0KICAgICAgICBHTERyYXdhYmxlRmFjdG9yeSBmYWMgPSBHTERyYXdhYmxlRmFj
dG9yeS5nZXRGYWN0b3J5KCk7DQogICAgICAgIGNhbnZhcyA9IGZhYy5jcmVhdGVHTENhbnZhcyhu
ZXcgR0xDYXBhYmlsaXRpZXMoKSk7DQogICAgICAgIGNhbnZhcy5hZGRHTEV2ZW50TGlzdGVuZXIo
bmV3IEdlYXJSZW5kZXJlcigpKTsNCg0KICAgICAgICBhZGQoY2FudmFzKTsNCg0KICAgICAgICAv
LyBzZXRWaXNpYmxlKHRydWUpIGhlcmUgd2lsbCBoYXZlIGNhbGxiYWNrcyB3b3JrIGNvcnJlY3Rs
eQ0KICAgICAgICAvLyBzZXRTaXplKDI1NiwgMjU2KTsNCiAgICAgICAgLy8gc2V0VmlzaWJsZSh0
cnVlKTsNCiAgICAgICAgVGhyZWFkIHRoID0gbmV3IFRocmVhZCh0aGlzKTsNCiAgICAgICAgdGgu
c3RhcnQoKTsNCg0KICAgICAgICBzZXRTaXplKDI1NiwgMjU2KTsNCiAgICAgICAgc2V0VmlzaWJs
ZSh0cnVlKTsNCiAgfQ0KDQogICBwdWJsaWMgdm9pZCBydW4oKSB7DQogICAgIGNhbnZhcy5zZXRS
ZW5kZXJpbmdUaHJlYWQoVGhyZWFkLmN1cnJlbnRUaHJlYWQoKSk7DQogICAgIGNhbnZhcy5zZXRO
b0F1dG9SZWRyYXdNb2RlKHRydWUpOw0KDQogICAgICAgIHdoaWxlKHRydWUpIHsNCiAgICAgICAg
ICBTeXN0ZW0ub3V0LnByaW50bG4oInRpY2siKTsNCiAgICAgICAgICBjYW52YXMuZGlzcGxheSgp
OyANCiAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDEwKTsNCiAgICAg
ICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7DQogICAgICAgICAgfQ0KICAg
ICAgICB9DQogIH0NCg0KICBzdGF0aWMgY2xhc3MgR2VhclJlbmRlcmVyIGltcGxlbWVudHMgR0xF
dmVudExpc3RlbmVyLCBNb3VzZUxpc3RlbmVyLCBNb3VzZU1vdGlvbkxpc3RlbmVyIHsNCiAgICBw
cml2YXRlIGZsb2F0IHZpZXdfcm90eCA9IDIwLjBmLCB2aWV3X3JvdHkgPSAzMC4wZiwgdmlld19y
b3R6ID0gMC4wZjsNCiAgICBwcml2YXRlIGludCBnZWFyMSwgZ2VhcjIsIGdlYXIzOw0KICAgIHBy
aXZhdGUgZmxvYXQgYW5nbGUgPSAwLjBmOw0KDQogICAgcHJpdmF0ZSBpbnQgcHJldk1vdXNlWCwg
cHJldk1vdXNlWTsNCiAgICBwcml2YXRlIGJvb2xlYW4gbW91c2VSQnV0dG9uRG93biA9IGZhbHNl
Ow0KDQogICAgcHJpdmF0ZSBHTCBnbDsNCiAgICBwcml2YXRlIEdMRHJhd2FibGUgZ2xkcmF3YWJs
ZTsNCg0KICAgIHB1YmxpYyB2b2lkIGluaXQoR0xEcmF3YWJsZSBkcmF3YWJsZSkgew0KICAgICAg
U3lzdGVtLm91dC5wcmludGxuKCJpbml0Iik7DQogICAgICBnbCA9IGRyYXdhYmxlLmdldEdMKCk7
DQogICAgICB0aGlzLmdsZHJhd2FibGUgPSBkcmF3YWJsZTsNCiAgICAgIFN5c3RlbS5lcnIucHJp
bnRsbigiSU5JVCBHTCBJUzogIiArIGdsLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsNCg0KICAgICAg
ZmxvYXQgcG9zW10gPSB7IDUuMGYsIDUuMGYsIDEwLjBmLCAwLjBmIH07DQogICAgICBmbG9hdCBy
ZWRbXSA9IHsgMC44ZiwgMC4xZiwgMC4wZiwgMS4wZiB9Ow0KICAgICAgZmxvYXQgZ3JlZW5bXSA9
IHsgMC4wZiwgMC44ZiwgMC4yZiwgMS4wZiB9Ow0KICAgICAgZmxvYXQgYmx1ZVtdID0geyAwLjJm
LCAwLjJmLCAxLjBmLCAxLjBmIH07DQoNCiAgICAgIGdsLmdsTGlnaHRmdihHTC5HTF9MSUdIVDAs
IEdMLkdMX1BPU0lUSU9OLCBwb3MpOw0KICAgICAgZ2wuZ2xFbmFibGUoR0wuR0xfQ1VMTF9GQUNF
KTsNCiAgICAgIGdsLmdsRW5hYmxlKEdMLkdMX0xJR0hUSU5HKTsNCiAgICAgIGdsLmdsRW5hYmxl
KEdMLkdMX0xJR0hUMCk7DQogICAgICBnbC5nbEVuYWJsZShHTC5HTF9ERVBUSF9URVNUKTsNCiAg
ICAgICAgICAgIA0KICAgICAgLyogbWFrZSB0aGUgZ2VhcnMgKi8NCiAgICAgIGdlYXIxID0gZ2wu
Z2xHZW5MaXN0cygxKTsNCiAgICAgIGdsLmdsTmV3TGlzdChnZWFyMSwgR0wuR0xfQ09NUElMRSk7
DQogICAgICBnbC5nbE1hdGVyaWFsZnYoR0wuR0xfRlJPTlQsIEdMLkdMX0FNQklFTlRfQU5EX0RJ
RkZVU0UsIHJlZCk7DQogICAgICBnZWFyKDEuMGYsIDQuMGYsIDEuMGYsIDIwLCAwLjdmKTsNCiAg
ICAgIGdsLmdsRW5kTGlzdCgpOw0KICAgICAgICAgICAgDQogICAgICBnZWFyMiA9IGdsLmdsR2Vu
TGlzdHMoMSk7DQogICAgICBnbC5nbE5ld0xpc3QoZ2VhcjIsIEdMLkdMX0NPTVBJTEUpOw0KICAg
ICAgZ2wuZ2xNYXRlcmlhbGZ2KEdMLkdMX0ZST05ULCBHTC5HTF9BTUJJRU5UX0FORF9ESUZGVVNF
LCBncmVlbik7DQogICAgICBnZWFyKDAuNWYsIDIuMGYsIDIuMGYsIDEwLCAwLjdmKTsNCiAgICAg
IGdsLmdsRW5kTGlzdCgpOw0KICAgICAgICAgICAgDQogICAgICBnZWFyMyA9IGdsLmdsR2VuTGlz
dHMoMSk7DQogICAgICBnbC5nbE5ld0xpc3QoZ2VhcjMsIEdMLkdMX0NPTVBJTEUpOw0KICAgICAg
Z2wuZ2xNYXRlcmlhbGZ2KEdMLkdMX0ZST05ULCBHTC5HTF9BTUJJRU5UX0FORF9ESUZGVVNFLCBi
bHVlKTsNCiAgICAgIGdlYXIoMS4zZiwgMi4wZiwgMC41ZiwgMTAsIDAuN2YpOw0KICAgICAgZ2wu
Z2xFbmRMaXN0KCk7DQogICAgICAgICAgICANCiAgICAgIGdsLmdsRW5hYmxlKEdMLkdMX05PUk1B
TElaRSk7DQogICAgICAgICAgICAgICAgDQogICAgICBkcmF3YWJsZS5hZGRNb3VzZUxpc3RlbmVy
KHRoaXMpOw0KICAgICAgZHJhd2FibGUuYWRkTW91c2VNb3Rpb25MaXN0ZW5lcih0aGlzKTsNCiAg
ICB9DQogICAgDQogICAgcHVibGljIHZvaWQgcmVzaGFwZShHTERyYXdhYmxlIGRyYXdhYmxlLCBp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgew0KICAgICAgU3lzdGVtLm91dC5w
cmludGxuKCJyZXNoYXBlIik7DQogICAgICBmbG9hdCBoID0gKGZsb2F0KWhlaWdodCAvIChmbG9h
dCl3aWR0aDsNCiAgICAgICAgICAgIA0KICAgICAgZ2wuZ2xNYXRyaXhNb2RlKEdMLkdMX1BST0pF
Q1RJT04pOw0KDQogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkdMX1ZFTkRPUjogIiArIGdsLmds
R2V0U3RyaW5nKEdMLkdMX1ZFTkRPUikpOw0KICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJHTF9S
RU5ERVJFUjogIiArIGdsLmdsR2V0U3RyaW5nKEdMLkdMX1JFTkRFUkVSKSk7DQogICAgICBTeXN0
ZW0uZXJyLnByaW50bG4oIkdMX1ZFUlNJT046ICIgKyBnbC5nbEdldFN0cmluZyhHTC5HTF9WRVJT
SU9OKSk7DQogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oKTsNCiAgICAgIFN5c3RlbS5lcnIucHJp
bnRsbigiZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZkFSQigpIHN1cHBvcnRlZDogIiArDQogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2wuaXNGdW5jdGlvbkF2YWlsYWJsZSgiZ2xMb2FkVHJhbnNwb3Nl
TWF0cml4ZkFSQiIpKTsNCiAgICAgIGlmICghZ2wuaXNGdW5jdGlvbkF2YWlsYWJsZSgiZ2xMb2Fk
VHJhbnNwb3NlTWF0cml4ZkFSQiIpKSB7DQogICAgICAgIC8vIC0tLSBub3QgdXNpbmcgZXh0ZW5z
aW9ucw0KICAgICAgICBnbC5nbExvYWRJZGVudGl0eSgpOw0KICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgLy8gLS0tIHVzaW5nIGV4dGVuc2lvbnMNCiAgICAgICAgZmluYWwgZmxvYXRbXSBpZGVudGl0
eVRyYW5zcG9zZSA9IG5ldyBmbG9hdFtdIHsNCiAgICAgICAgICAxLCAwLCAwLCAwLA0KICAgICAg
ICAgIDAsIDEsIDAsIDAsDQogICAgICAgICAgMCwgMCwgMSwgMCwNCiAgICAgICAgICAwLCAwLCAw
LCAxDQogICAgICAgIH07DQogICAgICAgIGdsLmdsTG9hZFRyYW5zcG9zZU1hdHJpeGZBUkIoaWRl
bnRpdHlUcmFuc3Bvc2UpOw0KICAgICAgfQ0KICAgICAgZ2wuZ2xGcnVzdHVtKC0xLjBmLCAxLjBm
LCAtaCwgaCwgNS4wZiwgNjAuMGYpOw0KICAgICAgZ2wuZ2xNYXRyaXhNb2RlKEdMLkdMX01PREVM
VklFVyk7DQogICAgICBnbC5nbExvYWRJZGVudGl0eSgpOw0KICAgICAgZ2wuZ2xUcmFuc2xhdGVm
KDAuMGYsIDAuMGYsIC00MC4wZik7DQogICAgfQ0KDQogICAgcHVibGljIHZvaWQgZGlzcGxheShH
TERyYXdhYmxlIGRyYXdhYmxlKSB7DQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImRpc3BsYXki
KTsNCiAgICAgIGFuZ2xlICs9IDIuMGY7DQoNCiAgICAgIGdsLmdsQ2xlYXIoR0wuR0xfQ09MT1Jf
QlVGRkVSX0JJVCB8IEdMLkdMX0RFUFRIX0JVRkZFUl9CSVQpOw0KICAgICAgICAgICAgDQogICAg
ICBnbC5nbFB1c2hNYXRyaXgoKTsNCiAgICAgIGdsLmdsUm90YXRlZih2aWV3X3JvdHgsIDEuMGYs
IDAuMGYsIDAuMGYpOw0KICAgICAgZ2wuZ2xSb3RhdGVmKHZpZXdfcm90eSwgMC4wZiwgMS4wZiwg
MC4wZik7DQogICAgICBnbC5nbFJvdGF0ZWYodmlld19yb3R6LCAwLjBmLCAwLjBmLCAxLjBmKTsN
CiAgICAgICAgICAgIA0KICAgICAgZ2wuZ2xQdXNoTWF0cml4KCk7DQogICAgICBnbC5nbFRyYW5z
bGF0ZWYoLTMuMGYsIC0yLjBmLCAwLjBmKTsNCiAgICAgIGdsLmdsUm90YXRlZihhbmdsZSwgMC4w
ZiwgMC4wZiwgMS4wZik7DQogICAgICBnbC5nbENhbGxMaXN0KGdlYXIxKTsNCiAgICAgIGdsLmds
UG9wTWF0cml4KCk7DQogICAgICAgICAgICANCiAgICAgIGdsLmdsUHVzaE1hdHJpeCgpOw0KICAg
ICAgZ2wuZ2xUcmFuc2xhdGVmKDMuMWYsIC0yLjBmLCAwLjBmKTsNCiAgICAgIGdsLmdsUm90YXRl
ZigtMi4wZiAqIGFuZ2xlIC0gOS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7DQogICAgICBnbC5nbENh
bGxMaXN0KGdlYXIyKTsNCiAgICAgIGdsLmdsUG9wTWF0cml4KCk7DQogICAgICAgICAgICANCiAg
ICAgIGdsLmdsUHVzaE1hdHJpeCgpOw0KICAgICAgZ2wuZ2xUcmFuc2xhdGVmKC0zLjFmLCA0LjJm
LCAwLjBmKTsNCiAgICAgIGdsLmdsUm90YXRlZigtMi4wZiAqIGFuZ2xlIC0gMjUuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOw0KICAgICAgZ2wuZ2xDYWxsTGlzdChnZWFyMyk7DQogICAgICBnbC5nbFBv
cE1hdHJpeCgpOw0KICAgICAgICAgICAgDQogICAgICBnbC5nbFBvcE1hdHJpeCgpOw0KICAgIH0N
Cg0KICAgIHB1YmxpYyB2b2lkIGRpc3BsYXlDaGFuZ2VkKEdMRHJhd2FibGUgZHJhd2FibGUsIGJv
b2xlYW4gbW9kZUNoYW5nZWQsIGJvb2xlYW4gZGV2aWNlQ2hhbmdlZCkge30NCg0KICAgIHByaXZh
dGUgdm9pZCBnZWFyKGZsb2F0IGlubmVyX3JhZGl1cywNCiAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBvdXRlcl9yYWRpdXMsDQogICAgICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsDQog
ICAgICAgICAgICAgICAgICAgICAgaW50IHRlZXRoLA0KICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHRvb3RoX2RlcHRoKQ0KICAgIHsNCiAgICAgIGludCBpOw0KICAgICAgZmxvYXQgcjAsIHIx
LCByMjsNCiAgICAgIGZsb2F0IGFuZ2xlLCBkYTsNCiAgICAgIGZsb2F0IHUsIHYsIGxlbjsNCg0K
ICAgICAgcjAgPSBpbm5lcl9yYWRpdXM7DQogICAgICByMSA9IG91dGVyX3JhZGl1cyAtIHRvb3Ro
X2RlcHRoIC8gMi4wZjsNCiAgICAgIHIyID0gb3V0ZXJfcmFkaXVzICsgdG9vdGhfZGVwdGggLyAy
LjBmOw0KICAgICAgICAgICAgDQogICAgICBkYSA9IDIuMGYgKiAoZmxvYXQpIE1hdGguUEkgLyB0
ZWV0aCAvIDQuMGY7DQogICAgICAgICAgICANCiAgICAgIGdsLmdsU2hhZGVNb2RlbChHTC5HTF9G
TEFUKTsNCg0KICAgICAgZ2wuZ2xOb3JtYWwzZigwLjBmLCAwLjBmLCAxLjBmKTsNCg0KICAgICAg
LyogZHJhdyBmcm9udCBmYWNlICovDQogICAgICBnbC5nbEJlZ2luKEdMLkdMX1FVQURfU1RSSVAp
Ow0KICAgICAgZm9yIChpID0gMDsgaSA8PSB0ZWV0aDsgaSsrKQ0KICAgICAgICB7DQogICAgICAg
ICAgYW5nbGUgPSBpICogMi4wZiAqIChmbG9hdCkgTWF0aC5QSSAvIHRlZXRoOw0KICAgICAgICAg
IGdsLmdsVmVydGV4M2YocjAgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUpLCByMCAqIChmbG9hdClN
YXRoLnNpbihhbmdsZSksIHdpZHRoICogMC41Zik7DQogICAgICAgICAgZ2wuZ2xWZXJ0ZXgzZihy
MSAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSksIHIxICogKGZsb2F0KU1hdGguc2luKGFuZ2xlKSwg
d2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBpZihpIDwgdGVldGgpDQogICAgICAgICAgICB7DQog
ICAgICAgICAgICAgIGdsLmdsVmVydGV4M2YocjAgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUpLCBy
MCAqIChmbG9hdClNYXRoLnNpbihhbmdsZSksIHdpZHRoICogMC41Zik7DQogICAgICAgICAgICAg
IGdsLmdsVmVydGV4M2YocjEgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAzLjBmICogZGEpLCBy
MSAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIDMuMGYgKiBkYSksIHdpZHRoICogMC41Zik7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGdsLmdsRW5kKCk7DQoNCiAgICAgIC8qIGRy
YXcgZnJvbnQgc2lkZXMgb2YgdGVldGggKi8NCiAgICAgIGdsLmdsQmVnaW4oR0wuR0xfUVVBRFMp
Ow0KICAgICAgZm9yIChpID0gMDsgaSA8IHRlZXRoOyBpKyspDQogICAgICAgIHsNCiAgICAgICAg
ICBhbmdsZSA9IGkgKiAyLjBmICogKGZsb2F0KSBNYXRoLlBJIC8gdGVldGg7DQogICAgICAgICAg
Z2wuZ2xWZXJ0ZXgzZihyMSAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSksIHIxICogKGZsb2F0KU1h
dGguc2luKGFuZ2xlKSwgd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIy
ICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmds
ZSArIGRhKSwgd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZs
b2F0KU1hdGguY29zKGFuZ2xlICsgMi4wZiAqIGRhKSwgcjIgKiAoZmxvYXQpTWF0aC5zaW4oYW5n
bGUgKyAyLjBmICogZGEpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVydGV4M2Yo
cjEgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAzLjBmICogZGEpLCByMSAqIChmbG9hdClNYXRo
LnNpbihhbmdsZSArIDMuMGYgKiBkYSksIHdpZHRoICogMC41Zik7DQogICAgICAgIH0NCiAgICAg
IGdsLmdsRW5kKCk7DQogICAgDQogICAgICAvKiBkcmF3IGJhY2sgZmFjZSAqLw0KICAgICAgZ2wu
Z2xCZWdpbihHTC5HTF9RVUFEX1NUUklQKTsNCiAgICAgIGZvciAoaSA9IDA7IGkgPD0gdGVldGg7
IGkrKykNCiAgICAgICAgew0KICAgICAgICAgIGFuZ2xlID0gaSAqIDIuMGYgKiAoZmxvYXQpIE1h
dGguUEkgLyB0ZWV0aDsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIxICogKGZsb2F0KU1hdGgu
Y29zKGFuZ2xlKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsN
CiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjAg
KiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5n
bFZlcnRleDNmKHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgMyAqIGRhKSwgcjEgKiAoZmxv
YXQpTWF0aC5zaW4oYW5nbGUgKyAzICogZGEpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBn
bC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjAgKiAoZmxvYXQpTWF0
aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgfQ0KICAgICAgZ2wuZ2xFbmQo
KTsNCiAgICANCiAgICAgIC8qIGRyYXcgYmFjayBzaWRlcyBvZiB0ZWV0aCAqLw0KICAgICAgZ2wu
Z2xCZWdpbihHTC5HTF9RVUFEUyk7DQogICAgICBmb3IgKGkgPSAwOyBpIDwgdGVldGg7IGkrKykN
CiAgICAgICAgew0KICAgICAgICAgIGFuZ2xlID0gaSAqIDIuMGYgKiAoZmxvYXQpIE1hdGguUEkg
LyB0ZWV0aDsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIxICogKGZsb2F0KU1hdGguY29zKGFu
Z2xlICsgMyAqIGRhKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUgKyAzICogZGEpLCAtd2lk
dGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZsb2F0KU1hdGguY29z
KGFuZ2xlICsgMiAqIGRhKSwgcjIgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUgKyAyICogZGEpLCAt
d2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZsb2F0KU1hdGgu
Y29zKGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIGRhKSwgLXdpZHRo
ICogMC41Zik7DQogICAgICAgICAgZ2wuZ2xWZXJ0ZXgzZihyMSAqIChmbG9hdClNYXRoLmNvcyhh
bmdsZSksIHIxICogKGZsb2F0KU1hdGguc2luKGFuZ2xlKSwgLXdpZHRoICogMC41Zik7DQogICAg
ICAgIH0NCiAgICAgIGdsLmdsRW5kKCk7DQogICAgDQogICAgICAvKiBkcmF3IG91dHdhcmQgZmFj
ZXMgb2YgdGVldGggKi8NCiAgICAgIGdsLmdsQmVnaW4oR0wuR0xfUVVBRF9TVFJJUCk7DQogICAg
ICBmb3IgKGkgPSAwOyBpIDwgdGVldGg7IGkrKykNCiAgICAgICAgew0KICAgICAgICAgIGFuZ2xl
ID0gaSAqIDIuMGYgKiAoZmxvYXQpIE1hdGguUEkgLyB0ZWV0aDsNCiAgICAgICAgICBnbC5nbFZl
cnRleDNmKHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4o
YW5nbGUpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVydGV4M2YocjEgKiAoZmxv
YXQpTWF0aC5jb3MoYW5nbGUpLCByMSAqIChmbG9hdClNYXRoLnNpbihhbmdsZSksIC13aWR0aCAq
IDAuNWYpOw0KICAgICAgICAgIHUgPSByMiAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSArIGRhKSAt
IHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKTsNCiAgICAgICAgICB2ID0gcjIgKiAoZmxvYXQp
TWF0aC5zaW4oYW5nbGUgKyBkYSkgLSByMSAqIChmbG9hdClNYXRoLnNpbihhbmdsZSk7DQogICAg
ICAgICAgbGVuID0gKGZsb2F0KU1hdGguc3FydCh1ICogdSArIHYgKiB2KTsNCiAgICAgICAgICB1
IC89IGxlbjsNCiAgICAgICAgICB2IC89IGxlbjsNCiAgICAgICAgICBnbC5nbE5vcm1hbDNmKHYs
IC11LCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZsb2F0KU1hdGguY29z
KGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIGRhKSwgd2lkdGggKiAw
LjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZsb2F0KU1hdGguY29zKGFuZ2xl
ICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIGRhKSwgLXdpZHRoICogMC41Zik7
DQogICAgICAgICAgZ2wuZ2xOb3JtYWwzZigoZmxvYXQpTWF0aC5jb3MoYW5nbGUpLCAoZmxvYXQp
TWF0aC5zaW4oYW5nbGUpLCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZs
b2F0KU1hdGguY29zKGFuZ2xlICsgMiAqIGRhKSwgcjIgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUg
KyAyICogZGEpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVydGV4M2YocjIgKiAo
ZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAyICogZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmds
ZSArIDIgKiBkYSksIC13aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIHUgPSByMSAqIChmbG9hdClN
YXRoLmNvcyhhbmdsZSArIDMgKiBkYSkgLSByMiAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSArIDIg
KiBkYSk7DQogICAgICAgICAgdiA9IHIxICogKGZsb2F0KU1hdGguc2luKGFuZ2xlICsgMyAqIGRh
KSAtIHIyICogKGZsb2F0KU1hdGguc2luKGFuZ2xlICsgMiAqIGRhKTsNCiAgICAgICAgICBnbC5n
bE5vcm1hbDNmKHYsIC11LCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIxICogKGZs
b2F0KU1hdGguY29zKGFuZ2xlICsgMyAqIGRhKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUg
KyAzICogZGEpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVydGV4M2YocjEgKiAo
ZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAzICogZGEpLCByMSAqIChmbG9hdClNYXRoLnNpbihhbmds
ZSArIDMgKiBkYSksIC13aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsTm9ybWFsM2YoKGZs
b2F0KU1hdGguY29zKGFuZ2xlKSwgKGZsb2F0KU1hdGguc2luKGFuZ2xlKSwgMC4wZik7DQogICAg
ICAgIH0NCiAgICAgIGdsLmdsVmVydGV4M2YocjEgKiAoZmxvYXQpTWF0aC5jb3MoMCksIHIxICog
KGZsb2F0KU1hdGguc2luKDApLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgZ2wuZ2xWZXJ0ZXgzZihy
MSAqIChmbG9hdClNYXRoLmNvcygwKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oMCksIC13aWR0aCAq
IDAuNWYpOw0KICAgICAgZ2wuZ2xFbmQoKTsNCiAgICANCiAgICAgIGdsLmdsU2hhZGVNb2RlbChH
TC5HTF9TTU9PVEgpOw0KICAgIA0KICAgICAgLyogZHJhdyBpbnNpZGUgcmFkaXVzIGN5bGluZGVy
ICovDQogICAgICBnbC5nbEJlZ2luKEdMLkdMX1FVQURfU1RSSVApOw0KICAgICAgZm9yIChpID0g
MDsgaSA8PSB0ZWV0aDsgaSsrKQ0KICAgICAgICB7DQogICAgICAgICAgYW5nbGUgPSBpICogMi4w
ZiAqIChmbG9hdCkgTWF0aC5QSSAvIHRlZXRoOw0KICAgICAgICAgIGdsLmdsTm9ybWFsM2YoLShm
bG9hdClNYXRoLmNvcyhhbmdsZSksIC0oZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAwLjBmKTsNCiAg
ICAgICAgICBnbC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjAgKiAo
ZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZl
cnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjAgKiAoZmxvYXQpTWF0aC5zaW4o
YW5nbGUpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICB9DQogICAgICBnbC5nbEVuZCgpOw0KICAg
IH0NCg0KICAgIC8vIE1ldGhvZHMgcmVxdWlyZWQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBN
b3VzZUxpc3RlbmVyDQogICAgcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkg
e30NCiAgICBwdWJsaWMgdm9pZCBtb3VzZUV4aXRlZChNb3VzZUV2ZW50IGUpIHt9DQoNCiAgICBw
dWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7DQogICAgICBwcmV2TW91c2VY
ID0gZS5nZXRYKCk7DQogICAgICBwcmV2TW91c2VZID0gZS5nZXRZKCk7DQogICAgICBpZiAoKGUu
Z2V0TW9kaWZpZXJzKCkgJiBlLkJVVFRPTjNfTUFTSykgIT0gMCkgew0KICAgICAgICBtb3VzZVJC
dXR0b25Eb3duID0gdHJ1ZTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgcHVibGljIHZvaWQg
bW91c2VSZWxlYXNlZChNb3VzZUV2ZW50IGUpIHsNCiAgICAgIGlmICgoZS5nZXRNb2RpZmllcnMo
KSAmIGUuQlVUVE9OM19NQVNLKSAhPSAwKSB7DQogICAgICAgIG1vdXNlUkJ1dHRvbkRvd24gPSBm
YWxzZTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgcHVibGljIHZvaWQgbW91c2VDbGlja2Vk
KE1vdXNlRXZlbnQgZSkge30NCiAgICANCiAgICAvLyBNZXRob2RzIHJlcXVpcmVkIGZvciB0aGUg
aW1wbGVtZW50YXRpb24gb2YgTW91c2VNb3Rpb25MaXN0ZW5lcg0KICAgIHB1YmxpYyB2b2lkIG1v
dXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsNCiAgICAgIGludCB4ID0gZS5nZXRYKCk7DQogICAg
ICBpbnQgeSA9IGUuZ2V0WSgpOw0KICAgICAgRGltZW5zaW9uIHNpemUgPSBlLmdldENvbXBvbmVu
dCgpLmdldFNpemUoKTsNCg0KICAgICAgZmxvYXQgdGhldGFZID0gMzYwLjBmICogKCAoZmxvYXQp
KHgtcHJldk1vdXNlWCkvKGZsb2F0KXNpemUud2lkdGgpOw0KICAgICAgZmxvYXQgdGhldGFYID0g
MzYwLjBmICogKCAoZmxvYXQpKHByZXZNb3VzZVkteSkvKGZsb2F0KXNpemUuaGVpZ2h0KTsNCiAg
ICANCiAgICAgIHByZXZNb3VzZVggPSB4Ow0KICAgICAgcHJldk1vdXNlWSA9IHk7DQoNCiAgICAg
IHZpZXdfcm90eCArPSB0aGV0YVg7DQogICAgICB2aWV3X3JvdHkgKz0gdGhldGFZOw0KICAgIH0N
CiAgICANCiAgICBwdWJsaWMgdm9pZCBtb3VzZU1vdmVkKE1vdXNlRXZlbnQgZSkge30NCiAgfQ0K
fQ0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15</attachid>
            <date>2005-01-27 18:58:00 +0100</date>
            <delta_ts>2005-01-27 18:58:00 +0100</delta_ts>
            <desc>Revised test case which works correctly</desc>
            <filename>MyFrame.java</filename>
            <type>text/plain</type>
            <size>12555</size>
            <attacher name="Sven Gothel">sgothel</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCg0KaW1wb3J0IG5l
dC5qYXZhLmdhbWVzLmpvZ2wuKjsNCg0KY2xhc3MgTXlGcmFtZSBleHRlbmRzIEZyYW1lIGltcGxl
bWVudHMgUnVubmFibGUgew0KICBHTENhbnZhcyBjYW52YXM7DQoNCiAgcHJpdmF0ZSB2b2xhdGls
ZSBib29sZWFuIHNob3VsZFN0b3A7DQogIHByaXZhdGUgdm9sYXRpbGUgYm9vbGVhbiBzdG9wcGVk
Ow0KDQogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCiAgICBuZXcg
TXlGcmFtZSgpOw0KICB9DQoNCiAgTXlGcmFtZSgpIHsNCiAgICAgICAgR0xEcmF3YWJsZUZhY3Rv
cnkgZmFjID0gR0xEcmF3YWJsZUZhY3RvcnkuZ2V0RmFjdG9yeSgpOw0KICAgICAgICBjYW52YXMg
PSBmYWMuY3JlYXRlR0xDYW52YXMobmV3IEdMQ2FwYWJpbGl0aWVzKCkpOw0KICAgICAgICBjYW52
YXMuYWRkR0xFdmVudExpc3RlbmVyKG5ldyBHZWFyUmVuZGVyZXIoKSk7DQoNCiAgICAgICAgYWRk
KGNhbnZhcyk7DQoNCiAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIo
KSB7DQogICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUp
IHsNCiAgICAgICAgICAgICAgbmV3IFRocmVhZChuZXcgUnVubmFibGUoKSB7DQogICAgICAgICAg
ICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7DQogICAgICAgICAgICAgICAgICAgIHNob3VsZFN0
b3AgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIXN0b3BwZWQpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkLnNs
ZWVwKDEwKTsNCiAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2Vw
dGlvbiBlKSB7DQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOw0KICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIH0pLnN0YXJ0KCk7DQogICAgICAgICAgICB9DQogICAgICAgICAg
fSk7DQoNCiAgICAgICAgLy8gc2V0VmlzaWJsZSh0cnVlKSBoZXJlIHdpbGwgaGF2ZSBjYWxsYmFj
a3Mgd29yayBjb3JyZWN0bHkNCiAgICAgICAgLy8gc2V0U2l6ZSgyNTYsIDI1Nik7DQogICAgICAg
IC8vIHNldFZpc2libGUodHJ1ZSk7DQogICAgICAgIFRocmVhZCB0aCA9IG5ldyBUaHJlYWQodGhp
cyk7DQogICAgICAgIHRoLnN0YXJ0KCk7DQoNCiAgICAgICAgc2V0U2l6ZSgyNTYsIDI1Nik7DQog
ICAgICAgIHNldFZpc2libGUodHJ1ZSk7DQogIH0NCg0KICAgcHVibGljIHZvaWQgcnVuKCkgew0K
ICAgICBjYW52YXMuc2V0UmVuZGVyaW5nVGhyZWFkKFRocmVhZC5jdXJyZW50VGhyZWFkKCkpOw0K
ICAgICBjYW52YXMuc2V0Tm9BdXRvUmVkcmF3TW9kZSh0cnVlKTsNCg0KICAgICAgICB3aGlsZSgh
c2hvdWxkU3RvcCkgew0KICAgICAgICAgIGNhbnZhcy5kaXNwbGF5KCk7IA0KICAgICAgICAgIHRy
eSB7DQogICAgICAgICAgICBUaHJlYWQuc2xlZXAoMTApOw0KICAgICAgICAgIH0gY2F0Y2ggKElu
dGVycnVwdGVkRXhjZXB0aW9uIGUpIHsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAg
c3RvcHBlZCA9IHRydWU7DQogIH0NCg0KICBzdGF0aWMgY2xhc3MgR2VhclJlbmRlcmVyIGltcGxl
bWVudHMgR0xFdmVudExpc3RlbmVyLCBNb3VzZUxpc3RlbmVyLCBNb3VzZU1vdGlvbkxpc3RlbmVy
IHsNCiAgICBwcml2YXRlIGZsb2F0IHZpZXdfcm90eCA9IDIwLjBmLCB2aWV3X3JvdHkgPSAzMC4w
Ziwgdmlld19yb3R6ID0gMC4wZjsNCiAgICBwcml2YXRlIGludCBnZWFyMSwgZ2VhcjIsIGdlYXIz
Ow0KICAgIHByaXZhdGUgZmxvYXQgYW5nbGUgPSAwLjBmOw0KDQogICAgcHJpdmF0ZSBpbnQgcHJl
dk1vdXNlWCwgcHJldk1vdXNlWTsNCiAgICBwcml2YXRlIGJvb2xlYW4gbW91c2VSQnV0dG9uRG93
biA9IGZhbHNlOw0KDQogICAgcHJpdmF0ZSBHTCBnbDsNCiAgICBwcml2YXRlIEdMRHJhd2FibGUg
Z2xkcmF3YWJsZTsNCg0KICAgIHB1YmxpYyB2b2lkIGluaXQoR0xEcmF3YWJsZSBkcmF3YWJsZSkg
ew0KICAgICAgZ2wgPSBkcmF3YWJsZS5nZXRHTCgpOw0KICAgICAgdGhpcy5nbGRyYXdhYmxlID0g
ZHJhd2FibGU7DQogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIklOSVQgR0wgSVM6ICIgKyBnbC5n
ZXRDbGFzcygpLmdldE5hbWUoKSk7DQoNCiAgICAgIGZsb2F0IHBvc1tdID0geyA1LjBmLCA1LjBm
LCAxMC4wZiwgMC4wZiB9Ow0KICAgICAgZmxvYXQgcmVkW10gPSB7IDAuOGYsIDAuMWYsIDAuMGYs
IDEuMGYgfTsNCiAgICAgIGZsb2F0IGdyZWVuW10gPSB7IDAuMGYsIDAuOGYsIDAuMmYsIDEuMGYg
fTsNCiAgICAgIGZsb2F0IGJsdWVbXSA9IHsgMC4yZiwgMC4yZiwgMS4wZiwgMS4wZiB9Ow0KDQog
ICAgICBnbC5nbExpZ2h0ZnYoR0wuR0xfTElHSFQwLCBHTC5HTF9QT1NJVElPTiwgcG9zKTsNCiAg
ICAgIGdsLmdsRW5hYmxlKEdMLkdMX0NVTExfRkFDRSk7DQogICAgICBnbC5nbEVuYWJsZShHTC5H
TF9MSUdIVElORyk7DQogICAgICBnbC5nbEVuYWJsZShHTC5HTF9MSUdIVDApOw0KICAgICAgZ2wu
Z2xFbmFibGUoR0wuR0xfREVQVEhfVEVTVCk7DQogICAgICAgICAgICANCiAgICAgIC8qIG1ha2Ug
dGhlIGdlYXJzICovDQogICAgICBnZWFyMSA9IGdsLmdsR2VuTGlzdHMoMSk7DQogICAgICBnbC5n
bE5ld0xpc3QoZ2VhcjEsIEdMLkdMX0NPTVBJTEUpOw0KICAgICAgZ2wuZ2xNYXRlcmlhbGZ2KEdM
LkdMX0ZST05ULCBHTC5HTF9BTUJJRU5UX0FORF9ESUZGVVNFLCByZWQpOw0KICAgICAgZ2Vhcigx
LjBmLCA0LjBmLCAxLjBmLCAyMCwgMC43Zik7DQogICAgICBnbC5nbEVuZExpc3QoKTsNCiAgICAg
ICAgICAgIA0KICAgICAgZ2VhcjIgPSBnbC5nbEdlbkxpc3RzKDEpOw0KICAgICAgZ2wuZ2xOZXdM
aXN0KGdlYXIyLCBHTC5HTF9DT01QSUxFKTsNCiAgICAgIGdsLmdsTWF0ZXJpYWxmdihHTC5HTF9G
Uk9OVCwgR0wuR0xfQU1CSUVOVF9BTkRfRElGRlVTRSwgZ3JlZW4pOw0KICAgICAgZ2VhcigwLjVm
LCAyLjBmLCAyLjBmLCAxMCwgMC43Zik7DQogICAgICBnbC5nbEVuZExpc3QoKTsNCiAgICAgICAg
ICAgIA0KICAgICAgZ2VhcjMgPSBnbC5nbEdlbkxpc3RzKDEpOw0KICAgICAgZ2wuZ2xOZXdMaXN0
KGdlYXIzLCBHTC5HTF9DT01QSUxFKTsNCiAgICAgIGdsLmdsTWF0ZXJpYWxmdihHTC5HTF9GUk9O
VCwgR0wuR0xfQU1CSUVOVF9BTkRfRElGRlVTRSwgYmx1ZSk7DQogICAgICBnZWFyKDEuM2YsIDIu
MGYsIDAuNWYsIDEwLCAwLjdmKTsNCiAgICAgIGdsLmdsRW5kTGlzdCgpOw0KICAgICAgICAgICAg
DQogICAgICBnbC5nbEVuYWJsZShHTC5HTF9OT1JNQUxJWkUpOw0KICAgICAgICAgICAgICAgIA0K
ICAgICAgZHJhd2FibGUuYWRkTW91c2VMaXN0ZW5lcih0aGlzKTsNCiAgICAgIGRyYXdhYmxlLmFk
ZE1vdXNlTW90aW9uTGlzdGVuZXIodGhpcyk7DQogICAgfQ0KICAgIA0KICAgIHB1YmxpYyB2b2lk
IHJlc2hhcGUoR0xEcmF3YWJsZSBkcmF3YWJsZSwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpIHsNCiAgICAgIGZsb2F0IGggPSAoZmxvYXQpaGVpZ2h0IC8gKGZsb2F0KXdpZHRo
Ow0KICAgICAgICAgICAgDQogICAgICBnbC5nbE1hdHJpeE1vZGUoR0wuR0xfUFJPSkVDVElPTik7
DQoNCiAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiR0xfVkVORE9SOiAiICsgZ2wuZ2xHZXRTdHJp
bmcoR0wuR0xfVkVORE9SKSk7DQogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkdMX1JFTkRFUkVS
OiAiICsgZ2wuZ2xHZXRTdHJpbmcoR0wuR0xfUkVOREVSRVIpKTsNCiAgICAgIFN5c3RlbS5lcnIu
cHJpbnRsbigiR0xfVkVSU0lPTjogIiArIGdsLmdsR2V0U3RyaW5nKEdMLkdMX1ZFUlNJT04pKTsN
CiAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigpOw0KICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJn
bExvYWRUcmFuc3Bvc2VNYXRyaXhmQVJCKCkgc3VwcG9ydGVkOiAiICsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnbC5pc0Z1bmN0aW9uQXZhaWxhYmxlKCJnbExvYWRUcmFuc3Bvc2VNYXRyaXhm
QVJCIikpOw0KICAgICAgaWYgKCFnbC5pc0Z1bmN0aW9uQXZhaWxhYmxlKCJnbExvYWRUcmFuc3Bv
c2VNYXRyaXhmQVJCIikpIHsNCiAgICAgICAgLy8gLS0tIG5vdCB1c2luZyBleHRlbnNpb25zDQog
ICAgICAgIGdsLmdsTG9hZElkZW50aXR5KCk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICAvLyAt
LS0gdXNpbmcgZXh0ZW5zaW9ucw0KICAgICAgICBmaW5hbCBmbG9hdFtdIGlkZW50aXR5VHJhbnNw
b3NlID0gbmV3IGZsb2F0W10gew0KICAgICAgICAgIDEsIDAsIDAsIDAsDQogICAgICAgICAgMCwg
MSwgMCwgMCwNCiAgICAgICAgICAwLCAwLCAxLCAwLA0KICAgICAgICAgIDAsIDAsIDAsIDENCiAg
ICAgICAgfTsNCiAgICAgICAgZ2wuZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZkFSQihpZGVudGl0eVRy
YW5zcG9zZSk7DQogICAgICB9DQogICAgICBnbC5nbEZydXN0dW0oLTEuMGYsIDEuMGYsIC1oLCBo
LCA1LjBmLCA2MC4wZik7DQogICAgICBnbC5nbE1hdHJpeE1vZGUoR0wuR0xfTU9ERUxWSUVXKTsN
CiAgICAgIGdsLmdsTG9hZElkZW50aXR5KCk7DQogICAgICBnbC5nbFRyYW5zbGF0ZWYoMC4wZiwg
MC4wZiwgLTQwLjBmKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgdm9pZCBkaXNwbGF5KEdMRHJhd2Fi
bGUgZHJhd2FibGUpIHsNCiAgICAgIGFuZ2xlICs9IDIuMGY7DQoNCiAgICAgIGdsLmdsQ2xlYXIo
R0wuR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMLkdMX0RFUFRIX0JVRkZFUl9CSVQpOw0KICAgICAg
ICAgICAgDQogICAgICBnbC5nbFB1c2hNYXRyaXgoKTsNCiAgICAgIGdsLmdsUm90YXRlZih2aWV3
X3JvdHgsIDEuMGYsIDAuMGYsIDAuMGYpOw0KICAgICAgZ2wuZ2xSb3RhdGVmKHZpZXdfcm90eSwg
MC4wZiwgMS4wZiwgMC4wZik7DQogICAgICBnbC5nbFJvdGF0ZWYodmlld19yb3R6LCAwLjBmLCAw
LjBmLCAxLjBmKTsNCiAgICAgICAgICAgIA0KICAgICAgZ2wuZ2xQdXNoTWF0cml4KCk7DQogICAg
ICBnbC5nbFRyYW5zbGF0ZWYoLTMuMGYsIC0yLjBmLCAwLjBmKTsNCiAgICAgIGdsLmdsUm90YXRl
ZihhbmdsZSwgMC4wZiwgMC4wZiwgMS4wZik7DQogICAgICBnbC5nbENhbGxMaXN0KGdlYXIxKTsN
CiAgICAgIGdsLmdsUG9wTWF0cml4KCk7DQogICAgICAgICAgICANCiAgICAgIGdsLmdsUHVzaE1h
dHJpeCgpOw0KICAgICAgZ2wuZ2xUcmFuc2xhdGVmKDMuMWYsIC0yLjBmLCAwLjBmKTsNCiAgICAg
IGdsLmdsUm90YXRlZigtMi4wZiAqIGFuZ2xlIC0gOS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7DQog
ICAgICBnbC5nbENhbGxMaXN0KGdlYXIyKTsNCiAgICAgIGdsLmdsUG9wTWF0cml4KCk7DQogICAg
ICAgICAgICANCiAgICAgIGdsLmdsUHVzaE1hdHJpeCgpOw0KICAgICAgZ2wuZ2xUcmFuc2xhdGVm
KC0zLjFmLCA0LjJmLCAwLjBmKTsNCiAgICAgIGdsLmdsUm90YXRlZigtMi4wZiAqIGFuZ2xlIC0g
MjUuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOw0KICAgICAgZ2wuZ2xDYWxsTGlzdChnZWFyMyk7DQog
ICAgICBnbC5nbFBvcE1hdHJpeCgpOw0KICAgICAgICAgICAgDQogICAgICBnbC5nbFBvcE1hdHJp
eCgpOw0KICAgIH0NCg0KICAgIHB1YmxpYyB2b2lkIGRpc3BsYXlDaGFuZ2VkKEdMRHJhd2FibGUg
ZHJhd2FibGUsIGJvb2xlYW4gbW9kZUNoYW5nZWQsIGJvb2xlYW4gZGV2aWNlQ2hhbmdlZCkge30N
Cg0KICAgIHByaXZhdGUgdm9pZCBnZWFyKGZsb2F0IGlubmVyX3JhZGl1cywNCiAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBvdXRlcl9yYWRpdXMsDQogICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgICAgaW50IHRlZXRoLA0KICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHRvb3RoX2RlcHRoKQ0KICAgIHsNCiAgICAgIGludCBpOw0KICAgICAg
ZmxvYXQgcjAsIHIxLCByMjsNCiAgICAgIGZsb2F0IGFuZ2xlLCBkYTsNCiAgICAgIGZsb2F0IHUs
IHYsIGxlbjsNCg0KICAgICAgcjAgPSBpbm5lcl9yYWRpdXM7DQogICAgICByMSA9IG91dGVyX3Jh
ZGl1cyAtIHRvb3RoX2RlcHRoIC8gMi4wZjsNCiAgICAgIHIyID0gb3V0ZXJfcmFkaXVzICsgdG9v
dGhfZGVwdGggLyAyLjBmOw0KICAgICAgICAgICAgDQogICAgICBkYSA9IDIuMGYgKiAoZmxvYXQp
IE1hdGguUEkgLyB0ZWV0aCAvIDQuMGY7DQogICAgICAgICAgICANCiAgICAgIGdsLmdsU2hhZGVN
b2RlbChHTC5HTF9GTEFUKTsNCg0KICAgICAgZ2wuZ2xOb3JtYWwzZigwLjBmLCAwLjBmLCAxLjBm
KTsNCg0KICAgICAgLyogZHJhdyBmcm9udCBmYWNlICovDQogICAgICBnbC5nbEJlZ2luKEdMLkdM
X1FVQURfU1RSSVApOw0KICAgICAgZm9yIChpID0gMDsgaSA8PSB0ZWV0aDsgaSsrKQ0KICAgICAg
ICB7DQogICAgICAgICAgYW5nbGUgPSBpICogMi4wZiAqIChmbG9hdCkgTWF0aC5QSSAvIHRlZXRo
Ow0KICAgICAgICAgIGdsLmdsVmVydGV4M2YocjAgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUpLCBy
MCAqIChmbG9hdClNYXRoLnNpbihhbmdsZSksIHdpZHRoICogMC41Zik7DQogICAgICAgICAgZ2wu
Z2xWZXJ0ZXgzZihyMSAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSksIHIxICogKGZsb2F0KU1hdGgu
c2luKGFuZ2xlKSwgd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBpZihpIDwgdGVldGgpDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgIGdsLmdsVmVydGV4M2YocjAgKiAoZmxvYXQpTWF0aC5j
b3MoYW5nbGUpLCByMCAqIChmbG9hdClNYXRoLnNpbihhbmdsZSksIHdpZHRoICogMC41Zik7DQog
ICAgICAgICAgICAgIGdsLmdsVmVydGV4M2YocjEgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAz
LjBmICogZGEpLCByMSAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIDMuMGYgKiBkYSksIHdpZHRo
ICogMC41Zik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGdsLmdsRW5kKCk7DQoN
CiAgICAgIC8qIGRyYXcgZnJvbnQgc2lkZXMgb2YgdGVldGggKi8NCiAgICAgIGdsLmdsQmVnaW4o
R0wuR0xfUVVBRFMpOw0KICAgICAgZm9yIChpID0gMDsgaSA8IHRlZXRoOyBpKyspDQogICAgICAg
IHsNCiAgICAgICAgICBhbmdsZSA9IGkgKiAyLjBmICogKGZsb2F0KSBNYXRoLlBJIC8gdGVldGg7
DQogICAgICAgICAgZ2wuZ2xWZXJ0ZXgzZihyMSAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSksIHIx
ICogKGZsb2F0KU1hdGguc2luKGFuZ2xlKSwgd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5n
bFZlcnRleDNmKHIyICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClN
YXRoLnNpbihhbmdsZSArIGRhKSwgd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRl
eDNmKHIyICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgMi4wZiAqIGRhKSwgcjIgKiAoZmxvYXQp
TWF0aC5zaW4oYW5nbGUgKyAyLjBmICogZGEpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGds
LmdsVmVydGV4M2YocjEgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAzLjBmICogZGEpLCByMSAq
IChmbG9hdClNYXRoLnNpbihhbmdsZSArIDMuMGYgKiBkYSksIHdpZHRoICogMC41Zik7DQogICAg
ICAgIH0NCiAgICAgIGdsLmdsRW5kKCk7DQogICAgDQogICAgICAvKiBkcmF3IGJhY2sgZmFjZSAq
Lw0KICAgICAgZ2wuZ2xCZWdpbihHTC5HTF9RVUFEX1NUUklQKTsNCiAgICAgIGZvciAoaSA9IDA7
IGkgPD0gdGVldGg7IGkrKykNCiAgICAgICAgew0KICAgICAgICAgIGFuZ2xlID0gaSAqIDIuMGYg
KiAoZmxvYXQpIE1hdGguUEkgLyB0ZWV0aDsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIxICog
KGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lk
dGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29z
KGFuZ2xlKSwgcjAgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsNCiAg
ICAgICAgICBnbC5nbFZlcnRleDNmKHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgMyAqIGRh
KSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUgKyAzICogZGEpLCAtd2lkdGggKiAwLjVmKTsN
CiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjAg
KiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgfQ0KICAg
ICAgZ2wuZ2xFbmQoKTsNCiAgICANCiAgICAgIC8qIGRyYXcgYmFjayBzaWRlcyBvZiB0ZWV0aCAq
Lw0KICAgICAgZ2wuZ2xCZWdpbihHTC5HTF9RVUFEUyk7DQogICAgICBmb3IgKGkgPSAwOyBpIDwg
dGVldGg7IGkrKykNCiAgICAgICAgew0KICAgICAgICAgIGFuZ2xlID0gaSAqIDIuMGYgKiAoZmxv
YXQpIE1hdGguUEkgLyB0ZWV0aDsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIxICogKGZsb2F0
KU1hdGguY29zKGFuZ2xlICsgMyAqIGRhKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUgKyAz
ICogZGEpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZs
b2F0KU1hdGguY29zKGFuZ2xlICsgMiAqIGRhKSwgcjIgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUg
KyAyICogZGEpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICog
KGZsb2F0KU1hdGguY29zKGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmdsZSAr
IGRhKSwgLXdpZHRoICogMC41Zik7DQogICAgICAgICAgZ2wuZ2xWZXJ0ZXgzZihyMSAqIChmbG9h
dClNYXRoLmNvcyhhbmdsZSksIHIxICogKGZsb2F0KU1hdGguc2luKGFuZ2xlKSwgLXdpZHRoICog
MC41Zik7DQogICAgICAgIH0NCiAgICAgIGdsLmdsRW5kKCk7DQogICAgDQogICAgICAvKiBkcmF3
IG91dHdhcmQgZmFjZXMgb2YgdGVldGggKi8NCiAgICAgIGdsLmdsQmVnaW4oR0wuR0xfUVVBRF9T
VFJJUCk7DQogICAgICBmb3IgKGkgPSAwOyBpIDwgdGVldGg7IGkrKykNCiAgICAgICAgew0KICAg
ICAgICAgIGFuZ2xlID0gaSAqIDIuMGYgKiAoZmxvYXQpIE1hdGguUEkgLyB0ZWV0aDsNCiAgICAg
ICAgICBnbC5nbFZlcnRleDNmKHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjEgKiAoZmxv
YXQpTWF0aC5zaW4oYW5nbGUpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVydGV4
M2YocjEgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUpLCByMSAqIChmbG9hdClNYXRoLnNpbihhbmds
ZSksIC13aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIHUgPSByMiAqIChmbG9hdClNYXRoLmNvcyhh
bmdsZSArIGRhKSAtIHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKTsNCiAgICAgICAgICB2ID0g
cjIgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUgKyBkYSkgLSByMSAqIChmbG9hdClNYXRoLnNpbihh
bmdsZSk7DQogICAgICAgICAgbGVuID0gKGZsb2F0KU1hdGguc3FydCh1ICogdSArIHYgKiB2KTsN
CiAgICAgICAgICB1IC89IGxlbjsNCiAgICAgICAgICB2IC89IGxlbjsNCiAgICAgICAgICBnbC5n
bE5vcm1hbDNmKHYsIC11LCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZs
b2F0KU1hdGguY29zKGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIGRh
KSwgd2lkdGggKiAwLjVmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIyICogKGZsb2F0KU1h
dGguY29zKGFuZ2xlICsgZGEpLCByMiAqIChmbG9hdClNYXRoLnNpbihhbmdsZSArIGRhKSwgLXdp
ZHRoICogMC41Zik7DQogICAgICAgICAgZ2wuZ2xOb3JtYWwzZigoZmxvYXQpTWF0aC5jb3MoYW5n
bGUpLCAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRl
eDNmKHIyICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgMiAqIGRhKSwgcjIgKiAoZmxvYXQpTWF0
aC5zaW4oYW5nbGUgKyAyICogZGEpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVy
dGV4M2YocjIgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAyICogZGEpLCByMiAqIChmbG9hdClN
YXRoLnNpbihhbmdsZSArIDIgKiBkYSksIC13aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIHUgPSBy
MSAqIChmbG9hdClNYXRoLmNvcyhhbmdsZSArIDMgKiBkYSkgLSByMiAqIChmbG9hdClNYXRoLmNv
cyhhbmdsZSArIDIgKiBkYSk7DQogICAgICAgICAgdiA9IHIxICogKGZsb2F0KU1hdGguc2luKGFu
Z2xlICsgMyAqIGRhKSAtIHIyICogKGZsb2F0KU1hdGguc2luKGFuZ2xlICsgMiAqIGRhKTsNCiAg
ICAgICAgICBnbC5nbE5vcm1hbDNmKHYsIC11LCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRl
eDNmKHIxICogKGZsb2F0KU1hdGguY29zKGFuZ2xlICsgMyAqIGRhKSwgcjEgKiAoZmxvYXQpTWF0
aC5zaW4oYW5nbGUgKyAzICogZGEpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmdsVmVy
dGV4M2YocjEgKiAoZmxvYXQpTWF0aC5jb3MoYW5nbGUgKyAzICogZGEpLCByMSAqIChmbG9hdClN
YXRoLnNpbihhbmdsZSArIDMgKiBkYSksIC13aWR0aCAqIDAuNWYpOw0KICAgICAgICAgIGdsLmds
Tm9ybWFsM2YoKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgKGZsb2F0KU1hdGguc2luKGFuZ2xlKSwg
MC4wZik7DQogICAgICAgIH0NCiAgICAgIGdsLmdsVmVydGV4M2YocjEgKiAoZmxvYXQpTWF0aC5j
b3MoMCksIHIxICogKGZsb2F0KU1hdGguc2luKDApLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgZ2wu
Z2xWZXJ0ZXgzZihyMSAqIChmbG9hdClNYXRoLmNvcygwKSwgcjEgKiAoZmxvYXQpTWF0aC5zaW4o
MCksIC13aWR0aCAqIDAuNWYpOw0KICAgICAgZ2wuZ2xFbmQoKTsNCiAgICANCiAgICAgIGdsLmds
U2hhZGVNb2RlbChHTC5HTF9TTU9PVEgpOw0KICAgIA0KICAgICAgLyogZHJhdyBpbnNpZGUgcmFk
aXVzIGN5bGluZGVyICovDQogICAgICBnbC5nbEJlZ2luKEdMLkdMX1FVQURfU1RSSVApOw0KICAg
ICAgZm9yIChpID0gMDsgaSA8PSB0ZWV0aDsgaSsrKQ0KICAgICAgICB7DQogICAgICAgICAgYW5n
bGUgPSBpICogMi4wZiAqIChmbG9hdCkgTWF0aC5QSSAvIHRlZXRoOw0KICAgICAgICAgIGdsLmds
Tm9ybWFsM2YoLShmbG9hdClNYXRoLmNvcyhhbmdsZSksIC0oZmxvYXQpTWF0aC5zaW4oYW5nbGUp
LCAwLjBmKTsNCiAgICAgICAgICBnbC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFu
Z2xlKSwgcjAgKiAoZmxvYXQpTWF0aC5zaW4oYW5nbGUpLCAtd2lkdGggKiAwLjVmKTsNCiAgICAg
ICAgICBnbC5nbFZlcnRleDNmKHIwICogKGZsb2F0KU1hdGguY29zKGFuZ2xlKSwgcjAgKiAoZmxv
YXQpTWF0aC5zaW4oYW5nbGUpLCB3aWR0aCAqIDAuNWYpOw0KICAgICAgICB9DQogICAgICBnbC5n
bEVuZCgpOw0KICAgIH0NCg0KICAgIC8vIE1ldGhvZHMgcmVxdWlyZWQgZm9yIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBNb3VzZUxpc3RlbmVyDQogICAgcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1v
dXNlRXZlbnQgZSkge30NCiAgICBwdWJsaWMgdm9pZCBtb3VzZUV4aXRlZChNb3VzZUV2ZW50IGUp
IHt9DQoNCiAgICBwdWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7DQogICAg
ICBwcmV2TW91c2VYID0gZS5nZXRYKCk7DQogICAgICBwcmV2TW91c2VZID0gZS5nZXRZKCk7DQog
ICAgICBpZiAoKGUuZ2V0TW9kaWZpZXJzKCkgJiBlLkJVVFRPTjNfTUFTSykgIT0gMCkgew0KICAg
ICAgICBtb3VzZVJCdXR0b25Eb3duID0gdHJ1ZTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAg
cHVibGljIHZvaWQgbW91c2VSZWxlYXNlZChNb3VzZUV2ZW50IGUpIHsNCiAgICAgIGlmICgoZS5n
ZXRNb2RpZmllcnMoKSAmIGUuQlVUVE9OM19NQVNLKSAhPSAwKSB7DQogICAgICAgIG1vdXNlUkJ1
dHRvbkRvd24gPSBmYWxzZTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgcHVibGljIHZvaWQg
bW91c2VDbGlja2VkKE1vdXNlRXZlbnQgZSkge30NCiAgICANCiAgICAvLyBNZXRob2RzIHJlcXVp
cmVkIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgTW91c2VNb3Rpb25MaXN0ZW5lcg0KICAgIHB1
YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsNCiAgICAgIGludCB4ID0gZS5n
ZXRYKCk7DQogICAgICBpbnQgeSA9IGUuZ2V0WSgpOw0KICAgICAgRGltZW5zaW9uIHNpemUgPSBl
LmdldENvbXBvbmVudCgpLmdldFNpemUoKTsNCg0KICAgICAgZmxvYXQgdGhldGFZID0gMzYwLjBm
ICogKCAoZmxvYXQpKHgtcHJldk1vdXNlWCkvKGZsb2F0KXNpemUud2lkdGgpOw0KICAgICAgZmxv
YXQgdGhldGFYID0gMzYwLjBmICogKCAoZmxvYXQpKHByZXZNb3VzZVkteSkvKGZsb2F0KXNpemUu
aGVpZ2h0KTsNCiAgICANCiAgICAgIHByZXZNb3VzZVggPSB4Ow0KICAgICAgcHJldk1vdXNlWSA9
IHk7DQoNCiAgICAgIHZpZXdfcm90eCArPSB0aGV0YVg7DQogICAgICB2aWV3X3JvdHkgKz0gdGhl
dGFZOw0KICAgIH0NCiAgICANCiAgICBwdWJsaWMgdm9pZCBtb3VzZU1vdmVkKE1vdXNlRXZlbnQg
ZSkge30NCiAgfQ0KfQ0K
</data>

          </attachment>
      

    </bug>

</bugzilla>