<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugzilla.globus.org/bugzilla/bugzilla.dtd">

<bugzilla version="3.2.3"
          urlbase="http://bugzilla.globus.org/bugzilla/"
          maintainer="bacon@mcs.anl.gov"
>

    <bug>
          <bug_id>4902</bug_id>
          
          <creation_ts>2006-12-12 17:32</creation_ts>
          <short_desc>GRAM4 auditing on events</short_desc>
          <delta_ts>2007-06-27 09:51:06</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>GRAM</product>
          <component>Campaign</component>
          <version>development</version>
          <rep_platform>Macintosh</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>4.0.5</target_milestone>
          
          <blocked>4409</blocked>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stuart Martin">smartin@mcs.anl.gov</reporter>
          <assigned_to name="Gerson Galang">gerson.galang@adelaide.edu.au</assigned_to>
          <cc>bester@mcs.anl.gov</cc>
    
    <cc>childers@mcs.anl.gov</cc>
    
    <cc>feller@mcs.anl.gov</cc>
    
    <cc>gawor@mcs.anl.gov</cc>
    
    <cc>gerson.galang@adelaide.edu.au</cc>
    
    <cc>lane@mcs.anl.gov</cc>
    
    <cc>rohder@mcs.anl.gov</cc>

      

      
          <long_desc isprivate="0">
            <who name="Stuart Martin">smartin@mcs.anl.gov</who>
            <bug_when>2006-12-12 17:32:45</bug_when>
            <thetext>Title: GRAM4 auditing on events (not just end of job)

Technologies:

Globus Resource Allocation Manager (GRAM)

Definition:

GRAM4 auditing outputs an audit record for a job only at the end of a job.  There is information in the audit record that could be of value to a user/admin/LRM interface during the execution of the job.  The proposed change is to insert the job audit record at the beginning of the job and then update the job audit record after the job submission to the Local Resource Manager is successful and then again at the end of the job.

Here are the current audit schema fields:
job_grid_id
local_job_id
subject_name
username
idempotence_id
creation_time
queued_time
stage_in_grid_id
stage_out_grid_id
clean_up_grid_id
globus_toolkit_version
resource_manager_type
job_description
success_flag

These are the fields that will be inserted on the initial update after the createManagedJob operation:
job_grid_id
subject_name
username
idempotence_id
creation_time
resource_manager_type
job_description

These are the fields that will be added after the LRM job submission is done:
local_jod_id
queued_time
stage_in_grid_id
 
These are the fields that will be added at the end of the job:
stage_out_grid_id
clean_up_grid_id
success_flag

Deliverables:

1) A patch to GRAM4 auditing code that applies to the community branch
2) Unit test(s) that exercise the new code

Tasks:

1) Build the Globus Toolkit from the globus_4_0_community branch
2) Test installation by verifying the current end of job audit capabilities work
3) Modify code to insert the initial audit record after the reply to the createManagedJob (after the MEJR is created)
4) Modify code to augment the audit record with new information after the LRM job submission is done
5) Modify code to augment the audit record with new information after the job has completed
6) Write unit tests for code
7) test code
8) test performance impact of change (these could be done by us - GRAM team)
   a. sequential tests (for 20 iterations)
      - Measure the time for a globusrun-ws job to complete before changes
      - Measure the time for a globusrun-ws job to complete after changes
   b. concurrent tests (for 3 iterations)
      - Measure the time for a globusrun-ws job to complete before changes
      - Measure the time for a globusrun-ws job to complete after changes
9) create a patch for these audit enhancements and unit tests
10) post to bugzilla campaign</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Peter Lane">lane@mcs.anl.gov</who>
            <bug_when>2006-12-13 08:46:05</bug_when>
            <thetext>Just so you know, you&apos;ll have to completely redo how audit records are written. The DB appender thing isn&apos;t going to cut it. That&apos;s why we didn&apos;t do this from the beginning.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Gerson Galang">gerson.galang@adelaide.edu.au</who>
            <bug_when>2006-12-13 20:01:26</bug_when>
            <thetext>(In reply to comment #1)
&gt; Just so you know, you&apos;ll have to completely redo how audit records are written.
&gt; The DB appender thing isn&apos;t going to cut it. That&apos;s why we didn&apos;t do this from
&gt; the beginning.
&gt; 

I didn&apos;t quite understand what you meant by &quot;you&apos;ll have to complete redo how the audit records are written.&quot;

I was able to create a quick/simple patch to StateMachine.logAuditRecord() method which lets the AuditDatabaseAppender choose if it&apos;s going to do an insert or an update to the gram_audit_database table. Attached is the patch. Is this already acceptable with everyone?

Only issue I have is writing a junit test for this. Can you point me on a reusable junit test you guys have written for the WSGRAM Audit patch? How do you want me to test the patch? Should I be testing for GRAM state changes and its effect on the entries in the DB?


</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Gerson Galang">gerson.galang@adelaide.edu.au</who>
            <bug_when>2006-12-13 20:16:06</bug_when>
            <thetext>Created an attachment (id=1144)
patch which updates auditDatabase everytime the user&apos;s job changes its state

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Peter Lane">lane@mcs.anl.gov</who>
            <bug_when>2006-12-14 09:47:42</bug_when>
            <thetext>WRT comment #2, I just meant that at some point it becomes silly to use log4j for database access. Once you start differentiating between types of database updates, it would be better to just scrap log4j and go with a straight method call to a DB class.

That said, I wasn&apos;t aware at the time I wrote my comment that this was assigned to you, Gerson. If you already did this then I&apos;m not going to complain. If we add this to the 4.0 code base, though, we ought to also port it to HEAD. The HEAD version is significantly different and would be easier to convert to not be based on log4j. The only reason I originally went the log4j route is because they had an appender that hid the DB calls. In HEAD, I do all the DB calls explicitly.

Anyway, I&apos;ll try to take a look at the patch you submitted today.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Gerson Galang">gerson.galang@adelaide.edu.au</who>
            <bug_when>2006-12-18 16:28:30</bug_when>
            <thetext>(In reply to comment #4)

Have you already had a look at the audit patch I created for the GT4 community branch?

If you want this patch not to be based on log4j, do you have any suggestions on how users will disable the audit database logging if we are not going to use the log4j appender?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Peter Lane">lane@mcs.anl.gov</who>
            <bug_when>2006-12-21 10:26:15</bug_when>
            <thetext>Gerson,

The patch looks good except for the fact that it doesn&apos;t seem to accomodate job manager audit logging. The main() method takes CSV records that are generated by the GT2 job manager and generates logging statments. But it doesn&apos;t look like main() was updated to prepend &quot;insert:&quot; so that it will work properly. This should be trivial to fix. If you can make that minor change, I&apos;ll commit it today.

As for the HEAD version, you can just do something similar to what you did for the community branch for now. I&apos;m not sure it&apos;s going to be high on anybody&apos;s proprity list to change things not to use log4j anytime soon.

Peter</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Gerson Galang">gerson.galang@adelaide.edu.au</who>
            <bug_when>2007-01-02 22:58:03</bug_when>
            <thetext>Created an attachment (id=1160)
patch which updates auditDatabase everytime the user&apos;s job changes its state

Hi Peter,

Sorry for the delayed response. I was away on holidays for the past couple of weeks.

I basically just added an &quot;insert: &quot; string to the Logger.info() method call and inserted another line to the output of the &quot;--help&quot; option describing the finished_flag column that I added to the gram_audit_table table. This probably will require you guys to modify the GT2 source that outputs the CSV file that you were talking about. Or, I can again modify the source so it assumes that all the info that gets inserted in the gram_audit_table has a finished_flag value of true. Let me know if you still want me to make any changes to the source.

With regard to patching the audit stuff on the HEAD branch, I might need help on doing that. I will need to get the container working first before I can start hacking the source. I sent an email to the gram-dev list 12/15/2006 with the subject &quot;Audit Patch on GT4&apos;s HEAD branch&quot; but still haven&apos;t received any response from it. The jobs that I send to the container (HEAD version) fails because of some RFT issues that I couldn&apos;t fix. I am still using postgres because I want to avoid installing Derby just to get the HEAD working.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Peter Lane">lane@mcs.anl.gov</who>
            <bug_when>2007-01-03 10:02:49</bug_when>
            <thetext>(In reply to comment #7)
&gt; Created an attachment (id=1160) [edit]
&gt; patch which updates auditDatabase everytime the user&apos;s job changes its state
&gt; 
&gt; Hi Peter,
&gt; 
&gt; Sorry for the delayed response. I was away on holidays for the past couple of
&gt; weeks.

So were we, so no big deal.

&gt; 
&gt; I basically just added an &quot;insert: &quot; string to the Logger.info() method call
&gt; and inserted another line to the output of the &quot;--help&quot; option describing the
&gt; finished_flag column that I added to the gram_audit_table table. This probably
&gt; will require you guys to modify the GT2 source that outputs the CSV file that
&gt; you were talking about. Or, I can again modify the source so it assumes that
&gt; all the info that gets inserted in the gram_audit_table has a finished_flag
&gt; value of true. Let me know if you still want me to make any changes to the
&gt; source.

This can be assigned over to Joe Bester when your done so he can add the extra column.

&gt; With regard to patching the audit stuff on the HEAD branch, I might need help
&gt; on doing that. I will need to get the container working first before I can
&gt; start hacking the source. I sent an email to the gram-dev list 12/15/2006 with
&gt; the subject &quot;Audit Patch on GT4&apos;s HEAD branch&quot; but still haven&apos;t received any
&gt; response from it. The jobs that I send to the container (HEAD version) fails
&gt; because of some RFT issues that I couldn&apos;t fix. I am still using postgres
&gt; because I want to avoid installing Derby just to get the HEAD working.

I&apos;ll look for your gram-dev message. Also, you don&apos;t have to install Derby since it&apos;s already deployed with the GT in HEAD. That&apos;s the whole point of using it (i.e. out-of-box DB functionality).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Peter Lane">lane@mcs.anl.gov</who>
            <bug_when>2007-01-03 10:08:42</bug_when>
            <thetext>(In reply to comment #7)
&gt; With regard to patching the audit stuff on the HEAD branch, I might need help
&gt; on doing that. I will need to get the container working first before I can
&gt; start hacking the source. I sent an email to the gram-dev list 12/15/2006 with
&gt; the subject &quot;Audit Patch on GT4&apos;s HEAD branch&quot; but still haven&apos;t received any
&gt; response from it. The jobs that I send to the container (HEAD version) fails
&gt; because of some RFT issues that I couldn&apos;t fix. I am still using postgres
&gt; because I want to avoid installing Derby just to get the HEAD working.

I can&apos;t seem to find the email you speak of. I show nothing but the automated test emails on gram-dev around the date you specify. I can&apos;t find it in gram-user, discuss, friends, gt-user, or gt-dev either. I also seached my trash and junk folders.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Gerson Galang">gerson.galang@adelaide.edu.au</who>
            <bug_when>2007-01-03 16:38:36</bug_when>
            <thetext>(In reply to comment #9)

I just forwarded you the mail I sent to the gram-dev list about the problem I was having configuring the HEAD to use postgres. I also tried using derby but had problems getting it to work. Details are in the mail I sent to the gram-user/dev list.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Gerson Galang">gerson.galang@adelaide.edu.au</who>
            <bug_when>2007-03-07 21:09:39</bug_when>
            <thetext>Created an attachment (id=1202)
GT4 HEAD WSGRAM start-of-job audit patch

Here&apos;s the patch which will enable the start-of-job audit info logging on GT4&apos;s HEAD branch.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Martin Feller">feller@mcs.anl.gov</who>
            <bug_when>2007-03-13 04:59:26</bug_when>
            <thetext>I had a look, didn&apos;t have any complaints and applied that patch to the
code from HEAD</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Martin Feller">feller@mcs.anl.gov</who>
            <bug_when>2007-06-22 16:57:48</bug_when>
            <thetext>The new audit logging model to log information about the job at
* the very beginning of job processing
* after the job had been submitted to the LRM
* at the end of processing (failed or done)
is also in 4.0 branch and hence will be part of 4.0.5 that will
be sent out probably on Monday.
Gerson: i think we&apos;re done with that then, right?
If so: can you close this campaign?</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1144</attachid>
            <date>2006-12-13 20:16</date>
            <desc>patch which updates auditDatabase everytime the user&apos;s job changes its state</desc>
            <filename>wsgram-audit.patch</filename>
            <type>text/plain</type>
            <size>7208</size>
            <attacher>gerson.galang@adelaide.edu.au</attacher>
            <data encoding="base64">ZGlmZiAtTmF1ciBndDQuMC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyLm9sZC93cy1ncmFtL3NlcnZp
Y2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3JhbV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNxbCBn
dDQuMC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyL3dzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9z
aGFyZS9ncmFtX2F1ZGl0X3NjaGVtYV9wb3N0Z3Jlcy04LjAuc3FsCi0tLSBndDQuMC4xLWFsbC1z
b3VyY2UtaW5zdGFsbGVyLm9sZC93cy1ncmFtL3NlcnZpY2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3Jh
bV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNxbAkyMDA2LTEyLTE0IDEyOjM5OjA4LjAwMDAw
MDAwMCArMTAzMAorKysgZ3Q0LjAuMS1hbGwtc291cmNlLWluc3RhbGxlci93cy1ncmFtL3NlcnZp
Y2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3JhbV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNxbAky
MDA2LTEyLTE0IDEyOjM5OjQ5LjAwMDAwMDAwMCArMTAzMApAQCAtMTYsNCArMTYsNSBAQAogICAg
ICJnbG9idXNfdG9vbGtpdF92ZXJzaW9uIiB2YXJjaGFyKDE2KSBub3QgbnVsbCwKICAgICAicmVz
b3VyY2VfbWFuYWdlcl90eXBlIiB2YXJjaGFyKDE2KSBub3QgbnVsbCwKICAgICAiam9iX2Rlc2Ny
aXB0aW9uIiB0ZXh0IG5vdCBudWxsLAotICAgICJzdWNjZXNzX2ZsYWciIGJvb2xlYW4gbm90IG51
bGwpOworICAgICJzdWNjZXNzX2ZsYWciIGJvb2xlYW4gbm90IG51bGwsCisgICAgImZpbmlzaGVk
X2ZsYWciIGJvb2xlYW4gbm90IG51bGwpOwpkaWZmIC1OYXVyIGd0NC4wLjEtYWxsLXNvdXJjZS1p
bnN0YWxsZXIub2xkL3dzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9l
eGVjL3NlcnZpY2UvZXhlYy9TdGF0ZU1hY2hpbmUuamF2YSBndDQuMC4xLWFsbC1zb3VyY2UtaW5z
dGFsbGVyL3dzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3Nl
cnZpY2UvZXhlYy9TdGF0ZU1hY2hpbmUuamF2YQotLS0gZ3Q0LjAuMS1hbGwtc291cmNlLWluc3Rh
bGxlci5vbGQvd3MtZ3JhbS9zZXJ2aWNlL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMv
c2VydmljZS9leGVjL1N0YXRlTWFjaGluZS5qYXZhCTIwMDYtMTItMTQgMTI6MzQ6MDguMDAwMDAw
MDAwICsxMDMwCisrKyBndDQuMC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyL3dzLWdyYW0vc2Vydmlj
ZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3NlcnZpY2UvZXhlYy9TdGF0ZU1hY2hp
bmUuamF2YQkyMDA2LTEyLTE0IDEyOjE3OjQxLjAwMDAwMDAwMCArMTAzMApAQCAtNTg2LDYgKzU4
Niw3IEBACiAgICAgICAgICAgICBwcm9jZXNzTmV3U3RhdGUocmVzb3VyY2UsIEludGVybmFsU3Rh
dGVFbnVtZXJhdGlvbi5TdWJtaXQsIHRydWUpOwogICAgICAgICB9CiAKKyAgICAgICAgbG9nQXVk
aXRSZWNvcmQodHJ1ZSwgcmVzb3VyY2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIHBlcmZvcm1h
bmNlTG9nZ2VyLnN0b3AoInByb2Nlc3NTdGFydFN0YXRlIik7CiAgICAgfQogCkBAIC0xMjc2LDYg
KzEyNzcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgbG9nQXVkaXRS
ZWNvcmQoZmFsc2UsIHJlc291cmNlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICBwZXJmb3JtYW5j
ZUxvZ2dlci5zdG9wKCJwcm9jZXNzU3VibWl0U3RhdGUiKTsKICAgICB9CiAKQEAgLTIzOTAsNyAr
MjM5Miw3IEBACiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlcnJvck1l
c3NhZ2UsIGUpOwogICAgICAgICB9CiAKLSAgICAgICAgbG9nQXVkaXRSZWNvcmQocmVzb3VyY2Us
IHRydWUpOworICAgICAgICBsb2dBdWRpdFJlY29yZChmYWxzZSwgcmVzb3VyY2UsIHRydWUsIHRy
dWUpOwogICAgICAgICB1bnN1YnNjcmliZUF0Sm9iU3RhdGVNb25pdG9yKHJlc291cmNlKTsKICAg
ICAgICAgbG9nSm9iU3VjY2VlZGVkKHJlc291cmNlKTsKIApAQCAtMjQ1NSw3ICsyNDU3LDcgQEAK
ICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBsb2dBdWRpdFJlY29yZChyZXNvdXJjZSwgZmFsc2UpOwor
ICAgICAgICBsb2dBdWRpdFJlY29yZChmYWxzZSwgcmVzb3VyY2UsIGZhbHNlLCB0cnVlKTsKICAg
ICAgICAgdW5zdWJzY3JpYmVBdEpvYlN0YXRlTW9uaXRvcihyZXNvdXJjZSk7CiAgICAgICAgIGxv
Z0pvYkZhaWxlZChyZXNvdXJjZSk7CiAKQEAgLTMyNzQsMTAgKzMyNzYsMjAgQEAKICAgICB9CiAK
ICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGxvZ0F1ZGl0UmVjb3JkKAorICAgICAgICBib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRSZWNvcmQsCiAgICAgICAgIE1hbmFn
ZWRFeGVjdXRhYmxlSm9iUmVzb3VyY2UgICAgICAgIHJlc291cmNlLAotICAgICAgICBib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZWVkZWQpCisgICAgICAgIGJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2NlZWRlZCwKKyAgICAgICAgYm9vbGVhbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQpCiAgICAgewogICAgICAgICBTdHJp
bmdCdWZmZXIgYXVkaXRSZWNvcmQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIC8vaW5z
ZXJ0IG9yIHVwZGF0ZSByZWNvcmQ/CisgICAgICAgIGlmIChpbnNlcnRSZWNvcmQpIHsKKyAgICAg
ICAgICAgIGF1ZGl0UmVjb3JkLmFwcGVuZCgiaW5zZXJ0OiAiKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGF1ZGl0UmVjb3JkLmFwcGVuZCgidXBkYXRlOiAiKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vam9iX2dyaWRfaWQKICAgICAgICAgdHJ5CiAgICAgICAgIHsK
QEAgLTM0NzEsNiArMzQ4MywxMCBAQAogICAgICAgICBhdWRpdFJlY29yZC5hcHBlbmQoCiAgICAg
ICAgICAgICBBdWRpdERhdGFiYXNlQXBwZW5kZXIuZm9ybWF0KG5ldyBCb29sZWFuKHN1Y2NlZWRl
ZCkudG9TdHJpbmcoKSkpOwogCisgICAgICAgIC8vZmluaXNoZWRfZmxhZworICAgICAgICBhdWRp
dFJlY29yZC5hcHBlbmQoCisgICAgICAgICAgICBBdWRpdERhdGFiYXNlQXBwZW5kZXIuZm9ybWF0
KG5ldyBCb29sZWFuKGZpbmlzaGVkKS50b1N0cmluZygpKSk7CisKICAgICAgICAgYXVkaXRMb2dn
ZXIuaW5mbyhhdWRpdFJlY29yZC50b1N0cmluZygpKTsKICAgICB9CiAKZGlmZiAtTmF1ciBndDQu
MC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyLm9sZC93cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3Ny
Yy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvQXVkaXREYXRhYmFzZUFwcGVuZGVyLmphdmEgZ3Q0LjAu
MS1hbGwtc291cmNlLWluc3RhbGxlci93cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcv
Z2xvYnVzL2V4ZWMvdXRpbHMvQXVkaXREYXRhYmFzZUFwcGVuZGVyLmphdmEKLS0tIGd0NC4wLjEt
YWxsLXNvdXJjZS1pbnN0YWxsZXIub2xkL3dzLWdyYW0vdXRpbHMvamF2YS9zb3VyY2Uvc3JjL29y
Zy9nbG9idXMvZXhlYy91dGlscy9BdWRpdERhdGFiYXNlQXBwZW5kZXIuamF2YQkyMDA2LTEyLTE0
IDEyOjM0OjA4LjAwMDAwMDAwMCArMTAzMAorKysgZ3Q0LjAuMS1hbGwtc291cmNlLWluc3RhbGxl
ci93cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvQXVk
aXREYXRhYmFzZUFwcGVuZGVyLmphdmEJMjAwNi0xMi0xNCAxMjoxMjozMi4wMDAwMDAwMDAgKzEw
MzAKQEAgLTMzLDcgKzMzLDggQEAKICAgICAgICAgImdsb2J1c190b29sa2l0X3ZlcnNpb24iLAog
ICAgICAgICAicmVzb3VyY2VfbWFuYWdlcl90eXBlIiwKICAgICAgICAgImpvYl9kZXNjcmlwdGlv
biIsCi0gICAgICAgICJzdWNjZXNzX2ZsYWciCisgICAgICAgICJzdWNjZXNzX2ZsYWciLAorICAg
ICAgICAiZmluaXNoZWRfZmxhZyIKICAgICB9OwogICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBC
QVNFX1NRTDsKIApAQCAtMTE4LDMwICsxMTksNjIgQEAKICAgICAgICAgICBjaGFyYWN0ZXJzIHN1
YnN0aXR1dGVkIGZvciAnJnF1b3Q7Jy4KICAgICAgICAgKi8KICAgICAgICAgU3RyaW5nQnVmZmVy
IHNxbCA9IG5ldyBTdHJpbmdCdWZmZXIoQkFTRV9TUUwpOwotICAgICAgICBTdHJpbmdUb2tlbml6
ZXIgc3RvayA9IG5ldyBTdHJpbmdUb2tlbml6ZXIobWVzc2FnZSwgIlwiLFwiIik7Ci0gICAgICAg
IHdoaWxlIChzdG9rLmhhc01vcmVUb2tlbnMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU3Ry
aW5nIHRva2VuID0gc3Rvay5uZXh0VG9rZW4oKTsKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygi
bmV4dCB0b2tlbjogIiArIHRva2VuKTsKKyAgICAgICAgU3RyaW5nIGRiRW50cmllcyA9IG1lc3Nh
Z2Uuc3Vic3RyaW5nKDgpOyAvLyB3aWxsIGdldCBldmVyeXRoaW5nIGFmdGVyICdpbnNlcnQvdXBk
YXRlOiAnCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiREIgRW50cmllczogIiArIGRiRW50cmllcyk7
CiAKLSAgICAgICAgICAgIGlmICh0b2tlbi5lcXVhbHMoIk5VTEwiKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCJudWxsIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCisgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdG9rID0gbmV3IFN0cmluZ1Rv
a2VuaXplcihkYkVudHJpZXMsICJcIixcIiIpOworICAgICAgICBTdHJpbmcgdG9rZW4gPSBudWxs
OworICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCJpbnNlcnQiKSA9PSAwKSB7CisgICAgICAg
ICAgICBzcWwgPSBuZXcgU3RyaW5nQnVmZmVyKEJBU0VfU1FMKTsKKyAgICAgICAgICAgIHdoaWxl
IChzdG9rLmhhc01vcmVUb2tlbnMoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
cWwuYXBwZW5kKCInIikuYXBwZW5kKHVuZXNjYXBlKHRva2VuKSkuYXBwZW5kKCInIik7CisgICAg
ICAgICAgICAgICAgdG9rZW4gPSBzdG9rLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIGxv
Z2dlci5kZWJ1ZygibmV4dCB0b2tlbjogIiArIHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRva2VuLmVx
dWFscygiTlVMTCIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Fs
LmFwcGVuZCgibnVsbCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCInIiku
YXBwZW5kKHVuZXNjYXBlKHRva2VuKSkuYXBwZW5kKCInIik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoc3Rvay5oYXNNb3JlVG9rZW5zKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCIsIik7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoc3Rvay5oYXNNb3JlVG9rZW5zKCkpCisgICAg
ICAgICAgICBzcWwuYXBwZW5kKCIpOyIpOworICAgICAgICB9IGVsc2UgeyAvLyB1cGRhdGUKKyAg
ICAgICAgICAgIHNxbCA9IG5ldyBTdHJpbmdCdWZmZXIoIlVQREFURSBncmFtX2F1ZGl0X3RhYmxl
IFNFVCAiKTsKKyAgICAgICAgICAgIFN0cmluZyBqb2JHcmlkSWQgPSBzdG9rLm5leHRUb2tlbigp
OworICAgICAgICAgICAgaW50IGluZGV4PTE7IC8vIG5lZWQgdG8gc3RhcnQgcmlnaHQgYWZ0ZXIg
am9iX2dyaWRfaWQKKyAgICAgICAgICAgIHdoaWxlIChzdG9rLmhhc01vcmVUb2tlbnMoKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCIsIik7CisgICAgICAgICAg
ICAgICAgdG9rZW4gPSBzdG9rLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIGxvZ2dlci5k
ZWJ1ZygibmV4dCB0b2tlbjogIiArIHRva2VuKTsKKyAgICAgICAgICAgICAgICBzcWwuYXBwZW5k
KFRBQkxFX0NPTFVNTl9OQU1FU1tpbmRleF0pLmFwcGVuZCgiPSIpOworICAgICAgICAgICAgICAg
IGlmICh0b2tlbi5lcXVhbHMoIk5VTEwiKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHNxbC5hcHBlbmQoIm51bGwiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Fs
LmFwcGVuZCgiJyIpLmFwcGVuZCh1bmVzY2FwZSh0b2tlbikpLmFwcGVuZCgiJyIpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzdG9rLmhhc01vcmVUb2tlbnMoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoIiwiKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHNxbC5hcHBlbmQoIiBXSEVSRSBqb2JfZ3JpZF9pZD0iKS5hcHBlbmQoIiciKS5h
cHBlbmQodW5lc2NhcGUoam9iR3JpZElkKSkuYXBwZW5kKCInOyIpOwogICAgICAgICB9Ci0gICAg
ICAgIHNxbC5hcHBlbmQoIik7Iik7Ci0KICAgICAgICAgbG9nZ2VyLmRlYnVnKCJTUUw6ICIgKyBz
cWwudG9TdHJpbmcoKSk7Ci0KICAgICAgICAgc2V0U3FsKHNxbC50b1N0cmluZygpKTsKIAogICAg
ICAgICBzdXBlci5hcHBlbmQoZXZlbnQpOwo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1160</attachid>
            <date>2007-01-02 22:58</date>
            <desc>patch which updates auditDatabase everytime the user&apos;s job changes its state</desc>
            <filename>wsgram-audit.patch</filename>
            <type>text/plain</type>
            <size>8033</size>
            <attacher>gerson.galang@adelaide.edu.au</attacher>
            <data encoding="base64">ZGlmZiAtTmF1ciBndDQuMC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyLm9sZC93cy1ncmFtL3NlcnZp
Y2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3JhbV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNxbCBn
dDQuMC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyL3dzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9z
aGFyZS9ncmFtX2F1ZGl0X3NjaGVtYV9wb3N0Z3Jlcy04LjAuc3FsCi0tLSBndDQuMC4xLWFsbC1z
b3VyY2UtaW5zdGFsbGVyLm9sZC93cy1ncmFtL3NlcnZpY2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3Jh
bV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNxbAkyMDA2LTEyLTE0IDEyOjM5OjA4LjAwMDAw
MDAwMCArMTAzMAorKysgZ3Q0LjAuMS1hbGwtc291cmNlLWluc3RhbGxlci93cy1ncmFtL3NlcnZp
Y2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3JhbV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNxbAky
MDA2LTEyLTE0IDEyOjM5OjQ5LjAwMDAwMDAwMCArMTAzMApAQCAtMTYsNCArMTYsNSBAQAogICAg
ICJnbG9idXNfdG9vbGtpdF92ZXJzaW9uIiB2YXJjaGFyKDE2KSBub3QgbnVsbCwKICAgICAicmVz
b3VyY2VfbWFuYWdlcl90eXBlIiB2YXJjaGFyKDE2KSBub3QgbnVsbCwKICAgICAiam9iX2Rlc2Ny
aXB0aW9uIiB0ZXh0IG5vdCBudWxsLAotICAgICJzdWNjZXNzX2ZsYWciIGJvb2xlYW4gbm90IG51
bGwpOworICAgICJzdWNjZXNzX2ZsYWciIGJvb2xlYW4gbm90IG51bGwsCisgICAgImZpbmlzaGVk
X2ZsYWciIGJvb2xlYW4gbm90IG51bGwpOwpkaWZmIC1OYXVyIGd0NC4wLjEtYWxsLXNvdXJjZS1p
bnN0YWxsZXIub2xkL3dzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9l
eGVjL3NlcnZpY2UvZXhlYy9TdGF0ZU1hY2hpbmUuamF2YSBndDQuMC4xLWFsbC1zb3VyY2UtaW5z
dGFsbGVyL3dzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3Nl
cnZpY2UvZXhlYy9TdGF0ZU1hY2hpbmUuamF2YQotLS0gZ3Q0LjAuMS1hbGwtc291cmNlLWluc3Rh
bGxlci5vbGQvd3MtZ3JhbS9zZXJ2aWNlL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMv
c2VydmljZS9leGVjL1N0YXRlTWFjaGluZS5qYXZhCTIwMDYtMTItMTQgMTI6MzQ6MDguMDAwMDAw
MDAwICsxMDMwCisrKyBndDQuMC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyL3dzLWdyYW0vc2Vydmlj
ZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3NlcnZpY2UvZXhlYy9TdGF0ZU1hY2hp
bmUuamF2YQkyMDA2LTEyLTE0IDEyOjE3OjQxLjAwMDAwMDAwMCArMTAzMApAQCAtNTg2LDYgKzU4
Niw3IEBACiAgICAgICAgICAgICBwcm9jZXNzTmV3U3RhdGUocmVzb3VyY2UsIEludGVybmFsU3Rh
dGVFbnVtZXJhdGlvbi5TdWJtaXQsIHRydWUpOwogICAgICAgICB9CiAKKyAgICAgICAgbG9nQXVk
aXRSZWNvcmQodHJ1ZSwgcmVzb3VyY2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIHBlcmZvcm1h
bmNlTG9nZ2VyLnN0b3AoInByb2Nlc3NTdGFydFN0YXRlIik7CiAgICAgfQogCkBAIC0xMjc2LDYg
KzEyNzcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgbG9nQXVkaXRS
ZWNvcmQoZmFsc2UsIHJlc291cmNlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICBwZXJmb3JtYW5j
ZUxvZ2dlci5zdG9wKCJwcm9jZXNzU3VibWl0U3RhdGUiKTsKICAgICB9CiAKQEAgLTIzOTAsNyAr
MjM5Miw3IEBACiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlcnJvck1l
c3NhZ2UsIGUpOwogICAgICAgICB9CiAKLSAgICAgICAgbG9nQXVkaXRSZWNvcmQocmVzb3VyY2Us
IHRydWUpOworICAgICAgICBsb2dBdWRpdFJlY29yZChmYWxzZSwgcmVzb3VyY2UsIHRydWUsIHRy
dWUpOwogICAgICAgICB1bnN1YnNjcmliZUF0Sm9iU3RhdGVNb25pdG9yKHJlc291cmNlKTsKICAg
ICAgICAgbG9nSm9iU3VjY2VlZGVkKHJlc291cmNlKTsKIApAQCAtMjQ1NSw3ICsyNDU3LDcgQEAK
ICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBsb2dBdWRpdFJlY29yZChyZXNvdXJjZSwgZmFsc2UpOwor
ICAgICAgICBsb2dBdWRpdFJlY29yZChmYWxzZSwgcmVzb3VyY2UsIGZhbHNlLCB0cnVlKTsKICAg
ICAgICAgdW5zdWJzY3JpYmVBdEpvYlN0YXRlTW9uaXRvcihyZXNvdXJjZSk7CiAgICAgICAgIGxv
Z0pvYkZhaWxlZChyZXNvdXJjZSk7CiAKQEAgLTMyNzQsMTAgKzMyNzYsMjAgQEAKICAgICB9CiAK
ICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGxvZ0F1ZGl0UmVjb3JkKAorICAgICAgICBib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRSZWNvcmQsCiAgICAgICAgIE1hbmFn
ZWRFeGVjdXRhYmxlSm9iUmVzb3VyY2UgICAgICAgIHJlc291cmNlLAotICAgICAgICBib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZWVkZWQpCisgICAgICAgIGJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2NlZWRlZCwKKyAgICAgICAgYm9vbGVhbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQpCiAgICAgewogICAgICAgICBTdHJp
bmdCdWZmZXIgYXVkaXRSZWNvcmQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIC8vaW5z
ZXJ0IG9yIHVwZGF0ZSByZWNvcmQ/CisgICAgICAgIGlmIChpbnNlcnRSZWNvcmQpIHsKKyAgICAg
ICAgICAgIGF1ZGl0UmVjb3JkLmFwcGVuZCgiaW5zZXJ0OiAiKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGF1ZGl0UmVjb3JkLmFwcGVuZCgidXBkYXRlOiAiKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vam9iX2dyaWRfaWQKICAgICAgICAgdHJ5CiAgICAgICAgIHsK
QEAgLTM0NzEsNiArMzQ4MywxMCBAQAogICAgICAgICBhdWRpdFJlY29yZC5hcHBlbmQoCiAgICAg
ICAgICAgICBBdWRpdERhdGFiYXNlQXBwZW5kZXIuZm9ybWF0KG5ldyBCb29sZWFuKHN1Y2NlZWRl
ZCkudG9TdHJpbmcoKSkpOwogCisgICAgICAgIC8vZmluaXNoZWRfZmxhZworICAgICAgICBhdWRp
dFJlY29yZC5hcHBlbmQoCisgICAgICAgICAgICBBdWRpdERhdGFiYXNlQXBwZW5kZXIuZm9ybWF0
KG5ldyBCb29sZWFuKGZpbmlzaGVkKS50b1N0cmluZygpKSk7CisKICAgICAgICAgYXVkaXRMb2dn
ZXIuaW5mbyhhdWRpdFJlY29yZC50b1N0cmluZygpKTsKICAgICB9CiAKZGlmZiAtTmF1ciBndDQu
MC4xLWFsbC1zb3VyY2UtaW5zdGFsbGVyLm9sZC93cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3Ny
Yy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvQXVkaXREYXRhYmFzZUFwcGVuZGVyLmphdmEgZ3Q0LjAu
MS1hbGwtc291cmNlLWluc3RhbGxlci93cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcv
Z2xvYnVzL2V4ZWMvdXRpbHMvQXVkaXREYXRhYmFzZUFwcGVuZGVyLmphdmEKLS0tIGd0NC4wLjEt
YWxsLXNvdXJjZS1pbnN0YWxsZXIub2xkL3dzLWdyYW0vdXRpbHMvamF2YS9zb3VyY2Uvc3JjL29y
Zy9nbG9idXMvZXhlYy91dGlscy9BdWRpdERhdGFiYXNlQXBwZW5kZXIuamF2YQkyMDA2LTEyLTE0
IDEyOjM0OjA4LjAwMDAwMDAwMCArMTAzMAorKysgZ3Q0LjAuMS1hbGwtc291cmNlLWluc3RhbGxl
ci93cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvQXVk
aXREYXRhYmFzZUFwcGVuZGVyLmphdmEJMjAwNy0wMS0wMyAxNTowMjoyOS4wMDAwMDAwMDAgKzEw
MzAKQEAgLTMzLDcgKzMzLDggQEAKICAgICAgICAgImdsb2J1c190b29sa2l0X3ZlcnNpb24iLAog
ICAgICAgICAicmVzb3VyY2VfbWFuYWdlcl90eXBlIiwKICAgICAgICAgImpvYl9kZXNjcmlwdGlv
biIsCi0gICAgICAgICJzdWNjZXNzX2ZsYWciCisgICAgICAgICJzdWNjZXNzX2ZsYWciLAorICAg
ICAgICAiZmluaXNoZWRfZmxhZyIKICAgICB9OwogICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBC
QVNFX1NRTDsKIApAQCAtMTE4LDMwICsxMTksNjIgQEAKICAgICAgICAgICBjaGFyYWN0ZXJzIHN1
YnN0aXR1dGVkIGZvciAnJnF1b3Q7Jy4KICAgICAgICAgKi8KICAgICAgICAgU3RyaW5nQnVmZmVy
IHNxbCA9IG5ldyBTdHJpbmdCdWZmZXIoQkFTRV9TUUwpOwotICAgICAgICBTdHJpbmdUb2tlbml6
ZXIgc3RvayA9IG5ldyBTdHJpbmdUb2tlbml6ZXIobWVzc2FnZSwgIlwiLFwiIik7Ci0gICAgICAg
IHdoaWxlIChzdG9rLmhhc01vcmVUb2tlbnMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU3Ry
aW5nIHRva2VuID0gc3Rvay5uZXh0VG9rZW4oKTsKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygi
bmV4dCB0b2tlbjogIiArIHRva2VuKTsKKyAgICAgICAgU3RyaW5nIGRiRW50cmllcyA9IG1lc3Nh
Z2Uuc3Vic3RyaW5nKDgpOyAvLyB3aWxsIGdldCBldmVyeXRoaW5nIGFmdGVyICdpbnNlcnQvdXBk
YXRlOiAnCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiREIgRW50cmllczogIiArIGRiRW50cmllcyk7
CiAKLSAgICAgICAgICAgIGlmICh0b2tlbi5lcXVhbHMoIk5VTEwiKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCJudWxsIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCisgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdG9rID0gbmV3IFN0cmluZ1Rv
a2VuaXplcihkYkVudHJpZXMsICJcIixcIiIpOworICAgICAgICBTdHJpbmcgdG9rZW4gPSBudWxs
OworICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCJpbnNlcnQiKSA9PSAwKSB7CisgICAgICAg
ICAgICBzcWwgPSBuZXcgU3RyaW5nQnVmZmVyKEJBU0VfU1FMKTsKKyAgICAgICAgICAgIHdoaWxl
IChzdG9rLmhhc01vcmVUb2tlbnMoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
cWwuYXBwZW5kKCInIikuYXBwZW5kKHVuZXNjYXBlKHRva2VuKSkuYXBwZW5kKCInIik7CisgICAg
ICAgICAgICAgICAgdG9rZW4gPSBzdG9rLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIGxv
Z2dlci5kZWJ1ZygibmV4dCB0b2tlbjogIiArIHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRva2VuLmVx
dWFscygiTlVMTCIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Fs
LmFwcGVuZCgibnVsbCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCInIiku
YXBwZW5kKHVuZXNjYXBlKHRva2VuKSkuYXBwZW5kKCInIik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoc3Rvay5oYXNNb3JlVG9rZW5zKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCIsIik7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoc3Rvay5oYXNNb3JlVG9rZW5zKCkpCisgICAg
ICAgICAgICBzcWwuYXBwZW5kKCIpOyIpOworICAgICAgICB9IGVsc2UgeyAvLyB1cGRhdGUKKyAg
ICAgICAgICAgIHNxbCA9IG5ldyBTdHJpbmdCdWZmZXIoIlVQREFURSBncmFtX2F1ZGl0X3RhYmxl
IFNFVCAiKTsKKyAgICAgICAgICAgIFN0cmluZyBqb2JHcmlkSWQgPSBzdG9rLm5leHRUb2tlbigp
OworICAgICAgICAgICAgaW50IGluZGV4PTE7IC8vIG5lZWQgdG8gc3RhcnQgcmlnaHQgYWZ0ZXIg
am9iX2dyaWRfaWQKKyAgICAgICAgICAgIHdoaWxlIChzdG9rLmhhc01vcmVUb2tlbnMoKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKCIsIik7CisgICAgICAgICAg
ICAgICAgdG9rZW4gPSBzdG9rLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIGxvZ2dlci5k
ZWJ1ZygibmV4dCB0b2tlbjogIiArIHRva2VuKTsKKyAgICAgICAgICAgICAgICBzcWwuYXBwZW5k
KFRBQkxFX0NPTFVNTl9OQU1FU1tpbmRleF0pLmFwcGVuZCgiPSIpOworICAgICAgICAgICAgICAg
IGlmICh0b2tlbi5lcXVhbHMoIk5VTEwiKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHNxbC5hcHBlbmQoIm51bGwiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Fs
LmFwcGVuZCgiJyIpLmFwcGVuZCh1bmVzY2FwZSh0b2tlbikpLmFwcGVuZCgiJyIpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzdG9rLmhhc01vcmVUb2tlbnMoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoIiwiKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHNxbC5hcHBlbmQoIiBXSEVSRSBqb2JfZ3JpZF9pZD0iKS5hcHBlbmQoIiciKS5h
cHBlbmQodW5lc2NhcGUoam9iR3JpZElkKSkuYXBwZW5kKCInOyIpOwogICAgICAgICB9Ci0gICAg
ICAgIHNxbC5hcHBlbmQoIik7Iik7Ci0KICAgICAgICAgbG9nZ2VyLmRlYnVnKCJTUUw6ICIgKyBz
cWwudG9TdHJpbmcoKSk7Ci0KICAgICAgICAgc2V0U3FsKHNxbC50b1N0cmluZygpKTsKIAogICAg
ICAgICBzdXBlci5hcHBlbmQoZXZlbnQpOwpAQCAtMTg2LDYgKzIxOSw4IEBACiAiIFNVQ0NFU1Nf
RkxBRyAgICAgICAgICAgICAgICBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZ1xuIisKICIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBqb2IgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSAo
XCJ0cnVlXCIpLCBvciBmYWlsZWRcbiIrCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
XCJmYWxzZVwiKS5cbiIrCisiIEZJTklTSEVEX0ZMQUcgICAgICAgICAgICAgICBBIGJvb2xlYW4g
dmFsdWUgaW5kaWNhdGluZ1xuIisKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBq
b2IgaGFzIGZpbmlzaGVkIGV4ZWN1dGluZy5cbiIrCiAiXG4iKwogIkNPTkZJRy1GSUxFTkFNRTog
QSBmaWxlbmFtZSBwb2ludGluZyB0byBhIHByb3BlcnR5IGZpbGUgd2hpY2ggY29udGFpbnMgY29u
ZmlndXJhdGlvblxuIisKICJwcm9wZXJ0aWVzLiBWYWxpZCBwcm9wZXJ0aWVzIGFyZTogVVJMLCBE
UklWRVJDTEFTUywgVVNFUk5BTUUsIGFuZCBQQVNTV09SRC5cbiI7CkBAIC0zMDksNyArMzQ0LDcg
QEAKICAgICAgICAgICAgIHdoaWxlICgocmVjb3JkID0gci5yZWFkTGluZSgpKSAhPSBudWxsKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlY29yZCA9IHJlY29yZC5yZXBsYWNlQWxs
KCInIiwgIicnIik7Ci0gICAgICAgICAgICAgICAgYXVkaXRMb2dnZXIuaW5mbyhyZWNvcmQpOwor
ICAgICAgICAgICAgICAgIGF1ZGl0TG9nZ2VyLmluZm8oImluc2VydDogIiArIHJlY29yZCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKICAgICAgICAgfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>1202</attachid>
            <date>2007-03-07 21:09</date>
            <desc>GT4 HEAD WSGRAM start-of-job audit patch</desc>
            <filename>gt4head-wsgram-audit.patch</filename>
            <type>text/plain</type>
            <size>22258</size>
            <attacher>gerson.galang@adelaide.edu.au</attacher>
            <data encoding="base64">ZGlmZiAtTmF1ciB3cy1ncmFtLm9sZC9zZXJ2aWNlL2phdmEvc291cmNlL3NoYXJlL2dyYW1fYXVk
aXRfc2NoZW1hX3Bvc3RncmVzLTguMC5zcWwgd3MtZ3JhbS9zZXJ2aWNlL2phdmEvc291cmNlL3No
YXJlL2dyYW1fYXVkaXRfc2NoZW1hX3Bvc3RncmVzLTguMC5zcWwKLS0tIHdzLWdyYW0ub2xkL3Nl
cnZpY2UvamF2YS9zb3VyY2Uvc2hhcmUvZ3JhbV9hdWRpdF9zY2hlbWFfcG9zdGdyZXMtOC4wLnNx
bAkyMDA3LTAzLTA3IDA5OjU5OjEyLjAwMDAwMDAwMCArMTAzMAorKysgd3MtZ3JhbS9zZXJ2aWNl
L2phdmEvc291cmNlL3NoYXJlL2dyYW1fYXVkaXRfc2NoZW1hX3Bvc3RncmVzLTguMC5zcWwJMjAw
Ny0wMy0wNyAxMDowNDoxNi4wMDAwMDAwMDAgKzEwMzAKQEAgLTE2LDQgKzE2LDUgQEAKICAgICAi
Z2xvYnVzX3Rvb2xraXRfdmVyc2lvbiIgdmFyY2hhcigxNikgbm90IG51bGwsCiAgICAgInJlc291
cmNlX21hbmFnZXJfdHlwZSIgdmFyY2hhcigxNikgbm90IG51bGwsCiAgICAgImpvYl9kZXNjcmlw
dGlvbiIgdGV4dCBub3QgbnVsbCwKLSAgICAic3VjY2Vzc19mbGFnIiBib29sZWFuIG5vdCBudWxs
KTsKKyAgICAic3VjY2Vzc19mbGFnIiBib29sZWFuIG5vdCBudWxsLAorICAgICJmaW5pc2hlZF9m
bGFnIiBib29sZWFuIG5vdCBudWxsKTsKZGlmZiAtTmF1ciB3cy1ncmFtLm9sZC9zZXJ2aWNlL2ph
dmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvc2VydmljZS9leGVjL1N0YXRlTWFjaGluZS5q
YXZhIHdzLWdyYW0vc2VydmljZS9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3NlcnZp
Y2UvZXhlYy9TdGF0ZU1hY2hpbmUuamF2YQotLS0gd3MtZ3JhbS5vbGQvc2VydmljZS9qYXZhL3Nv
dXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3NlcnZpY2UvZXhlYy9TdGF0ZU1hY2hpbmUuamF2YQky
MDA3LTAzLTA3IDA5OjU5OjEyLjAwMDAwMDAwMCArMTAzMAorKysgd3MtZ3JhbS9zZXJ2aWNlL2ph
dmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvc2VydmljZS9leGVjL1N0YXRlTWFjaGluZS5q
YXZhCTIwMDctMDMtMDggMTM6MjU6MDguMDAwMDAwMDAwICsxMDMwCkBAIC03MCw2ICs3MCw3IEBA
CiBpbXBvcnQgb3JnLmdsb2J1cy5leGVjLnY0XzIuZ2VuZXJhdGVkLmpzZGwuSm9iRGVmaW5pdGlv
bl9UeXBlOwogaW1wb3J0IG9yZy5nbG9idXMuZXhlYy5tb25pdG9yaW5nLkFscmVhZHlSZWdpc3Rl
cmVkRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5nbG9idXMuZXhlYy51dGlscy5hdWRpdC5BdWRpdERh
dGE7CitpbXBvcnQgb3JnLmdsb2J1cy5leGVjLnV0aWxzLmF1ZGl0LkF1ZGl0UHJvY2VzczsKIGlt
cG9ydCBvcmcuZ2xvYnVzLmV4ZWMudXRpbHMuTWFuYWdlZEpvYkZhY3RvcnlDb25zdGFudHM7CiBp
bXBvcnQgb3JnLmdsb2J1cy5leGVjLnV0aWxzLk1hbmFnZWRKb2JDb25zdGFudHM7CiBpbXBvcnQg
b3JnLmdsb2J1cy5leGVjLnV0aWxzLk1hbmFnZWRFeGVjdXRhYmxlSm9iQ29uc3RhbnRzOwpAQCAt
ODQyLDYgKzg0MywxNiBAQAogICAgICAgICAgICAgcHJvY2Vzc05ld1N0YXRlKHJlc291cmNlLCBJ
bnRlcm5hbFN0YXRlRW51bWVyYXRpb24uUHJlU3VibWl0LCB0cnVlKTsKICAgICAgICAgfQogCisg
ICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBsb2dBdWRpdFJlY29yZChBdWRpdFBy
b2Nlc3MuU1RBUlQsIHJlc291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoUmVzb3Vy
Y2VFeGNlcHRpb24gcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSBpMThuLmdldE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgUmVzb3VyY2VzLkFVRElUX0xP
R0dJTkdfRVJST1IpOworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXJy
b3JNZXNzYWdlLCByZSk7CisgICAgICAgIH0KICAgICAgICAgcGVyZm9ybWFuY2VMb2dnZXIuc3Rv
cCgicHJvY2Vzc1N0YXJ0U3RhdGUiKTsKICAgICAgICAgbG9nZ2VyLmRlYnVnKGdldExvZ2dpbmdQ
cmVmaXgocmVzb3VyY2UpICsKICAgICAgICAgICAgICJFeGl0aW5nIHByb2Nlc3NTdGFydFN0YXRl
KCkiKTsKQEAgLTE0NzEsNiArMTQ4MiwxNiBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ0F1ZGl0UmVjb3Jk
KEF1ZGl0UHJvY2Vzcy5TVUJNSVQsIHJlc291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBjYXRj
aCAoUmVzb3VyY2VFeGNlcHRpb24gcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSBpMThuLmdldE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgUmVzb3VyY2Vz
LkFVRElUX0xPR0dJTkdfRVJST1IpOworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNl
cHRpb24oZXJyb3JNZXNzYWdlLCByZSk7CisgICAgICAgIH0KICAgICAgICAgcGVyZm9ybWFuY2VM
b2dnZXIuc3RvcCgicHJvY2Vzc1N1Ym1pdFN0YXRlIik7CiAgICAgfQogCkBAIC0yNDM5LDcgKzI0
NjAsNyBAQAogCiAgICAgICAgIHRyeQogICAgICAgICB7Ci0gICAgICAgICAgICBsb2dBdWRpdFJl
Y29yZChyZXNvdXJjZSwgdHJ1ZSk7CisgICAgICAgICAgICBsb2dBdWRpdFJlY29yZChBdWRpdFBy
b2Nlc3MuRE9ORSwgcmVzb3VyY2UpOwogICAgICAgICB9CiAgICAgICAgIGNhdGNoIChSZXNvdXJj
ZUV4Y2VwdGlvbiByZSkKICAgICAgICAgewpAQCAtMjUyNiw3ICsyNTQ3LDcgQEAKIAogICAgICAg
ICB0cnkKICAgICAgICAgewotICAgICAgICAgICAgbG9nQXVkaXRSZWNvcmQocmVzb3VyY2UsIGZh
bHNlKTsKKyAgICAgICAgICAgIGxvZ0F1ZGl0UmVjb3JkKEF1ZGl0UHJvY2Vzcy5GQUlMRUQsIHJl
c291cmNlKTsKICAgICAgICAgfQogICAgICAgICBjYXRjaCAoUmVzb3VyY2VFeGNlcHRpb24gcmUp
CiAgICAgICAgIHsKQEAgLTMxNjUsMTIgKzMxODYsMTQgQEAKICAgICB9CiAKICAgICBwcml2YXRl
IHN0YXRpYyB2b2lkIGxvZ0F1ZGl0UmVjb3JkKAotICAgICAgICBNYW5hZ2VkRXhlY3V0YWJsZUpv
YlJlc291cmNlICAgICAgICByZXNvdXJjZSwKLSAgICAgICAgYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3VjY2VlZGVkKQorICAgICAgICBTdHJpbmcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpdFByb2Nlc3NTdHJpbmcsCisgICAgICAgIE1hbmFnZWRFeGVjdXRh
YmxlSm9iUmVzb3VyY2UgICAgICAgIHJlc291cmNlKQogICAgICAgICB0aHJvd3MgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUV4Y2VwdGlvbgogICAgIHsKICAgICAgICAgQXVk
aXREYXRhIGF1ZGl0RGF0YSA9IG5ldyBBdWRpdERhdGEoKTsKLSAgICAgICAgCisgICAgICAgIEF1
ZGl0UHJvY2VzcyBhdWRpdFByb2Nlc3MgPSBuZXcgQXVkaXRQcm9jZXNzKAorICAgICAgICAgICAg
YXVkaXRQcm9jZXNzU3RyaW5nLCBhdWRpdERhdGEpOworCiAgICAgICAgIC8vam9iX2dyaWRfaWQK
ICAgICAgICAgYXVkaXREYXRhLnNldEpvYkVuZHBvaW50KHJlc291cmNlLmdldEVuZHBvaW50KCkp
OwogCkBAIC0zMjY0LDEwICszMjg3LDI1IEBACiAgICAgICAgICAgICAgICAgWG1sVXRpbHMudG9T
dHJpbmcoam9iRGVmaW5pdGlvbkVsZW1lbnQpKTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2xl
YW4gc3VjY2VlZGVkID0gZmFsc2U7CisgICAgICAgIGJvb2xlYW4gZmluaXNoZWQgPSBmYWxzZTsK
KyAgICAgICAgaWYgKGF1ZGl0UHJvY2Vzc1N0cmluZy5lcXVhbHMoQXVkaXRQcm9jZXNzLkZBSUxF
RCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmICAoYXVkaXRQcm9jZXNzU3RyaW5nLmVxdWFscyhBdWRpdFByb2Nlc3Mu
RE9ORSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7CisgICAgICAg
ICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0KKwogICAgICAgICAvL3N1Y2Nlc3NfZmxh
ZwogICAgICAgICBhdWRpdERhdGEuc2V0U3VjY2VzcyhzdWNjZWVkZWQpOwogCi0gICAgICAgIGF1
ZGl0TG9nZ2VyLmluZm8oYXVkaXREYXRhKTsKKyAgICAgICAgLy9maW5pc2hlZF9mbGFnCisgICAg
ICAgIGF1ZGl0RGF0YS5zZXRGaW5pc2hlZChmaW5pc2hlZCk7CisKKyAgICAgICAgYXVkaXRMb2dn
ZXIuaW5mbyhhdWRpdFByb2Nlc3MpOwogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5n
IGdldExvZ2dpbmdQcmVmaXgoCmRpZmYgLU5hdXIgd3MtZ3JhbS5vbGQvdXRpbHMvamF2YS9zb3Vy
Y2Uvc3JjL29yZy9nbG9idXMvZXhlYy91dGlscy9hdWRpdC9BdWRpdERhdGEuamF2YSB3cy1ncmFt
L3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvYXVkaXQvQXVkaXRE
YXRhLmphdmEKLS0tIHdzLWdyYW0ub2xkL3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVz
L2V4ZWMvdXRpbHMvYXVkaXQvQXVkaXREYXRhLmphdmEJMjAwNy0wMy0wNyAwOTo1OToxMy4wMDAw
MDAwMDAgKzEwMzAKKysrIHdzLWdyYW0vdXRpbHMvamF2YS9zb3VyY2Uvc3JjL29yZy9nbG9idXMv
ZXhlYy91dGlscy9hdWRpdC9BdWRpdERhdGEuamF2YQkyMDA3LTAzLTA4IDExOjM2OjQ2LjAwMDAw
MDAwMCArMTAzMApAQCAtMzgsNiArMzgsNyBAQAogICAgIFN0cmluZyByZXNvdXJjZU1hbmFnZXJU
eXBlID0gbnVsbDsKICAgICBTdHJpbmcgam9iRGVzY3JpcHRpb24gPSBudWxsOwogICAgIGJvb2xl
YW4gc3VjY2VzcyA9IGZhbHNlOworICAgIGJvb2xlYW4gZmluaXNoZWQgPSBmYWxzZTsKIAogICAg
IHB1YmxpYyB2b2lkIHNldEpvYkVuZHBvaW50KAogICAgICAgICBFbmRwb2ludFJlZmVyZW5jZVR5
cGUgICAgICAgICAgICAgICBlbmRwb2ludCkKQEAgLTIwOCw0ICsyMDksMTUgQEAKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLnN1Y2Nlc3M7CiAgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0
RmluaXNoZWQoCisgICAgICAgIGJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bmlzaGVkKQorICAgIHsKKyAgICAgICAgdGhpcy5maW5pc2hlZCA9IGZpbmlzaGVkOworICAgIH0K
KyAgICBwdWJsaWMgYm9vbGVhbiBpc0ZpbmlzaGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLmZpbmlzaGVkOworICAgIH0KKwogfQpkaWZmIC1OYXVyIHdzLWdyYW0ub2xkL3V0aWxzL2ph
dmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvYXVkaXQvQXVkaXREYXRhYmFzZUFw
cGVuZGVyLmphdmEgd3MtZ3JhbS91dGlscy9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVj
L3V0aWxzL2F1ZGl0L0F1ZGl0RGF0YWJhc2VBcHBlbmRlci5qYXZhCi0tLSB3cy1ncmFtLm9sZC91
dGlscy9qYXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3V0aWxzL2F1ZGl0L0F1ZGl0RGF0
YWJhc2VBcHBlbmRlci5qYXZhCTIwMDctMDMtMDcgMDk6NTk6MTMuMDAwMDAwMDAwICsxMDMwCisr
KyB3cy1ncmFtL3V0aWxzL2phdmEvc291cmNlL3NyYy9vcmcvZ2xvYnVzL2V4ZWMvdXRpbHMvYXVk
aXQvQXVkaXREYXRhYmFzZUFwcGVuZGVyLmphdmEJMjAwNy0wMy0wOCAxMzoyNDowMC4wMDAwMDAw
MDAgKzEwMzAKQEAgLTU4LDcgKzU4LDMwIEBACiAgICAgICAgICJnbG9idXNfdG9vbGtpdF92ZXJz
aW9uIiwKICAgICAgICAgInJlc291cmNlX21hbmFnZXJfdHlwZSIsCiAgICAgICAgICJqb2JfZGVz
Y3JpcHRpb24iLAotICAgICAgICAic3VjY2Vzc19mbGFnIgorICAgICAgICAic3VjY2Vzc19mbGFn
IiwKKyAgICAgICAgImZpbmlzaGVkX2ZsYWciCisgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBT
dHJpbmdbXSBJTlNFUlRfVEFCTEVfQ09MVU1OX05BTUVTID0gbmV3IFN0cmluZ1tdIHsKKyAgICAg
ICAgImpvYl9ncmlkX2lkIiwKKyAgICAgICAgInN1YmplY3RfbmFtZSIsCisgICAgICAgICJ1c2Vy
bmFtZSIsCisgICAgICAgICJpZGVtcG90ZW5jZV9pZCIsCisgICAgICAgICJjcmVhdGlvbl90aW1l
IiwKKyAgICAgICAgImdsb2J1c190b29sa2l0X3ZlcnNpb24iLAorICAgICAgICAicmVzb3VyY2Vf
bWFuYWdlcl90eXBlIiwKKyAgICAgICAgImpvYl9kZXNjcmlwdGlvbiIsCisgICAgICAgICJzdWNj
ZXNzX2ZsYWciLAorICAgICAgICAiZmluaXNoZWRfZmxhZyIKKyAgICB9OworICAgIHByaXZhdGUg
c3RhdGljIFN0cmluZ1tdIFVQREFURV9UQUJMRV9DT0xVTU5fTkFNRVMgPSBuZXcgU3RyaW5nW10g
eworICAgICAgICAibG9jYWxfam9iX2lkIiwKKyAgICAgICAgInF1ZXVlZF90aW1lIiwKKyAgICAg
ICAgInN0YWdlX2luX2dyaWRfaWQiLAorICAgICAgICAic3RhZ2Vfb3V0X2dyaWRfaWQiLAorICAg
ICAgICAiY2xlYW5fdXBfZ3JpZF9pZCIsCisgICAgICAgICJzdWNjZXNzX2ZsYWciLAorICAgICAg
ICAiZmluaXNoZWRfZmxhZyIsCisgICAgICAgICJqb2JfZ3JpZF9pZCIKICAgICB9OwogCiAgICAg
cHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gTU9OVEhfQUJCUkVWSUFUSU9OUyA9IG5ldyBTdHJpbmdb
XSB7CkBAIC03OSwzNCArMTAyLDUxIEBACiAKICAgICBwcml2YXRlIHN0YXRpYyBEYXRhYmFzZSBE
QVRBQkFTRSA9IG51bGw7CiAKLSAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgU1FMID0gbnVsbDsK
LQorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBJTlNFUlRfU1FMID0gbnVsbDsKKyAgICBwcml2
YXRlIHN0YXRpYyBTdHJpbmcgVVBEQVRFX1NRTCA9IG51bGw7CiAgICAgc3RhdGljCiAgICAgewot
ICAgICAgICBTdHJpbmdCdWZmZXIgc3FsCisgICAgICAgIFN0cmluZ0J1ZmZlciBpbnNlcnRTUUwK
ICAgICAgICAgICAgID0gbmV3IFN0cmluZ0J1ZmZlcigiSU5TRVJUIElOVE8gZ3JhbV9hdWRpdF90
YWJsZSAoIik7Ci0gICAgICAgIGZvciAoaW50IGluZGV4PTA7IGluZGV4PFRBQkxFX0NPTFVNTl9O
QU1FUy5sZW5ndGg7IGluZGV4KyspCisgICAgICAgIGZvciAoaW50IGluZGV4PTA7IGluZGV4PElO
U0VSVF9UQUJMRV9DT0xVTU5fTkFNRVMubGVuZ3RoOyBpbmRleCsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbnNlcnRTUUwuYXBwZW5kKElOU0VSVF9UQUJMRV9DT0xVTU5fTkFNRVNbaW5kZXhd
KTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IChJTlNFUlRfVEFCTEVfQ09MVU1OX05BTUVTLmxl
bmd0aC0xKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRTUUwuYXBwZW5k
KCIsIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnNlcnRTUUwuYXBw
ZW5kKCIpIHZhbHVlcyAoIik7CisKKyAgICAgICAgZm9yIChpbnQgaW5kZXg9MDsgaW5kZXg8SU5T
RVJUX1RBQkxFX0NPTFVNTl9OQU1FUy5sZW5ndGg7IGluZGV4KyspCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHNxbC5hcHBlbmQoVEFCTEVfQ09MVU1OX05BTUVTW2luZGV4XSk7Ci0gICAgICAgICAg
ICBpZiAoaW5kZXggPCAoVEFCTEVfQ09MVU1OX05BTUVTLmxlbmd0aC0xKSkKKyAgICAgICAgICAg
IGluc2VydFNRTC5hcHBlbmQoIj8iKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IChJTlNFUlRf
VEFCTEVfQ09MVU1OX05BTUVTLmxlbmd0aC0xKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzcWwuYXBwZW5kKCIsIik7CisgICAgICAgICAgICAgICAgaW5zZXJ0U1FMLmFwcGVuZCgi
LCIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGluc2VydFNRTC5hcHBlbmQo
IikiKTsKIAotICAgICAgICBzcWwuYXBwZW5kKCIpIHZhbHVlcyAoIik7CisgICAgICAgIElOU0VS
VF9TUUwgPSBpbnNlcnRTUUwudG9TdHJpbmcoKTsKIAotICAgICAgICBmb3IgKGludCBpbmRleD0w
OyBpbmRleDxUQUJMRV9DT0xVTU5fTkFNRVMubGVuZ3RoOyBpbmRleCsrKQorICAgIH0KKyAgICBz
dGF0aWMKKyAgICB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB1cGRhdGVTUUwKKyAgICAgICAgICAg
ID0gbmV3IFN0cmluZ0J1ZmZlcigiVVBEQVRFIGdyYW1fYXVkaXRfdGFibGUgU0VUICIpOworICAg
ICAgICBmb3IgKGludCBpbmRleD0wOyBpbmRleDxVUERBVEVfVEFCTEVfQ09MVU1OX05BTUVTLmxl
bmd0aC0xOyBpbmRleCsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBzcWwuYXBwZW5kKCI/Iik7
Ci0gICAgICAgICAgICBpZiAoaW5kZXggPCAoVEFCTEVfQ09MVU1OX05BTUVTLmxlbmd0aC0xKSkK
KyAgICAgICAgICAgIHVwZGF0ZVNRTC5hcHBlbmQoVVBEQVRFX1RBQkxFX0NPTFVNTl9OQU1FU1tp
bmRleF0pLmFwcGVuZCgiPT8iKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IChVUERBVEVfVEFC
TEVfQ09MVU1OX05BTUVTLmxlbmd0aC0yKSkgLy8tMiAtPiBkb24ndCBpbmNsdWRlIGpvYl9ncmlk
X2lkCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgiLCIpOworICAg
ICAgICAgICAgICAgIHVwZGF0ZVNRTC5hcHBlbmQoIiwiKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBzcWwuYXBwZW5kKCIpIik7CisgICAgICAgIHVwZGF0ZVNRTC5hcHBlbmQo
IiBXSEVSRSBqb2JfZ3JpZF9pZD0/Iik7CiAKLSAgICAgICAgU1FMID0gc3FsLnRvU3RyaW5nKCk7
CisgICAgICAgIFVQREFURV9TUUwgPSB1cGRhdGVTUUwudG9TdHJpbmcoKTsKIAogICAgIH0KIApA
QCAtMTUzLDE2ICsxOTMsMTcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vU3RyaW5nIG1lc3Nh
Z2UgPSBldmVudC5nZXRNZXNzYWdlKCkudG9TdHJpbmcoKTsKLSAgICAgICAgQXVkaXREYXRhIGF1
ZGl0RGF0YSA9IG51bGw7CisgICAgICAgIEF1ZGl0UHJvY2VzcyBhdWRpdFByb2Nlc3MgPSBudWxs
OwogICAgICAgICB0cnkKICAgICAgICAgewotICAgICAgICAgICAgYXVkaXREYXRhID0gKEF1ZGl0
RGF0YSkgZXZlbnQuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgYXVkaXRQcm9jZXNzID0gKEF1
ZGl0UHJvY2VzcykgZXZlbnQuZ2V0TWVzc2FnZSgpOwogICAgICAgICB9CiAgICAgICAgIGNhdGNo
IChDbGFzc0Nhc3RFeGNlcHRpb24gY2NlKQogICAgICAgICB7CiAgICAgICAgICAgICBsb2dnZXIu
ZGVidWcoIklnbm9yaW5nIGF1ZGl0IGxvZ2dpbmcgbWVzc2FnZS4iLCBjY2UpOwogICAgICAgICB9
CiAKKyAgICAgICAgQXVkaXREYXRhIGF1ZGl0RGF0YSA9IGF1ZGl0UHJvY2Vzcy5nZXRBdWRpdERh
dGEoKTsKICAgICAgICAgLy9sb2dnZXIuZGVidWcoIk1lc3NhZ2U6ICIgKyBhdWRpdERhdGEudG9T
dHJpbmcoKSk7CiAKICAgICAgICAgQ29ubmVjdGlvbiBkYkNvbm5lY3Rpb24gPSBudWxsOwpAQCAt
MTcxLDEyMCArMjEyLDIwIEBACiAgICAgICAgICAgICBkYkNvbm5lY3Rpb24gPSBEQVRBQkFTRS5n
ZXRDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICBkYkNvbm5lY3Rpb24uc2V0QXV0b0NvbW1pdChm
YWxzZSk7CiAKLSAgICAgICAgICAgIGludCBpbmRleCA9IDE7Ci0KLSAgICAgICAgICAgIFByZXBh
cmVkU3RhdGVtZW50IHN0YXRlbWVudCA9IGRiQ29ubmVjdGlvbi5wcmVwYXJlU3RhdGVtZW50KFNR
TCk7Ci0KLSAgICAgICAgICAgIC8vam9iX2dyaWRfaWQKLSAgICAgICAgICAgIEVuZHBvaW50UmVm
ZXJlbmNlVHlwZSBqb2JFbmRwb2ludCA9IGF1ZGl0RGF0YS5nZXRKb2JFbmRwb2ludCgpOwotICAg
ICAgICAgICAgaWYgKGpvYkVuZHBvaW50ICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgaW5kZXgr
KywKLSAgICAgICAgICAgICAgICAgICAgRVBSVXRpbC5nZXRFUFJBc1N0cmluZyhqb2JFbmRwb2lu
dCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywgYXVkaXREYXRhLmdldEpv
YkhhbmRsZSgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy9sb2NhbF9qb2JfaWQK
LSAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywgYXVkaXREYXRhLmdldExv
Y2FsSm9iSWQoKSk7Ci0KLSAgICAgICAgICAgIC8vc3ViamVjdF9uYW1lCi0gICAgICAgICAgICBz
dGF0ZW1lbnQuc2V0U3RyaW5nKGluZGV4KyssIGF1ZGl0RGF0YS5nZXRTdWJqZWN0TmFtZSgpKTsK
LQotICAgICAgICAgICAgLy91c2VybmFtZQotICAgICAgICAgICAgc3RhdGVtZW50LnNldFN0cmlu
ZyhpbmRleCsrLCBhdWRpdERhdGEuZ2V0VXNlcm5hbWUoKSk7Ci0KLSAgICAgICAgICAgIC8vaWRl
bXBvdGVuY2VfaWQKLSAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywgYXVk
aXREYXRhLmdldElkZW1wb3RlbmNlSWQoKSk7Ci0KLSAgICAgICAgICAgIC8vY3JlYXRpb25fdGlt
ZQotICAgICAgICAgICAgVGltZXN0YW1wIGNyZWF0aW9uVGltZSA9IGF1ZGl0RGF0YS5nZXRDcmVh
dGlvblRpbWUoKTsKLSAgICAgICAgICAgIGlmIChjcmVhdGlvblRpbWUgIT0gbnVsbCkKKyAgICAg
ICAgICAgIFByZXBhcmVkU3RhdGVtZW50IHN0YXRlbWVudCA9IG51bGw7CisgICAgICAgICAgICBp
ZiAoYXVkaXRQcm9jZXNzLmdldFByb2Nlc3MoKS5lcXVhbHMoQXVkaXRQcm9jZXNzLlNUQVJUKSkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuc2V0VGltZXN0YW1wKGlu
ZGV4KyssIGNyZWF0aW9uVGltZSk7CisgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gZGJDb25u
ZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoSU5TRVJUX1NRTCk7CisgICAgICAgICAgICAgICAgaW5z
ZXJ0QXVkaXREYXRhKHN0YXRlbWVudCwgYXVkaXREYXRhKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuc2V0
U3RyaW5nKAotICAgICAgICAgICAgICAgICAgICBpbmRleCsrLAotICAgICAgICAgICAgICAgICAg
ICBhdWRpdERhdGEuZ2V0Q3JlYXRpb25UaW1lU3RyaW5nKCkpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvL3F1ZXVlZF90aW1lCi0gICAgICAgICAgICBUaW1lc3RhbXAgcXVldWVkVGlt
ZSA9IGF1ZGl0RGF0YS5nZXRRdWV1ZWRUaW1lKCk7Ci0gICAgICAgICAgICBpZiAocXVldWVkVGlt
ZSAhPSBudWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5zZXRU
aW1lc3RhbXAoaW5kZXgrKywgcXVldWVkVGltZSk7CisgICAgICAgICAgICAgICAgLy8gSnVzdCB0
ZW1wb3JhcmlseSBkbyBhbiB1cGRhdGUgb24gYWxsIHRoZSB1cGRhdGFibGUgZmllbGRzCisgICAg
ICAgICAgICAgICAgLy8gdW50aWwgd2UgY2FuIGNvbWUgdXAgd2l0aCBhIGJldHRlciB3YXkgb2Yg
b25seSB1cGRhdGluZworICAgICAgICAgICAgICAgIC8vIGZpZWxkcyB0aGF0IGFyZSByZWxldmFu
dCB0byB0aGUgYWN0dWFsIHVwZGF0ZSBwcm9jZXNzIHN0YXRlCisgICAgICAgICAgICAgICAgc3Rh
dGVtZW50ID0gZGJDb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoVVBEQVRFX1NRTCk7CisgICAg
ICAgICAgICAgICAgdXBkYXRlQXVkaXREYXRhKHN0YXRlbWVudCwgYXVkaXREYXRhKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzdGF0ZW1lbnQuc2V0U3RyaW5nKAotICAgICAgICAgICAgICAgICAgICBpbmRleCsrLAotICAg
ICAgICAgICAgICAgICAgICBhdWRpdERhdGEuZ2V0UXVldWVkVGltZVN0cmluZygpKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgLy9zdGFnZV9pbl9ncmlkX2lkCi0gICAgICAgICAgICBF
bmRwb2ludFJlZmVyZW5jZVR5cGUgc3RhZ2VJbkVuZHBvaW50Ci0gICAgICAgICAgICAgICAgPSBh
dWRpdERhdGEuZ2V0U3RhZ2VJbkVuZHBvaW50KCk7Ci0gICAgICAgICAgICBpZiAoc3RhZ2VJbkVu
ZHBvaW50ICE9IG51bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50
LnNldFN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgaW5kZXgrKywKLSAgICAgICAgICAgICAg
ICAgICAgRVBSVXRpbC5nZXRFUFJBc1N0cmluZyhzdGFnZUluRW5kcG9pbnQpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
dGF0ZW1lbnQuc2V0U3RyaW5nKGluZGV4KyssIG51bGwpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvL3N0YWdlX291dF9ncmlkX2lkCi0gICAgICAgICAgICBFbmRwb2ludFJlZmVyZW5j
ZVR5cGUgc3RhZ2VPdXRFbmRwb2ludAotICAgICAgICAgICAgICAgID0gYXVkaXREYXRhLmdldFN0
YWdlT3V0RW5kcG9pbnQoKTsKLSAgICAgICAgICAgIGlmIChzdGFnZU91dEVuZHBvaW50ICE9IG51
bGwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZygK
LSAgICAgICAgICAgICAgICAgICAgaW5kZXgrKywKLSAgICAgICAgICAgICAgICAgICAgRVBSVXRp
bC5nZXRFUFJBc1N0cmluZyhzdGFnZU91dEVuZHBvaW50KSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LnNl
dFN0cmluZyhpbmRleCsrLCBudWxsKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy9j
bGVhbl91cF9ncmlkX2lkCi0gICAgICAgICAgICBFbmRwb2ludFJlZmVyZW5jZVR5cGUgY2xlYW5V
cEVuZHBvaW50Ci0gICAgICAgICAgICAgICAgPSBhdWRpdERhdGEuZ2V0Q2xlYW5VcEVuZHBvaW50
KCk7Ci0gICAgICAgICAgICBpZiAoY2xlYW5VcEVuZHBvaW50ICE9IG51bGwpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZygKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZXgrKywKLSAgICAgICAgICAgICAgICAgICAgRVBSVXRpbC5nZXRFUFJBc1N0cmlu
ZyhjbGVhblVwRW5kcG9pbnQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuc2V0U3RyaW5nKGluZGV4Kyss
IG51bGwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvL2dsb2J1c190b29sa2l0X3Zl
cnNpb24KLSAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywgYXVkaXREYXRh
LmdldEdsb2J1c1Rvb2xraXRWZXJzaW9uKCkpOwotCi0gICAgICAgICAgICAvL3Jlc291cmNlX21h
bmFnZXJfdHlwZQotICAgICAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZyhpbmRleCsrLCBhdWRp
dERhdGEuZ2V0UmVzb3VyY2VNYW5hZ2VyVHlwZSgpKTsKLQotICAgICAgICAgICAgLy9qb2JfZGVz
Y3JpcHRpb24KLSAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoCi0gICAgICAgICAgICAg
ICAgaW5kZXgrKywKLSAgICAgICAgICAgICAgICBhdWRpdERhdGEuZ2V0Sm9iRGVzY3JpcHRpb24o
KSk7Ci0KLSAgICAgICAgICAgIC8vc3VjY2Vzc19mbGFnCi0gICAgICAgICAgICBzdGF0ZW1lbnQu
c2V0Qm9vbGVhbigKLSAgICAgICAgICAgICAgICBpbmRleCsrLAotICAgICAgICAgICAgICAgIGF1
ZGl0RGF0YS5pc1N1Y2Nlc3MoKSk7Ci0KLSAgICAgICAgICAgIHN0YXRlbWVudC5leGVjdXRlKCk7
CiAgICAgICAgIH0KICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQogICAgICAgICB7CkBAIC0z
MzcsNiArMjc4LDE2MiBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgcHJp
dmF0ZSB2b2lkIGluc2VydEF1ZGl0RGF0YSgKKyAgICAgICAgUHJlcGFyZWRTdGF0ZW1lbnQgICAg
ICAgICAgICAgICAgICAgc3RhdGVtZW50LAorICAgICAgICBBdWRpdERhdGEgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdWRpdERhdGEpCisgICAgICAgIHRocm93cyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2VwdGlvbiAKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IDE7Cisg
ICAgICAgIAorICAgICAgICAvL2pvYl9ncmlkX2lkCisgICAgICAgIEVuZHBvaW50UmVmZXJlbmNl
VHlwZSBqb2JFbmRwb2ludCA9IGF1ZGl0RGF0YS5nZXRKb2JFbmRwb2ludCgpOworICAgICAgICBp
ZiAoam9iRW5kcG9pbnQgIT0gbnVsbCkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGVtZW50
LnNldFN0cmluZygKKyAgICAgICAgICAgICAgICBpbmRleCsrLAorICAgICAgICAgICAgICAgIEVQ
UlV0aWwuZ2V0RVBSQXNTdHJpbmcoam9iRW5kcG9pbnQpKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywg
YXVkaXREYXRhLmdldEpvYkhhbmRsZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vc3ViamVj
dF9uYW1lCisgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywgYXVkaXREYXRhLmdl
dFN1YmplY3ROYW1lKCkpOworCisgICAgICAgIC8vdXNlcm5hbWUKKyAgICAgICAgc3RhdGVtZW50
LnNldFN0cmluZyhpbmRleCsrLCBhdWRpdERhdGEuZ2V0VXNlcm5hbWUoKSk7CisKKyAgICAgICAg
Ly9pZGVtcG90ZW5jZV9pZAorICAgICAgICBzdGF0ZW1lbnQuc2V0U3RyaW5nKGluZGV4KyssIGF1
ZGl0RGF0YS5nZXRJZGVtcG90ZW5jZUlkKCkpOworCisgICAgICAgIC8vY3JlYXRpb25fdGltZQor
ICAgICAgICBUaW1lc3RhbXAgY3JlYXRpb25UaW1lID0gYXVkaXREYXRhLmdldENyZWF0aW9uVGlt
ZSgpOworICAgICAgICBpZiAoY3JlYXRpb25UaW1lICE9IG51bGwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRlbWVudC5zZXRUaW1lc3RhbXAoaW5kZXgrKywgY3JlYXRpb25UaW1lKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlbWVudC5z
ZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgaW5kZXgrKywKKyAgICAgICAgICAgICAgICBhdWRp
dERhdGEuZ2V0Q3JlYXRpb25UaW1lU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgLy9n
bG9idXNfdG9vbGtpdF92ZXJzaW9uCisgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgr
KywgYXVkaXREYXRhLmdldEdsb2J1c1Rvb2xraXRWZXJzaW9uKCkpOworCisgICAgICAgIC8vcmVz
b3VyY2VfbWFuYWdlcl90eXBlCisgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywg
YXVkaXREYXRhLmdldFJlc291cmNlTWFuYWdlclR5cGUoKSk7CisKKyAgICAgICAgLy9qb2JfZGVz
Y3JpcHRpb24KKyAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZygKKyAgICAgICAgICAgIGluZGV4
KyssCisgICAgICAgICAgICBhdWRpdERhdGEuZ2V0Sm9iRGVzY3JpcHRpb24oKSk7CisKKyAgICAg
ICAgLy9zdWNjZXNzX2ZsYWcKKyAgICAgICAgc3RhdGVtZW50LnNldEJvb2xlYW4oCisgICAgICAg
ICAgICBpbmRleCsrLAorICAgICAgICAgICAgYXVkaXREYXRhLmlzU3VjY2VzcygpKTsKKworICAg
ICAgICAvL2ZpbmlzaGVkX2ZsYWcKKyAgICAgICAgc3RhdGVtZW50LnNldEJvb2xlYW4oCisgICAg
ICAgICAgICBpbmRleCsrLAorICAgICAgICAgICAgYXVkaXREYXRhLmlzRmluaXNoZWQoKSk7CisK
KyAgICAgICAgc3RhdGVtZW50LmV4ZWN1dGUoKTsKKyAgICB9CisgICAgICAgIAorICAgIHByaXZh
dGUgdm9pZCB1cGRhdGVBdWRpdERhdGEoCisgICAgICAgIFByZXBhcmVkU3RhdGVtZW50ICAgICAg
ICAgICAgICAgICAgIHN0YXRlbWVudCwKKyAgICAgICAgQXVkaXREYXRhICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXVkaXREYXRhKQorICAgICAgICB0aHJvd3MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFeGNlcHRpb24KKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IDE7CisgICAg
ICAgIC8vbG9jYWxfam9iX2lkCisgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywg
YXVkaXREYXRhLmdldExvY2FsSm9iSWQoKSk7CisKKyAgICAgICAgLy9xdWV1ZWRfdGltZQorICAg
ICAgICBUaW1lc3RhbXAgcXVldWVkVGltZSA9IGF1ZGl0RGF0YS5nZXRRdWV1ZWRUaW1lKCk7Cisg
ICAgICAgIGlmIChxdWV1ZWRUaW1lICE9IG51bGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRlbWVudC5zZXRUaW1lc3RhbXAoaW5kZXgrKywgcXVldWVkVGltZSk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZW1lbnQuc2V0U3RyaW5nKAor
ICAgICAgICAgICAgICAgIGluZGV4KyssCisgICAgICAgICAgICAgICAgYXVkaXREYXRhLmdldFF1
ZXVlZFRpbWVTdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICAvL3N0YWdlX2luX2dyaWRf
aWQKKyAgICAgICAgRW5kcG9pbnRSZWZlcmVuY2VUeXBlIHN0YWdlSW5FbmRwb2ludAorICAgICAg
ICAgICA9IGF1ZGl0RGF0YS5nZXRTdGFnZUluRW5kcG9pbnQoKTsKKyAgICAgICAgaWYgKHN0YWdl
SW5FbmRwb2ludCAhPSBudWxsKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZW1lbnQuc2V0
U3RyaW5nKAorICAgICAgICAgICAgICAgIGluZGV4KyssCisgICAgICAgICAgICAgICAgRVBSVXRp
bC5nZXRFUFJBc1N0cmluZyhzdGFnZUluRW5kcG9pbnQpKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywg
bnVsbCk7CisgICAgICAgIH0KKworICAgICAgICAvL3N0YWdlX291dF9ncmlkX2lkCisgICAgICAg
IEVuZHBvaW50UmVmZXJlbmNlVHlwZSBzdGFnZU91dEVuZHBvaW50CisgICAgICAgICAgICA9IGF1
ZGl0RGF0YS5nZXRTdGFnZU91dEVuZHBvaW50KCk7CisgICAgICAgIGlmIChzdGFnZU91dEVuZHBv
aW50ICE9IG51bGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmco
CisgICAgICAgICAgICAgICAgaW5kZXgrKywKKyAgICAgICAgICAgICAgICBFUFJVdGlsLmdldEVQ
UkFzU3RyaW5nKHN0YWdlT3V0RW5kcG9pbnQpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlbWVudC5zZXRTdHJpbmcoaW5kZXgrKywgbnVsbCk7
CisgICAgICAgIH0KKworICAgICAgICAvL2NsZWFuX3VwX2dyaWRfaWQKKyAgICAgICAgRW5kcG9p
bnRSZWZlcmVuY2VUeXBlIGNsZWFuVXBFbmRwb2ludAorICAgICAgICAgICAgPSBhdWRpdERhdGEu
Z2V0Q2xlYW5VcEVuZHBvaW50KCk7CisgICAgICAgIGlmIChjbGVhblVwRW5kcG9pbnQgIT0gbnVs
bCkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZygKKyAgICAgICAg
ICAgICAgICBpbmRleCsrLAorICAgICAgICAgICAgICAgIEVQUlV0aWwuZ2V0RVBSQXNTdHJpbmco
Y2xlYW5VcEVuZHBvaW50KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0ZW1lbnQuc2V0U3RyaW5nKGluZGV4KyssIG51bGwpOworICAgICAgICB9
CisKKyAgICAgICAgLy9zdWNjZXNzX2ZsYWcKKyAgICAgICAgc3RhdGVtZW50LnNldEJvb2xlYW4o
CisgICAgICAgICAgICBpbmRleCsrLAorICAgICAgICAgICAgYXVkaXREYXRhLmlzU3VjY2Vzcygp
KTsKKworICAgICAgICAvL2ZpbmlzaGVkX2ZsYWcKKyAgICAgICAgc3RhdGVtZW50LnNldEJvb2xl
YW4oCisgICAgICAgICAgICBpbmRleCsrLAorICAgICAgICAgICAgYXVkaXREYXRhLmlzRmluaXNo
ZWQoKSk7CisKKyAgICAgICAgLy9qb2JfZ3JpZF9pZAorICAgICAgICBFbmRwb2ludFJlZmVyZW5j
ZVR5cGUgam9iRW5kcG9pbnQgPSBhdWRpdERhdGEuZ2V0Sm9iRW5kcG9pbnQoKTsKKyAgICAgICAg
aWYgKGpvYkVuZHBvaW50ICE9IG51bGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlbWVu
dC5zZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgaW5kZXgrKywKKyAgICAgICAgICAgICAgICBF
UFJVdGlsLmdldEVQUkFzU3RyaW5nKGpvYkVuZHBvaW50KSk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZW1lbnQuc2V0U3RyaW5nKGluZGV4Kyss
IGF1ZGl0RGF0YS5nZXRKb2JIYW5kbGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZW1l
bnQuZXhlY3V0ZSgpOworICAgIH0KKwogICAgIHByaXZhdGUgc3RhdGljIEF1ZGl0RGF0YSB0b0F1
ZGl0RGF0YSgKICAgICAgICAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N2
UmVjb3JkLAogICAgICAgICBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJi
eSkKQEAgLTQ0Miw2ICs1MzksMTEgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBh
dWRpdERhdGEuc2V0U3VjY2VzcyhCb29sZWFuLnZhbHVlT2YodG9rZW4pLmJvb2xlYW5WYWx1ZSgp
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChUQUJM
RV9DT0xVTU5fTkFNRVNbaW5kZXhdLmVxdWFscygiZmluaXNoZWRfZmxhZyIpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGF1ZGl0RGF0YS5zZXRGaW5pc2hlZChCb29sZWFuLnZhbHVl
T2YodG9rZW4pLmJvb2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBhdWRpdERhdGE7CkBAIC01NzMsNiArNjc1LDggQEAKICIgU1VDQ0VTU19G
TEFHICAgICAgICAgICAgICAgIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nXG4iKwogIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGpvYiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IChc
InRydWVcIiksIG9yIGZhaWxlZFxuIisKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChc
ImZhbHNlXCIpLlxuIisKKyIgRklOSVNIRURfRkxBRyAgICAgICAgICAgICAgIEEgYm9vbGVhbiB2
YWx1ZSBpbmRpY2F0aW5nXG4iKworIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGpv
YiBoYXMgZmluaXNoZWQgZXhlY3V0aW5nLlxuIisKICJcbiIrCiAiQ09ORklHLUZJTEVOQU1FOiBB
IGZpbGVuYW1lIHBvaW50aW5nIHRvIGEgcHJvcGVydHkgZmlsZSB3aGljaCBjb250YWlucyBjb25m
aWd1cmF0aW9uXG4iKwogInByb3BlcnRpZXMuIFZhbGlkIHByb3BlcnRpZXMgYXJlOiBVUkwsIERS
SVZFUkNMQVNTLCBVU0VSTkFNRSwgYW5kIFBBU1NXT1JELlxuIjsKQEAgLTcyMCw3ICs4MjQsMTIg
QEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIlJlYWQgcmVj
b3JkOlxuIiArIHJlY29yZCk7CiAgICAgICAgICAgICAgICAgQXVkaXREYXRhIGF1ZGl0RGF0YSA9
IHRvQXVkaXREYXRhKHJlY29yZCwgZGVyYnkpOwotICAgICAgICAgICAgICAgIGF1ZGl0TG9nZ2Vy
LmluZm8oYXVkaXREYXRhKTsKKyAgICAgICAgICAgICAgICBBdWRpdFByb2Nlc3MgYXVkaXRQcm9j
ZXNzID0gbmV3IEF1ZGl0UHJvY2VzcygKKyAgICAgICAgICAgICAgICAgICAgQXVkaXRQcm9jZXNz
LlNUQVJULAorICAgICAgICAgICAgICAgICAgICBhdWRpdERhdGEpOworICAgICAgICAgICAgICAg
IGF1ZGl0TG9nZ2VyLmluZm8oYXVkaXRQcm9jZXNzKTsKKyAgICAgICAgICAgICAgICBhdWRpdFBy
b2Nlc3Muc2V0UHJvY2VzcyhBdWRpdFByb2Nlc3MuRE9ORSk7CisgICAgICAgICAgICAgICAgYXVk
aXRMb2dnZXIuaW5mbyhhdWRpdFByb2Nlc3MpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
U3lzdGVtLmV4aXQoMCk7CiAgICAgICAgIH0KZGlmZiAtTmF1ciB3cy1ncmFtLm9sZC91dGlscy9q
YXZhL3NvdXJjZS9zcmMvb3JnL2dsb2J1cy9leGVjL3V0aWxzL2F1ZGl0L0F1ZGl0UHJvY2Vzcy5q
YXZhIHdzLWdyYW0vdXRpbHMvamF2YS9zb3VyY2Uvc3JjL29yZy9nbG9idXMvZXhlYy91dGlscy9h
dWRpdC9BdWRpdFByb2Nlc3MuamF2YQotLS0gd3MtZ3JhbS5vbGQvdXRpbHMvamF2YS9zb3VyY2Uv
c3JjL29yZy9nbG9idXMvZXhlYy91dGlscy9hdWRpdC9BdWRpdFByb2Nlc3MuamF2YQkxOTcwLTAx
LTAxIDA5OjMwOjAwLjAwMDAwMDAwMCArMDkzMAorKysgd3MtZ3JhbS91dGlscy9qYXZhL3NvdXJj
ZS9zcmMvb3JnL2dsb2J1cy9leGVjL3V0aWxzL2F1ZGl0L0F1ZGl0UHJvY2Vzcy5qYXZhCTIwMDct
MDMtMDggMTA6MTc6MjcuMDAwMDAwMDAwICsxMDMwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgMTk5OS0yMDA2IFVuaXZlcnNpdHkgb2YgQ2hpY2FnbworICogCisgKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
KyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
ICogCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqIAor
ICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3Jn
Lmdsb2J1cy5leGVjLnV0aWxzLmF1ZGl0OworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxv
Z2dpbmcuTG9nOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3Rvcnk7
CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Owor
CitwdWJsaWMgY2xhc3MgQXVkaXRQcm9jZXNzCit7CisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nIGxv
Z2dlcgorICAgICAgICA9IExvZ0ZhY3RvcnkuZ2V0TG9nKEF1ZGl0UHJvY2Vzcy5jbGFzcy5nZXRO
YW1lKCkpOworICAgIAorICAgIHByaXZhdGUgU3RyaW5nIHByb2Nlc3MgPSBudWxsOworICAgIHBy
aXZhdGUgQXVkaXREYXRhIGF1ZGl0RGF0YSA9IG51bGw7CisKKyAgICBwcml2YXRlIHN0YXRpYyBm
aW5hbCBMaXN0IHByb2Nlc3NlcyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICBwdWJsaWMgc3RhdGlj
IGZpbmFsIFN0cmluZyBTVEFSVCA9ICJTdGFydCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBT
dHJpbmcgU1VCTUlUID0gIlN1Ym1pdCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcg
RE9ORSA9ICJEb25lIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGQUlMRUQgPSAi
RmFpbGVkIjsKKworICAgIHN0YXRpYyB7CisgICAgICAgIHByb2Nlc3Nlcy5hZGQoU1RBUlQpOwor
ICAgICAgICBwcm9jZXNzZXMuYWRkKFNVQk1JVCk7CisgICAgICAgIHByb2Nlc3Nlcy5hZGQoRE9O
RSk7CisgICAgICAgIHByb2Nlc3Nlcy5hZGQoRkFJTEVEKTsKKyAgICB9CisKKyAgICBwdWJsaWMg
QXVkaXRQcm9jZXNzKCkgeyB9CisKKyAgICBwdWJsaWMgQXVkaXRQcm9jZXNzKAorICAgICAgICBT
dHJpbmcgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLAorICAgICAgICBBdWRpdERhdGEg
ICAgICAgICAgICAgICAgICAgICBhdWRpdERhdGEpCisgICAgeworICAgICAgICBpZiAoIXByb2Nl
c3Nlcy5jb250YWlucyhwcm9jZXNzKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJn
dW1lbnRFeGNlcHRpb24oKTsgCisgICAgICAgIHRoaXMucHJvY2VzcyA9IHByb2Nlc3M7CisgICAg
ICAgIHRoaXMuYXVkaXREYXRhID0gYXVkaXREYXRhOworICAgIH0KKworICAgIHB1YmxpYyB2b2lk
IHNldFByb2Nlc3MoU3RyaW5nIHByb2Nlc3MpCisgICAgeworICAgICAgICBpZiAoIXByb2Nlc3Nl
cy5jb250YWlucyhwcm9jZXNzKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1l
bnRFeGNlcHRpb24oKTsKKyAgICAgICAgdGhpcy5wcm9jZXNzID0gcHJvY2VzczsKKyAgICB9Cisg
ICAgcHVibGljIFN0cmluZyBnZXRQcm9jZXNzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9j
ZXNzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEF1ZGl0RGF0YShBdWRpdERhdGEgYXVk
aXREYXRhKQorICAgIHsKKyAgICAgICAgdGhpcy5hdWRpdERhdGEgPSBhdWRpdERhdGE7CisgICAg
fQorICAgIHB1YmxpYyBBdWRpdERhdGEgZ2V0QXVkaXREYXRhKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhdWRpdERhdGE7CisgICAgfQorCit9Cg==
</data>        

          </attachment>
      

    </bug>

</bugzilla>