FW: [xmlc] Re: [enhydra] java.lang.StackOverflowError File attached
"Mohammed Rafeeq" <[email protected]> Tue, 5 Dec 2006 11:44:14 -0800
| Newsgroups | gmane.comp.java.enhydra.general |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. ------_=_NextPart_001_01C718A5.BE334AE3 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable This is a big show stopper. my project is stalled. Need some help If the 'syncWithDocument(Node node)' cannot be optimized. Cant the stack size be increased by mentioning the '-xss' option from appropriate command line options. I need a solution Please help. For people viewing this message freshly. The attached file fails on 'xmlc' My project is stalled due to this problem. -rafeeq =20 -----Original Message----- From: Mohammed Rafeeq [mailto:[email protected]]=20 Sent: Thursday, November 30, 2006 1:34 PM To: [email protected] Subject: RE: [xmlc] Re: [enhydra] java.lang.StackOverflowError File attached I hit the limit again. Now there is no way that I can change my .html file to trim down the number of 'id' attributes. A fix is required. Please let know which file to change to optimise this. -rafeeq=20 -----Original Message----- From: Slobodan Vujasinovic [mailto:[email protected]] Sent: Wednesday, August 30, 2006 3:07 AM To: [email protected] Subject: Re: [xmlc] Re: [enhydra] java.lang.StackOverflowError File attached Hi, I don't think that recursion is causing the problem here! I think that problem lies in large number of 'else if' statements (inside 'syncWithDocument(Node node)' method) and that this is the part of code (logic) that needs to get reimplemented (maybe by using some generic setter methods and/or Map objects). Regards, Slobodan Vujasinovic Enhydra Development Team Jacob Kjome wrote: > At 04:31 PM 8/29/2006, you wrote: > > My html has grown further and it has reached the limit again. It=20 > >fails to compile. > > > >My worry is why is the parameter stack size -xss that I specify in=20 > >enhydrahome\ant.bat is not picked up > > > > You'd want to check with the Ant-user list to see how to best set that > using ant.bat. > > >I mention this in xmlc.bat too. > > I haven't been distributing a new version of xmlc.bat for quite a=20 > while. It would make sense, but I haven't really gotten around to it. > For now, it is not a priority, unless you want to contribute it. > I think there does exist a version in the source, but I haven't=20 > modified the build to put this in a proper location in the=20 > distribution and I haven't verified how well it works. You are=20 > welcome to look into it. > > > > >A fix is required. > > I think we can do more here. The crux of the matter is determining=20 > the best way to avoid excessive recursion. Again, normally it isn't a > problem because usually there are not so many Id's. However, since=20 > you do have many Id's, we may as well come up with a solution. Here's > a much smaller version of the generated method.... > > protected void syncWithDocument(Node node) { > if (node instanceof Element) { > String id =3D ((Element)node).getAttribute("id"); > > if (id.length() =3D=3D 0) { > } else if (id.equals("hello")) { > $element_Hello =3D > (org.enhydra.xml.xhtml.dom.HTMLSpanElement)node; > } > } > > Node child =3D node.getFirstChild(); > while (child !=3D null) { > syncWithDocument(child); > child =3D child.getNextSibling(); > } > } > > The challenge is to determine the best way to implement this without=20 > recursion. Of course, recursion here makes the code short, sweet, and > clean. The problem is that too much recursion brings down the JVM. > One possibility would be putting first block of code inside a while=20 > loop and test the next sibling nodes inside that loop and then=20 > evaluating them rather than calling syncWithDocument(Node)=20 > recursively. That would be a pretty straightforward way, but the=20 > while loop itself would be massively large in your case. I'm not sure > it would matter, but it wouldn't look quite as pretty as the recursive > version does. Of course there may be other approaches. That's why=20 > I'm opening this up to a discussion. > > I'd like to hear as many suggestions as possible; preferably fully=20 > coded solutions. Code away!!! > > Jake > > > > >-rafeeq > > > > > >-----Original Message----- > >From: Jacob Kjome [mailto:[email protected]] > >Sent: Wednesday, August 16, 2006 9:27 PM > >To: [email protected] > >Cc: Mohammed Rafeeq; [email protected] > >Subject: RE: [xmlc] Re: [enhydra] java.lang.StackOverflowError File=20 > >attached > > > > > >Ok, I think I see the problem. The java source file is just too big=20 > >for the java compiler to handle. The source file, even with deferred > >parsing, which stores zero information on how to actually build the=20 > >DOM, is 535k and 18,579 lines long! That's a *lot* of Id's!!! > > > >As such, I don't think this is a matter of an XMLC bug, per-say. > >Though, then thing it seems to be bombing out on is the massive if=20 > >statement in the recursive method syncWithDocument(Node node). The=20 > >thing is, normally, this doesn't cause problems. It's just when this > >upper limit of Id's is hit. So, I don't think it's a high priority=20 > >issue to search for a fix, but it couldn't hurt to find an=20 > >optimization here. > > > >I think the approach you took to solving the issue - removing the=20 > >excess Id's and taking a different approach in your presentation=20 > >object - is the proper one. > > > >If anyone has suggestions on improving the generated and recursive=20 > >syncWithDocument(Node node) method, I'd be glad to hear it. > > > > > >Jake > > > >At 12:59 PM 8/16/2006, Jacob Kjome wrote: > > > > > >Glad to hear you were able to work around it. I will try your > >original file > > >when I get home tonight to see if it does, indeed, still fail with > >deferred > > >parsing. If it does, its definitely something that should be > >investigated and > > >fixed. I just noticed that you reported this issue in the XMLC > >objectweb forge > > >tracker. I was going to suggest you do that before I saw that you=20 > > >already did. > > >Thanks! > > > > > >Jake > > > > > > > > >Quoting Mohammed Rafeeq <[email protected]>: > > > > > >> I am not sure how to check if the command line utility passes the > > >> "-for-deferred-parsing" flag to XMLC. > > >> > > >> Now I cleaned up my html and moved all my javascript, css to > >external > > >> files. More over I converted > > >> > > >> <td id =3D"abc"> <input type =3D"text" id=3D"xyz"></td> > > >> > > >> To > > >> > > >> <td><input type =3D"text" id=3D"xyz"></td> > > >> > > >> And now it compiles. I changed the way my presentation object is=20 > > >> reaching each table cell element and manipulating the content. > > >> > > >> But I am still curious enough to know why the earlier file failed > > >> to compile. If it is a bug in xmlc we can fix it . > > >> > > >> Thank you. > > >> -rafeeq > > >> > > >> > > >> > > >> > > >> > > >> -----Original Message----- > > >> From: Jacob Kjome [mailto:[email protected]] > > >> Sent: Wednesday, August 16, 2006 10:07 AM > > >> To: Mohammed Rafeeq > > >> Cc: [email protected]; [email protected] > > >> Subject: RE: [xmlc] Re: [enhydra] java.lang.StackOverflowError=20 > > >> File attached > > >> > > >> Quoting Mohammed Rafeeq <[email protected]>: > > >> > > >> > The file that is failing to compile is attached. > > >> > > > >> > I tried using deferred parsing by specifying > > >> > > > >> > C:\xmlc -for-deferred-parsing CARGO2QC.html > > >> > > > >> > I get the same error > > >> > > >> Are you sure that the command line utility you are using passes=20 > > >> the "-for-deferred-parsing" flag to XMLC to evaluate as a=20 > > >> metadata > >option? > > >> > > >> > > > >> > I am using I am using enhydra 5.1 and xmlc.jar: 2.2.5.. I am > >working > > >> > on Windows xp professional. I tried downloading the latest > >xmlc.jar > > >> > but it did not help either. I tried downloading the latest=20 > > >> > version enhydra app > > >> > server(7.x) , created a application and tried to compile this=20 > > >> > file > >, > > >> > it did not help either. > > >> > > > >> > Since this is a show stopper I am proceeding by chopping and > >reducing > > >> > a few content in my html file. > > >> > > > >> > > >> Is the full content of the HTML file needed or is some of it just > >mockup > > >> markup that could be removed? You can set a CSS class name to=20 > > >> each > >row > > >> in the table, such as "removeMe", that is just mockup data and > >provide > > >> the XMLC command line option "-delete-class removeMe" or the XML... > > >> > > >> <domEdits> > > >> <deleteElement elementClasses=3D"removeMe"/> </domEdits> > > >> > > >> > I wanted to debug by downloading the source code. But did not=20 > > >> > know > >how > > >> > > >> > to download that particular version from sourceforge.net > > >> > > > >> > > >> You can check out the CVS for the tag XMLC_2_2_X (where X is the > >version > > >> you are interested in). I would try XMLC_2_2_10, since it is the > >latest > > >> and has Eclipse project files available for it. That will make=20 > > >> it easier to get up and running. > > >> See the following page for information on checking out XMLC CVS=20 > > >> source... > > >> > > >> http://forge.objectweb.org/scm/?group_id=3D49 > > >> > > >> If you don't currently use a CVS client, I recommend using > >TortoiseCVS > > >> at http://www.tortoisecvs.org/ . It makes things easy. Either=20 > > >> go > >for > > >> the 1.8.xx versions or the 1.9.11 version. The latest versions=20 > > >> of > >1.9, > > >> including 1.9.12 through 1.9.14, seem to suffer from various > >problems > > >> that prevent proper usage. > > >> I hope 1.9.15 will clear things up, but it isn't out yet. > > >> > > >> Jake > > >> > > >> > Thanks, > > >> > -rafeeq > > >> > > > >> > > > >> > > > >> > > > >> > -----Original Message----- > > >> > From: Jacob Kjome [mailto:[email protected]] > > >> > Sent: Tuesday, August 15, 2006 9:21 PM > > >> > To: [email protected]; [email protected] > > >> > Cc: Mohammed Rafeeq > > >> > Subject: Re: [xmlc] Re: [enhydra] java.lang.StackOverflowError > > >> > > > >> > > > >> > What version of XMLC is being used? Can you provide the file=20 > > >> > that causes the error? Have you tried using XMLC's deferred=20 > > >> > parsing > > >> feature? > > >> > I think deferred parsing would solve this issue. > > >> > > > >> > Jake > > >> > > > >> > At 03:25 AM 8/14/2006, Slobodan Vujasinovic wrote: > > >> > >Hi, > > >> > > > > >> > >I've forwarded your message to XMLC mailing list! > > >> > >Maybe someone else already had this problem with large HTML > >pages!? > > >> > > > > >> > >Which Enhydra and XMLC versions are you using currently=20 > > >> > (please > >post > > >> > >your response on XMLC mailing list too - [email protected])? > > >> > > > > >> > >Regards, > > >> > > Slobodan Vujasinovic > > >> > >Enhydra Development Team > > >> > > > > >> > > > > >> > > > > >> > >[email protected] wrote: > > >> > > > > >> > >>Hi all > > >> > >> > > >> > >>I have a big html file ( consisting of 550 <td> cells) .=20 > > >> > when i > >run > > >> > > >> > the xmlc >> >>When I run the ant task to compile my html to > >.java > > >> > files it throws >an exception like below. ( i run a xmlc task) > >>> > > >> > >>xmlc: > > >> > >> [xmlc] CARGO2QC.html --> CARGO2QC.class > > >> > >> [xmlc] >>> parsing > > >> > >C:\xdx\svndatafinder\src\datafinder\resources\CARGO2QC.html > > >> > >> [xmlc] >>> using DOM Factory class: > > >> > >org.enhydra.xml.xmlc.dom.lazydom.LazyHTMLDomFactory > > >> > >> [xmlc] >>> generating code > > >> > >> [xmlc] creating class: > > >> > >C:\xdx\svndatafinder\classes\Generated > > >> > >Source\datafinder\presentation\CARGO2QCHTML.java > > >> > >> [xmlc] >>> compiling code > > >> > >> [xmlc] javac -d C:\xdx\svndatafinder\classes -encoding > > >> > >ISO-8859-1 C:\xdx\svndatafinder\classes\Generated > > >> > >Source\datafinder\presentation\CARGO2QCHTML.java > > >> > >> > > >> > >> > > >> > >>The system is out of resources. > > >> > >>Consult the following stack trace for details. > > >> > >>java.lang.StackOverflowError > > >> > >> [xmlc] Error: compile of generated java code failed > > >> > >> [xmlc] org.enhydra.xml.xmlc.XMLCException: compile of > > >> generated > > >> > >java code failed > > >> > >> [xmlc] at > > >> > > >>org.enhydra.xml.xmlc.misc.ProcessRunner.run(ProcessRunner.java:283) > > >> > >> [xmlc] at > > >> > > > >> > >>org.enhydra.xml.xmlc.codegen.JavaCompile.compile(JavaCompile.java:14 > >>5) > > >> > >> [xmlc] at > > >> > org.enhydra.xml.xmlc.compiler.Javac.compile(Javac.java:88) > > >> > >> [xmlc] at > > >> > > > >> > > > >> > >>org.enhydra.xml.xmlc.compiler.Compiler.compileJavaSource(Compiler.java : > > >> > 153) > > >> > >> [xmlc] at > > >> > > > >> > > >>org.enhydra.xml.xmlc.compiler.Compiler.compileDocument(Compiler.java: > > >> > >18 > > >> > 5) > > >> > >> [xmlc] at > > >> > > >>org.enhydra.xml.xmlc.compiler.Compiler.compile(Compiler.java:226) > > >> > >> [xmlc] at > > >> > >org.enhydra.xml.xmlc.commands.xmlc.XMLC.compile(XMLC.java:132) > > >> > >> [xmlc] at > > >> > > > >> > > >>org.enhydra.xml.xmlc.commands.xmlc.XMLC.compileHandleErrors(XMLC.jav > >>a > > >> > >:1 > > >> > 42) > > >> > >> [xmlc] at > > >> > org.enhydra.xml.xmlc.commands.xmlc.XMLC.main(XMLC.java:153) > > >> > >> [xmlc] at > > >> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > >> > >> [xmlc] at > > >> > > > >> > > >>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. > > >> > >ja > > >> > va:39) > > >> > >> [xmlc] at > > >> > > > >> > > >>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce > >>s > > >> > s > > >> > >orImpl.java:25) > > >> > >> [xmlc] at > >java.lang.reflect.Method.invoke(Method.java:324) > > >> > >> [xmlc] at com.lutris.ant.taskdefs.Xmlc.execute(Unknown > > >> > Source) > > >> > >> [xmlc] at > >org.apache.tools.ant.Task.perform(Task.java:317) > > >> > >> [xmlc] at > > >> > org.apache.tools.ant.Target.execute(Target.java:309) > > >> > >> [xmlc] at > > >> > org.apache.tools.ant.Target.performTasks(Target.java:334) > > >> > >> [xmlc] at > > >> > >org.apache.tools.ant.Project.executeTarget(Project.java:1306) > > >> > >> [xmlc] at > > >> > >org.apache.tools.ant.Project.executeTargets(Project.java:1250) > > >> > >> [xmlc] at > > >> org.apache.tools.ant.Main.runBuild(Main.java:610) > > >> > >> [xmlc] at > >org.apache.tools.ant.Main.start(Main.java:196) > > >> > >> [xmlc] at > >org.apache.tools.ant.Main.main(Main.java:235) > > >> > >> > > >> > >> > > >> > >>On researching I found out that the java stack is getting > > >> overflown. > > >> > >I tried to increase the java stack size and os stack size by=20 > > >> > mentioning >> >>%JAVA% -Xms256M -Xmx512M -Xss1000K -Xoss5000K > >-cp > > >> > %CLASSPATH% ......... > > >> > >> > > >> > >>in %ENHYDRA_HOME%/bin/ant.bat >> >>I am using jdk 1.4.2=20 > > >> > and the operating system is windows xp professional. > > >> > >> > > >> > >>but this did not solve the problem. Any leads will be much=20 > > >> > appreciated >> >>I have posted this problem in this forum too > >>> > > >> > > >>>http://forums.devx.com/showthread.php?t=3D155222&highlight=3Djava.lang. > >>>S > > >> > >>t > > >> > >ackOverflowError > > >> > >> > > >> > >>Thanksm > > >> > >>-Rafeeq([email protected]) > > >> > >> > > >> > >> > > >> > >> > > >> > > > >> > > >>>------------------------------------------------------------------- > >>>- > > >> > >>-- > > >> > -- > > >> > >> > > >> > >> > > >> > >>-- > > >> > >>You receive this message as a subscriber of the=20 > > >> > [email protected] > > >> > >mailing list. > > >> > >>To unsubscribe: mailto:[email protected] > > >> > >>For general help: mailto:[email protected]?subject=3Dhelp > > >> > >>ObjectWeb mailing lists service home page: > > >> > http://www.objectweb.org/wws >> >> > > > > > >> > >-- > > >> > >You receive this message as a subscriber of the > >[email protected] > > >> > >mailing list. > > >> > >To unsubscribe: mailto:[email protected] > > >> > >For general help: mailto:[email protected]?subject=3Dhelp > > >> > >ObjectWeb mailing lists service home page: > > >> > http://www.objectweb.org/wws > > >> > > > >> > > > >> > > >> > > >> > > > > > > > > > > > > > > > > > > > > >-- > > >You receive this message as a subscriber of the [email protected]=20 > > >mailing list. > > >To unsubscribe: mailto:[email protected] > > >For general help: mailto:[email protected]?subject=3Dhelp > > >ObjectWeb mailing lists service home page: > >http://www.objectweb.org/wws > > >----------------------------------------------------------------------- >- > > >-- >You receive this message as a subscriber of the [email protected] mailing list. >To unsubscribe: mailto:[email protected] >For general help: mailto:[email protected]?subject=3Dhelp >ObjectWeb mailing lists service home page: http://www.objectweb.org/wws >=20=20 > ------_=_NextPart_001_01C718A5.BE334AE3 Content-Type: application/octet-stream; name="LARGOQCeCRFViewPO.java" Content-Transfer-Encoding: base64 Content-Description: LARGOQCeCRFViewPO.java Content-Disposition: attachment; filename="LARGOQCeCRFViewPO.java" cGFja2FnZSBkYXRhZmluZGVyLnByZXNlbnRhdGlvbjsNCg0KLy8gRW5oeWRy YSBTdXBlclNlcnZsZXQgaW1wb3J0cw0KaW1wb3J0IGphdmEubGFuZy5yZWZs ZWN0Lk1ldGhvZDsNCmltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1h dDsNCmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KaW1wb3J0IGphdmEu dXRpbC5BcnJheXM7DQppbXBvcnQgamF2YS51dGlsLkRhdGU7DQppbXBvcnQg amF2YS51dGlsLkl0ZXJhdG9yOw0KaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0K aW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7DQppbXBvcnQgamF2YS5s YW5nLnJlZmxlY3QuKjsNCmltcG9ydCBvcmcuZW5oeWRyYS54bWwueG1sYy5Y TUxDVXRpbDsNCmltcG9ydCBvcmcuZW5oeWRyYS54bWwueG1sYy5YTUxPYmpl Y3Q7DQppbXBvcnQgb3JnLnczYy5kb20uTm9kZTsNCmltcG9ydCBvcmcudzNj LmRvbS5OYW1lZE5vZGVNYXA7DQppbXBvcnQgb3JnLnczYy5kb20uTm9kZUxp c3Q7DQppbXBvcnQgb3JnLnczYy5kb20uaHRtbC5IVE1MSW5wdXRFbGVtZW50 Ow0KaW1wb3J0IG9yZy53M2MuZG9tLmh0bWwuSFRNTE9wdGlvbkVsZW1lbnQ7 DQppbXBvcnQgb3JnLnczYy5kb20uaHRtbC5IVE1MVGFibGVDZWxsRWxlbWVu dDsNCmltcG9ydCBvcmcudzNjLmRvbS5odG1sLkhUTUxUYWJsZVJvd0VsZW1l bnQ7DQppbXBvcnQgb3JnLnczYy5kb20uaHRtbC4qOw0KDQppbXBvcnQgY29t Lmx1dHJpcy5hcHBzZXJ2ZXIuc2VydmVyLmh0dHBQcmVzZW50YXRpb24uQ2xp ZW50UGFnZVJlZGlyZWN0RXhjZXB0aW9uOw0KaW1wb3J0IGNvbS5sdXRyaXMu YXBwc2VydmVyLnNlcnZlci5odHRwUHJlc2VudGF0aW9uLkh0dHBQcmVzZW50 YXRpb25FeGNlcHRpb247DQppbXBvcnQgY29tLmx1dHJpcy5hcHBzZXJ2ZXIu c2VydmVyLmh0dHBQcmVzZW50YXRpb24uU2VydmVyUGFnZVJlZGlyZWN0RXhj ZXB0aW9uOw0KDQppbXBvcnQgZGF0YWZpbmRlci5idXNpbmVzcy5MdW5nQ0RP dXRjb21lOw0KaW1wb3J0IGRhdGFmaW5kZXIuYnVzaW5lc3MuVHJhbnNwbGFu dFV0aWw7DQppbXBvcnQgZGF0YWZpbmRlci5kYXRhLkx1bmdPdXRjb21lUXVl cnk7DQppbXBvcnQgZGF0YWZpbmRlci5kYXRhLkxhcmdvUXVlcnk7DQppbXBv cnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7DQppbXBvcnQgamF2YS51dGls LnJlZ2V4LlBhdHRlcm47DQppbXBvcnQgZGF0YWZpbmRlci5wcmVzZW50YXRp b24uKjsNCmltcG9ydCBkYXRhZmluZGVyLmJ1c2luZXNzLio7DQoNCi8vSU1Q T1JUQU5UIE5PVEUgQU5ZIENIQU5HRSBUSEFUIEhBUFBFTlMgSU4gQlVTSU5F U1MgTE9HSUMgT0YgVEhJUyBDTEFTUyBIQVMgVE8NCi8vQkUgUkVQTElDQVRF RCBJTiBMQVJHT1FDUE8gVE9PICwgQkVDQVVTRSBPRiBUSEUgMiBESUZGRVJF TlQgVklFV1MgT0YgVEhFIEZPUk1TIFRIQVQgSVMgUkVRVUlSRUQgDQoNCg0K cHVibGljIGNsYXNzIExBUkdPUUNlQ1JGVmlld1BPIGV4dGVuZHMgQmFzZVBP IHsNCg0KCUFycmF5TGlzdCBzclJvd3M7DQoNCglTdHJpbmcgZmV2ZW50Ow0K CVN0cmluZyBmcXVlcnlJZDsNCglTdHJpbmcgZnF1ZXJ5TmFtZTsNCglTdHJp bmcgZnF1ZXJ5Ow0KDQoJU3RyaW5nIGZjZW50ZXJJZDsNCglTdHJpbmcgZmNl bnRlck5hbWU7DQoJU3RyaW5nIGZwYXRpZW50TGlzdDsNCglTdHJpbmcgZnNh bXBsZUxpc3Q7DQoJU3RyaW5nIGZzYW1wbGVGd2Q7DQoJU3RyaW5nIGZzYW1w bGVSZXY7DQoJU3RyaW5nIGZpbmRDb21wRmlsdGVyOw0KCVN0cmluZyBmaW5k RmlsdGVyOw0KCVN0cmluZyBmYmlvRmlsdGVyOw0KCQ0KCVN0cmluZyBmYWN1 dGVDb21wRmlsdGVyOw0KCVN0cmluZyBmTWFjdXRlQ29tcEZpbHRlcjsNCglT dHJpbmcgZkJhY3V0ZUNvbXBGaWx0ZXI7DQoJU3RyaW5nIGZZYWN1dGVDb21w RmlsdGVyOw0KCVN0cmluZyBmTUJhY3V0ZUNvbXBGaWx0ZXI7DQoJDQoJU3Ry aW5nIGZhY3V0ZUZpbHRlcjsJDQoJU3RyaW5nIGZNYWN1dGVGaWx0ZXI7DQoJ U3RyaW5nIGZCYWN1dGVGaWx0ZXI7DQoJU3RyaW5nIGZZYWN1dGVGaWx0ZXI7 DQoJU3RyaW5nIGZNQmFjdXRlRmlsdGVyOw0KCQ0KCVN0cmluZyBmYWlyQ29t cEZpbHRlcjsNCglTdHJpbmcgZk1haXJDb21wRmlsdGVyOw0KCVN0cmluZyBm QmFpckNvbXBGaWx0ZXI7DQoJU3RyaW5nIGZZYWlyQ29tcEZpbHRlcjsNCglT dHJpbmcgZk1CYWlyQ29tcEZpbHRlcjsNCgkNCglTdHJpbmcgZmFpcndheUZp bHRlcjsJDQoJU3RyaW5nIGZNYWlyd2F5RmlsdGVyOw0KCVN0cmluZyBmQmFp cndheUZpbHRlcjsNCglTdHJpbmcgZllhaXJ3YXlGaWx0ZXI7DQoJU3RyaW5n IGZNQmFpcndheUZpbHRlcjsNCgkNCglTdHJpbmcgZm9iRmlsdGVyOw0KCVN0 cmluZyBmY3ZyRmlsdGVyOw0KCVN0cmluZyBmaW5mT3JnQ29tcEZpbHRlcjsN CglTdHJpbmcgZmluZkZpbHRlcjsNCglTdHJpbmcgZnJlakZpbHRlcjsNCglT dHJpbmcgZnJlalRoRmlsdGVyOw0KDQoJU3RyaW5nIGZjbXZGaWx0ZXI7DQoJ U3RyaW5nIGZhZG1GaWx0ZXI7DQoJU3RyaW5nIGZjb21wRmlsdGVyOw0KCVN0 cmluZyBmY0Rlc2NDb21wRmlsdGVyOw0KCVN0cmluZyBmY0Rlc2NGaWx0ZXI7 DQoJU3RyaW5nIGZkYXlzQ29tcEZpbHRlcjsNCglTdHJpbmcgZmRheXNGaWx0 ZXI7DQoJU3RyaW5nIGZiYWxGaWx0ZXI7DQoJU3RyaW5nIGZiYWxDZWxsRmls dGVyOw0KCVN0cmluZyBmZnRGaWx0ZXI7DQoJU3RyaW5nIGZkRkVWMUNvbXBG aWx0ZXI7DQoJU3RyaW5nIGZkRkVWMUZpbHRlcjsNCglTdHJpbmcgZmluZk9y Z0ZpbHRlcjsNCglTdHJpbmcgZmJhbE9yZ0NvbXBGaWx0ZXI7DQoJU3RyaW5n IGZiYWxPcmdGaWx0ZXI7DQoJU3RyaW5nIGZyZWpUaFJlYXNvbnNDb21wRmls dGVyOw0KCVN0cmluZyBmcmVqVGhSZWFzb25zRmlsdGVyOw0KCVN0cmluZyBm YWdlQ29tcEZpbHRlcjsNCglTdHJpbmcgZmFnZUZpbHRlcjsNCglTdHJpbmcg Zm8yU2F0Q29tcEZpbHRlcjsNCglTdHJpbmcgZm8yU2F0RmlsdGVyOw0KCVN0 cmluZyBmYXR0ckxpc3Q7DQoJU3RyaW5nIGZwYXhDb21wRmlsdGVyOw0KCVN0 cmluZyBmcGF4RmlsdGVyOw0KCVN0cmluZyBmY3B0Q29tcEZpbHRlcjsNCglT dHJpbmcgZmNwdEZpbHRlcjsNCg0KCVN0cmluZyBmY3NDb21wRmlsdGVyOw0K CVN0cmluZyBmY3NGaWx0ZXI7DQoJDQoJU3RyaW5nIGZlbnJvbGxEdENvbXBG aWx0ZXI7DQoJU3RyaW5nIGZlbnJvbGxEdEZpbHRlcjsNCg0KCVN0cmluZyBm aW5kVGhlcmFweUNvbXBGaWx0ZXI7DQoJU3RyaW5nIGZpbmRUaGVyYXB5Rmls dGVyOw0KCQ0KCVN0cmluZyBmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlcjsN CglTdHJpbmcgZm90aGVyTWVkaWNhdGlvbkZpbHRlcjsNCgkNCglTdHJpbmcg ZnJlalRyZWF0bWVudEhpc3RvcnlDb21wRmlsdGVyOw0KCVN0cmluZyBmcmVq VHJlYXRtZW50SGlzdG9yeUZpbHRlcjsNCg0KCVN0cmluZyBmcmVjZXBpZW50 Q01WTWV0aG9kQ29tcEZpbHRlcjsNCglTdHJpbmcgZnJlY2VwaWVudENNVk1l dGhvZEZpbHRlcjsNCgkNCglTdHJpbmcgZnJlamVjdGlvblRyZWF0bWVudHND b21wRmlsdGVyOw0KCVN0cmluZyBmcmVqZWN0aW9uVHJlYXRtZW50c0ZpbHRl cjsNCgkNCglTdHJpbmcgZmNvbXBDb21tZW50c0NvbXBGaWx0ZXI7DQoJU3Ry aW5nIGZjb21wQ29tbWVudHNGaWx0ZXI7DQoJDQoJU3RyaW5nIGZmbkNvbW1l bnRzQ29tcEZpbHRlcjsNCglTdHJpbmcgZmZuQ29tbWVudHNGaWx0ZXI7DQoJ DQoJU3RyaW5nIGZiQUxDb21tZW50c0NvbXBGaWx0ZXI7DQoJU3RyaW5nIGZi QUxDb21tZW50c0ZpbHRlcjsNCgkNCglTdHJpbmcgaW5mQ29tbWVudHNDb21w RmlsdGVyOw0KCVN0cmluZyBpbmZDb21tZW50c0ZpbHRlcjsNCgkNCglTdHJp bmcgbWJDb21tZW50c0NvbXBGaWx0ZXI7DQoJU3RyaW5nIG1iQ29tbWVudHNG aWx0ZXI7DQoJDQoJU3RyaW5nIHN1bW1hcnlDb21tZW50c0NvbXBGaWx0ZXI7 DQoJU3RyaW5nIHN1bW1hcnlDb21tZW50c0ZpbHRlcjsNCgkNCglTdHJpbmcg aW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlcjsNCglTdHJpbmcgaW5kVGhl cmFweUNvbW1lbnRzRmlsdGVyOw0KCQ0KCVN0cmluZyByZWplY3Rpb25FcGlz b2RlQ29tbWVudHNDb21wRmlsdGVyOw0KCVN0cmluZyByZWplY3Rpb25FcGlz b2RlQ29tbWVudHNGaWx0ZXI7DQoNCglTdHJpbmdbXSBmYXR0ciA9IG5ldyBT dHJpbmdbMF07Ow0KCVN0cmluZ1tdIGZRQzE7DQoJU3RyaW5nW10gZlFDMjsN CglTdHJpbmdbXSBmQXVkaXQ7DQoNCglMdW5nT3V0Y29tZVF1ZXJ5IGxxID0g bnVsbDsNCg0KCXB1YmxpYyBib29sZWFuIGxvZ2dlZEluVXNlclJlcXVpcmVk KCkgew0KCQlyZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCg0KCXByaXZhdGUgdm9p ZCBzZXRQYXJhbXMoKSB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlv biAgew0KCQkvL1N5c3RlbS5vdXQucHJpbnRsbigic2V0UGFyYW1zKCkgIG1l dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoJCWZhdHRyID0gdGhpcy5nZXRD b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKCJzQXR0ciIpOw0K CQlmYXR0ckxpc3QgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh bWV0ZXIoImF0dHJMaXN0Iik7DQoNCgkJZmF0dHJMaXN0ID0gKGZhdHRyTGlz dCA9PSBudWxsKSA/ICIiIDogZmF0dHJMaXN0Ow0KDQoJCWlmIChmYXR0ci5s ZW5ndGggIT0gMCkgew0KCQkJZm9yIChpbnQgaT0wO2k8ZmF0dHIubGVuZ3Ro O2krKykgZmF0dHJMaXN0ICs9ICIsIitmYXR0cltpXTsNCgkJCWZhdHRyTGlz dCA9IGZhdHRyTGlzdC5zdWJzdHJpbmcoMSk7DQoJCX0NCg0KCQkNCgkJLy9p ZiAoKGZhdHRyLmxlbmd0aCA9PSAwKSAmJiAoZmF0dHJMaXN0ICE9IG51bGwp KSBmYXR0ciA9IGZhdHRyTGlzdC5zcGxpdCgiLCIpOw0KDQoNCgkJZmV2ZW50 ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJldmVu dCIpOw0KCQlmcXVlcnlJZCA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0Lmdl dFBhcmFtZXRlcigicXVlcnlJZCIpOw0KCQlmcXVlcnlOYW1lID0gdGhpcy5n ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJxdWVyeU5hbWUiKTsN CgkJZnF1ZXJ5ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1l dGVyKCJxdWVyeSIpOw0KDQoJCS8vZmNlbnRlcklkID0gdGhpcy5nZXRDb21t cygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjZW50ZXJJZCIpOw0KCQlmY2Vu dGVySWQgPSIiOw0KCQlTdHJpbmdbXSBhcnJDZW50ZXJJZCA9IHRoaXMuZ2V0 Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlclZhbHVlcygiY2VudGVySWQi KTsNCgkJZm9yKGludCBpPTA7aTxhcnJDZW50ZXJJZC5sZW5ndGg7aSsrKXsN CgkJCWlmKGk9PTApew0KCQkJCWZjZW50ZXJJZCArPWFyckNlbnRlcklkW2ld OwkNCgkJCX1lbHNlew0KCQkJCWZjZW50ZXJJZCArPSAiLCIrIGFyckNlbnRl cklkW2ldOw0KCQkJfQ0KCQl9DQoJCWZjZW50ZXJOYW1lID0gdGhpcy5nZXRD b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjZW50ZXJOYW1lIik7DQoJ CWZwYXRpZW50TGlzdCA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh cmFtZXRlcigicGF0aWVudExpc3QiKTsNCgkJZnNhbXBsZUxpc3QgPSB0aGlz LmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNhbXBsZUxpc3Qi KTsNCgkJZnNhbXBsZUZ3ZCA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0Lmdl dFBhcmFtZXRlcigic2FtcGxlRndkIik7DQoJCWZzYW1wbGVSZXYgPSB0aGlz LmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNhbXBsZVJldiIp Ow0KDQoJCWZRQzEgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh bWV0ZXJWYWx1ZXMoIlFDMSIpOw0KCQlmUUMyID0gdGhpcy5nZXRDb21tcygp LnJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKCJRQzIiKTsNCgkJZmluZENv bXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0 ZXIoImluZENvbXBGaWx0ZXIiKTsNCgkJZmluZEZpbHRlciA9IHRoaXMuZ2V0 Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiaW5kRmlsdGVyIik7DQoJ CWZiaW9GaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh bWV0ZXIoImJpb0ZpbHRlciIpOw0KCQkNCgkJZmFjdXRlQ29tcEZpbHRlciA9 IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWN1dGVD b21wRmlsdGVyIik7DQoJCWZNYWN1dGVDb21wRmlsdGVyID0gdGhpcy5nZXRD b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJtQWN1dGVDb21wRmlsdGVy Iik7DQoJCWZCYWN1dGVDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJl cXVlc3QuZ2V0UGFyYW1ldGVyKCJiQWN1dGVDb21wRmlsdGVyIik7DQoJCWZZ YWN1dGVDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0 UGFyYW1ldGVyKCJ5QWN1dGVDb21wRmlsdGVyIik7DQoJCWZNQmFjdXRlQ29t cEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRl cigibWJBY3V0ZUNvbXBGaWx0ZXIiKTsNCgkJDQoJCWZhY3V0ZUZpbHRlciA9 IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWN1dGVG aWx0ZXIiKTsNCgkJZk1hY3V0ZUZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y ZXF1ZXN0LmdldFBhcmFtZXRlcigibUFjdXRlRmlsdGVyIik7DQoJCWZCYWN1 dGVGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0 ZXIoImJBY3V0ZUZpbHRlciIpOw0KCQlmWWFjdXRlRmlsdGVyID0gdGhpcy5n ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ5QWN1dGVGaWx0ZXIi KTsNCgkJZk1CYWN1dGVGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVz dC5nZXRQYXJhbWV0ZXIoIm1iQWN1dGVGaWx0ZXIiKTsNCgkJDQoJCWZhaXJD b21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1l dGVyKCJhaXJDb21wRmlsdGVyIik7DQoJCWZNYWlyQ29tcEZpbHRlciA9IHRo aXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigibUFpckNvbXBG aWx0ZXIiKTsNCgkJZkJhaXJDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygp LnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJiQWlyQ29tcEZpbHRlciIpOw0KCQlm WWFpckNvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQ YXJhbWV0ZXIoInlBaXJDb21wRmlsdGVyIik7DQoJCWZNQmFpckNvbXBGaWx0 ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoIm1i QWlyQ29tcEZpbHRlciIpOw0KDQoJCQ0KCQkNCgkJZmFpcndheUZpbHRlciA9 IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWlyd2F5 RmlsdGVyIik7DQoJCWZNYWlyd2F5RmlsdGVyID0gdGhpcy5nZXRDb21tcygp LnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJtQWlyd2F5RmlsdGVyIik7DQoJCWZC YWlyd2F5RmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy YW1ldGVyKCJtQWlyd2F5RmlsdGVyIik7DQoJCWZZYWlyd2F5RmlsdGVyID0g dGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ5QWlyd2F5 RmlsdGVyIik7DQoJCWZNQmFpcndheUZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigibWJBaXJ3YXlGaWx0ZXIiKTsNCg0K CQkNCgkJZmN2ckZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0Lmdl dFBhcmFtZXRlcigiY3ZyRmlsdGVyIik7DQoJCWZvYkZpbHRlciA9IHRoaXMu Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigib2JGaWx0ZXIiKTsN CgkJZnBheEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh cmFtZXRlcigicGF4RmlsdGVyIik7DQoJCWZwYXhDb21wRmlsdGVyID0gdGhp cy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJwYXhDb21wRmls dGVyIik7DQoJCWZjcHRGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVz dC5nZXRQYXJhbWV0ZXIoImNwdEZpbHRlciIpOw0KCQlmY3B0Q29tcEZpbHRl ciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiY3B0 Q29tcEZpbHRlciIpOw0KDQoJCWZjc0ZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiY3NGaWx0ZXIiKTsNCgkJZmNzQ29t cEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRl cigiY3NDb21wRmlsdGVyIik7DQoJCQ0KCQlmZW5yb2xsRHRDb21wRmlsdGVy ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJlbnJv bGxEdENvbXBGaWx0ZXIiKTsNCgkJZmVucm9sbER0RmlsdGVyID0gdGhpcy5n ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJlbnJvbGxEdEZpbHRl ciIpOw0KDQoJCWZpbmRUaGVyYXB5Q29tcEZpbHRlciA9IHRoaXMuZ2V0Q29t bXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiaW5kVGhlcmFweUNvbXBGaWx0 ZXIiKTsNCgkJZmluZFRoZXJhcHlGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCku cmVxdWVzdC5nZXRQYXJhbWV0ZXIoImluZFRoZXJhcHlGaWx0ZXIiKTsNCg0K CQlmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigib3RoZXJNZWRpY2F0aW9uQ29tcEZp bHRlciIpOw0KCQlmb3RoZXJNZWRpY2F0aW9uRmlsdGVyID0gdGhpcy5nZXRD b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJvdGhlck1lZGljYXRpb25G aWx0ZXIiKTsNCg0KCQlmcmVqVHJlYXRtZW50SGlzdG9yeUNvbXBGaWx0ZXIg PSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoInJlalRy ZWF0bWVudEhpc3RvcnlDb21wRmlsdGVyIik7DQoJCWZyZWpUcmVhdG1lbnRI aXN0b3J5RmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy YW1ldGVyKCJyZWpUcmVhdG1lbnRIaXN0b3J5RmlsdGVyIik7DQoJCQ0KCQlm cmVjZXBpZW50Q01WTWV0aG9kQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigicmVjZXBpZW50Q01WTWV0aG9kQ29t cEZpbHRlciIpOw0KCQlmcmVjZXBpZW50Q01WTWV0aG9kRmlsdGVyID0gdGhp cy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZWNlcGllbnRD TVZNZXRob2RGaWx0ZXIiKTsNCgkJDQoJCWZyZWplY3Rpb25UcmVhdG1lbnRz Q29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFt ZXRlcigicmVqZWN0aW9uVHJlYXRtZW50c0NvbXBGaWx0ZXIiKTsNCgkJZnJl amVjdGlvblRyZWF0bWVudHNGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVx dWVzdC5nZXRQYXJhbWV0ZXIoInJlamVjdGlvblRyZWF0bWVudHNGaWx0ZXIi KTsNCg0KCQlmY29tcENvbW1lbnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29t bXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiY29tcENvbW1lbnRzQ29tcEZp bHRlciIpOwkJDQoJCWZjb21wQ29tbWVudHNGaWx0ZXIgPSB0aGlzLmdldENv bW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNvbXBDb21tZW50c0ZpbHRl ciIpOw0KCQkNCgkJZmZuQ29tbWVudHNDb21wRmlsdGVyID0gdGhpcy5nZXRD b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJmbkNvbW1lbnRzQ29tcEZp bHRlciIpOwkJDQoJCWZmbkNvbW1lbnRzRmlsdGVyID0gdGhpcy5nZXRDb21t cygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJmbkNvbW1lbnRzRmlsdGVyIik7 DQoNCgkJZmJBTENvbW1lbnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYkFMQ29tbWVudHNDb21wRmlsdGVy Iik7DQoJCWZiQUxDb21tZW50c0ZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y ZXF1ZXN0LmdldFBhcmFtZXRlcigiYkFMQ29tbWVudHNGaWx0ZXIiKTsNCgkJ DQoJCWluZkNvbW1lbnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y ZXF1ZXN0LmdldFBhcmFtZXRlcigiSW5mQ29tbWVudHNDb21wRmlsdGVyIik7 DQoJCWluZkNvbW1lbnRzRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVl c3QuZ2V0UGFyYW1ldGVyKCJJbmZDb21tZW50c0ZpbHRlciIpOw0KDQoJCW1i Q29tbWVudHNDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3Qu Z2V0UGFyYW1ldGVyKCJNQkNvbW1lbnRzQ29tcEZpbHRlciIpOw0KCQltYkNv bW1lbnRzRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy YW1ldGVyKCJNQkNvbW1lbnRzRmlsdGVyIik7DQoNCgkJc3VtbWFyeUNvbW1l bnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh cmFtZXRlcigiU3VtbWFyeUNvbW1lbnRzQ29tcEZpbHRlciIpOw0KCQlzdW1t YXJ5Q29tbWVudHNGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5n ZXRQYXJhbWV0ZXIoIlN1bW1hcnlDb21tZW50c0ZpbHRlciIpOw0KDQoJCWlu ZFRoZXJhcHlDb21tZW50c0NvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCku cmVxdWVzdC5nZXRQYXJhbWV0ZXIoIkluZFRoZXJhcHlDb21tZW50c0NvbXBG aWx0ZXIiKTsNCgkJaW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyID0gdGhpcy5n ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJJbmRUaGVyYXB5Q29t bWVudHNGaWx0ZXIiKTsNCg0KCQlyZWplY3Rpb25FcGlzb2RlQ29tbWVudHND b21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1l dGVyKCJSZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyIik7DQoJ CXJlamVjdGlvbkVwaXNvZGVDb21tZW50c0ZpbHRlciA9IHRoaXMuZ2V0Q29t bXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiUmVqZWN0aW9uRXBpc29kZUNv bW1lbnRzRmlsdGVyIik7DQoNCgkJDQoJCWZpbmZGaWx0ZXIgPSB0aGlzLmdl dENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImluZkZpbHRlciIpOw0K CQlmcmVqRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy YW1ldGVyKCJyZWpGaWx0ZXIiKTsNCgkJZnJlalRoRmlsdGVyID0gdGhpcy5n ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZWpUaEZpbHRlciIp Ow0KCQlmY212RmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0 UGFyYW1ldGVyKCJjbXZGaWx0ZXIiKTsNCgkJZmFkbUZpbHRlciA9IHRoaXMu Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWRtRmlsdGVyIik7 DQoJCWZjb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0 UGFyYW1ldGVyKCJjb21wRmlsdGVyIik7DQoJCWZjRGVzY0NvbXBGaWx0ZXIg PSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNEZXNj Q29tcEZpbHRlciIpOw0KCQlmY0Rlc2NGaWx0ZXIgPSB0aGlzLmdldENvbW1z KCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNEZXNjRmlsdGVyIik7DQoJCWZk YXlzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh cmFtZXRlcigiZGF5c0NvbXBGaWx0ZXIiKTsNCgkJZmRheXNGaWx0ZXIgPSB0 aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImRheXNGaWx0 ZXIiKTsNCgkJZmJhbEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0 LmdldFBhcmFtZXRlcigiYmFsRmlsdGVyIik7DQoJCWZiYWxDZWxsRmlsdGVy ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJiYWxD ZWxsRmlsdGVyIik7DQoJCWZmdEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y ZXF1ZXN0LmdldFBhcmFtZXRlcigiZnRGaWx0ZXIiKTsNCgkJZmRGRVYxQ29t cEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRl cigiZEZFVjFDb21wRmlsdGVyIik7DQoJCWZkRkVWMUZpbHRlciA9IHRoaXMu Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiZEZFVjFGaWx0ZXIi KTsNCgkJZmluZk9yZ0NvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVx dWVzdC5nZXRQYXJhbWV0ZXIoImluZk9yZ0NvbXBGaWx0ZXIiKTsNCgkJZmlu Zk9yZ0ZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFt ZXRlcigiaW5mT3JnRmlsdGVyIik7DQoJCWZiYWxPcmdDb21wRmlsdGVyID0g dGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJiYWxPcmdD b21wRmlsdGVyIik7DQoJCWZiYWxPcmdGaWx0ZXIgPSB0aGlzLmdldENvbW1z KCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImJhbE9yZ0ZpbHRlciIpOw0KCQlm cmVqVGhSZWFzb25zQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1 ZXN0LmdldFBhcmFtZXRlcigicmVqVGhSZWFzb25zQ29tcEZpbHRlciIpOw0K CQlmcmVqVGhSZWFzb25zRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVl c3QuZ2V0UGFyYW1ldGVyKCJyZWpUaFJlYXNvbnNGaWx0ZXIiKTsNCgkJZmFn ZUNvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh bWV0ZXIoImFnZUNvbXBGaWx0ZXIiKTsNCgkJZmFnZUZpbHRlciA9IHRoaXMu Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWdlRmlsdGVyIik7 DQoJCWZvMlNhdENvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVz dC5nZXRQYXJhbWV0ZXIoIm8yU2F0Q29tcEZpbHRlciIpOw0KCQlmbzJTYXRG aWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIo Im8yU2F0RmlsdGVyIik7DQoNCgkJZmV2ZW50ID0gKGZldmVudCA9PSBudWxs KSA/ICIiIDogZmV2ZW50Ow0KCQlmcXVlcnlJZCA9IChmcXVlcnlJZCA9PSBu dWxsKSA/ICIiIDogZnF1ZXJ5SWQ7DQoJCWZxdWVyeU5hbWUgPSAoZnF1ZXJ5 TmFtZSA9PSBudWxsKSA/ICIiIDogZnF1ZXJ5TmFtZTsNCgkJZnF1ZXJ5ID0g KGZxdWVyeSA9PSBudWxsKSA/ICIiIDogZnF1ZXJ5Ow0KCQlmYXR0ckxpc3Qg PSAoZmF0dHJMaXN0ID09IG51bGwpID8gIiIgOiBmYXR0ckxpc3Q7DQoJCWZj ZW50ZXJJZCA9IChmY2VudGVySWQgPT0gbnVsbCkgPyAiIiA6IGZjZW50ZXJJ ZDsNCgkJZmNlbnRlck5hbWUgPSAoZmNlbnRlck5hbWUgPT0gbnVsbCkgPyAi IiA6IGZjZW50ZXJOYW1lOw0KCQlmcGF0aWVudExpc3QgPSAoZnBhdGllbnRM aXN0ID09IG51bGwpID8gIiIgOiBmcGF0aWVudExpc3Q7DQoJCWZzYW1wbGVM aXN0ID0gKGZzYW1wbGVMaXN0ID09IG51bGwpID8gIiIgOiBmc2FtcGxlTGlz dDsNCgkJZnNhbXBsZUZ3ZCA9IChmc2FtcGxlRndkID09IG51bGwpID8gIiIg OiBmc2FtcGxlRndkOw0KCQlmc2FtcGxlUmV2ID0gKGZzYW1wbGVSZXYgPT0g bnVsbCkgPyAiIiA6IGZzYW1wbGVSZXY7DQoNCgkJZmluZENvbXBGaWx0ZXIg PSAoZmluZENvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmRDb21wRmls dGVyOw0KCQlmaW5kRmlsdGVyID0gKGZpbmRGaWx0ZXIgPT0gbnVsbCkgPyAi IiA6IGZpbmRGaWx0ZXI7DQoNCgkJZmJpb0ZpbHRlciA9IChmYmlvRmlsdGVy ID09IG51bGwpID8gIiIgOiBmYmlvRmlsdGVyOw0KCQkNCgkJZmFjdXRlQ29t cEZpbHRlciA9IChmYWN1dGVDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBm YWN1dGVDb21wRmlsdGVyOw0KCQlmTWFjdXRlQ29tcEZpbHRlciA9IChmTWFj dXRlQ29tcEZpbHRlciA9PSBudWxsKSA/ICIiIDogZk1hY3V0ZUNvbXBGaWx0 ZXI7DQoJCWZCYWN1dGVDb21wRmlsdGVyID0gKGZCYWN1dGVDb21wRmlsdGVy ID09IG51bGwpID8gIiIgOiBmQmFjdXRlQ29tcEZpbHRlcjsNCgkJZllhY3V0 ZUNvbXBGaWx0ZXIgPSAoZllhY3V0ZUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAi IiA6IGZZYWN1dGVDb21wRmlsdGVyOw0KCQlmTUJhY3V0ZUNvbXBGaWx0ZXIg PSAoZk1CYWN1dGVDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmTUJhY3V0 ZUNvbXBGaWx0ZXI7DQoJCQ0KCQkNCgkJZmFjdXRlRmlsdGVyID0gKGZhY3V0 ZUZpbHRlciA9PSBudWxsKSA/ICIiIDogZmFjdXRlRmlsdGVyOw0KCQlmTWFj dXRlRmlsdGVyID0gKGZNYWN1dGVGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZN YWN1dGVGaWx0ZXI7DQoJCWZCYWN1dGVGaWx0ZXIgPSAoZkJhY3V0ZUZpbHRl ciA9PSBudWxsKSA/ICIiIDogZkJhY3V0ZUZpbHRlcjsNCgkJZllhY3V0ZUZp bHRlciA9IChmWWFjdXRlRmlsdGVyID09IG51bGwpID8gIiIgOiBmWWFjdXRl RmlsdGVyOw0KCQlmTUJhY3V0ZUZpbHRlciA9IChmTUJhY3V0ZUZpbHRlciA9 PSBudWxsKSA/ICIiIDogZk1CYWN1dGVGaWx0ZXI7DQoJCQ0KCQlmYWlyQ29t cEZpbHRlciA9IChmYWlyQ29tcEZpbHRlciA9PSBudWxsKSA/ICIiIDogZmFp ckNvbXBGaWx0ZXI7DQoJCWZNYWlyQ29tcEZpbHRlciA9IChmTWFpckNvbXBG aWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZNYWlyQ29tcEZpbHRlcjsNCgkJZkJh aXJDb21wRmlsdGVyID0gKGZCYWlyQ29tcEZpbHRlciA9PSBudWxsKSA/ICIi IDogZkJhaXJDb21wRmlsdGVyOw0KCQlmWWFpckNvbXBGaWx0ZXIgPSAoZllh aXJDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmWWFpckNvbXBGaWx0ZXI7 DQoJCWZNQmFpckNvbXBGaWx0ZXIgPSAoZk1CYWlyQ29tcEZpbHRlciA9PSBu dWxsKSA/ICIiIDogZk1CYWlyQ29tcEZpbHRlcjsNCgkJDQoJCWZhaXJ3YXlG aWx0ZXIgPSAoZmFpcndheUZpbHRlciA9PSBudWxsKSA/ICIiIDogZmFpcndh eUZpbHRlcjsNCgkJZk1haXJ3YXlGaWx0ZXIgPSAoZk1haXJ3YXlGaWx0ZXIg PT0gbnVsbCkgPyAiIiA6IGZNYWlyd2F5RmlsdGVyOw0KCQlmQmFpcndheUZp bHRlciA9IChmQmFpcndheUZpbHRlciA9PSBudWxsKSA/ICIiIDogZkJhaXJ3 YXlGaWx0ZXI7DQoJCWZZYWlyd2F5RmlsdGVyID0gKGZZYWlyd2F5RmlsdGVy ID09IG51bGwpID8gIiIgOiBmWWFpcndheUZpbHRlcjsNCgkJZk1CYWlyd2F5 RmlsdGVyID0gKGZNQmFpcndheUZpbHRlciA9PSBudWxsKSA/ICIiIDogZk1C YWlyd2F5RmlsdGVyOw0KCQkNCgkJZmN2ckZpbHRlciA9IChmY3ZyRmlsdGVy ID09IG51bGwpID8gIiIgOiBmY3ZyRmlsdGVyOw0KCQlmb2JGaWx0ZXIgPSAo Zm9iRmlsdGVyID09IG51bGwpID8gIiIgOiBmb2JGaWx0ZXI7DQoNCgkJZmlu ZkZpbHRlciA9IChmaW5mRmlsdGVyID09IG51bGwpID8gIiIgOiBmaW5mRmls dGVyOw0KCQlmcmVqRmlsdGVyID0gKGZyZWpGaWx0ZXIgPT0gbnVsbCkgPyAi IiA6IGZyZWpGaWx0ZXI7DQoJCWZyZWpUaEZpbHRlciA9IChmcmVqVGhGaWx0 ZXIgPT0gbnVsbCkgPyAiIiA6IGZyZWpUaEZpbHRlcjsNCgkJZmNtdkZpbHRl ciA9IChmY212RmlsdGVyID09IG51bGwpID8gIiIgOiBmY212RmlsdGVyOw0K CQlmYWRtRmlsdGVyID0gKGZhZG1GaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZh ZG1GaWx0ZXI7DQoJCWZjb21wRmlsdGVyID0gKGZjb21wRmlsdGVyID09IG51 bGwpID8gIiIgOiBmY29tcEZpbHRlcjsNCgkJZmNEZXNjQ29tcEZpbHRlciA9 IChmY0Rlc2NDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmY0Rlc2NDb21w RmlsdGVyOw0KCQlmY0Rlc2NGaWx0ZXIgPSAoZmNEZXNjRmlsdGVyID09IG51 bGwpID8gIiIgOiBmY0Rlc2NGaWx0ZXI7DQoJCWZkYXlzQ29tcEZpbHRlciA9 IChmZGF5c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZkYXlzQ29tcEZp bHRlcjsNCgkJZmRheXNGaWx0ZXIgPSAoZmRheXNGaWx0ZXIgPT0gbnVsbCkg PyAiIiA6IGZkYXlzRmlsdGVyOw0KCQlmYmFsRmlsdGVyID0gKGZiYWxGaWx0 ZXIgPT0gbnVsbCkgPyAiIiA6IGZiYWxGaWx0ZXI7DQoJCWZiYWxDZWxsRmls dGVyID0gKGZiYWxDZWxsRmlsdGVyID09IG51bGwpID8gIiIgOiBmYmFsQ2Vs bEZpbHRlcjsNCgkJZmZ0RmlsdGVyID0gKGZmdEZpbHRlciA9PSBudWxsKSA/ ICIiIDogZmZ0RmlsdGVyOw0KCQlmZEZFVjFDb21wRmlsdGVyID0gKGZkRkVW MUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZkRkVWMUNvbXBGaWx0ZXI7 DQoJCWZkRkVWMUZpbHRlciA9IChmZEZFVjFGaWx0ZXIgPT0gbnVsbCkgPyAi IiA6IGZkRkVWMUZpbHRlcjsNCgkJZmluZk9yZ0NvbXBGaWx0ZXIgPSAoZmlu Zk9yZ0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmZPcmdDb21wRmls dGVyOw0KCQlmaW5mT3JnRmlsdGVyID0gKGZpbmZPcmdGaWx0ZXIgPT0gbnVs bCkgPyAiIiA6IGZpbmZPcmdGaWx0ZXI7DQoJCWZiYWxPcmdDb21wRmlsdGVy ID0gKGZiYWxPcmdDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmYmFsT3Jn Q29tcEZpbHRlcjsNCgkJZmJhbE9yZ0ZpbHRlciA9IChmYmFsT3JnRmlsdGVy ID09IG51bGwpID8gIiIgOiBmYmFsT3JnRmlsdGVyOw0KCQlmcmVqVGhSZWFz b25zQ29tcEZpbHRlciA9IChmcmVqVGhSZWFzb25zQ29tcEZpbHRlciA9PSBu dWxsKSA/ICIiIDogZnJlalRoUmVhc29uc0NvbXBGaWx0ZXI7DQoJCWZyZWpU aFJlYXNvbnNGaWx0ZXIgPSAoZnJlalRoUmVhc29uc0ZpbHRlciA9PSBudWxs KSA/ICIiIDogZnJlalRoUmVhc29uc0ZpbHRlcjsNCgkJZmFnZUNvbXBGaWx0 ZXIgPSAoZmFnZUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZhZ2VDb21w RmlsdGVyOw0KCQlmYWdlRmlsdGVyID0gKGZhZ2VGaWx0ZXIgPT0gbnVsbCkg PyAiIiA6IGZhZ2VGaWx0ZXI7DQoJCWZvMlNhdENvbXBGaWx0ZXIgPSAoZm8y U2F0Q29tcEZpbHRlciA9PSBudWxsKSA/ICIiIDogZm8yU2F0Q29tcEZpbHRl cjsNCgkJZm8yU2F0RmlsdGVyID0gKGZvMlNhdEZpbHRlciA9PSBudWxsKSA/ ICIiIDogZm8yU2F0RmlsdGVyOw0KDQoJCWZwYXhDb21wRmlsdGVyID0gKGZw YXhDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmcGF4Q29tcEZpbHRlcjsN CgkJZnBheEZpbHRlciA9IChmcGF4RmlsdGVyID09IG51bGwpID8gIiIgOiBm cGF4RmlsdGVyOw0KCQlmY3B0Q29tcEZpbHRlciA9IChmY3B0Q29tcEZpbHRl ciA9PSBudWxsKSA/ICIiIDogZmNwdENvbXBGaWx0ZXI7DQoJCWZjcHRGaWx0 ZXIgPSAoZmNwdEZpbHRlciA9PSBudWxsKSA/ICIiIDogZmNwdEZpbHRlcjsN CgkJZmNzQ29tcEZpbHRlciA9IChmY3NDb21wRmlsdGVyID09IG51bGwpID8g IiIgOiBmY3NDb21wRmlsdGVyOw0KCQlmY3NGaWx0ZXIgPSAoZmNzRmlsdGVy ID09IG51bGwpID8gIiIgOiBmY3NGaWx0ZXI7DQoJCQ0KCQlmZW5yb2xsRHRD b21wRmlsdGVyID0gKGZlbnJvbGxEdENvbXBGaWx0ZXIgPT0gbnVsbCkgPyAi IiA6IGZlbnJvbGxEdENvbXBGaWx0ZXI7DQoJCWZlbnJvbGxEdEZpbHRlciA9 IChmZW5yb2xsRHRGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZlbnJvbGxEdEZp bHRlcjsNCgkJDQoJCWZpbmRUaGVyYXB5Q29tcEZpbHRlciA9IChmaW5kVGhl cmFweUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmRUaGVyYXB5Q29t cEZpbHRlcjsNCgkJZmluZFRoZXJhcHlGaWx0ZXIgPSAoZmluZFRoZXJhcHlG aWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmRUaGVyYXB5RmlsdGVyOw0KDQoJ CWZvdGhlck1lZGljYXRpb25Db21wRmlsdGVyID0gKGZvdGhlck1lZGljYXRp b25Db21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmb3RoZXJNZWRpY2F0aW9u Q29tcEZpbHRlcjsNCgkJZm90aGVyTWVkaWNhdGlvbkZpbHRlciA9IChmb3Ro ZXJNZWRpY2F0aW9uRmlsdGVyID09IG51bGwpID8gIiIgOiBmb3RoZXJNZWRp Y2F0aW9uRmlsdGVyOw0KDQoJCWZyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZp bHRlciA9IChmcmVqVHJlYXRtZW50SGlzdG9yeUNvbXBGaWx0ZXIgPT0gbnVs bCkgPyAiIiA6IGZyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZpbHRlcjsNCgkJ ZnJlalRyZWF0bWVudEhpc3RvcnlGaWx0ZXIgPSAoZnJlalRyZWF0bWVudEhp c3RvcnlGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZyZWpUcmVhdG1lbnRIaXN0 b3J5RmlsdGVyOw0KCQkNCgkJZnJlY2VwaWVudENNVk1ldGhvZENvbXBGaWx0 ZXIgPSAoZnJlY2VwaWVudENNVk1ldGhvZENvbXBGaWx0ZXIgPT0gbnVsbCkg PyAiIiA6IGZyZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVyOw0KCQlmcmVj ZXBpZW50Q01WTWV0aG9kRmlsdGVyID0gKGZyZWNlcGllbnRDTVZNZXRob2RG aWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZyZWNlcGllbnRDTVZNZXRob2RGaWx0 ZXI7DQoJCQ0KCQlmcmVqZWN0aW9uVHJlYXRtZW50c0NvbXBGaWx0ZXIgPSAo ZnJlamVjdGlvblRyZWF0bWVudHNDb21wRmlsdGVyID09IG51bGwpID8gIiIg OiBmcmVqZWN0aW9uVHJlYXRtZW50c0NvbXBGaWx0ZXI7DQoJCWZyZWplY3Rp b25UcmVhdG1lbnRzRmlsdGVyID0gKGZyZWplY3Rpb25UcmVhdG1lbnRzRmls dGVyID09IG51bGwpID8gIiIgOiBmcmVqZWN0aW9uVHJlYXRtZW50c0ZpbHRl cjsNCgkJDQoJCWZjb21wQ29tbWVudHNDb21wRmlsdGVyID0gKGZjb21wQ29t bWVudHNDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmY29tcENvbW1lbnRz Q29tcEZpbHRlcjsNCgkJZmNvbXBDb21tZW50c0ZpbHRlciA9IChmY29tcENv bW1lbnRzRmlsdGVyID09IG51bGwpID8gIiIgOiBmY29tcENvbW1lbnRzRmls dGVyOw0KDQoJCWZmbkNvbW1lbnRzQ29tcEZpbHRlciA9IChmZm5Db21tZW50 c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZmbkNvbW1lbnRzQ29tcEZp bHRlcjsNCgkJZmZuQ29tbWVudHNGaWx0ZXIgPSAoZmZuQ29tbWVudHNGaWx0 ZXIgPT0gbnVsbCkgPyAiIiA6IGZmbkNvbW1lbnRzRmlsdGVyOw0KCQkNCgkJ ZmJBTENvbW1lbnRzQ29tcEZpbHRlciA9IChmYkFMQ29tbWVudHNDb21wRmls dGVyID09IG51bGwpID8gIiIgOiBmYkFMQ29tbWVudHNDb21wRmlsdGVyOw0K CQlmYkFMQ29tbWVudHNGaWx0ZXIgPSAoZmJBTENvbW1lbnRzRmlsdGVyID09 IG51bGwpID8gIiIgOiBmYkFMQ29tbWVudHNGaWx0ZXI7CQkNCgkJDQoJCWlu ZkNvbW1lbnRzQ29tcEZpbHRlciA9IChpbmZDb21tZW50c0NvbXBGaWx0ZXIg PT0gbnVsbCkgPyAiIiA6IGluZkNvbW1lbnRzQ29tcEZpbHRlcjsNCgkJaW5m Q29tbWVudHNGaWx0ZXIgPSAoaW5mQ29tbWVudHNGaWx0ZXIgPT0gbnVsbCkg PyAiIiA6IGluZkNvbW1lbnRzRmlsdGVyOw0KCQkNCgkJbWJDb21tZW50c0Nv bXBGaWx0ZXIgPSAobWJDb21tZW50c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAi IiA6IG1iQ29tbWVudHNDb21wRmlsdGVyOw0KCQltYkNvbW1lbnRzRmlsdGVy ID0gKG1iQ29tbWVudHNGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IG1iQ29tbWVu dHNGaWx0ZXI7DQoJCQ0KCQlzdW1tYXJ5Q29tbWVudHNDb21wRmlsdGVyID0g KHN1bW1hcnlDb21tZW50c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IHN1 bW1hcnlDb21tZW50c0NvbXBGaWx0ZXI7DQoJCXN1bW1hcnlDb21tZW50c0Zp bHRlciA9IChzdW1tYXJ5Q29tbWVudHNGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6 c3VtbWFyeUNvbW1lbnRzRmlsdGVyOw0KDQoJCWluZFRoZXJhcHlDb21tZW50 c0NvbXBGaWx0ZXIgPSAoaW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlciA9 PSBudWxsKSA/ICIiIDogaW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlcjsN CgkJaW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyID0gKGluZFRoZXJhcHlDb21t ZW50c0ZpbHRlciA9PSBudWxsKSA/ICIiIDppbmRUaGVyYXB5Q29tbWVudHNG aWx0ZXI7DQoNCgkJcmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzQ29tcEZpbHRl ciA9IChyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyID09IG51 bGwpID8gIiIgOiByZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVy Ow0KCQlyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNGaWx0ZXIgPSAocmVqZWN0 aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyID09IG51bGwpID8gIiIgOnJlamVj dGlvbkVwaXNvZGVDb21tZW50c0ZpbHRlcjsNCg0KCX0NCg0KCXByaXZhdGUg dm9pZCByZWFkUXVlcnlDcml0ZXJpYShMYXJnb1F1ZXJ5IGxvYykgIHsNCgkJ Ly9TeXN0ZW0ub3V0LnByaW50bG4oInJlYWRRdWVyeUNyaXRlcmlhKCkgIG1l dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoJCWZldmVudCA9ICIiOw0KCQlm cXVlcnlJZCA9IGxvYy5nZXRRdWVyeUlkKCkrIiI7DQoNCgkJLy9TeXN0ZW0u b3V0LnByaW50bG4oIlJlYWQgIitsb2MuZ2V0QXR0ckxpc3QoKSk7DQoJCWlm IChmYXR0ckxpc3QuZXF1YWxzKCIiKSkgew0KCQkJZmF0dHJMaXN0ID0gbG9j LmdldEF0dHJMaXN0KCk7DQoJCQlmYXR0ckxpc3QgPSAoZmF0dHJMaXN0ID09 IG51bGwpID8gIiIgOiBmYXR0ckxpc3Q7DQoJCX0NCg0KCQkvL2lmIChmYXR0 ci5sZW5ndGggPT0gMCkNCgkJLy8JZmF0dHIgPSBsb2MuZ2V0QXR0ckxpc3Qo KS5zcGxpdCgiLCIpOw0KDQoJCWlmIChmY2VudGVySWQuZXF1YWxzKCIiKSkg ew0KCQkJZmNlbnRlcklkID0gKGxvYy5nZXRDZW50ZXJJZCgpID09IG51bGwp ID8gIiIgOiBsb2MuZ2V0Q2VudGVySWQoKTsNCgkJCWZjZW50ZXJOYW1lID0g KGxvYy5nZXRDZW50ZXJOYW1lKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRD ZW50ZXJOYW1lKCk7DQoJCX0NCgkJZWxzZSB7DQoJCQlsb2Muc2V0Q2VudGVy SWQoZmNlbnRlcklkKTsNCgkJCWxvYy5zZXRDZW50ZXJOYW1lKGZjZW50ZXJO YW1lKTsNCgkJfQ0KCQlpZiAoZnBhdGllbnRMaXN0LmVxdWFscygiIikpDQoJ CQlmcGF0aWVudExpc3QgPSAobG9jLmdldFBhdGllbnRMaXN0KCkgPT0gbnVs bCkgPyAiIiA6IGxvYy5nZXRQYXRpZW50TGlzdCgpOw0KCQllbHNlDQoJCQls b2Muc2V0UGF0aWVudExpc3QoZnBhdGllbnRMaXN0KTsNCg0KCQlpZiAoZnNh bXBsZUxpc3QuZXF1YWxzKCIiKSkNCgkJCWZzYW1wbGVMaXN0ID0gKGxvYy5n ZXRTYW1wbGVMaXN0KCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRTYW1wbGVM aXN0KCk7DQoJCWVsc2UNCgkJCWxvYy5zZXRTYW1wbGVMaXN0KGZzYW1wbGVM aXN0KTsNCg0KCQlpZiAoZnNhbXBsZUZ3ZC5lcXVhbHMoIiIpKQ0KCQkJZnNh bXBsZUZ3ZCA9IChsb2MuZ2V0U2FtcGxlRndkKCkgPT0gbnVsbCkgPyAiIiA6 IGxvYy5nZXRTYW1wbGVGd2QoKTsNCgkJZWxzZQ0KCQkJbG9jLnNldFNhbXBs ZUZ3ZChmc2FtcGxlRndkKTsNCg0KCQlpZiAoZnNhbXBsZVJldi5lcXVhbHMo IiIpKQ0KCQkJZnNhbXBsZVJldiA9IChsb2MuZ2V0U2FtcGxlUmV2KCkgPT0g bnVsbCkgPyAiIiA6IGxvYy5nZXRTYW1wbGVSZXYoKTsNCgkJZWxzZQ0KCQkJ bG9jLnNldFNhbXBsZVJldihmc2FtcGxlUmV2KTsNCg0KCQlib29sZWFuIHF1 ZXJ5Q2hhbmdlZCA9IGZhbHNlOw0KDQoJCWlmIChmcXVlcnkuZXF1YWxzKCJD IikgJiYgIShmY2VudGVySWQuZXF1YWxzKGxvYy5nZXRDZW50ZXJJZCgpKSkp IHF1ZXJ5Q2hhbmdlZCA9IHRydWU7DQoJCS8vaWYgKGZxdWVyeS5lcXVhbHMo IiIpICYmICEoZmNlbnRlck5hbWUuZXF1YWxzKGxvYy5nZXRDZW50ZXJOYW1l KCkpKSkgcXVlcnlDaGFuZ2VkID0gdHJ1ZTsNCgkJaWYgKGZxdWVyeS5lcXVh bHMoIkMiKSAmJiAhKGZwYXRpZW50TGlzdC5lcXVhbHMobG9jLmdldFBhdGll bnRMaXN0KCkpKSkgcXVlcnlDaGFuZ2VkID0gdHJ1ZTsNCgkJaWYgKGZxdWVy eS5lcXVhbHMoIkMiKSAmJiAhKGZzYW1wbGVMaXN0LmVxdWFscyhsb2MuZ2V0 U2FtcGxlTGlzdCgpKSkpIHF1ZXJ5Q2hhbmdlZCA9IHRydWU7DQoNCgkJaWYg KGZxdWVyeS5lcXVhbHMoIkMiKSAmJiAhKGZhdHRyTGlzdC5lcXVhbHMobG9j LmdldEF0dHJMaXN0KCkpKSkgcXVlcnlDaGFuZ2VkID0gdHJ1ZTsNCg0KCQkv L2ZxdWVyeU5hbWUgPSAocXVlcnlDaGFuZ2VkKSA/IGxvYy5nZXRRdWVyeU5h bWUoKSsiKiIgOiBsb2MuZ2V0UXVlcnlOYW1lKCk7DQoNCgkJZnF1ZXJ5TmFt ZSA9IGxvYy5nZXRRdWVyeU5hbWUoKTsNCg0KCQkvKmZjZW50ZXJJZCA9IGxv Yy5nZXRDZW50ZXJJZCgpOw0KCQlpZiAoZmNlbnRlck5hbWUuZXF1YWxzKCIi KSkgZmNlbnRlck5hbWUgPSBsb2MuZ2V0Q2VudGVyTmFtZSgpOw0KCQlpZiAo ZnNhbXBsZUxpc3QuZXF1YWxzKCIiKSkgZnNhbXBsZUxpc3QgPSBsb2MuZ2V0 U2FtcGxlTGlzdCgpOyovDQoNCg0KCQlmUUMxID0gbmV3IFN0cmluZ1swXTsN CgkJZlFDMiA9IG5ldyBTdHJpbmdbMF07DQoNCgkJZmluZENvbXBGaWx0ZXIg PSAobG9jLmdldEluZENvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9j LmdldEluZENvbXBGaWx0ZXIoKTsNCgkJZmluZEZpbHRlciA9IChsb2MuZ2V0 SW5kRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRJbmRGaWx0ZXIo KTsNCgkJZmJpb0ZpbHRlciA9IChsb2MuZ2V0QmlvRmlsdGVyKCkgPT0gbnVs bCkgPyAiIiA6IGxvYy5nZXRCaW9GaWx0ZXIoKTsNCgkJDQoJCWZhY3V0ZUNv bXBGaWx0ZXIgPSAobG9jLmdldEFjdXRlQ29tcEZpbHRlcigpID09IG51bGwp ID8gIiIgOiBsb2MuZ2V0QWN1dGVDb21wRmlsdGVyKCk7DQoJCWZNYWN1dGVD b21wRmlsdGVyID0gKGxvYy5nZXRNQWN1dGVDb21wRmlsdGVyKCkgPT0gbnVs bCkgPyAiIiA6IGxvYy5nZXRNQWN1dGVDb21wRmlsdGVyKCk7DQoJCWZCYWN1 dGVDb21wRmlsdGVyID0gKGxvYy5nZXRCQWN1dGVDb21wRmlsdGVyKCkgPT0g bnVsbCkgPyAiIiA6IGxvYy5nZXRCQWN1dGVDb21wRmlsdGVyKCk7DQoJCWZZ YWN1dGVDb21wRmlsdGVyID0gKGxvYy5nZXRZQWN1dGVDb21wRmlsdGVyKCkg PT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRZQWN1dGVDb21wRmlsdGVyKCk7DQoJ CWZNQmFjdXRlQ29tcEZpbHRlciA9IChsb2MuZ2V0TWJBY3V0ZUNvbXBGaWx0 ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldE1iQWN1dGVDb21wRmlsdGVy KCk7DQoJCQ0KCQlmYWN1dGVGaWx0ZXIgPSAobG9jLmdldEFjdXRlRmlsdGVy KCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRBY3V0ZUZpbHRlcigpOw0KCQlm TWFjdXRlRmlsdGVyID0gKGxvYy5nZXRNQWN1dGVGaWx0ZXIoKSA9PSBudWxs KSA/ICIiIDogbG9jLmdldE1BY3V0ZUZpbHRlcigpOw0KCQlmQmFjdXRlRmls dGVyID0gKGxvYy5nZXRCQWN1dGVGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog bG9jLmdldEJBY3V0ZUZpbHRlcigpOw0KCQlmWWFjdXRlRmlsdGVyID0gKGxv Yy5nZXRZQWN1dGVGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldFlB Y3V0ZUZpbHRlcigpOw0KCQlmTUJhY3V0ZUZpbHRlciA9IChsb2MuZ2V0TWJB Y3V0ZUZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0TWJBY3V0ZUZp bHRlcigpOw0KCQkNCgkJZmFpckNvbXBGaWx0ZXIgPSAobG9jLmdldEFpckNv bXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldEFpckNvbXBGaWx0 ZXIoKTsNCgkJZk1haXJDb21wRmlsdGVyID0gKGxvYy5nZXRNQWlyQ29tcEZp bHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0TUFpckNvbXBGaWx0ZXIo KTsNCgkJZkJhaXJDb21wRmlsdGVyID0gKGxvYy5nZXRCQWlyQ29tcEZpbHRl cigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0QkFpckNvbXBGaWx0ZXIoKTsN CgkJZllhaXJDb21wRmlsdGVyID0gKGxvYy5nZXRZQWlyQ29tcEZpbHRlcigp ID09IG51bGwpID8gIiIgOiBsb2MuZ2V0WUFpckNvbXBGaWx0ZXIoKTsNCgkJ Zk1CYWlyQ29tcEZpbHRlciA9IChsb2MuZ2V0TWJBaXJDb21wRmlsdGVyKCkg PT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRNYkFpckNvbXBGaWx0ZXIoKTsNCgkJ DQoJCQ0KCQlmYWlyd2F5RmlsdGVyID0gKGxvYy5nZXRBaXJ3YXlGaWx0ZXIo KSA9PSBudWxsKSA/ICIiIDogbG9jLmdldEFpcndheUZpbHRlcigpOw0KCQlm TWFpcndheUZpbHRlciA9IChsb2MuZ2V0TUFpcndheUZpbHRlcigpID09IG51 bGwpID8gIiIgOiBsb2MuZ2V0TUFpcndheUZpbHRlcigpOw0KCQlmQmFpcndh eUZpbHRlciA9IChsb2MuZ2V0QkFpcndheUZpbHRlcigpID09IG51bGwpID8g IiIgOiBsb2MuZ2V0QkFpcndheUZpbHRlcigpOw0KCQlmWWFpcndheUZpbHRl ciA9IChsb2MuZ2V0WUFpcndheUZpbHRlcigpID09IG51bGwpID8gIiIgOiBs b2MuZ2V0WUFpcndheUZpbHRlcigpOw0KCQlmTUJhaXJ3YXlGaWx0ZXIgPSAo bG9jLmdldE1iQWlyd2F5RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5n ZXRNYkFpcndheUZpbHRlcigpOw0KDQoJCWZvYkZpbHRlciA9IChsb2MuZ2V0 T2JGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldE9iRmlsdGVyKCk7 DQoJCWZjdnJGaWx0ZXIgPSAobG9jLmdldEN2ckZpbHRlcigpID09IG51bGwp ID8gIiIgOiBsb2MuZ2V0Q3ZyRmlsdGVyKCk7DQoNCgkJZmluZkZpbHRlciA9 IChsb2MuZ2V0SW5mRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRJ bmZGaWx0ZXIoKTsNCgkJZnJlakZpbHRlciA9IChsb2MuZ2V0UmVqRmlsdGVy KCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRSZWpGaWx0ZXIoKTsNCgkJZnJl alRoRmlsdGVyID0gKGxvYy5nZXRSZWpUaEZpbHRlcigpID09IG51bGwpID8g IiIgOiBsb2MuZ2V0UmVqVGhGaWx0ZXIoKTsNCgkJZmNtdkZpbHRlciA9IChs b2MuZ2V0Q212RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRDbXZG aWx0ZXIoKTsNCgkJZmFkbUZpbHRlciA9IChsb2MuZ2V0QWRtRmlsdGVyKCkg PT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRBZG1GaWx0ZXIoKTsNCgkJZmNvbXBG aWx0ZXIgPSAobG9jLmdldENvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog bG9jLmdldENvbXBGaWx0ZXIoKTsNCgkJZmNEZXNjQ29tcEZpbHRlciA9IChs b2MuZ2V0Q2Rlc2NDb21wRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5n ZXRDZGVzY0NvbXBGaWx0ZXIoKTsNCgkJZmNEZXNjRmlsdGVyID0gKGxvYy5n ZXRDZGVzY0ZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0Q2Rlc2NG aWx0ZXIoKTsNCgkJZmRheXNDb21wRmlsdGVyID0gKGxvYy5nZXREYXlzQ29t cEZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0RGF5c0NvbXBGaWx0 ZXIoKTsNCgkJZmRheXNGaWx0ZXIgPSAobG9jLmdldERheXNGaWx0ZXIoKSA9 PSBudWxsKSA/ICIiIDogbG9jLmdldERheXNGaWx0ZXIoKTsNCgkJZmJhbEZp bHRlciA9IChsb2MuZ2V0QmFsRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxv Yy5nZXRCYWxGaWx0ZXIoKTsNCgkJZmJhbENlbGxGaWx0ZXIgPSAobG9jLmdl dEJhbENlbGxGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldEJhbENl bGxGaWx0ZXIoKTsNCgkJZmZ0RmlsdGVyID0gKGxvYy5nZXRGdEZpbHRlcigp ID09IG51bGwpID8gIiIgOiBsb2MuZ2V0RnRGaWx0ZXIoKTsNCgkJZmRGRVYx Q29tcEZpbHRlciA9IChsb2MuZ2V0RGZldjFDb21wRmlsdGVyKCkgPT0gbnVs bCkgPyAiIiA6IGxvYy5nZXREZmV2MUNvbXBGaWx0ZXIoKTsNCgkJZmRGRVYx RmlsdGVyID0gKGxvYy5nZXREZmV2MUZpbHRlcigpID09IG51bGwpID8gIiIg OiBsb2MuZ2V0RGZldjFGaWx0ZXIoKTsNCgkJZmluZk9yZ0NvbXBGaWx0ZXIg PSAobG9jLmdldEluZk9yZ0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog bG9jLmdldEluZk9yZ0NvbXBGaWx0ZXIoKTsNCgkJZmluZk9yZ0ZpbHRlciA9 IChsb2MuZ2V0SW5mT3JnRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5n ZXRJbmZPcmdGaWx0ZXIoKTsNCgkJZmJhbE9yZ0NvbXBGaWx0ZXIgPSAobG9j LmdldEJhbE9yZ0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdl dEJhbE9yZ0NvbXBGaWx0ZXIoKTsNCgkJZmJhbE9yZ0ZpbHRlciA9IChsb2Mu Z2V0QmFsT3JnRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRCYWxP cmdGaWx0ZXIoKTsNCgkJZnJlalRoUmVhc29uc0NvbXBGaWx0ZXIgPSAobG9j LmdldFJlalRoUmVhc29uc0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog bG9jLmdldFJlalRoUmVhc29uc0NvbXBGaWx0ZXIoKTsNCgkJZnJlalRoUmVh c29uc0ZpbHRlciA9IChsb2MuZ2V0UmVqVGhSZWFzb25zRmlsdGVyKCkgPT0g bnVsbCkgPyAiIiA6IGxvYy5nZXRSZWpUaFJlYXNvbnNGaWx0ZXIoKTsNCg0K CQlmYWdlQ29tcEZpbHRlciA9IChsb2MuZ2V0QWdlQ29tcEZpbHRlcigpID09 IG51bGwpID8gIiIgOiBsb2MuZ2V0QWdlQ29tcEZpbHRlcigpOw0KCQlmYWdl RmlsdGVyID0gKGxvYy5nZXRBZ2VGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog bG9jLmdldEFnZUZpbHRlcigpOw0KCQlmbzJTYXRDb21wRmlsdGVyID0gKGxv Yy5nZXRPMlNhdENvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdl dE8yU2F0Q29tcEZpbHRlcigpOw0KCQlmbzJTYXRGaWx0ZXIgPSAobG9jLmdl dE8yU2F0RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRPMlNhdEZp bHRlcigpOw0KDQoJCWZwYXhDb21wRmlsdGVyID0gKGxvYy5nZXRQYXhDb21w RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRQYXhDb21wRmlsdGVy KCk7DQoJCWZwYXhGaWx0ZXIgPSAobG9jLmdldFBheEZpbHRlcigpID09IG51 bGwpID8gIiIgOiBsb2MuZ2V0UGF4RmlsdGVyKCk7DQoJCWZjcHRDb21wRmls dGVyID0gKGxvYy5nZXRDcHRDb21wRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6 IGxvYy5nZXRDcHRDb21wRmlsdGVyKCk7DQoJCWZjcHRGaWx0ZXIgPSAobG9j LmdldENwdEZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0Q3B0Rmls dGVyKCk7DQoJCWZjc0NvbXBGaWx0ZXIgPSAobG9jLmdldENzQ29tcEZpbHRl cigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0Q3NDb21wRmlsdGVyKCk7DQoJ CWZjc0ZpbHRlciA9IChsb2MuZ2V0Q3NGaWx0ZXIoKSA9PSBudWxsKSA/ICIi IDogbG9jLmdldENzRmlsdGVyKCk7DQoJCWZlbnJvbGxEdENvbXBGaWx0ZXIg PSAobG9jLmdldEVucm9sbER0Q29tcEZpbHRlcigpID09IG51bGwpID8gIiIg OiBsb2MuZ2V0RW5yb2xsRHRDb21wRmlsdGVyKCk7DQoJCWZlbnJvbGxEdEZp bHRlciA9IChsb2MuZ2V0RW5yb2xsRHRGaWx0ZXIoKSA9PSBudWxsKSA/ICIi IDogbG9jLmdldEVucm9sbER0RmlsdGVyKCk7DQoNCgkJZmluZFRoZXJhcHlD b21wRmlsdGVyID0gKGxvYy5nZXRJbmRUaGVyYXB5Q29tcEZpbHRlcigpID09 IG51bGwpID8gIiIgOiBsb2MuZ2V0SW5kVGhlcmFweUNvbXBGaWx0ZXIoKTsN CgkJZmluZFRoZXJhcHlGaWx0ZXIgICAgID0gKGxvYy5nZXRJbmRUaGVyYXB5 RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRJbmRUaGVyYXB5Rmls dGVyKCk7DQoNCgkJZm90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIgPSAobG9j LmdldE90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIi IDogbG9jLmdldE90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIoKTsNCgkJZm90 aGVyTWVkaWNhdGlvbkZpbHRlciAgICAgPSAobG9jLmdldE90aGVyTWVkaWNh dGlvbkZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0T3RoZXJNZWRp Y2F0aW9uRmlsdGVyKCk7DQoJCQkJDQoJCWZyZWpUcmVhdG1lbnRIaXN0b3J5 Q29tcEZpbHRlciA9IChsb2MuZ2V0UmVqVHJlYXRtZW50SGlzdG9yeUNvbXBG aWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldFJlalRyZWF0bWVudEhp c3RvcnlDb21wRmlsdGVyKCk7DQoJCWZyZWpUcmVhdG1lbnRIaXN0b3J5Rmls dGVyICAgICA9IChsb2MuZ2V0UmVqVHJlYXRtZW50SGlzdG9yeUZpbHRlcigp ID09IG51bGwpID8gIiIgOiBsb2MuZ2V0UmVqVHJlYXRtZW50SGlzdG9yeUZp bHRlcigpOw0KDQoJCWZyZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVyID0g KGxvYy5nZXRSZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVyKCkgPT0gbnVs bCkgPyAiIiA6IGxvYy5nZXRSZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVy KCk7DQoJCWZyZWNlcGllbnRDTVZNZXRob2RGaWx0ZXIgICAgID0gKGxvYy5n ZXRSZWNlcGllbnRDTVZNZXRob2RGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog bG9jLmdldFJlY2VwaWVudENNVk1ldGhvZEZpbHRlcigpOw0KDQoJCWZyZWpl Y3Rpb25UcmVhdG1lbnRzQ29tcEZpbHRlciA9IChsb2MuZ2V0UmVqZWN0aW9u VHJlYXRtZW50c0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdl dFJlamVjdGlvblRyZWF0bWVudHNDb21wRmlsdGVyKCk7DQoJCWZyZWplY3Rp b25UcmVhdG1lbnRzRmlsdGVyICAgICA9IChsb2MuZ2V0UmVqZWN0aW9uVHJl YXRtZW50c0ZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0UmVqZWN0 aW9uVHJlYXRtZW50c0ZpbHRlcigpOw0KCQkNCgkJDQoJfQ0KDQoJcHVibGlj IEx1bmdPdXRjb21lUXVlcnkgbWFrZVF1ZXJ5KCkgdGhyb3dzIEV4Y2VwdGlv biB7DQoJCS8vU3lzdGVtLm91dC5wcmludGxuKCJtYWtlUXVlcnkoKSAgbWV0 aG9kIGNhbGxlZCA9PT09PT09PSAiKTsNCgkJcmV0dXJuIG1ha2VRdWVyeShu dWxsKTsNCgl9DQoNCglwdWJsaWMgTHVuZ091dGNvbWVRdWVyeSBtYWtlUXVl cnkoU3RyaW5nIHVzZXJJZCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQoJCS8vU3lz dGVtLm91dC5wcmludGxuKCJtYWtlUXVlcnkoU3RyaW5nIHVzZXJJZCkgIG1l dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoJCS8vU3RyaW5nIGl0ZW1MaXN0 ID0gZ2V0U2FtcGxlc1N0cmluZyhmc2FtcGxlTGlzdCk7DQoNCgkJTGFyZ29R dWVyeSBsb2MgPSBuZXcgTGFyZ29RdWVyeSgpOw0KDQoJCWlmICghKGZxdWVy eUlkLmVxdWFscygiIikpKSB7DQoJCQlJbnRlZ2VyIHF1ZXJ5SWRJID0gbmV3 IEludGVnZXIoZnF1ZXJ5SWQpOw0KCQkJbG9jLnNldFF1ZXJ5SWQocXVlcnlJ ZEkuaW50VmFsdWUoKSk7DQoJCX0NCg0KCQlsb2Muc2V0VXNlcklkKHVzZXJJ ZCk7DQoJCWxvYy5zZXRRdWVyeU5hbWUoZnF1ZXJ5TmFtZSk7DQoJCWxvYy5z ZXREQk5hbWUoIkxBUkdPIik7DQoNCgkJaWYgKCEoZmNlbnRlcklkLmVxdWFs cygiIikpKQ0KCQkJbG9jLnNldENlbnRlcklkKGZjZW50ZXJJZCk7DQoNCgkJ U3RyaW5nIGF0dHJMaXN0ID0gIiI7DQoNCg0KCQkNCgkJLy9mb3IgKGludCBp PTA7aTxmYXR0ci5sZW5ndGg7aSsrKSBhdHRyTGlzdCArPSAiLCIgKyBmYXR0 cltpXTsNCg0KCQlpZiAoIShmYXR0ckxpc3QuZXF1YWxzKCIiKSkpewkJCQ0K CQkJbG9jLnNldEF0dHJMaXN0KGZhdHRyTGlzdCk7DQoJCX0NCg0KDQoJCS8v U3lzdGVtLm91dC5wcmludGxuKCJDZW50ZXIgTmFtZSA6ICIgKyBmY2VudGVy TmFtZSk7DQoNCgkJaWYgKCEoZmNlbnRlck5hbWUuZXF1YWxzKCIiKSkpDQoJ CQlsb2Muc2V0Q2VudGVyTmFtZShmY2VudGVyTmFtZSk7DQoJCWlmICghKGZw YXRpZW50TGlzdC5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRQYXRpZW50TGlz dChmcGF0aWVudExpc3QpOw0KCQlpZiAoIShmc2FtcGxlTGlzdC5lcXVhbHMo IiIpKSkNCgkJCWxvYy5zZXRTYW1wbGVMaXN0KGZzYW1wbGVMaXN0KTsNCg0K CQlpZiAoIShmc2FtcGxlRndkLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFNh bXBsZUZ3ZChmc2FtcGxlRndkKTsNCgkJaWYgKCEoZnNhbXBsZVJldi5lcXVh bHMoIiIpKSkNCgkJCWxvYy5zZXRTYW1wbGVSZXYoZnNhbXBsZVJldik7DQoN CgkJaWYgKCEoZmluZENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Mu c2V0SW5kQ29tcEZpbHRlcihmaW5kQ29tcEZpbHRlcik7DQoJCWlmICghKGZp bmRGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5kRmlsdGVyKGZp bmRGaWx0ZXIpOw0KCQlpZiAoIShmYmlvRmlsdGVyLmVxdWFscygiIikpKQ0K CQkJbG9jLnNldEJpb0ZpbHRlcihmYmlvRmlsdGVyKTsNCgkJDQoJCWlmICgh KGZhY3V0ZUNvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0QWN1 dGVDb21wRmlsdGVyKGZhY3V0ZUNvbXBGaWx0ZXIpOw0KCQlpZiAoIShmTWFj dXRlQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRNQWN1dGVD b21wRmlsdGVyKGZNYWN1dGVDb21wRmlsdGVyKTsNCgkJDQoJCWlmICghKGZC YWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJBY3V0 ZUNvbXBGaWx0ZXIoZkJhY3V0ZUNvbXBGaWx0ZXIpOw0KCQkNCgkJaWYgKCEo Zk1CYWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE1i QWN1dGVDb21wRmlsdGVyKGZNQmFjdXRlQ29tcEZpbHRlcik7CQkNCgkJaWYg KCEoZllhY3V0ZUNvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0 WUFjdXRlQ29tcEZpbHRlcihmWWFjdXRlQ29tcEZpbHRlcik7CQkNCgkJDQoJ CWlmICghKGZhY3V0ZUZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRB Y3V0ZUZpbHRlcihmYWN1dGVGaWx0ZXIpOw0KCQlpZiAoIShmTWFjdXRlRmls dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE1BY3V0ZUZpbHRlcihmTWFj dXRlRmlsdGVyKTsNCgkJaWYgKCEoZkJhY3V0ZUZpbHRlci5lcXVhbHMoIiIp KSkNCgkJCWxvYy5zZXRCQWN1dGVGaWx0ZXIoZkJhY3V0ZUZpbHRlcik7DQoJ CWlmICghKGZNQmFjdXRlRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl dE1iQWN1dGVGaWx0ZXIoZk1CYWN1dGVGaWx0ZXIpOw0KCQlpZiAoIShmWWFj dXRlRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFlBY3V0ZUZpbHRl cihmWWFjdXRlRmlsdGVyKTsNCgkJDQoJCQ0KCQlpZiAoIShmYWlyQ29tcEZp bHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRBaXJDb21wRmlsdGVyKGZh aXJDb21wRmlsdGVyKTsNCgkJaWYgKCEoZk1haXJDb21wRmlsdGVyLmVxdWFs cygiIikpKQ0KCQkJbG9jLnNldE1BaXJDb21wRmlsdGVyKGZNYWlyQ29tcEZp bHRlcik7DQoJCWlmICghKGZCYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkN CgkJCWxvYy5zZXRCQWlyQ29tcEZpbHRlcihmQmFpckNvbXBGaWx0ZXIpOw0K CQlpZiAoIShmTUJhaXJDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9j LnNldE1iQWlyQ29tcEZpbHRlcihmTUJhaXJDb21wRmlsdGVyKTsNCgkJaWYg KCEoZllhaXJDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFlB aXJDb21wRmlsdGVyKGZZYWlyQ29tcEZpbHRlcik7DQoJCQ0KCQlpZiAoIShm YWlyd2F5RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEFpcndheUZp bHRlcihmYWlyd2F5RmlsdGVyKTsNCgkJaWYgKCEoZk1haXJ3YXlGaWx0ZXIu ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0TUFpcndheUZpbHRlcihmTWFpcndh eUZpbHRlcik7DQoJCWlmICghKGZCYWlyd2F5RmlsdGVyLmVxdWFscygiIikp KQ0KCQkJbG9jLnNldEJBaXJ3YXlGaWx0ZXIoZkJhaXJ3YXlGaWx0ZXIpOw0K CQlpZiAoIShmTUJhaXJ3YXlGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Mu c2V0TWJBaXJ3YXlGaWx0ZXIoZk1CYWlyd2F5RmlsdGVyKTsNCgkJaWYgKCEo ZllhaXJ3YXlGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0WUFpcndh eUZpbHRlcihmWWFpcndheUZpbHRlcik7DQoJCQ0KCQlpZiAoIShmY3ZyRmls dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEN2ckZpbHRlcihmY3ZyRmls dGVyKTsNCgkJaWYgKCEoZm9iRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9j LnNldE9iRmlsdGVyKGZvYkZpbHRlcik7DQoJCWlmICghKGZpbmZGaWx0ZXIu ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5mRmlsdGVyKGZpbmZGaWx0ZXIp Ow0KCQlpZiAoIShmcmVqRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl dFJlakZpbHRlcihmcmVqRmlsdGVyKTsNCgkJaWYgKCEoZnJlalRoRmlsdGVy LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFJlalRoRmlsdGVyKGZyZWpUaEZp bHRlcik7DQoJCWlmICghKGZjbXZGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls b2Muc2V0Q212RmlsdGVyKGZjbXZGaWx0ZXIpOw0KCQlpZiAoIShmYWRtRmls dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEFkbUZpbHRlcihmYWRtRmls dGVyKTsNCgkJaWYgKCEoZmNEZXNjQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkN CgkJCWxvYy5zZXRDZGVzY0NvbXBGaWx0ZXIoZmNEZXNjQ29tcEZpbHRlcik7 DQoJCWlmICghKGZjRGVzY0ZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5z ZXRDZGVzY0ZpbHRlcihmY0Rlc2NGaWx0ZXIpOw0KCQlpZiAoIShmY29tcEZp bHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRDb21wRmlsdGVyKGZjb21w RmlsdGVyKTsNCgkJaWYgKCEoZmRheXNDb21wRmlsdGVyLmVxdWFscygiIikp KQ0KCQkJbG9jLnNldERheXNDb21wRmlsdGVyKGZkYXlzQ29tcEZpbHRlcik7 DQoJCWlmICghKGZkYXlzRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl dERheXNGaWx0ZXIoZmRheXNGaWx0ZXIpOw0KCQlpZiAoIShmYmFsRmlsdGVy LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJhbEZpbHRlcihmYmFsRmlsdGVy KTsNCgkJaWYgKCEoZmJhbENlbGxGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls b2Muc2V0QmFsQ2VsbEZpbHRlcihmYmFsQ2VsbEZpbHRlcik7DQoJCWlmICgh KGZmdEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRGdEZpbHRlcihm ZnRGaWx0ZXIpOw0KCQlpZiAoIShmZEZFVjFDb21wRmlsdGVyLmVxdWFscygi IikpKQ0KCQkJbG9jLnNldERmZXYxQ29tcEZpbHRlcihmZEZFVjFDb21wRmls dGVyKTsNCgkJaWYgKCEoZmRGRVYxRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJ bG9jLnNldERmZXYxRmlsdGVyKGZkRkVWMUZpbHRlcik7DQoJCWlmICghKGZp bmZPcmdDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEluZk9y Z0NvbXBGaWx0ZXIoZmluZk9yZ0NvbXBGaWx0ZXIpOw0KCQlpZiAoIShmaW5m T3JnRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEluZk9yZ0ZpbHRl cihmaW5mT3JnRmlsdGVyKTsNCgkJaWYgKCEoZmJhbE9yZ0NvbXBGaWx0ZXIu ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0QmFsT3JnQ29tcEZpbHRlcihmYmFs T3JnQ29tcEZpbHRlcik7DQoJCWlmICghKGZiYWxPcmdGaWx0ZXIuZXF1YWxz KCIiKSkpDQoJCQlsb2Muc2V0QmFsT3JnRmlsdGVyKGZiYWxPcmdGaWx0ZXIp Ow0KCQlpZiAoIShmcmVqVGhSZWFzb25zQ29tcEZpbHRlci5lcXVhbHMoIiIp KSkNCgkJCWxvYy5zZXRSZWpUaFJlYXNvbnNDb21wRmlsdGVyKGZyZWpUaFJl YXNvbnNDb21wRmlsdGVyKTsNCgkJaWYgKCEoZnJlalRoUmVhc29uc0ZpbHRl ci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRSZWpUaFJlYXNvbnNGaWx0ZXIo ZnJlalRoUmVhc29uc0ZpbHRlcik7DQoNCgkJaWYgKCEoZmFnZUNvbXBGaWx0 ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0QWdlQ29tcEZpbHRlcihmYWdl Q29tcEZpbHRlcik7DQoJCWlmICghKGZhZ2VGaWx0ZXIuZXF1YWxzKCIiKSkp DQoJCQlsb2Muc2V0QWdlRmlsdGVyKGZhZ2VGaWx0ZXIpOw0KCQlpZiAoIShm bzJTYXRDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE8yU2F0 Q29tcEZpbHRlcihmbzJTYXRDb21wRmlsdGVyKTsNCgkJaWYgKCEoZm8yU2F0 RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE8yU2F0RmlsdGVyKGZv MlNhdEZpbHRlcik7DQoJCWlmICghKGZwYXhDb21wRmlsdGVyLmVxdWFscygi IikpKQ0KCQkJbG9jLnNldFBheENvbXBGaWx0ZXIoZnBheENvbXBGaWx0ZXIp Ow0KCQlpZiAoIShmcGF4RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl dFBheEZpbHRlcihmcGF4RmlsdGVyKTsNCgkJaWYgKCEoZmNwdENvbXBGaWx0 ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0Q3B0Q29tcEZpbHRlcihmY3B0 Q29tcEZpbHRlcik7DQoJCWlmICghKGZjcHRGaWx0ZXIuZXF1YWxzKCIiKSkp DQoJCQlsb2Muc2V0Q3B0RmlsdGVyKGZjcHRGaWx0ZXIpOw0KCQlpZiAoIShm Y3NDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldENzQ29tcEZp bHRlcihmY3NDb21wRmlsdGVyKTsNCgkJaWYgKCEoZmNzRmlsdGVyLmVxdWFs cygiIikpKQ0KCQkJbG9jLnNldENzRmlsdGVyKGZjc0ZpbHRlcik7DQoNCgkJ aWYgKCEoZmVucm9sbER0Q29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxv Yy5zZXRFbnJvbGxEdENvbXBGaWx0ZXIoZmVucm9sbER0Q29tcEZpbHRlcik7 DQoNCgkJaWYgKCEoZmVucm9sbER0RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJ bG9jLnNldEVucm9sbER0RmlsdGVyKGZlbnJvbGxEdEZpbHRlcik7DQoNCgkJ aWYgKCEoZmluZFRoZXJhcHlDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJ bG9jLnNldEluZFRoZXJhcHlDb21wRmlsdGVyKGZpbmRUaGVyYXB5Q29tcEZp bHRlcik7DQoNCgkJaWYgKCEoZmluZFRoZXJhcHlGaWx0ZXIuZXF1YWxzKCIi KSkpDQoJCQlsb2Muc2V0SW5kVGhlcmFweUZpbHRlcihmaW5kVGhlcmFweUZp bHRlcik7DQoNCgkJaWYgKCEoZm90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIu ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0T3RoZXJNZWRpY2F0aW9uQ29tcEZp bHRlcihmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlcik7DQoNCgkJaWYgKCEo Zm90aGVyTWVkaWNhdGlvbkZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5z ZXRPdGhlck1lZGljYXRpb25GaWx0ZXIoZm90aGVyTWVkaWNhdGlvbkZpbHRl cik7DQoNCgkJaWYgKCEoZnJlalRyZWF0bWVudEhpc3RvcnlDb21wRmlsdGVy LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFJlalRyZWF0bWVudEhpc3RvcnlD b21wRmlsdGVyKGZyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZpbHRlcik7DQoN CgkJaWYgKCEoZnJlalRyZWF0bWVudEhpc3RvcnlGaWx0ZXIuZXF1YWxzKCIi KSkpDQoJCQlsb2Muc2V0UmVqVHJlYXRtZW50SGlzdG9yeUZpbHRlcihmcmVq VHJlYXRtZW50SGlzdG9yeUZpbHRlcik7DQoJCQ0KCQkNCgkJaWYgKCEoZnJl Y2VwaWVudENNVk1ldGhvZENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls b2Muc2V0UmVjZXBpZW50Q01WTWV0aG9kQ29tcEZpbHRlcihmcmVjZXBpZW50 Q01WTWV0aG9kQ29tcEZpbHRlcik7DQoNCgkJaWYgKCEoZnJlY2VwaWVudENN Vk1ldGhvZEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRSZWNlcGll bnRDTVZNZXRob2RGaWx0ZXIoZnJlY2VwaWVudENNVk1ldGhvZEZpbHRlcik7 DQoNCgkJaWYgKCEoZnJlamVjdGlvblRyZWF0bWVudHNDb21wRmlsdGVyLmVx dWFscygiIikpKQ0KCQkJbG9jLnNldFJlamVjdGlvblRyZWF0bWVudHNDb21w RmlsdGVyKGZyZWplY3Rpb25UcmVhdG1lbnRzQ29tcEZpbHRlcik7DQoNCgkJ aWYgKCEoZnJlamVjdGlvblRyZWF0bWVudHNGaWx0ZXIuZXF1YWxzKCIiKSkp DQoJCQlsb2Muc2V0UmVqZWN0aW9uVHJlYXRtZW50c0ZpbHRlcihmcmVqZWN0 aW9uVHJlYXRtZW50c0ZpbHRlcik7DQoNCgkJDQoJCQ0KCQlpZiAoIShmY29t cENvbW1lbnRzQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRD b21wQ29tbWVudHNDb21wRmlsdGVyKGZjb21wQ29tbWVudHNDb21wRmlsdGVy KTsNCg0KCQlpZiAoIShmY29tcENvbW1lbnRzRmlsdGVyLmVxdWFscygiIikp KQ0KCQkJbG9jLnNldENvbXBDb21tZW50c0ZpbHRlcihmY29tcENvbW1lbnRz RmlsdGVyKTsNCg0KCQ0KCQlpZiAoIShmYkFMQ29tbWVudHNDb21wRmlsdGVy LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJBTENvbW1lbnRzQ29tcEZpbHRl cihmYkFMQ29tbWVudHNDb21wRmlsdGVyKTsNCg0KCQkNCgkJaWYgKCEoZmJB TENvbW1lbnRzRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJBTENv bW1lbnRzRmlsdGVyKGZiQUxDb21tZW50c0ZpbHRlcik7DQoJCQ0KCQlpZiAo IShpbmZDb21tZW50c0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Mu c2V0SW5mQ29tbWVudHNDb21wRmlsdGVyKGluZkNvbW1lbnRzQ29tcEZpbHRl cik7DQoNCgkJDQoJCWlmICghKGluZkNvbW1lbnRzRmlsdGVyLmVxdWFscygi IikpKQ0KCQkJbG9jLnNldEluZkNvbW1lbnRzRmlsdGVyKGluZkNvbW1lbnRz RmlsdGVyKTsNCgkJDQoJCWlmICghKG1iQ29tbWVudHNDb21wRmlsdGVyLmVx dWFscygiIikpKQ0KCQkJbG9jLnNldE1CQ29tbWVudHNDb21wRmlsdGVyKG1i Q29tbWVudHNDb21wRmlsdGVyKTsNCg0KCQlpZiAoIShtYkNvbW1lbnRzRmls dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE1CQ29tbWVudHNGaWx0ZXIo bWJDb21tZW50c0ZpbHRlcik7DQoJCQ0KCQkNCgkJaWYgKCEoc3VtbWFyeUNv bW1lbnRzQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRTdW1t YXJ5Q29tbWVudHNDb21wRmlsdGVyKHN1bW1hcnlDb21tZW50c0NvbXBGaWx0 ZXIpOw0KDQoJCWlmICghKHN1bW1hcnlDb21tZW50c0ZpbHRlci5lcXVhbHMo IiIpKSkNCgkJCWxvYy5zZXRTdW1tYXJ5Q29tbWVudHNGaWx0ZXIoc3VtbWFy eUNvbW1lbnRzRmlsdGVyKTsNCgkJDQoJCWlmICghKGluZFRoZXJhcHlDb21t ZW50c0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5kVGhl cmFweUNvbW1lbnRzQ29tcEZpbHRlcihpbmRUaGVyYXB5Q29tbWVudHNDb21w RmlsdGVyKTsNCg0KCQlpZiAoIShpbmRUaGVyYXB5Q29tbWVudHNGaWx0ZXIu ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5kVGhlcmFweUNvbW1lbnRzRmls dGVyKGluZFRoZXJhcHlDb21tZW50c0ZpbHRlcik7DQoJCQ0KCQlpZiAoIShy ZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikp KQ0KCQkJbG9jLnNldFJlamVjdGlvbkVwaXNvZGVDb21tZW50c0NvbXBGaWx0 ZXIocmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzQ29tcEZpbHRlcik7DQoNCgkJ aWYgKCEocmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyLmVxdWFscygi IikpKQ0KCQkJbG9jLnNldFJlamVjdGlvbkVwaXNvZGVDb21tZW50c0ZpbHRl cihyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNGaWx0ZXIpOw0KDQoJCQ0KCQlp ZiAoIShmZm5Db21tZW50c0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls b2Muc2V0Rm5Db21tZW50c0NvbXBGaWx0ZXIoZmZuQ29tbWVudHNDb21wRmls dGVyKTsNCg0KCQlpZiAoIShmZm5Db21tZW50c0ZpbHRlci5lcXVhbHMoIiIp KSkNCgkJCWxvYy5zZXRGbkNvbW1lbnRzRmlsdGVyKGZmbkNvbW1lbnRzRmls dGVyKTsNCgkJDQoJCQ0KCQlMdW5nT3V0Y29tZVF1ZXJ5IGxxID0gbmV3IEx1 bmdPdXRjb21lUXVlcnkoKTsNCgkJbHEuc2V0TG9jQ3JpdGVyaWEobG9jKTsN Cg0KCQlyZXR1cm4gbHE7DQoJfQ0KCQ0KCQ0KDQoJcHVibGljIFhNTE9iamVj dCBoYW5kbGVTYXZlUXVlcnkoKQ0KCSAgICAgIHRocm93cyBIdHRwUHJlc2Vu dGF0aW9uRXhjZXB0aW9uIHsNCgkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImhh bmRsZVNhdmVRdWVyeSgpICBtZXRob2QgY2FsbGVkID09PT09PT09ICIpOw0K CQlNeVF1ZXJpZXNIVE1MIHBhZ2UgPSAoTXlRdWVyaWVzSFRNTCkgbXlDb21t cy54bWxjRmFjdG9yeS5jcmVhdGUoTXlRdWVyaWVzSFRNTC5jbGFzcyk7Ow0K DQoJCXNldFBhcmFtcygpOw0KDQoJCXRyeSB7DQoNCgkJCWxxID0gbWFrZVF1 ZXJ5KHRoaXMuZ2V0VXNlcigpKTsNCg0KCQkJYm9vbGVhbiByZXQgPSBUcmFu c3BsYW50VXRpbC5zYXZlUXVlcnkobHEuZ2V0TG9jQ3JpdGVyaWEoKSwiTEFS R08iKTsNCg0KCQl9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7CQkJDQoJCQllLnBy aW50U3RhY2tUcmFjZSgpOw0KCQkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0 TWVzc2FnZSgpKTsNCgkJfQ0KDQoNCgkJdGhyb3cgbmV3IENsaWVudFBhZ2VS ZWRpcmVjdEV4Y2VwdGlvbigiTXlRdWVyaWVzUE8ucG8/c3R1ZHk9TEFSR08i KTsNCg0KCX0NCg0KCXB1YmxpYyBYTUxPYmplY3QgaGFuZGxlU3RhcnQoKQ0K CSAgICAgIHRocm93cyBIdHRwUHJlc2VudGF0aW9uRXhjZXB0aW9uIHsNCgkJ Ly9TeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZVN0YXJ0KCkgIG1ldGhvZCBj YWxsZWQgPT09PT09PT0gIik7DQoJCXRocm93IG5ldyBDbGllbnRQYWdlUmVk aXJlY3RFeGNlcHRpb24oIkxEYXRhUUNGaW5kZUNSRlZpZXdQTy5wbyIpOw0K CX0NCg0KCXB1YmxpYyBYTUxPYmplY3QgaGFuZGxlQWRkQXR0cigpDQoJICAg ICAgdGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24gew0KCQkvL1N5 c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlQWRkQXR0cigpICBtZXRob2QgY2Fs bGVkID09PT09PT09ICIpOw0KCQl0aHJvdyBuZXcgU2VydmVyUGFnZVJlZGly ZWN0RXhjZXB0aW9uKCJMRGF0YVFDRmluZGVDUkZWaWV3UE8ucG8iKTsNCgl9 DQoNCglwdWJsaWMgWE1MT2JqZWN0IGhhbmRsZVNlbEVuYygpDQoJICAgICAg dGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24gew0KCQkvL1N5c3Rl bS5vdXQucHJpbnRsbigiaGFuZGxlU2VsRW5jKCkgIG1ldGhvZCBjYWxsZWQg PT09PT09PT0gIik7DQoJCXRocm93IG5ldyBTZXJ2ZXJQYWdlUmVkaXJlY3RF eGNlcHRpb24oIkxEYXRhUUNGaW5kZUNSRlZpZXdQTy5wbyIpOw0KCX0NCgkN CglwdWJsaWMgWE1MT2JqZWN0IGhhbmRsZVNlbFBhdCgpIHRocm93cyBIdHRw UHJlc2VudGF0aW9uRXhjZXB0aW9uIHsNCgkJdGhyb3cgbmV3IFNlcnZlclBh Z2VSZWRpcmVjdEV4Y2VwdGlvbigiTERhdGFRQ0ZpbmRlQ1JGVmlld1BPLnBv Iik7DQoJfQ0KCQ0KCQ0KCXB1YmxpYyBYTUxPYmplY3QgaGFuZGxlRGVmYXVs dCgpDQoJICAgICAgdGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24g ew0KCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlRGVmYXVsdCgpICBt ZXRob2QgY2FsbGVkID09PT09PT09ICIpOw0KCQkNCgkJaWYobnVsbCA9PSB0 aGlzLmdldFVzZXIoKSkgew0KCQkJdGhyb3cgbmV3IENsaWVudFBhZ2VSZWRp cmVjdEV4Y2VwdGlvbigiTG9naW5QcmVzZW50YXRpb24ucG8iKTsNCgkJfQ0K CQlMQVJHT1FDZUNSRlZpZXdIVE1MIHBhZ2UgPSBudWxsOw0KDQoJCXNldFBh cmFtcygpOw0KDQoJCVN0cmluZyB1c2VySWQgPSB0aGlzLmdldFVzZXIoKTsN CgkJDQoJCVN5c3RlbS5vdXQucHJpbnRsbigidXNlciBpZCAiK3VzZXJJZCk7 DQoJCVN5c3RlbS5vdXQucHJpbnRsbigiUm9sZSBpZCAiK3RoaXMuZ2V0Um9s ZSgpKTsNCgkJdHJ5IHsNCg0KCQkJaWYgKCEoZnF1ZXJ5LmVxdWFscygiIikp ICYmICEoZnF1ZXJ5SWQuZXF1YWxzKCIiKSkpIHsNCg0KCQkJCUxhcmdvUXVl cnkgbG9jID0gKExhcmdvUXVlcnkpIFRyYW5zcGxhbnRVdGlsLnJlc3RvcmVR dWVyeShmcXVlcnlJZCwiTEFSR08iKTsNCg0KCQkJCWxxID0gbmV3IEx1bmdP dXRjb21lUXVlcnkoKTsNCgkJCQlscS5zZXRMb2NDcml0ZXJpYShsb2MpOw0K DQoJCQkJcmVhZFF1ZXJ5Q3JpdGVyaWEobG9jKTsNCgkJCX0NCgkJCWVsc2Ug ew0KCQkJCWxxID0gbWFrZVF1ZXJ5KCk7DQoJCQl9DQoNCgkJCXNyUm93cyA9 IFRyYW5zcGxhbnRVdGlsLmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJv bGUoKSk7DQoNCgkJCWlmIChzclJvd3MgIT0gbnVsbCkNCgkJCQlTeXN0ZW0u b3V0LnByaW50bG4oIlNpemUiICsgc3JSb3dzLnNpemUoKSk7DQoNCg0KCQkJ cGFnZSA9IChMQVJHT1FDZUNSRlZpZXdIVE1MKSAgZGlzcGxheURhdGEoKTsN CgkJCUhUTUxJbnB1dEVsZW1lbnQgZVF1ZXJ5TmFtZSA9IChIVE1MSW5wdXRF bGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJRdWVyeU5hbWUiKTs7DQoJ CQllUXVlcnlOYW1lLnNldFZhbHVlKGZxdWVyeU5hbWUpOw0KCQkJDQoNCgkJ fSBjYXRjaChFeGNlcHRpb24gZSkgew0KCQkJU3lzdGVtLm91dC5wcmludGxu KCJJIGFtIGV4Iik7DQoJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KCQkJU3lz dGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsNCgkJfQ0KDQoJCXJl dHVybiBwYWdlOw0KDQoJfQ0KDQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVT aG93KCkNCgkgICAgICB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlv biB7DQoJCS8vU3lzdGVtLm91dC5wcmludGxuKCJoYW5kbGVTaG93KCkgIG1l dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoNCgkJU3RyaW5nIGNlbGxDb2xv ciA9ICIjRDhEOEQ4IjsNCg0KDQoJLy8gU2hvdyByZWNvcmRzIHRoYXQgaGF2 ZSBmYWlsZWQgdGhlc2UgcGFyYW1ldGVycw0KDQoJCUxBUkdPUUNlQ1JGVmll d0hUTUwgcGFnZSA9IG51bGw7DQoJCXRyeSB7DQoNCgkJc2V0UGFyYW1zKCk7 DQoJCWxxID0gbWFrZVF1ZXJ5KCk7DQoJCXNyUm93cyA9IFRyYW5zcGxhbnRV dGlsLmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUoKSk7DQoNCgkJ QXJyYXlMaXN0IGZMaXN0ID0gbmV3IEFycmF5TGlzdCgpOw0KDQoJCWlmIChz clJvd3MgIT0gbnVsbCkNCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiU2l6ZSIg KyBzclJvd3Muc2l6ZSgpKTsNCgkJTHVuZ0NET3V0Y29tZSBsdW5nQ0RPdXRj b21lID0gbnVsbDsNCgkJZm9yIChJdGVyYXRvciBkYXRhPXNyUm93cy5pdGVy YXRvcigpOyBkYXRhLmhhc05leHQoKTspIHsNCg0KCQkJbHVuZ0NET3V0Y29t ZSA9IChMdW5nQ0RPdXRjb21lKSBkYXRhLm5leHQoKTsNCg0KCQkJYm9vbGVh biBxY0ZhaWxlZCA9IGZhbHNlOw0KCQkJZm9yIChpbnQgaT0wO2k8ZlFDMS5s ZW5ndGg7aSsrKSB7DQoJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4obHVuZ0NE T3V0Y29tZS5zdGVyb2lkcysiZ2V0UUNSZXN1bHQobHVuZ0NET3V0Y29tZSwn cWMnK2ZRQzFbaV0pIitnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJxYyIr ZlFDMVtpXSkpOw0KCQkJCWlmICghZ2V0UUNSZXN1bHQobHVuZ0NET3V0Y29t ZSwicWMiK2ZRQzFbaV0pKSB7DQoJCQkJCXFjRmFpbGVkID0gdHJ1ZTsNCgkJ CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlmb3IgKGludCBpPTA7aTxm UUMyLmxlbmd0aDtpKyspIHsNCgkJCQlpZiAoIWdldFFDUmVzdWx0KGx1bmdD RE91dGNvbWUsInFjMiIrZlFDMltpXSkpIHsNCgkJCQkJcWNGYWlsZWQgPSB0 cnVlOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCWlmIChxY0Zh aWxlZCkgZkxpc3QuYWRkKGx1bmdDRE91dGNvbWUpOw0KDQoJCQkvL2lmIChs dW5nQ0RPdXRjb21lLnFjQWN1dGVHcmFkZSgpKSB7DQoJCQkvLwlmTGlzdC5h ZGQobHVuZ0NET3V0Y29tZSk7DQoJCQkvL30NCgkJCS8vU3lzdGVtLm91dC5w cmludGxuKCJlbmNvdW50ZXJpZCAiK2x1bmdDRE91dGNvbWUuZW5jb3VudGVy aWQrInFjRmFpbGVkIitxY0ZhaWxlZCk7DQoJCX0NCg0KICAJCS8vaWYgKCEo ZmNlbnRlcklkLmVxdWFscygiIikpKSBoZHIgKz0gZmNlbnRlck5hbWU7IGVs c2UgaGRyICs9ICJBbGwgQ2VudGVycyI7DQoJCQkNCgkJCXNyUm93cy5jbGVh cigpOw0KCQkJc3JSb3dzLmFkZEFsbChmTGlzdCk7DQoJCQlwYWdlID0gKExB UkdPUUNlQ1JGVmlld0hUTUwpICBkaXNwbGF5RGF0YSgpOw0KDQoJCWZvciAo aW50IGk9MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJTm9kZSBjb2xDaGVj ayA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFDMltpXSsiUUMyIik7DQoJCQlI VE1MVGFibGVDZWxsRWxlbWVudCBjZWxsQ2hlY2sgPSAoSFRNTFRhYmxlQ2Vs bEVsZW1lbnQpIGNvbENoZWNrLmdldFBhcmVudE5vZGUoKTsNCgkJCWNlbGxD aGVjay5zZXRCZ0NvbG9yKGNlbGxDb2xvcik7DQoJCX0NCg0KCQlmb3IgKGlu dCBpPTA7aTxmUUMyLmxlbmd0aDtpKyspIHsNCgkJCU5vZGUgY29sQ2hlY2sg PSBwYWdlLmdldEVsZW1lbnRCeUlkKGZRQzJbaV0rIlFDMiIpOw0KCQkJSFRN TFRhYmxlQ2VsbEVsZW1lbnQgY2VsbENoZWNrID0gKEhUTUxUYWJsZUNlbGxF bGVtZW50KSBjb2xDaGVjay5nZXRQYXJlbnROb2RlKCk7DQoJCQljZWxsQ2hl Y2suc2V0QmdDb2xvcihjZWxsQ29sb3IpOw0KCQl9DQoNCgkJfSBjYXRjaChF eGNlcHRpb24gZSkgew0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJJIGFtIGV4 Iik7DQoJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KCQkJU3lzdGVtLm91dC5w cmludGxuKGUuZ2V0TWVzc2FnZSgpKTsNCgkJfQ0KDQoJCXJldHVybiBwYWdl Ow0KDQoNCgl9DQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVGaWx0ZXJCbGlu ZGVkKCkNCiAgICB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlvbiB7 DQoJLy9TeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZUZpbHRlcigpICBtZXRo b2QgY2FsbGVkID09PT09PT09ICIpOw0KCQlMQVJHT1FDZUNSRlZpZXdIVE1M IHBhZ2UgPSBudWxsOw0KCXRyeSB7DQoNCgkJc2V0UGFyYW1zKCk7DQoJCWxx ID0gbWFrZVF1ZXJ5KCk7DQoJCXNyUm93cyA9IFRyYW5zcGxhbnRVdGlsLmdl dEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUoKSk7DQoJCUFycmF5TGlz dCBmTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsNCgkJZm9yIChJdGVyYXRvciBk YXRhPXNyUm93cy5pdGVyYXRvcigpOyBkYXRhLmhhc05leHQoKTspIHsNCgkJ CUx1bmdDRE91dGNvbWUgbHVuZ0NET3V0Y29tZSA9IChMdW5nQ0RPdXRjb21l KSBkYXRhLm5leHQoKTsNCgkJCWlmKGx1bmdDRE91dGNvbWUuaXNEYXRhVG9C ZUJsaW5kZWQ9PWZhbHNlKXsNCgkJCSAgIGZMaXN0LmFkZChsdW5nQ0RPdXRj b21lKTsNCgkJCX0NCgkJfQ0KCQlzclJvd3MuY2xlYXIoKTsNCgkJc3JSb3dz LmFkZEFsbChmTGlzdCk7DQoJCXBhZ2UgPSAoTEFSR09RQ2VDUkZWaWV3SFRN TCkgIGRpc3BsYXlEYXRhKCk7DQoJfSBjYXRjaChFeGNlcHRpb24gZSkgew0K CQlTeXN0ZW0ub3V0LnByaW50bG4oIkkgYW0gZXgiKTsNCgkJZS5wcmludFN0 YWNrVHJhY2UoKTsNCgkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2Fn ZSgpKTsNCgl9DQoJcmV0dXJuIHBhZ2U7DQoJfQ0KDQoJcHVibGljIFhNTE9i amVjdCBoYW5kbGVGaWx0ZXIoKQ0KCSAgICAgIHRocm93cyBIdHRwUHJlc2Vu dGF0aW9uRXhjZXB0aW9uIHsNCgkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImhh bmRsZUZpbHRlcigpICBtZXRob2QgY2FsbGVkID09PT09PT09ICIpOw0KCQlM QVJHT1FDZUNSRlZpZXdIVE1MIHBhZ2UgPSBudWxsOw0KCQl0cnkgew0KDQoJ CXNldFBhcmFtcygpOw0KCQlscSA9IG1ha2VRdWVyeSgpOw0KCQlzclJvd3Mg PSBUcmFuc3BsYW50VXRpbC5nZXRMdW5nT3V0Y29tZXMobHEsdGhpcy5nZXRS b2xlKCkpOw0KDQoJCUFycmF5TGlzdCBmTGlzdCA9IG5ldyBBcnJheUxpc3Qo KTsNCg0KCQlpZiAoc3JSb3dzICE9IG51bGwpDQoJCQlTeXN0ZW0ub3V0LnBy aW50bG4oIlNpemUiICsgc3JSb3dzLnNpemUoKSk7DQoNCgkJZm9yIChJdGVy YXRvciBkYXRhPXNyUm93cy5pdGVyYXRvcigpOyBkYXRhLmhhc05leHQoKTsp IHsNCg0KCQkJTHVuZ0NET3V0Y29tZSBsdW5nQ0RPdXRjb21lID0gKEx1bmdD RE91dGNvbWUpIGRhdGEubmV4dCgpOw0KDQoJCQlib29sZWFuIHFjRmFpbGVk ID0gZmFsc2U7DQoJCQlmb3IgKGludCBpPTA7aTxmUUMxLmxlbmd0aDtpKysp IHsNCgkJCQlpZiAoIWdldFFDUmVzdWx0KGx1bmdDRE91dGNvbWUsInFjIitm UUMxW2ldKSkgew0KCQkJCQlxY0ZhaWxlZCA9IHRydWU7DQoJCQkJCWJyZWFr Ow0KCQkJCX0NCgkJCX0NCg0KCQkJZm9yIChpbnQgaT0wO2k8ZlFDMi5sZW5n dGg7aSsrKSB7DQoJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21l LCJxYzIiK2ZRQzJbaV0pKSB7DQoJCQkJCXFjRmFpbGVkID0gdHJ1ZTsNCgkJ CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoNCgkJCWlmICghcWNGYWlsZWQp IGZMaXN0LmFkZChsdW5nQ0RPdXRjb21lKTsNCg0KCQl9DQoNCgkJc3JSb3dz LmNsZWFyKCk7DQoJCXNyUm93cy5hZGRBbGwoZkxpc3QpOw0KCQlwYWdlID0g KExBUkdPUUNlQ1JGVmlld0hUTUwpICBkaXNwbGF5RGF0YSgpOw0KCQl9IGNh dGNoKEV4Y2VwdGlvbiBlKSB7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkkg YW0gZXgiKTsNCgkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQoJCQlTeXN0ZW0u b3V0LnByaW50bG4oZS5nZXRNZXNzYWdlKCkpOw0KCQl9DQoNCgkJcmV0dXJu IHBhZ2U7DQoNCg0KCX0NCg0KCXB1YmxpYyBYTUxPYmplY3QgZGlzcGxheURh dGEoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCgkJLy9TeXN0ZW0ub3V0LnByaW50 bG4oImRpc3BsYXlEYXRhKCkgIG1ldGhvZCBjYWxsZWQgPT09PT09PT0gIik7 DQoJCQ0KCQlTdHJpbmcgcWMxQ2VsbENvbG9yID0gIiNjNmM2YzYiOw0KCQlT dHJpbmcgcWMyQ2VsbENvbG9yID0gIiNmZmNjMzMiOw0KCQkNCgkJTEFSR09R Q2VDUkZWaWV3SFRNTCBwYWdlID0gKExBUkdPUUNlQ1JGVmlld0hUTUwpIG15 Q29tbXMueG1sY0ZhY3RvcnkuY3JlYXRlKExBUkdPUUNlQ1JGVmlld0hUTUwu Y2xhc3MpOw0KCQkNCgkJU3RyaW5nIHZpZXcgPSAiIjsNCgkJU3RyaW5nIGRp ciA9ICJOb25lIjsNCg0KCQlTeXN0ZW0ub3V0LnByaW50bG4oIlxuZmV2ZW50 IitmZXZlbnQpOw0KDQoJCWlmIChmZXZlbnQuZXF1YWxzKCIiKSkNCgkJCXZp ZXcgPSAiQWxsIjsNCgkJZWxzZSBpZiAoZmV2ZW50LmVxdWFscygic2hvdyIp KQ0KCQkJdmlldyA9ICJGYWlsZWQiOw0KCQllbHNlIGlmIChmZXZlbnQuZXF1 YWxzKCJmaWx0ZXIiKSkNCgkJCXZpZXcgPSAiRmlsZXRlcmVkIjsNCg0KCQlp ZiAoZnNhbXBsZUZ3ZC5lcXVhbHMoIjEiKSkNCgkJCWRpciA9ICJGb3J3YXJk IjsNCgkJZWxzZSBpZiAoZnNhbXBsZVJldi5lcXVhbHMoIjEiKSkNCgkJCWRp ciA9ICJSZXZlcnNlIjsNCg0KCQlwYWdlLnNldFRleHRWaWV3KHZpZXcpOw0K CQlwYWdlLnNldFRleHREaXIoZGlyKTsNCg0KDQoJCUhUTUxJbnB1dEVsZW1l bnQgZUNlbnRlcklkID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxl bWVudEJ5SWQoIkNlbnRlcklkIik7DQoJCWVDZW50ZXJJZC5zZXRWYWx1ZShm Y2VudGVySWQpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgZVBhdGllbnRMaXN0 ID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlBh dGllbnRMaXN0Iik7DQoJCWVQYXRpZW50TGlzdC5zZXRWYWx1ZShmcGF0aWVu dExpc3QpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgZVNhbXBsZUxpc3QgPSAo SFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2FtcGxl TGlzdCIpOw0KCQllU2FtcGxlTGlzdC5zZXRWYWx1ZShmc2FtcGxlTGlzdCk7 DQoJCQ0KCQlIVE1MSW5wdXRFbGVtZW50IGVTYW1wbGVGd2QgPSAoSFRNTElu cHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2FtcGxlRndkIik7 DQoJCWVTYW1wbGVGd2Quc2V0VmFsdWUoZnNhbXBsZUZ3ZCk7DQoNCgkJSFRN TElucHV0RWxlbWVudCBlU2FtcGxlUmV2ID0gKEhUTUxJbnB1dEVsZW1lbnQp IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlNhbXBsZVJldiIpOw0KCQllU2FtcGxl UmV2LnNldFZhbHVlKGZzYW1wbGVSZXYpOw0KDQoJCUhUTUxJbnB1dEVsZW1l bnQgZUF0dHJMaXN0ID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxl bWVudEJ5SWQoIkF0dHJMaXN0Iik7DQoJCWVBdHRyTGlzdC5zZXRWYWx1ZShm YXR0ckxpc3QpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgZUNlbnRlck5hbWUg PSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiQ2Vu dGVyTmFtZSIpOw0KCQllQ2VudGVyTmFtZS5zZXRWYWx1ZShmY2VudGVyTmFt ZSk7DQoNCgkJSFRNTElucHV0RWxlbWVudCBlUXVlcnlJZCA9IChIVE1MSW5w dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJRdWVyeUlkIik7DQoJ CWVRdWVyeUlkLnNldFZhbHVlKGZxdWVyeUlkKTsNCg0KCQlIVE1MSW5wdXRF bGVtZW50IGVRdWVyeU5hbWUgPSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5n ZXRFbGVtZW50QnlJZCgiUXVlcnlOYW1lIik7DQoJCWVRdWVyeU5hbWUuc2V0 VmFsdWUoZnF1ZXJ5TmFtZSk7DQoNCgkJU3RyaW5nIGVycm9yTXNnID0gdGhp cy5nZXRTZXNzaW9uRGF0YSgpLmdldEFuZENsZWFyVXNlck1lc3NhZ2UoKTsN CgkgICAgaWYobnVsbCA9PSBlcnJvck1zZykgew0KCQkJcGFnZS5nZXRFbGVt ZW50RXJyb3JUZXh0KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHBh Z2UuZ2V0RWxlbWVudEVycm9yVGV4dCgpKTsNCgkJfSBlbHNlIHsNCgkJCXBh Z2Uuc2V0VGV4dEVycm9yVGV4dChlcnJvck1zZyk7DQoJCX0NCg0KCQlTdHJp bmcgY3VyQ2VudGVySWQgPSAiIjsNCgkJU3RyaW5nIGN1clBhdGllbnRJZCA9 ICIiOw0KCQlTdHJpbmcgY3VyRW5jSWQgPSAiIjsNCg0KCQkvL1N0cmluZyBz YW1wbGVzID0gZ2V0U2FtcGxlc0RlbGltZXRlZChmc2FtcGxlTGlzdCk7DQoN Cg0KCQlTdHJpbmcgcWMxVGV4dCA9ICIiOw0KCQlTdHJpbmcgcWMyVGV4dCA9 ICIiOw0KCQlIVE1MSW5wdXRFbGVtZW50IHFjQ2hlY2tFbGVtZW50Ow0KCQlp ZiAoIShmZXZlbnQuZXF1YWxzKCIiKSkpIHsNCgkJCWZvciAoaW50IGk9MDtp PGZRQzEubGVuZ3RoO2krKykgew0KCQkJCSBxY0NoZWNrRWxlbWVudCA9IChI VE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGZRQzFbaV0r IlFDMSIpOw0KCQkJCXFjQ2hlY2tFbGVtZW50LnNldENoZWNrZWQodHJ1ZSk7 DQoJCQkJcWMxVGV4dCArPSAiLCAiICsgIGZRQzFbaV07DQoJCQl9DQoNCgkJ CWZvciAoaW50IGk9MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJCSBxY0No ZWNrRWxlbWVudCA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1l bnRCeUlkKGZRQzJbaV0rIlFDMiIpOw0KCQkJCXFjQ2hlY2tFbGVtZW50LnNl dENoZWNrZWQodHJ1ZSk7DQoJCQkJcWMyVGV4dCArPSAiLCAiICsgZlFDMltp XTsNCgkJCX0NCgkJfQ0KDQoJCUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVtcGxh dGVSb3cgPSBwYWdlLmdldEVsZW1lbnRUZW1wbGF0ZVJvdygpOw0KCQl0ZW1w bGF0ZVJvdy5yZW1vdmVBdHRyaWJ1dGUoImlkIik7DQoJCU5vZGUgdGVtcGxh dGVUYWJsZSA9IHRlbXBsYXRlUm93LmdldFBhcmVudE5vZGUoKTsNCg0KDQoJ CUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVtcGxhdGVIZHJSb3cgPSBwYWdlLmdl dEVsZW1lbnRIZHJSb3coKTsNCgkJdGVtcGxhdGVIZHJSb3cucmVtb3ZlQXR0 cmlidXRlKCJpZCIpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgc2F2ZVFCdG4g PSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2F2 ZVFCdG4iKTsNCg0KCQlpZiAodGhpcy5nZXRVc2VyKCkgPT0gbnVsbCkgc2F2 ZVFCdG4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNhdmVRQnRuKTsN Cg0KDQoJCVN0cmluZ1tdIGF0dHIgPSBuZXcgU3RyaW5nWzBdOw0KDQoJCWlm ICghKGZhdHRyTGlzdC5lcXVhbHMoIiIpKSkgYXR0ciA9IGZhdHRyTGlzdC5z cGxpdCgiLCIpOw0KDQoJCUxpc3QgYXR0ckxpc3QgPSBBcnJheXMuYXNMaXN0 KGF0dHIpOw0KCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkVuY291bnRlcklk RCIpKXsNCgkJCSAgIEhUTUxJbnB1dEVsZW1lbnQgc2VsZWN0RW5jb3VudGVy ID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlNl bFBhdEJ0biIpOw0KCQkJICAgc2VsZWN0RW5jb3VudGVyLmdldFBhcmVudE5v ZGUoKS5yZW1vdmVDaGlsZChzZWxlY3RFbmNvdW50ZXIpOw0KCQkJfWVsc2V7 DQoJCQkgICBIVE1MSW5wdXRFbGVtZW50IHNlbGVjdEVuY291bnRlciA9IChI VE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJTZWxFbmNC dG4iKTsNCgkJCSAgIHNlbGVjdEVuY291bnRlci5nZXRQYXJlbnROb2RlKCku cmVtb3ZlQ2hpbGQoc2VsZWN0RW5jb3VudGVyKTsNCgkJCX0NCgkJDQoJCU5v ZGVMaXN0IG5sID0gdGVtcGxhdGVSb3cuZ2V0Q2hpbGROb2RlcygpOw0KCQlO b2RlIG5vOw0KCQlIVE1MVGFibGVDZWxsRWxlbWVudCBuIDsNCgkJTm9kZUxp c3QgdGRDaGlsZExpc3QgOw0KCQlOb2RlIHRkTm9kZTsNCgkJDQoJCU5hbWVk Tm9kZU1hcCBubm0gOw0KCQlTdHJpbmcgIGlucHV0SWRWYWx1ZSA7DQoJCVN0 cmluZyBpZEF0dHJpYnV0ZVZhbHVlOw0KCQlmb3IgKGludCBpPW5sLmdldExl bmd0aCgpLTE7aT49MTtpLS0pIHsNCgkJCW5vID0gbmwuaXRlbShpKTsNCgkJ CWlmIChuby5nZXROb2RlTmFtZSgpLnN1YnN0cmluZygwLDEpLmVxdWFscygi IyIpKSBjb250aW51ZTsNCg0KCQkJbiA9IChIVE1MVGFibGVDZWxsRWxlbWVu dCkgbmwuaXRlbShpKTsNCgkJCWlmKG4uZ2V0SWQoKS5sZW5ndGgoKT4wKXsN CgkJCQlpZiAoIShhdHRyTGlzdC5jb250YWlucyhuLmdldElkKCkpKSl7DQoJ CQkJCS8vU3lzdGVtLm91dC5wcmludGxuKCJyZW1vdmluZyBjb250ZW50IGZy b20gdG9wICIrbi5nZXRJZCgpKTsNCgkJCQkJbi5nZXRQYXJlbnROb2RlKCku cmVtb3ZlQ2hpbGQobik7DQoJCQkJfQ0KCQkJfWVsc2V7DQoJCQkJdGRDaGls ZExpc3QgPSBuLmdldENoaWxkTm9kZXMoKTsNCgkJCQkNCgkJCQlmb3IoaW50 IGo9MDtqPHRkQ2hpbGRMaXN0LmdldExlbmd0aCgpO2orKyl7DQoJCQkJCXRk Tm9kZSA9IHRkQ2hpbGRMaXN0Lml0ZW0oaik7DQoJCQkJCQ0KCQkJCQlubm0g PSB0ZE5vZGUuZ2V0QXR0cmlidXRlcygpOw0KCQkJCQ0KCQkJCQlpZEF0dHJp YnV0ZVZhbHVlID0gbm5tLmdldE5hbWVkSXRlbSgiaWQiKS5nZXROb2RlVmFs dWUoKTsNCgkJCQkJDQoJCQkJCWlucHV0SWRWYWx1ZSA9IGlkQXR0cmlidXRl VmFsdWUuc3Vic3RyaW5nKDAsaWRBdHRyaWJ1dGVWYWx1ZS5sZW5ndGgoKSkg KyJEIjsNCgkJCQkJaWYgKCEoYXR0ckxpc3QuY29udGFpbnMoaW5wdXRJZFZh bHVlKSkpIHsJDQoJCQkJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigicmVtb3Zp bmcgY29udGVudCBmcm9tIHRvcCAiK2lkQXR0cmlidXRlVmFsdWUpOw0KCQkJ CQkJbi5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQkJCX0N CgkJCQl9CQkJCQ0KCQkJfQ0KCQl9DQoJCQ0KCQkNCgkJDQoJCS8vSFRNTFRh YmxlQ2VsbEVsZW1lbnQgbjsNCgkJLyogbmwgPSB0ZW1wbGF0ZVJvdy5nZXRD aGlsZE5vZGVzKCk7DQoJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtp Pj0xO2ktLSkgewkJCQ0KCQkJIG4gPSAoSFRNTFRhYmxlQ2VsbEVsZW1lbnQp IG5sLml0ZW0oaSk7DQoJCQkvL1N5c3RlbS5vdXQucHJpbnRsbihuLmdldElk KCkrIiAiICtuLmdldElkKCkuc3Vic3RyaW5nKDAsbi5nZXRJZCgpLmxlbmd0 aCgpLTEpICk7DQoJCQlpZiAoIShhdHRyTGlzdC5jb250YWlucyhuLmdldElk KCkpKSkNCgkJCQluLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChuKTsN CgkJfSovDQoNCg0KCQlubCA9IHRlbXBsYXRlSGRyUm93LmdldENoaWxkTm9k ZXMoKTsNCgkJZm9yIChpbnQgaT1ubC5nZXRMZW5ndGgoKS0xO2k+PTE7aS0t KSB7DQoJCQkgbiA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShp KTsNCgkJCS8vU3lzdGVtLm91dC5wcmludGxuKG4uZ2V0SWQoKSsiICIgK24u Z2V0SWQoKS5zdWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3RoKCktMSkgKTsN CgkJCWlmICghKGF0dHJMaXN0LmNvbnRhaW5zKG4uZ2V0SWQoKS5zdWJzdHJp bmcoMCxuLmdldElkKCkubGVuZ3RoKCktMSkpKSkNCgkJCQluLmdldFBhcmVu dE5vZGUoKS5yZW1vdmVDaGlsZChuKTsNCgkJfQ0KCQkNCgkJSFRNTFRhYmxl Um93RWxlbWVudCB0ZW1wbGF0ZVFDMVJvdyA9IHBhZ2UuZ2V0RWxlbWVudFFD MVJvdygpOw0KCQlubCA9IHRlbXBsYXRlUUMxUm93LmdldENoaWxkTm9kZXMo KTsNCgkJDQoJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2kt LSkgew0KCQkJbiA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShp KTsNCgkJCWlmKG4uZ2V0SWQoKS5sZW5ndGgoKT4wKXsNCgkJCQlpZiAoIShh dHRyTGlzdC5jb250YWlucyhuLmdldElkKCkuc3Vic3RyaW5nKDAsbi5nZXRJ ZCgpLmxlbmd0aCgpLTMpKSkpIHsNCgkJCQkJLy9TeXN0ZW0ub3V0LnByaW50 bG4oInJlbW92aW5nIHFjMSBmcm9tIHRvcCAiK24uZ2V0SWQoKSk7DQoJCQkJ CW4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOwkJCQkNCgkJCQl9 DQoJCQl9ZWxzZXsNCgkJCQl0ZENoaWxkTGlzdCA9IG4uZ2V0Q2hpbGROb2Rl cygpOwkJCQkNCgkJCQlmb3IoaW50IGo9MDtqPHRkQ2hpbGRMaXN0LmdldExl bmd0aCgpO2orKyl7DQoJCQkJCXRkTm9kZSA9IHRkQ2hpbGRMaXN0Lml0ZW0o aik7DQoJCQkJCW5ubSA9IHRkTm9kZS5nZXRBdHRyaWJ1dGVzKCk7DQoJCQkJ CWlkQXR0cmlidXRlVmFsdWUgPSBubm0uZ2V0TmFtZWRJdGVtKCJpZCIpLmdl dE5vZGVWYWx1ZSgpOw0KCQkJCQlpbnB1dElkVmFsdWUgPSBpZEF0dHJpYnV0 ZVZhbHVlLnN1YnN0cmluZygwLGlkQXR0cmlidXRlVmFsdWUubGVuZ3RoKCkt MykrIkQiOwkJCQkJDQoJCQkJCWlmICghKGF0dHJMaXN0LmNvbnRhaW5zKGlu cHV0SWRWYWx1ZSkpKSB7CQkJCQkJDQoJCQkJCQkvL1N5c3RlbS5vdXQucHJp bnRsbigicmVtb3ZpbmcgcWMxIGZyb20gYm90dG9tICIraW5wdXRJZFZhbHVl KTsNCgkJCQkJCW4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOw0K CQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCUhUTUxUYWJsZVJvd0VsZW1l bnQgdGVtcGxhdGVRQzJSb3cgPSBwYWdlLmdldEVsZW1lbnRRQzJSb3coKTsN CgkJbmwgPSB0ZW1wbGF0ZVFDMlJvdy5nZXRDaGlsZE5vZGVzKCk7DQoJCWZv ciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2ktLSkgew0KCQkJbiA9 IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShpKTsNCgkJCWlmKG4u Z2V0SWQoKS5sZW5ndGgoKT4wKXsJCQkNCgkJCQlpZiAoIShhdHRyTGlzdC5j b250YWlucyhuLmdldElkKCkuc3Vic3RyaW5nKDAsbi5nZXRJZCgpLmxlbmd0 aCgpLTMpKSkpIHsNCgkJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oInJlbW92 aW5nIHFjMiBmcm9tIHRvcCAiK24uZ2V0SWQoKSk7DQoJCQkJCW4uZ2V0UGFy ZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOw0KCQkJCX0NCgkJCX1lbHNlew0K CQkJCXRkQ2hpbGRMaXN0ID0gbi5nZXRDaGlsZE5vZGVzKCk7CQkJCQ0KCQkJ CWZvcihpbnQgaj0wO2o8dGRDaGlsZExpc3QuZ2V0TGVuZ3RoKCk7aisrKXsN CgkJCQkJdGROb2RlID0gdGRDaGlsZExpc3QuaXRlbShqKTsNCgkJCQkJbm5t ID0gdGROb2RlLmdldEF0dHJpYnV0ZXMoKTsNCgkJCQkJaWRBdHRyaWJ1dGVW YWx1ZSA9IG5ubS5nZXROYW1lZEl0ZW0oImlkIikuZ2V0Tm9kZVZhbHVlKCk7 DQoJCQkJCWlucHV0SWRWYWx1ZSA9IGlkQXR0cmlidXRlVmFsdWUuc3Vic3Ry aW5nKDAsaWRBdHRyaWJ1dGVWYWx1ZS5sZW5ndGgoKS0zKSsiRCI7CQkJCQkN CgkJCQkJaWYgKCEoYXR0ckxpc3QuY29udGFpbnMoaW5wdXRJZFZhbHVlKSkp IHsJCQkJCQkNCgkJCQkJCS8vU3lzdGVtLm91dC5wcmludGxuKCJyZW1vdmlu ZyBxYzIgZnJvbSBib3R0b20gIitpbnB1dElkVmFsdWUpOw0KCQkJCQkJbi5n ZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQkJCX0NCgkJCQl9 DQoJCQl9DQoJCQkNCgkJfQ0KCQlIVE1MVGFibGVSb3dFbGVtZW50IHRlbXBs YXRlRlJvdyA9IHBhZ2UuZ2V0RWxlbWVudEZpbHRlclJvdygpOw0KCQlubCA9 IHRlbXBsYXRlRlJvdy5nZXRDaGlsZE5vZGVzKCk7DQoJCWZvciAoaW50IGk9 bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2ktLSkgew0KCQkJbiA9IChIVE1MVGFi bGVDZWxsRWxlbWVudCkgbmwuaXRlbShpKTsNCgkJCS8vU3lzdGVtLm91dC5w cmludGxuKG4uZ2V0SWQoKSsiICIgK24uZ2V0SWQoKS5zdWJzdHJpbmcoMCxu LmdldElkKCkubGVuZ3RoKCktMSkgKTsNCgkJCWlmICghKGF0dHJMaXN0LmNv bnRhaW5zKG4uZ2V0SWQoKS5zdWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3Ro KCktMSkpKSkgew0KCQkJCS8vU3lzdGVtLm91dC5wcmludGxuKG4uZ2V0SWQo KSsiICIgK24uZ2V0SWQoKS5zdWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3Ro KCktMSkgKTsNCgkJCQluLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChu KTsNCgkJCX0NCgkJfQ0KDQoJCWludCBjZW50ZXJDb3VudCA9IDA7DQoJCWlu dCBwYXRpZW50Q291bnQgPSAwOw0KCQlpbnQgZW5jQ291bnQgPSAwOw0KCQlp bnQgcm93Q291bnQgPSAwOw0KCQlpbnQgcmVjQ291bnQgPSAwOw0KCQlib29s ZWFuIHNhbWVQYXQgPSBmYWxzZTsNCgkJDQoJCUx1bmdDRE91dGNvbWUgbHVu Z0NET3V0Y29tZSA9IG51bGw7DQoJCUx1bmdDRE91dGNvbWUgcHJldkx1bmdD RE91dGNvbWUgPSBudWxsOw0KCQkNCgkJU3RyaW5nIGNlbnRlcklkID0gbnVs bDsNCgkJU3RyaW5nIGNlbnRlck5hbWUgPSBudWxsOw0KCQlTdHJpbmcgcGF0 aWVudElkID0gbnVsbDsNCgkJU3RyaW5nIGVuY0lkID1udWxsOw0KCQlIVE1M SW5wdXRFbGVtZW50IGVuY1NlbD1udWxsOw0KCQlIVE1MVGFibGVDZWxsRWxl bWVudCBjZWxsID0gbnVsbDsNCgkJTm9kZSBzcGFuVGFnID1udWxsOw0KCQlI VE1MVGFibGVSb3dFbGVtZW50IGxhc3RSb3cgPW51bGw7DQoJCUhUTUxUYWJs ZVJvd0VsZW1lbnQgaGRyUm93ID0gbnVsbDsNCgkJU3RyaW5nIHF1ZXJ5VGV4 dCA9IG51bGw7DQoJCWludCBjb3VudGVyPTA7DQoJCQ0KCQkNCgkJU3RyaW5n IHN0ck1pc3NpbmdEYXRhID0gIm1pc3NpbmciOw0KCQlEYXRlIGJsaW5kaW5n U3RhcnREYXRlID0gbnVsbDsNCgkJRGF0ZSBibGluZGluZ0VuZERhdGUgPSBu dWxsOw0KCQkvL3JlbW92ZUR1cGxpY2F0ZVJvd3Moc3JSb3dzLGF0dHJMaXN0 KTsNCgkJZm9yIChMaXN0SXRlcmF0b3IgZGF0YT1zclJvd3MubGlzdEl0ZXJh dG9yKCk7IGRhdGEuaGFzTmV4dCgpO2NvdW50ZXIrKykgew0KDQoJCQlsdW5n Q0RPdXRjb21lID0gKEx1bmdDRE91dGNvbWUpIGRhdGEubmV4dCgpOw0KCQkJ DQoJCQlpZihjb3VudGVyPjApew0KCQkJCXByZXZMdW5nQ0RPdXRjb21lID0g KEx1bmdDRE91dGNvbWUpIHNyUm93cy5nZXQoY291bnRlci0xKTsNCgkJCX0N Cg0KCQkJIGNlbnRlcklkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2Vu dGVyaWQiKTsNCgkJCSBjZW50ZXJOYW1lID0gbHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiY2VudGVyTmFtZSIpOw0KCQkJIHBhdGllbnRJZCA9IGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoInBhdGllbnRpZCIpOw0KCQkJIGVuY0lkID0gbHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5jb3VudGVyaWQiKTsNCgkJCSANCgkJ CSANCgkJCSANCgkJCSANCgkJCXJvd0NvdW50Kys7DQoJCQlyZWNDb3VudCsr Ow0KDQoNCgkJCWlmICghKGNlbnRlcklkLmVxdWFscyhjdXJDZW50ZXJJZCkp KSB7DQoJCQkJLyppZiAoIShjdXJDZW50ZXJJZC5lcXVhbHMoIiIpKSkgew0K CQkJCQlvdXQucHJpbnRsbigiPHRyPjx0ZCBjb2xzcGFuPSIrZGlzcGxheURh dGFMaXN0LnNpemUoKSsiPiZuYnNwOzwvdGQ+PC90cj4iKTsNCgkJCQl9DQoJ CQkJb3V0LnByaW50bG4oIjx0cj48dGQgY29sc3Bhbj0iK2Rpc3BsYXlEYXRh TGlzdC5zaXplKCkrIj4iK2NlbnRlck5hbWUrIjwvdGQ+PC90cj4iKTsqLw0K CQkJCWN1ckNlbnRlcklkID0gY2VudGVySWQ7DQoJCQkJY2VudGVyQ291bnQr KzsNCgkJCX0NCg0KCQkJaWYgKCEocGF0aWVudElkLmVxdWFscyhjdXJQYXRp ZW50SWQpKSkgew0KCQkJCWN1clBhdGllbnRJZCA9IHBhdGllbnRJZDsNCgkJ CQlwYXRpZW50Q291bnQrKzsNCgkJCX0NCg0KCQkJaWYgKCEoZW5jSWQuZXF1 YWxzKGN1ckVuY0lkKSkpIHsNCgkJCQljdXJFbmNJZCA9IGVuY0lkOw0KCQkJ CWVuY0NvdW50Kys7DQoJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJfQ0KCQkJ ZWxzZSBzYW1lUGF0ID0gdHJ1ZTsNCg0KCQkJaWYgKCByb3dDb3VudCA+IDEy ICYmICghKGZldmVudC5lcXVhbHMoInNhdmUiKSkpICkgew0KCQkJCWhkclJv dyA9IChIVE1MVGFibGVSb3dFbGVtZW50KSB0ZW1wbGF0ZUhkclJvdy5jbG9u ZU5vZGUodHJ1ZSk7DQoJCQkJdGVtcGxhdGVUYWJsZS5hcHBlbmRDaGlsZCho ZHJSb3cpOw0KCQkJCXJvd0NvdW50ID0gMTsNCgkJCX0NCg0KCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJFbmNvdW50ZXJJZEQiKSl7DQoJCQkJICAgcGFn ZS5zZXRUZXh0RW5jb3VudGVyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImVu Y291bnRlcmlkIikpOw0KCQkJCQllbmNTZWwgPSAoSFRNTElucHV0RWxlbWVu dCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2VsRW5jIik7DQoJCQkJCWVuY1Nl bC5zZXRWYWx1ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJlbmNvdW50ZXJp ZCIpKTsNCgkJCQl9ZWxzZXsNCgkJCQkgICBpZihwcmV2THVuZ0NET3V0Y29t ZSE9bnVsbCAmJiBwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVu dGlkIikuZXF1YWxzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBhdGllbnRp ZCIpKSl7DQoJCQkJICAgICAgc2FtZVBhdCA9IHRydWU7DQoJCQkJICAgfWVs c2V7DQoJCQkJICAgCSBzYW1lUGF0ID0gZmFsc2U7DQoJCQkJICAgfQ0KCQkJ CSAgIHBhZ2Uuc2V0VGV4dEVuY291bnRlcihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJwYXRpZW50aWQiKSk7DQoJCQkJICAgcGFnZS5zZXRUZXh0RW5jb3Vu dGVySWQoIlBhdGllbnQgSWQiKTsNCgkJCQkgICANCgkJCQkgICBlbmNTZWwg PSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2Vs RW5jIik7DQoJCQkJICAgZW5jU2VsLnNldFZhbHVlKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoInBhdGllbnRpZCIpKTsJCQkgICANCgkJCQl9CQkNCg0KCQkJ DQoJCQkvL3BhZ2Uuc2V0VGV4dEVuY291bnRlcihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJlbmNvdW50ZXJpZCIpKTsNCg0KCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJWaXNpdERhdGVEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgidmlzaXREYXRlIikpDQoJCQkJCQkuZXF1YWxzKFN0cmlu Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInZpc2l0RGF0ZSIp KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQkJCQkJDQoJCQkJ cGFnZS5zZXRUZXh0VmlzaXREYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InZpc2l0RGF0ZSIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5j b250YWlucygiQ29tcHV0ZWRWaXNpdEFnZUQiKSl7DQoJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJjb21wdXRlZFZpc2l0QWdlIikpDQoJCQkJ CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCX0JCQkJCQ0KCQkJCXBhZ2Uuc2V0VGV4dENvbXB1dGVkVmlz aXRBZ2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcHV0ZWRWaXNpdEFn ZSIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlBB WEQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhO dW0iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgicGF4TnVtIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0UEFYKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInBheE51bSIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChh dHRyTGlzdC5jb250YWlucygiQ1BURCIpKSB7DQoJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJjcHROdW0iKSkNCgkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3B0TnVtIikp KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z ZXRUZXh0Q1BUKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIpKTsN CgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU2V4RCIp KSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzZXgiKSkN CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgic2V4IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQl9DQoJCQkJcGFnZS5zZXRUZXh0U2V4KGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInNleCIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIlJhY2VEIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInJhY2UiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKSkpew0KCQkJCQlzYW1lUGF0 ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFJhY2UobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKTsJCQkJDQoJCQl9DQoJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIlR4VHlwZUQiKSl7DQoJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50VHlwZSIpKQ0KCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJ0cmFuc3BsYW50VHlwZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7 DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFR4VHlwZShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJ0cmFuc3BsYW50VHlwZSIpKTsJCQkJDQoJCQl9DQoNCgkJ CWlmIChhdHRyTGlzdC5jb250YWlucygiVHhEYXRlRCIpKXsNCgkJCQlpZihw cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInRyYW5zcGxhbnREYXRlIikpDQoJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInRyYW5zcGxhbnREYXRlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0VHhEYXRlKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoInRyYW5zcGxhbnREYXRlIikpOwkJCQkNCgkJCX0N CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVHhJbmREIikpew0KCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudEluZCIpKQ0K CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJ0cmFuc3BsYW50SW5kIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0VHhJbmQobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudEluZCIpKTsJCQkJDQoJCQl9DQoJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRheXNEIikpew0KCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKQ0KCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJkYXlzRnJvbVR4IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQl9DQoJCQkJcGFnZS5zZXRUZXh0RGF5cyhsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJkYXlzRnJvbVR4IikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiQWdlRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29t ZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImFnZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2UiKSkpKXsNCgkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRBZ2UobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdlIikpOwkJCQkNCgkJCX0NCgkJCWlm IChhdHRyTGlzdC5jb250YWlucygiQ29tcHV0ZWRFbnJvbGxBZ2VEIikpew0K CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcHV0ZWRFbnJv bGxtZW50QWdlIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIp KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uu c2V0VGV4dENvbXB1dGVkRW5yb2xsQWdlKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIpKTsJCQkJDQoJCQl9DQoJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIklzVHhSZWNpcGllbnREIikpew0KCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIp KQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJpc1R4UmVjZXBpZW50IikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0SXNUeFJlY2lwaWVu dChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpc1R4UmVjZXBpZW50IikpOwkJ CQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGFzUmVjZWl2 ZWRGdW5kb3BsaWNhdGlvbkQiKSl7CQ0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiaGFzUmVjZWl2ZWRGdW5kb3BsaWNhdGlvbiIpKQ0KCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJoYXNSZWNlaXZlZEZ1bmRvcGxpY2F0aW9uIikpKSl7DQoJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0SGFzUmVj ZWl2ZWRGdW5kb3BsaWNhdGlvbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJo YXNSZWNlaXZlZEZ1bmRvcGxpY2F0aW9uIikpOwkNCgkJCX0NCgkJCWlmIChh dHRyTGlzdC5jb250YWlucygiRG9iRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImRvYiIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb2IiKSkpKXsNCgkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRE b2IobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9iIikpOwkJCQkNCgkJCX0N CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRW5yb2xsRHREIikpew0KCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5yb2xsRHQiKSkNCgkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiZW5yb2xsRHQiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCQlwYWdlLnNldFRleHRFbnJvbGxEdChsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJlbnJvbGxEdCIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIkFnZUNSRkQiKSl7DQoJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJhZ2VDUkYiKSkNCgkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdlQ1JGIikp KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z ZXRUZXh0QWdlQ1JGKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFnZUNSRiIp KTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlBhdGll bnRTdGF0dXNEIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInBhdGllbnRTdGF0dXMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIp KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uu c2V0VGV4dFBhdGllbnRTdGF0dXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi cGF0aWVudFN0YXR1cyIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiSW5kaWNhdGlvbkQiKSl7DQoJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJpbmRpY2F0aW9uIikpDQoJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZGlj YXRpb24iKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ CQlwYWdlLnNldFRleHRJbmRpY2F0aW9uKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImluZGljYXRpb24iKSk7DQoJCQkJDQoJCQl9DQoNCgkJCWlmIChhdHRy TGlzdC5jb250YWlucygiT0JEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiT0IiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiT0IiKSkpKXsNCgkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRPQihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJPQiIpKTsNCgkJCQ0KCQkJfQ0KCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJDVlJEIikpIHsNCgkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoIkNWUiIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJDVlIiKSkpKXsN CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRl eHRDVlIobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiQ1ZSIikpOw0KCQkJfQ0K DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJpb3BzeUQiKSkgew0KCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5IikpDQoJCQkJ CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImJpb3BzeSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ fQ0KCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeShsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJiaW9wc3kiKSk7DQoJCQkJDQoJCQl9DQoJCQkNCgkJCWlmIChhdHRy TGlzdC5jb250YWlucygiQmlvcHN5RGF0ZUQiKSkgew0KCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKQ0KCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi aW9wc3lEYXRlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9 DQoJCQkJcGFnZS5zZXRUZXh0QmlvcHN5RGF0ZShsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJiaW9wc3lEYXRlIikpOw0KCQkJCQ0KCQkJfQ0KCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJCaW9wc3lDb21tZW50c0QiKSkgew0KCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkN CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRCaW9wc3lDb21tZW50 cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lDb21tZW50cyIpKTsJ CQkJDQoJCQl9DQoJCQkNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWN1 dGVHcmFkZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYWN1dGVHcmFkZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhY3V0ZUdyYWRlIikpKSl7DQoJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkgICAgcGFnZS5zZXRU ZXh0QWN1dGVHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhY3V0ZUdy YWRlIikpOw0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJBaXJ3 YXlHcmFkZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYWlyd2F5R3JhZGUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWlyd2F5R3JhZGUiKSkpKXsN CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCSAgICBwYWdlLnNl dFRleHRBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhaXJ3 YXlHcmFkZSIpKTsNCgkJCX0NCg0KCQkJLyppZiAoYXR0ckxpc3QuY29udGFp bnMoIk1hcmJvZUFjdXRlR3JhZGVEIikpIHBhZ2Uuc2V0VGV4dE1hcmJvZUFj dXRlR3JhZGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgibWFyYm9lQWN1dGVH cmFkZSIpKTsNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTWFyYm9lQWly d2F5R3JhZGVEIikpIHBhZ2Uuc2V0VGV4dE1hcmJvZUFpcndheUdyYWRlKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1hcmJvZUFpcndheUdyYWRlIikpOw0K CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJNYXJib2VDb21tZW50c0QiKSkg cGFnZS5zZXRUZXh0TWFyYm9lQ29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgibWFyYm9lQ29tbWVudHMiKSk7DQoNCgkJCWlmIChhdHRyTGlzdC5j b250YWlucygiQmVycnlBY3V0ZUdyYWRlRCIpKSBwYWdlLnNldFRleHRCZXJy eUFjdXRlR3JhZGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVycnlBY3V0 ZUdyYWRlIikpOw0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCZXJyeUFp cndheUdyYWRlRCIpKSBwYWdlLnNldFRleHRCZXJyeUFpcndheUdyYWRlKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJlcnJ5QWlyd2F5R3JhZGUiKSk7DQoJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJlcnJ5Q29tbWVudHNEIikpIHBh Z2Uuc2V0VGV4dEJlcnJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmVycnlDb21tZW50cyIpKTsNCg0KCQkJaWYgKGF0dHJMaXN0LmNvbnRh aW5zKCJZb3VzZW1BY3V0ZUdyYWRlRCIpKSBwYWdlLnNldFRleHRZb3VzZW1B Y3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInlvdXNlbUFjdXRl R3JhZGUiKSk7DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIllvdXNlbUFp cndheUdyYWRlRCIpKSBwYWdlLnNldFRleHRZb3VzZW1BaXJ3YXlHcmFkZShs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ5b3VzZW1BaXJ3YXlHcmFkZSIpKTsN CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiWW91c2VtQ29tbWVudHNEIikp IHBhZ2Uuc2V0VGV4dFlvdXNlbUNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInlvdXNlbUNvbW1lbnRzIikpOyovDQoJCQkNCgkJCWlmIChhdHRy TGlzdC5jb250YWlucygiTUJBY3V0ZUdyYWRlRCIpKXsNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVHcmFkZSIpKQ0KCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJtYkFjdXRlR3JhZGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCQlwYWdlLnNldFRleHRNQkFjdXRlR3JhZGUobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgibWJBY3V0ZUdyYWRlIikpOw0KCQkJfQ0KCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJNQkFpcndheUdyYWRlRCIpKXsNCgkJCQlp ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWlyd2F5R3JhZGUiKSkN CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgibWJBaXJ3YXlHcmFkZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0g ZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dE1CQWlyd2F5R3JhZGUo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgibWJBaXJ3YXlHcmFkZSIpKTsNCgkJ CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTUJDb21tZW50c0QiKSl7 DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52 YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkNvbW1lbnRz IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRNQkNvbW1lbnRzKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSk7DQoJCQl9DQoN CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQk9TRCIpKXsNCgkJCQlpZihw cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKQ0KCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJib3Mi KSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdl LnNldFRleHRCT1MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYm9zIikpOw0K CQkJfQ0KDQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNNVkQiKSl7DQoJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbXZJbmZlY3Rpb24i KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9uIikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0Q01WKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImNtdkluZmVjdGlvbiIpKTsNCgkJCX0NCgkJCWlm IChhdHRyTGlzdC5jb250YWlucygiSW5mRCIpKSB7DQoJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKQ0KCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJvdGhlckluZmVjdGlvbiIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7 DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dEluZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKTsNCgkJCX0NCgkJCWlmIChhdHRy TGlzdC5jb250YWlucygiSW5mT3JnYW5pc21zRCIpKXsNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNtcyIpKQ0KCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJpbmZPcmdhbmlzbXMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCQlwYWdlLnNldFRleHRJbmZPcmdhbmlzbXMobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiaW5mT3JnYW5pc21zIikpOw0KCQkJfQ0KCQkJLy9p ZiAoYXR0ckxpc3QuY29udGFpbnMoIkdDVkRvc2VEIikpIHBhZ2Uuc2V0VGV4 dEdDVkRvc2UobHVuZ0NET3V0Y29tZS5nZXRHQ1ZEb3NlKCkpOw0KCQkJLy9p ZiAoYXR0ckxpc3QuY29udGFpbnMoIlZHQ1ZEb3NlRCIpKSBwYWdlLnNldFRl eHRWR0NWRG9zZShsdW5nQ0RPdXRjb21lLmdldFZHQ1ZEb3NlKCkpOw0KCQkJ aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wRCIpKXsNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXBsaWNhdGlvbiIpKQ0KCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJjb21wbGljYXRpb24iKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCQlwYWdlLnNldFRleHRDb21wKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImNvbXBsaWNhdGlvbiIpKTsNCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiQ29tcERlc2NEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uRGVzYyIpKQ0KCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJj b21wbGljYXRpb25EZXNjIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsN CgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0Q29tcERlc2MobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uRGVzYyIpKTsJCQkJDQoJCQl9DQoN CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWRtaXR0ZWREIikpew0KCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaG9zcGl0YWxpemF0aW9u IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImhvc3BpdGFsaXphdGlvbiIpKSkpew0KCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dEFkbWl0dGVk KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhvc3BpdGFsaXphdGlvbiIpKTsJ CQkJDQoJCQl9DQoJCQkNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU3Vt bWFyeUNvbW1lbnRzRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9 bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInN1bW1hcnlDb21tZW50cyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzdW1tYXJ5Q29t bWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ CQlwYWdlLnNldFRleHRTdW1tYXJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgic3VtbWFyeUNvbW1lbnRzIikpOwkJCQkNCgkJCX0NCgkJCQ0K CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7CQ0K CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ci KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSkpKXsNCgkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRJbmZUaGVyYXB5KGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikpOwkJCQkNCgkJ CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRG9ub3JDTVZJZ0dEYXRl RCIpKXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9y Q01WSWdHRGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnR0RhdGUiKSkpKXsN CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRl eHREb25vckNNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9u b3JDTVZJZ0dEYXRlIikpOwkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJEb25vckNNVklnTUQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91 dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKQ0KCQkJCQkJLmVxdWFscyhT dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNN VklnTSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJ CXBhZ2Uuc2V0VGV4dERvbm9yQ01WSWdNKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImRvbm9yQ01WSWdNIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiRG9ub3JDTVZJZ01EYXRlRCIpKXsNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdNRGF0ZSIpKQ0KCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJkb25vckNNVklnTURhdGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHREb25vckNNVklnTURhdGUo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ01EYXRlIikpOwkJ CQkNCgkJCX0NCg0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQcmVUeENN VklnR0QiKSl7CQkNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InByZVR4Q01WSWdHIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdHIikpKSl7DQoJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0 UHJlVHhDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJ Z0ciKSk7DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlByZVR4 Q01WSWdHRGF0ZUQiKSl7CQkNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9 bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInByZVR4Q01WSWdHRGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVkln R0RhdGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ CQlwYWdlLnNldFRleHRQcmVUeENNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgicHJlVHhDTVZJZ0dEYXRlIikpOw0KCQkJfQ0KCQkJDQoJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIlByZVR4Q01WSWdNRCIpKXsJDQoJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVklnTSIpKQ0K CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJwcmVUeENNVklnTSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFs c2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFByZVR4Q01WSWdNKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpOw0KCQkJfQ0KCQkJ aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQcmVUeENNVklnTURhdGVEIikpewkJ DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52 YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVkln TURhdGUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ01EYXRlIikpKSl7DQoJCQkJ CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0UHJl VHhDTVZJZ01EYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01W SWdNRGF0ZSIpKTsNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygi QkFMRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi YWwiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmFsIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0QkFMKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImJhbCIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiQkFMRGF0ZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxEYXRlIikp KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z ZXRUZXh0QkFMRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxEYXRl IikpOw0KCQkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJC QUxDdWx0dXJlRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51 bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJiYWxDZWxsQ3VsdHVyZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxDZWxsQ3VsdHVy ZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBh Z2Uuc2V0VGV4dEJBTEN1bHR1cmUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YmFsQ2VsbEN1bHR1cmUiKSk7DQoJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxp c3QuY29udGFpbnMoIkJBTE9yZ2FuaXNtc0QiKSl7DQoJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJiYWxPcmdhbmlzbXMiKSkNCgkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YmFsT3JnYW5pc21zIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQl9DQoJCQkJcGFnZS5zZXRUZXh0QkFMT3JnYW5pc21zKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImJhbE9yZ2FuaXNtcyIpKTsNCgkJCQkNCgkJCX0NCgkJ CWlmIChhdHRyTGlzdC5jb250YWlucygiQkFMSUNEIikpew0KCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsSUMiKSkNCgkJCQkJCS5lcXVh bHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs SUMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlw YWdlLnNldFRleHRCQUxJQyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxJ QyIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygi QkFMUENEIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImJhbFBDIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImJhbFBDIikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0QkFMUEMobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiYmFsUEMiKSk7DQoJCQkJDQoJCQl9DQoJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkZ1bmN0aW9uVGVzdEQiKSl7DQoJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvblRlc3QiKSkN CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiZnVuY3Rpb25UZXN0IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0RnVuY3Rpb25UZXN0KGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9uVGVzdCIpKTsNCgkJCQkN CgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQmVzdEZFVjFEIikp ew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVzdEZFVjEi KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmVzdEZFVjEiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRCZXN0RkVWMShsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJiZXN0RkVWMSIpKTsNCgkJCQkNCgkJCX0NCgkJ CWlmIChhdHRyTGlzdC5jb250YWlucygiRkVWMUQiKSl7DQoJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJGRVYxIikpDQoJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEi KSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdl LnNldFRleHRGRVYxKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSk7 DQoJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRlbHRh RkVWMUQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJk ZWx0YUZFVjEiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpKSl7DQoJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0RGVsdGFG RVYxKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRlbHRhRkVWMSIpKTsNCgkJ CQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRlZDRCIpKXsN CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIpKQ0KCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJGVkMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0N CgkJCQlwYWdlLnNldFRleHRGVkMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi RlZDIikpOw0KCQkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJPMlNhdEQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJvMlNhdCIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJvMlNhdCIpKSkpew0KCQkJCQlzYW1lUGF0 ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dE8yU2F0KGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoIm8yU2F0IikpOw0KCQkJCQ0KCQkJfQ0KCQkJ aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpEIikpIHsNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlaiIpKQ0KCQkJCQkJLmVxdWFscyhT dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWoiKSkp KXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNl dFRleHRSZWoobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqIikpOw0KCQkJ fQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpUaEQiKSkgew0KCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVGgiKSkNCgkJCQkJ CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgicmVqVGgiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0N CgkJCQlwYWdlLnNldFRleHRSZWpUaChsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJyZWpUaCIpKTsNCgkJCQkNCgkJCX0NCgkJCS8vaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJDQURvc2VEIikpIHBhZ2Uuc2V0VGV4dENBRG9zZShsdW5nQ0RP dXRjb21lLmdldENBRG9zZSgpKTsNCgkJCS8vaWYgKGF0dHJMaXN0LmNvbnRh aW5zKCJGS0Rvc2VEIikpIHBhZ2Uuc2V0VGV4dEZLRG9zZShsdW5nQ0RPdXRj b21lLmdldEZLRG9zZSgpKTsNCgkJCS8vaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJTdGVyb2lkRG9zZUQiKSkgcGFnZS5zZXRUZXh0U3Rlcm9pZERvc2UobHVu Z0NET3V0Y29tZS5nZXRTdGVyb2lkRG9zZSgpKTsNCg0KCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJXQkNDb3VudEQiKSl7DQoJCQkJaWYobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgid2JjQ291bnQiKSE9bnVsbCAgJiYgIWx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoIndiY0NvdW50IikudHJpbSgpLmVxdWFscygiIikp ew0KCQkJCQlpZighU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgid2JjQ291bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQlw YWdlLnNldFRleHRXQkNDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3 YmNDb3VudCIpKTsNCgkJCQkJfQ0KCQkJCQlpZihTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKS5zdGFydHNXaXRo KCItMSIpKXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dFdCQ0NvdW50KCIoIitsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKyIpIik7DQoJCQkJCX0N CgkJCQl9ZWxzZXsNCgkJCQkJcGFnZS5zZXRUZXh0V0JDQ291bnQoIiIpOw0K CQkJCX0NCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndiY0Nv dW50IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoIndiY0NvdW50IikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQkJDQoJCQkJLy9wYWdlLnNldFRleHRXQkND b3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKTsNCgkJ CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSEdCQ291bnREIikpew0K CQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50IikhPW51 bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZ2JDb3VudCIpLnRy aW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCWlmKCFTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZ2JDb3VudCIpKS5zdGFydHNXaXRo KCItMSIpKXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEhHQkNvdW50KGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50IikpOw0KCQkJCQl9DQoJCQkJCWlm KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNv dW50IikpLnN0YXJ0c1dpdGgoIi0xIikpew0KCQkJCQkJcGFnZS5zZXRUZXh0 SEdCQ291bnQoIigiK2x1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50 IikrIikiKTsNCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQlwYWdlLnNldFRl eHRIR0JDb3VudCgiIik7DQoJCQkJfQ0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5n LnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSkp KXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQkvL3BhZ2Uu c2V0VGV4dEhHQkNvdW50KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNv dW50IikpOw0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQbGF0 ZWxldENvdW50RCIpKXsNCgkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJwbGF0ZWxldENvdW50IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJwbGF0ZWxldENvdW50IikudHJpbSgpLmVxdWFscygiIikpeyAN CgkJCQkJaWYoIVN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInBsYXRlbGV0Q291bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJ CQlwYWdlLnNldFRleHRQbGF0ZWxldENvdW50KGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInBsYXRlbGV0Q291bnQiKSk7DQoJCQkJCX0NCgkJCQkJaWYoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRD b3VudCIpKS5zdGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCXBhZ2Uuc2V0VGV4 dFBsYXRlbGV0Q291bnQoIigiK2x1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBs YXRlbGV0Q291bnQiKSsiKSIpOw0KCQkJCQl9DQoJCQkJfWVsc2V7DQoJCQkJ CXBhZ2Uuc2V0VGV4dFBsYXRlbGV0Q291bnQoIiIpOw0KCQkJCX0NCgkJCQkN CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291 bnQiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRDb3VudCIpKSkpew0KCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCS8vcGFnZS5zZXRUZXh0UGxhdGVs ZXRDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50 IikpOw0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCYW5kc0Qi KSl7CQkJCQ0KCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRz IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIp LnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCWlmKERvdWJsZS52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikpLmRvdWJsZVZhbHVl KCk+MC4wKXsNCgkJCQkgICAgICAgcGFnZS5zZXRUZXh0QmFuZHMobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSk7DQoJCQkJCX0NCgkJCQkJaWYo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSE9bnVsbCAmJiANCgkJ CQkJCQlEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi YW5kcyIpKS5kb3VibGVWYWx1ZSgpPDAuMCl7DQoJCQkJCSAgIHBhZ2Uuc2V0 VGV4dEJhbmRzKCIoIitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIp KyIpIik7DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJcGFnZS5zZXRUZXh0 QmFuZHMoIiIpOw0KCQkJCX0NCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9 bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImJhbmRzIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikpKSl7DQoJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQl9CQkJCQ0KCQkJfQ0KCQkJDQoJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkNyZWF0aW5pbmVEIikpewkJCQkNCgkJCQlp ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikhPW51bGwg ICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikudHJp bSgpLmVxdWFscygiIikpeyANCgkJCQkJaWYoRG91YmxlLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1 ZSgpPjAuMCl7DQoJCQkJICAgICAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKTsNCgkJCQkJ fQ0KCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5l IikhPW51bGwgJiYgDQoJCQkJCQkJRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1ZSgpPDAu MCl7DQoJCQkJCSAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUoIigiK2x1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSsiKSIpOw0KCQkJCQl9 DQoJCQkJfWVsc2V7DQoJCQkJCXBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUoIiIp Ow0KCQkJCX0NCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAh U3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNy ZWF0aW5pbmUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKSkpew0KCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQkJCQkNCgkJCX0NCgkJCQ0KCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJDcmVhdGluaW5lRGF0ZUQiKSl7CQkJCQ0K CQkJCXBhZ2Uuc2V0VGV4dENyZWF0aW5pbmVEYXRlKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImNyZWF0aW5pbmVEYXRlIikpOwkJCQkNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmVEYXRlIikpDQoJCQkJ CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImNyZWF0aW5pbmVEYXRlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQl9CQkJCQ0KCQkJfQ0KCQkJDQoJCQlpZiAoYXR0ckxpc3QuY29u dGFpbnMoIkJVTkQiKSl7CQkJCQ0KCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImJ1biIpIT1udWxsICAmJiAhbHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYnVuIikudHJpbSgpLmVxdWFscygiIikpeyANCgkJCQkJaWYoRG91Ymxl LnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpLmRvdWJs ZVZhbHVlKCk+MC4wKXsNCgkJCQkgICAgICAgcGFnZS5zZXRUZXh0Q3JlYXRp bmluZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4iKSk7DQoJCQkJCX0N CgkJCQkJaWYobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikhPW51bGwg JiYgDQoJCQkJCQkJRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYnVuIikpLmRvdWJsZVZhbHVlKCk8MC4wKXsNCgkJCQkJICAgcGFn ZS5zZXRUZXh0Q3JlYXRpbmluZSgiKCIrbHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYnVuIikrIikiKTsNCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQlwYWdl LnNldFRleHRDcmVhdGluaW5lKCIiKTsNCgkJCQl9DQoJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJidW4iKSkNCgkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpKSl7 DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9CQkJCQ0KCQkJfQ0KCQkJ DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJVTkRhdGVEIikpewkJCQkN CgkJCQlwYWdlLnNldFRleHRDcmVhdGluaW5lRGF0ZShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJidW5EYXRlIikpOwkJCQkNCgkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImJ1bkRhdGUiKSkNCgkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0ZSIp KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQkJCQkNCgkJCX0N CgkJCQ0KCQkJDQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTENvbW1l bnRzRCIpKXsNCgkJCQlwYWdlLnNldFRleHRCQUxDb21tZW50cyhsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJiYWxDb21tZW50cyIpKTsNCgkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENvbW1lbnRzIikpDQoJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImJhbENvbW1lbnRzIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZlNjb3Jl RCIpKXsNCgkJCQlwYWdlLnNldFRleHRJbmZTY29yZShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJpbmZlY3Rpb25TY29yZSIpKTsNCgkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpDQoJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImluZmVjdGlvblNjb3JlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsN CgkJCQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZlNj b3JlQ29tbWVudHNEIikpIHsNCgkJCQlwYWdlLnNldFRleHRJbmZTY29yZUNv bW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3Jl Q29tbWVudHMiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJpbmZlY3Rpb25TY29yZUNvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlv blNjb3JlQ29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSW5mQ29t bWVudHNEIikpIHsNCgkJCQlwYWdlLnNldFRleHRJbmZDb21tZW50cyhsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJpbmZlY3Rpb25Db21tZW50cyIpKTsNCgkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNvbW1l bnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNvbW1lbnRzIikpKSl7DQoJCQkJ CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxp c3QuY29udGFpbnMoIkNvbXBDb21tZW50c0QiKSkgew0KCQkJCXBhZ2Uuc2V0 VGV4dENvbXBDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21w Q29tbWVudHMiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJjb21wQ29tbWVudHMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcENvbW1lbnRzIikpKSl7 DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIk1lZENvbW1lbnRzRCIpKXsNCgkJCQlwYWdl LnNldFRleHRNZWRDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJt ZWRDb21tZW50cyIpKTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoIm1lZENvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1 ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1lZENvbW1lbnRzIikpKSl7 DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkZuQ29tbWVudHNEIikpIHsNCgkJCQlwYWdl LnNldFRleHRGbkNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1 bmN0aW9uQ29tbWVudHMiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJmdW5jdGlvbkNvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9u Q29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0N CgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqZWN0aW9uVHJl YXRtZW50c0QiKSl7DQoJCQkJcGFnZS5zZXRUZXh0UmVqZWN0aW9uVHJlYXRt ZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25UcmVhdG1l bnRzIikpOw0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVq ZWN0aW9uVHJlYXRtZW50cyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25UcmVhdG1l bnRzIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9 DQoJCQkNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqVGhSZWFzb25z RCIpKXsNCgkJCQlwYWdlLnNldFRleHRSZWpUaFJlYXNvbnMobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgicmVqVGhSZWFzb25zIikpOw0KCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVGhSZWFzb25zIikpDQoJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InJlalRoUmVhc29ucyIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ CQkJfQ0KCQkJfQ0KLy8JCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRo RGF0ZUQiKSkgcGFnZS5zZXRUZXh0SW5kVGhEYXRlKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImluZFRoRGF0ZSIpKTsNCg0KCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJJbmZUaGVyYXB5RCIpKSB7DQoJCQkJcGFnZS5zZXRUZXh0SW5m VGhlcmFweShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZUaGVyYXB5Iikp Ow0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mVGhlcmFw eSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJpbmZUaGVyYXB5IikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIkRyYXdEIikpIHsNCgkJCQlwYWdlLnNldFRleHREcmF3KGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImRyYXciKSk7DQoJCQkJaWYocHJldkx1bmdDRE91 dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJkcmF3IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRyYXciKSkpKXsNCgkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCg0KCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJDU0QiKSl7DQoJCQkJcGFnZS5zZXRUZXh0Q1Mo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmljYWxTeW1wdG9tcyIpKTsN CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNsaW5pY2FsU3lt cHRvbXMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmljYWxTeW1wdG9tcyIpKSkpew0KCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5RCIpKXsNCgkJCQlwYWdlLnNldFRl eHRJbmRUaGVyYXB5KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJh cHkiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRU aGVyYXB5IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHkiKSkpKXsNCgkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5j b250YWlucygiSW5kVGhlcmFweVlORCIpKXsNCgkJCQlwYWdlLnNldFRleHRJ bmRUaGVyYXB5WU4obHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFw eVlOIikpOw0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5k VGhlcmFweVlOIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHlZTiIpKSkpew0KCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5Q29tcERhdGVEIikpew0KCQkJCXBh Z2Uuc2V0VGV4dEluZFRoZXJhcHlDb21wRGF0ZShsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJpbmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSk7DQoJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tcGxldGlv bkRhdGUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUNvbXBsZXRpb25EYXRlIikp KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlOb09mRG9zZXNEIikp ew0KCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlOb09mRG9zZXMobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKTsNCgkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHlOb09m RG9zZXMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKSkpew0K CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5QW10UGVyRG9zZUQiKSl7DQoJ CQkJcGFnZS5zZXRUZXh0SW5kVGhlcmFweUFtdFBlckRvc2UobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUFtdFBlckRvc2UiKSk7DQoJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVy RG9zZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9zZSIpKSkpew0K CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5Q29tbWVudHNEIikpew0KCQkJ CXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlDb21tZW50cyhsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSk7DQoJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSkN CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiaW5kVGhlcmFweUNvbW1lbnRzIikpKSl7DQoJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoNCgkJCQ0KCQkJDQoJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkhlbWF0b2xvZ3lEIikpew0KCQkJCXBhZ2Uu c2V0VGV4dEhlbWF0b2xvZ3kobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGVt YXRvbG9neSIpKTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImhlbWF0b2xvZ3kiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGVtYXRvbG9neSIpKSkpew0KCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJSZWNlcENNVklnR0QiKSl7DQoJCQkJcGFnZS5zZXRU ZXh0UmVjZXBDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBD TVZJZ0ciKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy ZWNlcENNVklnRyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVklnRyIpKSkpew0KCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJSZWNlcENNVkRpYWdEYXRlRCIpKXsNCgkJCQlwYWdl LnNldFRleHRSZWNlcENNVkRpYWdEYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInJlY2VwQ01WRGlhZ0RhdGUiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91 dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJyZWNlcENNVkRpYWdEYXRlIikpDQoJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJl Y2VwQ01WRGlhZ0RhdGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVjZXBD TVZJbmZUeXBlRCIpKSB7DQoJCQkJcGFnZS5zZXRUZXh0UmVjZXBDTVZJbmZU eXBlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIp KTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01W SW5mVHlwZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkluZlR5cGUiKSkpKXsNCgkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChhdHRy TGlzdC5jb250YWlucygiUmVjZXBpZW50Q01WTWV0aG9kRCIpKXsNCgkJCQlw YWdlLnNldFRleHRSZWNlcGllbnRDTVZNZXRob2QobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgicmVjZXBDTVZNZXRob2QiKSk7DQoJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJyZWNlcENNVk1ldGhvZCIpKQ0KCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy ZWNlcENNVk1ldGhvZCIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ CQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcGll bnRDTVZPcmdhbkQiKSl7DQoJCQkJcGFnZS5zZXRUZXh0UmVjZXBpZW50Q01W T3JnYW4obHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBDTVZPcmdhbiIp KTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01W T3JnYW4iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBDTVZPcmdhbiIpKSkpew0KCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7DQoJCQkJcGFnZS5zZXRUZXh0 RG9ub3JDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJ Z0ciKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25v ckNNVklnRyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnRyIpKSkpew0KCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJCaW9wc3lIaXN0b3J5RCIpKXsNCgkJCQlwYWdlLnNldFRl eHRCaW9wc3lIaXN0b3J5KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJpb3Bz eUhpc3RvcnkiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJiaW9wc3lIaXN0b3J5IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1 ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJpb3BzeUhpc3RvcnkiKSkp KXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlm IChhdHRyTGlzdC5jb250YWlucygiUmVqZWN0aW9uRXBpc29kZUNvbW1lbnRz RCIpKXsNCgkJCQlwYWdlLnNldFRleHRSZWplY3Rpb25FcGlzb2RlQ29tbWVu dHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uRXBpc29kZUNv bW1lbnRzIikpOw0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi cmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlv bkVwaXNvZGVDb21tZW50cyIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7 DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpU cmVhdG1lbnRIaXN0b3J5RCIpKXsNCgkJCQlwYWdlLnNldFRleHRSZWpUcmVh dG1lbnRIaXN0b3J5KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0 bWVudEhpc3RvcnkiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51 bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJyZWpUcmVhdG1lbnRIaXN0b3J5IikpDQoJCQkJCQkuZXF1YWxzKFN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0 bWVudEhpc3RvcnkiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU3Rlcm9pZHNE Iikpew0KCQkJCXBhZ2Uuc2V0VGV4dFN0ZXJvaWRzKGx1bmdDRE91dGNvbWUu Z2V0U3Rlcm9pZHMoKSk7DQoJCQkJc3BhblRhZyA9IHBhZ2UuZ2V0RWxlbWVu dEJ5SWQoIlN0ZXJvaWRzIik7DQoJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxs RWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJY2VsbC5z ZXRBdHRyaWJ1dGUoInRpdGxlIixlbmNJZCk7DQoJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFN0ZXJvaWRzKCkpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0U3Rlcm9pZHMoKSkpKXsNCgkJCQkJ c2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiUHJlZG5pc29uZUQiKSl7DQoJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJwcmVkbmlzb25lIikpDQoJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZWRu aXNvbmUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ CQlwYWdlLnNldFRleHRQcmVkbmlzb25lKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInByZWRuaXNvbmUiKSk7CQkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJQcmVkbmlzb2xvbmVEIikpew0KCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpDQoJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBy ZWRuaXNvbG9uZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ fQ0KCQkJCXBhZ2Uuc2V0VGV4dFByZWRuaXNvbG9uZShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJwcmVkbmlzb2xvbmUiKSk7CQkJCQ0KCQkJfQ0KCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJJbmhTdGVyb2lkc0QiKSkgew0KCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5oU3Rlcm9pZHMiKSkNCgkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiaW5oU3Rlcm9pZHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNl Ow0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRJbmhTdGVyb2lkcyhsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKTsJCQkJDQoJCQl9DQoN CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQ3ljbG9zcG9yaW5EIikpew0K CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3ljbG9zcG9yaW4i KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiY3ljbG9zcG9yaW4iKSkpKXsNCgkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRDeWNsb3Nwb3Jpbihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjeWNsb3Nwb3JpbiIpKTsJCQkJDQoJ CQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlRhY3JvbGltdXNEIikp ew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidGFjcm9saW11 cyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJ0YWNyb2xpbXVzIikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0VGFjcm9saW11cyhs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0YWNyb2xpbXVzIikpOwkJCQkNCgkJ CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQXphdGhpb3ByaW5lRCIp KXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6YXRoaW9w cmluZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSkpKXsNCgkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRBemF0aGlv cHJpbmUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYXphdGhpb3ByaW5lIikp OwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTXljb3Bo ZW5vbGF0ZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgibXljb3BoZW5vbGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRlIikp KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z ZXRUZXh0TXljb3BoZW5vbGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJt eWNvcGhlbm9sYXRlIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5j b250YWlucygiQmFzaWxpeGltYWJEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSkNCgkJCQkJCS5lcXVhbHMo U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFzaWxp eGltYWIiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ CQlwYWdlLnNldFRleHRCYXNpbGl4aW1hYihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJiYXNpbGl4aW1hYiIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxp c3QuY29udGFpbnMoIkRhY2x1emltYWJEIikpew0KCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiZGFjbHV6aW1hYiIpKQ0KCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkYWNs dXppbWFiIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJ CQkJcGFnZS5zZXRUZXh0RGFjbHV6aW1hYihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJkYWNsdXppbWFiIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz dC5jb250YWlucygiU2lyb2xpbXVzRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoInNpcm9saW11cyIpKQ0KCQkJCQkJLmVxdWFscyhT dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzaXJvbGlt dXMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlw YWdlLnNldFRleHRTaXJvbGltdXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi c2lyb2xpbXVzIikpOwkJCQkNCgkJCX0NCgkJCQ0KCQkJLy8gYW50aW1pY3Jv YmlhbHMgc3RhcnQNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQXppdGhy b215Y2luRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJheml0aHJvbXljaW4iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYXppdGhyb215Y2luIikpKSl7 DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRU ZXh0QXppdGhyb215Y2luKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6aXRo cm9teWNpbiIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIlRNWC1TdWxmYUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgidE1YU3VsZmEiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidE1YU3VsZmEiKSkpKXsN CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRl eHRUTVhTdWxmYShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0TVhTdWxmYSIp KTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlRvYnJh bXljaW5EIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InRvYnJhbXljaW4iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidG9icmFteWNpbiIpKSkpew0KCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFRv YnJhbXljaW4obHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidG9icmFteWNpbiIp KTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkdhbmNp Y2xvdmlyRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJnYW5jaWNsb3ZpciIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJnYW5jaWNsb3ZpciIpKSkpew0K CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4 dEdhbmNpY2xvdmlyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImdhbmNpY2xv dmlyIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygi VmFsZ2FuY3ljbG92aXJEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSkNCgkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3lj bG92aXIiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ CQlwYWdlLnNldFRleHRWYWxnYW5jeWNsb3ZpcihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJ2YWxnYW5jeWNsb3ZpciIpKTsJCQkJDQoJCQl9DQoJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkl0cmFjb25hem9sZUQiKSl7DQoJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSkNCgkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiaXRyYWNvbmF6b2xlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0SXRyYWNvbmF6b2xlKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoIml0cmFjb25hem9sZSIpKTsJCQkJDQoJCQl9 DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZsdWNvbmF6b2xlRCIpKXsN CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZsdWNvbmF6b2xl IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImZsdWNvbmF6b2xlIikpKSl7DQoJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGUo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSk7CQkJCQ0K CQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJWb3JpY29uYXpvbGVE Iikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJp bmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidm9yaWNv bmF6b2xlIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInZvcmljb25hem9sZSIpKSkpew0KCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFZvcmlj b25hem9sZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2b3JpY29uYXpvbGUi KSk7CQkJCQ0KCQkJfQ0KCQkJLy8gCWFudGltaWNyb2JpYWxzIGVuZA0KCQkJ DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIk90aGVyTWVkaWNhdGlvbkQi KSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhlck1l ZGljYXRpb24iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgib3RoZXJNZWRpY2F0aW9uIikpKSl7DQoJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0 T3RoZXJNZWRpY2F0aW9uKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm90aGVy TWVkaWNhdGlvbiIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29u dGFpbnMoIlBBWFdlaWdodDFEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhXZWlnaHQx IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFn ZS5zZXRUZXh0UEFYV2VpZ2h0MShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJw YXhXZWlnaHQxIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiUEFYV2VpZ2h0MkQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MiIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhXZWlnaHQy IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFn ZS5zZXRUZXh0UEFYV2VpZ2h0MihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJw YXhXZWlnaHQyIikpOwkJCQkNCgkJCX0NCgkJCQ0KLy8JCQkgdG8gc2V0IHRv b2x0aXANCgkJCXRlbXBsYXRlUm93ID0gcGFnZS5nZXRFbGVtZW50VGVtcGxh dGVSb3coKTsJCQkNCgkJCXRlbXBsYXRlUm93LnNldEF0dHJpYnV0ZSgidGl0 bGUiLGVuY0lkKTsNCgkJCWlmKGNvdW50ZXIlMj09MCl7DQoJCQkJdGVtcGxh dGVSb3cuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwid2hpdGUiKTsNCgkJCX1l bHNlew0KCQkJCXRlbXBsYXRlUm93LnNldEF0dHJpYnV0ZSgiYmdjb2xvciIs IiNFRkVGRUYiKTsNCgkJCX0NCgkJCQ0KCQkJaWYgKCEoZmV2ZW50LmVxdWFs cygiIikpKSB7DQoJCQkJZm9yIChpbnQgaT0wO2k8ZlFDMS5sZW5ndGg7aSsr KSB7DQoJCQkJCWlmICghZ2V0UUNSZXN1bHQobHVuZ0NET3V0Y29tZSwicWMi K2ZRQzFbaV0pKSB7DQoJCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50 QnlJZChmUUMxW2ldKTsNCgkJCQkJCWlmKFhNTENVdGlsLmdldEZpcnN0VGV4 dChzcGFuVGFnKS5nZXREYXRhKCkudHJpbSgpLmxlbmd0aCgpPjApew0KCQkJ CQkJCXFjMUNlbGxDb2xvciA9ICIjRkY2NjAwIjsJDQoJCQkJCQkJc3RyTWlz c2luZ0RhdGEgPSAiICI7DQoJCQkJCQl9ZWxzZXsNCgkJCQkJCQlxYzFDZWxs Q29sb3IgPSAiI0ZGMzMzMyI7DQoJCQkJCQkJc3RyTWlzc2luZ0RhdGEgPSAi IG1pc3NpbmcgIjsNCgkJCQkJCX0NCgkJCQkJCVhNTENVdGlsLmdldEZpcnN0 VGV4dChzcGFuVGFnKS5zZXREYXRhKFhNTENVdGlsLmdldEZpcnN0VGV4dChz cGFuVGFnKS5nZXREYXRhKCkudHJpbSgpK3N0ck1pc3NpbmdEYXRhKTsNCgkJ CQkJCWNlbGwgPSAoSFRNTFRhYmxlQ2VsbEVsZW1lbnQpIHNwYW5UYWcuZ2V0 UGFyZW50Tm9kZSgpOw0KCQkJCQkJY2VsbC5zZXRCZ0NvbG9yKHFjMUNlbGxD b2xvcik7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlmb3IgKGludCBpPTA7aTxm UUMyLmxlbmd0aDtpKyspIHsNCgkJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5n Q0RPdXRjb21lLCJxYzIiK2ZRQzJbaV0pKSB7DQoNCgkJCQkJCXNwYW5UYWcg PSBwYWdlLmdldEVsZW1lbnRCeUlkKGZRQzJbaV0pOw0KCQkJCQkJY2VsbCA9 IChIVE1MVGFibGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2Rl KCk7DQoJCQkJCQljZWxsLnNldEJnQ29sb3IocWMyQ2VsbENvbG9yKTsNCgkJ CQkJfQ0KCQkJCX0NCgkJCX0NCgkJCQ0KCQkJdGVtcGxhdGVUYWJsZS5hcHBl bmRDaGlsZCh0ZW1wbGF0ZVJvdy5jbG9uZU5vZGUodHJ1ZSkpOw0KCQkJaWYg KHNhbWVQYXQpIHsNCgkJCQlsYXN0Um93ID0gKEhUTUxUYWJsZVJvd0VsZW1l bnQpIHRlbXBsYXRlVGFibGUuZ2V0TGFzdENoaWxkKCk7DQoJCQkJbGFzdFJv dy5zZXRCZ0NvbG9yKCIjZmZmZjk5Iik7DQoJCQkJbGFzdFJvdy5nZXRQYXJl bnROb2RlKCkucmVtb3ZlQ2hpbGQobGFzdFJvdyk7DQoJCQkJcm93Q291bnQt LTsNCgkJCQlyZWNDb3VudC0tOw0KCQkJCQ0KCQkJfQ0KDQoJCQlmb3IgKGlu dCBpPTA7aTxmUUMxLmxlbmd0aDtpKyspIHsNCgkJCQlzcGFuVGFnID0gcGFn ZS5nZXRFbGVtZW50QnlJZChmUUMxW2ldKTsNCgkJCQkvL1N5c3RlbS5vdXQu cHJpbnRsbigiUWMxOiAiK2ZRQzFbaV0gKyAiOiIgKyBzcGFuVGFnKTsNCgkJ CQljZWxsID0gKEhUTUxUYWJsZUNlbGxFbGVtZW50KSBzcGFuVGFnLmdldFBh cmVudE5vZGUoKTsNCgkJCQljZWxsLnNldEJnQ29sb3IoIiIpOw0KCQkJfQ0K CQkJZm9yIChpbnQgaT0wO2k8ZlFDMi5sZW5ndGg7aSsrKSB7DQoJCQkJc3Bh blRhZyA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFDMltpXSk7DQoJCQkJY2Vs bCA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnRO b2RlKCk7DQoJCQkJY2VsbC5zZXRCZ0NvbG9yKCIiKTsNCgkJCX0NCgkJCS8v IGdhcmJhZ2UgY29sbGVjdGlvbiBiZWdpbg0KCQkJbHVuZ0NET3V0Y29tZSA9 ICAgIG51bGw7DQoJCQllbmNJZCA9IG51bGw7DQoJCQlwYXRpZW50SWQgPSBu dWxsOw0KCQkJY2VudGVyTmFtZSA9IG51bGw7DQoJCQljZW50ZXJJZCA9IG51 bGw7DQoJCQlpZihjb3VudGVyJTQwMD09MCl7DQoJCQkgICBSdW50aW1lLmdl dFJ1bnRpbWUoKS5nYygpOw0KCQkJfQkJCQ0KCQkJLy8gZ2FyYmFnZSBjb2xs ZWN0aW9uIGVuZCANCgkJfQ0KCQkNCg0KCQkNCgkJdGVtcGxhdGVUYWJsZS5y ZW1vdmVDaGlsZCh0ZW1wbGF0ZVJvdyk7DQoNCgkJcGFnZS5zZXRUZXh0UGF0 Q291bnQocGF0aWVudENvdW50KyIiKTsNCgkJcGFnZS5zZXRUZXh0RW5jQ291 bnQoZW5jQ291bnQrIiIpOw0KCQlwYWdlLnNldFRleHRSZWNDb3VudChyZWND b3VudCsiIik7DQoNCg0KCQlzZXRGaWx0ZXJzKHBhZ2UpOw0KDQoJCXF1ZXJ5 VGV4dCA9IGxxLmdldExvY0NyaXRlcmlhKCkudG9TdHJpbmcoKTsNCg0KCQlw YWdlLnNldFRleHRRdWVyeVRleHQocXVlcnlUZXh0KTsNCgkJcGFnZS5zZXRU ZXh0UUMxVGV4dChxYzFUZXh0KTsNCgkJcGFnZS5zZXRUZXh0UUMyVGV4dChx YzJUZXh0KTsNCgkJDQoJCXJldHVybiBwYWdlOw0KDQoNCiAgICB9DQoNCiAg ICBwcml2YXRlIHZvaWQgc2V0RmlsdGVycyhYTUxPYmplY3QgcGFnZSkgew0K ICAgIAkvL1N5c3RlbS5vdXQucHJpbnRsbigic2V0RmlsdGVycygpICBtZXRo b2QgY2FsbGVkID09PT09PT09ICIpOw0KCQlpZiAoIShmZGF5c0NvbXBGaWx0 ZXIuZXF1YWxzKCIiKSkgJiYgIShmZGF5c0ZpbHRlci5lcXVhbHMoIiIpKSkg ew0KCQkJU3RyaW5nIGNvbXBPcHQgPSAiRGF5c0NvbXAiKyBmZGF5c0NvbXBG aWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1l bnQgZUNvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxl bWVudEJ5SWQoY29tcE9wdCk7DQoJCQllQ29tcE9wdC5zZXRTZWxlY3RlZCh0 cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBlRGF5cyA9IChIVE1MSW5w dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJEYXlzRmlsdGVyIik7 DQoJCQllRGF5cy5zZXRWYWx1ZShmZGF5c0ZpbHRlcik7DQoJCX0NCgkJaWYg KCEoZnBheENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShmcGF4RmlsdGVy LmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgcGF4T3B0ID0gIlBBWENvbXAi KyBmcGF4Q29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1M T3B0aW9uRWxlbWVudCBlUEFYT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw YWdlLmdldEVsZW1lbnRCeUlkKHBheE9wdCk7DQoJCQllUEFYT3B0LnNldFNl bGVjdGVkKHRydWUpOw0KDQoJCQlIVE1MSW5wdXRFbGVtZW50IGVQQVggPSAo SFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiUEFYRmls dGVyIik7DQoJCQllUEFYLnNldFZhbHVlKGZwYXhGaWx0ZXIpOw0KCQl9DQoJ CWlmICghKGZlbnJvbGxEdENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShm ZW5yb2xsRHRGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBlbnJv bGxEdENvbXAgPSAiRW5yb2xsRHRDb21wIisgZmVucm9sbER0Q29tcEZpbHRl ci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBl bnJvbGxEdENvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0 RWxlbWVudEJ5SWQoZW5yb2xsRHRDb21wKTsNCgkJCWVucm9sbER0Q29tcE9w dC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBl bnJvbGxEdEZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVs ZW1lbnRCeUlkKCJFbnJvbGxEdEZpbHRlciIpOw0KCQkJZW5yb2xsRHRGaWx0 ZXIuc2V0VmFsdWUoZmVucm9sbER0RmlsdGVyKTsNCgkJfQ0KCQkNCgkJaWYg KCEoZmluZFRoZXJhcHlDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZmlu ZFRoZXJhcHlGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBpbmRU aGVyYXB5Q29tcEZpbHRlciA9ICJJbmRUaGVyYXB5Q29tcE9wdCIrIGZpbmRU aGVyYXB5Q29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1M T3B0aW9uRWxlbWVudCBpbmRUaGVyYXB5Q29tcE9wdCA9IChIVE1MT3B0aW9u RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChpbmRUaGVyYXB5Q29tcEZp bHRlcik7DQoJCQlpbmRUaGVyYXB5Q29tcE9wdC5zZXRTZWxlY3RlZCh0cnVl KTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBpbmRUaGVyYXB5RmlsdGVyID0g KEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkluZFRo ZXJhcHlGaWx0ZXIiKTsNCgkJCWluZFRoZXJhcHlGaWx0ZXIuc2V0VmFsdWUo ZmluZFRoZXJhcHlGaWx0ZXIpOw0KCQl9DQoJCQ0KCQlpZiAoIShmb3RoZXJN ZWRpY2F0aW9uQ29tcEZpbHRlci5lcXVhbHMoIiIpKSAmJiAhKGZvdGhlck1l ZGljYXRpb25GaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBvdGhl ck1lZGljYXRpb25Db21wRmlsdGVyID0gIk90aGVyTWVkaWNhdGlvbkNvbXBP cHQiKyBmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIg IiwiIikucmVwbGFjZUFsbCgiISIsIk5vdCIpLnJlcGxhY2VBbGwoIj0iLCJF cXVhbHMiKTsNCgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1lbnQgb3RoZXJNZWRp Y2F0aW9uQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRF bGVtZW50QnlJZChvdGhlck1lZGljYXRpb25Db21wRmlsdGVyKTsNCgkJCW90 aGVyTWVkaWNhdGlvbkNvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJ CUhUTUxJbnB1dEVsZW1lbnQgb3RoZXJNZWRpY2F0aW9uRmlsdGVyID0gKEhU TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIk90aGVyTWVk aWNhdGlvbkZpbHRlciIpOw0KCQkJb3RoZXJNZWRpY2F0aW9uRmlsdGVyLnNl dFZhbHVlKGZvdGhlck1lZGljYXRpb25GaWx0ZXIpOw0KCQl9DQoJCQ0KCQlp ZiAoIShmcmVqVHJlYXRtZW50SGlzdG9yeUNvbXBGaWx0ZXIuZXF1YWxzKCIi KSkgJiYgIShmcmVqVHJlYXRtZW50SGlzdG9yeUZpbHRlci5lcXVhbHMoIiIp KSkgew0KCQkJU3RyaW5nIHJlalRyZWF0bWVudEhpc3RvcnlDb21wRmlsdGVy ID0gIlJlalRyZWF0bWVudEhpc3RvcnlDb21wT3B0IisgZnJlalRyZWF0bWVu dEhpc3RvcnlDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKS5yZXBsYWNl QWxsKCIhIiwiTm90IikucmVwbGFjZUFsbCgiPSIsIkVxdWFscyIpOw0KCQkJ DQoJCQlIVE1MT3B0aW9uRWxlbWVudCByZWpUcmVhdG1lbnRIaXN0b3J5Q29t cE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJ ZChyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZpbHRlcik7DQoJCQlyZWpUcmVh dG1lbnRIaXN0b3J5Q29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJ SFRNTElucHV0RWxlbWVudCByZWpUcmVhdG1lbnRIaXN0b3J5RmlsdGVyID0g KEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlJlalRy ZWF0bWVudEhpc3RvcnlGaWx0ZXIiKTsNCgkJCXJlalRyZWF0bWVudEhpc3Rv cnlGaWx0ZXIuc2V0VmFsdWUoZnJlalRyZWF0bWVudEhpc3RvcnlGaWx0ZXIp Ow0KCQl9DQoJCQ0KCQkNCgkJaWYgKCEoZnJlY2VwaWVudENNVk1ldGhvZENv bXBGaWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShmcmVjZXBpZW50Q01WTWV0aG9k RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgcmVjZXBpZW50Q01W TWV0aG9kQ29tcEZpbHRlciA9ICJSZWNlcGllbnRDTVZNZXRob2RDb21wT3B0 IisgZnJlY2VwaWVudENNVk1ldGhvZENvbXBGaWx0ZXIucmVwbGFjZUFsbCgi ICIsIiIpLnJlcGxhY2VBbGwoIiEiLCJOb3QiKS5yZXBsYWNlQWxsKCI9Iiwi RXF1YWxzIik7DQoJCQkNCgkJCUhUTUxPcHRpb25FbGVtZW50IHJlY2VwaWVu dENNVk1ldGhvZENvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2Uu Z2V0RWxlbWVudEJ5SWQocmVjZXBpZW50Q01WTWV0aG9kQ29tcEZpbHRlcik7 DQoJCQlyZWNlcGllbnRDTVZNZXRob2RDb21wT3B0LnNldFNlbGVjdGVkKHRy dWUpOw0KDQoJCQlIVE1MSW5wdXRFbGVtZW50IHJlY2VwaWVudENNVk1ldGhv ZEZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRC eUlkKCJSZWNlcGllbnRDTVZNZXRob2RGaWx0ZXIiKTsNCgkJCXJlY2VwaWVu dENNVk1ldGhvZEZpbHRlci5zZXRWYWx1ZShmcmVjZXBpZW50Q01WTWV0aG9k RmlsdGVyKTsNCgkJfQ0KCQkNCgkJaWYgKCEoZnJlamVjdGlvblRyZWF0bWVu dHNDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZnJlamVjdGlvblRyZWF0 bWVudHNGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyByZWplY3Rp b25UcmVhdG1lbnRzQ29tcEZpbHRlciA9ICJSZWplY3Rpb25UcmVhdG1lbnRz Q29tcE9wdCIrIGZyZWplY3Rpb25UcmVhdG1lbnRzQ29tcEZpbHRlci5yZXBs YWNlQWxsKCIgIiwiIikucmVwbGFjZUFsbCgiISIsIk5vdCIpLnJlcGxhY2VB bGwoIj0iLCJFcXVhbHMiKTsNCgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1lbnQg cmVqZWN0aW9uVHJlYXRtZW50c0NvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1l bnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQocmVqZWN0aW9uVHJlYXRtZW50c0Nv bXBGaWx0ZXIpOw0KCQkJcmVqZWN0aW9uVHJlYXRtZW50c0NvbXBPcHQuc2V0 U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgcmVqZWN0 aW9uVHJlYXRtZW50c0ZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdl LmdldEVsZW1lbnRCeUlkKCJSZWplY3Rpb25UcmVhdG1lbnRzRmlsdGVyIik7 DQoJCQlyZWplY3Rpb25UcmVhdG1lbnRzRmlsdGVyLnNldFZhbHVlKGZyZWpl Y3Rpb25UcmVhdG1lbnRzRmlsdGVyKTsNCgkJfQ0KCQkNCgkJDQoJCWlmICgh KGZjb21wQ29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZmNv bXBDb21tZW50c0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGNv bXBDb21tZW50c0NvbXBGaWx0ZXIgPSAiQ29tcENvbW1lbnRzQ29tcE9wdCIr IGZjb21wQ29tbWVudHNDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKS5y ZXBsYWNlQWxsKCIhIiwiTm90IikucmVwbGFjZUFsbCgiPSIsIkVxdWFscyIp Ow0KCQkJDQoJCQlIVE1MT3B0aW9uRWxlbWVudCBjb21wQ29tbWVudHNDb21w T3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlk KGNvbXBDb21tZW50c0NvbXBGaWx0ZXIpOw0KCQkJY29tcENvbW1lbnRzQ29t cE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVu dCBjb21wQ29tbWVudHNGaWx0ZXIgPSAoSFRNTElucHV0RWxlbWVudCkgcGFn ZS5nZXRFbGVtZW50QnlJZCgiQ29tcENvbW1lbnRzRmlsdGVyIik7DQoJCQlj b21wQ29tbWVudHNGaWx0ZXIuc2V0VmFsdWUoZmNvbXBDb21tZW50c0ZpbHRl cik7DQoJCX0NCgkJaWYgKCEoZmJBTENvbW1lbnRzQ29tcEZpbHRlci5lcXVh bHMoIiIpKSAmJiAhKGZiQUxDb21tZW50c0ZpbHRlci5lcXVhbHMoIiIpKSkg ew0KCQkJU3RyaW5nIGJBTENvbW1lbnRzQ29tcEZpbHRlciA9ICJCQUxDb21t ZW50c0NvbXBPcHQiKyBmYkFMQ29tbWVudHNDb21wRmlsdGVyLnJlcGxhY2VB bGwoIiAiLCIiKS5yZXBsYWNlQWxsKCIhIiwiTm90IikucmVwbGFjZUFsbCgi PSIsIkVxdWFscyIpOw0KCQkJDQoJCQlIVE1MT3B0aW9uRWxlbWVudCBiQUxD b21tZW50c0NvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0 RWxlbWVudEJ5SWQoYkFMQ29tbWVudHNDb21wRmlsdGVyKTsNCgkJCWJBTENv bW1lbnRzQ29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElu cHV0RWxlbWVudCBiQUxDb21tZW50c0ZpbHRlciA9IChIVE1MSW5wdXRFbGVt ZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJCQUxDb21tZW50c0ZpbHRlciIp Ow0KCQkJYkFMQ29tbWVudHNGaWx0ZXIuc2V0VmFsdWUoZmJBTENvbW1lbnRz RmlsdGVyKTsNCgkJfQ0KCQlpZiAoIShpbmZDb21tZW50c0NvbXBGaWx0ZXIu ZXF1YWxzKCIiKSkgJiYgIShpbmZDb21tZW50c0ZpbHRlci5lcXVhbHMoIiIp KSkgew0KCQkJU3RyaW5nIHN0cmluZkNvbW1lbnRzQ29tcEZpbHRlciA9ICJJ bmZDb21tZW50c0NvbXBPcHQiKyBpbmZDb21tZW50c0NvbXBGaWx0ZXIucmVw bGFjZUFsbCgiICIsIiIpLnJlcGxhY2VBbGwoIiEiLCJOb3QiKS5yZXBsYWNl QWxsKCI9IiwiRXF1YWxzIik7DQoJCQkNCgkJCUhUTUxPcHRpb25FbGVtZW50 IGluZkNvbW1lbnRzQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFn ZS5nZXRFbGVtZW50QnlJZChzdHJpbmZDb21tZW50c0NvbXBGaWx0ZXIpOw0K CQkJaW5mQ29tbWVudHNDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KDQoJ CQlIVE1MSW5wdXRFbGVtZW50IEluZkNvbW1lbnRzRmlsdGVyID0gKEhUTUxJ bnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkluZkNvbW1lbnRz RmlsdGVyIik7DQoJCQlJbmZDb21tZW50c0ZpbHRlci5zZXRWYWx1ZShpbmZD b21tZW50c0ZpbHRlcik7DQoJCX0NCgkJaWYgKCEobWJDb21tZW50c0NvbXBG aWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShtYkNvbW1lbnRzRmlsdGVyLmVxdWFs cygiIikpKSB7DQoJCQlTdHJpbmcgc3RybWJDb21tZW50c0NvbXBGaWx0ZXIg PSAiTUJDb21tZW50c0NvbXBPcHQiKyBtYkNvbW1lbnRzQ29tcEZpbHRlci5y ZXBsYWNlQWxsKCIgIiwiIikucmVwbGFjZUFsbCgiISIsIk5vdCIpLnJlcGxh Y2VBbGwoIj0iLCJFcXVhbHMiKTsNCgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1l bnQgbWJDb21tZW50c0NvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBh Z2UuZ2V0RWxlbWVudEJ5SWQoc3RybWJDb21tZW50c0NvbXBGaWx0ZXIpOw0K CQkJbWJDb21tZW50c0NvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJ CUhUTUxJbnB1dEVsZW1lbnQgTUJDb21tZW50c0ZpbHRlciA9IChIVE1MSW5w dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJNQkNvbW1lbnRzRmls dGVyIik7DQoJCQlNQkNvbW1lbnRzRmlsdGVyLnNldFZhbHVlKG1iQ29tbWVu dHNGaWx0ZXIpOw0KCQl9DQoJCQkNCgkJaWYgKCEoc3VtbWFyeUNvbW1lbnRz Q29tcEZpbHRlci5lcXVhbHMoIiIpKSAmJiAhKHN1bW1hcnlDb21tZW50c0Zp bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIHN0cnN1bW1hcnlDb21t ZW50c0NvbXBGaWx0ZXIgPSAiU3VtbWFyeUNvbW1lbnRzQ29tcE9wdCIrIHN1 bW1hcnlDb21tZW50c0NvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpLnJl cGxhY2VBbGwoIiEiLCJOb3QiKS5yZXBsYWNlQWxsKCI9IiwiRXF1YWxzIik7 DQoJCQkNCgkJCUhUTUxPcHRpb25FbGVtZW50IHN1bW1hcnlDb21tZW50c0Nv bXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5 SWQoc3Ryc3VtbWFyeUNvbW1lbnRzQ29tcEZpbHRlcik7DQoJCQlzdW1tYXJ5 Q29tbWVudHNDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KDQoJCQlIVE1M SW5wdXRFbGVtZW50IHR4dHN1bW1hcnlDb21tZW50c0ZpbHRlciA9IChIVE1M SW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJTdW1tYXJ5Q29t bWVudHNGaWx0ZXIiKTsNCgkJCXR4dHN1bW1hcnlDb21tZW50c0ZpbHRlci5z ZXRWYWx1ZShzdW1tYXJ5Q29tbWVudHNGaWx0ZXIpOw0KCQl9DQoJCQ0KCQlp ZiAoIShpbmRUaGVyYXB5Q29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikp ICYmICEoaW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyLmVxdWFscygiIikpKSB7 DQoJCQlTdHJpbmcgc3RyaW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlciA9 ICJJbmRUaGVyYXB5Q29tbWVudHNDb21wT3B0IisgaW5kVGhlcmFweUNvbW1l bnRzQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIikucmVwbGFjZUFsbCgi ISIsIk5vdCIpLnJlcGxhY2VBbGwoIj0iLCJFcXVhbHMiKTsNCgkJCQ0KCQkJ SFRNTE9wdGlvbkVsZW1lbnQgaW5kVGhlcmFweUNvbW1lbnRzQ29tcE9wdCA9 IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChzdHJp bmRUaGVyYXB5Q29tbWVudHNDb21wRmlsdGVyKTsNCgkJCWluZFRoZXJhcHlD b21tZW50c0NvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJ bnB1dEVsZW1lbnQgdHh0aW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyID0gKEhU TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkluZFRoZXJh cHlDb21tZW50c0ZpbHRlciIpOw0KCQkJdHh0aW5kVGhlcmFweUNvbW1lbnRz RmlsdGVyLnNldFZhbHVlKGluZFRoZXJhcHlDb21tZW50c0ZpbHRlcik7DQoJ CX0NCgkJDQoJCWlmICghKHJlamVjdGlvbkVwaXNvZGVDb21tZW50c0NvbXBG aWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShyZWplY3Rpb25FcGlzb2RlQ29tbWVu dHNGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBzdHJyZWplY3Rp b25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyID0gIlJlamVjdGlvbkVwaXNv ZGVDb21tZW50c0NvbXBPcHQiKyByZWplY3Rpb25FcGlzb2RlQ29tbWVudHND b21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKS5yZXBsYWNlQWxsKCIhIiwi Tm90IikucmVwbGFjZUFsbCgiPSIsIkVxdWFscyIpOw0KCQkJDQoJCQlIVE1M T3B0aW9uRWxlbWVudCByZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wT3B0 ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKHN0 cnJlamVjdGlvbkVwaXNvZGVDb21tZW50c0NvbXBGaWx0ZXIpOw0KCQkJcmVq ZWN0aW9uRXBpc29kZUNvbW1lbnRzQ29tcE9wdC5zZXRTZWxlY3RlZCh0cnVl KTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCB0eHRyZWplY3Rpb25FcGlzb2Rl Q29tbWVudHNGaWx0ZXIgPSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRF bGVtZW50QnlJZCgiUmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyIik7 DQoJCQl0eHRyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNGaWx0ZXIuc2V0VmFs dWUocmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyKTsNCgkJfQ0KCQkN CgkJaWYgKCEoZmZuQ29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikpICYm ICEoZmZuQ29tbWVudHNGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmlu ZyBmbkNvbW1lbnRzQ29tcEZpbHRlciA9ICJGbkNvbW1lbnRzQ29tcE9wdCIr IGZmbkNvbW1lbnRzQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIikucmVw bGFjZUFsbCgiISIsIk5vdCIpLnJlcGxhY2VBbGwoIj0iLCJFcXVhbHMiKTsN CgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1lbnQgZm5Db21tZW50c0NvbXBPcHQg PSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZm5D b21tZW50c0NvbXBGaWx0ZXIpOw0KCQkJZm5Db21tZW50c0NvbXBPcHQuc2V0 U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZm5Db21t ZW50c0ZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1l bnRCeUlkKCJGbkNvbW1lbnRzRmlsdGVyIik7DQoJCQlmbkNvbW1lbnRzRmls dGVyLnNldFZhbHVlKGZmbkNvbW1lbnRzRmlsdGVyKTsNCgkJfQ0KCQkNCgkJ DQoJCWlmICghKGZjcHRDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZmNw dEZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGNwdE9wdCA9ICJD UFRDb21wIisgZnBheENvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0K CQkJSFRNTE9wdGlvbkVsZW1lbnQgZUNQVE9wdCA9IChIVE1MT3B0aW9uRWxl bWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChjcHRPcHQpOw0KCQkJZUNQVE9w dC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBl Q1BUID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQo IkNQVEZpbHRlciIpOw0KCQkJZUNQVC5zZXRWYWx1ZShmY3B0RmlsdGVyKTsN CgkJfQ0KDQoJCWlmICghKGZpbmRGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJ CWlmICghKGZpbmRDb21wRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJU3Ry aW5nIGluZENvbXBPcHQgPSAiSW5kQ29tcCIrIGZpbmRDb21wRmlsdGVyLnJl cGxhY2VBbGwoIiAiLCIiKTsNCgkJCQlIVE1MT3B0aW9uRWxlbWVudCBlSW5k Q29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50 QnlJZChpbmRDb21wT3B0KTsNCgkJCQllSW5kQ29tcE9wdC5zZXRTZWxlY3Rl ZCh0cnVlKTsNCgkJCX0NCg0KCQkJaWYgKCEoZmluZEZpbHRlci5lcXVhbHMo IiIpKSkgew0KCQkJCUhUTUxJbnB1dEVsZW1lbnQgZUluZCA9IChIVE1MSW5w dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJJbmRGaWx0ZXIiKTsN CgkJCQllSW5kLnNldFZhbHVlKGZpbmRGaWx0ZXIpOw0KCQkJfQ0KCQl9DQoJ CWlmICghKGZjc0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJaWYgKCEoZmNz Q29tcEZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCVN0cmluZyBjc0NvbXBP cHQgPSAiQ1NDb21wIisgZmNzQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwi Iik7DQoJCQkJSFRNTE9wdGlvbkVsZW1lbnQgZUNTQ29tcE9wdCA9IChIVE1M T3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChjc0NvbXBPcHQp Ow0KCQkJCWVDU0NvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCQl9DQoN CgkJCWlmICghKGZjc0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCUhUTUxJ bnB1dEVsZW1lbnQgZUNTID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0 RWxlbWVudEJ5SWQoIkNTRmlsdGVyIik7DQoJCQkJZUNTLnNldFZhbHVlKGZj c0ZpbHRlcik7DQoJCQl9DQoJCX0NCgkJaWYgKCEoZmFnZUNvbXBGaWx0ZXIu ZXF1YWxzKCIiKSkgJiYgIShmYWdlRmlsdGVyLmVxdWFscygiIikpKSB7DQoJ CQlTdHJpbmcgYWdlQ29tcE9wdCA9ICJBZ2VDb21wIiArIGZhZ2VDb21wRmls dGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50 IGVBZ2VDb21wT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVs ZW1lbnRCeUlkKGFnZUNvbXBPcHQpOw0KCQkJZUFnZUNvbXBPcHQuc2V0U2Vs ZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZUFnZT0gKEhU TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkFnZUZpbHRl ciIpOw0KCQkJZUFnZS5zZXRWYWx1ZShmYWdlRmlsdGVyKTsNCgkJfQ0KDQoJ CWlmICghKGZiaW9GaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBi aW9PcHQgPSAiQklPIisgZmJpb0ZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7 DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQmlvT3B0ID0gKEhUTUxPcHRpb25F bGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGJpb09wdCk7DQoJCQllQmlv T3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoNCgkJaWYgKGZhY3V0ZUNv bXBGaWx0ZXIhPW51bGwgJiYgIShmYWN1dGVDb21wRmlsdGVyLmVxdWFscygi IikpIA0KCQkJCSYmIGZhY3V0ZUZpbHRlciE9bnVsbCAmJiAhKGZhY3V0ZUZp bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGdyYWRlQ29tcE9wdCA9 ICJBY3RDb21wIiArIGZhY3V0ZUNvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIs IiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1lbnQgZUdyYWRlQ29tcE9wdCA9IChI VE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChncmFkZUNv bXBPcHQpOw0KCQkJZUdyYWRlQ29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsN Cg0KCQkJU3RyaW5nIGdyYWRlT3B0ID0gIkFjdCIrIGZhY3V0ZUZpbHRlci5y ZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlR3Jh ZGVPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5 SWQoZ3JhZGVPcHQpOw0KCQkJZUdyYWRlT3B0LnNldFNlbGVjdGVkKHRydWUp Ow0KCQl9DQoJCWlmIChmTWFjdXRlQ29tcEZpbHRlciE9bnVsbCAmJiAhKGZN YWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikpIA0KCQkJCSYmIGZNYWN1dGVG aWx0ZXIhPW51bGwgJiYgIShmTWFjdXRlRmlsdGVyLmVxdWFscygiIikpKSB7 DQoJCQlTdHJpbmcgZ3JhZGVDb21wT3B0ID0gIm1BY3RDb21wIiArIGZNYWN1 dGVDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsJCQkNCgkJCUhUTUxP cHRpb25FbGVtZW50IGVHcmFkZUNvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1l bnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZ3JhZGVDb21wT3B0KTsJCQkNCgkJ CWVHcmFkZUNvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCVN0cmlu ZyBncmFkZU9wdCA9ICJtQWN0IisgZk1hY3V0ZUZpbHRlci5yZXBsYWNlQWxs KCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlR3JhZGVPcHQgPSAo SFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZ3JhZGVP cHQpOw0KCQkJZUdyYWRlT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoN CgkJaWYgKGZCYWN1dGVDb21wRmlsdGVyIT1udWxsICYmICEoZkJhY3V0ZUNv bXBGaWx0ZXIuZXF1YWxzKCIiKSkgDQoJCQkJJiYgZkJhY3V0ZUZpbHRlciE9 bnVsbCAmJiAhKGZCYWN1dGVGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0 cmluZyBncmFkZUNvbXBPcHQgPSAiYkFjdENvbXAiICsgZkJhY3V0ZUNvbXBG aWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1l bnQgZUdyYWRlQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5n ZXRFbGVtZW50QnlJZChncmFkZUNvbXBPcHQpOw0KCQkJZUdyYWRlQ29tcE9w dC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJU3RyaW5nIGdyYWRlT3B0ID0g ImJBY3QiKyBmQmFjdXRlRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJ CUhUTUxPcHRpb25FbGVtZW50IGVHcmFkZU9wdCA9IChIVE1MT3B0aW9uRWxl bWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChncmFkZU9wdCk7DQoJCQllR3Jh ZGVPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJDQoJCWlmIChmWWFj dXRlQ29tcEZpbHRlciE9bnVsbCAmJiAhKGZZYWN1dGVDb21wRmlsdGVyLmVx dWFscygiIikpIA0KCQkJCSYmIGZZYWN1dGVGaWx0ZXIhPW51bGwgJiYgIShm WWFjdXRlRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgZ3JhZGVD b21wT3B0ID0gInlBY3RDb21wIiArIGZZYWN1dGVDb21wRmlsdGVyLnJlcGxh Y2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVHcmFkZUNv bXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5 SWQoZ3JhZGVDb21wT3B0KTsNCgkJCWVHcmFkZUNvbXBPcHQuc2V0U2VsZWN0 ZWQodHJ1ZSk7DQoNCgkJCVN0cmluZyBncmFkZU9wdCA9ICJ5QWN0IisgZllh Y3V0ZUZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9u RWxlbWVudCBlR3JhZGVPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2Uu Z2V0RWxlbWVudEJ5SWQoZ3JhZGVPcHQpOw0KCQkJZUdyYWRlT3B0LnNldFNl bGVjdGVkKHRydWUpOw0KCQl9DQoJCQ0KCQlpZiAoZk1CYWN1dGVDb21wRmls dGVyIT1udWxsICYmICEoZk1CYWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikp IA0KCQkJCSYmIGZNQmFjdXRlRmlsdGVyIT1udWxsICYmICEoZk1CYWN1dGVG aWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBncmFkZUNvbXBPcHQg PSAibWJBY3RDb21wIiArIGZNQmFjdXRlQ29tcEZpbHRlci5yZXBsYWNlQWxs KCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlR3JhZGVDb21wT3B0 ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGdy YWRlQ29tcE9wdCk7DQoJCQllR3JhZGVDb21wT3B0LnNldFNlbGVjdGVkKHRy dWUpOw0KDQoJCQlTdHJpbmcgZ3JhZGVPcHQgPSAibWJBY3QiKyBmTUJhY3V0 ZUZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxl bWVudCBlR3JhZGVPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0 RWxlbWVudEJ5SWQoZ3JhZGVPcHQpOw0KCQkJZUdyYWRlT3B0LnNldFNlbGVj dGVkKHRydWUpOw0KCQl9DQoJCQ0KCQlpZiAoZmFpckNvbXBGaWx0ZXIhPW51 bGwgJiYgIShmYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSANCgkJCQkmJiBm YWlyd2F5RmlsdGVyIT1udWxsICYmICEoZmFpcndheUZpbHRlci5lcXVhbHMo IiIpKSkgew0KCQkJU3RyaW5nIGFpckNvbXBPcHQgPSAiQWlyQ29tcCIrIGZh aXJDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRp b25FbGVtZW50IGVBaXJDb21wT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw YWdlLmdldEVsZW1lbnRCeUlkKGFpckNvbXBPcHQpOw0KCQkJZUFpckNvbXBP cHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCVN0cmluZyBhaXJ3YXlPcHQg PSAiQWlyIisgZmFpcndheUZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJ CQlIVE1MT3B0aW9uRWxlbWVudCBlQWlyd2F5T3B0ID0gKEhUTUxPcHRpb25F bGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGFpcndheU9wdCk7DQoJCQll QWlyd2F5T3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoJCWlmIChmTWFp ckNvbXBGaWx0ZXIhPW51bGwgJiYgIShmTWFpckNvbXBGaWx0ZXIuZXF1YWxz KCIiKSkgDQoJCQkJJiZmTWFpcndheUZpbHRlciE9bnVsbCAmJiAgIShmTWFp cndheUZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIG1haXJDb21w T3B0ID0gIm1BaXJDb21wIisgZk1haXJDb21wRmlsdGVyLnJlcGxhY2VBbGwo IiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVBaXJDb21wT3B0ID0g KEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKG1haXJD b21wT3B0KTsNCgkJCWVBaXJDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0K DQoJCQlTdHJpbmcgbWFpcndheU9wdCA9ICJtQWlyIisgZk1haXJ3YXlGaWx0 ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1lbnQg ZUFpcndheU9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVt ZW50QnlJZChtYWlyd2F5T3B0KTsNCgkJCWVBaXJ3YXlPcHQuc2V0U2VsZWN0 ZWQodHJ1ZSk7DQoJCX0NCgkJaWYgKGZCYWlyQ29tcEZpbHRlciE9bnVsbCAm JiAhKGZCYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSANCgkJCQkmJiBmQmFp cndheUZpbHRlciE9bnVsbCAmJiAhKGZCYWlyd2F5RmlsdGVyLmVxdWFscygi IikpKSB7DQoJCQlTdHJpbmcgYmFpckNvbXBPcHQgPSAiYkFpckNvbXAiKyBm QmFpckNvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9w dGlvbkVsZW1lbnQgZUFpckNvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQp IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoYmFpckNvbXBPcHQpOw0KCQkJZUFpckNv bXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCVN0cmluZyBiYWlyd2F5 T3B0ID0gImJBaXIiKyBmQmFpcndheUZpbHRlci5yZXBsYWNlQWxsKCIgIiwi Iik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQWlyd2F5T3B0ID0gKEhUTUxP cHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGJhaXJ3YXlPcHQp Ow0KCQkJZUFpcndheU9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCgkJfQ0KCQlp ZiAoZllhaXJDb21wRmlsdGVyIT1udWxsICYmICEoZllhaXJDb21wRmlsdGVy LmVxdWFscygiIikpIA0KCQkJCSYmIGZZYWlyd2F5RmlsdGVyIT1udWxsICYm ICEoZllhaXJ3YXlGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyB5 YWlyQ29tcE9wdCA9ICJ5QWlyQ29tcCIrIGZZYWlyQ29tcEZpbHRlci5yZXBs YWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQWlyQ29t cE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJ ZCh5YWlyQ29tcE9wdCk7DQoJCQllQWlyQ29tcE9wdC5zZXRTZWxlY3RlZCh0 cnVlKTsNCg0KCQkJU3RyaW5nIHlhaXJ3YXlPcHQgPSAieUFpciIrIGZZYWly d2F5RmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25F bGVtZW50IGVBaXJ3YXlPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2Uu Z2V0RWxlbWVudEJ5SWQoeWFpcndheU9wdCk7DQoJCQllQWlyd2F5T3B0LnNl dFNlbGVjdGVkKHRydWUpOw0KCQl9DQoJCWlmIChmTUJhaXJDb21wRmlsdGVy IT1udWxsICYmICEoZk1CYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSANCgkJ CQkmJiBmTUJhaXJ3YXlGaWx0ZXIhPW51bGwgJiYgIShmTUJhaXJ3YXlGaWx0 ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBiYWlyQ29tcE9wdCA9ICJt YkFpckNvbXAiKyBmTUJhaXJDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIi KTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVBaXJDb21wT3B0ID0gKEhUTUxP cHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGJhaXJDb21wT3B0 KTsNCgkJCWVBaXJDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KDQoJCQlT dHJpbmcgYmFpcndheU9wdCA9ICJtYkFpciIrIGZNQmFpcndheUZpbHRlci5y ZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQWly d2F5T3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRC eUlkKGJhaXJ3YXlPcHQpOw0KCQkJZUFpcndheU9wdC5zZXRTZWxlY3RlZCh0 cnVlKTsNCgkJfQ0KCQkNCgkJaWYgKCEoZmN2ckZpbHRlci5lcXVhbHMoIiIp KSkgew0KCQkJU3RyaW5nIGN2ck9wdCA9ICJDVlIiKyBmY3ZyRmlsdGVyLnJl cGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVDVlJP cHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQo Y3ZyT3B0KTsNCgkJCWVDVlJPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0N CgkJaWYgKCEoZm9iRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcg b2JPcHQgPSAiT0IiKyBmb2JGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0K CQkJSFRNTE9wdGlvbkVsZW1lbnQgZU9CT3B0ID0gKEhUTUxPcHRpb25FbGVt ZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKG9iT3B0KTsNCgkJCWVPQk9wdC5z ZXRTZWxlY3RlZCh0cnVlKTsNCgkJfQ0KDQoJCWlmICghKGZjbXZGaWx0ZXIu ZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBjbXZPcHQgPSAiQ01WIisgZmNt dkZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxl bWVudCBlQ01WT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVs ZW1lbnRCeUlkKGNtdk9wdCk7DQoJCQllQ01WT3B0LnNldFNlbGVjdGVkKHRy dWUpOw0KCQl9DQoJCWlmICghKGZpbmZGaWx0ZXIuZXF1YWxzKCIiKSkpIHsN CgkJCVN0cmluZyBpbmZPcHQgPSAiSW5mIisgZmluZkZpbHRlci5yZXBsYWNl QWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlSW5mT3B0ID0g KEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGluZk9w dCk7DQoJCQllSW5mT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoNCgkJ aWYgKCEoZmluZk9yZ0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJaWYgKCEo ZmluZk9yZ0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCQlTdHJpbmcg aW5mT3JnQ29tcE9wdCA9ICJJbmZPcmdDb21wIisgZmluZk9yZ0NvbXBGaWx0 ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJCUhUTUxPcHRpb25FbGVtZW50 IGVJbmZPcmdDb21wT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdl dEVsZW1lbnRCeUlkKGluZk9yZ0NvbXBPcHQpOw0KCQkJCWVJbmZPcmdDb21w T3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQkJfQ0KDQoJCQlpZiAoIShmaW5m T3JnRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJSFRNTElucHV0RWxlbWVu dCBlSW5mT3JnID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVu dEJ5SWQoIkluZk9yZ0ZpbHRlciIpOw0KCQkJCWVJbmZPcmcuc2V0VmFsdWUo ZmluZk9yZ0ZpbHRlcik7DQoJCQl9DQoJCX0NCgkJaWYgKCEoZmJhbEZpbHRl ci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGJhbE9wdCA9ICJCQUwiKyBm YmFsRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25F bGVtZW50IGVCQUxPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0 RWxlbWVudEJ5SWQoYmFsT3B0KTsNCgkJCWVCQUxPcHQuc2V0U2VsZWN0ZWQo dHJ1ZSk7DQoJCX0NCg0KCQlpZiAoIShmYmFsQ2VsbEZpbHRlci5lcXVhbHMo IiIpKSkgew0KCQkJU3RyaW5nIGJhbENlbGxPcHQgPSAiQkFMQ2VsbCIrIGZi YWxDZWxsRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRp b25FbGVtZW50IGVCQUxDZWxsT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw YWdlLmdldEVsZW1lbnRCeUlkKGJhbENlbGxPcHQpOw0KCQkJZUJBTENlbGxP cHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCg0KCQlpZiAoIShmYmFsT3Jn RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlpZiAoIShmYmFsT3JnQ29tcEZp bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCVN0cmluZyBiYWxPcmdDb21wT3B0 ID0gIkJhbE9yZ0NvbXAiKyBmYmFsT3JnQ29tcEZpbHRlci5yZXBsYWNlQWxs KCIgIiwiIik7DQoJCQkJSFRNTE9wdGlvbkVsZW1lbnQgZUJhbE9yZ0NvbXBP cHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQo YmFsT3JnQ29tcE9wdCk7DQoJCQkJZUJhbE9yZ0NvbXBPcHQuc2V0U2VsZWN0 ZWQodHJ1ZSk7DQoJCQl9DQoNCgkJCWlmICghKGZiYWxPcmdGaWx0ZXIuZXF1 YWxzKCIiKSkpIHsNCgkJCQlIVE1MSW5wdXRFbGVtZW50IGVCYWxPcmcgPSAo SFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiQmFsT3Jn RmlsdGVyIik7DQoJCQkJZUJhbE9yZy5zZXRWYWx1ZShmYmFsT3JnRmlsdGVy KTsNCgkJCX0NCgkJfQ0KDQoJCWlmICghKGZmdEZpbHRlci5lcXVhbHMoIiIp KSkgew0KCQkJU3RyaW5nIGZ0T3B0ID0gIkZUIisgZmZ0RmlsdGVyLnJlcGxh Y2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVGVE9wdCA9 IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChmdE9w dCk7DQoJCQllRlRPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJaWYg KCEoZmRGRVYxQ29tcEZpbHRlci5lcXVhbHMoIiIpKSAmJiAhKGZkRkVWMUZp bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGRGRVYxY29tcE9wdCA9 ICJERkVWMUNvbXAiKyBmZEZFVjFDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAi LCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVERkVWMUNvbXBPcHQgPSAo SFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZEZFVjFj b21wT3B0KTsNCgkJCWVERkVWMUNvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7 DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZURGRVYxPSAoSFRNTElucHV0RWxl bWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiREZFVjFGaWx0ZXIiKTsNCgkJ CWVERkVWMS5zZXRWYWx1ZShmZEZFVjFGaWx0ZXIpOw0KCQl9DQoNCgkJaWYg KCEoZmNvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBjb21w T3B0ID0gIkNvbXAiKyBmY29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7 DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQ29tcE9wdCA9IChIVE1MT3B0aW9u RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChjb21wT3B0KTsNCgkJCWVD b21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoNCgkJaWYgKCEoZmNE ZXNjRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlpZiAoIShmY0Rlc2NDb21w RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJU3RyaW5nIGNEZXNjQ29tcE9w dCA9ICJDRGVzY0NvbXAiKyBmY0Rlc2NDb21wRmlsdGVyLnJlcGxhY2VBbGwo IiAiLCIiKTsNCgkJCQlIVE1MT3B0aW9uRWxlbWVudCBlQ0Rlc2NDb21wT3B0 ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGNE ZXNjQ29tcE9wdCk7DQoJCQkJZUNEZXNjQ29tcE9wdC5zZXRTZWxlY3RlZCh0 cnVlKTsNCgkJCX0NCg0KCQkJaWYgKCEoZmNEZXNjRmlsdGVyLmVxdWFscygi IikpKSB7DQoJCQkJSFRNTElucHV0RWxlbWVudCBlQ0Rlc2MgPSAoSFRNTElu cHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiQ0Rlc2NGaWx0ZXIi KTsNCgkJCQllQ0Rlc2Muc2V0VmFsdWUoZmNEZXNjRmlsdGVyKTsNCgkJCX0N CgkJfQ0KDQoNCgkJaWYgKCEoZmFkbUZpbHRlci5lcXVhbHMoIiIpKSkgew0K CQkJU3RyaW5nIGFkbU9wdCA9ICJBZG0iKyBmYWRtRmlsdGVyLnJlcGxhY2VB bGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVBZG1PcHQgPSAo SFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoYWRtT3B0 KTsNCgkJCWVBZG1PcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJaWYg KCEoZnJlakZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIHJlak9w dCA9ICJSZWoiKyBmcmVqRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJ CUhUTUxPcHRpb25FbGVtZW50IGVSZWpPcHQgPSAoSFRNTE9wdGlvbkVsZW1l bnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQocmVqT3B0KTsNCgkJCWVSZWpPcHQu c2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJaWYgKCEoZnJlalRoRmlsdGVy LmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgcmVqVGhPcHQgPSAiUmVqVGgi KyBmcmVqVGhGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9w dGlvbkVsZW1lbnQgZVJlalRoT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw YWdlLmdldEVsZW1lbnRCeUlkKHJlalRoT3B0KTsNCgkJCWVSZWpUaE9wdC5z ZXRTZWxlY3RlZCh0cnVlKTsNCgkJfQ0KDQoNCgkJaWYgKCEoZnJlalRoUmVh c29uc0ZpbHRlci5lcXVhbHMoIiIpKSApIHsNCgkJCWlmICghKGZyZWpUaFJl YXNvbnNDb21wRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJU3RyaW5nIHJl alRoUkNvbXBPcHQgPSAiUmVqVGhSQ29tcCIrIGZyZWpUaFJlYXNvbnNDb21w RmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCQlIVE1MT3B0aW9uRWxl bWVudCBlUmVqVGhSQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFn ZS5nZXRFbGVtZW50QnlJZChyZWpUaFJDb21wT3B0KTsNCgkJCQllUmVqVGhS Q29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCgkJCX0NCg0KCQkJaWYgKCEo ZnJlalRoUmVhc29uc0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCUhUTUxJ bnB1dEVsZW1lbnQgZVRleHQgPSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5n ZXRFbGVtZW50QnlJZCgiUmVqVGhSZWFzb25zRmlsdGVyIik7DQoJCQkJZVRl eHQuc2V0VmFsdWUoZnJlalRoUmVhc29uc0ZpbHRlcik7DQoJCQl9DQoNCgkJ fQ0KCQlpZiAoIShmbzJTYXRDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEo Zm8yU2F0RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgbzJTYXRD b21wT3B0ID0gIk8yU2F0Q29tcCIgKyBmbzJTYXRDb21wRmlsdGVyLnJlcGxh Y2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVPMlNhdENv bXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5 SWQobzJTYXRDb21wT3B0KTsNCgkJCWVPMlNhdENvbXBPcHQuc2V0U2VsZWN0 ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZU8yU2F0ID0gKEhU TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIk8yU2F0Rmls dGVyIik7DQoJCQllTzJTYXQuc2V0VmFsdWUoZm8yU2F0RmlsdGVyKTsNCgkJ fQ0KDQoJfQ0KDQoNCiAgICBwcml2YXRlIFN0cmluZyBnZXRTYW1wbGVzRGVs aW1ldGVkKFN0cmluZyBzYW1wbGVMaXN0KSB7DQogICAgCS8vU3lzdGVtLm91 dC5wcmludGxuKCJnZXRTYW1wbGVzRGVsaW1ldGVkKFN0cmluZyBzYW1wbGVM aXN0KSAgbWV0aG9kIGNhbGxlZCA9PT09PT09PSAiKTsNCgkJU3RyaW5nW10g aXRlbXMgPSBuZXcgU3RyaW5nWzBdOw0KCQlpZiAoc2FtcGxlTGlzdCAhPSBu dWxsKSB7DQoJCQlpdGVtcyA9IHNhbXBsZUxpc3Quc3BsaXQoIlxccysiKTsN CgkJfQ0KDQoJCVN0cmluZyBpdGVtTGlzdCA9ICIiOw0KCQlmb3IgKGludCBp PTA7aTxpdGVtcy5sZW5ndGg7aSsrKSB7DQoJCQlpZiAoaXRlbXNbaV0uZXF1 YWxzKCIiKSkgY29udGludWU7DQoJCQlpdGVtTGlzdCArPSAiLCIgKyBpdGVt c1tpXSArICIgIjsNCgkJfQ0KDQoJCWlmICghaXRlbUxpc3QuZXF1YWxzKCIi KSkNCgkJCWl0ZW1MaXN0ID0gaXRlbUxpc3Quc3Vic3RyaW5nKDEpOw0KDQoJ CXJldHVybiBpdGVtTGlzdDsNCgl9DQoNCiAgICBwcml2YXRlIFN0cmluZyBn ZXRTYW1wbGVzU3RyaW5nKFN0cmluZyBzYW1wbGVMaXN0KSB7DQogICAgCS8v U3lzdGVtLm91dC5wcmludGxuKCJnZXRTYW1wbGVzU3RyaW5nKFN0cmluZyBz YW1wbGVMaXN0KSAgbWV0aG9kIGNhbGxlZCA9PT09PT09PSAiKTsNCgkJU3Ry aW5nW10gaXRlbXMgPSBuZXcgU3RyaW5nWzBdOw0KCQlpZiAoc2FtcGxlTGlz dCAhPSBudWxsKSB7DQoJCQlpdGVtcyA9IHNhbXBsZUxpc3Quc3BsaXQoIlxc cysiKTsNCgkJfQ0KDQoJCVN0cmluZyBpdGVtTGlzdCA9ICIiOw0KCQlmb3Ig KGludCBpPTA7aTxpdGVtcy5sZW5ndGg7aSsrKSB7DQoJCQlpZiAoaXRlbXNb aV0uZXF1YWxzKCIiKSkgY29udGludWU7DQoJCQlpdGVtTGlzdCArPSAiLCci ICsgaXRlbXNbaV0gKyAiJyI7DQoJCX0NCg0KCQlpZiAoIWl0ZW1MaXN0LmVx dWFscygiIikpDQoJCQlpdGVtTGlzdCA9IGl0ZW1MaXN0LnN1YnN0cmluZygx KTsNCg0KCQlyZXR1cm4gaXRlbUxpc3Q7DQoJfQ0KDQoJcHJpdmF0ZSBib29s ZWFuIGdldFFDUmVzdWx0KEx1bmdDRE91dGNvbWUgbHVuZ0NET3V0Y29tZSwg U3RyaW5nIGF0dHJOYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsNCgkJQm9vbGVh biByZXRPYmogPSBuZXcgQm9vbGVhbihmYWxzZSk7DQoJCXRyeSB7DQoJCQkv L1N5c3RlbS5vdXQucHJpbnRsbigiYXR0cjoiK2F0dHJOYW1lKTsNCgkJCQ0K Ly8JCQlmb3IgdGhlIGJsaW5kZWQgZGF0YSBmb3IgdGhlIGludGVybmFsIHVz ZXJzIHRoZSBxYyBydWxlIHNob3VsZCBub3QgYmUgYXBwbGllZCANCgkJCWlm ICgoYXR0ck5hbWUuZXF1YWxzKCJBY3V0ZUdyYWRlRCIpDQoJCQkJCXx8YXR0 ck5hbWUuZXF1YWxzKCJBaXJ3YXlHcmFkZUQiKQ0KCQkJCQl8fGF0dHJOYW1l LmVxdWFscygiT0JEIikNCgkJCQkJfHxhdHRyTmFtZS5lcXVhbHMoIkNWUkQi KQ0KCQkJCQl8fGF0dHJOYW1lLmVxdWFscygiUmVqRCIpDQoJCQkJCXx8YXR0 ck5hbWUuZXF1YWxzKCJSZWpUaEQiKQ0KCQkJCQl8fGF0dHJOYW1lLmVxdWFs cygiUmVqVGhSZWFzb25zRCIpDQoJCQkJCXx8YXR0ck5hbWUuZXF1YWxzKCJE cmF3RCIpDQoJCQkJCXx8YXR0ck5hbWUuZXF1YWxzKCJSZWplY3Rpb25UcmVh dG1lbnRzRCIpDQoJCQkJCXx8YXR0ck5hbWUuZXF1YWxzKCJNQkFjdXRlR3Jh ZGVEIikNCgkJCQkJfHxhdHRyTmFtZS5lcXVhbHMoIk1CQWlyd2F5R3JhZGVE IikNCgkJCQkJfHxhdHRyTmFtZS5lcXVhbHMoIk1CQ29tbWVudHNEIikpIA0K CQkJCQkNCgkJCQkpew0KCQkJCQlpZih0aGlzLmdldFJvbGUoKSE9bnVsbCAm JiAodGhpcy5nZXRSb2xlKCkuZXF1YWxzSWdub3JlQ2FzZShEYXRhRmluZGVy Q29uc3RhbnRzLklOVEVSTkFMX1VTRVIpDQoJCQkJCQkJfHwgdGhpcy5nZXRS b2xlKCkuZXF1YWxzSWdub3JlQ2FzZShEYXRhRmluZGVyQ29uc3RhbnRzLkFE TUlOX1VTRVIpKSl7CQkJCQ0KCQkJCQkJaWYobHVuZ0NET3V0Y29tZS5pc0Rh dGFUb0JlQmxpbmRlZD09dHJ1ZSl7DQoJCQkJCQkgICByZXR1cm4gdHJ1ZTsN CgkJCQkJCX0NCgkJCQkJfQkJCQ0KCQkJfQ0KDQoJCQkNCgkJCQ0KCQkJTWV0 aG9kIG1ldGhvZCA9IGx1bmdDRE91dGNvbWUuZ2V0Q2xhc3MoKS5nZXRNZXRo b2QoYXR0ck5hbWUsIG51bGwpOw0KCQkJcmV0T2JqID0gKEJvb2xlYW4pIG1l dGhvZC5pbnZva2UobHVuZ0NET3V0Y29tZSxudWxsKTsNCg0KCQl9IGNhdGNo IChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZXgpIHsNCgkJCVN5c3RlbS5vdXQu cHJpbnRsbigiYXR0cjoiK2F0dHJOYW1lKTsNCgkJCWV4LnByaW50U3RhY2tU cmFjZSgpOw0KCQl9DQoJCXJldHVybiByZXRPYmouYm9vbGVhblZhbHVlKCk7 DQoNCgl9DQoNCiAgICBwcml2YXRlIFN0cmluZyBnZXRQcmludFZhbChTdHJp bmcgdmFsKSB7DQoJCVN0cmluZyByZXQgPSAodmFsICE9IG51bGwpID8gdmFs IDogIiI7DQoJCWlmIChyZXQubGFzdEluZGV4T2YoIn4iKSAhPSAtMSkgcmV0 ID0gcmV0LnN1YnN0cmluZyhyZXQubGFzdEluZGV4T2YoIn4iKSsxKTsNCgkJ cmV0dXJuIHJldDsNCgl9DQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVTYXZl KCkNCiAgICB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlvbiB7DQoJ CVNpbXBsZURhdGVGb3JtYXQgZm9ybWF0dGVyID0gbmV3IFNpbXBsZURhdGVG b3JtYXQgKCJ5eXl5TU1kZGhobW1zcyIpOw0KCQlTdHJpbmcgcWMxQ2VsbENv bG9yID0gIiNjNmM2YzYiOw0KCQlTdHJpbmcgcWMyQ2VsbENvbG9yID0gIiNm ZmNjMzMiOw0KCSAJU3RyaW5nIG5vdyA9IGZvcm1hdHRlci5mb3JtYXQobmV3 IERhdGUoKSk7DQoNCgkgCVN0cmluZyBmaWxlTmFtZSA9ICBub3cgKyAiTHVu Z0RhdGFRQy54bHMiOw0KCSAJYm9vbGVhbiBzYW1lUGF0ID0gZmFsc2U7DQoJ CQ0KCQlMdW5nQ0RPdXRjb21lIGx1bmdDRE91dGNvbWUgPSBudWxsOw0KCQlM dW5nQ0RPdXRjb21lIHByZXZMdW5nQ0RPdXRjb21lID0gbnVsbDsNCgkJDQoJ CXNldFBhcmFtcygpOw0KCQlTdHJpbmdbXSBhdHRyID0gbmV3IFN0cmluZ1sw XTsNCg0KCQlpZiAoIShmYXR0ckxpc3QuZXF1YWxzKCIiKSkpIGF0dHIgPSBm YXR0ckxpc3Quc3BsaXQoIiwiKTsNCg0KCQlMaXN0IGF0dHJMaXN0ID0gQXJy YXlzLmFzTGlzdChhdHRyKTsNCgkJDQoJCQ0KCQlpbnQgY2VudGVyQ291bnQg PSAwOw0KCQlpbnQgcGF0aWVudENvdW50ID0gMDsNCgkJaW50IGVuY0NvdW50 ID0gMDsNCgkJaW50IHJvd0NvdW50ID0gMDsNCgkJaW50IHJlY0NvdW50ID0g MDsNCgkJU3RyaW5nIGN1ckNlbnRlcklkID0gIiI7DQoJCVN0cmluZyBjdXJQ YXRpZW50SWQgPSAiIjsNCgkJU3RyaW5nIGN1ckVuY0lkID0gIiI7DQoNCgkJ DQoJCVN0cmluZyBjZW50ZXJJZCA9IG51bGw7DQoJCVN0cmluZyBjZW50ZXJO YW1lID0gbnVsbDsNCgkJU3RyaW5nIHBhdGllbnRJZCA9IG51bGw7DQoJCVN0 cmluZyBlbmNJZCA9bnVsbDsNCg0KCQlIVE1MVGFibGVDZWxsRWxlbWVudCBj ZWxsID0gbnVsbDsNCgkJTm9kZSBzcGFuVGFnID1udWxsOw0KCQlIVE1MVGFi bGVSb3dFbGVtZW50IGxhc3RSb3cgPW51bGw7DQoJCUhUTUxUYWJsZVJvd0Vs ZW1lbnQgaGRyUm93ID0gbnVsbDsNCgkJU3RyaW5nIHF1ZXJ5VGV4dCA9IG51 bGw7DQoJCWludCBjb3VudGVyPTA7DQoJCVN0cmluZyBzdHJNaXNzaW5nRGF0 YSA9ICJtaXNzaW5nIjsNCgkJRGF0ZSBibGluZGluZ1N0YXJ0RGF0ZSA9IG51 bGw7DQoJCURhdGUgYmxpbmRpbmdFbmREYXRlID0gbnVsbDsNCgkJDQoJCU5v ZGUgbm87DQoJCUhUTUxUYWJsZUNlbGxFbGVtZW50IG4gOw0KCQlOb2RlTGlz dCB0ZENoaWxkTGlzdCA7DQoJCU5vZGUgdGROb2RlOw0KCQkNCgkJTmFtZWRO b2RlTWFwIG5ubSA7DQoJCVN0cmluZyAgaW5wdXRJZFZhbHVlIDsNCgkJU3Ry aW5nIGlkQXR0cmlidXRlVmFsdWU7DQoJCQ0KCSAJdGhpcy5nZXRDb21tcygp LnJlc3BvbnNlLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9tcy1leGNl bCIpOw0KCQl0aGlzLmdldENvbW1zKCkucmVzcG9uc2Uuc2V0SGVhZGVyKCJD b250ZW50LURpc3Bvc2l0aW9uIiwgImF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIg KyBmaWxlTmFtZSk7DQoNCgkJTGFyZ29ERkV4cG9ydEV4Y2VsZUNSRkhUTUwg cGFnZSA9IG51bGw7DQoJCQlwYWdlID0gKExhcmdvREZFeHBvcnRFeGNlbGVD UkZIVE1MKSBteUNvbW1zLnhtbGNGYWN0b3J5LmNyZWF0ZShMYXJnb0RGRXhw b3J0RXhjZWxlQ1JGSFRNTC5jbGFzcyk7DQoJCQlIVE1MVGFibGVSb3dFbGVt ZW50IHRlbXBsYXRlSGRyUm93ID0gcGFnZS5nZXRFbGVtZW50SGRyUm93KCk7 DQoJCQlIVE1MVGFibGVSb3dFbGVtZW50IHRlbXBsYXRlUm93ID0gcGFnZS5n ZXRFbGVtZW50VGVtcGxhdGVSb3coKTsNCgkJCU5vZGVMaXN0IG5sID0gdGVt cGxhdGVSb3cuZ2V0Q2hpbGROb2RlcygpOwkJCQ0KCQkJTm9kZSB0ZW1wbGF0 ZVRhYmxlID0gdGVtcGxhdGVSb3cuZ2V0UGFyZW50Tm9kZSgpOw0KDQoJCQlm b3IgKGludCBpPW5sLmdldExlbmd0aCgpLTE7aT49MTtpLS0pIHsNCgkJCQlu byA9IG5sLml0ZW0oaSk7DQoJCQkJaWYgKG5vLmdldE5vZGVOYW1lKCkuc3Vi c3RyaW5nKDAsMSkuZXF1YWxzKCIjIikpIGNvbnRpbnVlOw0KDQoJCQkJbiA9 IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShpKTsNCgkJCQlpZihu LmdldElkKCkubGVuZ3RoKCk+MCl7DQoJCQkJCWlmICghKGF0dHJMaXN0LmNv bnRhaW5zKG4uZ2V0SWQoKSkpKXsNCgkJCQkJCW4uZ2V0UGFyZW50Tm9kZSgp LnJlbW92ZUNoaWxkKG4pOw0KCQkJCQl9DQoJCQkJfWVsc2V7DQoJCQkJCXRk Q2hpbGRMaXN0ID0gbi5nZXRDaGlsZE5vZGVzKCk7DQoJCQkJCQ0KCQkJCQlm b3IoaW50IGo9MDtqPHRkQ2hpbGRMaXN0LmdldExlbmd0aCgpO2orKyl7DQoJ CQkJCQl0ZE5vZGUgPSB0ZENoaWxkTGlzdC5pdGVtKGopOw0KCQkJCQkJDQoJ CQkJCQlubm0gPSB0ZE5vZGUuZ2V0QXR0cmlidXRlcygpOw0KCQkJCQkNCgkJ CQkJCWlkQXR0cmlidXRlVmFsdWUgPSBubm0uZ2V0TmFtZWRJdGVtKCJpZCIp LmdldE5vZGVWYWx1ZSgpOw0KCQkJCQkJDQoJCQkJCQlpbnB1dElkVmFsdWUg PSBpZEF0dHJpYnV0ZVZhbHVlLnN1YnN0cmluZygwLGlkQXR0cmlidXRlVmFs dWUubGVuZ3RoKCkpICsiRCI7DQoJCQkJCQlpZiAoIShhdHRyTGlzdC5jb250 YWlucyhpbnB1dElkVmFsdWUpKSkgewkNCgkJCQkJCQluLmdldFBhcmVudE5v ZGUoKS5yZW1vdmVDaGlsZChuKTsNCgkJCQkJCX0NCgkJCQkJfQkJCQkNCgkJ CQl9DQoJCQl9DQoJCQlubCA9IHRlbXBsYXRlSGRyUm93LmdldENoaWxkTm9k ZXMoKTsNCgkJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2kt LSkgew0KCQkJCSBuID0gKEhUTUxUYWJsZUNlbGxFbGVtZW50KSBubC5pdGVt KGkpOw0KCQkJCWlmICghKGF0dHJMaXN0LmNvbnRhaW5zKG4uZ2V0SWQoKS5z dWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3RoKCktMSkpKSkNCgkJCQkJbi5n ZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQl9DQoJCQl0cnl7 DQoJCQlscSA9IG1ha2VRdWVyeSgpOwkJCQkJCQkNCgkJCXNyUm93cyA9IFRy YW5zcGxhbnRVdGlsLmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUo KSk7DQoJCQlmb3IgKExpc3RJdGVyYXRvciBkYXRhPXNyUm93cy5saXN0SXRl cmF0b3IoKTsgZGF0YS5oYXNOZXh0KCk7Y291bnRlcisrKSB7DQoJCQkJbHVu Z0NET3V0Y29tZSA9IChMdW5nQ0RPdXRjb21lKSBkYXRhLm5leHQoKTsNCgkJ CQkNCgkJCQlpZihjb3VudGVyPjApew0KCQkJCQlwcmV2THVuZ0NET3V0Y29t ZSA9IChMdW5nQ0RPdXRjb21lKSBzclJvd3MuZ2V0KGNvdW50ZXItMSk7DQoJ CQkJfQ0KDQoJCQkJIGNlbnRlcklkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiY2VudGVyaWQiKTsNCgkJCQkgY2VudGVyTmFtZSA9IGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImNlbnRlck5hbWUiKTsNCgkJCQkgcGF0aWVudElkID0g bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlkIik7DQoJCQkJIGVu Y0lkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5jb3VudGVyaWQiKTsN CgkJCQkgDQoJCQkJcm93Q291bnQrKzsNCgkJCQlyZWNDb3VudCsrOw0KDQoJ CQkJaWYgKCEoY2VudGVySWQuZXF1YWxzKGN1ckNlbnRlcklkKSkpIHsNCgkJ CQkJY3VyQ2VudGVySWQgPSBjZW50ZXJJZDsNCgkJCQkJY2VudGVyQ291bnQr KzsNCgkJCQl9DQoNCgkJCQlpZiAoIShwYXRpZW50SWQuZXF1YWxzKGN1clBh dGllbnRJZCkpKSB7DQoJCQkJCWN1clBhdGllbnRJZCA9IHBhdGllbnRJZDsN CgkJCQkJcGF0aWVudENvdW50Kys7DQoJCQkJfQ0KDQoJCQkJaWYgKCEoZW5j SWQuZXF1YWxzKGN1ckVuY0lkKSkpIHsNCgkJCQkJY3VyRW5jSWQgPSBlbmNJ ZDsNCgkJCQkJZW5jQ291bnQrKzsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCX0NCgkJCQllbHNlIHNhbWVQYXQgPSB0cnVlOw0KDQovLwkJCQlpZiAo IHJvd0NvdW50ID4gMTIgJiYgKCEoZmV2ZW50LmVxdWFscygic2F2ZSIpKSkg KSB7DQovLwkJCQkJaGRyUm93ID0gKEhUTUxUYWJsZVJvd0VsZW1lbnQpIHRl bXBsYXRlSGRyUm93LmNsb25lTm9kZSh0cnVlKTsNCi8vCQkJCQl0ZW1wbGF0 ZVRhYmxlLmFwcGVuZENoaWxkKGhkclJvdyk7DQovLwkJCQkJcm93Q291bnQg PSAxOw0KLy8JCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJF bmNvdW50ZXJJZEQiKSl7DQoJCQkJICAgcGFnZS5zZXRUZXh0RW5jb3VudGVy KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImVuY291bnRlcmlkIikpOw0KCQkJ CX1lbHNlew0KCQkJCSAgIGlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm IHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXRpZW50aWQiKS5lcXVh bHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlkIikpKXsNCgkJ CQkgICAgICBzYW1lUGF0ID0gdHJ1ZTsNCgkJCQkgICB9ZWxzZXsNCgkJCQkg ICAJIHNhbWVQYXQgPSBmYWxzZTsNCgkJCQkgICB9DQoJCQkJICAgcGFnZS5z ZXRUZXh0RW5jb3VudGVyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBhdGll bnRpZCIpKTsNCgkJCQkgICBwYWdlLnNldFRleHRFbmNvdW50ZXJJZCgiUGF0 aWVudCBJZCIpOw0KCQkJCX0JCQkJDQoNCgkJCQlpZiAoYXR0ckxpc3QuY29u dGFpbnMoIlZpc2l0RGF0ZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgidmlzaXREYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2aXNpdERhdGUi KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQkJCQkJDQoJ CQkJCXBhZ2Uuc2V0VGV4dFZpc2l0RGF0ZShsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJ2aXNpdERhdGUiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIkNvbXB1dGVkVmlzaXRBZ2VEIikpew0KCQkJCQlp ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2Ui KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQkJCQkJDQoJCQkJCXBhZ2Uuc2V0VGV4 dENvbXB1dGVkVmlzaXRBZ2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29t cHV0ZWRWaXNpdEFnZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz dC5jb250YWlucygiUEFYRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNv bWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJwYXhOdW0iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheE51bSIpKSkpew0K CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0 VGV4dFBBWChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhOdW0iKSk7DQoJ CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNQVEQi KSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNwdE51 bSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiY3B0TnVtIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0g ZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0Q1BUKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJ CWlmIChhdHRyTGlzdC5jb250YWlucygiU2V4RCIpKSB7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2V4IikpDQoJCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzZXgi KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlw YWdlLnNldFRleHRTZXgobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2V4Iikp OwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSYWNl RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmFj ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgicmFjZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFJhY2UobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgicmFjZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiVHhUeXBlRCIpKXsNCgkJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50VHlwZSIpKQ0KCQkJCQkJ CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgidHJhbnNwbGFudFR5cGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRUeFR5cGUobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudFR5cGUiKSk7CQkJCQ0KCQkJCX0N Cg0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVHhEYXRlRCIpKXsNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50RGF0 ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudERhdGUiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRUeERh dGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudERhdGUiKSk7 CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlR4SW5k RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFu c3BsYW50SW5kIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50SW5kIikpKSl7DQoJ CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRU ZXh0VHhJbmQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudElu ZCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi RGF5c0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi ZGF5c0Zyb21UeCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dERheXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKTsJ CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWdlRCIp KXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2UiKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImFnZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEFnZShsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJhZ2UiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkNvbXB1dGVkRW5yb2xsQWdlRCIpKXsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wdXRlZEVucm9sbG1lbnRBZ2Ui KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dENvbXB1dGVkRW5yb2xsQWdlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNv bXB1dGVkRW5yb2xsbWVudEFnZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiSXNUeFJlY2lwaWVudEQiKSl7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIpKQ0K CQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dElzVHhSZWNpcGll bnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIpKTsJ CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGFzUmVj ZWl2ZWRGdW5kb3BsaWNhdGlvbkQiKSl7CQ0KCQkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9wbGljYXRpb24iKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9wbGljYXRpb24iKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl eHRIYXNSZWNlaXZlZEZ1bmRvcGxpY2F0aW9uKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9wbGljYXRpb24iKSk7CQ0KCQkJCX0N CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvYkQiKSl7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9iIikpDQoJCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJk b2IiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ CQlwYWdlLnNldFRleHREb2IobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9i IikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJF bnJvbGxEdEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiZW5yb2xsRHQiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImVucm9sbER0IikpKSl7DQoJCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0 RW5yb2xsRHQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5yb2xsRHQiKSk7 CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkFnZUNS RkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdl Q1JGIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJhZ2VDUkYiKSkpKXsNCgkJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRBZ2VDUkYobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdlQ1JGIikpOwkJCQkNCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQYXRpZW50U3RhdHVzRCIpKSB7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0 YXR1cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIpKSkpew0KCQkJCQkJ c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFBh dGllbnRTdGF0dXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0 YXR1cyIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiSW5kaWNhdGlvbkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kaWNhdGlv biIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJ CXBhZ2Uuc2V0VGV4dEluZGljYXRpb24obHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaW5kaWNhdGlvbiIpKTsNCgkJCQkJDQoJCQkJfQ0KDQoJCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJPQkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiT0IiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIk9CIikpKSl7DQoJCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0 T0IobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiT0IiKSk7DQoJCQkJDQoJCQkJ fQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQ1ZSRCIpKSB7DQoJCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiQ1ZSIikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJDVlIiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K CQkJCQlwYWdlLnNldFRleHRDVlIobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi Q1ZSIikpOw0KCQkJCX0NCg0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi QmlvcHN5RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmlvcHN5IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3kiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCaW9w c3kobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5IikpOw0KCQkJCQkN CgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCaW9w c3lEYXRlRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmlvcHN5RGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKSkpew0K CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0 VGV4dEJpb3BzeURhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5 RGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCQ0KCQkJCWlmIChhdHRyTGlz dC5jb250YWlucygiQmlvcHN5Q29tbWVudHNEIikpIHsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lDb21tZW50cyIpKQ0KCQkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCaW9wc3lDb21tZW50 cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lDb21tZW50cyIpKTsJ CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWN1dGVH cmFkZUQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImFjdXRlR3JhZGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFjdXRlR3JhZGUiKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCSAgICBwYWdlLnNl dFRleHRBY3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFjdXRl R3JhZGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi QWlyd2F5R3JhZGVEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJhaXJ3YXlHcmFkZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5n LnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWlyd2F5R3JhZGUi KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCSAg ICBwYWdlLnNldFRleHRBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJhaXJ3YXlHcmFkZSIpKTsNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJNQkFjdXRlR3JhZGVEIikpew0KCQkJCQlpZihw cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVHcmFkZSIpKQ0KCQkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgibWJBY3V0ZUdyYWRlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs c2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0TUJBY3V0ZUdyYWRlKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVHcmFkZSIpKTsNCgkJCQl9 DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJNQkFpcndheUdyYWRlRCIp KXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndh eUdyYWRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndheUdyYWRlIikpKSl7DQoJCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0 TUJBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndh eUdyYWRlIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMo Ik1CQ29tbWVudHNEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9 bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoIm1iQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSkp KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdl LnNldFRleHRNQkNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1i Q29tbWVudHMiKSk7DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh aW5zKCJCT1NEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImJvcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYm9zIikpKSl7DQoJCQkJCQlzYW1lUGF0 ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0Qk9TKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKTsNCgkJCQl9DQoNCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkNNVkQiKSl7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9uIikpDQoJCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJj bXZJbmZlY3Rpb24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQkJfQ0KCQkJCQlwYWdlLnNldFRleHRDTVYobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiY212SW5mZWN0aW9uIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0ckxp c3QuY29udGFpbnMoIkluZkQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0 Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoIm90aGVySW5mZWN0aW9uIikpDQoJCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhl ckluZmVjdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJvdGhlckluZmVjdGlvbiIpKTsNCgkJCQl9DQoJCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJJbmZPcmdhbmlzbXNEIikpew0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNtcyIpKQ0KCQkJCQkJ CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaW5mT3JnYW5pc21zIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7 DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0SW5mT3JnYW5pc21zKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNtcyIpKTsNCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wRCIpKXsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wbGljYXRpb24iKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImNvbXBsaWNhdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dENvbXAobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uIikpOw0KCQkJCX0NCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkNvbXBEZXNjRCIpKXsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wbGljYXRpb25EZXNjIikp DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJjb21wbGljYXRpb25EZXNjIikpKSl7DQoJCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0Q29tcERl c2MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uRGVzYyIp KTsJCQkJDQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJB ZG1pdHRlZEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaG9zcGl0YWxpemF0aW9uIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJob3NwaXRhbGl6YXRp b24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ CQlwYWdlLnNldFRleHRBZG1pdHRlZChsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJob3NwaXRhbGl6YXRpb24iKSk7CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIlN1bW1hcnlDb21tZW50c0QiKSl7DQoJ CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic3VtbWFyeUNvbW1l bnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJzdW1tYXJ5Q29tbWVudHMiKSkpKXsNCgkJCQkJ CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRT dW1tYXJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic3VtbWFy eUNvbW1lbnRzIikpOwkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7CQ0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJkb25vckNNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlRoZXJhcHkobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSk7CQkJCQ0KCQkJCX0NCgkJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdHRGF0ZUQiKSl7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJ Z0dEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnR0RhdGUiKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl eHREb25vckNNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9u b3JDTVZJZ0dEYXRlIikpOwkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkRvbm9yQ01WSWdNRCIpKXsNCgkJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKQ0KCQkJCQkJCS5lcXVh bHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9u b3JDTVZJZ00iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ fQ0KCQkJCQlwYWdlLnNldFRleHREb25vckNNVklnTShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJkb25vckNNVklnTSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlm IChhdHRyTGlzdC5jb250YWlucygiRG9ub3JDTVZJZ01EYXRlRCIpKXsNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTURh dGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdNRGF0ZSIpKSkpew0KCQkJCQkJ c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dERv bm9yQ01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNN VklnTURhdGUiKSk7CQkJCQ0KCQkJCX0NCg0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiUHJlVHhDTVZJZ0dEIikpewkJDQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBy ZVR4Q01WSWdHIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ CX0NCgkJCQkJcGFnZS5zZXRUZXh0UHJlVHhDTVZJZ0cobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSk7DQoJCQkJfQ0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiUHJlVHhDTVZJZ0dEYXRlRCIpKXsJCQ0KCQkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdHRGF0 ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0dEYXRlIikpKSl7DQoJCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0UHJl VHhDTVZJZ0dEYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01W SWdHRGF0ZSIpKTsNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJQcmVUeENNVklnTUQiKSl7CQ0KCQkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpDQoJCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVU eENNVklnTSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9 DQoJCQkJCXBhZ2Uuc2V0VGV4dFByZVR4Q01WSWdNKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoInByZVR4Q01WSWdNIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIlByZVR4Q01WSWdNRGF0ZUQiKSl7CQkNCgkJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVklnTURhdGUi KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNRGF0ZSIpKSkpew0KCQkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFByZVR4 Q01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVkln TURhdGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi QkFMRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YmFsIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJiYWwiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCQUwobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmFsIikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJCQUxEYXRlRCIpKSB7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKQ0KCQkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YmFsRGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9 DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTERhdGUobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYmFsRGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy TGlzdC5jb250YWlucygiQkFMQ3VsdHVyZUQiKSkgew0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENlbGxDdWx0dXJlIikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJiYWxDZWxsQ3VsdHVyZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTEN1bHR1cmUobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsQ2VsbEN1bHR1cmUiKSk7DQoJCQkJ CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTE9yZ2Fu aXNtc0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YmFsT3JnYW5pc21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxPcmdhbmlzbXMiKSkpKXsN CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl dFRleHRCQUxPcmdhbmlzbXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs T3JnYW5pc21zIikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJCQUxJQ0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmFsSUMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbElDIikpKSl7DQoJ CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRU ZXh0QkFMSUMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsSUMiKSk7DQoJ CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTFBD RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs UEMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImJhbFBDIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0g ZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QkFMUEMobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiYmFsUEMiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZ1bmN0aW9uVGVzdEQiKSl7DQoJ CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVuY3Rpb25UZXN0 IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJmdW5jdGlvblRlc3QiKSkpKXsNCgkJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRGdW5jdGlv blRlc3QobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVuY3Rpb25UZXN0Iikp Ow0KCQkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJC ZXN0RkVWMUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmVzdEZFVjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJlc3RGRVYxIikpKSl7DQoJCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0 QmVzdEZFVjEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVzdEZFVjEiKSk7 DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZF VjFEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAh U3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZF VjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRGRVYxKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkRlbHRhRkVWMUQiKSl7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJkZWx0YUZFVjEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsN CgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREZWx0YUZFVjEobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpOw0KCQkJCQkNCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJGVkNEIikpew0KCQkJCQlpZihw cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIpKQ0KCQkJCQkJCS5lcXVh bHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiRlZD IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJ cGFnZS5zZXRUZXh0RlZDKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIp KTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi TzJTYXREIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo Im8yU2F0IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJvMlNhdCIpKSkpew0KCQkJCQkJc2FtZVBh dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dE8yU2F0KGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm8yU2F0IikpOw0KCQkJCQkNCgkJCQl9 DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpEIikpIHsNCgkJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWoiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InJlaiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ CQkJCXBhZ2Uuc2V0VGV4dFJlaihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy ZWoiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVq VGhEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy ZWpUaCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicmVqVGgiKSkpKXsNCgkJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRSZWpUaChsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaCIpKTsNCgkJCQkJDQoJCQkJfQ0K DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJXQkNDb3VudEQiKSl7DQoJ CQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndiY0NvdW50IikhPW51 bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpLnRy aW0oKS5lcXVhbHMoIiIpKXsNCgkJCQkJCWlmKCFTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKS5zdGFydHNXaXRo KCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRXQkNDb3VudChsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKTsNCgkJCQkJCX0NCgkJCQkJ CWlmKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndi Y0NvdW50IikpLnN0YXJ0c1dpdGgoIi0xIikpew0KCQkJCQkJCXBhZ2Uuc2V0 VGV4dFdCQ0NvdW50KCIoIitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmND b3VudCIpKyIpIik7DQoJCQkJCQl9DQoJCQkJCX1lbHNlew0KCQkJCQkJcGFn ZS5zZXRUZXh0V0JDQ291bnQoIiIpOw0KCQkJCQl9DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgid2JjQ291bnQiKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndi Y0NvdW50IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJIR0JDb3VudEQi KSl7DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50 IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZ2JDb3Vu dCIpLnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCQlpZighU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSkuc3Rh cnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRUZXh0SEdCQ291bnQo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7DQoJCQkJCQl9 DQoJCQkJCQlpZihTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJoZ2JDb3VudCIpKS5zdGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCQlw YWdlLnNldFRleHRIR0JDb3VudCgiKCIrbHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaGdiQ291bnQiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsNCgkJ CQkJCXBhZ2Uuc2V0VGV4dEhHQkNvdW50KCIiKTsNCgkJCQkJfQ0KCQkJCQlp ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50IikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJoZ2JDb3VudCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCS8vcGFnZS5zZXRUZXh0SEdCQ291bnQobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7DQoJCQkJfQ0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiUGxhdGVsZXRDb3VudEQiKSl7DQoJCQkJCWlm KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291bnQiKSE9bnVs bCAgJiYgIWx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291bnQi KS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJCQkJaWYoIVN0cmluZy52YWx1 ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291bnQiKSku c3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRUZXh0UGxhdGVs ZXRDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50 IikpOw0KCQkJCQkJfQ0KCQkJCQkJaWYoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRDb3VudCIpKS5zdGFydHNXaXRo KCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRQbGF0ZWxldENvdW50KCIo IitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50IikrIiki KTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCQlwYWdlLnNldFRleHRQ bGF0ZWxldENvdW50KCIiKTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50IikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJwbGF0ZWxldENvdW50IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs c2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJCYW5kc0QiKSl7CQkJCQ0KCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJiYW5kcyIpIT1udWxsICAmJiAhbHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmFuZHMiKS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJCQkJaWYoRG91 YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSku ZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAgICAgcGFnZS5zZXRUZXh0 QmFuZHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSk7DQoJCQkJ CQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIp IT1udWxsICYmIA0KCQkJCQkJCQlEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJiYW5kcyIpKS5kb3VibGVWYWx1ZSgpPDAuMCl7DQoJ CQkJCQkgICBwYWdlLnNldFRleHRCYW5kcygiKCIrbHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYmFuZHMiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsN CgkJCQkJCXBhZ2Uuc2V0VGV4dEJhbmRzKCIiKTsNCgkJCQkJfQ0KCQkJCQlp ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJiYW5kcyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9 CQkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJDcmVhdGluaW5lRCIpKXsJCQkJDQoJCQkJCWlmKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImNyZWF0aW5pbmUiKSE9bnVsbCAgJiYgIWx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKS50cmltKCkuZXF1YWxzKCIiKSl7 IA0KCQkJCQkJaWYoRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1ZSgpPjAuMCl7DQoJCQkJ CSAgICAgICBwYWdlLnNldFRleHRDcmVhdGluaW5lKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImNyZWF0aW5pbmUiKSk7DQoJCQkJCQl9DQoJCQkJCQlpZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikhPW51bGwgJiYg DQoJCQkJCQkJCURvdWJsZS52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImNyZWF0aW5pbmUiKSkuZG91YmxlVmFsdWUoKTwwLjApew0KCQkJCQkJ ICAgcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiKCIrbHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiY3JlYXRpbmluZSIpKyIpIik7DQoJCQkJCQl9DQoJCQkJCX1l bHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiIik7DQoJCQkJ CX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGlu aW5lIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikpKSl7DQoJCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJCX0JCQkJDQoJCQkJfQ0KCQkJCQ0KCQkJCWlm IChhdHRyTGlzdC5jb250YWlucygiQ3JlYXRpbmluZURhdGVEIikpewkJCQkN CgkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZURhdGUobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiY3JlYXRpbmluZURhdGUiKSk7CQkJCQ0KCQkJCQlpZihw cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmVEYXRlIikpDQoJ CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJjcmVhdGluaW5lRGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIkJVTkQiKSl7CQkJCQ0KCQkJCQlpZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJidW4iKSE9bnVsbCAgJiYgIWx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImJ1biIpLnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJ CQlpZihEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi dW4iKSkuZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAgICAgcGFnZS5z ZXRUZXh0Q3JlYXRpbmluZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4i KSk7DQoJCQkJCQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJidW4iKSE9bnVsbCAmJiANCgkJCQkJCQkJRG91YmxlLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpLmRvdWJsZVZhbHVlKCk8MC4w KXsNCgkJCQkJCSAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUoIigiK2x1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpKyIpIik7DQoJCQkJCQl9DQoJCQkJ CX1lbHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiIik7DQoJ CQkJCX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4i KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImJ1biIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl Ow0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkJVTkRhdGVEIikpewkJCQkNCgkJCQkJcGFnZS5zZXRUZXh0 Q3JlYXRpbmluZURhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0 ZSIpKTsJCQkJDQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YnVuRGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0ZSIpKSkpew0KCQkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTENvbW1lbnRzRCIpKXsNCgkJCQkJ cGFnZS5zZXRUZXh0QkFMQ29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmFsQ29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYmFsQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENvbW1lbnRz IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9 DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmZTY29yZUQiKSl7DQoJ CQkJCXBhZ2Uuc2V0VGV4dEluZlNjb3JlKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoImluZmVjdGlvblNjb3JlIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0 Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpDQoJCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZl Y3Rpb25TY29yZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSW5mU2Nv cmVDb21tZW50c0QiKSkgew0KCQkJCQlwYWdlLnNldFRleHRJbmZTY29yZUNv bW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3Jl Q29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaW5mZWN0aW9uU2NvcmVDb21tZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMo U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0 aW9uU2NvcmVDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi SW5mQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0SW5mQ29tbWVu dHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0aW9uQ29tbWVudHMi KSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJp bmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0 aW9uQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNvbW1lbnRzIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wQ29tbWVudHNEIikpIHsN CgkJCQkJcGFnZS5zZXRUZXh0Q29tcENvbW1lbnRzKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImNvbXBDb21tZW50cyIpKTsNCgkJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJjb21wQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNv bXBDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTWVkQ29t bWVudHNEIikpew0KCQkJCQlwYWdlLnNldFRleHRNZWRDb21tZW50cyhsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50cyIpKTsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50cyIpKQ0KCQkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgibWVkQ29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMo IkZuQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0Rm5Db21tZW50 cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvbkNvbW1lbnRzIikp Ow0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9u Q29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9uQ29tbWVudHMiKSkpKXsN CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIlJlamVjdGlvblRyZWF0bWVudHNEIikp ew0KCQkJCQlwYWdlLnNldFRleHRSZWplY3Rpb25UcmVhdG1lbnRzKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlvblRyZWF0bWVudHMiKSk7DQoJ CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uVHJl YXRtZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uVHJlYXRtZW50cyIpKSkp ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJ CQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqVGhSZWFzb25zRCIp KXsNCgkJCQkJcGFnZS5zZXRUZXh0UmVqVGhSZWFzb25zKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInJlalRoUmVhc29ucyIpKTsNCgkJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaFJlYXNvbnMiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InJlalRoUmVhc29ucyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJ bmZUaGVyYXB5RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlRoZXJhcHko bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mVGhlcmFweSIpKTsNCgkJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZUaGVyYXB5IikpDQoJ CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJpbmZUaGVyYXB5IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs c2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJEcmF3RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dERyYXcobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiZHJhdyIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91 dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJkcmF3IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkcmF3IikpKSl7DQoJ CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkNTRCIpKXsNCgkJCQkJcGFnZS5zZXRU ZXh0Q1MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmljYWxTeW1wdG9t cyIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbGlu aWNhbFN5bXB0b21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbGluaWNhbFN5bXB0b21zIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5RCIpKXsNCgkJ CQkJcGFnZS5zZXRUZXh0SW5kVGhlcmFweShsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJpbmRUaGVyYXB5IikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29t ZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImluZFRoZXJhcHkiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHki KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlZTkQiKSl7 DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlZTihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJpbmRUaGVyYXB5WU4iKSk7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweVlOIikpDQoJCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJp bmRUaGVyYXB5WU4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRo ZXJhcHlDb21wRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJh cHlDb21wRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5 Q29tcGxldGlvbkRhdGUiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiaW5kVGhlcmFweUNvbXBsZXRpb25EYXRlIikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJpbmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSkpKXsNCgkJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkluZFRoZXJhcHlOb09mRG9zZXNEIikpew0KCQkJCQlwYWdl LnNldFRleHRJbmRUaGVyYXB5Tm9PZkRvc2VzKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImluZFRoZXJhcHlOb09mRG9zZXMiKSk7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKQ0K CQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKSkpew0KCQkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz dC5jb250YWlucygiSW5kVGhlcmFweUFtdFBlckRvc2VEIikpew0KCQkJCQlw YWdlLnNldFRleHRJbmRUaGVyYXB5QW10UGVyRG9zZShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9zZSIpKTsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9z ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUFtdFBlckRvc2UiKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlDb21tZW50c0QiKSl7DQoJ CQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlDb21tZW50cyhsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSk7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUNvbW1lbnRz IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSkpKXsNCgkJCQkJ CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCQ0KCQkJ CQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGVtYXRvbG9neUQiKSl7 DQoJCQkJCXBhZ2Uuc2V0VGV4dEhlbWF0b2xvZ3kobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiaGVtYXRvbG9neSIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91 dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJoZW1hdG9sb2d5IikpDQoJCQkJCQkJLmVxdWFscyhT dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZW1hdG9s b2d5IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJ CQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcENNVklnR0Qi KSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlY2VwQ01WSWdHKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpOw0KCQkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpDQoJCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy ZWNlcENNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVjZXBD TVZEaWFnRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlY2VwQ01WRGlh Z0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBDTVZEaWFnRGF0 ZSIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNl cENNVkRpYWdEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkRpYWdEYXRlIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcENNVkluZlR5cGVEIikp IHsNCgkJCQkJcGFnZS5zZXRUZXh0UmVjZXBDTVZJbmZUeXBlKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKTsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkluZlR5cGUiKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKSkpew0KCQkJCQkJc2FtZVBh dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiUmVjZXBpZW50Q01WTWV0aG9kRCIpKXsNCgkJCQkJcGFnZS5z ZXRUZXh0UmVjZXBpZW50Q01WTWV0aG9kKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInJlY2VwQ01WTWV0aG9kIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0 Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInJlY2VwQ01WTWV0aG9kIikpDQoJCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNl cENNVk1ldGhvZCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVjZXBp ZW50Q01WT3JnYW5EIikpew0KCQkJCQlwYWdlLnNldFRleHRSZWNlcGllbnRD TVZPcmdhbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVk9yZ2Fu IikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2Vw Q01WT3JnYW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WT3JnYW4iKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdHRCIpKXsNCgkJCQkJcGFn ZS5zZXRUZXh0RG9ub3JDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi ZG9ub3JDTVZJZ0ciKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiZG9ub3JDTVZJZ0ciKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCaW9wc3lIaXN0b3J5RCIpKXsN CgkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9yeShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJiaW9wc3lIaXN0b3J5IikpOw0KCQkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImJpb3BzeUhpc3RvcnkiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImJpb3BzeUhpc3RvcnkiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsN CgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlJl amVjdGlvbkVwaXNvZGVDb21tZW50c0QiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4 dFJlamVjdGlvbkVwaXNvZGVDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJyZWplY3Rpb25FcGlzb2RlQ29tbWVudHMiKSk7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uRXBpc29kZUNvbW1l bnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25FcGlzb2RlQ29tbWVudHMiKSkp KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlJlalRyZWF0bWVudEhpc3RvcnlE Iikpew0KCQkJCQlwYWdlLnNldFRleHRSZWpUcmVhdG1lbnRIaXN0b3J5KGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0bWVudEhpc3RvcnkiKSk7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVHJlYXRt ZW50SGlzdG9yeSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVHJlYXRtZW50SGlzdG9yeSIp KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0K CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU3Rlcm9pZHNEIikpew0KCQkJ CQlwYWdlLnNldFRleHRTdGVyb2lkcyhsdW5nQ0RPdXRjb21lLmdldFN0ZXJv aWRzKCkpOw0KCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50QnlJZCgi U3Rlcm9pZHMiKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVu dCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCWNlbGwuc2V0QXR0 cmlidXRlKCJ0aXRsZSIsZW5jSWQpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0 Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv bWUuZ2V0U3Rlcm9pZHMoKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1 ZU9mKGx1bmdDRE91dGNvbWUuZ2V0U3Rlcm9pZHMoKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxp c3QuY29udGFpbnMoIlByZWRuaXNvbmVEIikpew0KCQkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInByZWRuaXNvbmUiKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBy ZWRuaXNvbmUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ fQ0KCQkJCQlwYWdlLnNldFRleHRQcmVkbmlzb25lKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoInByZWRuaXNvbmUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIlByZWRuaXNvbG9uZUQiKSl7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpDQoJ CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJwcmVkbmlzb2xvbmUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRQcmVkbmlzb2xvbmUo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpOwkJCQkN CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmhTdGVyb2lk c0QiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAh U3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImlu aFN0ZXJvaWRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dEluaFN0ZXJvaWRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluaFN0ZXJv aWRzIikpOwkJCQkNCgkJCQl9DQoNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIkN5Y2xvc3BvcmluRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNv bWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJjeWNsb3Nwb3JpbiIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3ljbG9zcG9y aW4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ CQlwYWdlLnNldFRleHRDeWNsb3Nwb3JpbihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJjeWNsb3Nwb3JpbiIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy TGlzdC5jb250YWlucygiVGFjcm9saW11c0QiKSl7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgidGFjcm9saW11cyIpKQ0KCQkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi dGFjcm9saW11cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFRhY3JvbGltdXMobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgidGFjcm9saW11cyIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlm IChhdHRyTGlzdC5jb250YWlucygiQXphdGhpb3ByaW5lRCIpKXsNCgkJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImF6YXRoaW9wcmluZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEF6YXRoaW9wcmlu ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSk7CQkJ CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIk15Y29waGVu b2xhdGVEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJteWNvcGhlbm9sYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRlIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn ZS5zZXRUZXh0TXljb3BoZW5vbGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJteWNvcGhlbm9sYXRlIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJCYXNpbGl4aW1hYkQiKSl7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImJhc2lsaXhpbWFiIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ CQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QmFzaWxpeGltYWIobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSk7CQkJCQ0KCQkJCX0NCgkJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRhY2x1emltYWJEIikpew0KCQkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRhY2x1emltYWIiKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImRhY2x1emltYWIiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREYWNsdXppbWFiKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRhY2x1emltYWIiKSk7CQkJCQ0KCQkJ CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlNpcm9saW11c0QiKSl7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2lyb2xpbXVz IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJzaXJvbGltdXMiKSkpKXsNCgkJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRTaXJvbGltdXMo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2lyb2xpbXVzIikpOwkJCQkNCgkJ CQl9DQoJCQkJDQoJCQkJLy8gYW50aW1pY3JvYmlhbHMgc3RhcnQNCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIkF6aXRocm9teWNpbkQiKSkgew0KCQkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6aXRocm9teWNpbiIp KQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYXppdGhyb215Y2luIikpKSl7DQoJCQkJCQlzYW1lUGF0 ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QXppdGhyb215 Y2luKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6aXRocm9teWNpbiIpKTsJ CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVE1YLVN1 bGZhRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi dE1YU3VsZmEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInRNWFN1bGZhIikpKSl7DQoJCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0VE1Y U3VsZmEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidE1YU3VsZmEiKSk7CQkJ CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlRvYnJhbXlj aW5EIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0 b2JyYW15Y2luIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0b2JyYW15Y2luIikpKSl7DQoJCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0 VG9icmFteWNpbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0b2JyYW15Y2lu IikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJH YW5jaWNsb3ZpckQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9 bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImdhbmNpY2xvdmlyIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJnYW5jaWNsb3ZpciIp KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBh Z2Uuc2V0VGV4dEdhbmNpY2xvdmlyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImdhbmNpY2xvdmlyIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJWYWxnYW5jeWNsb3ZpckQiKSl7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSkNCgkJCQkJ CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInZhbGdhbmN5Y2xvdmlyIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs c2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0VmFsZ2FuY3ljbG92aXIo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSk7CQkJ CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkl0cmFjb25h em9sZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi aXRyYWNvbmF6b2xlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSkpKXsN CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl dFRleHRJdHJhY29uYXpvbGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXRy YWNvbmF6b2xlIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJGbHVjb25hem9sZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSkNCgkJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZsdWNv bmF6b2xlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGUobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIlZvcmljb25hem9sZUQiKSl7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidm9yaWNvbmF6b2xlIikpDQoJ CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJ2b3JpY29uYXpvbGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRWb3JpY29uYXpvbGUo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidm9yaWNvbmF6b2xlIikpOwkJCQkN CgkJCQl9DQoJCQkJLy8gCWFudGltaWNyb2JpYWxzIGVuZA0KCQkJCQ0KCQkJ CWlmIChhdHRyTGlzdC5jb250YWlucygiT3RoZXJNZWRpY2F0aW9uRCIpKXsN CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52 YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhlck1lZGlj YXRpb24iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoIm90aGVyTWVkaWNhdGlvbiIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dE90aGVyTWVkaWNhdGlvbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhl ck1lZGljYXRpb24iKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIlBBWFdlaWdodDFEIikpew0KCQkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoInBheFdlaWdodDEiKSkNCgkJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheFdl aWdodDEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K CQkJCQlwYWdlLnNldFRleHRQQVhXZWlnaHQxKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInBheFdlaWdodDEiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIlBBWFdlaWdodDJEIikpIHsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhXZWlnaHQyIikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJwYXhXZWlnaHQyIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ CQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0UEFYV2VpZ2h0MihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJwYXhXZWlnaHQyIikpOwkJCQkNCgkJCQl9DQoJCQkJ DQovLwkJCQkgdG8gc2V0IHRvb2x0aXANCgkJCQl0ZW1wbGF0ZVJvdyA9IHBh Z2UuZ2V0RWxlbWVudFRlbXBsYXRlUm93KCk7CQkJDQoJCQkJdGVtcGxhdGVS b3cuc2V0QXR0cmlidXRlKCJ0aXRsZSIsZW5jSWQpOw0KCQkJCQ0KCQkJCWlm ICghKGZldmVudC5lcXVhbHMoIiIpKSkgew0KCQkJCQlmb3IgKGludCBpPTA7 aTxmUUMxLmxlbmd0aDtpKyspIHsNCgkJCQkJCWlmICghZ2V0UUNSZXN1bHQo bHVuZ0NET3V0Y29tZSwicWMiK2ZRQzFbaV0pKSB7DQoJCQkJCQkJc3BhblRh ZyA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFDMVtpXSk7DQoJCQkJCQkJaWYo WE1MQ1V0aWwuZ2V0Rmlyc3RUZXh0KHNwYW5UYWcpLmdldERhdGEoKS50cmlt KCkubGVuZ3RoKCk+MCl7DQoJCQkJCQkJCXFjMUNlbGxDb2xvciA9ICIjRkY2 NjAwIjsJDQoJCQkJCQkJCXN0ck1pc3NpbmdEYXRhID0gIiAiOw0KCQkJCQkJ CX1lbHNlew0KCQkJCQkJCQlxYzFDZWxsQ29sb3IgPSAiI0ZGMzMzMyI7DQoJ CQkJCQkJCXN0ck1pc3NpbmdEYXRhID0gIiBtaXNzaW5nICI7DQoJCQkJCQkJ fQ0KCQkJCQkJCVhNTENVdGlsLmdldEZpcnN0VGV4dChzcGFuVGFnKS5zZXRE YXRhKFhNTENVdGlsLmdldEZpcnN0VGV4dChzcGFuVGFnKS5nZXREYXRhKCku dHJpbSgpK3N0ck1pc3NpbmdEYXRhKTsNCgkJCQkJCQljZWxsID0gKEhUTUxU YWJsZUNlbGxFbGVtZW50KSBzcGFuVGFnLmdldFBhcmVudE5vZGUoKTsNCgkJ CQkJCQljZWxsLnNldEJnQ29sb3IocWMxQ2VsbENvbG9yKTsNCgkJCQkJCX0N CgkJCQkJfQ0KDQoJCQkJCWZvciAoaW50IGk9MDtpPGZRQzIubGVuZ3RoO2kr Kykgew0KCQkJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJx YzIiK2ZRQzJbaV0pKSB7DQoJCQkJCQkJc3BhblRhZyA9IHBhZ2UuZ2V0RWxl bWVudEJ5SWQoZlFDMltpXSk7DQoJCQkJCQkJY2VsbCA9IChIVE1MVGFibGVD ZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCQkJ Y2VsbC5zZXRCZ0NvbG9yKHFjMkNlbGxDb2xvcik7DQoJCQkJCQl9DQoJCQkJ CX0NCgkJCQl9DQoJCQkJDQoJCQkJdGVtcGxhdGVUYWJsZS5hcHBlbmRDaGls ZCh0ZW1wbGF0ZVJvdy5jbG9uZU5vZGUodHJ1ZSkpOw0KCQkJCWlmIChzYW1l UGF0KSB7DQoJCQkJCWxhc3RSb3cgPSAoSFRNTFRhYmxlUm93RWxlbWVudCkg dGVtcGxhdGVUYWJsZS5nZXRMYXN0Q2hpbGQoKTsNCgkJCQkJbGFzdFJvdy5z ZXRCZ0NvbG9yKCIjZmZmZjk5Iik7DQoJCQkJCWxhc3RSb3cuZ2V0UGFyZW50 Tm9kZSgpLnJlbW92ZUNoaWxkKGxhc3RSb3cpOw0KCQkJCQlyb3dDb3VudC0t Ow0KCQkJCQlyZWNDb3VudC0tOw0KCQkJCX0NCg0KCQkJCWZvciAoaW50IGk9 MDtpPGZRQzEubGVuZ3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5n ZXRFbGVtZW50QnlJZChmUUMxW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFi bGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJ CWNlbGwuc2V0QmdDb2xvcigiIik7DQoJCQkJfQ0KCQkJCWZvciAoaW50IGk9 MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5n ZXRFbGVtZW50QnlJZChmUUMyW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFi bGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJ CWNlbGwuc2V0QmdDb2xvcigiIik7DQoJCQkJfQ0KCQkJCS8vIGdhcmJhZ2Ug Y29sbGVjdGlvbiBiZWdpbg0KCQkJCWx1bmdDRE91dGNvbWUgPSAgICBudWxs Ow0KCQkJCWVuY0lkID0gbnVsbDsNCgkJCQlwYXRpZW50SWQgPSBudWxsOw0K CQkJCWNlbnRlck5hbWUgPSBudWxsOw0KCQkJCWNlbnRlcklkID0gbnVsbDsN CgkJCQlpZihjb3VudGVyJTQwMD09MCl7DQoJCQkJICAgUnVudGltZS5nZXRS dW50aW1lKCkuZ2MoKTsNCgkJCQl9DQoJCQkJLy8gZ2FyYmFnZSBjb2xsZWN0 aW9uIGVuZCANCgkJCX0NCgkJCXRlbXBsYXRlVGFibGUucmVtb3ZlQ2hpbGQo dGVtcGxhdGVSb3cpOw0KCQkJfWNhdGNoKEV4Y2VwdGlvbiBlKXsNCgkJCQll LnByaW50U3RhY2tUcmFjZSgpOwkJCQkNCgkJCX0JCQ0KCQlyZXR1cm4gcGFn ZTsNCn0NCg0KDQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVFeHBvcnRBbmFs eXNpcygpDQogICAgdGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24g ew0KCQlMYXJnb0RGRXhwb3J0QW5hbHlzaXNlQ1JGSFRNTCBwYWdlID0gbnVs bDsNCgkJDQoNCgkJU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXR0ZXIgPSBuZXcg U2ltcGxlRGF0ZUZvcm1hdCAoInl5eXlNTWRkaGhtbXNzIik7DQoJCVN0cmlu ZyBxYzFDZWxsQ29sb3IgPSAiI2M2YzZjNiI7DQoJCVN0cmluZyBxYzJDZWxs Q29sb3IgPSAiI2ZmY2MzMyI7DQoJIAlTdHJpbmcgbm93ID0gZm9ybWF0dGVy LmZvcm1hdChuZXcgRGF0ZSgpKTsNCg0KCSAJU3RyaW5nIGZpbGVOYW1lID0g IG5vdyArICJMdW5nRGF0YVFDLnhscyI7DQoJIAlib29sZWFuIHNhbWVQYXQg PSBmYWxzZTsNCgkJDQoJCUx1bmdDRE91dGNvbWUgbHVuZ0NET3V0Y29tZSA9 IG51bGw7DQoJCUx1bmdDRE91dGNvbWUgcHJldkx1bmdDRE91dGNvbWUgPSBu dWxsOw0KCQkNCgkJc2V0UGFyYW1zKCk7DQoJCQ0KDQoJCWlmKGZhdHRyTGlz dC5pbmRleE9mKCJCaW9wc3lIaXN0b3J5RCIpIT0tMSl7DQoJCQlmYXR0ckxp c3QrPSIsQmlvcHN5SGlzdG9yeUEwRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlv cHN5SGlzdG9yeUExRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9y eUEyRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUEzRCI7DQoJ CQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUE0RCI7DQoJCQlmYXR0ckxp c3QrPSIsQmlvcHN5SGlzdG9yeU9CREQiOw0KCQkJZmF0dHJMaXN0Kz0iLEJp b3BzeUhpc3RvcnlCT1NEIjsNCgkJCWZhdHRyTGlzdCs9IixCaW9wc3lIaXN0 b3J5Q1ZSRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUIwRCI7 DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUIxRCI7DQoJCQlmYXR0 ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUIyRCI7DQoJCQlmYXR0ckxpc3QrPSIs QmlvcHN5SGlzdG9yeUIzRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlz dG9yeUI0RCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUJ4RCI7 DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUNvbW1lbnRzRCI7DQoJ ICAgfQ0KCQkNCgkJaWYoZmF0dHJMaXN0LmluZGV4T2YoIlJlalRyZWF0bWVu dEhpc3RvcnlEIikhPS0xKXsNCgkJCWZhdHRyTGlzdCs9IixSZWpUcmVhdG1l bnRIaXN0b3J5VHJlYXRtZW50c0QiOw0KCQkJZmF0dHJMaXN0Kz0iLFJlalRy ZWF0bWVudEhpc3RvcnlOb09mVHJlYXRtZW50RCI7DQoJCQlmYXR0ckxpc3Qr PSIsUmVqVHJlYXRtZW50SGlzdG9yeUVuZERhdGVEIjsNCgkJCQ0KCQl9DQoJ CQ0KCQlpZiAoZmF0dHJMaXN0LmluZGV4T2YoIlN0ZXJvaWRzRCIpIT0tMSl7 DQoJCQlmYXR0ckxpc3QrPSIsU3Rlcm9pZHNVbml0c0QiOw0KCQl9DQoJCWlm IChmYXR0ckxpc3QuaW5kZXhPZigiUHJlZG5pc29sb25lRCIpIT0tMSl7DQoJ CQlmYXR0ckxpc3QrPSIsUHJlZG5pc29sb25lVW5pdHNEIjsNCgkJfQkNCgkJ aWYgKGZhdHRyTGlzdC5pbmRleE9mKCJQcmVkbmlzb25lRCIpIT0tMSl7DQoJ CQlmYXR0ckxpc3QrPSIsUHJlZG5pc29uZVVuaXRzRCI7DQoJCX0NCgkJaWYg KGZhdHRyTGlzdC5pbmRleE9mKCJJbmhTdGVyb2lkc0QiKSE9LTEpew0KCQkJ ZmF0dHJMaXN0Kz0iLEluaFN0ZXJvaWRzVW5pdHNEIjsNCgkJfQ0KCQlpZiAo ZmF0dHJMaXN0LmluZGV4T2YoIkN5Y2xvc3BvcmluRCIpIT0tMSl7DQoJCQlm YXR0ckxpc3QrPSIsQ3ljbG9zcG9yaW5Vbml0c0QiOw0KCQl9DQoJCWlmIChm YXR0ckxpc3QuaW5kZXhPZigiVGFjcm9saW11c0QiKSE9LTEpew0KCQkJZmF0 dHJMaXN0Kz0iLFRhY3JvbGltdXNVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0 ckxpc3QuaW5kZXhPZigiQXphdGhpb3ByaW5lRCIpIT0tMSl7DQoJCQlmYXR0 ckxpc3QrPSIsQXphdGhpb3ByaW5lVW5pdHNEIjsNCgkJfQ0KCQlpZiAoZmF0 dHJMaXN0LmluZGV4T2YoIk15Y29waGVub2xhdGVEIikhPS0xKXsNCgkJCWZh dHRyTGlzdCs9IixNeWNvcGhlbm9sYXRlVW5pdHNEIjsNCgkJfQ0KCQlpZiAo ZmF0dHJMaXN0LmluZGV4T2YoIkJhc2lsaXhpbWFiRCIpIT0tMSl7DQoJCQlm YXR0ckxpc3QrPSIsQmFzaWxpeGltYWJVbml0c0QiOw0KCQl9DQoJCWlmIChm YXR0ckxpc3QuaW5kZXhPZigiRGFjbHV6aW1hYkQiKSE9LTEpew0KCQkJZmF0 dHJMaXN0Kz0iLERhY2x1emltYWJVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0 ckxpc3QuaW5kZXhPZigiU2lyb2xpbXVzRCIpIT0tMSl7DQoJCQlmYXR0ckxp c3QrPSIsU2lyb2xpbXVzVW5pdHNEIjsNCgkJfQ0KCQlpZiAoZmF0dHJMaXN0 LmluZGV4T2YoIkF6aXRocm9teWNpbkQiKSE9LTEpew0KCQkJZmF0dHJMaXN0 Kz0iLEF6aXRocm9teWNpblVuaXRzRCI7DQoJCX0NCgkJaWYgKGZhdHRyTGlz dC5pbmRleE9mKCJUTVgtU3VsZmFEIikhPS0xKXsNCgkJCWZhdHRyTGlzdCs9 IixUTVgtU3VsZmFVbml0c0QiOw0KCQl9DQoJCQ0KCQlpZiAoZmF0dHJMaXN0 LmluZGV4T2YoIkdhbmNpY2xvdmlyRCIpIT0tMSl7DQoJCQlmYXR0ckxpc3Qr PSIsR2FuY2ljbG92aXJVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0ckxpc3Qu aW5kZXhPZigiVG9icmFteWNpbkQiKSE9LTEpew0KCQkJZmF0dHJMaXN0Kz0i LFRvYnJhbXljaW5Vbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0ckxpc3QuaW5k ZXhPZigiVmFsZ2FuY3ljbG92aXJEIikhPS0xKXsNCgkJCWZhdHRyTGlzdCs9 IixWYWxnYW5jeWNsb3ZpclVuaXRzRCI7DQoJCX0NCgkJaWYgKGZhdHRyTGlz dC5pbmRleE9mKCJJdHJhY29uYXpvbGVEIikhPS0xKXsNCgkJCWZhdHRyTGlz dCs9IixJdHJhY29uYXpvbGVVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0ckxp c3QuaW5kZXhPZigiRmx1Y29uYXpvbGVEIikhPS0xKXsNCgkJCWZhdHRyTGlz dCs9IixGbHVjb25hem9sZVVuaXRzRCI7DQoJCX0NCgkJaWYgKGZhdHRyTGlz dC5pbmRleE9mKCJWb3JpY29uYXpvbGVEIikhPS0xKXsNCgkJCWZhdHRyTGlz dCs9IixWb3JpY29uYXpvbGVVbml0c0QiOw0KCQl9DQoJCQkJDQoJCQ0KCQlT dHJpbmdbXSBhdHRyID0gbmV3IFN0cmluZ1swXTsNCgkJaWYgKCEoZmF0dHJM aXN0LmVxdWFscygiIikpKSBhdHRyID0gZmF0dHJMaXN0LnNwbGl0KCIsIik7 DQoJCVN5c3RlbS5vdXQucHJpbnRsbigiZmF0dHJMaXN0ICA9PSIrZmF0dHJM aXN0KTsNCgkJDQoJCUxpc3QgYXR0ckxpc3QgPSBBcnJheXMuYXNMaXN0KGF0 dHIpOw0KCQkNCgkJDQoJCWludCBjZW50ZXJDb3VudCA9IDA7DQoJCWludCBw YXRpZW50Q291bnQgPSAwOw0KCQlpbnQgZW5jQ291bnQgPSAwOw0KCQlpbnQg cm93Q291bnQgPSAwOw0KCQlpbnQgcmVjQ291bnQgPSAwOw0KCQlTdHJpbmcg Y3VyQ2VudGVySWQgPSAiIjsNCgkJU3RyaW5nIGN1clBhdGllbnRJZCA9ICIi Ow0KCQlTdHJpbmcgY3VyRW5jSWQgPSAiIjsNCg0KCQkNCgkJU3RyaW5nIGNl bnRlcklkID0gbnVsbDsNCgkJU3RyaW5nIGNlbnRlck5hbWUgPSBudWxsOw0K CQlTdHJpbmcgcGF0aWVudElkID0gbnVsbDsNCgkJU3RyaW5nIGVuY0lkID1u dWxsOw0KDQoJCUhUTUxUYWJsZUNlbGxFbGVtZW50IGNlbGwgPSBudWxsOw0K CQlOb2RlIHNwYW5UYWcgPW51bGw7DQoJCUhUTUxUYWJsZVJvd0VsZW1lbnQg bGFzdFJvdyA9bnVsbDsNCgkJSFRNTFRhYmxlUm93RWxlbWVudCBoZHJSb3cg PSBudWxsOw0KCQlTdHJpbmcgcXVlcnlUZXh0ID0gbnVsbDsNCgkJaW50IGNv dW50ZXI9MDsNCgkJU3RyaW5nIHN0ck1pc3NpbmdEYXRhID0gIm1pc3Npbmci Ow0KCQlEYXRlIGJsaW5kaW5nU3RhcnREYXRlID0gbnVsbDsNCgkJRGF0ZSBi bGluZGluZ0VuZERhdGUgPSBudWxsOw0KCQkNCgkJTm9kZSBubzsNCgkJSFRN TFRhYmxlQ2VsbEVsZW1lbnQgbiA7DQoJCU5vZGVMaXN0IHRkQ2hpbGRMaXN0 IDsNCgkJTm9kZSB0ZE5vZGU7DQoJCQ0KCQlOYW1lZE5vZGVNYXAgbm5tIDsN CgkJU3RyaW5nICBpbnB1dElkVmFsdWUgOw0KCQlTdHJpbmcgaWRBdHRyaWJ1 dGVWYWx1ZTsNCgkJQXJyYXlMaXN0IGFsOw0KCQlTdHJpbmdbXSAgQ09MVU1O X1RPX0JFX1NQTElUID17IkJpb3BzeUhpc3RvcnkifTsNCgkgCXRoaXMuZ2V0 Q29tbXMoKS5yZXNwb25zZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24v bXMtZXhjZWwiKTsNCgkJdGhpcy5nZXRDb21tcygpLnJlc3BvbnNlLnNldEhl YWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsICJhdHRhY2htZW50OyBmaWxl bmFtZT0iICsgZmlsZU5hbWUpOw0KCQkNCgkJCXBhZ2UgPSAoTGFyZ29ERkV4 cG9ydEFuYWx5c2lzZUNSRkhUTUwpIG15Q29tbXMueG1sY0ZhY3RvcnkuY3Jl YXRlKExhcmdvREZFeHBvcnRBbmFseXNpc2VDUkZIVE1MLmNsYXNzKTsNCgkJ CUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVtcGxhdGVIZHJSb3cgPSBwYWdlLmdl dEVsZW1lbnRIZHJSb3coKTsNCgkJCUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVt cGxhdGVSb3cgPSBwYWdlLmdldEVsZW1lbnRUZW1wbGF0ZVJvdygpOw0KCQkJ Tm9kZUxpc3QgbmwgPSB0ZW1wbGF0ZVJvdy5nZXRDaGlsZE5vZGVzKCk7CQkJ DQoJCQlOb2RlIHRlbXBsYXRlVGFibGUgPSB0ZW1wbGF0ZVJvdy5nZXRQYXJl bnROb2RlKCk7DQoJCQkNCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiYXR0ckxp c3QgIithdHRyTGlzdCk7DQoNCgkJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3Ro KCktMTtpPj0xO2ktLSkgew0KCQkJCW5vID0gbmwuaXRlbShpKTsNCgkJCQlp ZiAobm8uZ2V0Tm9kZU5hbWUoKS5zdWJzdHJpbmcoMCwxKS5lcXVhbHMoIiMi KSkgY29udGludWU7DQoNCgkJCQluID0gKEhUTUxUYWJsZUNlbGxFbGVtZW50 KSBubC5pdGVtKGkpOw0KCQkJCWlmKG4uZ2V0SWQoKS5sZW5ndGgoKT4wKXsN CgkJCQkJaWYgKCEoYXR0ckxpc3QuY29udGFpbnMobi5nZXRJZCgpKSkpew0K CQkJCQkJbi5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQkJ CX0NCgkJCQl9ZWxzZXsNCgkJCQkJdGRDaGlsZExpc3QgPSBuLmdldENoaWxk Tm9kZXMoKTsJCQkJCQ0KCQkJCQlmb3IoaW50IGo9MDtqPHRkQ2hpbGRMaXN0 LmdldExlbmd0aCgpO2orKyl7DQoJCQkJCQl0ZE5vZGUgPSB0ZENoaWxkTGlz dC5pdGVtKGopOw0KCQkJCQkJDQoJCQkJCQlubm0gPSB0ZE5vZGUuZ2V0QXR0 cmlidXRlcygpOw0KCQkJCQkNCgkJCQkJCWlkQXR0cmlidXRlVmFsdWUgPSBu bm0uZ2V0TmFtZWRJdGVtKCJpZCIpLmdldE5vZGVWYWx1ZSgpOw0KCQkJCQkJ DQoJCQkJCQlpbnB1dElkVmFsdWUgPSBpZEF0dHJpYnV0ZVZhbHVlLnN1YnN0 cmluZygwLGlkQXR0cmlidXRlVmFsdWUubGVuZ3RoKCkpICsiRCI7DQoJCQkJ CQlpZiAoIShhdHRyTGlzdC5jb250YWlucyhpbnB1dElkVmFsdWUpKSkgew0K CQkJCQkJCSAgIG4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOw0K CQkJCQkJfQ0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCX0NCgkJCW5sID0gdGVt cGxhdGVIZHJSb3cuZ2V0Q2hpbGROb2RlcygpOw0KCQkJZm9yIChpbnQgaT1u bC5nZXRMZW5ndGgoKS0xO2k+PTE7aS0tKSB7DQoJCQkJIG4gPSAoSFRNTFRh YmxlQ2VsbEVsZW1lbnQpIG5sLml0ZW0oaSk7DQoJCQkJaWYgKCEoYXR0ckxp c3QuY29udGFpbnMobi5nZXRJZCgpLnN1YnN0cmluZygwLG4uZ2V0SWQoKS5s ZW5ndGgoKS0xKSkpKXsNCgkJCQkgICBuLmdldFBhcmVudE5vZGUoKS5yZW1v dmVDaGlsZChuKTsNCgkJCQl9DQoJCQl9DQoJCQl0cnl7DQoJCQlscSA9IG1h a2VRdWVyeSgpOwkJCQkJCQkNCgkJCXNyUm93cyA9IFRyYW5zcGxhbnRVdGls LmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUoKSk7DQoJCQlmb3Ig KExpc3RJdGVyYXRvciBkYXRhPXNyUm93cy5saXN0SXRlcmF0b3IoKTsgZGF0 YS5oYXNOZXh0KCk7Y291bnRlcisrKSB7DQoJCQkJbHVuZ0NET3V0Y29tZSA9 IChMdW5nQ0RPdXRjb21lKSBkYXRhLm5leHQoKTsNCgkJCQkNCgkJCQlpZihj b3VudGVyPjApew0KCQkJCQlwcmV2THVuZ0NET3V0Y29tZSA9IChMdW5nQ0RP dXRjb21lKSBzclJvd3MuZ2V0KGNvdW50ZXItMSk7DQoJCQkJfQ0KDQoJCQkJ IGNlbnRlcklkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2VudGVyaWQi KTsNCgkJCQkgY2VudGVyTmFtZSA9IGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImNlbnRlck5hbWUiKTsNCgkJCQkgcGF0aWVudElkID0gbHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgicGF0aWVudGlkIik7DQoJCQkJIGVuY0lkID0gbHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiZW5jb3VudGVyaWQiKTsNCgkJCQkgDQoJCQkJ cm93Q291bnQrKzsNCgkJCQlyZWNDb3VudCsrOw0KDQoJCQkJaWYgKCEoY2Vu dGVySWQuZXF1YWxzKGN1ckNlbnRlcklkKSkpIHsNCgkJCQkJY3VyQ2VudGVy SWQgPSBjZW50ZXJJZDsNCgkJCQkJY2VudGVyQ291bnQrKzsNCgkJCQl9DQoN CgkJCQlpZiAoIShwYXRpZW50SWQuZXF1YWxzKGN1clBhdGllbnRJZCkpKSB7 DQoJCQkJCWN1clBhdGllbnRJZCA9IHBhdGllbnRJZDsNCgkJCQkJcGF0aWVu dENvdW50Kys7DQoJCQkJfQ0KDQoJCQkJaWYgKCEoZW5jSWQuZXF1YWxzKGN1 ckVuY0lkKSkpIHsNCgkJCQkJY3VyRW5jSWQgPSBlbmNJZDsNCgkJCQkJZW5j Q291bnQrKzsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQll bHNlIHNhbWVQYXQgPSB0cnVlOw0KDQovLwkJCQlpZiAoIHJvd0NvdW50ID4g MTIgJiYgKCEoZmV2ZW50LmVxdWFscygic2F2ZSIpKSkgKSB7DQovLwkJCQkJ aGRyUm93ID0gKEhUTUxUYWJsZVJvd0VsZW1lbnQpIHRlbXBsYXRlSGRyUm93 LmNsb25lTm9kZSh0cnVlKTsNCi8vCQkJCQl0ZW1wbGF0ZVRhYmxlLmFwcGVu ZENoaWxkKGhkclJvdyk7DQovLwkJCQkJcm93Q291bnQgPSAxOw0KLy8JCQkJ fQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJFbmNvdW50ZXJJZEQi KSl7DQoJCQkJCSAgIHBhZ2Uuc2V0VGV4dEVuY291bnRlcihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJlbmNvdW50ZXJpZCIpKTsNCgkJCQkJfWVsc2V7DQoJ CQkJCSAgIGlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmIHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJwYXRpZW50aWQiKS5lcXVhbHMobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlkIikpKXsNCgkJCQkJICAgICAg c2FtZVBhdCA9IHRydWU7DQoJCQkJCSAgIH1lbHNlew0KCQkJCQkgICAJIHNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJICAgfQ0KCQkJCQkgICBwYWdlLnNldFRl eHRFbmNvdW50ZXIobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlk IikpOw0KCQkJCQkgICBwYWdlLnNldFRleHRFbmNvdW50ZXJJZCgiUGF0aWVu dCBJZCIpOw0KCQkJCQl9DQoNCg0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu cygiVmlzaXREYXRlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJ2aXNpdERhdGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInZpc2l0RGF0ZSIpKSkp ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQkNCgkJCQkJ cGFnZS5zZXRUZXh0VmlzaXREYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InZpc2l0RGF0ZSIpKTsJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkNvbXB1dGVkVmlzaXRBZ2VEIikpew0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkpKXsNCgkJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQkJfQkJCQkJDQoJCQkJCXBhZ2Uuc2V0VGV4dENvbXB1 dGVkVmlzaXRBZ2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcHV0ZWRW aXNpdEFnZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiUmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRCIpKXsNCgkJCQkJcGFn ZS5zZXRUZXh0UmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInJlamVjdGlvbkVwaXNvZGVDb21tZW50cyIpKTsNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25FcGlz b2RlQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlvbkVwaXNvZGVDb21t ZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ CQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUEFYRCIpKXsNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhOdW0iKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInBheE51bSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFBBWChsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJwYXhOdW0iKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIkNQVEQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3B0TnVtIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn ZS5zZXRUZXh0Q1BUKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIp KTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi U2V4RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi c2V4IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJzZXgiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRTZXgobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgic2V4IikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJSYWNlRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKSkp ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uu c2V0VGV4dFJhY2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKTsJ CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVHhUeXBl RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFu c3BsYW50VHlwZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudFR5cGUiKSkpKXsN CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl dFRleHRUeFR5cGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFu dFR5cGUiKSk7CQkJCQ0KCQkJCX0NCg0KCQkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiVHhEYXRlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJ0cmFuc3BsYW50RGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFu dERhdGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K CQkJCQlwYWdlLnNldFRleHRUeERhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgidHJhbnNwbGFudERhdGUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIlR4SW5kRCIpKXsNCgkJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50SW5kIikpDQoJCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0 cmFuc3BsYW50SW5kIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ CQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0VHhJbmQobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgidHJhbnNwbGFudEluZCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlm IChhdHRyTGlzdC5jb250YWlucygiRGF5c0QiKSl7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKQ0KCQkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi ZGF5c0Zyb21UeCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dERheXMobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiZGF5c0Zyb21UeCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy TGlzdC5jb250YWlucygiQWdlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91 dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJhZ2UiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFnZSIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dEFnZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2UiKSk7CQkJCQ0KCQkJ CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNvbXB1dGVkRW5yb2xs QWdlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJj b21wdXRlZEVucm9sbG1lbnRBZ2UiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5y b2xsbWVudEFnZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dENvbXB1dGVkRW5yb2xsQWdlKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIpKTsJ CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSXNUeFJl Y2lwaWVudEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaXNUeFJlY2VwaWVudCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIp KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBh Z2Uuc2V0VGV4dElzVHhSZWNpcGllbnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaXNUeFJlY2VwaWVudCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy TGlzdC5jb250YWlucygiSGFzUmVjZWl2ZWRGdW5kb3BsaWNhdGlvbkQiKSl7 CQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2Vp dmVkRnVuZG9wbGljYXRpb24iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2VpdmVkRnVu ZG9wbGljYXRpb24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQkJfQ0KCQkJCQlwYWdlLnNldFRleHRIYXNSZWNlaXZlZEZ1bmRvcGxpY2F0 aW9uKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9w bGljYXRpb24iKSk7CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIkRvYkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiZG9iIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJkb2IiKSkpKXsNCgkJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREb2IobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiZG9iIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJFbnJvbGxEdEQiKSl7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5yb2xsRHQiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImVucm9sbER0IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ CX0NCgkJCQkJcGFnZS5zZXRUZXh0RW5yb2xsRHQobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiZW5yb2xsRHQiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIkFnZUNSRkQiKSl7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiYWdlQ1JGIikpDQoJCQkJCQkJLmVxdWFscyhT dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2VDUkYi KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlw YWdlLnNldFRleHRBZ2VDUkYobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdl Q1JGIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJQYXRpZW50U3RhdHVzRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIpKQ0KCQkJCQkJCS5lcXVhbHMo U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVu dFN0YXR1cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9 DQoJCQkJCXBhZ2Uuc2V0VGV4dFBhdGllbnRTdGF0dXMobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIpKTsNCgkJCQkJDQoJCQkJfQ0K CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSW5kaWNhdGlvbkQiKSl7DQoJ CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIp KQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZGljYXRpb24o bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIpKTsNCgkJCQkJ DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJPQkQiKSl7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiT0IiKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoIk9CIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ CX0NCgkJCQkJcGFnZS5zZXRUZXh0T0IobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiT0IiKSk7DQoJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiQ1ZSRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiQ1ZSIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJDVlIiKSkpKXsNCgkJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRDVlIobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiQ1ZSIikpOw0KCQkJCX0NCg0KCQkJCWlm IChhdHRyTGlzdC5jb250YWlucygiQmlvcHN5RCIpKSB7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5IikpDQoJCQkJCQkJLmVx dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi aW9wc3kiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K CQkJCQlwYWdlLnNldFRleHRCaW9wc3kobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmlvcHN5IikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJCaW9wc3lEYXRlRCIpKSB7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKQ0KCQkJCQkJ CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYmlvcHN5RGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeURhdGUobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0K CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQmlvcHN5Q29tbWVudHNEIikp IHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lD b21tZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl eHRCaW9wc3lDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9w c3lDb21tZW50cyIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiQWN1dGVHcmFkZUQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImFjdXRlR3JhZGUiKSkNCgkJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFjdXRl R3JhZGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K CQkJCSAgICBwYWdlLnNldFRleHRBY3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoImFjdXRlR3JhZGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRy TGlzdC5jb250YWlucygiQWlyd2F5R3JhZGVEIikpIHsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhaXJ3YXlHcmFkZSIpKQ0KCQkJCQkJ CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYWlyd2F5R3JhZGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsN CgkJCQkJfQ0KCQkJCSAgICBwYWdlLnNldFRleHRBaXJ3YXlHcmFkZShsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJhaXJ3YXlHcmFkZSIpKTsNCgkJCQl9DQoJ CQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJNQkFjdXRlR3JhZGVE Iikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1 dGVHcmFkZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgibWJBY3V0ZUdyYWRlIikpKSl7DQoJCQkJ CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0 TUJBY3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVH cmFkZSIpKTsNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJN QkFpcndheUdyYWRlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJtYkFpcndheUdyYWRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndheUdy YWRlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJ CQkJcGFnZS5zZXRUZXh0TUJBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJtYkFpcndheUdyYWRlIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIk1CQ29tbWVudHNEIikpew0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo Im1iQ29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ CQkJfQ0KCQkJCQlwYWdlLnNldFRleHRNQkNvbW1lbnRzKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSk7DQoJCQkJfQ0KDQoJCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJCT1NEIikpew0KCQkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYm9zIikpKSl7 DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5z ZXRUZXh0Qk9TKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKTsNCgkJ CQl9DQoNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNNVkQiKSl7DQoJ CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9u IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJjbXZJbmZlY3Rpb24iKSkpKXsNCgkJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRDTVYobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9uIikpOw0KCQkJCX0N CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZkQiKSkgew0KCQkJCQlp ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm90aGVySW5mZWN0aW9uIikp DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBh dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKTsNCgkJCQl9 DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmZPcmdhbmlzbXNEIikp ew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2Fu aXNtcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5mT3JnYW5pc21zIikpKSl7DQoJCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0SW5m T3JnYW5pc21zKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNt cyIpKTsNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21w RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21w bGljYXRpb24iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXBsaWNhdGlvbiIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dENvbXAobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uIikp Ow0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNvbXBEZXNj RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21w bGljYXRpb25EZXNjIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wbGljYXRpb25EZXNjIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn ZS5zZXRUZXh0Q29tcERlc2MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29t cGxpY2F0aW9uRGVzYyIpKTsJCQkJDQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJM aXN0LmNvbnRhaW5zKCJBZG1pdHRlZEQiKSl7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaG9zcGl0YWxpemF0aW9uIikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJob3NwaXRhbGl6YXRpb24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRBZG1pdHRlZChsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJob3NwaXRhbGl6YXRpb24iKSk7CQkJCQ0KCQkJ CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlN1bW1hcnlDb21tZW50 c0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic3Vt bWFyeUNvbW1lbnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzdW1tYXJ5Q29tbWVudHMiKSkp KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdl LnNldFRleHRTdW1tYXJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgic3VtbWFyeUNvbW1lbnRzIikpOwkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJ aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7CQ0KCQkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikp DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJkb25vckNNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlRoZXJhcHko bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSk7CQkJCQ0K CQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdH RGF0ZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi ZG9ub3JDTVZJZ0dEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnR0RhdGUi KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlw YWdlLnNldFRleHREb25vckNNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiZG9ub3JDTVZJZ0dEYXRlIikpOwkJCQ0KCQkJCX0NCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdNRCIpKXsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKQ0KCQkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiZG9ub3JDTVZJZ00iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREb25vckNNVklnTShsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKTsJCQkJDQoJCQkJ fQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRG9ub3JDTVZJZ01EYXRl RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0 cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25v ckNNVklnTURhdGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdNRGF0ZSIpKSkp ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uu c2V0VGV4dERvbm9yQ01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJkb25vckNNVklnTURhdGUiKSk7CQkJCQ0KCQkJCX0NCg0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiUHJlVHhDTVZJZ0dEIikpewkJDQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInByZVR4Q01WSWdHIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs c2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0UHJlVHhDTVZJZ0cobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSk7DQoJCQkJfQ0K CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUHJlVHhDTVZJZ0dEYXRlRCIp KXsJCQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4 Q01WSWdHRGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0dEYXRlIikpKSl7 DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5z ZXRUZXh0UHJlVHhDTVZJZ0dEYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InByZVR4Q01WSWdHRGF0ZSIpKTsNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJQcmVUeENNVklnTUQiKSl7CQ0KCQkJCQlpZihw cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJwcmVUeENNVklnTSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl Ow0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFByZVR4Q01WSWdNKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpOw0KCQkJCX0NCgkJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlByZVR4Q01WSWdNRGF0ZUQiKSl7 CQkNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENN VklnTURhdGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNRGF0ZSIpKSkpew0K CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0 VGV4dFByZVR4Q01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJw cmVUeENNVklnTURhdGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiQkFMRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYmFsIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWwiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCQUwo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsIikpOw0KCQkJCQkNCgkJCQl9 DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCQUxEYXRlRCIpKSB7DQoJ CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKQ0K CQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYmFsRGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl Ow0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTERhdGUobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJ CWlmIChhdHRyTGlzdC5jb250YWlucygiQkFMQ3VsdHVyZUQiKSkgew0KCQkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENlbGxDdWx0dXJl IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJiYWxDZWxsQ3VsdHVyZSIpKSkpew0KCQkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTEN1 bHR1cmUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsQ2VsbEN1bHR1cmUi KSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMo IkJBTE9yZ2FuaXNtc0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYmFsT3JnYW5pc21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxPcmdhbmlz bXMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ CQlwYWdlLnNldFRleHRCQUxPcmdhbmlzbXMobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYmFsT3JnYW5pc21zIikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYg KGF0dHJMaXN0LmNvbnRhaW5zKCJCQUxJQ0QiKSl7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsSUMiKSkNCgkJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbElD IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJ cGFnZS5zZXRUZXh0QkFMSUMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs SUMiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIkJBTFBDRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYmFsUEMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbFBDIikpKSl7DQoJCQkJCQlz YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QkFM UEMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsUEMiKSk7DQoJCQkJCQ0K CQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZ1bmN0aW9uVGVz dEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVu Y3Rpb25UZXN0IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvblRlc3QiKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl eHRGdW5jdGlvblRlc3QobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVuY3Rp b25UZXN0IikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJCZXN0RkVWMUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmVzdEZFVjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJlc3RGRVYxIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn ZS5zZXRUZXh0QmVzdEZFVjEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVz dEZFVjEiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29u dGFpbnMoIkZFVjFEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9 bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoIkZFVjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRGRVYx KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSk7DQoJCQkJCQ0KCQkJ CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRlbHRhRkVWMUQiKSl7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYx IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJkZWx0YUZFVjEiKSkpKXsNCgkJCQkJCXNhbWVQYXQg PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREZWx0YUZFVjEo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpOw0KCQkJCQkN CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJGVkNEIikpew0K CQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIpKQ0KCQkJ CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiRlZDIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ CX0NCgkJCQkJcGFnZS5zZXRUZXh0RlZDKGx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoIkZWQyIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiTzJTYXREIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29t ZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoIm8yU2F0IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvMlNhdCIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4 dE8yU2F0KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm8yU2F0IikpOw0KCQkJ CQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpEIikp IHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWoiKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoInJlaiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlaihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJyZWoiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiUmVqVGhEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJyZWpUaCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVGgiKSkpKXsNCgkJCQkJ CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRS ZWpUaChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaCIpKTsNCgkJCQkJ DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJXQkNDb3Vu dEQiKSl7DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndiY0Nv dW50IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmND b3VudCIpLnRyaW0oKS5lcXVhbHMoIiIpKXsNCgkJCQkJCWlmKCFTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKS5z dGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRXQkNDb3Vu dChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKTsNCgkJCQkJ CX0NCgkJCQkJCWlmKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoIndiY0NvdW50IikpLnN0YXJ0c1dpdGgoIi0xIikpew0KCQkJCQkJ CXBhZ2Uuc2V0VGV4dFdCQ0NvdW50KCIoIitsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJ3YmNDb3VudCIpKyIpIik7DQoJCQkJCQl9DQoJCQkJCX1lbHNlew0K CQkJCQkJcGFnZS5zZXRUZXh0V0JDQ291bnQoIiIpOw0KCQkJCQl9DQoJCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgid2JjQ291bnQiKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoIndiY0NvdW50IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7 DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJI R0JDb3VudEQiKSl7DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImhnYkNvdW50IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJoZ2JDb3VudCIpLnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCQlpZigh U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291 bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRUZXh0 SEdCQ291bnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7 DQoJCQkJCQl9DQoJCQkJCQlpZihTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJoZ2JDb3VudCIpKS5zdGFydHNXaXRoKCItMSIpKXsN CgkJCQkJCQlwYWdlLnNldFRleHRIR0JDb3VudCgiKCIrbHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJCQl9 ZWxzZXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEhHQkNvdW50KCIiKTsNCgkJCQkJ fQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50 IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJoZ2JDb3VudCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9DQoJCQkJCS8vcGFnZS5zZXRUZXh0SEdCQ291bnQo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7DQoJCQkJfQ0K CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUGxhdGVsZXRDb3VudEQiKSl7 DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291 bnQiKSE9bnVsbCAgJiYgIWx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRl bGV0Q291bnQiKS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJCQkJaWYoIVN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0 Q291bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRU ZXh0UGxhdGVsZXRDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0 ZWxldENvdW50IikpOw0KCQkJCQkJfQ0KCQkJCQkJaWYoU3RyaW5nLnZhbHVl T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRDb3VudCIpKS5z dGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRQbGF0ZWxl dENvdW50KCIoIitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENv dW50IikrIikiKTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCQlwYWdl LnNldFRleHRQbGF0ZWxldENvdW50KCIiKTsNCgkJCQkJfQ0KCQkJCQkNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50 IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50IikpKSl7DQoJCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJCYW5kc0QiKSl7CQkJCQ0KCQkJCQlpZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJiYW5kcyIpIT1udWxsICAmJiAhbHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmFuZHMiKS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJ CQkJaWYoRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi YmFuZHMiKSkuZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAgICAgcGFn ZS5zZXRUZXh0QmFuZHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMi KSk7DQoJCQkJCQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJiYW5kcyIpIT1udWxsICYmIA0KCQkJCQkJCQlEb3VibGUudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIpKS5kb3VibGVWYWx1ZSgp PDAuMCl7DQoJCQkJCQkgICBwYWdlLnNldFRleHRCYW5kcygiKCIrbHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJ CQl9ZWxzZXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJhbmRzKCIiKTsNCgkJCQkJ fQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikp DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJiYW5kcyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl Ow0KCQkJCQl9CQkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJDcmVhdGluaW5lRCIpKXsJCQkJDQoJCQkJCWlmKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSE9bnVsbCAgJiYgIWx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKS50cmltKCkuZXF1 YWxzKCIiKSl7IA0KCQkJCQkJaWYoRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1ZSgpPjAu MCl7DQoJCQkJCSAgICAgICBwYWdlLnNldFRleHRDcmVhdGluaW5lKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSk7DQoJCQkJCQl9DQoJ CQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikh PW51bGwgJiYgDQoJCQkJCQkJCURvdWJsZS52YWx1ZU9mKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSkuZG91YmxlVmFsdWUoKTwwLjAp ew0KCQkJCQkJICAgcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiKCIrbHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKyIpIik7DQoJCQkJCQl9 DQoJCQkJCX1lbHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgi Iik7DQoJCQkJCX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJjcmVhdGluaW5lIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikpKSl7DQoJ CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0JCQkJDQoJCQkJfQ0KCQkJ CQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQ3JlYXRpbmluZURhdGVE IikpewkJCQkNCgkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZURhdGUobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZURhdGUiKSk7CQkJCQ0K CQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmVE YXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lRGF0ZSIpKSkpew0KCQkJCQkJ c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJ CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJVTkQiKSl7CQkJCQ0KCQkJCQlp ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4iKSE9bnVsbCAgJiYgIWx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpLnRyaW0oKS5lcXVhbHMoIiIp KXsgDQoJCQkJCQlpZihEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJidW4iKSkuZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAg ICAgcGFnZS5zZXRUZXh0Q3JlYXRpbmluZShsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJidW4iKSk7DQoJCQkJCQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJidW4iKSE9bnVsbCAmJiANCgkJCQkJCQkJRG91YmxlLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpLmRvdWJsZVZh bHVlKCk8MC4wKXsNCgkJCQkJCSAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUo IigiK2x1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpKyIpIik7DQoJCQkJ CQl9DQoJCQkJCX1lbHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmlu ZSgiIik7DQoJCQkJCX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51 bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJidW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpKSkpew0KCQkJCQkJc2FtZVBh dCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkJVTkRhdGVEIikpewkJCQkNCgkJCQkJcGFn ZS5zZXRUZXh0Q3JlYXRpbmluZURhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiYnVuRGF0ZSIpKTsJCQkJDQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiYnVuRGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0ZSIpKSkpew0K CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJ CQkNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTENvbW1lbnRzRCIp KXsNCgkJCQkJcGFnZS5zZXRUZXh0QkFMQ29tbWVudHMobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmFsQ29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiYmFsQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJh bENvbW1lbnRzIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ CX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmZTY29y ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlNjb3JlKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpOw0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJpbmZlY3Rpb25TY29yZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu cygiSW5mU2NvcmVDb21tZW50c0QiKSkgew0KCQkJCQlwYWdlLnNldFRleHRJ bmZTY29yZUNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVj dGlvblNjb3JlQ29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiaW5mZWN0aW9uU2NvcmVDb21tZW50cyIpKQ0KCQkJCQkJ CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaW5mZWN0aW9uU2NvcmVDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBh dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiSW5mQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0 SW5mQ29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0aW9u Q29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiaW5mZWN0aW9uQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNv bW1lbnRzIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wQ29tbWVu dHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0Q29tcENvbW1lbnRzKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImNvbXBDb21tZW50cyIpKTsNCgkJCQkJaWYo cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wQ29tbWVudHMiKSkNCgkJ CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoImNvbXBDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu cygiTWVkQ29tbWVudHNEIikpew0KCQkJCQlwYWdlLnNldFRleHRNZWRDb21t ZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50cyIpKTsN CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52 YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50 cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgibWVkQ29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkZuQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0 Rm5Db21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvbkNv bW1lbnRzIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo ImZ1bmN0aW9uQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9uQ29tbWVu dHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlJlamVjdGlvblRyZWF0 bWVudHNEIikpew0KCQkJCQlwYWdlLnNldFRleHRSZWplY3Rpb25UcmVhdG1l bnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlvblRyZWF0bWVu dHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVq ZWN0aW9uVHJlYXRtZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uVHJlYXRt ZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ CQkJfQ0KCQkJCQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqVGhS ZWFzb25zRCIpKXsNCgkJCQkJcGFnZS5zZXRUZXh0UmVqVGhSZWFzb25zKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRoUmVhc29ucyIpKTsNCgkJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaFJlYXNvbnMiKSkN CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu Z2V0VmFsdWUoInJlalRoUmVhc29ucyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9 IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNv bnRhaW5zKCJJbmZUaGVyYXB5RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dElu ZlRoZXJhcHkobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mVGhlcmFweSIp KTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZUaGVy YXB5IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJpbmZUaGVyYXB5IikpKSl7DQoJCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0 LmNvbnRhaW5zKCJEcmF3RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dERyYXco bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZHJhdyIpKTsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkcmF3IikpDQoJCQkJCQkJLmVxdWFs cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkcmF3 IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9 DQoNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNTRCIpKXsNCgkJCQkJ cGFnZS5zZXRUZXh0Q1MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmlj YWxTeW1wdG9tcyIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51 bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJjbGluaWNhbFN5bXB0b21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbGluaWNhbFN5 bXB0b21zIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5 RCIpKXsNCgkJCQkJcGFnZS5zZXRUZXh0SW5kVGhlcmFweShsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJpbmRUaGVyYXB5IikpOw0KCQkJCQlpZihwcmV2THVu Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHkiKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImlu ZFRoZXJhcHkiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ fQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJh cHlZTkQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlZTihsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5WU4iKSk7DQoJCQkJCWlm KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweVlOIikpDQoJ CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJpbmRUaGVyYXB5WU4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm YWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp bnMoIkluZFRoZXJhcHlDb21wRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4 dEluZFRoZXJhcHlDb21wRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJp bmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSk7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUNvbXBsZXRpb25EYXRlIikp DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSkpKXsNCgkJ CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAo YXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlOb09mRG9zZXNEIikpew0K CQkJCQlwYWdlLnNldFRleHRJbmRUaGVyYXB5Tm9PZkRvc2VzKGx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHlOb09mRG9zZXMiKSk7DQoJCQkJ CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZE b3NlcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKSkpew0K CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlm IChhdHRyTGlzdC5jb250YWlucygiSW5kVGhlcmFweUFtdFBlckRvc2VEIikp ew0KCQkJCQlwYWdlLnNldFRleHRJbmRUaGVyYXB5QW10UGVyRG9zZShsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9zZSIpKTsN CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52 YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5 QW10UGVyRG9zZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUFtdFBlckRvc2Ui KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlDb21tZW50 c0QiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlDb21tZW50cyhs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSk7 DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFw eUNvbW1lbnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSkp KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCg0K CQkJCQ0KCQkJCQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGVtYXRv bG9neUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEhlbWF0b2xvZ3kobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiaGVtYXRvbG9neSIpKTsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZW1hdG9sb2d5IikpDQoJCQkJCQkJ LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl KCJoZW1hdG9sb2d5IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ CQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNl cENNVklnR0QiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlY2VwQ01WSWdHKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpOw0KCQkJCQlp ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpDQoJ CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJyZWNlcENNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu cygiUmVjZXBDTVZEaWFnRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJl Y2VwQ01WRGlhZ0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBD TVZEaWFnRGF0ZSIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51 bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJyZWNlcENNVkRpYWdEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkRp YWdEYXRlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcENNVklu ZlR5cGVEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0UmVjZXBDTVZJbmZUeXBl KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKTsN CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52 YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVklu ZlR5cGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKSkpew0KCQkJ CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiUmVjZXBpZW50Q01WTWV0aG9kRCIpKXsNCgkJ CQkJcGFnZS5zZXRUZXh0UmVjZXBpZW50Q01WTWV0aG9kKGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInJlY2VwQ01WTWV0aG9kIikpOw0KCQkJCQlpZihwcmV2 THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WTWV0aG9kIikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJyZWNlcENNVk1ldGhvZCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu cygiUmVjZXBpZW50Q01WT3JnYW5EIikpew0KCQkJCQlwYWdlLnNldFRleHRS ZWNlcGllbnRDTVZPcmdhbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNl cENNVk9yZ2FuIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInJlY2VwQ01WT3JnYW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WT3JnYW4i KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdHRCIpKXsN CgkJCQkJcGFnZS5zZXRUZXh0RG9ub3JDTVZJZ0cobHVuZ0NET3V0Y29tZS5n ZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSkNCgkJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9y Q01WSWdHIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQl9DQoJCQkJU3RyaW5nIGJpb3BzeUhpc3RvcnkgPSBudWxsOw0KCQkJ CVN0cmluZyBhcnJCaW9wc3lIaXN0b3J5W10gPSBudWxsOw0KCQkJCWlmIChh dHRyTGlzdC5jb250YWlucygiQmlvcHN5SGlzdG9yeUQiKSl7DQoJCQkJCWJp b3BzeUhpc3RvcnkgPSBsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lI aXN0b3J5Iik7DQoJCQkJCQ0KCQkJCQlpZihiaW9wc3lIaXN0b3J5IT1udWxs ICYmIGJpb3BzeUhpc3RvcnkudHJpbSgpLmxlbmd0aCgpPjApew0KCQkJCQkJ YXJyQmlvcHN5SGlzdG9yeSA9IGJpb3BzeUhpc3Rvcnkuc3BsaXQoIiwiKTsJ CQkJCQkJDQoJCQkJCQkvL3BhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlBMChh cnJCaW9wc3lIaXN0b3J5WzBdLnN1YnN0cmluZyhhcnJCaW9wc3lIaXN0b3J5 WzBdLmluZGV4T2YoJy0nKSsxLGFyckJpb3BzeUhpc3RvcnlbMF0ubGVuZ3Ro KCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnkoYXJyQmlv cHN5SGlzdG9yeVswXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVswXS5p bmRleE9mKCctJykrMSxhcnJCaW9wc3lIaXN0b3J5WzBdLmxlbmd0aCgpKSk7 DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTEoYXJyQmlvcHN5 SGlzdG9yeVsxXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVsxXS5pbmRl eE9mKCctJykrMSxhcnJCaW9wc3lIaXN0b3J5WzFdLmxlbmd0aCgpKSk7DQoJ CQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTIoYXJyQmlvcHN5SGlz dG9yeVsyXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVsyXS5pbmRleE9m KCctJykrMSxhcnJCaW9wc3lIaXN0b3J5WzJdLmxlbmd0aCgpKSk7DQoJCQkJ CQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTMoYXJyQmlvcHN5SGlzdG9y eVszXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVszXS5pbmRleE9mKCct JykrMSxhcnJCaW9wc3lIaXN0b3J5WzNdLmxlbmd0aCgpKSk7DQoJCQkJCQlw YWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTQoYXJyQmlvcHN5SGlzdG9yeVs0 XS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVs0XS5pbmRleE9mKCctJykr MSxhcnJCaW9wc3lIaXN0b3J5WzRdLmxlbmd0aCgpKSk7DQoJCQkJCQlwYWdl LnNldFRleHRCaW9wc3lIaXN0b3J5T0IoYXJyQmlvcHN5SGlzdG9yeVs1XS5z dWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVs1XS5pbmRleE9mKCctJykrMSxh cnJCaW9wc3lIaXN0b3J5WzVdLmxlbmd0aCgpKSk7DQoJCQkJCQlwYWdlLnNl dFRleHRCaW9wc3lIaXN0b3J5Qk9TKGFyckJpb3BzeUhpc3RvcnlbNl0uc3Vi c3RyaW5nKGFyckJpb3BzeUhpc3RvcnlbNl0uaW5kZXhPZignLScpKzEsYXJy QmlvcHN5SGlzdG9yeVs2XS5sZW5ndGgoKSkpOw0KCQkJCQkJcGFnZS5zZXRU ZXh0QmlvcHN5SGlzdG9yeUNWUihhcnJCaW9wc3lIaXN0b3J5WzddLnN1YnN0 cmluZyhhcnJCaW9wc3lIaXN0b3J5WzddLmluZGV4T2YoJy0nKSsxLGFyckJp b3BzeUhpc3RvcnlbN10ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4 dEJpb3BzeUhpc3RvcnlCMChhcnJCaW9wc3lIaXN0b3J5WzhdLnN1YnN0cmlu ZyhhcnJCaW9wc3lIaXN0b3J5WzhdLmluZGV4T2YoJy0nKSsxLGFyckJpb3Bz eUhpc3RvcnlbOF0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJp b3BzeUhpc3RvcnlCMShhcnJCaW9wc3lIaXN0b3J5WzldLnN1YnN0cmluZyhh cnJCaW9wc3lIaXN0b3J5WzldLmluZGV4T2YoJy0nKSsxLGFyckJpb3BzeUhp c3RvcnlbOV0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz eUhpc3RvcnlCMihhcnJCaW9wc3lIaXN0b3J5WzEwXS5zdWJzdHJpbmcoYXJy QmlvcHN5SGlzdG9yeVsxMF0uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz dG9yeVsxMF0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz eUhpc3RvcnlCMyhhcnJCaW9wc3lIaXN0b3J5WzExXS5zdWJzdHJpbmcoYXJy QmlvcHN5SGlzdG9yeVsxMV0uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz dG9yeVsxMV0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz eUhpc3RvcnlCNChhcnJCaW9wc3lIaXN0b3J5WzEyXS5zdWJzdHJpbmcoYXJy QmlvcHN5SGlzdG9yeVsxMl0uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz dG9yeVsxMl0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz eUhpc3RvcnlCWChhcnJCaW9wc3lIaXN0b3J5WzEzXS5zdWJzdHJpbmcoYXJy QmlvcHN5SGlzdG9yeVsxM10uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz dG9yeVsxM10ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz eUhpc3RvcnlDb21tZW50cyhhcnJCaW9wc3lIaXN0b3J5WzE0XS5zdWJzdHJp bmcoOSxhcnJCaW9wc3lIaXN0b3J5WzE0XS5sZW5ndGgoKSkpOw0KCQkJCQkJ aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lIaXN0b3J5Iikp DQoJCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmlvcHN5SGlzdG9yeSIpKSkpew0KCQkJCQkJCXNhbWVQ YXQgPSBmYWxzZTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCQlwYWdl LnNldFRleHRCaW9wc3lIaXN0b3J5KCIiKTsNCgkJCQkJCS8vcGFnZS5zZXRU ZXh0QmlvcHN5SGlzdG9yeUEwKCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJp b3BzeUhpc3RvcnlBMSgiIik7DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lI aXN0b3J5QTIoIiIpOw0KCQkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9y eUEzKCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlBNCgi Iik7DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5T0IoIiIpOw0K CQkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9yeUJPUygiIik7DQoJCQkJ CQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5Q1ZSKCIiKTsNCgkJCQkJCXBh Z2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlCMCgiIik7DQoJCQkJCQlwYWdlLnNl dFRleHRCaW9wc3lIaXN0b3J5QjEoIiIpOw0KCQkJCQkJcGFnZS5zZXRUZXh0 QmlvcHN5SGlzdG9yeUIyKCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz eUhpc3RvcnlCMygiIik7DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0 b3J5QjQoIiIpOw0KCQkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9yeUJY KCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlDb21tZW50 cygiIik7DQoJCQkJCQliaW9wc3lIaXN0b3J5ID0gbnVsbDsNCgkJCQkJCWFy ckJpb3BzeUhpc3RvcnkgPSBudWxsOw0KCQkJCQkJDQoJCQkJCX0NCgkJCQl9 DQoJCQkJDQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpU cmVhdG1lbnRIaXN0b3J5RCIpKXsNCgkJCQkJU3RyaW5nW10gcmVqVHJlYXRt ZW50SGlzdG9yeUFyciA9IGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRy ZWF0bWVudEhpc3RvcnkiKS5zcGxpdCgiLy8iKTsNCgkJCQkJDQoJCQkJCVN0 cmluZyByZWpUcmVhdG1lbnRzID0iIjsNCgkJCQkJU3RyaW5nIG5vT2ZSZWpU cmVhdG1lbnRzPSIiOw0KCQkJCQlTdHJpbmcgcmVqVHJlYXRtZW50RW5kRGF0 ZT0iIjsNCgkJCQkJDQoJCQkJCVN0cmluZyBbXSByZWpUcmVhdG1lbnRzQXJy PW51bGw7DQoJCQkJCWlmKHJlalRyZWF0bWVudEhpc3RvcnlBcnIhPW51bGwg JiYgcmVqVHJlYXRtZW50SGlzdG9yeUFyci5sZW5ndGg+MCl7DQoJCQkJCQlm b3IoaW50IG0gPTA7bTxyZWpUcmVhdG1lbnRIaXN0b3J5QXJyLmxlbmd0aDtt Kyspew0KCQkJCQkJCWlmKHJlalRyZWF0bWVudEhpc3RvcnlBcnIhPW51bGwg JiYgcmVqVHJlYXRtZW50SGlzdG9yeUFyci5sZW5ndGg+MCl7DQoJCQkJCQkJ CXJlalRyZWF0bWVudHNBcnIgPSByZWpUcmVhdG1lbnRIaXN0b3J5QXJyW21d LnNwbGl0KCItIik7CQkJCQkJCQkNCgkJCQkJCQkJaWYocmVqVHJlYXRtZW50 c0FyciE9bnVsbCAmJiByZWpUcmVhdG1lbnRzQXJyLmxlbmd0aD4xKXsNCgkJ CQkJCQkJCWlmKG09PTApew0KCQkJCQkJCQkJCXJlalRyZWF0bWVudHMgKz0g cmVqVHJlYXRtZW50c0FyclswXS50cmltKCk7DQoJCQkJCQkJCQkJbm9PZlJl alRyZWF0bWVudHMgKz0gcmVqVHJlYXRtZW50c0FyclsxXS50cmltKCk7DQoJ CQkJCQkJCQkJcmVqVHJlYXRtZW50RW5kRGF0ZSArPSByZWpUcmVhdG1lbnRz QXJyWzJdLnRyaW0oKTsNCgkJCQkJCQkJCX1lbHNlew0KCQkJCQkJCQkJCXJl alRyZWF0bWVudHMgKz0gIiAsICIrcmVqVHJlYXRtZW50c0FyclswXS50cmlt KCk7DQoJCQkJCQkJCQkJbm9PZlJlalRyZWF0bWVudHMgKz0gIiAsICIrcmVq VHJlYXRtZW50c0FyclsxXS50cmltKCk7DQoJCQkJCQkJCQkJcmVqVHJlYXRt ZW50RW5kRGF0ZSArPSAiICwgIisgcmVqVHJlYXRtZW50c0FyclsyXS50cmlt KCk7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJ CQl9DQoJCQkJCQl9DQoJCQkJCQlwYWdlLnNldFRleHRSZWpUcmVhdG1lbnRI aXN0b3J5KHJlalRyZWF0bWVudHMpOw0KCQkJCQkJcGFnZS5zZXRUZXh0UmVq VHJlYXRtZW50SGlzdG9yeU5vT2ZUcmVhdG1lbnQobm9PZlJlalRyZWF0bWVu dHMpOw0KCQkJCQkJcGFnZS5zZXRUZXh0UmVqVHJlYXRtZW50SGlzdG9yeUVu ZERhdGUocmVqVHJlYXRtZW50RW5kRGF0ZSk7DQoJCQkJCX0NCgkJCQkJDQoJ CQkJCS8vcGFnZS5zZXRUZXh0UmVqVHJlYXRtZW50SGlzdG9yeShsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJyZWpUcmVhdG1lbnRIaXN0b3J5IikpOw0KCQkJ CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0bWVudEhp c3RvcnkiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0bWVudEhpc3RvcnkiKSkpKXsN CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIlN0ZXJvaWRzRCIpKXsNCgkJCQkJYWwg PSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRT dGVyb2lkcygpKTsNCgkJCQkJcGFnZS5zZXRUZXh0U3Rlcm9pZHMoIiIrYWwu Z2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0U3Rlcm9pZHNVbml0cygiIith bC5nZXQoMSkpOw0KCQkJCQkvL3BhZ2Uuc2V0VGV4dFN0ZXJvaWRzKGx1bmdD RE91dGNvbWUuZ2V0U3Rlcm9pZHMoKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRTdGVyb2lkcygpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRTdGVyb2lkcygpKSkpew0KCQkJCQkJ c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRy TGlzdC5jb250YWlucygiUHJlZG5pc29uZUQiKSl7DQoJCQkJCWlmKHByZXZM dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29uZSIpKQ0KCQkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi cHJlZG5pc29uZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ CQl9DQoJCQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdD RE91dGNvbWUuZ2V0VmFsdWUoInByZWRuaXNvbmUiKSk7DQoJCQkJCXBhZ2Uu c2V0VGV4dFByZWRuaXNvbmUoIiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5z ZXRUZXh0UHJlZG5pc29uZVVuaXRzKCIiK2FsLmdldCgxKSk7CQkJCQkNCgkJ CQkJLy9wYWdlLnNldFRleHRQcmVkbmlzb25lKGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInByZWRuaXNvbmUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0 ckxpc3QuY29udGFpbnMoIlByZWRuaXNvbG9uZUQiKSl7DQoJCQkJCWlmKHBy ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2 THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpDQoJCQkJ CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJwcmVkbmlzb2xvbmUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz ZTsNCgkJCQkJfQ0KCQkJCQlhbCA9IHNwbGl0TWVkaWNhdGlvbkZvckV4cG9y dChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVkbmlzb2xvbmUiKSk7DQoJ CQkJCXBhZ2Uuc2V0VGV4dFByZWRuaXNvbG9uZSgiIithbC5nZXQoMCkpOw0K CQkJCQlwYWdlLnNldFRleHRQcmVkbmlzb2xvbmVVbml0cygiIithbC5nZXQo MSkpOwkNCgkJCQkJLy9wYWdlLnNldFRleHRQcmVkbmlzb2xvbmUobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpOwkJCQkNCgkJCQl9 DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmhTdGVyb2lkc0QiKSkg ew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluaFN0ZXJv aWRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKSkpew0KCQkJCQkJc2Ft ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCWFsID0gc3BsaXRNZWRpY2F0 aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluaFN0ZXJv aWRzIikpOw0KCQkJCQlwYWdlLnNldFRleHRJbmhTdGVyb2lkcygiIithbC5n ZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRJbmhTdGVyb2lkc1VuaXRzKCIi K2FsLmdldCgxKSk7DQoNCgkJCQkJLy9wYWdlLnNldFRleHRJbmhTdGVyb2lk cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKTsJCQkJ DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDeWNsb3Nw b3JpbkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi Y3ljbG9zcG9yaW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImN5Y2xvc3BvcmluIikpKSl7DQoJ CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJYWwgPSBzcGxp dE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi Y3ljbG9zcG9yaW4iKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dEN5Y2xvc3Bvcmlu KCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dEN5Y2xvc3Bvcmlu VW5pdHMoIiIrYWwuZ2V0KDEpKTsJCQkJCQ0KCQkJCQkvL3BhZ2Uuc2V0VGV4 dEN5Y2xvc3BvcmluKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImN5Y2xvc3Bv cmluIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z KCJUYWNyb2xpbXVzRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJ0YWNyb2xpbXVzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0YWNyb2xpbXVzIikp KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJYWwg PSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgidGFjcm9saW11cyIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0VGFjcm9s aW11cygiIithbC5nZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRUYWNyb2xp bXVzVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJDQoJCQkJCS8vcGFnZS5z ZXRUZXh0VGFjcm9saW11cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0YWNy b2xpbXVzIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh aW5zKCJBemF0aGlvcHJpbmVEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0 Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImF6YXRoaW9wcmluZSIpKQ0KCQkJCQkJCS5lcXVhbHMo U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYXphdGhp b3ByaW5lIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N CgkJCQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiYXphdGhpb3ByaW5lIikpOw0KCQkJCQlwYWdlLnNl dFRleHRBemF0aGlvcHJpbmUoIiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5z ZXRUZXh0QXphdGhpb3ByaW5lVW5pdHMoIiIrYWwuZ2V0KDEpKTsJCQkJCQ0K CQkJCQkvL3BhZ2Uuc2V0VGV4dEF6YXRoaW9wcmluZShsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIk15Y29waGVub2xhdGVEIikpIHsNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRl IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj b21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRlIikpKSl7DQoJCQkJCQlzYW1l UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJYWwgPSBzcGxpdE1lZGljYXRp b25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgibXljb3BoZW5v bGF0ZSIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0TXljb3BoZW5vbGF0ZSgiIith bC5nZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRNeWNvcGhlbm9sYXRlVW5p dHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJDQoJCQkJCS8vcGFnZS5zZXRUZXh0 TXljb3BoZW5vbGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhl bm9sYXRlIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh aW5zKCJCYXNpbGl4aW1hYkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSkNCgkJCQkJCQkuZXF1YWxzKFN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhc2lsaXhp bWFiIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJ CQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4 dEJhc2lsaXhpbWFiKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4 dEJhc2lsaXhpbWFiVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJLy9wYWdl LnNldFRleHRCYXNpbGl4aW1hYihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi YXNpbGl4aW1hYiIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j b250YWlucygiRGFjbHV6aW1hYkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RP dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgiZGFjbHV6aW1hYiIpKQ0KCQkJCQkJCS5lcXVhbHMo U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGFjbHV6 aW1hYiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ CQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoImRhY2x1emltYWIiKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4 dERhY2x1emltYWIoIiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0 RGFjbHV6aW1hYlVuaXRzKCIiK2FsLmdldCgxKSk7DQoJCQkJCQ0KCQkJCQkv L3BhZ2Uuc2V0VGV4dERhY2x1emltYWIobHVuZ0NET3V0Y29tZS5nZXRWYWx1 ZSgiZGFjbHV6aW1hYiIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz dC5jb250YWlucygiU2lyb2xpbXVzRCIpKXsNCgkJCQkJaWYocHJldkx1bmdD RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP dXRjb21lLmdldFZhbHVlKCJzaXJvbGltdXMiKSkNCgkJCQkJCQkuZXF1YWxz KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInNpcm9s aW11cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ CQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInNpcm9saW11cyIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0 U2lyb2xpbXVzKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dFNp cm9saW11c1VuaXRzKCIiK2FsLmdldCgxKSk7DQoJCQkJCQ0KCQkJCQkvL3Bh Z2Uuc2V0VGV4dFNpcm9saW11cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJz aXJvbGltdXMiKSk7CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQkvLyBhbnRpbWlj cm9iaWFscyBzdGFydA0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQXpp dGhyb215Y2luRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYXppdGhyb215Y2luIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJheml0aHJvbXljaW4i KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlh bCA9IHNwbGl0TWVkaWNhdGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21lLmdl dFZhbHVlKCJheml0aHJvbXljaW4iKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dEF6 aXRocm9teWNpbigiIithbC5nZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRB eml0aHJvbXljaW5Vbml0cygiIithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJ Ly9wYWdlLnNldFRleHRBeml0aHJvbXljaW4obHVuZ0NET3V0Y29tZS5nZXRW YWx1ZSgiYXppdGhyb215Y2luIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0 dHJMaXN0LmNvbnRhaW5zKCJUTVgtU3VsZmFEIikpIHsNCgkJCQkJaWYocHJl dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0TVhTdWxmYSIpKQ0KCQkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi dE1YU3VsZmEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ fQ0KCQkJCQkNCgkJCQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQo bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidE1YU3VsZmEiKSk7DQoJCQkJCXBh Z2Uuc2V0VGV4dFRNWFN1bGZhKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uu c2V0VGV4dFRNWFN1bGZhVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJLy9w YWdlLnNldFRleHRUTVhTdWxmYShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0 TVhTdWxmYSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250 YWlucygiVG9icmFteWNpbkQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0 Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv bWUuZ2V0VmFsdWUoInRvYnJhbXljaW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0 cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInRvYnJhbXlj aW4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ CQlhbCA9IHNwbGl0TWVkaWNhdGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21l LmdldFZhbHVlKCJ0b2JyYW15Y2luIikpOw0KCQkJCQlwYWdlLnNldFRleHRU b2JyYW15Y2luKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dFRv YnJhbXljaW5Vbml0cygiIithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJLy9w YWdlLnNldFRleHRUb2JyYW15Y2luKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo InRvYnJhbXljaW4iKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu Y29udGFpbnMoIkdhbmNpY2xvdmlyRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5n Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiZ2FuY2ljbG92aXIiKSkNCgkJCQkJCQkuZXF1 YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImdh bmNpY2xvdmlyIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ CX0NCgkJCQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiZ2FuY2ljbG92aXIiKSk7DQoJCQkJCXBhZ2Uu c2V0VGV4dEdhbmNpY2xvdmlyKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uu c2V0VGV4dEdhbmNpY2xvdmlyVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJ DQoJCQkJCS8vcGFnZS5zZXRUZXh0R2FuY2ljbG92aXIobHVuZ0NET3V0Y29t ZS5nZXRWYWx1ZSgiZ2FuY2ljbG92aXIiKSk7CQkJCQ0KCQkJCX0NCgkJCQlp ZiAoYXR0ckxpc3QuY29udGFpbnMoIlZhbGdhbmN5Y2xvdmlyRCIpKXsNCgkJ CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1 ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2YWxnYW5jeWNsb3Zp ciIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0 Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlhbCA9IHNwbGl0TWVkaWNh dGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2YWxnYW5j eWNsb3ZpciIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0VmFsZ2FuY3ljbG92aXIo IiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0VmFsZ2FuY3ljbG92 aXJVbml0cygiIithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJLy9wYWdlLnNl dFRleHRWYWxnYW5jeWNsb3ZpcihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2 YWxnYW5jeWNsb3ZpciIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz dC5jb250YWlucygiSXRyYWNvbmF6b2xlRCIpKXsNCgkJCQkJaWYocHJldkx1 bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSkNCgkJCQkJCQku ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo Iml0cmFjb25hem9sZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K CQkJCQl9DQoJCQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIml0cmFjb25hem9sZSIpKTsNCgkJCQkJ cGFnZS5zZXRUZXh0SXRyYWNvbmF6b2xlKCIiK2FsLmdldCgwKSk7DQoJCQkJ CXBhZ2Uuc2V0VGV4dEl0cmFjb25hem9sZVVuaXRzKCIiK2FsLmdldCgxKSk7 DQoJCQkJCQ0KCQkJCQkvL3BhZ2Uuc2V0VGV4dEl0cmFjb25hem9sZShsdW5n Q0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSk7CQkJCQ0KCQkJ CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZsdWNvbmF6b2xlRCIp KXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmbHVjb25h em9sZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE T3V0Y29tZS5nZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSkpKXsNCgkJCQkJCXNh bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlhbCA9IHNwbGl0TWVkaWNh dGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmbHVjb25h em9sZSIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGUoIiIrYWwu Z2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGVVbml0cygi IithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJLy9wYWdlLnNldFRleHRGbHVj b25hem9sZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmbHVjb25hem9sZSIp KTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVm9y aWNvbmF6b2xlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51 bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJ2b3JpY29uYXpvbGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52 YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInZvcmljb25hem9sZSIp KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCWFs ID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNvbWUuZ2V0 VmFsdWUoInZvcmljb25hem9sZSIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0Vm9y aWNvbmF6b2xlKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dFZv cmljb25hem9sZVVuaXRzKCIiK2FsLmdldCgxKSk7DQoJCQkJCQ0KCQkJCQkv L3BhZ2Uuc2V0VGV4dFZvcmljb25hem9sZShsdW5nQ0RPdXRjb21lLmdldFZh bHVlKCJ2b3JpY29uYXpvbGUiKSk7CQkJCQ0KCQkJCX0NCgkJCQkvLyAJYW50 aW1pY3JvYmlhbHMgZW5kDQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh aW5zKCJPdGhlck1lZGljYXRpb25EIikpew0KCQkJCQlpZihwcmV2THVuZ0NE T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91 dGNvbWUuZ2V0VmFsdWUoIm90aGVyTWVkaWNhdGlvbiIpKQ0KCQkJCQkJCS5l cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi b3RoZXJNZWRpY2F0aW9uIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7 DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0T3RoZXJNZWRpY2F0aW9uKGx1 bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm90aGVyTWVkaWNhdGlvbiIpKTsJCQkJ DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUEFYV2VpZ2h0 MUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF4 V2VpZ2h0MSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu Z0NET3V0Y29tZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MSIpKSkpew0KCQkJCQkJ c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFBB WFdlaWdodDEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MSIp KTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUEFY V2VpZ2h0MkQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs dWUoInBheFdlaWdodDIiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1 ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheFdlaWdodDIiKSkpKXsN CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl dFRleHRQQVhXZWlnaHQyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheFdl aWdodDIiKSk7CQkJCQ0KCQkJCX0NCgkJCQkNCi8vCQkJCSB0byBzZXQgdG9v bHRpcA0KCQkJCXRlbXBsYXRlUm93ID0gcGFnZS5nZXRFbGVtZW50VGVtcGxh dGVSb3coKTsJCQkNCgkJCQl0ZW1wbGF0ZVJvdy5zZXRBdHRyaWJ1dGUoInRp dGxlIixlbmNJZCk7DQoJCQkJDQoJCQkJaWYgKCEoZmV2ZW50LmVxdWFscygi IikpKSB7DQoJCQkJCWZvciAoaW50IGk9MDtpPGZRQzEubGVuZ3RoO2krKykg ew0KCQkJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJxYyIr ZlFDMVtpXSkpIHsNCgkJCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50 QnlJZChmUUMxW2ldKTsJCQkJCQkJDQoJCQkJCQkJaWYoWE1MQ1V0aWwuZ2V0 Rmlyc3RUZXh0KHNwYW5UYWcpLmdldERhdGEoKS50cmltKCkubGVuZ3RoKCk+ MCl7DQoJCQkJCQkJCXFjMUNlbGxDb2xvciA9ICIjRkY2NjAwIjsJDQoJCQkJ CQkJCXN0ck1pc3NpbmdEYXRhID0gIiAiOw0KCQkJCQkJCX1lbHNlew0KCQkJ CQkJCQlxYzFDZWxsQ29sb3IgPSAiI0ZGMzMzMyI7DQoJCQkJCQkJCXN0ck1p c3NpbmdEYXRhID0gIiBtaXNzaW5nICI7DQoJCQkJCQkJfQ0KCQkJCQkJCVhN TENVdGlsLmdldEZpcnN0VGV4dChzcGFuVGFnKS5zZXREYXRhKFhNTENVdGls LmdldEZpcnN0VGV4dChzcGFuVGFnKS5nZXREYXRhKCkudHJpbSgpK3N0ck1p c3NpbmdEYXRhKTsNCgkJCQkJCQljZWxsID0gKEhUTUxUYWJsZUNlbGxFbGVt ZW50KSBzcGFuVGFnLmdldFBhcmVudE5vZGUoKTsNCgkJCQkJCQljZWxsLnNl dEJnQ29sb3IocWMxQ2VsbENvbG9yKTsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJ CQkJCWZvciAoaW50IGk9MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJCQkJ aWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJxYzIiK2ZRQzJbaV0p KSB7DQoJCQkJCQkJc3BhblRhZyA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFD MltpXSk7DQoJCQkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkg c3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCQkJY2VsbC5zZXRCZ0Nv bG9yKHFjMkNlbGxDb2xvcik7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJ CQkJDQoJCQkJdGVtcGxhdGVUYWJsZS5hcHBlbmRDaGlsZCh0ZW1wbGF0ZVJv dy5jbG9uZU5vZGUodHJ1ZSkpOw0KCQkJCWlmIChzYW1lUGF0KSB7DQoJCQkJ CWxhc3RSb3cgPSAoSFRNTFRhYmxlUm93RWxlbWVudCkgdGVtcGxhdGVUYWJs ZS5nZXRMYXN0Q2hpbGQoKTsNCgkJCQkJbGFzdFJvdy5zZXRCZ0NvbG9yKCIj ZmZmZjk5Iik7DQoJCQkJCWxhc3RSb3cuZ2V0UGFyZW50Tm9kZSgpLnJlbW92 ZUNoaWxkKGxhc3RSb3cpOw0KCQkJCQlyb3dDb3VudC0tOw0KCQkJCQlyZWND b3VudC0tOw0KCQkJCX0NCg0KCQkJCWZvciAoaW50IGk9MDtpPGZRQzEubGVu Z3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50QnlJ ZChmUUMxW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVu dCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCWNlbGwuc2V0QmdD b2xvcigiIik7DQoJCQkJfQ0KCQkJCWZvciAoaW50IGk9MDtpPGZRQzIubGVu Z3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50QnlJ ZChmUUMyW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVu dCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCWNlbGwuc2V0QmdD b2xvcigiIik7DQoJCQkJfQ0KCQkJCS8vIGdhcmJhZ2UgY29sbGVjdGlvbiBi ZWdpbg0KCQkJCWx1bmdDRE91dGNvbWUgPSAgICBudWxsOw0KCQkJCWVuY0lk ID0gbnVsbDsNCgkJCQlwYXRpZW50SWQgPSBudWxsOw0KCQkJCWNlbnRlck5h bWUgPSBudWxsOw0KCQkJCWNlbnRlcklkID0gbnVsbDsNCgkJCQlpZihjb3Vu dGVyJTQwMD09MCl7DQoJCQkJICAgUnVudGltZS5nZXRSdW50aW1lKCkuZ2Mo KTsNCgkJCQl9DQoJCQkJLy8gZ2FyYmFnZSBjb2xsZWN0aW9uIGVuZCANCgkJ CX0NCgkJCXRlbXBsYXRlVGFibGUucmVtb3ZlQ2hpbGQodGVtcGxhdGVSb3cp Ow0KCQkJDQoJCQl9Y2F0Y2goRXhjZXB0aW9uIGUpew0KCQkJCWUucHJpbnRT dGFja1RyYWNlKCk7CQkJCQ0KCQkJfQkJDQoJCXJldHVybiBwYWdlOw0KICAg IH0gICAgDQoJDQovKglwdWJsaWMgWE1MT2JqZWN0IGhhbmRsZVNhdmUoKQ0K CSAgICAgIHRocm93cyBIdHRwUHJlc2VudGF0aW9uRXhjZXB0aW9uIHsNCgkJ Ly9TeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZVNhdmUoKSAgbWV0aG9kIGNh bGxlZCA9PT09PT09PSAiKTsNCgkJCVNpbXBsZURhdGVGb3JtYXQgZm9ybWF0 dGVyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQgKCJ5eXl5TU1kZGhobW1zcyIp Ow0KDQoJCSAJU3RyaW5nIG5vdyA9IGZvcm1hdHRlci5mb3JtYXQobmV3IERh dGUoKSk7DQoNCgkJIAlTdHJpbmcgZmlsZU5hbWUgPSAgbm93ICsgIkx1bmdE YXRhUUMueGxzIjsNCg0KCQkgCXRoaXMuZ2V0Q29tbXMoKS5yZXNwb25zZS5z ZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vbXMtZXhjZWwiKTsNCgkJCXRo aXMuZ2V0Q29tbXMoKS5yZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtRGlz cG9zaXRpb24iLCAiYXR0YWNobWVudDsgZmlsZW5hbWU9IiArIGZpbGVOYW1l KTsNCg0KCQkJTEFSR09RQ2VDUkZWaWV3SFRNTCBwYWdlID0gbnVsbDsNCgkJ CQ0KCQkJCXBhZ2UgPSAoTEFSR09RQ2VDUkZWaWV3SFRNTCkgaGFuZGxlRGVm YXVsdCgpOw0KDQoNCgkJCUhUTUxUYWJsZVJvd0VsZW1lbnQgcWMxUm93ID0g cGFnZS5nZXRFbGVtZW50UUMxUm93KCk7DQoJCQlxYzFSb3cuZ2V0UGFyZW50 Tm9kZSgpLnJlbW92ZUNoaWxkKHFjMVJvdyk7DQoNCgkJCUhUTUxUYWJsZVJv d0VsZW1lbnQgcWMyUm93ID0gcGFnZS5nZXRFbGVtZW50UUMyUm93KCk7DQoJ CQlxYzJSb3cuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHFjMlJvdyk7 DQoNCgkJCS8vSFRNTFRhYmxlUm93RWxlbWVudCBhdWRpdFJvdyA9ICBwYWdl LmdldEVsZW1lbnRBdWRpdFJvdygpOw0KCQkJLy9hdWRpdFJvdy5nZXRQYXJl bnROb2RlKCkucmVtb3ZlQ2hpbGQoYXVkaXRSb3cpOw0KDQoJCQlIVE1MVGFi bGVSb3dFbGVtZW50IGZpbHRlclJvdyA9IHBhZ2UuZ2V0RWxlbWVudEZpbHRl clJvdygpOw0KCQkJZmlsdGVyUm93LmdldFBhcmVudE5vZGUoKS5yZW1vdmVD aGlsZChmaWx0ZXJSb3cpOw0KDQoJCQkNCgkJCUhUTUxUYWJsZVJvd0VsZW1l bnQgcm93VG9SZW1vdmUgPSBwYWdlLmdldEVsZW1lbnRSZXBvcnRoZWFkZXIo KTsNCgkJCXJvd1RvUmVtb3ZlLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGls ZChyb3dUb1JlbW92ZSk7DQoJCQkNCgkJCXJvd1RvUmVtb3ZlID0gcGFnZS5n ZXRFbGVtZW50QnV0dG9uUm93KCk7DQoJCQlyb3dUb1JlbW92ZS5nZXRQYXJl bnROb2RlKCkucmVtb3ZlQ2hpbGQocm93VG9SZW1vdmUpOw0KCQkJDQoJCQly b3dUb1JlbW92ZSA9IHBhZ2UuZ2V0RWxlbWVudFF1ZXJ5VGV4dFJvdygpOw0K CQkJcm93VG9SZW1vdmUuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHJv d1RvUmVtb3ZlKTsNCgkJCQ0KCQkJcm93VG9SZW1vdmUgPSBwYWdlLmdldEVs ZW1lbnRSZXN1bHRTdGF0aXN0aWNzKCk7DQoJCQlyb3dUb1JlbW92ZS5nZXRQ YXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQocm93VG9SZW1vdmUpOw0KCQkJDQoJ CQkNCgkJCXJvd1RvUmVtb3ZlID0gcGFnZS5nZXRFbGVtZW50Q29sb3VyTGVn ZW5kKCk7DQoJCQlyb3dUb1JlbW92ZS5nZXRQYXJlbnROb2RlKCkucmVtb3Zl Q2hpbGQocm93VG9SZW1vdmUpOw0KCQkJDQoJCQkJCQ0KCQkJTm9kZUxpc3Qg bmwgPSBwYWdlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOw0KDQoJ CQlmb3IgKGludCBpPW5sLmdldExlbmd0aCgpLTE7aT49MDtpLS0pIHsNCgkJ CQlOb2RlIG4gPSBubC5pdGVtKGkpOw0KCQkJCW4uZ2V0UGFyZW50Tm9kZSgp LnJlbW92ZUNoaWxkKG4pOw0KCQkJfQ0KCQkJDQoJCQlyZXR1cm4gcGFnZTsN Cgl9DQoqLw0KCXByaXZhdGUgU3RyaW5nIHJlcGxhY2UoU3RyaW5nIHN0ciwg U3RyaW5nIHBhdHRlcm4sIFN0cmluZyByZXBsYWNlKSB7DQogICAgICAgIGlu dCBzID0gMDsNCiAgICAgICAgaW50IGUgPSAwOw0KICAgICAgICBTdHJpbmdC dWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOw0KICAgIA0KICAg ICAgICB3aGlsZSAoKGUgPSBzdHIuaW5kZXhPZihwYXR0ZXJuLCBzKSkgPj0g MCkgew0KICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHIuc3Vic3RyaW5n KHMsIGUpKTsNCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZSk7 DQogICAgICAgICAgICBzID0gZStwYXR0ZXJuLmxlbmd0aCgpOw0KICAgICAg ICB9DQogICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyLnN1YnN0cmluZyhzKSk7 DQogICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsNCiAgICB9DQoJ DQoJDQoJDQoJcHJpdmF0ZSBBcnJheUxpc3Qgc3BsaXRNZWRpY2F0aW9uRm9y RXhwb3J0KFN0cmluZyBtZWRpY2F0aW9uVG9TcGxpdCl7DQoJCUFycmF5TGlz dCByZXN1bHRBbCA9IG5ldyBBcnJheUxpc3QoKTsNCgkJU3RyaW5nW10gbWVk aWNhdGlvbkFyciA9IG1lZGljYXRpb25Ub1NwbGl0LnNwbGl0KCIvIik7CQkJ CQkNCgkJU3RyaW5nIG1lZGljYXRpb25Eb3NhZ2UgPSIiOw0KCQlTdHJpbmcg bWVkaWNhdGlvblVuaXRzID0iIjsNCgkJDQoJCVN0cmluZyBtZWRpY2F0aW9u RG9zYWdlU3VtbWFyeSA9IiI7DQoJCVN0cmluZyBtZWRpY2F0aW9uVW5pdHNT dW1tYXJ5ID0iIjsNCgkJDQoJCWlmKG1lZGljYXRpb25BcnIhPW51bGwgJiYg bWVkaWNhdGlvbkFyci5sZW5ndGg+MCl7DQoJCQlmb3IoaW50IG0gPTA7bTxt ZWRpY2F0aW9uQXJyLmxlbmd0aDttKyspew0KCQkJCS8vU3lzdGVtLm91dC5w cmludGxuKCJtZWRpY2F0aW9uQXJyW21dIittZWRpY2F0aW9uQXJyW21dKTsN CgkJCQlpZihtZWRpY2F0aW9uQXJyW21dIT1udWxsICYmIG1lZGljYXRpb25B cnJbbV0udHJpbSgpLmxlbmd0aCgpPjApew0KCQkJCQltZWRpY2F0aW9uRG9z YWdlID0gbWVkaWNhdGlvbkFyclttXS5zdWJzdHJpbmcoMCxtZWRpY2F0aW9u QXJyW21dLmluZGV4T2YoIiAiKSk7DQoJCQkJCWlmKG1lZGljYXRpb25BcnJb bV0uaW5kZXhPZigiLSIpIT0tMSl7DQoJCQkJCQlpZihtZWRpY2F0aW9uQXJy W21dLmluZGV4T2YoIi0iKTxtZWRpY2F0aW9uQXJyW21dLmluZGV4T2YoIiAi KSl7DQoJCQkJCQkJbWVkaWNhdGlvblVuaXRzICA9ICBtZWRpY2F0aW9uQXJy W21dLnN1YnN0cmluZygwLG1lZGljYXRpb25BcnJbbV0uaW5kZXhPZigiLSIp KTsNCgkJCQkJCX1lbHNlew0KCQkJCQkgICAgICAgbWVkaWNhdGlvblVuaXRz ICA9ICBtZWRpY2F0aW9uQXJyW21dLnN1YnN0cmluZyhtZWRpY2F0aW9uQXJy W21dLmluZGV4T2YoIiAiKSsxLG1lZGljYXRpb25BcnJbbV0uaW5kZXhPZigi LSIpKTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCSAgIG1lZGljYXRp b25Vbml0cyAgPSAgbWVkaWNhdGlvbkFyclttXS5zdWJzdHJpbmcobWVkaWNh dGlvbkFyclttXS5pbmRleE9mKCIgIikrMSxtZWRpY2F0aW9uQXJyW21dLmxl bmd0aCgpKTsJDQoJCQkJCX0NCgkJCQkJaWYobT09MCl7DQoJCQkJCQltZWRp Y2F0aW9uRG9zYWdlU3VtbWFyeSArPSBtZWRpY2F0aW9uRG9zYWdlLnRyaW0o KTsNCgkJCQkJCW1lZGljYXRpb25Vbml0c1N1bW1hcnkgICs9IG1lZGljYXRp b25Vbml0cy50cmltKCk7CQkJCQkJCQkNCgkJCQkJfWVsc2V7DQoJCQkJCQlt ZWRpY2F0aW9uRG9zYWdlU3VtbWFyeSArPSAiLCIrbWVkaWNhdGlvbkRvc2Fn ZS50cmltKCk7DQoJCQkJCQltZWRpY2F0aW9uVW5pdHNTdW1tYXJ5ICArPSAi LCIrbWVkaWNhdGlvblVuaXRzLnRyaW0oKTsJCQkJCQkJCQkNCgkJCQkJfQ0K CQkJCX0NCgkJCX0JCQkJCQ0KCQl9DQoJCS8vU3lzdGVtLm91dC5wcmludGxu KCJtZWRpY2F0aW9uRG9zYWdlICIrbWVkaWNhdGlvbkRvc2FnZVN1bW1hcnkr IiBtZWRpY2F0aW9uVW5pdHMgIittZWRpY2F0aW9uVW5pdHNTdW1tYXJ5KTsN CgkJcmVzdWx0QWwuYWRkKG1lZGljYXRpb25Eb3NhZ2VTdW1tYXJ5KTsNCgkJ cmVzdWx0QWwuYWRkKG1lZGljYXRpb25Vbml0c1N1bW1hcnkpOw0KCQkNCgkJ cmV0dXJuIHJlc3VsdEFsOw0KCX0NCn0NCg== ------_=_NextPart_001_01C718A5.BE334AE3 Content-Type: text/plain; name="message-footer.txt" Content-Disposition: inline; filename="message-footer.txt" Content-Transfer-Encoding: 8bit -- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws ------_=_NextPart_001_01C718A5.BE334AE3--