Return-Path: Delivered-To: apmail-xml-cocoon-dev-archive@xml.apache.org Received: (qmail 38701 invoked by uid 500); 1 Apr 2002 19:03:44 -0000 Mailing-List: contact cocoon-dev-help@xml.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: cocoon-dev@xml.apache.org Delivered-To: mailing list cocoon-dev@xml.apache.org Received: (qmail 38690 invoked from network); 1 Apr 2002 19:03:43 -0000 X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3 content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C1D9AF.F395BD99" Subject: PATCH: making Cocoon 1.8 work with Tomcat4 Date: Mon, 1 Apr 2002 13:03:47 -0600 Message-ID: <9468FBBEFED404478368D82B2C71D44A0D6E7A@MAIL-02VS.atlarge.net> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: ESQL retake Thread-Index: AcHZnPvKkOK8qEiUQtWAVx7WpPuywwAEOVZA From: "Georg Von Sperling" To: X-OriginalArrivalTime: 01 Apr 2002 19:03:47.0488 (UTC) FILETIME=[F3BDA200:01C1D9AF] X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N ------_=_NextPart_001_01C1D9AF.F395BD99 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello there, I got to the point where to run C1.8.3-dev under T4 with some minor = changes (it will run fine without these, but exceptions are thrown when=20 request.getRequestDispatcher("foo.xml").forward(request, response) is called from an xsp. This is due to the change from the Servlet 2.2 = spec of T3.x to the Servlet 2.3 spec of the T4.x adheres to. When you = compile the checkout of C1.8 currently in CVS, the Servlet 2.2 jar is = checked out.=20 To make this functional: 1.) replace servlet_2_2.jar with servlet_2_3.jar (get it from = http://java.sun.com/products/servlet/download.html or use compiled = attached) 2.) add method to org.apache.cocoon.response.HttpServletResponseFacade = (attached) public void resetBuffer() { r.resetBuffer(); } 3.) add methods to org.apache.cocoon.EngineWrapper (attached) : a.) Inner Class: org.apache.cocoon.EngineWrapper.HttpServletRequestImpl public StringBuffer getRequestURL() { return null; } public void setCharacterEncoding(String env) { }; public Map getParameterMap() { return null; } b.) Inner Class: = org.apache.cocoon.EngineWrapper.HttpServletResponseImpl public void resetBuffer() { } Hope this helps, Georg von Sperling MedAptus, Inc. http://www.medaptus.com mailto://gvs@medaptus.com ------_=_NextPart_001_01C1D9AF.F395BD99 Content-Type: application/octet-stream; name="servlet_2_3.jar" Content-Transfer-Encoding: base64 Content-Description: servlet_2_3.jar Content-Disposition: attachment; filename="servlet_2_3.jar" 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 SwcIeBZk5c4AAAAuAQAAUEsDBBQACAAIAI6aFysAAAAAAAAAAAAAAAArAAAAamF2YXgvc2Vydmxl dC9odHRwL0h0dHBTZXNzaW9uQ29udGV4dC5jbGFzc32QS27CQAyGbYiIoDy6qzgAUroos2GXJQ+1 EmoX4QKTxEoHhUk0cRBnY8EBOFTVGYaqXdULaz7P79+Wr1/nC3ThBcYhDEMYIUyj5+1eHqVoWZVi rdsDGcmq0jHCIvJfpdSFSNgoXcRefRINmWNJLD6Za/FqU0JN49uCZZUTwmBFtaFMMuUIT38ky0oz nXjujBAmW6XpvT2kZHYyLV1jUrUmo41y0CuI3/LGVu3jboDw+LvXR7qnjBFm/+91H9pD6ACCi05g Te0x7AyHlh4g+CGr6t9y6PkbUEsHCGUZv+vXAAAAOQEAAFBLAwQUAAgACACOmhcrAAAAAAAAAAAA AAAAKQAAAGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbkV2ZW50LmNsYXNzhVA9T8MwFDyH NmlD+G4ZEZQlLQL/ABALoiBRwVDEnhSruApOlThRf1aZKjEgZn4U4tlECAmpeLjne753Pvvj8/UN KzjGrocdDy0PbR8MrgEvQAA/wDYaDK2wO5hEZcSTSI35XTwRI33K0KnaM56LrEyE5k9aT/k1wVDk uUwVidrh39HuA8Nh+N+sUblnUkl9zlC7SB8Fuf0SXJZC6RNjwrAxkErcFs+xyO6jOCGlP0yLbCT6 0pKx0NUUQ9MQe0h+NluhZcKt3XdAhr3l2Sj+coE1wwH9LoNZDtUAq4RrxDrEHapu72iB2gvt6AWE vu1eoY4+dbbQrPT7VI1Po7dA/R3O/GfCtf0bwk17y/oXUEsHCN1eol0OAQAA1AEAAFBLAwQUAAgA CACOmhcrAAAAAAAAAAAAAAAALAAAAGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbkxpc3Rl bmVyLmNsYXNzfY/BTgJBDIb/4oZVEOQmT0DgAPMAHkHiYaMHjPdZttEhyyyZ6W7g1Tz4AD6UcQYx eDJN2vTrn7/t59f7By4wRT/FVYpOii5hPM42utF75dk1JYt6E9mph5BW7L2p7H3DVu4mL4RkXhVM GP4ZZsYLW3az6EG4yYzlx3qbs3vWeRnEnVVVuzUvTWwGUaVKbV/VU77htRBuj6gWU6rjol9Dwuj/ s87Cvv8hc8dauAhrTmDBXlx14KJN4W0K0QLQSgjXSIBQe7EGfhk52t9QSwcISWk5rMsAAAAhAQAA UEsDBBQACAAIAI6aFysAAAAAAAAAAAAAAAAiAAAAamF2YXgvc2VydmxldC9odHRwL0h0dHBVdGls cy5jbGFzc41XWVQb1xn+LlpGiLERwiIWINtJbUdIgGo7IQRsWsBgKxarWIpxCoMYJBExo8yMHJzG Sd262eqkTdqmsWMS3CSlrduUxK0goXXy1p4896k97VPTc7qc5rSnT93c/47EZuTUcOa///3X+2+j Ox/+973rsKAO7zkw5sCjDnzBgecceNmBiw58X8DTAl4RcFnAnIBXBbwmYF7AFQHfEfC6gDcEvCng uwIWBHxPwA8EXBXwQydEtDhRykEZBzs4EPEZJyrwWSdcaOWMNg7aOTjKaR1crpNjxzh23AkPwk6U 44ES7MSJEtyBCAddHHRzbg+318s1+orhRT/Hopw2wLeDTmzDkJOwYQ4+x42OOOHESe5ylAuf4uBB vv28iLOY4EDnIMPBGRHPYJKDBAdpEc9CFvFVzIi4wMHzSIn4GjQRX4ck4gUOvsHBNzn4FsZFvARV xLcRE3EJUyJ+hCdFvMUZP+Yii/iKiLdhiHgHp0X8BA+L+CkUEVnMilhCUsQy4hxMi3gXEgPbz2Dx 14QZdvhrItPSaSmUkpR4KGpoSSXebDKHTHiSocrfvlWmLTM1JWskafWHa9pzC5nz0FLIXlUh+iYb 5K7CHy6s3eQPm+TZkC5rp1OyEYrm1rCSzhgkJkszzXnNjJFMhY5LesKQJlIyKe/3bzDZMzEtx4zm mq0kfvYCghR/YwH6bZrc5DsfTsEIa29LcC1hNbcW3xJ//f+R7Zd1NaPF5LaMMmkqeAopmOXZSjeL fncBRmETLbcjmY+yYJ5a/Tc1QsIw0qHjBPId0S8/nJF145OSJ/hH28Lmwb0mVvio9sbGe+8fO0BD 0BQKMTgOx1JJJWm0EOdwHrG2q5Myw7Z2VdENSTGGpFSG9s6jclqTY5IhTzJs52cbpDzr9dwNgxiJ DvSHu4+NdYYjHQylkaQid2dmJmRtgBeMwV0obs8tilv5SYV0Rs19Z5KbLR8tZNcupdOyQue0xxKS 1mowlMRUxZCSin5CPkNkSqeU0hnKZE2rT6r1ekLVjDEaONKxxGVSKCaYc0keCe+SdV2K87zE18ox 2B++aR/JKUZjCXkmL8srKGvd0uZ9L/nLy5qHJl5C0rtUTR5QH5IVOpqV9wCDjS+0FZLKpDzbM0Uh mwEn1VC4p2M2JqeNpKpspK6/PBj2rlIHFT2TTpNTebJDiamT5HKD8l3rOQynUnJcSrVq8cyMrBgb hMo2CCmGHJc1ht3rtFy1O1VtRtqo5br5/bGJtBp8ReG2plfCzYywmYaM0TPVplJ59C0pMGUHEpr6 SK7xygu0GMPOWzUYjc86K+fSrEjy0bV4Z+vzY1rPa1MfUWNSKidJdaou+EbPNwjDvtua8y1m1uTM maO5XXdoT8lK3EhQMynyrGGelZpJyaRSG8J1pCVNl6lsJGai+X408V5VN45KBk2xy9z3ZWTtzGpl LNRN1Iy50SjWZSOy6k7PTOh5IYeh5uRxJ10mSgG6NVXiSzgPhidoVwSBrhb0+064g/+w02on7DFM kMTjtLuPZPhfuVtYhv8aDqxgx8gSfNdwz9tEZvgyQTesBAdgQ5SUh2jfQ5yza0Z8tDJabYElVK2r 2U3iGIrxIh7Jiy6TPxut6RWUkZ/qSOBdBBm6aKmjFzotAfqBtgZrs/jUcNBtMRei1jJwtNZty2L/ RRT7XL3zKK91281tta+MrbwGT9DVlMWdpkIdV7hrOOi1miYW107VQBcwsGNwsOMoZWFUsAewi/Vg L+ulk/ShgfWjg0UxyAZwig0izkahsFOUR7oO5aJgHoqBR/FCkA7YZDmygLOB6iz2tviumtmMm7kH 9uWfID1VQdcefrgFdAcD1dbxavt4FoddrmXc+yKnny8qWsCh4RWIlJfK94e5wWbKRC4ADg/a5uE+ X8QWIAZ9OVMW2lYHiHXlxrlgFkcWyW0DutGH7eZ6kmqVC3uCrqtgImxsG5xsO1yslJJahkPMTSHv oMeDVlaBdlpPMLrLEq2P7UQ/q8JJVo1R5sME24Uk2w2N7UGG+LNsHx5n+3GObF5gNVToa3goX+h/ UPnttD5WOYeSfFMtBn/B8VyAlT9zdFlagrW+St9kFvc3WD3WOdzxDg64KdT6JhuX89qWsOt9n8c6 3kJSczd+tQBXN2fUZVHDWStwjdRaKt1FS9jTXbeM+xY3sSkb1ehCL53sQaj0X5LPxhBd1IFfU1// hj4BfksX7t9Rfn5P0h/R8wfswh9Rgz+hHn9GI/6CNvwVx/Ax2fqIrP2N8vt3svhPev6FafybLP8H 9KNBfui6nG+STrJeQl4+ZJHAhrjzuejKDwCdt2Ik4GZL2N1kXcBLvNCHmmxem+tIFp9usHvsRfPr yl6bxUMtf5hCbWgSvDaP3TrupZE4uEpz1HqFLPZdRLOJ3P0BHE3F3uLr1vGfwxWxNDgXUBr0OL3F HufB6Hkn4+j1Kzc+DtLidUQXsM3KBYMW2pAF6qlGs/dCl24kateHaJpeM8BTlN9nqMrPUrddoC+c 5yhvzyNAXx919PFxD317HKHRb6ePjhP0uTGClzGDizREl3AOr5DWZZKaI8plvIFXcZWwtzBPPXSF XhOv4wOy80u8ST6eMsfpHL7IZ+t/UEsHCDmqIyigBwAAHQ4AAFBLAwQUAAgACACOmhcrAAAAAAAA AAAAAAAAKgAAAGphdmF4L3NlcnZsZXQvaHR0cC9Mb2NhbFN0cmluZ3MucHJvcGVydGllc5WRT2vD MAzF7/kUgt5D2WHsksNosz+QbaFJz8ar1cQ0kYOtdmxj332q2xQ6WKE36Un6vWc8gTmu9bZj6NxK d/YLDQT2lhqwtHa+12wdJRMoTmNRDx0CklpWSYLepyvnNhYV6R6VDYrdBimbRRH2InxPf8AG0OAx oN8JKO7EY+tSwkasdtghNdxmr8cWithDIzVJJPjwlhF65NaZ8Ta0zrPyqE1W7UtYSJkkLfOQHjYV OVa2HzrskRhN9hLlMZRMweDakqQSj8XDDG6mt3egyYzjsB0GQcvC+ydwi1DJIzpkuC+f4dyrQY5+ p5Psqa7LY2Z4zOt/mKIuF8UZanDhEqt8q66BbS+yllegjPwT41+aLIy0eV7kdX4Z+AtQSwcIbkIq 2hsBAAB8AgAAUEsDBBQACAAIAI6aFysAAAAAAAAAAAAAAAAtAAAAamF2YXgvc2VydmxldC9odHRw L0xvY2FsU3RyaW5nc19lcy5wcm9wZXJ0aWVzlZHRa9swEMbf/VccJI/FdbIx1kAeRuKtBa8NTfps FOniiMo6IZ2zrWP/+84OLQRKSpBA6HTf7/skjWB8Z2ZQkVZuzdH6JtWY8hApYGSL6eoAk3wYMC2K yXU/b6D4NJt+nk0L0FHZptUayt8BxtkoG8ESd6pzDK5n2hc0kAYwWL+j2Cq25KWtejsOKqrjFgFT Xa6zDGPMNdGzxdqrFmubaqZn9PPSwT2124hgEBZDB/wt/okOOq8E5dRWaBETxoMyaiBZyj02YnxA h77h/bwi31juDNwf6wrQAzpokckQ/IqW8VWa9hS5jqjMvELNneAXUlFZtmcOuUj2ZGpPXNs2OGzR M5o+6M8jrI/nSRKyktA7660Uxc6JaQqo7c5qpeVR4PH7Qh75y1f4cxRAotA7Sb+sveDb6g7WcjOH DKf+DfKQIXWh15wkuN1sVvCj3LxLHXI9PVYntEDpA9zqYX0Jr/sI93QBzcg3Mp4HLsuq3JTnmf8B UEsHCCowlmV0AQAA/QIAAFBLAwQUAAgACACNmhcrAAAAAAAAAAAAAAAAKwAAAGphdmF4L3NlcnZs ZXQvaHR0cC9Ob0JvZHlPdXRwdXRTdHJlYW0uY2xhc3N9U1tPE0EU/oZOu+2yUChCsdgCcmur7nrX KPEBAtqkgaQlJMQHXcqkrFl2m2UW8bf4A3zxxStGE333RxnPLAtYpbbZOXPOfN93Ljv789fX70jg Gu6nUU3jehp3NZgaLA03NNzUcEvDbR0pDOngGM4gjZyOJEbUckG5owZKyKtlwkAFMwauoGCQ4kUD d7DAkChXatG6ycDLNWXmy/UX9oFtubbXtpoycLz2w8q/IQazNzCUjms1xL4fBi2xFHo7riDC6HkE yqiVny7VotzpxZbreI58xJBajDd82d8RDAPLvrcvbU9u2m5Ivr5y2BId6VCUYeiJlJ2mCA5cIU2V g4FRX0a9udGorT1+tlqrrzBk644n1sK9bRFs2NsuieTO66vwvx70ZuSvOoo+0PI9KTxZF15b7lKD IghMxzc90balcyDcOJ5pC3msQKXSfrmbpo6PszOMRLkd36qtnzbIMN6rIoZJdXRo7sfN79IgzLrf st1jRRrOdISwYoQVj2k9lJ1QpRX2HkOpG6NUrD9myjB3DmDNX/J3XnULTffEUeEdellUcvqstuzJ qKZOZpV8GThSYIpubwqg61/ALObBKAL00V9XNzfa04UmmyRkEXlCTJJXIat+mVzfFwx8QPYdOVQ+ rYMkBk7fBqdPgycpUjqlVUlOEfXqET2JTzD+5mXBuYEMWeAqxmJekaziJasfYbw9paRUkI/Qeg/j MXSBZPrI9le3CMufd+XQ1RHPQ+djEekS+YrUIJKqdL74GkMRsaiIb5B/j2yOfcbgA/4NfCuXOEL/ jzO9ghoeL1LNJQySHeYzmOCzmOMFTNM5J5x6ytEgL/8GUEsHCK5PvsZ0AgAAagQAAFBLAwQUAAgA CACNmhcrAAAAAAAAAAAAAAAAJwAAAGphdmF4L3NlcnZsZXQvaHR0cC9Ob0JvZHlSZXNwb25zZS5j bGFzc41Xa3MTZRR+tluaabqUQltAruUeUiDgFSyCUootRootF4vXNNmmW9IkbDbQgqAoKgqioNyK oI7O+AVncKTtBLyNjtdxxtHR0T/gX/Cj43OSTZpkE4bp5Ox5z3uec95zeS/9+b8bX0LFSrznwssu vOLCqy4cd+E1F1534YQLJ114w4VTLrzpRhXudMMtpAJ3uQm7uwbVuEfIvULuE7JWyLpq1OB+4Vrc 5FqEWy/c+hq48ICQDUI2imyjGH1Qhg8J2STYVuE2C2mT4RYx8LCQdiEdMrFVyCNC/CJ7VMg2IZ0i 2y7cY0K6xEC3hn70CHlKyNMaEujTYCGoIYmQhv3o1XAAAQ1DMDUM4xkNh4QcFtgR7NDwPHZpeEG4 o9it4Rj2aHgLcQ2nReWMkLcR0/AOnhDypIazeFbDORmeF3JBhhfF5Yi4vCQu34Wu4bLMXhbEFUQV qJ7lHQpmeJb7BwL7Az4j5ttuGlFrt2lYutmioCE7EwlEw75ui5PhfHHSMiI+fywYiOgUL7HFQ76E bu6P6JavO/PtTFrxpEW4HhhsSXvdlaZ7FFR6OmQw3dPhdCQTzZ7c0gqslNaun9C2YxDpUk8J7VJx NZZS3FVGvkdW7ZTb4TgntsrEshITt/aZn2KRz/MU5bjfsuK+1lhsr6HnZ6xIoZ3ErkaXnojHoomM dtV6I2pYG1iI1lhIV+DerMdNPRiw9BAHbUNBPW4Z1FZQl2dilXhQMMVvRPVtycFe3dwR6I0Q3lim kW57TUxRKdVtsU2x0HBRH7m7Y0kzqG8xxLPCelQHQqFMJhRMJr+ZYbTrgZBuZuayvEa+I2plh7XB WNQKGNFEVlAfMkLdutVKsR61/Ho0bPUrmKpHg8xRlx4ymCFrZ5ffKTMj9JSRpeezvMhr+iLJRP+m ZF+f+Jgc1q0M320c5HobOG7tD5iBIDPWJih2ArMedqyjmqJMQ7AC4cLdlZnNpJ0ejURrbHDQsNLV rM+WpqMzV1cFs0ptr6yB+hLVVLA4K90ZTSTj8ZhJ89kV51meP9HXHZGIHg5Eui0WJE+jbkKjs3eA +VMwt+QBkm0Ptv+t+4ib/fYajafVbbWZggVl9SZsVUXTAgWTTD0hq6hJf7O1ruQoztIk9GiozTRj 0oLCZ9uG3ZAo7Ia6hKPstROiHcNxPYMp6HCOcx1OPq/DZSrbMsJLIZLc01UH0iVFEy+uKnAOlbxx ebcA/PLKSX95VaS/vK/4beKvH2FqG+TW8XKu4LfROw7N2zyKxd6bcPeMY/IoFnzKCQWDpNNoGOoA KtW9qFYjaCCvyM1om1lGI2Kmxnsdi5tTqKvABFheAVA/gVu9SglvUhvkoVGapV8BNaUwtdKB+hM1 6h+U8OrNoVT+ZVErUpimOlC/E/UbJbyrS6LmpFDvRP1N1F+U8HK3UYuKwmqowNUcSBIO9Rop3wBl ANMrcK0I8CvpQQIq0oB5NqDK2zyGGcW6/2IASMsOlXUx0+niF9LnSru4o1j3n5wLvl9sxFKOFEmL uEhhluJI1Qfsgvexl+PKtK4iDx97gQsL0bMVR87OkvKNVFp/juKI5xgpX1Kl9ec79T8mfRGP29HM tfUnUX9BserRgiBewk4b5E/vJPYNQWt+wPybqOgRvHcMc8dR6+cuUXuaxzFlFGtEZcJuZqsch0s9 gRnqSSxST+V8yI+vwdKBNDkTdYX0dLmyLHSW5QLLcj7nbRJ/Z8qhFznRl4geKUDzgWqjCzb47BSW ODf499zg3xWkk09bG16w/WZz0y51br9vuf2+KcDzVVzKPZt+mdP9T3T/YwH8XNnVe5zwM4Sfzgse fIn32IVaSw1J3UzCG0dQL1akGcYwL4Xl+bZqJUp1H4tvsvhxSvmet62sthdRZy+CQG/lKBqL0cNc yUFMUYco5T8CZU5YrzOEIwQepuRi+RO22XnCfs20f0XJSPkTdoWzWDeISlFyqfwJu9KJ+oKozynh /zJlwlrlDOsjhvUhJZdzmSwup88JGidoLA0q24Krneu7zvV9ljsQ90Fuzcj/UEsHCC/CacPzBQAA +g4AAFBLAwQUAAgACACOmhcrAAAAAAAAAAAAAAAAJQAAAGphdmF4L3NlcnZsZXQvTG9jYWxTdHJp bmdzLnByb3BlcnRpZXM9ibEKwjAQQPd8xUFnix2EKmRzEaQOxTkc8aKBeAfXi4Piv2tVXB689xrY UsJaDIpELPlOJ5hMM58hcxK9omVh18D+v9/1awTE4Tg6R6oti4U8Sd+v1qHzgxggw248wFwWHcQL KkYj3cBj+XQ3LJVa00p+xs8Tlon8h+4FUEsHCA8bX/58AAAAmgAAAFBLAwQUAAgACACNmhcrAAAA AAAAAAAAAAAAJQAAAGphdmF4L3NlcnZsZXQvUmVxdWVzdERpc3BhdGNoZXIuY2xhc3N1kM9KAzEQ xr+pa4P1T1sEj3rVg+YBehHUglBasOI9ux01Zd2sSbb22Tz4AD6UOFEp+C9zSOY3X76Z5PXt+QVr OEZfYVthR6Gr0COcHo7mZmGWOrBflBz19HO/4seGQxz8Vw21qwIPjm4I2ZmbMaFzsSy4jlY4oTuy FY+bh5z9tclLKe99OZ7bUJtY3LM/SdZyb+oaX/DQJpW6df7J+JmcbFWUTTLeTTptnb6crFoQeh+0 NNWdnuRzLiLh4PusvxoS9v98zcq1TfJFLaTVygibWIcMIllbaAYStvWTSXSSHhvvUEsHCCCr2+Hi AAAAYwEAAFBLAwQUAAgACACNmhcrAAAAAAAAAAAAAAAAGwAAAGphdmF4L3NlcnZsZXQvU2Vydmxl dC5jbGFzc31Qy07CQBQ9A4XxLQqoK3VZFtoPYGNCNCEhkljjvi2XZkidwT4I/poLP8CPMt6pjWgC zuZkzjn33MfH59s76rjCmURboiPRlTgR6Li90SxYBF4S6Njz81TpuC9wUdFLL6N0kVDu+d84MHqq rKPu9p4ELt1/bdZys8HyQC8FZXl/k5rNjc6ojHAGZkICO7fLiOa5Yl7gcKQ03RfPIaWPQZiwvFeV XttAdvumSCO6U1aTE26VmleBVkz5nyEFDlbUUE8N91Na5QLt8jDKeMPxT2cOWJ1rHM4oYmN37QoC 52v5X1nSSiqiJt8TNdjXcHg3SICxhWaJR2iUeIwtCOyyy2F0mDnFdsU0ud6yvA7/atj/AlBLBwiv 8WZcEQEAAPIBAABQSwMEFAAIAAgAjZoXKwAAAAAAAAAAAAAAACEAAABqYXZheC9zZXJ2bGV0L1Nl cnZsZXRDb25maWcuY2xhc3N1UMtKA0EQrI6bBBPzEj2IF08SDzof4DEoCCEK6w/MxnaZsDsLk96Q b/PgB/hRYm9iWIw6h66hurqmej4+395xgGuM2hi0MSScjK+mC7uyJrM+NbEE59NbwtmOLsVl5s6X OQcrrvDau/jurc2SwypjMfEWJ4UXXotKLse/Tf98J5oUL0wYTJ3nWZknHJ5tkilzXHu+uvSmGiV0 4qIMc753lWKYsjx4J0822JyFA+F0n5opLAkj5X9mJPRrrlKpXx3vMVnwXDXn/62pkVqEBgjViSJC Fy29EI4QbbCH5gb7+t1QXUdrA4dfUEsHCDE+UCzoAAAAgQEAAFBLAwQUAAgACACNmhcrAAAAAAAA AAAAAAAAIgAAAGphdmF4L3NlcnZsZXQvU2VydmxldENvbnRleHQuY2xhc3ONVNtyEkEQ7QkYFIiQ xFhRY9REEyAmq1GffEolsYoqcinAvA/QgaWWXZydRfw1H/wAP8qyZ3bYLLcUPNB1Tp/T090z8Pff 7z+QgEP4nILDFBylwErBBwaJQrHM4EmhWOnyAbcc7ratmhS22/7K4NmIDqTtWOdu0EPBpe25lCsV Yo7zYRP7OjFdpnjDoFiYwYeU7Vlltx9IYpH3qPDefK2mrhpdbMoFhNEYO/OFLkrre7VCot35Ij19 DdWZX+aqhpaPYuBQvSr+CNCXZ7bf57LZQUG+gwV8tTCS+nhx9annShwq08YsE+1+fwY/vU6lLN2v rHeE95M3HNTi5KnXQgbpM+wLbHKJLQLRO/AZ5Cq2i5dBr4GirlwM1sd7PlKlyVTzAtHEb7aSZNso TyQd3QgkwdU4vOQ9pLrpdlSBQZ5A2bXlNReUlShoD5OU8eWIv+BdT9yg8KlFBhnF2D2s/+qjydtu LL9GjDK37q4yNFWRO9dcduiHo9HEfY9Evh6M5o6hEz986GHrI1YVoxZXiFI7QlF2b71wVLOzcK7x Barewr4NbybN3DGE8pN3zWA7evsX3Ln1BI1IP4Lo8hhs3ffWjH8qHfMnHK9NnQnseQOM3WfWj93n MumAgfpsJhk8hzQAxReQ0nEL8jq+hIyO24Z/BQ90fG34NwbvwGMddw3/1uB3kKVTntIpSYpLxOzB I53ZhxUdC7CsYxFysBQpk7ChWiO+ZPIH1AGL2Pdj6CM8HEOrJq7reGzwJ1gjAf2x0vcSbP4HUEsH CCPJkYtEAgAAlQUAAFBLAwQUAAgACACNmhcrAAAAAAAAAAAAAAAAMAAAAGphdmF4L3NlcnZsZXQv U2VydmxldENvbnRleHRBdHRyaWJ1dGVFdmVudC5jbGFzc4VRTU/CQBSchZYCFsWKn4kHblDFXrxh TAzBEwFNDYnHFjekpGyTum34WZpITDz4A/xRxtdiTIAGD515nTc7+9r39f3xiTxaONFwoOGwjBwK JTBoCRR1VLCl4wi7Oo5RZag1mr2JEzuW74ixNXAnfCTbq7ItQ0+MSa43UnVmPfMw9rm07AV3AiH5 TLabQ4buP5713PUBkpzClSc8ec2gdIInzrDT8wTvR1OXhw+O65NiZE1uZM69PMONpIYbSd6NuZAX yQGGsh1E4Yjfekm0Nuay70ypKlI1dPyISnPTdy1n0pWbzL8eRaRXqHGSjzotKAfQk0sWlFa0I+I8 dSrQCbfp7ZJ0hbhqnr0jb57PoZitOdRX0ug3ERppfwAVdyjjnrQ+dWpULxJOiRmxar5Befk7VkjF R8J9lDKs6qqVE+6lcxo/UEsHCMnvQXlDAQAAeAIAAFBLAwQUAAgACACNmhcrAAAAAAAAAAAAAAAA MwAAAGphdmF4L3NlcnZsZXQvU2VydmxldENvbnRleHRBdHRyaWJ1dGVMaXN0ZW5lci5jbGFzc42Q QU7DMBBF/7RRAwFaWHEBFrAoPgCrqoJVBBJF7J1khBy5DnInUc/WBQfgUAg7bRAbJDSSv/T8Z749 n1+7D4wxxyzFaYqzFFOCus5r3emt2rDvLIta7XXZOOGtLES8KVrh+46d3N28EpJlUzFhlhvHj+26 YP+iCxvI1R+tudkIO/a3MYiQrZrWl/xgYs9UD65FVXFFOP8Bz7xuuogufqF3q8veFmcpq92beipq LoVw2aNWjFX9Y4dYwvxfPxz8EwpLolAjAOOEcIwECJod9CRquD8K5wjpN1BLBwjiE3K82AAAAFcB AABQSwMEFAAIAAgAjZoXKwAAAAAAAAAAAAAAACcAAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRDb250 ZXh0RXZlbnQuY2xhc3N9UMFOwkAUnFehhVpFFIwHD+CpYHQ/QOOF6KnqAcO9xQ0pqW1Stw2fpScS D4YzH2V8uxATYtI9zNs3OzP7dtc/X9/YwxVOHZw46DjouiDYGhwPHlwPx2gQOv4gmIdlKJIwnYnn aC6n6obQ29IL8S7zMpFKjDd1lKVKLrSk6/83DiaEvl/t1Br7Nk5jdUeojbJXSWgFcSqfirdI5i9h lDBztuu6L2WqrnUuwR1nRT6VD7HWtWdS7UoJTc0ZDU9pZixUnAiTsRmUcF41Iz+i6tgEoc//S9DL 4uphn/GAuwvuLa728HKJ2ifvCIeMrmEfUUfATBvNrb7HVec0hkvUV7A+/hy24SeMR+aW1i9QSwcI RZn+ZgsBAADWAQAAUEsDBBQACAAIAI2aFysAAAAAAAAAAAAAAAAqAAAAamF2YXgvc2VydmxldC9T ZXJ2bGV0Q29udGV4dExpc3RlbmVyLmNsYXNzfY8xTwJBEIXfwMUDVCQ0FLTGaIH7AyxBEpKLFhD6 vWNilix7yd7cBf1pFv4Af5RxF6SgMVO85Mt7M2++fz6/0MYE/RSXKa5SXBPu7rOtbvReVewby6KW R52WTngvzw07eXpYE5JpuWHCTWYcv9S7nP1K5zaQ8XkiM5WwY/8Y1xJ6y7L2Bc9NtA6Ko2fGlfjy nTeE4R9aOCNGW/MR4SBmldXuTb3mWy6EMDqgWoxVh06nM4Tb//qfbBcUPqcwLQCthNBFAgTtRQ28 EznSX1BLBwhv+7qPzQAAACQBAABQSwMEFAAIAAgAjZoXKwAAAAAAAAAAAAAAACQAAABqYXZheC9z ZXJ2bGV0L1NlcnZsZXRFeGNlcHRpb24uY2xhc3N1UclOAkEQfc02LCOogOACCZ6GQeEDNF6IntCD EPU6QAcHccYMAxKv6n+oX6BxIfHgB/hRxuoBISAcuqr7LVXVqe+fzy+4sY20hDUJ6xI2gmDwixAI woVggOiQjGWERYjISEKWkUKcIaZkS02tqxVamtEolG1LNxo7DIkJuHJumddatcWJcSvZE4a48t8l cHUGPrOQECeVuZRvVzd0e4/BUzTrnCFS0g1+1LmscqsiRDTBnPniZW51W9ze79X4la2bRl7oGIJl s2PV+IEuzNEGt0tmTWvpN7x+yNttrUGoTOixadpFrdMWonGDUbEJdNSWIS3QXqE96F2YnoEWYf0V Roa2wQA6LrEDunnpTsuhGKVXhrLgvWofnhdHGKMoNgmcwYNTRx4ZyjcJF4xPzfXhndZfUPGmo18c 6nOEuymHHL269Q5pbAo71B2Z7qnArWNcGhrzw0ZhNfcBn/DmZngf4ccTFvBA6CrlgTc1+tMbpOeR xeeArxQTlF1Y+QVQSwcIkbkoZH0BAADMAgAAUEsDBBQACAAIAI2aFysAAAAAAAAAAAAAAAAmAAAA amF2YXgvc2VydmxldC9TZXJ2bGV0SW5wdXRTdHJlYW0uY2xhc3NlUE1LAlEUPW98M2Nmatlki6Ra BGbULAJXUVAUDEQtlCBajfoWEzoj4yhCW4voC/wBlTs3btoUtOgH9Bv6LdV9E1jQW9zz7nn3nnvu e/98fUMEq5jRMaljSkc6BgWaDHoc4xiLYxpRhkhu2QrjEYOeO9m2LJlrG47rBJsMfMerCobYbqci GoHjuU2G5L7jioNWvSz8kl2u0XOmKPx2TQSW22gFxcAXdn3t1G7b1Fj0Wn5F7DmyLC050/FM63Ck 95f97WZYkGzHbP4Im/8HkDeCKkNUgrTEF2ljBfIo4HJHMMQpyxIyQjX/Av5EF4YERS0kKxQNyH+R pWckoRFuZe+hRoaRAh9gfmWuqzBD7ZW6nCAVe0TG4Nk+tAES+WeoxwVV6X99GPwBUYMauDIcDcmT NHBOfi5I+JI8XdGgaxp5g1ncYgl3yBG3jh4mqJKHXhlS4RbJb1BLBwixLTeUVQEAAMgBAABQSwME FAAIAAgAjpoXKwAAAAAAAAAAAAAAACcAAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRPdXRwdXRTdHJl YW0uY2xhc3N9VW1TG1UUfpZssmFZSkmL5aWQIrZAaJNWCvKuFAgGAikvYgEtLmGB0CXBzQb45LS1 Hf+AOsPUcfQTX63OhIwd9YPOOOMf0N+gf0Gt52zC22ZxPzz33nPO85xz7z1z97d/v/8RLtxAxgW8 hBdvenHfiw0vkl586IUhYVlCXMKKBE3CqoQ1CesSEhIeyJDRIqMMrTIRAzLK0SbjHK7LqMANhmAp ziPEjpsyzW4xvM7QznCboYOhk+ENhi4O7mboYehl6GPo52wDCmYwyDDEEFPwPt5WsIS7Cj7ApAIV Ewp0LCjYxFsKUhyXwgjDKMMYQ5QhxjClYIv10rjDMMwQZogwjCswMSagpFwW4GppjVg4J6CqZag1 uqFuqyFdTa6FZkwjkVzrFSCS3XIPn+EezrvDZ7jD7BZbIq1DHBU5IyqSFxk7wz3G7mstxU7H+ODZ gRkzoYemtXQqY8S1O5nkiq71cmIHAmXsdrAvnjDFlje0uOlchNiywBLevrieSCbMAQGevsJEHEqt aALKh1LJtKkmzTlVz9BaHtmNa1tmgqwClOjM7HRkcnQpHImOCKiIJpLaZGZzWTNm1WWdon1OSWv/ b5fVM5qxrWtmLGNuZUziaOpmkOMp9YwVGk6wsie+rhqDpoBKzTCCyZS5lEinuro6updukXM1ZWyq 5Cxd08y8dH6er0GA36ogkQoNkQrtcFsz0rSlo70JuHAYEYmdsF48tJ4s7zDY2iULqnFTMwSct9/B KdNhKZcsk6ntmqEJLZ1W17Rwofjqs46JjpBdu8F0/qyC0VRc1fOCdCuNljNUcIYcDpRu/Djco2vJ NXOdbjyZ0XUB7i1yUHrJGnXaddk2331wVdXT3AH5lWlwO0jWIrZKtB0jYWpiIz0lMoAS1OJdzEPA O9ZKJCs9DzSvpCdrGoPkmaVVK438lfrEHF75DtXPaSHgHuE5eh6BRbiJ5iUxkZ+gAq2eRia6Aweo PKZ4LKNGSA8QZeXQqzSWcIZAXQ6vZuE/Dpctx3NS/wZzNBPJXmqRR47ILquK0kBzDk0O5H+I/LeN PFqUuSmH1xzIfxH5Txt5zKnsqw7kX4j8s40cLSrbn8M1B/IfRP7dRo4VyPt04hKNS22/wuNzR9uy qOl3DexjvK0+i4udYpXoEz7aQ/u3qPa5srjU4xZ/gNLjqfG4XqBsvko8gG+mxl3jyaGqx/0C3vka 9wEu/BSoErNofuIS6i9//TJ7XFIn/WWADCXdhoId6pBdVOMhruARAniMm/gY/XiCMJ7iLj6hsndw n/4Qp8ufKpQ/TiPv3V+3hwouUaISJ/ah8NzD88D1UydSS20DPCOpL6iQZ9TAX6IGX6EBe6dS0A+r kKKJRm40KeArKT5coRweQbFRD7sxULhWOVCXRW0gi0ZbwwthuIVRlAojNoWRI4X83cqB5izqnBQ+ I4XPSeFTm8JoUQ3U0ZedFB6RwmNSeGhTGHPaRb2TwjwpLJDCPZtCtGgX/iwanBR0UtgkhQc2hVhR DdSgfieFBlLwk0K9TWHKaRdXnBRuk0IHKbSfUnjPetEW/wNQSwcI0ThoN48EAADCCQAAUEsDBBQA CAAIAI6aFysAAAAAAAAAAAAAAAAiAAAAamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdC5jbGFz c4VUW1PTQBQ+gUq5FGixjoJ4R2hViDd86RNCHZkp0KHIgz5tk0MbJsnGzaaDf80Hf4A/yvHsZtsG GsfOdL49357Lt3vO5vefn79gGrbhQxHsIrwuwpsivLVgulY/tGCtVm9dsgGzPW5/TC4uUKB7isxF 0bCgOtz0WdizO1J4YY/o1SGdSM+3m2ESoGDS42E2RO+1uMN8JLpyjT5iEXEbhruyYxQDH6XdSfEw jBJJ1ZAFDa3zqwWbtUklWXEn3Ut0ZOP/jqNT7P7TcSzoFL8nGMsDL46YdPr6Uu7kxZ1bsJXHf8ur nOc5eRSVs7DPXbRg/gAjgQ6T6JLRvHIwUtcdW7Dc8kI8ToIuijPW9cn3trlEI31H5aWgDk+Eg588 5VLqodyTVLebSDIrWfOYBUh5q8Tt95lgjkTRDB3ukkgLyormocRQtjDsyb4FS2Pq7EeEKZHpoAVz RKSDQDpG6zjV0aYaAVIROkvWpBFJlY0Yo2wly50zP1HkgiIFl9zhflowneF0h9Z+mymxi9oKuMQ9 1xVZ+zOPZXrsiZ6nCTu0DDANUVecCsrabS4oxawXd9BJhGrF8GEdnox6RmM/ZL+EcRJFFITu8IYz buWbA2HBeu5rMXrp/gSdZICZzpbia42uxjlNnaEpo8+D+q0W6G3DIgDhGsxqvA9FjetwS+MDYz+E BaC3QFEFQouYRzCndx6byCewpPEpzGt8ZvgNqGh8bjJtwsyNTFsUSWqVJLJqxq9u8AUsa3xp7FcG t43CHShpfAdlje9hReMu2eM6U/S/R+spuPsXUEsHCG/+WrtUAgAAIQUAAFBLAwQUAAgACACOmhcr AAAAAAAAAAAAAAAAKQAAAGphdmF4L3NlcnZsZXQvU2VydmxldFJlcXVlc3RXcmFwcGVyLmNsYXNz hVZLdxRFFP4qDyaZdEJeBIgB8wDyAkZUFOUhIQQzmheZEARE09NTmXTs6Z70IwZduHHlyo1LXbtw oUc9nOg5svQcXfoD3PsDXHq8d7pnMkl1h0V/XXXrq3tv3bp1q/7475ff0IgL+LQFqymUU9hKwU3B S8FPIUijGWfSaMLZNhzBOYZRhjGGcYYJhkmG8wwXGC4yZBheYrjE8DLDKwyvMlxmeI3hdYYrDG8w vMlwleFaK1K4zq0bDG9puItZhnkND/COhoeY1vAItzS8j5saHnPrA9zR8CFua1jjUR3vashjRoPB 3QIWNEjmrWNKQ5FHN7hrMnyEOQ0Wt0oMNit1kNWwzSY/xj0NO1jU8ATzAo1j41mB/rHxuU19W8+Y TuZWsL4uXVlYlnpBulcFequDlm4XMznfNe0iiU9WxYFvWpkZOyhJV/dNx66fUhmbcwzdkiTu2iee 18skOxPJdjKedLct6Wdy4T9rlwOfrEm9RLTBJNqy3Aqk51+tLGW1gg8Fzo2pLtevYjG/KQ2e9Dxi bbmXE4l7LkW+3Da9su4bG5XoHYubR36OxskfxVmOY6pLYZ1DY4fHiDlHrpm26d8QaJp2ClIgPbNj yDLvmydwdM605UJQykt3Rc9bNHz6eVHvi5qDhm7bjj+Yl4N2YFmUU/up9129XJbuRVZHVnNO4Bry jsk2tKL0p3xaWD7wqdtV313QS5Ic6yXZ9Ibu6oYv3RnbcAoUBYFOFju2L21/TtpFf0OgY0+08qQs Q0FdLgm0kiBMSfKj1vZCP5bIRkmSEQpGfZeSNfSsJok8666XrepWwMI2FrqO7xiOFRoMT1M4Qm1r SWdn2yu9kuPLqULBre/POp4fuhfFL4yBkmGh9hw1SzKcz2EPvavvLzkuqWgxvZw0ApeGeqrnPbtY ywA6jVXpPdsLymWaJAvVcNfRhvfSL2tZsqhbU26RCoDt15E6D+aowMBhySQwcthwlEC0Ly5FaFvW ZUzKrWrQvH2p1OvFpk3aq2nFEFXnZtC5oK+BqyOAAWrfxRLhMvVu0sXSQP8TE0/RMvk72n9F04Nu 8RStzyYmf8bQDzQmsELYR5pAtbuJSncLVe5uqtnHqS+40EfaRkgXa2ub+AlDk7tIN+D7mgJ2AviM kC6FaMIw/Vma5gm7aBMK/wtCuj/i+ZrK/4qQrpp4frvAdwf43xI+TtLfoer/kZAuMFpmDP+oyn+G HGFTZQME33rxljqVmWKNcC0pUl0q3yKkuzRhK7rVrfiTkO7deAM96lL+IjSSHOpV+X8T0m2e4NAx 1aF/CGXSXvSpBv4lpEdC/F4cVyN0dt9eFBNjdUJxTXxJuJHk2knV1CVCM4nfr/KvE27i7Yh/KuI3 M//gqk1CegYl+P6C6vvnhFaSLwOqL42EpST+KZXfQWgnHbnTypET/YT0Zovnv6jydwjpeRfxRw8s eLABe0UqzUNiBWmRIwm9BKNJY1TmGumvVSad38VwozIrS+VnliT0dIwy6qCpEcUUvqH/17W04sh9 UqutV6La2ntoXe2mmYBL6KEDAXqwRSPvkawB9/8HUEsHCBe+wfOSBAAA+wsAAFBLAwQUAAgACACO mhcrAAAAAAAAAAAAAAAAIwAAAGphdmF4L3NlcnZsZXQvU2VydmxldFJlc3BvbnNlLmNsYXNzbVHb TsJAED0rNxHxiuINrzGBB+0H8CbRhISIEaKJb6UMZUlpyXZr0E/zwQ/wo4zTFhTUPuzZOXN25sz0 4/PtHQlc4CyDvQz2MzgQSJQrdYFiudIYmM+mIT3jTklXPyqpSVUFCtOMY7q20dKctGfpQEvHaHiW 6RDT5xN6bPiknh3SRivGZqBHgebnZA6rUdeH6HwSSJbrYbBV/ttnlp9tFPLJmtclgaXrsUUjLT3X F1htSJdug2GHVNvsOJwuTPrfkz9iCV2GtfhVywuURTcy1OR6TuD3r4Jej5RA3iYd31vyNazAca1v KtPihVy7ltdlZwJZpmM33NaeHzDOxivk8tKvecOh1Jq6ApvTNdeb384F1n5Gb3YGZGmB0r97nM4h kFLkE+tyEX679+fdr3Fc81xNrm6Qa+u+wMoP1X4ZsSbrT0dJ8z/BAsIvn2SvyIKn4yjJKJgp8A2M W0hHuI1MhEUs/lLuIPWL2cVSpC1x1RAPJ3iEXITHEzzBcoSnyPNrgQ0+F7D+BVBLBwgj6kOFhwEA AL4CAABQSwMEFAAIAAgAjpoXKwAAAAAAAAAAAAAAACoAAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRS ZXNwb25zZVdyYXBwZXIuY2xhc3OFVUtzE0cQ/sYv2dLaOPKL4Bhs85JtjAAn4IRHAMWAEgVTmMIF BRRreSwvtdpVdmddJpdcc84xOSa3cIAqUpR5JKdUqlIFRzgmR34FxTfS2rK0sjn465nu/rp7e9Tt f989/RPNmMSVdkzHkInhqxhmYrgQw8U4WjAQp3VnAq34WMMuDYMaPtEwpGG3hj0ahjWMdKANo/q0 V8M+Dfs1HDAwhUkNRwyc1KdTOGjgNMYMnMG4gS8xYeAcUgbO47CBS9olq+FrnDDwDdIGchq+1QEu 46hAc2osKzCQGsvdM1fMtOWmr3iWo+Y9S0nvpEDvusU2nUJ6TtFY2KwOlGWnc27etCXV+0P1atqX 3ootVXquImcDVQoU6dIs0m9kK7+r0i+5jq9jsbLrZbwp0JLK6ktfKlrLZv3mYrR+NPWBLNqp7ZTl WOoMk2TcRSkQn1nNy5Ky6CCwI2c58nJQXJDeNXPBpnnPBwsfWD8P503HcdXwghx2AtsWGKxznvfM Ukl6h3VEJp5zAy8vL1g6TWLJDvzl88HSkvQEOgtSVc5z1ve09vKeWTY9M89XmnHy7iJbIdBBdeXz WXmhtusMWahmrvhWXpkWy8+4xaKllFwU6Fn/JWRnN1rBXlY7n7VtWTDtc14hKEpHbXLqrjrNLtyT eSUwtG27BPZtaw87JNDqSV8yXKIs1/vS7m3E6fRrW9TNe8Z1FAvMSaeglgW6qqpr90u6B361Xwm/ mhUjHMAWMCv/mvTwAOjmeQrHiJ/ydpZD3US5c/wJYhP/oPMZmm8kxRO0/zU+8QeSj2gTOE7sZxTg FuPdRjvuIIm7GOBd6AlmDB3tAG+CMj7+GMk1dAhU+fFynhfowHN8xlNLuSahRz+sZbSWHRd4sMFu K1seE7klGvsnBB7W+f9A5EJp7G9E/d8SuXvCr6nz74z6/1jzJWdxKMw0FDJbNbOetEzkbmucpCua 5KeaJFyIjT9nR7RdfxO5O0P/usfpjj7OKz7OS2qyW3E+inLekPOaGi7lkHOQem1JaM7gGnqaIqQH lL9Tk9uS1Bsl/UL5MzVc+o1IE2voi5J+o/yVGv6T2ILUHyX9T/kfNbMbYzIdjknvtiOS5CsBHtFH FwL04DtavqCuCZ+/B1BLBwgfpJt+UAMAAGAHAABQSwMEFAAIAAgAjpoXKwAAAAAAAAAAAAAAACUA AABqYXZheC9zZXJ2bGV0L1NpbmdsZVRocmVhZE1vZGVsLmNsYXNzO/Vv1z4GZgZdBg52BjZ2BnZG Bn6fzLxUv9LcpNSikMSknFRGBrHgzLz0nNSQjKLUxBTf/JTUHL2sxLJERgau4PzSouRUt0yQKgGQ mH5OYl66vn9SVmpyCSODPEioQr84tagsJ7VEH8MYNkYGJgZGBghgZGAFkkwMLABQSwcIMTNfyXoA AACTAAAAUEsDBBQACAAIAI6aFysAAAAAAAAAAAAAAAAoAAAAamF2YXgvc2VydmxldC9VbmF2YWls YWJsZUV4Y2VwdGlvbi5jbGFzc5VSTW8SURQ9bxgYGLClaK0IpRY3wwCycVfjxo+EpDEmWBfupvBC xtCBDEPTv6DW6NaFGlfduNBEYlLTxrh07S/wT7gznjeOSJEu3Nw7791zzr3n3fn68/AYMdRx2UDJ wJoJASMFDUkVUiqYGeSwmMElXMxgHcsZlLEiELMqTYG8Vdl86Ow6e42h9Hd7Mmi0fueNEPFAoG41 T0GE142e43UbrcB3ve5G5b7AsjX//vyc+6Yq1Kz/0k9ccz03uC6g3+h3pIB5Uw582XYC2REQtLS4 6XryzmhnW/r3nO0eISunWjRb/ZHflrddBctveYS5PUW6tdeWg8Dte1cUlcJ8CbMrg4hKmzxM4Vuy 3fc6Q4G0O7wr/R3Hkx5RpbmNJ+IC5ZOAeRMIpAZ/FY3hn05GROJONW4d/A00tVp+aWrZYea+mQ3W c1jg+SxPW8w687pd/4iYXRsjUXiJtK2NET9A0i4w27Ex9PcEcXGMZSQZHyOOJzCxT6mnlNpn7RkK eM52j3AOCPH82RhVoyobacxpu6oa6SckFzgv8JqSbyj5KiRmI+ImaapaDInF6eGK/w5Xoj/gE5WO kMIxlY+whM+sfeFwh6HyUuT9aqSctWtqpCq9z8yVC99mSLWAc41oxp9YKyAT6azypN48bn9A4t2E nAgvv08IRaQjS1ZEyJKgv4ChHcDgZ/ztDPcH4yrORKzpNvos9BvjhXDL+V9QSwcIMY+7NBoCAAAH BAAAUEsBAhQACgAAAAAAPGiBLAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAQAP1BAAAAAE1FVEEtSU5G L1BLAQIUABQACAAIADxogSwvYxWEMQAAADAAAAAUAAAAAAAAAAAAAAAAACcAAABNRVRBLUlORi9N QU5JRkVTVC5NRlBLAQIUAAoAAAAAACZngSwAAAAAAAAAAAAAAAAGAAAAAAAAAAAAEAD9QZoAAABq YXZheC9QSwECFAAKAAAAAAAmZ4EsAAAAAAAAAAAAAAAADgAAAAAAAAAAABAA/UG+AAAAamF2YXgv c2VydmxldC9QSwECFAAKAAAAAAAmZ4EsAAAAAAAAAAAAAAAAEwAAAAAAAAAAABAA/UHqAAAAamF2 YXgvc2VydmxldC9odHRwL1BLAQIUABQACAAIAI2aFyuiVNYg+QAAAJ4BAAAaAAAAAAAAAAAAAAAA ABsBAABqYXZheC9zZXJ2bGV0L0ZpbHRlci5jbGFzc1BLAQIUABQACAAIAI2aFyu+PtBW0gAAADoB AAAfAAAAAAAAAAAAAAAAAFwCAABqYXZheC9zZXJ2bGV0L0ZpbHRlckNoYWluLmNsYXNzUEsBAhQA FAAIAAgAjZoXK3EUpkDqAAAAfgEAACAAAAAAAAAAAAAAAAAAewMAAGphdmF4L3NlcnZsZXQvRmls dGVyQ29uZmlnLmNsYXNzUEsBAhQAFAAIAAgAjZoXK7CFIfBLAwAAcwcAACIAAAAAAAAAAAAAAAAA swQAAGphdmF4L3NlcnZsZXQvR2VuZXJpY1NlcnZsZXQuY2xhc3NQSwECFAAUAAgACACNmhcrd/v0 RKsFAABaCwAAHwAAAAAAAAAAAAAAAABOCAAAamF2YXgvc2VydmxldC9odHRwL0Nvb2tpZS5jbGFz c1BLAQIUABQACAAIAI2aFysTG/J2IQwAAKAYAAAkAAAAAAAAAAAAAAAAAEYOAABqYXZheC9zZXJ2 bGV0L2h0dHAvSHR0cFNlcnZsZXQuY2xhc3NQSwECFAAUAAgACACNmhcrjP7MDYgCAAClBQAAKwAA AAAAAAAAAAAAAAC5GgAAamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdC5jbGFz c1BLAQIUABQACAAIAI2aFytAqQPryQMAAB4LAAAyAAAAAAAAAAAAAAAAAJodAABqYXZheC9zZXJ2 bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0V3JhcHBlci5jbGFzc1BLAQIUABQACAAIAI2aFytc 5G2lnAQAADEKAAAsAAAAAAAAAAAAAAAAAMMhAABqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZs ZXRSZXNwb25zZS5jbGFzc1BLAQIUABQACAAIAI2aFyvP+8kTNAMAAHsIAAAzAAAAAAAAAAAAAAAA ALkmAABqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZVdyYXBwZXIuY2xhc3NQ SwECFAAUAAgACACNmhcrIlN58rwBAACBAwAAJAAAAAAAAAAAAAAAAABOKgAAamF2YXgvc2Vydmxl dC9odHRwL0h0dHBTZXNzaW9uLmNsYXNzUEsBAhQAFAAIAAgAjZoXK6pd+UjXAAAAPQEAADYAAAAA AAAAAAAAAAAAXCwAAGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbkFjdGl2YXRpb25MaXN0 ZW5lci5jbGFzc1BLAQIUABQACAAIAI2aFyvmv0zl4AAAAFYBAAA1AAAAAAAAAAAAAAAAAJctAABq YXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlc3Npb25BdHRyaWJ1dGVMaXN0ZW5lci5jbGFzc1BLAQIU ABQACAAIAI2aFytcdq7MiAEAAFEDAAAwAAAAAAAAAAAAAAAAANouAABqYXZheC9zZXJ2bGV0L2h0 dHAvSHR0cFNlc3Npb25CaW5kaW5nRXZlbnQuY2xhc3NQSwECFAAUAAgACACOmhcreBZk5c4AAAAu AQAAMwAAAAAAAAAAAAAAAADAMAAAamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXNzaW9uQmluZGlu Z0xpc3RlbmVyLmNsYXNzUEsBAhQAFAAIAAgAjpoXK2UZv+vXAAAAOQEAACsAAAAAAAAAAAAAAAAA 7zEAAGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbkNvbnRleHQuY2xhc3NQSwECFAAUAAgA CACOmhcr3V6iXQ4BAADUAQAAKQAAAAAAAAAAAAAAAAAfMwAAamF2YXgvc2VydmxldC9odHRwL0h0 dHBTZXNzaW9uRXZlbnQuY2xhc3NQSwECFAAUAAgACACOmhcrSWk5rMsAAAAhAQAALAAAAAAAAAAA AAAAAACENAAAamF2YXgvc2VydmxldC9odHRwL0h0dHBTZXNzaW9uTGlzdGVuZXIuY2xhc3NQSwEC FAAUAAgACACOmhcrOaojKKAHAAAdDgAAIgAAAAAAAAAAAAAAAACpNQAAamF2YXgvc2VydmxldC9o dHRwL0h0dHBVdGlscy5jbGFzc1BLAQIUABQACAAIAI6aFytuQiraGwEAAHwCAAAqAAAAAAAAAAAA AAAAAJk9AABqYXZheC9zZXJ2bGV0L2h0dHAvTG9jYWxTdHJpbmdzLnByb3BlcnRpZXNQSwECFAAU AAgACACOmhcrKjCWZXQBAAD9AgAALQAAAAAAAAAAAAAAAAAMPwAAamF2YXgvc2VydmxldC9odHRw L0xvY2FsU3RyaW5nc19lcy5wcm9wZXJ0aWVzUEsBAhQAFAAIAAgAjZoXK65PvsZ0AgAAagQAACsA AAAAAAAAAAAAAAAA20AAAGphdmF4L3NlcnZsZXQvaHR0cC9Ob0JvZHlPdXRwdXRTdHJlYW0uY2xh c3NQSwECFAAUAAgACACNmhcrL8Jpw/MFAAD6DgAAJwAAAAAAAAAAAAAAAACoQwAAamF2YXgvc2Vy dmxldC9odHRwL05vQm9keVJlc3BvbnNlLmNsYXNzUEsBAhQAFAAIAAgAjpoXKw8bX/58AAAAmgAA ACUAAAAAAAAAAAAAAAAA8EkAAGphdmF4L3NlcnZsZXQvTG9jYWxTdHJpbmdzLnByb3BlcnRpZXNQ SwECFAAUAAgACACNmhcrIKvb4eIAAABjAQAAJQAAAAAAAAAAAAAAAAC/SgAAamF2YXgvc2Vydmxl dC9SZXF1ZXN0RGlzcGF0Y2hlci5jbGFzc1BLAQIUABQACAAIAI2aFyuv8WZcEQEAAPIBAAAbAAAA AAAAAAAAAAAAAPRLAABqYXZheC9zZXJ2bGV0L1NlcnZsZXQuY2xhc3NQSwECFAAUAAgACACNmhcr MT5QLOgAAACBAQAAIQAAAAAAAAAAAAAAAABOTQAAamF2YXgvc2VydmxldC9TZXJ2bGV0Q29uZmln LmNsYXNzUEsBAhQAFAAIAAgAjZoXKyPJkYtEAgAAlQUAACIAAAAAAAAAAAAAAAAAhU4AAGphdmF4 L3NlcnZsZXQvU2VydmxldENvbnRleHQuY2xhc3NQSwECFAAUAAgACACNmhcrye9BeUMBAAB4AgAA MAAAAAAAAAAAAAAAAAAZUQAAamF2YXgvc2VydmxldC9TZXJ2bGV0Q29udGV4dEF0dHJpYnV0ZUV2 ZW50LmNsYXNzUEsBAhQAFAAIAAgAjZoXK+ITcrzYAAAAVwEAADMAAAAAAAAAAAAAAAAAulIAAGph dmF4L3NlcnZsZXQvU2VydmxldENvbnRleHRBdHRyaWJ1dGVMaXN0ZW5lci5jbGFzc1BLAQIUABQA CAAIAI2aFytFmf5mCwEAANYBAAAnAAAAAAAAAAAAAAAAAPNTAABqYXZheC9zZXJ2bGV0L1NlcnZs ZXRDb250ZXh0RXZlbnQuY2xhc3NQSwECFAAUAAgACACNmhcrb/u6j80AAAAkAQAAKgAAAAAAAAAA AAAAAABTVQAAamF2YXgvc2VydmxldC9TZXJ2bGV0Q29udGV4dExpc3RlbmVyLmNsYXNzUEsBAhQA FAAIAAgAjZoXK5G5KGR9AQAAzAIAACQAAAAAAAAAAAAAAAAAeFYAAGphdmF4L3NlcnZsZXQvU2Vy dmxldEV4Y2VwdGlvbi5jbGFzc1BLAQIUABQACAAIAI2aFyuxLTeUVQEAAMgBAAAmAAAAAAAAAAAA AAAAAEdYAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRJbnB1dFN0cmVhbS5jbGFzc1BLAQIUABQACAAI AI6aFyvROGg3jwQAAMIJAAAnAAAAAAAAAAAAAAAAAPBZAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRP dXRwdXRTdHJlYW0uY2xhc3NQSwECFAAUAAgACACOmhcrb/5au1QCAAAhBQAAIgAAAAAAAAAAAAAA AADUXgAAamF2YXgvc2VydmxldC9TZXJ2bGV0UmVxdWVzdC5jbGFzc1BLAQIUABQACAAIAI6aFysX vsHzkgQAAPsLAAApAAAAAAAAAAAAAAAAAHhhAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXF1ZXN0 V3JhcHBlci5jbGFzc1BLAQIUABQACAAIAI6aFysj6kOFhwEAAL4CAAAjAAAAAAAAAAAAAAAAAGFm AABqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZS5jbGFzc1BLAQIUABQACAAIAI6aFysfpJt+ UAMAAGAHAAAqAAAAAAAAAAAAAAAAADloAABqYXZheC9zZXJ2bGV0L1NlcnZsZXRSZXNwb25zZVdy YXBwZXIuY2xhc3NQSwECFAAUAAgACACOmhcrMTNfyXoAAACTAAAAJQAAAAAAAAAAAAAAAADhawAA amF2YXgvc2VydmxldC9TaW5nbGVUaHJlYWRNb2RlbC5jbGFzc1BLAQIUABQACAAIAI6aFysxj7s0 GgIAAAcEAAAoAAAAAAAAAAAAAAAAAK5sAABqYXZheC9zZXJ2bGV0L1VuYXZhaWxhYmxlRXhjZXB0 aW9uLmNsYXNzUEsFBgAAAAAuAC4A8Q4AAB5vAAAAAA== ------_=_NextPart_001_01C1D9AF.F395BD99 Content-Type: application/octet-stream; name="EngineWrapper.java" Content-Transfer-Encoding: base64 Content-Description: EngineWrapper.java Content-Disposition: attachment; filename="EngineWrapper.java" LyotLSAkSWQ6IEVuZ2luZVdyYXBwZXIuamF2YSx2IDEuMTQgMjAwMS8wMi8yNCAxODoyMDo0MiBn cmVlbnJkIEV4cCAkIC0tDQoNCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgICAgICAgICAgICAg ICAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMQ0KID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCg0KIENvcHlyaWdodCAoQykgQHllYXJAIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91 bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCg0KIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYS0NCiB0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z IGFyZSBtZXQ6DQoNCiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2YgIHNvdXJjZSBjb2RlIG11c3QgIHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UsDQogICAgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCg0KIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSwNCiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uDQogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQoNCiAzLiBUaGUgZW5kLXVzZXIgZG9jdW1lbnRh dGlvbiBpbmNsdWRlZCB3aXRoIHRoZSByZWRpc3RyaWJ1dGlvbiwgaWYgYW55LCBtdXN0DQogICAg aW5jbHVkZSAgdGhlIGZvbGxvd2luZyAgYWNrbm93bGVkZ21lbnQ6ICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzICBzb2Z0d2FyZQ0KICAgIGRldmVsb3BlZCAgYnkgdGhlICBBcGFjaGUgU29mdHdhcmUg Rm91bmRhdGlvbiAgKGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLiINCiAgICBBbHRlcm5hdGVseSwg dGhpcyAgYWNrbm93bGVkZ21lbnQgbWF5ICBhcHBlYXIgaW4gdGhlIHNvZnR3YXJlIGl0c2VsZiwg IGlmDQogICAgYW5kIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgYWNrbm93bGVkZ21lbnRzIG5v cm1hbGx5IGFwcGVhci4NCg0KIDQuIFRoZSBuYW1lcyAiQ29jb29uIiBhbmQgICJBcGFjaGUgU29m dHdhcmUgRm91bmRhdGlvbiIgIG11c3Qgbm90IGJlIHVzZWQgdG8NCiAgICBlbmRvcnNlICBvciBw cm9tb3RlICBwcm9kdWN0cyBkZXJpdmVkICBmcm9tIHRoaXMgIHNvZnR3YXJlIHdpdGhvdXQgIHBy aW9yDQogICAgd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVh c2UgY29udGFjdA0KICAgIGFwYWNoZUBhcGFjaGUub3JnLg0KDQogNS4gUHJvZHVjdHMgIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgIGJlIGNhbGxlZCAiQXBhY2hlIiwgbm9yIG1h eQ0KICAgICJBcGFjaGUiIGFwcGVhciAgaW4gdGhlaXIgbmFtZSwgIHdpdGhvdXQgcHJpb3Igd3Jp dHRlbiBwZXJtaXNzaW9uICBvZiB0aGUNCiAgICBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4N Cg0KIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywNCiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQogRklUTkVTUyAg Rk9SIEEgUEFSVElDVUxBUiAgUFVSUE9TRSBBUkUgIERJU0NMQUlNRUQuICBJTiBOTyAgRVZFTlQg U0hBTEwgIFRIRQ0KIEFQQUNIRSBTT0ZUV0FSRSAgRk9VTkRBVElPTiAgT1IgSVRTIENPTlRSSUJV VE9SUyAgQkUgTElBQkxFIEZPUiAgQU5ZIERJUkVDVCwNCiBJTkRJUkVDVCwgSU5DSURFTlRBTCwg U1BFQ0lBTCwgIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCAgREFNQUdFUyAoSU5DTFUtDQog RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCAgT0YgU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsgTE9TUw0KIE9GIFVTRSwgREFUQSwgT1IgIFBST0ZJVFM7IE9SIEJVU0lO RVNTICBJTlRFUlJVUFRJT04pICBIT1dFVkVSIENBVVNFRCBBTkQgT04NCiBBTlkgIFRIRU9SWSBP RiBMSUFCSUxJVFksICBXSEVUSEVSICBJTiBDT05UUkFDVCwgIFNUUklDVCBMSUFCSUxJVFksICBP UiBUT1JUDQogKElOQ0xVRElORyAgTkVHTElHRU5DRSBPUiAgT1RIRVJXSVNFKSBBUklTSU5HIElO ICBBTlkgV0FZIE9VVCBPRiBUSEUgIFVTRSBPRg0KIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQoNCiBUaGlzIHNvZnR3YXJl ICBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlICBieSBtYW55IGluZGl2 aWR1YWxzDQogb24gIGJlaGFsZiBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlICBGb3VuZGF0aW9uIGFu ZCB3YXMgIG9yaWdpbmFsbHkgY3JlYXRlZCBieQ0KIFN0ZWZhbm8gTWF6em9jY2hpICA8c3RlZmFu b0BhcGFjaGUub3JnPi4gRm9yIG1vcmUgIGluZm9ybWF0aW9uIG9uIHRoZSBBcGFjaGUNCiBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBwbGVhc2Ugc2VlIDxodHRwOi8vd3d3LmFwYWNoZS5vcmcvPi4NCg0K ICovDQpwYWNrYWdlIG9yZy5hcGFjaGUuY29jb29uOw0KDQppbXBvcnQgamF2YS5pby4qOw0KaW1w b3J0IGphdmEubmV0Lio7DQppbXBvcnQgamF2YS51dGlsLio7DQppbXBvcnQgamF2YXguc2Vydmxl dC4qOw0KaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC4qOw0KaW1wb3J0IG9yZy5hcGFjaGUuY29j b29uLmZyYW1ld29yay4qOw0KDQovKioNCiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB3cmFwcGlu ZyBtZXRob2RzIHRoYXQgYWxsb3cgdGhlIGVuZ2luZSB0byBiZQ0KICogY2FsbGVkIGV2ZW4gZnJv bSBvdGhlciBBUElzIG9yIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zLg0KICoNCiAqIE5PVEU6IHRo aXMgaXMgYSBkaXJ0eSBoYWNrIGFuZCBJIGtub3cgaXQuIFRoZSBwcm9ibGVtIGlzIHRoYXQgQ29j b29uIGlzDQogKiBhIHNlcnZsZXQgYW5kIHRoZSBzZXJ2bGV0IEFQSSBhcmUgbm90IHRoYXQgZWFz eSB0byBkZWFsIHdpdGggd2hlbiB5b3UNCiAqIGVudGVyIG90aGVyIG1vZGVzIG9mIG9wZXJhdGlv biAobGlrZSBjb21tYW5kIGxpbmUgb3IgUk1JKS4NCiAqDQogKiBXZSB3aWxsIG5lZWQgdG8gY2xl YW4gdGhpcyB1cCBhbmQgcmVtb3ZlIHRoZSBuZWVkIG9mIGRpcmVjdA0KICogSHR0cFNlcnZsZXRS ZXF1ZXN0L1Jlc3BvbnNlIGVtdWxhdGlvbiB3aGVuIHdlIGludGVncmF0ZSB3aXRoIFN0eWxlYm9v ay4NCiAqIEJ1dCBJIGhhdmUgbW9yZSBpbXBvcnRhbnQgc3R1ZmYgdG8gZG8gcmlnaHQgbm93Lg0K ICoNCiAqIEBhdXRob3IgPGEgaHJlZj0ibWFpbHRvOnN0ZWZhbm9AYXBhY2hlLm9yZyI+U3RlZmFu byBNYXp6b2NjaGk8L2E+DQogKiBAdmVyc2lvbiAkUmV2aXNpb246IDEuMTQgJCAkRGF0ZTogMjAw MS8wMi8yNCAxODoyMDo0MiAkDQogKi8NCg0KcHVibGljIGNsYXNzIEVuZ2luZVdyYXBwZXIgew0K DQogICAgcHJpdmF0ZSBFbmdpbmUgZW5naW5lOw0KICAgIHByaXZhdGUgU3RyaW5nIHVzZXJBZ2Vu dDsNCg0KICAgIHByb3RlY3RlZCBFbmdpbmVXcmFwcGVyKENvbmZpZ3VyYXRpb25zIGNvbmZzKSB0 aHJvd3MgRXhjZXB0aW9uIHsNCiAgICAgICAgdGhpcy5lbmdpbmUgPSBFbmdpbmUuZ2V0SW5zdGFu Y2UoY29uZnMsIG5ldyBPYmplY3QoKSk7DQogICAgICAgIHRoaXMudXNlckFnZW50ID0gKFN0cmlu Zyljb25mcy5nZXQoInVzZXItYWdlbnQiKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgdm9pZCBoYW5k bGUoT3V0cHV0U3RyZWFtIG91dCwgRmlsZSBwYXRoVG9Eb2N1bWVudCkgdGhyb3dzIEV4Y2VwdGlv biB7DQogICAgICAgIHRoaXMuZW5naW5lLmhhbmRsZShuZXcgSHR0cFNlcnZsZXRSZXF1ZXN0SW1w bChwYXRoVG9Eb2N1bWVudCksIG5ldyBIdHRwU2VydmxldFJlc3BvbnNlSW1wbChvdXQpKTsNCiAg ICB9DQoNCiAgICBwdWJsaWMgdm9pZCBoYW5kbGUoT3V0cHV0U3RyZWFtIG91dCwgRmlsZSBkb2N1 bWVudFBhdGgsIFN0cmluZyBkb2N1bWVudCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQogICAgICAgIHRo aXMuZW5naW5lLmhhbmRsZShuZXcgSHR0cFNlcnZsZXRSZXF1ZXN0SW1wbChkb2N1bWVudFBhdGgs IGRvY3VtZW50KSwgbmV3IEh0dHBTZXJ2bGV0UmVzcG9uc2VJbXBsKG91dCkpOw0KICAgIH0NCg0K ICAgIC8qKg0KICAgICAqIER1bW15IGltcGxlbWVudGF0aW9uIG9mIHRoZSBIdHRwU2VydmxldFJl cXVlc3QgY2xhc3MgdG8gY3JlYXRlIGENCiAgICAgKiBmYWtlIGJ1dCBmdW5jdGlvbmFsIHJlcXVl c3QgZm9yIHRoZSBtYWluIGVuZ2luZS4NCiAgICAgKiBOT1RFOiB0aGlzIHdvcmtzIG9ubHkgd2l0 aCB0aGUgZGVmYXVsdCBmaWxlIHByb2R1Y2VyLg0KICAgICAqLw0KICAgIHB1YmxpYyBjbGFzcyBI dHRwU2VydmxldFJlcXVlc3RJbXBsIGltcGxlbWVudHMgSHR0cFNlcnZsZXRSZXF1ZXN0IHsNCg0K ICAgICAgICBwcml2YXRlIFN0cmluZyBwYXRoID0gIi8iOw0KICAgICAgICBwcml2YXRlIFN0cmlu ZyBkb2N1bWVudCA9IG51bGw7DQoNCiAgICAgICAgcHVibGljIEh0dHBTZXJ2bGV0UmVxdWVzdElt cGwoRmlsZSBwYXRoKSB7DQogICAgICAgICAgICB0aGlzKHBhdGgsIG51bGwpOw0KICAgICAgICB9 DQoNCiAgICAgICAgcHVibGljIEh0dHBTZXJ2bGV0UmVxdWVzdEltcGwoRmlsZSBwYXRoLCBTdHJp bmcgZG9jdW1lbnQpIHsNCiAgICAgICAgICAgIGlmIChwYXRoICE9IG51bGwpIHsNCiAgICAgICAg ICAgICAgICB0aGlzLnBhdGggPSBwYXRoLnRvU3RyaW5nKCk7DQogICAgICAgICAgICB9DQoNCiAg ICAgICAgICAgIGlmIChkb2N1bWVudCAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgdGhpcy5k b2N1bWVudCA9IGRvY3VtZW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAg cHVibGljIFN0cmluZyBnZXRQYXRoVHJhbnNsYXRlZCgpIHsNCiAgICAgICAgICAgIHJldHVybiB0 aGlzLnBhdGg7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBhIHF1aWNr IGhhY2sgdG8gbWFrZSBjb21tYW5kIGxpbmUgb3BlcmF0aW9uIHdvcmsNCiAgICAgICAgLy8gd2l0 aCBGaWxlUHJvZHVjZXIuIENoZWNrIHRoaXMgd2hlbiBTZXJ2bGV0IDIuMiBhcmUgaW4gcGxhY2Uu DQogICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGF0aEluZm8oKSB7IHJldHVybiAiIjsgfQ0KDQog ICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGFyYW1ldGVyKFN0cmluZyBuYW1lKSB7DQogICAgICAg ICAgICBpZiAobmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJ1c2VyLWFnZW50IikpDQogICAgICAgICAg ICAgIHJldHVybiB1c2VyQWdlbnQ7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg cmV0dXJuIG51bGw7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgQnVmZmVyZWRSZWFkZXIg Z2V0UmVhZGVyICgpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgICAgICAgICByZXR1cm4gKGRv Y3VtZW50ID09IG51bGwpID8gbnVsbCA6IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgU3RyaW5nUmVh ZGVyKGRvY3VtZW50KSk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgRW51bWVyYXRpb24g Z2V0UGFyYW1ldGVyTmFtZXMoKSB7IHJldHVybiBudWxsOyB9DQogICAgICAgIHB1YmxpYyBTdHJp bmdbXSBnZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIG5hbWUpIHsgcmV0dXJuIG51bGw7IH0NCiAg ICAgICAgcHVibGljIGludCBnZXRDb250ZW50TGVuZ3RoKCkgeyByZXR1cm4gLTE7IH0NCiAgICAg ICAgcHVibGljIFN0cmluZyBnZXRDb250ZW50VHlwZSgpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAg ICAgcHVibGljIFN0cmluZyBnZXRQcm90b2NvbCgpICB7IHJldHVybiAibm9uZSI7IH0NCiAgICAg ICAgcHVibGljIFN0cmluZyBnZXRTY2hlbWUoKSB7IHJldHVybiAibm9uZSI7IH0NCiAgICAgICAg cHVibGljIFN0cmluZyBnZXRTZXJ2ZXJOYW1lKCkgeyByZXR1cm4gQ29jb29uLnZlcnNpb24oKTsg fQ0KICAgICAgICBwdWJsaWMgaW50IGdldFNlcnZlclBvcnQoKSB7IHJldHVybiAtMTsgfQ0KICAg ICAgICBwdWJsaWMgU3RyaW5nIGdldFJlbW90ZUFkZHIoKSB7IHJldHVybiBudWxsOyB9DQogICAg ICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVtb3RlSG9zdCgpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAg ICAgcHVibGljIFNlcnZsZXRJbnB1dFN0cmVhbSBnZXRJbnB1dFN0cmVhbSgpIHRocm93cyBJT0V4 Y2VwdGlvbiB7IHJldHVybiBudWxsOyB9DQogICAgICAgIHB1YmxpYyBPYmplY3QgZ2V0QXR0cmli dXRlKFN0cmluZyBuYW1lKSB7IHJldHVybiBudWxsOyB9DQogICAgICAgIHB1YmxpYyBTdHJpbmcg Z2V0Q2hhcmFjdGVyRW5jb2RpbmcgKCkgeyByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMg Q29va2llW10gZ2V0Q29va2llcygpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIFN0 cmluZyBnZXRNZXRob2QoKSB7IHJldHVybiBudWxsOyB9DQogICAgICAgIHB1YmxpYyBTdHJpbmcg Z2V0UmVxdWVzdFVSSSgpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIFN0cmluZyBn ZXRTZXJ2bGV0UGF0aCgpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIFN0cmluZyBn ZXRRdWVyeVN0cmluZygpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIFN0cmluZyBn ZXRSZW1vdGVVc2VyKCkgeyByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMgU3RyaW5nIGdl dEF1dGhUeXBlKCkgeyByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEhl YWRlcihTdHJpbmcgbmFtZSkgeyByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMgaW50IGdl dEludEhlYWRlcihTdHJpbmcgbmFtZSkgeyByZXR1cm4gLTE7IH0NCiAgICAgICAgcHVibGljIGxv bmcgZ2V0RGF0ZUhlYWRlcihTdHJpbmcgbmFtZSkgeyByZXR1cm4gLTE7IH0NCiAgICAgICAgcHVi bGljIEVudW1lcmF0aW9uIGdldEhlYWRlck5hbWVzKCkgeyByZXR1cm4gbnVsbDsgfQ0KICAgICAg ICBwdWJsaWMgSHR0cFNlc3Npb24gZ2V0U2Vzc2lvbihib29sZWFuIGNyZWF0ZSkgeyByZXR1cm4g bnVsbDsgfQ0KICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFJlcXVlc3RlZFNlc3Npb25JZCgpIHsg cmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIGJvb2xlYW4gaXNSZXF1ZXN0ZWRTZXNzaW9u SWRWYWxpZCgpIHsgcmV0dXJuIGZhbHNlOyB9DQogICAgICAgIHB1YmxpYyBib29sZWFuIGlzUmVx dWVzdGVkU2Vzc2lvbklkRnJvbUNvb2tpZSgpIHsgcmV0dXJuIGZhbHNlOyB9DQogICAgICAgIHB1 YmxpYyBib29sZWFuIGlzUmVxdWVzdGVkU2Vzc2lvbklkRnJvbVVSTCgpIHsgcmV0dXJuIGZhbHNl OyB9DQogICAgICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRBdHRyaWJ1dGVOYW1lcygpIHsgcmV0 dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIHZvaWQgc2V0QXR0cmlidXRlKFN0cmluZyBuYW1l LCBPYmplY3QgdmFsdWUpIHt9DQogICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZUF0dHJpYnV0ZShT dHJpbmcgbmFtZSkge30NCiAgICAgICAgcHVibGljIExvY2FsZSBnZXRMb2NhbGUoKSB7IHJldHVy biBudWxsOyB9DQogICAgICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRMb2NhbGVzKCkgeyByZXR1 cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMgSHR0cFNlc3Npb24gZ2V0U2Vzc2lvbigpIHsgcmV0 dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIGJvb2xlYW4gaXNTZWN1cmUoKSB7IHJldHVybiBm YWxzZTsgfQ0KICAgICAgICBwdWJsaWMgUmVxdWVzdERpc3BhdGNoZXIgZ2V0UmVxdWVzdERpc3Bh dGNoZXIoU3RyaW5nIHBhdGgpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIEVudW1l cmF0aW9uIGdldEhlYWRlcnMoU3RyaW5nIG5hbWUpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAg cHVibGljIFN0cmluZyBnZXRDb250ZXh0UGF0aCgpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAg cHVibGljIGJvb2xlYW4gaXNVc2VySW5Sb2xlKFN0cmluZyByb2xlKSB7IHJldHVybiBmYWxzZTsg fQ0KICAgICAgICBwdWJsaWMgamF2YS5zZWN1cml0eS5QcmluY2lwYWwgZ2V0VXNlclByaW5jaXBh bCgpIHsgcmV0dXJuIG51bGw7IH0NCg0KICAgICAgICAvKiogQGRlcHJlY2F0ZWQgKi8NCiAgICAg ICAgcHVibGljIFN0cmluZyBnZXRSZWFsUGF0aChTdHJpbmcgcGF0aCkgeyByZXR1cm4gbnVsbDsg fQ0KICAgICAgICAvKiogQGRlcHJlY2F0ZWQgKi8NCiAgICAgICAgcHVibGljIGJvb2xlYW4gaXNS ZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tVXJsKCkgeyByZXR1cm4gZmFsc2U7IH0NCg0KLy9CRUdJTiBT ZXJ2bGV0IDIuMyBhZGRpdGlvbnMNCiAgICAgICAgcHVibGljIFN0cmluZ0J1ZmZlciBnZXRSZXF1 ZXN0VVJMKCkgeyByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMgdm9pZCBzZXRDaGFyYWN0 ZXJFbmNvZGluZyhTdHJpbmcgZW52KSB7IH07DQogICAgICAgIHB1YmxpYyBNYXAgZ2V0UGFyYW1l dGVyTWFwKCkgeyByZXR1cm4gbnVsbDsgfQ0KLy9FTkQgU2VydmxldCAyLjMgYWRkaXRpb25zDQog ICAgfQ0KDQogICAgLyoqDQogICAgICogRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgdGhlIEh0dHBT ZXJ2bGV0UmVzcG9uc2UgY2xhc3MgdG8gY3JlYXRlIGENCiAgICAgKiBmYWtlIGJ1dCBmdW50aW9u YWwgcmVzcG9uc2UgZm9yIHRoZSBtYWluIGVuZ2luZS4NCiAgICAgKi8NCiAgICBwdWJsaWMgY2xh c3MgSHR0cFNlcnZsZXRSZXNwb25zZUltcGwgaW1wbGVtZW50cyBIdHRwU2VydmxldFJlc3BvbnNl IHsNCg0KICAgICAgICBwcml2YXRlIE91dHB1dFN0cmVhbSBvdXQ7DQoNCiAgICAgICAgcHVibGlj IEh0dHBTZXJ2bGV0UmVzcG9uc2VJbXBsKE91dHB1dFN0cmVhbSBvdXQpIHsNCiAgICAgICAgICAg IHRoaXMub3V0ID0gb3V0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIFByaW50V3JpdGVy IGdldFdyaXRlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgICAgICAgICByZXR1cm4gbmV3 IFByaW50V3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIodGhpcy5vdXQpKTsNCiAgICAgICAg fQ0KDQogICAgICAgIHB1YmxpYyBTZXJ2bGV0T3V0cHV0U3RyZWFtIGdldE91dHB1dFN0cmVhbSgp IHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFNlcnZsZXRPdXRw dXRTdHJlYW0oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdy aXRlKGludCBjKSB0aHJvd3MgSU9FeGNlcHRpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAg ICAgICAgICAgICAgIG91dC53cml0ZShjKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgcHVibGljIHZvaWQgd3JpdGUoYnl0ZVtdIGIsIGludCBvZmYsIGludCBsZW4pDQogICAg ICAgICAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbg0KICAgICAgICAgICAgICAgew0KICAg ICAgICAgICAgICAgICAgICBvdXQud3JpdGUoYixvZmYsbGVuKTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZvaWQgc2V0Q29u dGVudExlbmd0aChpbnQgbGVuKSB7fQ0KICAgICAgICBwdWJsaWMgdm9pZCBzZXRDb250ZW50VHlw ZShTdHJpbmcgdHlwZSkge30NCiAgICAgICAgcHVibGljIFN0cmluZyBnZXRDaGFyYWN0ZXJFbmNv ZGluZygpIHsgcmV0dXJuIG51bGw7IH0NCiAgICAgICAgcHVibGljIHZvaWQgYWRkQ29va2llKENv b2tpZSBjb29raWUpIHt9DQogICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zSGVhZGVyKFN0 cmluZyBuYW1lKSB7IHJldHVybiBmYWxzZTsgfQ0KICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdGF0 dXMoaW50IHNjKSB7fQ0KICAgICAgICBwdWJsaWMgdm9pZCBzZXRIZWFkZXIoU3RyaW5nIG5hbWUs IFN0cmluZyB2YWx1ZSkge30NCiAgICAgICAgcHVibGljIHZvaWQgc2V0SW50SGVhZGVyKFN0cmlu ZyBuYW1lLCBpbnQgdmFsdWUpIHt9DQogICAgICAgIHB1YmxpYyB2b2lkIHNldERhdGVIZWFkZXIo U3RyaW5nIG5hbWUsIGxvbmcgZGF0ZSkge30NCiAgICAgICAgcHVibGljIHZvaWQgc2VuZEVycm9y KGludCBzYywgU3RyaW5nIG1zZykgdGhyb3dzIElPRXhjZXB0aW9uIHt9DQogICAgICAgIHB1Ymxp YyB2b2lkIHNlbmRFcnJvcihpbnQgc2MpIHRocm93cyBJT0V4Y2VwdGlvbiB7fQ0KICAgICAgICBw dWJsaWMgdm9pZCBzZW5kUmVkaXJlY3QoU3RyaW5nIGxvY2F0aW9uKSB0aHJvd3MgSU9FeGNlcHRp b24ge30NCiAgICAgICAgcHVibGljIFN0cmluZyBlbmNvZGVVUkwgKFN0cmluZyB1cmwpIHsgcmV0 dXJuIHVybDsgfQ0KICAgICAgICBwdWJsaWMgU3RyaW5nIGVuY29kZVJlZGlyZWN0VVJMIChTdHJp bmcgdXJsKSB7IHJldHVybiB1cmw7IH0NCiAgICAgICAgcHVibGljIHZvaWQgc2V0QnVmZmVyU2l6 ZShpbnQgc2l6ZSkgeyB9DQogICAgICAgIHB1YmxpYyBpbnQgZ2V0QnVmZmVyU2l6ZSgpIHsgcmV0 dXJuIDA7IH0NCiAgICAgICAgcHVibGljIHZvaWQgZmx1c2hCdWZmZXIoKSB7IH0NCiAgICAgICAg cHVibGljIGJvb2xlYW4gaXNDb21taXR0ZWQoKSB7IHJldHVybiBmYWxzZTsgfQ0KICAgICAgICBw dWJsaWMgdm9pZCByZXNldCgpIHsgfQ0KICAgICAgICBwdWJsaWMgdm9pZCBzZXRMb2NhbGUoTG9j YWxlIGxvY2FsZSkgeyB9DQogICAgICAgIHB1YmxpYyBMb2NhbGUgZ2V0TG9jYWxlKCkgeyByZXR1 cm4gbnVsbDsgfQ0KICAgICAgICBwdWJsaWMgdm9pZCBhZGREYXRlSGVhZGVyKFN0cmluZyBuYW1l LCBsb25nIGRhdGUpIHsgfQ0KICAgICAgICBwdWJsaWMgdm9pZCBhZGRIZWFkZXIoU3RyaW5nIG5h bWUsIFN0cmluZyB2YWx1ZSkgeyB9DQogICAgICAgIHB1YmxpYyB2b2lkIGFkZEludEhlYWRlcihT dHJpbmcgbmFtZSwgaW50IHZhbHVlKSB7IH0NCi8vQkVHSU4gU2VydmxldCAyLjMgYWRkaXRpb25z DQogICAgICAgIHB1YmxpYyB2b2lkIHJlc2V0QnVmZmVyKCkgeyB9DQovL0VORCBTZXJ2bGV0IDIu MyBhZGRpdGlvbnMNCiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovDQogICAgICAgIHB1YmxpYyB2 b2lkIHNldFN0YXR1cyhpbnQgc2MsIFN0cmluZyBzbSkge30NCiAgICAgICAgLyoqIEBkZXByZWNh dGVkICovDQogICAgICAgIHB1YmxpYyBTdHJpbmcgZW5jb2RlVXJsIChTdHJpbmcgdXJsKSB7IHJl dHVybiB1cmw7IH0NCiAgICAgICAgLyoqIEBkZXByZWNhdGVkICovDQogICAgICAgIHB1YmxpYyBT dHJpbmcgZW5jb2RlUmVkaXJlY3RVcmwgKFN0cmluZyB1cmwpIHsgcmV0dXJuIHVybDsgfQ0KICAg IH0NCn0NCg== ------_=_NextPart_001_01C1D9AF.F395BD99 Content-Type: application/octet-stream; name="HttpServletResponseFacade.java" Content-Transfer-Encoding: base64 Content-Description: HttpServletResponseFacade.java Content-Disposition: attachment; filename="HttpServletResponseFacade.java" LyotLSAkSWQ6IEh0dHBTZXJ2bGV0UmVzcG9uc2VGYWNhZGUuamF2YSx2IDEuNCAyMDAxLzAzLzAx IDE2OjI0OjIyIGdyZWVucmQgRXhwICQgLS0NCg0KID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICAg ICAgICAgICAgICAgICBUaGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4xDQog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KDQogQ29weXJpZ2h0IChDKSBAeWVhckAgVGhlIEFwYWNoZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KDQogUmVkaXN0cmlidXRp b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1v ZGlmaWNhLQ0KIHRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnMgYXJlIG1ldDoNCg0KIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiAgc291cmNlIGNv ZGUgbXVzdCAgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSwNCiAgICB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KDQogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlLA0KICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24NCiAgICBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCg0KIDMuIFRoZSBlbmQtdXNl ciBkb2N1bWVudGF0aW9uIGluY2x1ZGVkIHdpdGggdGhlIHJlZGlzdHJpYnV0aW9uLCBpZiBhbnks IG11c3QNCiAgICBpbmNsdWRlICB0aGUgZm9sbG93aW5nICBhY2tub3dsZWRnbWVudDogICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgIHNvZnR3YXJlDQogICAgZGV2ZWxvcGVkICBieSB0aGUgIEFwYWNo ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICAoaHR0cDovL3d3dy5hcGFjaGUub3JnLykuIg0KICAgIEFs dGVybmF0ZWx5LCB0aGlzICBhY2tub3dsZWRnbWVudCBtYXkgIGFwcGVhciBpbiB0aGUgc29mdHdh cmUgaXRzZWxmLCAgaWYNCiAgICBhbmQgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBhY2tub3ds ZWRnbWVudHMgbm9ybWFsbHkgYXBwZWFyLg0KDQogNC4gVGhlIG5hbWVzICJDb2Nvb24iIGFuZCAg IkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIiAgbXVzdCBub3QgYmUgdXNlZCB0bw0KICAgIGVu ZG9yc2UgIG9yIHByb21vdGUgIHByb2R1Y3RzIGRlcml2ZWQgIGZyb20gdGhpcyAgc29mdHdhcmUg d2l0aG91dCAgcHJpb3INCiAgICB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1p c3Npb24sIHBsZWFzZSBjb250YWN0DQogICAgYXBhY2hlQGFwYWNoZS5vcmcuDQoNCiA1LiBQcm9k dWN0cyAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCAgYmUgY2FsbGVkICJBcGFj aGUiLCBub3IgbWF5DQogICAgIkFwYWNoZSIgYXBwZWFyICBpbiB0aGVpciBuYW1lLCAgd2l0aG91 dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gIG9mIHRoZQ0KICAgIEFwYWNoZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLg0KDQogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFO WSBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KIElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQN CiBGSVRORVNTICBGT1IgQSBQQVJUSUNVTEFSICBQVVJQT1NFIEFSRSAgRElTQ0xBSU1FRC4gIElO IE5PICBFVkVOVCBTSEFMTCAgVEhFDQogQVBBQ0hFIFNPRlRXQVJFICBGT1VOREFUSU9OICBPUiBJ VFMgQ09OVFJJQlVUT1JTICBCRSBMSUFCTEUgRk9SICBBTlkgRElSRUNULA0KIElORElSRUNULCBJ TkNJREVOVEFMLCBTUEVDSUFMLCAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMICBEQU1BR0VT IChJTkNMVS0NCiBESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UICBPRiBTVUJT VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQogT0YgVVNFLCBEQVRBLCBPUiAgUFJPRklU UzsgT1IgQlVTSU5FU1MgIElOVEVSUlVQVElPTikgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTg0KIEFO WSAgVEhFT1JZIE9GIExJQUJJTElUWSwgIFdIRVRIRVIgIElOIENPTlRSQUNULCAgU1RSSUNUIExJ QUJJTElUWSwgIE9SIFRPUlQNCiAoSU5DTFVESU5HICBORUdMSUdFTkNFIE9SICBPVEhFUldJU0Up IEFSSVNJTkcgSU4gIEFOWSBXQVkgT1VUIE9GIFRIRSAgVVNFIE9GDQogVEhJUyBTT0ZUV0FSRSwg RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCg0KIFRo aXMgc29mdHdhcmUgIGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgIGJ5 IG1hbnkgaW5kaXZpZHVhbHMNCiBvbiAgYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgIEZv dW5kYXRpb24gYW5kIHdhcyAgb3JpZ2luYWxseSBjcmVhdGVkIGJ5DQogU3RlZmFubyBNYXp6b2Nj aGkgIDxzdGVmYW5vQGFwYWNoZS5vcmc+LiBGb3IgbW9yZSAgaW5mb3JtYXRpb24gb24gdGhlIEFw YWNoZQ0KIFNvZnR3YXJlIEZvdW5kYXRpb24sIHBsZWFzZSBzZWUgPGh0dHA6Ly93d3cuYXBhY2hl Lm9yZy8+Lg0KDQogKi8NCg0KcGFja2FnZSBvcmcuYXBhY2hlLmNvY29vbi5yZXNwb25zZTsNCg0K aW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQppbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsN CmltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOw0KaW1wb3J0IGphdmF4LnNlcnZsZXQuKjsNCmltcG9y dCBqYXZheC5zZXJ2bGV0Lmh0dHAuKjsNCg0KLyoqDQogKiBIYWNrIHRvIGhhbmRsZSByZWRpcmVj dHMgY29ycmVjdGx5IHdpdGggVG9tY2F0IDMuMS4NCiAqDQogKiBAYXV0aG9yIDxhIGhyZWY9Im1h aWx0bzpncmVlbnJkQGhvdG1haWwuY29tIj5Sb2JpbiBHcmVlbjwvYT4NCiAqIEB2ZXJzaW9uICRS ZXZpc2lvbjogMS40ICQgJERhdGU6IDIwMDEvMDMvMDEgMTY6MjQ6MjIgJA0KICovDQoNCnB1Ymxp YyBjbGFzcyBIdHRwU2VydmxldFJlc3BvbnNlRmFjYWRlIGltcGxlbWVudHMgSHR0cFNlcnZsZXRS ZXNwb25zZSB7DQoNCiAgcHVibGljIGJvb2xlYW4gaGFzUmVkaXJlY3RlZE9yT3V0cHV0dGVkID0g ZmFsc2U7DQogIHByb3RlY3RlZCBmaW5hbCBIdHRwU2VydmxldFJlc3BvbnNlIHI7DQoNCiAgcHVi bGljIEh0dHBTZXJ2bGV0UmVzcG9uc2VGYWNhZGUgKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9u c2UpIHsNCiAgICByID0gcmVzcG9uc2U7DQogIH0NCg0KLy9CRUdJTiBTZXJ2bGV0IDIuMyBhZGRp dGlvbnMNCiAgcHVibGljIHZvaWQgcmVzZXRCdWZmZXIoKSB7DQogICAgci5yZXNldEJ1ZmZlcigp Ow0KICB9DQovL0VORCBTZXJ2bGV0IDIuMyBhZGRpdGlvbnMNCg0KICBwdWJsaWMgdm9pZCBzZXRD b250ZW50TGVuZ3RoKGludCBsZW4pIHsNCiAgICByLnNldENvbnRlbnRMZW5ndGggKGxlbik7DQog IH0NCg0KICBwdWJsaWMgdm9pZCBzZXRDb250ZW50VHlwZShTdHJpbmcgdHlwZSkgew0KICAgIHIu c2V0Q29udGVudFR5cGUgKHR5cGUpOw0KICB9DQoNCiAgcHVibGljIFNlcnZsZXRPdXRwdXRTdHJl YW0gZ2V0T3V0cHV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCiAgICB0aGlzLmhhc1Jl ZGlyZWN0ZWRPck91dHB1dHRlZCA9IHRydWU7DQogICAgcmV0dXJuIHIuZ2V0T3V0cHV0U3RyZWFt ICgpOw0KICB9DQoNCiAgcHVibGljIFByaW50V3JpdGVyIGdldFdyaXRlciAoKSB0aHJvd3MgSU9F eGNlcHRpb24gew0KICAgIHRoaXMuaGFzUmVkaXJlY3RlZE9yT3V0cHV0dGVkID0gdHJ1ZTsNCiAg ICByZXR1cm4gci5nZXRXcml0ZXIgKCk7DQogIH0NCg0KICBwdWJsaWMgU3RyaW5nIGdldENoYXJh Y3RlckVuY29kaW5nKCkgew0KICAgIHJldHVybiByLmdldENoYXJhY3RlckVuY29kaW5nICgpOw0K ICB9DQoNCiAgcHVibGljIHZvaWQgYWRkQ29va2llKENvb2tpZSBjb29raWUpIHsNCiAgICByLmFk ZENvb2tpZSAoY29va2llKTsNCiAgfQ0KDQogIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zSGVhZGVy KFN0cmluZyBuYW1lKSB7DQogICAgcmV0dXJuIHIuY29udGFpbnNIZWFkZXIgKG5hbWUpOw0KICB9 DQoNCiAgcHVibGljIHZvaWQgc2V0U3RhdHVzKGludCBzYykgew0KICAgIHIuc2V0U3RhdHVzIChz Yyk7DQogIH0NCg0KICBwdWJsaWMgdm9pZCBzZXRIZWFkZXIoU3RyaW5nIG5hbWUsIFN0cmluZyB2 YWx1ZSkgew0KICAgIHIuc2V0SGVhZGVyIChuYW1lLCB2YWx1ZSk7DQogIH0NCg0KICBwdWJsaWMg dm9pZCBzZXRJbnRIZWFkZXIoU3RyaW5nIG5hbWUsIGludCB2YWx1ZSkgew0KICAgIHIuc2V0SW50 SGVhZGVyIChuYW1lLCB2YWx1ZSk7DQogIH0NCg0KICBwdWJsaWMgdm9pZCBzZXREYXRlSGVhZGVy KFN0cmluZyBuYW1lLCBsb25nIGRhdGUpIHsNCiAgICByLnNldERhdGVIZWFkZXIgKG5hbWUsIGRh dGUpOw0KICB9DQoNCiAgcHVibGljIHZvaWQgc2VuZEVycm9yKGludCBzYywgU3RyaW5nIG1zZykg dGhyb3dzIElPRXhjZXB0aW9uIHsNCiAgICB0aGlzLmhhc1JlZGlyZWN0ZWRPck91dHB1dHRlZCA9 IHRydWU7DQogICAgci5zZW5kRXJyb3IgKHNjLCBtc2cpOw0KICB9DQoNCiAgcHVibGljIHZvaWQg c2VuZEVycm9yKGludCBzYykgdGhyb3dzIElPRXhjZXB0aW9uIHsNCiAgICB0aGlzLmhhc1JlZGly ZWN0ZWRPck91dHB1dHRlZCA9IHRydWU7DQogICAgci5zZW5kRXJyb3IgKHNjKTsNCiAgfQ0KDQog IHB1YmxpYyB2b2lkIHNlbmRSZWRpcmVjdChTdHJpbmcgbG9jYXRpb24pIHRocm93cyBJT0V4Y2Vw dGlvbiB7DQogICAgci5zZW5kUmVkaXJlY3QgKGxvY2F0aW9uKTsNCiAgICAvL3RoaXMgYnJlYWtz IHRvbyBtdWNoIGNvZGUNCiAgICAvL3Rocm93IG5ldyBSZWRpcmVjdEV4Y2VwdGlvbiAoKTsNCiAg ICB0aGlzLmhhc1JlZGlyZWN0ZWRPck91dHB1dHRlZCA9IHRydWU7DQogIH0NCg0KICBwdWJsaWMg U3RyaW5nIGVuY29kZVVSTCAoU3RyaW5nIHVybCkgew0KICAgIHJldHVybiByLmVuY29kZVVSTCAo dXJsKTsNCiAgfQ0KDQogIHB1YmxpYyBTdHJpbmcgZW5jb2RlUmVkaXJlY3RVUkwgKFN0cmluZyB1 cmwpIHsNCiAgICByZXR1cm4gci5lbmNvZGVSZWRpcmVjdFVSTCAodXJsKTsNCiAgfQ0KDQogIHB1 YmxpYyB2b2lkIHNldEJ1ZmZlclNpemUoaW50IHNpemUpIHsNCiAgICByLnNldEJ1ZmZlclNpemUg KHNpemUpOw0KICB9DQoNCiAgcHVibGljIGludCBnZXRCdWZmZXJTaXplKCkgew0KICAgIHJldHVy biByLmdldEJ1ZmZlclNpemUgKCk7DQogIH0NCg0KICBwdWJsaWMgdm9pZCBmbHVzaEJ1ZmZlcigp IHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgci5mbHVzaEJ1ZmZlciAoKTsNCiAgfQ0KDQogIHB1 YmxpYyBib29sZWFuIGlzQ29tbWl0dGVkKCkgew0KICAgIHJldHVybiByLmlzQ29tbWl0dGVkICgp Ow0KICB9DQoNCiAgcHVibGljIHZvaWQgcmVzZXQoKSB7DQogICAgci5yZXNldCAoKTsNCiAgfQ0K DQogIHB1YmxpYyB2b2lkIHNldExvY2FsZShMb2NhbGUgbG9jYWxlKSB7DQogICAgci5zZXRMb2Nh bGUgKGxvY2FsZSk7DQogIH0NCg0KICBwdWJsaWMgTG9jYWxlIGdldExvY2FsZSgpIHsNCiAgICBy ZXR1cm4gci5nZXRMb2NhbGUgKCk7DQogIH0NCg0KICBwdWJsaWMgdm9pZCBhZGREYXRlSGVhZGVy KFN0cmluZyBuYW1lLCBsb25nIGRhdGUpIHsNCiAgICByLmFkZERhdGVIZWFkZXIgKG5hbWUsIGRh dGUpOw0KICB9DQoNCiAgcHVibGljIHZvaWQgYWRkSGVhZGVyKFN0cmluZyBuYW1lLCBTdHJpbmcg dmFsdWUpIHsNCiAgICByLmFkZEhlYWRlciAobmFtZSwgdmFsdWUpOw0KICB9DQoNCiAgcHVibGlj IHZvaWQgYWRkSW50SGVhZGVyKFN0cmluZyBuYW1lLCBpbnQgdmFsdWUpIHsNCiAgICByLmFkZElu dEhlYWRlciAobmFtZSwgdmFsdWUpOw0KICB9DQoNCiAgLyoqIEBkZXByZWNhdGVkICovDQogIHB1 YmxpYyB2b2lkIHNldFN0YXR1cyhpbnQgc2MsIFN0cmluZyBzbSkgew0KICAgIHIuc2V0U3RhdHVz IChzYywgc20pOw0KICB9DQoNCiAgLyoqIEBkZXByZWNhdGVkICovDQogIHB1YmxpYyBTdHJpbmcg ZW5jb2RlVXJsIChTdHJpbmcgdXJsKSB7DQogICAgcmV0dXJuIHIuZW5jb2RlVXJsICh1cmwpOw0K ICB9DQoNCiAgLyoqIEBkZXByZWNhdGVkICovDQogIHB1YmxpYyBTdHJpbmcgZW5jb2RlUmVkaXJl Y3RVcmwgKFN0cmluZyB1cmwpIHsNCiAgICByZXR1cm4gci5lbmNvZGVSZWRpcmVjdFVybCAodXJs KTsNCiAgfQ0KfQ0K ------_=_NextPart_001_01C1D9AF.F395BD99 Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org For additional commands, email: cocoon-dev-help@xml.apache.org ------_=_NextPart_001_01C1D9AF.F395BD99--