Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l40HL-0006Yu-2j for pgadmin-hackers@arkaria.postgresql.org; Mon, 25 Jan 2021 11:43:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l40HJ-00029H-VN for pgadmin-hackers@arkaria.postgresql.org; Mon, 25 Jan 2021 11:43:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l40HJ-000296-3P for pgadmin-hackers@lists.postgresql.org; Mon, 25 Jan 2021 11:43:29 +0000 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1l40HE-0001yc-Ph for pgadmin-hackers@postgresql.org; Mon, 25 Jan 2021 11:43:27 +0000 Received: by mail-lf1-x132.google.com with SMTP id i187so6965879lfd.4 for ; Mon, 25 Jan 2021 03:43:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HsUAXNXrrkh23Kzch0u6sNjPqeflQbFtii2E6lLcfik=; b=ZO9xcdKZ84IIFjJHUAUcjdgs9IMfhEqY2JmeIhBLhCU0jBH+WlburCdgr4+ZEJiuFX tyn552caM9OEnTMyRue0wbGuYPqdrJflpppG5baKtTGPDWqcAsIPvaXrY0fQcEvYlZRg ByMW0QocZX1XAO2gm49kpoOcO3AQ1gj5ZGg9CRASS+VmxPtnkjndOV6ZfbVEj4q9a2H9 Sq3rMZr4uKjCgtU7ktgy0dH7GDcpQ8Gz/vdYCnKwHPHgCjDBL+5vXnXW3TserggVUpUU kvHMNn9+0iPatdGSelALcG/T/3xjrhsYQXzVXfwawtPIUukT3GxZsLRLGufWuMdLdnMj qfGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HsUAXNXrrkh23Kzch0u6sNjPqeflQbFtii2E6lLcfik=; b=Crru3XURpX/8A5QygOVeAl/uw8goVqbAVRKAt0dySzlZidlB2XpbHL45e1+dWzInjC 4kDcsID6Y9sDWJxg59rjCN+mty6/JRLIfgJpizc3GkELrGRAHZQY7IWfOj4fhQZ+Zq0q LPSEZ3NqZmuUDhq2BO9nnRUMI5Un+FXzXWEpQtYif4/cfst67/pSJ04COaQlkiQQhrMG C9Owqpxi96bkqzT9CIJBU4ED1CgK3wF36DjMW0HYDBuawTK3NQhBtDc7jq48Zat4yo9O TaB/19y/ZMkwQlwlN2Fxkz5KhExqbeVgUxu7yavxv7lAmyX/OTLV9DCJI+7mnQjBRrqk 4lbg== X-Gm-Message-State: AOAM532ca78nRvqalte57fwx+iEilDusCzdx7FHJu12jxb18lzwkg4pu d+q3dralLJJ7JkObeGp2Ti3UgxAUczzdN2gyNm5mAB4YQFiCmUDWrNOXMSsxjmELcF7zABQdBT/ X2BtJn9wYcyAKAZWYtQkYjf/aU15ysLhWQC+JXcTMlCG9c3lrO7VGVwoz3Gef9A+ECiZ+n85Ed9 mPp1M9cetDDEo9F9P2m6gRxdrro3VQfM0NYp9wDXK9d3Q+sPuowMu1j/WGRZ9jceafHt0k644= X-Google-Smtp-Source: ABdhPJyFpJu+/jm/f0l3TzA3hX62NBDU9yQwboOPHINGImfqNfLPWBtZ/0xwIAlIHZSPF4ey8vYicKCYjR7PFnSrGno= X-Received: by 2002:ac2:5199:: with SMTP id u25mr80003lfi.438.1611575001755; Mon, 25 Jan 2021 03:43:21 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Mon, 25 Jan 2021 17:12:45 +0530 Message-ID: Subject: Re: [pgAdmin][RM1802] ERD Tool (Beta) To: pgadmin-hackers Cc: Akshay Joshi , Khushboo Vashi , Dave Page Content-Type: multipart/mixed; boundary="00000000000082739a05b9b80b63" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000082739a05b9b80b63 Content-Type: multipart/alternative; boundary="00000000000082739805b9b80b61" --00000000000082739805b9b80b61 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch to fix below issues in ERD: 1. After opening an existing project, the first table is already selected but edit, clone, delete buttons are disable. Fixed. 2. ERD project title gets changed when 2 ERD projects are open & anyone of it edited. Fixed. 3. Closing ERD tab, does not ask for confirmation pop up. Added. 4. Shortcut for 'Show more/Fewer details' is missing. Added. 5. Deleting primary key does not delete associated links. Fixed. 6. Long table & schema name are getting out of box. Fixed. 7. Long table name in notes pop-up need re-alignment. Fixed. 8. Same table name present in ERD/canvas is allowed in Add Table dialogue. Added validation in the dialog. 9. Download image option is added, but it is not perfect yet. Image icons (table, schema, etc.) are not showing up. 10. Rename panel option should be disabled by default. It should be enabled for the tools which implement rename functionality. 11. The Toolbar is not visible in Safari for the ERD tool. Fixed. Please review. On Thu, Jan 21, 2021 at 4:32 PM Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi, > > > On Thu, Jan 21, 2021 at 3:08 PM Dave Page wrote: > >> >> >> On Thu, Jan 21, 2021 at 4:48 AM Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Dave, >>> >>> On Wed, Jan 20, 2021 at 9:20 PM Dave Page wrote: >>> >>>> Hi >>>> >>>> Where's the Save Image button gone? I know Aditya was removing it >>>> whilst working on other things, but it's still required for phase 1 release. >>>> >>> It was not working 100% right. :( >>> So I've removed it for the time being. I'm still working on it. >>> >> >> OK, so that work will be completed in time for the build next week? >> > I'm trying my best to make it available before release. I'm struggling to > make it work perfectly. > >> >> >>> >>>> On Mon, Jan 18, 2021 at 11:45 AM Akshay Joshi < >>>> akshay.joshi@enterprisedb.com> wrote: >>>> >>>>> Thanks, patch applied. >>>>> >>>>> On Mon, Jan 18, 2021 at 5:08 PM Aditya Toshniwal < >>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>> >>>>>> OK, So the changes have worked. But still failing at one more place. >>>>>> Attached the patch fixes it. >>>>>> >>>>>> On Mon, Jan 18, 2021 at 4:40 PM Akshay Joshi < >>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>> >>>>>>> Thanks, patch applied. >>>>>>> >>>>>>> On Mon, Jan 18, 2021 at 2:58 PM Aditya Toshniwal < >>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> The jasmine test cases are working fine on my local machine. The >>>>>>>> test cases are successful on jenkins other than on linux, not sure why. >>>>>>>> I have made some fixes by looking at the log. Please review and try. >>>>>>>> >>>>>>>> On Mon, Jan 18, 2021 at 1:10 PM Akshay Joshi < >>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Thanks, patch applied. >>>>>>>>> >>>>>>>>> On Mon, Jan 18, 2021 at 10:34 AM Aditya Toshniwal < >>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Akshay, >>>>>>>>>> >>>>>>>>>> I forgot to remove few of the dependencies which are not required >>>>>>>>>> as of now (may be in future). Attached patch removes those dependencies >>>>>>>>>> from package.json. >>>>>>>>>> >>>>>>>>>> On Sat, Jan 16, 2021 at 5:08 PM Akshay Joshi < >>>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> Thanks, patch applied. >>>>>>>>>>> >>>>>>>>>>> On Fri, Jan 15, 2021 at 7:01 PM Aditya Toshniwal < >>>>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> I've fixed the issues. You can find the comments inline. >>>>>>>>>>>> I've also added PropTypes for the components for increased >>>>>>>>>>>> validation. >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Jan 12, 2021 at 12:18 PM Khushboo Vashi < >>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Aditya, >>>>>>>>>>>>> >>>>>>>>>>>>> The functionalities and the code looks good to me, however some of the comments as below: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - Correct the comments at some places (3 occurrences found in /erd/__init__.py) which mention Schema diff instead of ERD. >>>>>>>>>>>>> >>>>>>>>>>>>> Some comments in the JS/JSX file regarding components/functions (For example, IconButton (forwardRef), Bodywidget etc.) would >>>>>>>>>>>>> >>>>>>>>>>>>> be great help as we all are new to React. >>>>>>>>>>>>> >>>>>>>>>>>>> Done. Added comments to the components. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - Remove the unused imports (for ex bad_request) in /erd/__init__.py >>>>>>>>>>>>> >>>>>>>>>>>>> Removed. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - Remove commented code >>>>>>>>>>>>> >>>>>>>>>>>>> # req_args = request.args >>>>>>>>>>>>> # if ('recreate' in req_args and >>>>>>>>>>>>> # req_args['recreate'] == '1'): >>>>>>>>>>>>> # connect = False >>>>>>>>>>>>> >>>>>>>>>>>>> Removed. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - TableNode.jsx, below two lines can be combined. >>>>>>>>>>>>> >>>>>>>>>>>>> import { PortModelAlignment, DefaultNodeModel } from >>>>>>>>>>>>> '@projectstorm/react-diagrams'; >>>>>>>>>>>>> import { PortWidget } from '@projectstorm/react-diagrams'; >>>>>>>>>>>>> >>>>>>>>>>>>> Done. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - onImageClick function in BodyWidget.jsx is no use I think, so it should be removed. >>>>>>>>>>>>> >>>>>>>>>>>>> I wanted to keep the code as it will be used in future. >>>>>>>>>>>> Anyway, I've removed the code. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - I got some console errors while adding/editing tables. Refer to the attached screenshot. >>>>>>>>>>>>> >>>>>>>>>>>>> I tried but I didn't get any. Looking at the screenshot, the >>>>>>>>>>>> error is from the underlying library. Can't do much in this. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - In the column Edit Mode, while deleting the primary key, it gives the error, which does not go away with any further modifications. >>>>>>>>>>>>> >>>>>>>>>>>>> Fixed. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - While generating the SQL, if the server is disconnected, a proper error message should be thrown, right now some server side error is coming. >>>>>>>>>>>>> >>>>>>>>>>>>> It will show connection lost error now. Fixed. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - Please remove ... from the menu title (New ERD Project(Beta)...) as it is not opening a dialog. >>>>>>>>>>>>> >>>>>>>>>>>>> Done. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - For large data sets, generate ERD hangs. >>>>>>>>>>>>> >>>>>>>>>>>>> It shows the spinner and waits for the response to come from >>>>>>>>>>>> the back end. I've used the existing table fetching code which is used at >>>>>>>>>>>> other places. I'll create an RM to improve the back end code for fetching >>>>>>>>>>>> the tables data which will help the schema diff tool as well. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - Opening the ERD panel in a new window is not working, it opens in the same tab even if you have set the Preference "Open in new browser tab" to True. >>>>>>>>>>>>> >>>>>>>>>>>>> Fixed. Added the setting in "Tab settings". >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - No shortcut is provided to open the ERD Tool. >>>>>>>>>>>>> >>>>>>>>>>>>> A shortcut is helpful if we are using it frequently. ERD tool >>>>>>>>>>>> won't be used that frequently. We already have a limited >>>>>>>>>>>> number of keys available for shortcuts. I think we should roll out without >>>>>>>>>>>> shortcut for now. If there is a user demand for it then we can think of >>>>>>>>>>>> adding it. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - SonarQube fixes required. >>>>>>>>>>>>> >>>>>>>>>>>>> Fixed. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> *Suggestion:* >>>>>>>>>>>>> >>>>>>>>>>>>> While removal of the FK link, If any of the table is selected, it is being deleted with FK link. >>>>>>>>>>>>> Either we should warn the user OR make 2 different buttons for FK removal and table removal as the user may be confused if the selected table is also removed with the FK. >>>>>>>>>>>>> >>>>>>>>>>>>> I've added a confirmation dialog which will show the number of >>>>>>>>>>>> tables and links selected. This way user will know what he has selected >>>>>>>>>>>> before deleting. >>>>>>>>>>>> >>>>>>>>>>>>> *Observations:* >>>>>>>>>>>>> >>>>>>>>>>>>> Lodash has been used in this module in place of Underscore, >>>>>>>>>>>>> though the dependency is already introduced by another module, >>>>>>>>>>>>> but we have mentioned it in the package.json file, which is >>>>>>>>>>>>> somewhat not convincing to me. >>>>>>>>>>>>> Lodash is more advanced than Underscore but we should pick >>>>>>>>>>>>> anyone as it will be easy to manage. >>>>>>>>>>>>> >>>>>>>>>>>>> TL;DR; we cannot. >>>>>>>>>>>> lodash is a peer dependency for react-diagrams (and some >>>>>>>>>>>> existing modules in pgAdmin) so it will come to package.json without >>>>>>>>>>>> choice. We cannot remove underscore because it is a dependency of backbone. >>>>>>>>>>>> Underscore is outdated, and I cannot migrate the complete pgAdmin code. So, >>>>>>>>>>>> I decided to go with 100/0 method. All the new codes will use lodash only >>>>>>>>>>>> as we'll phase out underscore with time. Just like jQuery vs ReactJS. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Table dialog code is duplicate of the table node, as it was >>>>>>>>>>>>> difficult to extend it because it was attached to the tree. >>>>>>>>>>>>> So, we need to keep in mind that while implementing React in >>>>>>>>>>>>> pgAdmin, the nodes should be properly detached from the tree itself, so we >>>>>>>>>>>>> can reuse it. >>>>>>>>>>>>> >>>>>>>>>>>>> Yes. I agree. We need to separate out data source from UI >>>>>>>>>>>> going forward with React. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Khushboo >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Mon, Dec 28, 2020 at 10:53 AM Khushboo Vashi < >>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Fri, Dec 25, 2020 at 4:34 PM Akshay Joshi < >>>>>>>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Khushboo, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Can you please review it? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On it. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Fri, Dec 25, 2020 at 3:31 PM Aditya Toshniwal < >>>>>>>>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Hackers, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Attached patch introduces ERD Tool(Beta) to pgAdmin. Below >>>>>>>>>>>>>>>> are the details: >>>>>>>>>>>>>>>> 1) Create a diagram from scratch or generate for an >>>>>>>>>>>>>>>> existing DB. >>>>>>>>>>>>>>>> 2) Generate "Create" DDL from the diagram. >>>>>>>>>>>>>>>> 3) Save the diagram and resume it later. >>>>>>>>>>>>>>>> 4) Supports basic table fields, one-to-many relationships, >>>>>>>>>>>>>>>> many-to-many relationships, adding notes. >>>>>>>>>>>>>>>> 5) Test cases added with 75-80% test coverage. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Please review. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Aditya Toshniwal >>>>>>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> *Thanks & Regards* >>>>>>>>>>>>>>> *Akshay Joshi* >>>>>>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>>>>>>>> *EDB Postgres * >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Aditya Toshniwal >>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>>>>> >>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> *Thanks & Regards* >>>>>>>>>>> *Akshay Joshi* >>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>>>> *EDB Postgres * >>>>>>>>>>> >>>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Thanks, >>>>>>>>>> Aditya Toshniwal >>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>>> >>>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> *Thanks & Regards* >>>>>>>>> *Akshay Joshi* >>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>> *EDB Postgres * >>>>>>>>> >>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Thanks, >>>>>>>> Aditya Toshniwal >>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>> >>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *Thanks & Regards* >>>>>>> *Akshay Joshi* >>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>> *EDB Postgres * >>>>>>> >>>>>>> *Mobile: +91 976-788-8246* >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Thanks, >>>>>> Aditya Toshniwal >>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>> >>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>> >>>>> >>>>> >>>>> -- >>>>> *Thanks & Regards* >>>>> *Akshay Joshi* >>>>> *pgAdmin Hacker | Principal Software Architect* >>>>> *EDB Postgres * >>>>> >>>>> *Mobile: +91 976-788-8246* >>>>> >>>> >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EDB: http://www.enterprisedb.com >>>> >>>> >>> >>> -- >>> Thanks, >>> Aditya Toshniwal >>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>> >>> "Don't Complain about Heat, Plant a TREE" >>> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EDB: http://www.enterprisedb.com >> >> > > -- > Thanks, > Aditya Toshniwal > pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* > > "Don't Complain about Heat, Plant a TREE" > -- Thanks, Aditya Toshniwal pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --00000000000082739805b9b80b61 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the patch to fix below issues in E= RD:
  1. After opening an exi= sting project, the first table is already selected but edit, clone, dele= te buttons are disable. Fixed.
  2. ERD project title gets changed when 2 ERD projects are open & = anyone of it edited. Fixed.
  3. Closing ERD tab, does not ask for confirmation pop up. Added.
  4. Shortcut for 'Show more/F= ewer details' is missing. Added.
  5. Deleting primary key does not delete associated links. Fixed.
  6. Long table & sch= ema name are getting out of box. Fixed.
  7. Long table name in notes pop-up need re-alignment. Fixed.
  8. Same table name prese= nt in ERD/canvas is allowed in Add Table dialogue. Added validation in the dial= og.
  9. Download image= option=C2=A0is added, but it is not perfect yet. Image icons (table, schema, e= tc.) are not showing up.
  10. Rename panel option should be disabled by default. It should be enabl= ed for the tools which implement rename functionality.
  11. The Toolbar is not visible in Safari f= or the ERD tool. Fixed.
Please review.

=
On Thu, Jan 21, 2021 at 4:32 PM Adity= a Toshniwal <aditya= .toshniwal@enterprisedb.com> wrote:
Hi,


On Th= u, Jan 21, 2021 at 3:08 PM Dave Page <dpage@pgadmin.org> wrote:

On Thu, Jan 21, 2021 at 4:48 AM Aditya Toshniwal <aditya.toshniwal@enterpri= sedb.com> wrote:
Hi Dave,

On Wed, Jan 20, 2021 at 9:20 PM Dave Page <dpage@pgadmin.org&= gt; wrote:
Hi

Where's the Save Image button gone? I= know Aditya was removing it whilst working on other things, but it's s= till required for phase 1 release.
It was not work= ing 100% right. :(
So I've removed it for the time being. = I'm still working on it.=C2=A0
=

OK, so that work will be completed in time for the buil= d next week?
I'm trying my best to make = it available before release. I'm struggling to make it work perfectly.<= /span>
=C2=A0

On Mon, Jan 18, 2021 at 11:45 AM Akshay= Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks, patch applied.
On = Mon, Jan 18, 2021 at 5:08 PM Aditya Toshniwal <aditya.toshniwal@enterprisedb= .com> wrote:
OK, So t= he changes have worked. But still failing at one more place.
Attached the patch fixes it.

On M= on, Jan 18, 2021 at 4:40 PM Akshay Joshi <akshay.joshi@enterprisedb.com> = wrote:
Thanks, patch applied.

On Mon, Jan 18, 2021 at 2:58 PM Aditya Toshn= iwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi,

The jasmine t= est cases are working=C2=A0fine on my local machine. The test cases are suc= cessful on jenkins other than on linux, not sure why.
I have made some fixes by looking at the log.= Please review and try.

On Mon, Jan 18, 2021 at 1:10 PM Akshay Joshi = <aksh= ay.joshi@enterprisedb.com> wrote:
Thanks, patch applied.
<= br>
On Mon,= Jan 18, 2021 at 10:34 AM Aditya Toshniwal <aditya.toshniwal@enterprisedb.co= m> wrote:
Hi Akshay,<= /div>

I forgot to remove few of the dependencies = which are not required as of now (may be in future). Attached patch removes= those dependencies from package.json.

On Sat, Jan 16, 2021 at 5:08 PM= Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks, patch app= lied.

On Fri, Jan 15, 2021 at 7:01 PM Aditya Toshniwal <aditya.toshniwal@ente= rprisedb.com> wrote:
Hi,
I've fixed the issues. You can find the comments inline.=
I've also added PropTypes for the components for increased valid= ation.

On Tue, Jan 12, 2021 at 12:18 PM Khushboo Vashi <= khushb= oo.vashi@enterprisedb.com> wrote:
Hi Aditya,
The functiona= lities and the code looks good to me, however some of the comments as below= :
  • Correct the comments at some places (3 occurrences found in /erd/__init__.py) which mention S= chema diff instead of ERD.
Some comments in t=
he JS/JSX file regarding components/functions (For example, IconButton (for=
wardRef), Bodywidget etc.) would
be great help as we all are new to React=
. 
Done. Added comments = to the components.
  • Remove the unused imports (for ex bad= _request) in /erd/__init__.py
  • Removed.=C2=A0
      =
    • Remove commented code
    =
    # req_args =3D request.args
    # if ('= ;recreate' in req_args and
    # =C2=A0 =C2=A0 req_args['recreate= 9;] =3D=3D '1'):
    # =C2=A0 =C2=A0 connect =3D False
    Removed.=C2=A0
    • TableNode.jsx, below two lines c= an be combined.
    import { = PortModelAlignment, DefaultNodeModel } from '@projectstorm/react-diagra= ms';
    import { PortWidget } from '@projectstorm/react-diagrams= 9;;
    Done.=C2=A0
    • onImageClick function in BodyWidget.jsx is no use I think, so it sho= uld be removed.
    I wanted to= keep the code as it will be used in future. Anyway, I've removed the c= ode.
    • I got some console errors while adding/editing tabl= es. Refer to the attached screenshot.
    I tried but I didn't get any. Looking at the screenshot, the= error is from the underlying library. Can't do much in this.=C2= =A0
    • In the column Edit Mode, while deleting the primary key, it= gives the error, which does not go away with any further modifications.
    Fixed.=C2=A0
    • While generating the SQL, if the server is disconnected, a proper error = message should be thrown, right now some server side error is coming.
    It will show connection lost er= ror now. Fixed.=C2=A0
    • Please remove ... from the menu = title (New ERD Project(Beta)...) as it is not opening a dialog.
    • =
    Done.=C2=A0
    =
    
    • For lar= ge data sets, generate ERD hangs.
    It shows the spinner and waits for the response to come from the bac= k end. I've used the existing table fetching code which is used at othe= r places. I'll create an RM to improve the back end code for fetching t= he tables data which will help the schema diff tool as well.
    • Opening the ERD panel in a new window is not working, it opens in th= e same tab even if you have set the Preference "Open in new browser ta= b" to True.
    Fixed. Add= ed the setting in "Tab settings".
  • No shortcu= t is provided to open the ERD Tool.
  • A shortcut is helpful if we are using it frequently. ERD tool won&= #39;t be used that frequently.=C2=A0We already have a limited number of = keys available for shortcuts. I think we should roll out without shortcut f= or now. If there is a user demand for it then we can think of adding it.
    • SonarQube fixes required.
    Fixed.=C2=A0
    Suggestion:=
    
    While removal of the FK link, If any of the table= is selected, it is being deleted with FK link.
    Either we should warn the= user OR make 2 different buttons for FK removal and table removal as the u= ser may be confused if the selected table is also removed with the FK.
    <= /font>
    I've added a confirmation dialog which = will show the number of tables and links selected. This way user will know = what he has selected before deleting.
    =
    Observa=
    tions:
    Lodas= h has been used in this module in place of Underscore, though the dependenc= y is already introduced by another module,
    but we have mentioned it in t= he package.json file, which is somewhat not convincing to me.
    Lodash is = more advanced than Underscore but we should pick anyone as it will be easy = to manage.
    TL;DR; we cannot.
    lodash is a peer dependency for react-diagrams (and some existing= modules in pgAdmin) so it will come to package.json without choice. We can= not remove underscore because it is a dependency of backbone. Underscore is= outdated, and I cannot migrate the complete pgAdmin code.=C2=A0So, I de= cided to go with 100/0 method. All the new codes will use lodash only as we= 'll phase out underscore with time. Just like jQuery vs ReactJS.=


    Table dialog code is duplicate of the table node, as it was difficul= t to extend it because it was attached to the tree.
    So, we need to keep = in mind that while implementing React in pgAdmin, the nodes should be prope= rly detached from the tree itself, so we can reuse it.
    Yes. I agree. We need to separate out data source fr= om UI going forward=C2=A0with React.
    Thanks,
    Khushboo


    On Mon, Dec 28, 2020 at 10:53 AM Khushboo Vashi <khushboo.vashi@enterpris= edb.com> wrote:


    On Fri, Dec 25, 2020 at 4:34 PM Akshay Joshi <akshay.joshi@enterp= risedb.com> wrote:
    Hi Khush= boo,

    Can you please review it?

    On it.=C2=A0
    On Fri, Dec 25, 2020 at 3:31 PM Ad= itya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
    <= /div>
    Hi Hackers,

    Attached patch introduces ERD Tool(Beta) to pgAdmin. Below are the detai= ls:
    1) Create a diagram f= rom scratch or generate for an existing DB.
    2) Generate "Create" DDL from the diagram.
    3) Save the diagram and resu= me it later.
    4) Supports = basic table fields, one-to-many relationships, many-to-many relationships, = adding notes.
    5) Test cas= es added with 75-80% test coverage.

    Please re= view.

    --
    Thanks,
    Aditya Toshniwal
    pgAdmin hacker=C2=A0| Sr. Software Engineer | = edbpostgres.com
    "Don't Complain about Heat= , Plant a TREE"


    --
    Thanks & Regards
    Akshay Joshi
    = pgAdmin Hacker | Principal Software Ar= chitect
    EDB Po= stgres
    Mobile: +91 976-788-8246

    <= /div>


    --
    Thanks,
    Aditya Toshniwal=
    pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
    &quo= t;Don't Complain about Heat, Plant a TREE"


    --
    Thank= s & Regards
    Akshay Joshi
    pgAdmin Hacker | Principal Softw= are Architect
    EDB Po= stgres
    Mobile: +91 976-788-8246



    --
    Thanks,
    Aditya Toshniwal=
    pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
    &quo= t;Don't Complain about Heat, Plant a TREE"


    --
    Thank= s & Regards
    Akshay Joshi
    pgAdmin Hacker | Principal Softw= are Architect
    EDB Po= stgres
    Mobile: +91 976-788-8246



    --
    Thanks,
    Aditya Toshniwal=
    pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
    &quo= t;Don't Complain about Heat, Plant a TREE"


    --
    Thank= s & Regards
    Akshay Joshi
    pgAdmin Hacker | Principal Softw= are Architect
    EDB Po= stgres
    Mobile: +91 976-788-8246



    --
    Thanks,
    Aditya Toshniwal=
    pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
    &quo= t;Don't Complain about Heat, Plant a TREE"


    --
    Thank= s & Regards
    Akshay Joshi
    pgAdmin Hacker | Principal Softw= are Architect
    EDB Po= stgres
    Mobile: +91 976-788-8246



    --


    --
    Thanks,
    Aditya Toshniwal=
    pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
    &quo= t;Don't Complain about Heat, Plant a TREE"


    --


    --
    Thanks,
    Aditya Toshniwal=
    pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
    &quo= t;Don't Complain about Heat, Plant a TREE"


    --
    Thanks,
    Aditya Toshniwal
    pgAdmin hacker=C2=A0| Sr. Softwa= re Engineer | edbpostgres.com<= /font>
    "Don't Complain about Heat, Plant a TREE&qu= ot;
    --00000000000082739805b9b80b61-- --00000000000082739a05b9b80b63 Content-Type: application/octet-stream; name="RM1802.fixes_v1.patch" Content-Disposition: attachment; filename="RM1802.fixes_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kkci4ep50 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDlk NGMwNjBkYy4uOWU1NWViNjc0IDEwMDY0NAotLS0gYS93ZWIvcGFja2FnZS5qc29uCisrKyBiL3dl Yi9wYWNrYWdlLmpzb24KQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAicHJvcC10eXBlcyI6ICJeMTUu Ny4yIiwKICAgICAicmF3LWxvYWRlciI6ICJeMy4xLjAiLAogICAgICJyZXNpemUtb2JzZXJ2ZXIt cG9seWZpbGwiOiAiXjEuNS4xIiwKKyAgICAicmVzb2x2ZS11cmwtbG9hZGVyIjogIl4zLjEuMiIs CiAgICAgInNhc3MiOiAiXjEuMjQuNCIsCiAgICAgInNhc3MtbG9hZGVyIjogIl43LjEuMCIsCiAg ICAgInNhc3MtcmVzb3VyY2VzLWxvYWRlciI6ICJeMi4wLjAiLApAQCAtODcsNiArODgsNyBAQAog ICAgICJkYWdyZSI6ICJeMC44LjQiLAogICAgICJkcm9wem9uZSI6ICJeNS41LjEiLAogICAgICJl eHBvcnRzLWxvYWRlciI6ICJ+MC43LjAiLAorICAgICJodG1sMmNhbnZhcyI6ICJeMS4wLjAtcmMu NyIsCiAgICAgImltbXV0YWJpbGl0eS1oZWxwZXIiOiAiXjMuMC4wIiwKICAgICAiaW1wb3J0cy1s b2FkZXIiOiAiXjAuOC4wIiwKICAgICAiaXAtYWRkcmVzcyI6ICJeNS44LjkiLApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZnJhbWUuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9mcmFtZS5qcwppbmRleCBiNzJkZjdiMGYuLjBkM2I5MTI3MyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZnJhbWUuanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZnJhbWUuanMKQEAgLTMwLDcgKzMwLDcgQEAgZGVm aW5lKFsKICAgICBoZWlnaHQ6IDYwMCwKICAgICBzaG93VGl0bGU6IHRydWUsCiAgICAgaXNDbG9z YWJsZTogdHJ1ZSwKLSAgICBpc1JlbmFtYWJsZTogdHJ1ZSwKKyAgICBpc1JlbmFtYWJsZTogZmFs c2UsCiAgICAgaXNQcml2YXRlOiBmYWxzZSwKICAgICB1cmw6ICcnLAogICAgIGljb246ICcnLApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NoYXJ0anMvaW5kZXguanN4IGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL2NoYXJ0anMvaW5kZXguanN4CmluZGV4IDUyNjIzYmQyNC4uMDIy ZTYzODc1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY2hhcnRqcy9pbmRleC5q c3gKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NoYXJ0anMvaW5kZXguanN4CkBAIC00MSwx MSArNDEsMTEgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzZUNoYXJ0KHt0eXBlPSdsaW5l JywgaWQsIG9wdGlvbnMsIGRhdGEsIHJlZHJhdz1mYWxzZSwKICAgICAgIG9wdGlvbnM6IG9wdGlv bnNNZXJnZWQsCiAgICAgfSk7CiAgICAgcHJvcHMub25Jbml0ICYmIHByb3BzLm9uSW5pdChjaGFy dE9iai5jdXJyZW50KTsKLSAgfQorICB9OwogCiAgIGNvbnN0IGRlc3Ryb3lDaGFydCA9IGZ1bmN0 aW9uKCkgewogICAgIGNoYXJ0T2JqLmN1cnJlbnQgJiYgY2hhcnRPYmouY3VycmVudC5kZXN0cm95 KCk7Ci0gIH0KKyAgfTsKIAogICB1c2VFZmZlY3QoKCk9PnsKICAgICBpbml0Q2hhcnQoKTsKQEAg LTcyLDcgKzcyLDcgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzZUNoYXJ0KHt0eXBlPSds aW5lJywgaWQsIG9wdGlvbnMsIGRhdGEsIHJlZHJhdz1mYWxzZSwKICAgICAgIGRlc3Ryb3lDaGFy dCgpOwogICAgICAgaW5pdENoYXJ0KCk7CiAgICAgfQotICB9LCBbcmVkcmF3XSkKKyAgfSwgW3Jl ZHJhd10pOwogCiAgIHJldHVybiAoCiAgICAgPGNhbnZhcyBpZD17aWR9IHJlZj17Y2hhcnRSZWZ9 PjwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGlj L2pzL2RhdGFncmlkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2Rh dGFncmlkLmpzCmluZGV4IGE3ZDA1NjY4My4uYzliOGI1YjdlIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCkBAIC0xODAsNyArMTgwLDcg QEAgZGVmaW5lKCdwZ2FkbWluLmRhdGFncmlkJywgWwogICAgICAgICAgIG5hbWU6ICdmcm1fZGF0 YWdyaWQnLAogICAgICAgICAgIHNob3dUaXRsZTogdHJ1ZSwKICAgICAgICAgICBpc0Nsb3NlYWJs ZTogdHJ1ZSwKLSAgICAgICAgICBpc1JlbmFtZWFibGU6IHRydWUsCisgICAgICAgICAgaXNSZW5h bWFibGU6IHRydWUsCiAgICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAogICAgICAgICAgIHVybDog J2Fib3V0OmJsYW5rJywKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1p bi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMKaW5kZXgg NDZkYjZhNzBhLi5iM2JkNzkzZTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFn cmlkL3N0YXRpYy9qcy9kYXRhZ3JpZF9wYW5lbF90aXRsZS5qcworKysgYi93ZWIvcGdhZG1pbi90 b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMKQEAgLTc4LDEx ICs3OCwxMSBAQCBleHBvcnQgZnVuY3Rpb24gc2V0UXVlcnlUb29sRG9ja2VyVGl0bGUocGFuZWws IGlzX3F1ZXJ5X3Rvb2wsIHBhbmVsX3RpdGxlLCBpc19maQogCiBleHBvcnQgZnVuY3Rpb24gc2V0 X3JlbmFtYWJsZV9vcHRpb24ocGFuZWwsIGlzX2ZpbGUpIHsKICAgaWYoaXNfZmlsZSB8fCBpc19m aWxlID09ICd0cnVlJykgewotICAgIHBhbmVsLl9pc1JlbmFtYWJsZSA9IGZhbHNlOworICAgIHBh bmVsLnJlbmFtYWJsZShmYWxzZSk7CiAgICAgJCgnLmNvbm4taW5mby1kZCcpLmhpZGUoKTsKICAg ICAkKCcuY29ubmVjdGlvbi1kYXRhJykuY3NzKHtwb2ludGVyRXZlbnRzOiAnbm9uZScsIGN1cnNv cjogJ2Fycm93J30pOwogICB9IGVsc2UgewotICAgIHBhbmVsLl9pc1JlbmFtYWJsZSA9IHRydWU7 CisgICAgcGFuZWwucmVuYW1hYmxlKHRydWUpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL2VyZC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9fX2lu aXRfXy5weQppbmRleCAzMDFhY2E5YzkuLjFjZTc0MjE4NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvZXJkL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9fX2lu aXRfXy5weQpAQCAtMjg4LDYgKzI4OCwyNCBAQCBjbGFzcyBFUkRNb2R1bGUoUGdBZG1pbk1vZHVs ZSk6CiAgICAgICAgICAgICBmaWVsZHM9c2hvcnRjdXRfZmllbGRzCiAgICAgICAgICkKIAorICAg ICAgICBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICAgICAna2V5Ym9hcmRfc2hv cnRjdXRzJywKKyAgICAgICAgICAgICdzaG93X2RldGFpbHMnLAorICAgICAgICAgICAgZ2V0dGV4 dCgnU2hvdyBtb3JlL2Zld2VyIGRldGFpbHMnKSwKKyAgICAgICAgICAgICdrZXlib2FyZHNob3J0 Y3V0JywKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnYWx0JzogVHJ1ZSwKKyAgICAg ICAgICAgICAgICAnc2hpZnQnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAnY29udHJvbCc6IFRy dWUsCisgICAgICAgICAgICAgICAgJ2tleSc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ2tleV9j b2RlJzogODQsCisgICAgICAgICAgICAgICAgICAgICdjaGFyJzogJ3QnCisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNhdGVnb3J5X2xhYmVsPVBSRUZfTEFC RUxfS0VZQk9BUkRfU0hPUlRDVVRTLAorICAgICAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxk cworICAgICAgICApCisKICAgICAgICAgc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAg ICAgICAgJ2tleWJvYXJkX3Nob3J0Y3V0cycsCiAgICAgICAgICAgICAnem9vbV90b19maXQnLApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRD b3JlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRDb3Jl LmpzCmluZGV4IGVhMGUyMmEyOS4uOGZhYWU0ZDAxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL0VSRENvcmUuanMKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRDb3JlLmpzCkBAIC0yMTIsMTQgKzIxMiwx NCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBFUkRDb3JlIHsKICAgICBsZXQgc291cmNlUG9ydCA9 IHNvdXJjZU5vZGUuZ2V0UG9ydChwb3J0TmFtZSk7CiAgICAgLyogQ3JlYXRlIHRoZSBwb3J0IGlm IG5vdCB0aGVyZSAqLwogICAgIGlmKCFzb3VyY2VQb3J0KSB7Ci0gICAgICBzb3VyY2VQb3J0ID0g c291cmNlTm9kZS5hZGRQb3J0KHRoaXMuZ2V0TmV3UG9ydCh0eXBlLCBudWxsLCB7bmFtZTpwb3J0 TmFtZSwgYWxpZ25tZW50OlBvcnRNb2RlbEFsaWdubWVudC5SSUdIVH0pKTsKKyAgICAgIHNvdXJj ZVBvcnQgPSBzb3VyY2VOb2RlLmFkZFBvcnQodGhpcy5nZXROZXdQb3J0KHR5cGUsIG51bGwsIHtu YW1lOnBvcnROYW1lLCBzdWJ0eXBlOiAnb25lJywgYWxpZ25tZW50OlBvcnRNb2RlbEFsaWdubWVu dC5SSUdIVH0pKTsKICAgICB9CiAKICAgICBwb3J0TmFtZSA9IHRhcmdldE5vZGUuZ2V0UG9ydE5h bWUoZGF0YS5sb2NhbF9jb2x1bW5fYXR0bnVtKTsKICAgICBsZXQgdGFyZ2V0UG9ydCA9IHRhcmdl dE5vZGUuZ2V0UG9ydChwb3J0TmFtZSk7CiAgICAgLyogQ3JlYXRlIHRoZSBwb3J0IGlmIG5vdCB0 aGVyZSAqLwogICAgIGlmKCF0YXJnZXRQb3J0KSB7Ci0gICAgICB0YXJnZXRQb3J0ID0gdGFyZ2V0 Tm9kZS5hZGRQb3J0KHRoaXMuZ2V0TmV3UG9ydCh0eXBlLCBudWxsLCB7bmFtZTpwb3J0TmFtZSwg YWxpZ25tZW50OlBvcnRNb2RlbEFsaWdubWVudC5SSUdIVH0pKTsKKyAgICAgIHRhcmdldFBvcnQg PSB0YXJnZXROb2RlLmFkZFBvcnQodGhpcy5nZXROZXdQb3J0KHR5cGUsIG51bGwsIHtuYW1lOnBv cnROYW1lLCBzdWJ0eXBlOiAnbWFueScsIGFsaWdubWVudDpQb3J0TW9kZWxBbGlnbm1lbnQuUklH SFR9KSk7CiAgICAgfQogCiAgICAgLyogTGluayB0aGUgcG9ydHMgKi8KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9UYWJsZURpYWxv Zy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9U YWJsZURpYWxvZy5qcwppbmRleCBlMWZlZTgxNWYuLjJiNTZlYTFjNCAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9kaWFsb2dzL1RhYmxlRGlhbG9n LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9n cy9UYWJsZURpYWxvZy5qcwpAQCAtNTAsNyArNTAsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBU YWJsZURpYWxvZyB7CiAgICAgcmV0dXJuICdlbnRpdHlfZGlhbG9nJzsKICAgfQogCi0gIGdldERh dGFNb2RlbChhdHRyaWJ1dGVzLCBjb2xUeXBlcywgc2NoZW1hcywgc1ZlcnNpb24pIHsKKyAgZ2V0 RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIGV4aXN0aW5nVGFibGVzLCBjb2xUeXBlcywgc2NoZW1hcywg c1ZlcnNpb24pIHsKICAgICBsZXQgZGlhbG9nT2JqID0gdGhpczsKICAgICBsZXQgY29sdW1uc01v ZGVsID0gdGhpcy5wZ0Jyb3dzZXIuRGF0YU1vZGVsLmV4dGVuZCh7CiAgICAgICBpZEF0dHJpYnV0 ZTogJ2F0dG51bScsCkBAIC02OTQsNiArNjk0LDEwIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFRh YmxlRGlhbG9nIHsKICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBuYW1lIGNhbm5vdCBi ZSBlbXB0eS4nKTsKICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsK ICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICB9IGVsc2UgaWYoXy5maW5kSW5kZXgoZXhp c3RpbmdUYWJsZXMsICh0YWJsZSk9PnRhYmxlWzBdPT1zY2hlbWEmJnRhYmxlWzFdPT1uYW1lKSA+ PSAwKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGFibGUgbmFtZSBhbHJlYWR5IGV4aXN0 cy4nKTsKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKKyAgICAg ICAgICByZXR1cm4gbXNnOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnbmFtZScpOwogICAgICAgICBpZiAoCkBAIC03MDUsNiArNzA5LDggQEAgZXhwb3J0IGRlZmF1 bHQgY2xhc3MgVGFibGVEaWFsb2cgewogICAgICAgICAgIHJldHVybiBtc2c7CiAgICAgICAgIH0K ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdzY2hlbWEnKTsKKworCiAgICAgICAgIHJl dHVybiBudWxsOwogICAgICAgfSwKICAgICB9KTsKQEAgLTczMSw5ICs3MzcsOSBAQCBleHBvcnQg ZGVmYXVsdCBjbGFzcyBUYWJsZURpYWxvZyB7CiAgICAgcmV0dXJuIEFsZXJ0aWZ5W2RpYWxvZ05h bWVdOwogICB9CiAKLSAgc2hvdyh0aXRsZSwgYXR0cmlidXRlcywgY29sVHlwZXMsIHNjaGVtYXMs IHNWZXJzaW9uLCBjYWxsYmFjaykgeworICBzaG93KHRpdGxlLCBhdHRyaWJ1dGVzLCBleGlzdGlu Z1RhYmxlcywgY29sVHlwZXMsIHNjaGVtYXMsIHNWZXJzaW9uLCBjYWxsYmFjaykgewogICAgIGxl dCBkaWFsb2dUaXRsZSA9IHRpdGxlIHx8IGdldHRleHQoJ1Vua25vd24nKTsKICAgICBjb25zdCBk aWFsb2cgPSB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9nKCd0YWJsZV9kaWFsb2cnKTsKLSAgICBkaWFs b2coZGlhbG9nVGl0bGUsIHRoaXMuZ2V0RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIGNvbFR5cGVzLCBz Y2hlbWFzLCBzVmVyc2lvbiksIGNhbGxiYWNrKS5yZXNpemVUbyh0aGlzLnBnQnJvd3Nlci5zdGRX Lm1kLCB0aGlzLnBnQnJvd3Nlci5zdGRILm1kKTsKKyAgICBkaWFsb2coZGlhbG9nVGl0bGUsIHRo aXMuZ2V0RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIGV4aXN0aW5nVGFibGVzLCBjb2xUeXBlcywgc2No ZW1hcywgc1ZlcnNpb24pLCBjYWxsYmFjaykucmVzaXplVG8odGhpcy5wZ0Jyb3dzZXIuc3RkVy5t ZCwgdGhpcy5wZ0Jyb3dzZXIuc3RkSC5tZCk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvaW5kZXguanMgYi93ZWIvcGdhZG1pbi90 b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL2luZGV4LmpzCmluZGV4IDUyM2ViZDE0Zi4uZTg2 NWMyOWJkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90 b29sL2luZGV4LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rv b2wvaW5kZXguanMKQEAgLTksMTAgKzksMTMgQEAKIAogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0 JzsKIGltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nOworaW1wb3J0IF8gZnJvbSAnbG9k YXNoJzsKKwogaW1wb3J0IEJvZHlXaWRnZXQgZnJvbSAnLi91aV9jb21wb25lbnRzL0JvZHlXaWRn ZXQnOwogaW1wb3J0IGdldERpYWxvZywge3RyYW5zZm9ybVRvU3VwcG9ydGVkfSBmcm9tICcuL2Rp YWxvZ3MnOwogaW1wb3J0IEFsZXJ0aWZ5IGZyb20gJ3BnYWRtaW4uYWxlcnRpZnlqcyc7CiBpbXBv cnQgcGdXaW5kb3cgZnJvbSAnc291cmNlcy93aW5kb3cnOworaW1wb3J0IHBnQWRtaW4gZnJvbSAn c291cmNlcy9wZ2FkbWluJzsKIAogZXhwb3J0IGRlZmF1bHQgY2xhc3MgRVJEVG9vbCB7CiAgIGNv bnN0cnVjdG9yKGNvbnRhaW5lciwgcGFyYW1zKSB7CkBAIC0yMCwxMCArMjMsMjggQEAgZXhwb3J0 IGRlZmF1bHQgY2xhc3MgRVJEVG9vbCB7CiAgICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7CiAgIH0K IAorICBnZXRQcmVmZXJlbmNlc0Zvck1vZHVsZSgpIHsKKworICB9CisKICAgcmVuZGVyKCkgewog ICAgIC8qIE1vdW50IHRoZSBSZWFjdCBFUkQgdG9vbCB0byB0aGUgY29udGFpbmVyICovCisgICAg bGV0IHBhbmVsID0gbnVsbDsKKyAgICBfLmVhY2gocGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLmRv Y2tlci5maW5kUGFuZWxzKCdmcm1fZXJkdG9vbCcpLCBmdW5jdGlvbihwKSB7CisgICAgICBpZiAo cC5pc1Zpc2libGUoKSkgeworICAgICAgICBwYW5lbCA9IHA7CisgICAgICB9CisgICAgfSk7CisK ICAgICBSZWFjdERPTS5yZW5kZXIoCi0gICAgICA8Qm9keVdpZGdldCBwYXJhbXM9e3RoaXMucGFy YW1zfSBnZXREaWFsb2c9e2dldERpYWxvZ30gdHJhbnNmb3JtVG9TdXBwb3J0ZWQ9e3RyYW5zZm9y bVRvU3VwcG9ydGVkfSBwZ0FkbWluPXtwZ1dpbmRvdy5wZ0FkbWlufSBhbGVydGlmeT17QWxlcnRp Znl9IC8+LAorICAgICAgPEJvZHlXaWRnZXQKKyAgICAgICAgcGFyYW1zPXt0aGlzLnBhcmFtc30K KyAgICAgICAgZ2V0RGlhbG9nPXtnZXREaWFsb2d9CisgICAgICAgIHRyYW5zZm9ybVRvU3VwcG9y dGVkPXt0cmFuc2Zvcm1Ub1N1cHBvcnRlZH0KKyAgICAgICAgcGdXaW5kb3c9e3BnV2luZG93fQor ICAgICAgICBwZ0FkbWluPXtwZ0FkbWlufQorICAgICAgICBwYW5lbD17cGFuZWx9CisgICAgICAg IGFsZXJ0aWZ5PXtBbGVydGlmeX0gLz4sCiAgICAgICB0aGlzLmNvbnRhaW5lcgogICAgICk7CiAg IH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv bGlua3MvT25lVG9NYW55TGluay5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pz L2VyZF90b29sL2xpbmtzL09uZVRvTWFueUxpbmsuanN4CmluZGV4IGJlOTg1YWZkZS4uMzdiNDU2 ODI1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29s L2xpbmtzL09uZVRvTWFueUxpbmsuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0 aWMvanMvZXJkX3Rvb2wvbGlua3MvT25lVG9NYW55TGluay5qc3gKQEAgLTksMTIgKzksMTIgQEAK IAogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKIGltcG9ydCB7Ci0gICAgUmlnaHRBbmdsZUxp bmtNb2RlbCwKLSAgICBSaWdodEFuZ2xlTGlua1dpZGdldCwKLSAgICBEZWZhdWx0TGlua0ZhY3Rv cnksCi0gICAgUG9ydE1vZGVsQWxpZ25tZW50LAotICAgIExpbmtXaWRnZXQsCi0gICAgUG9pbnRN b2RlbAorICBSaWdodEFuZ2xlTGlua01vZGVsLAorICBSaWdodEFuZ2xlTGlua1dpZGdldCwKKyAg RGVmYXVsdExpbmtGYWN0b3J5LAorICBQb3J0TW9kZWxBbGlnbm1lbnQsCisgIExpbmtXaWRnZXQs CisgIFBvaW50TW9kZWwsCiB9IGZyb20gJ0Bwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMnOwog aW1wb3J0IHtQb2ludH0gZnJvbSAnQHByb2plY3RzdG9ybS9nZW9tZXRyeSc7CiBpbXBvcnQgXyBm cm9tICdsb2Rhc2gnOwpAQCAtMjQsNyArMjQsNyBAQCBleHBvcnQgY29uc3QgT25lVG9NYW55TW9k ZWwgPSB7CiAgIGxvY2FsX2NvbHVtbl9hdHRudW06IHVuZGVmaW5lZCwKICAgcmVmZXJlbmNlZF90 YWJsZV91aWQ6IHVuZGVmaW5lZCwKICAgcmVmZXJlbmNlZF9jb2x1bW5fYXR0bnVtOiB1bmRlZmlu ZWQsCi19Cit9OwogCiBleHBvcnQgY2xhc3MgT25lVG9NYW55TGlua01vZGVsIGV4dGVuZHMgUmln aHRBbmdsZUxpbmtNb2RlbCB7CiAgIGNvbnN0cnVjdG9yKHtkYXRhLCAuLi5vcHRpb25zfSkgewpA QCAtMzMsNyArMzMsNyBAQCBleHBvcnQgY2xhc3MgT25lVG9NYW55TGlua01vZGVsIGV4dGVuZHMg UmlnaHRBbmdsZUxpbmtNb2RlbCB7CiAgICAgICB3aWR0aDogMSwKICAgICAgIGNsYXNzOiAnbGlu ay1vbmV0b21hbnknLAogICAgICAgbG9ja2VkOiB0cnVlLAotICAgICAgLi4ub3B0aW9ucworICAg ICAgLi4ub3B0aW9ucywKICAgICB9KTsKIAogICAgIHRoaXMuX2RhdGEgPSB7CkBAIC02MiwxMyAr NjIsMTMgQEAgZXhwb3J0IGNsYXNzIE9uZVRvTWFueUxpbmtNb2RlbCBleHRlbmRzIFJpZ2h0QW5n bGVMaW5rTW9kZWwgewogICAgICAgICAnbG9jYWxfY29sdW1uJzogXy5maW5kKHRhcmdldC5jb2x1 bW5zLCAoY29sKT0+ZGF0YS5sb2NhbF9jb2x1bW5fYXR0bnVtID09IGNvbC5hdHRudW0pLm5hbWUs CiAgICAgICAgICdyZWZlcmVuY2VkJzogXy5maW5kKHNvdXJjZS5jb2x1bW5zLCAoY29sKT0+ZGF0 YS5yZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0gPT0gY29sLmF0dG51bSkubmFtZSwKICAgICAgIH1d LAotICAgIH0KKyAgICB9OwogICB9CiAKICAgc2VyaWFsaXplKCkgewogICAgIHJldHVybiB7CiAg ICAgICAuLi5zdXBlci5zZXJpYWxpemUoKSwKLSAgICAgIGRhdGE6IHRoaXMuZ2V0RGF0YSgpCisg ICAgICBkYXRhOiB0aGlzLmdldERhdGEoKSwKICAgICB9OwogICB9CiB9CkBAIC04MywxMyArODMs MTMgQEAgY29uc3QgQ3VzdG9tTGlua0VuZFdpZGdldCA9IHByb3BzID0+IHsKICAgICAgICAgICA8 Y2lyY2xlIGNsYXNzTmFtZT0ic3ZnLWxpbmstZWxlIHN2Zy1vdG9tLWNpcmNsZSIgY3g9IjAiIGN5 PSIxNiIgcj17cHJvcHMud2lkdGgqMS43NX0gc3Ryb2tlV2lkdGg9e3Byb3BzLndpZHRofSAvPgog ICAgICAgICAgIDxwb2x5bGluZSBjbGFzc05hbWU9InN2Zy1saW5rLWVsZSIgcG9pbnRzPSItOCww IDAsMTUgMCwwIDAsMzAgMCwxNSA4LDAiIGZpbGw9Im5vbmUiIHN0cm9rZVdpZHRoPXtwcm9wcy53 aWR0aH0gLz4KICAgICAgICAgPC8+Ci0gICAgICApCisgICAgICApOwogICAgIH0gZWxzZSBpZiAo dHlwZSA9PSAnb25lJykgewogICAgICAgcmV0dXJuICgKICAgICAgICAgPHBvbHlsaW5lIGNsYXNz TmFtZT0ic3ZnLWxpbmstZWxlIiBwb2ludHM9Ii04LDE1IDAsMTUgMCwwIDAsMzAgMCwxNSA4LDE1 IiBmaWxsPSJub25lIiBzdHJva2VXaWR0aD17cHJvcHMud2lkdGh9IC8+Ci0gICAgICApCisgICAg ICApOwogICAgIH0KLSAgfQorICB9OwogCiAgIHJldHVybiAoCiAgICAgPGcgdHJhbnNmb3JtPXsn dHJhbnNsYXRlKCcgKyBwb2ludC5nZXRQb3NpdGlvbigpLnggKyAnLCAnICsgcG9pbnQuZ2V0UG9z aXRpb24oKS55ICsgJyknfT4KQEAgLTExMSwyMSArMTExLDIxIEBAIGV4cG9ydCBjbGFzcyBPbmVU b01hbnlMaW5rV2lkZ2V0IGV4dGVuZHMgUmlnaHRBbmdsZUxpbmtXaWRnZXQgewogICAgIGxldCBk ZWdyZWUgPSAwOwogICAgIGxldCB0eCA9IDAsIHR5ID0gMDsKICAgICBzd2l0Y2goYWxpZ25tZW50 KSB7Ci0gICAgICBjYXNlIFBvcnRNb2RlbEFsaWdubWVudC5CT1RUT006Ci0gICAgICAgIHR5ID0g LW9mZnNldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFBvcnRNb2RlbEFsaWdubWVudC5M RUZUOgotICAgICAgICBkZWdyZWUgPSA5MDsKLSAgICAgICAgdHggPSBvZmZzZXQKLSAgICAgICAg YnJlYWs7Ci0gICAgICBjYXNlIFBvcnRNb2RlbEFsaWdubWVudC5UT1A6Ci0gICAgICAgIGRlZ3Jl ZSA9IDE4MDsKLSAgICAgICAgdHkgPSBvZmZzZXQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz ZSBQb3J0TW9kZWxBbGlnbm1lbnQuUklHSFQ6Ci0gICAgICAgIGRlZ3JlZSA9IC05MDsKLSAgICAg ICAgdHggPSAtb2Zmc2V0OwotICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvcnRNb2RlbEFsaWdu bWVudC5CT1RUT006CisgICAgICB0eSA9IC1vZmZzZXQ7CisgICAgICBicmVhazsKKyAgICBjYXNl IFBvcnRNb2RlbEFsaWdubWVudC5MRUZUOgorICAgICAgZGVncmVlID0gOTA7CisgICAgICB0eCA9 IG9mZnNldDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUG9ydE1vZGVsQWxpZ25tZW50LlRPUDoK KyAgICAgIGRlZ3JlZSA9IDE4MDsKKyAgICAgIHR5ID0gb2Zmc2V0OworICAgICAgYnJlYWs7Cisg ICAgY2FzZSBQb3J0TW9kZWxBbGlnbm1lbnQuUklHSFQ6CisgICAgICBkZWdyZWUgPSAtOTA7Cisg ICAgICB0eCA9IC1vZmZzZXQ7CisgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFtkZWdy ZWUsIHR4LCB0eV07CiAgIH0KQEAgLTE0Niw4ICsxNDYsOCBAQCBleHBvcnQgY2xhc3MgT25lVG9N YW55TGlua1dpZGdldCBleHRlbmRzIFJpZ2h0QW5nbGVMaW5rV2lkZ2V0IHsKICAgICAgIHBvaW50 OiBwb2ludCwKICAgICAgIHJvdGF0aW9uOiByb3RhdGlvbiwKICAgICAgIHR4OiB0eCwKLSAgICAg IHR5OiB0eQotICAgIH0KKyAgICAgIHR5OiB0eSwKKyAgICB9OwogICB9CiAKICAgZ2VuZXJhdGVD dXN0b21FbmRXaWRnZXQoe3R5cGUsIHBvaW50LCByb3RhdGlvbiwgdHgsIHR5fSkgewpAQCAtMTgz LDcgKzE4Myw3IEBAIGV4cG9ydCBjbGFzcyBPbmVUb01hbnlMaW5rV2lkZ2V0IGV4dGVuZHMgUmln aHRBbmdsZUxpbmtXaWRnZXQgewogICB9CiAKICAgaGFuZGxlTW92ZSA9IGZ1bmN0aW9uKGV2ZW50 KSB7Ci0gICAgdGhpcy5wcm9wcy5saW5rLmdldFRhcmdldFBvcnQoKQorICAgIHRoaXMucHJvcHMu bGluay5nZXRUYXJnZXRQb3J0KCk7CiAgICAgdGhpcy5kcmFnZ2luZ0V2ZW50KGV2ZW50LCB0aGlz LmRyYWdnaW5nX2luZGV4KTsKICAgICB0aGlzLnByb3BzLmxpbmsuZmlyZUV2ZW50KHt9LCAncG9z aXRpb25DaGFuZ2VkJyk7CiAgIH0uYmluZCh0aGlzKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBleHBv cnQgY2xhc3MgT25lVG9NYW55TGlua1dpZGdldCBleHRlbmRzIFJpZ2h0QW5nbGVMaW5rV2lkZ2V0 IHsKICAgICAgIHRoaXMucHJvcHMubGluay5hZGRQb2ludCgKICAgICAgICAgbmV3IFBvaW50TW9k ZWwoewogICAgICAgICAgIGxpbms6IHRoaXMucHJvcHMubGluaywKLSAgICAgICAgICBwb3NpdGlv bjogbmV3IFBvaW50KG9uZVBvaW50LnBvaW50LmdldFgoKSwgbWFueVBvaW50LnBvaW50LmdldFko KSkKKyAgICAgICAgICBwb3NpdGlvbjogbmV3IFBvaW50KG9uZVBvaW50LnBvaW50LmdldFgoKSwg bWFueVBvaW50LnBvaW50LmdldFkoKSksCiAgICAgICAgIH0pCiAgICAgICApOwogICAgIH0KQEAg LTI0Niw3ICsyNDYsNyBAQCBleHBvcnQgY2xhc3MgT25lVG9NYW55TGlua1dpZGdldCBleHRlbmRz IFJpZ2h0QW5nbGVMaW5rV2lkZ2V0IHsKICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKGV2ZW50 KSA9PiB7CiAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZDogdHJ1ZSB9KTsK ICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5saW5rLmxhc3RIb3ZlckluZGV4T2ZQYXRoID0gajsK LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCiAgICAgICAgICAgfSwKICAgICAgICAgICBq CiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMv ZXJkX3Rvb2wvbm9kZXMvVGFibGVOb2RlLmpzeCBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0 aWMvanMvZXJkX3Rvb2wvbm9kZXMvVGFibGVOb2RlLmpzeAppbmRleCA1ZTc0ZDg5MGIuLjM4M2M2 MjFjZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9v bC9ub2Rlcy9UYWJsZU5vZGUuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMv anMvZXJkX3Rvb2wvbm9kZXMvVGFibGVOb2RlLmpzeApAQCAtMTksNyArMTksNyBAQCBleHBvcnQg Y2xhc3MgVGFibGVOb2RlTW9kZWwgZXh0ZW5kcyBEZWZhdWx0Tm9kZU1vZGVsIHsKICAgY29uc3Ry dWN0b3Ioe290aGVySW5mbywgLi4ub3B0aW9uc30pIHsKICAgICBzdXBlcih7CiAgICAgICAuLi5v cHRpb25zLAotICAgICAgdHlwZTogVFlQRQorICAgICAgdHlwZTogVFlQRSwKICAgICB9KTsKIAog ICAgIHRoaXMuX25vdGUgPSBvdGhlckluZm8ubm90ZSB8fCAnJzsKQEAgLTYwLDIyICs2MCwyMiBA QCBleHBvcnQgY2xhc3MgVGFibGVOb2RlTW9kZWwgZXh0ZW5kcyBEZWZhdWx0Tm9kZU1vZGVsIHsK IAogICBjbG9uZURhdGEobmFtZSkgewogICAgIGxldCBuZXdEYXRhID0gewotICAgICAgLi4udGhp cy5nZXREYXRhKCkKKyAgICAgIC4uLnRoaXMuZ2V0RGF0YSgpLAogICAgIH07CiAgICAgaWYobmFt ZSkgewotICAgICAgbmV3RGF0YVsnbmFtZSddID0gbmFtZQorICAgICAgbmV3RGF0YVsnbmFtZSdd ID0gbmFtZTsKICAgICB9CiAgICAgcmV0dXJuIG5ld0RhdGE7CiAgIH0KIAogICBzZXREYXRhKGRh dGEpIHsKICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAgLyogUmVtb3ZlIHRoZSBsaW5rcyBpZiBj b2x1bW4gZHJvcHBlZCAqLworICAgIC8qIFJlbW92ZSB0aGUgbGlua3MgaWYgY29sdW1uIGRyb3Bw ZWQgb3IgcHJpbWFyeSBrZXkgcmVtb3ZlZCAqLwogICAgIF8uZGlmZmVyZW5jZVdpdGgodGhpcy5f ZGF0YS5jb2x1bW5zLCBkYXRhLmNvbHVtbnMsIGZ1bmN0aW9uKGV4aXN0aW5nLCBpbmNvbWluZykg ewotICAgICAgcmV0dXJuIGV4aXN0aW5nLmF0dG51bSA9PSBpbmNvbWluZy5hdHRudW07CisgICAg ICByZXR1cm4gZXhpc3RpbmcuYXR0bnVtID09IGluY29taW5nLmF0dG51bSAmJiBpbmNvbWluZy5p c19wcmltYXJ5X2tleSA9PSB0cnVlOwogICAgIH0pLmZvckVhY2goKGNvbCk9PnsKICAgICAgIGxl dCBleGlzdFBvcnQgPSBzZWxmLmdldFBvcnQoc2VsZi5nZXRQb3J0TmFtZShjb2wuYXR0bnVtKSk7 Ci0gICAgICBpZihleGlzdFBvcnQpIHsKKyAgICAgIGlmKGV4aXN0UG9ydCAmJiBleGlzdFBvcnQu Z2V0U3VidHlwZSgpID09ICdvbmUnKSB7CiAgICAgICAgIGV4aXN0UG9ydC5yZW1vdmVBbGxMaW5r cygpOwogICAgICAgICBzZWxmLnJlbW92ZVBvcnQoZXhpc3RQb3J0KTsKICAgICAgIH0KQEAgLTEw OSw3ICsxMDksNyBAQCBleHBvcnQgY2xhc3MgVGFibGVOb2RlTW9kZWwgZXh0ZW5kcyBEZWZhdWx0 Tm9kZU1vZGVsIHsKICAgICAgIG90aGVySW5mbzogewogICAgICAgICBkYXRhOiB0aGlzLmdldERh dGEoKSwKICAgICAgICAgbm90ZTogdGhpcy5nZXROb3RlKCksCi0gICAgICB9CisgICAgICB9LAog ICAgIH07CiAgIH0KIH0KQEAgLTExOSw4ICsxMTksOCBAQCBleHBvcnQgY2xhc3MgVGFibGVOb2Rl V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICBzdXBlcihwcm9wcyk7CiAKICAg ICB0aGlzLnN0YXRlID0gewotICAgICAgc2hvd19kZXRhaWxzOiB0cnVlCi0gICAgfQorICAgICAg c2hvd19kZXRhaWxzOiB0cnVlLAorICAgIH07CiAKICAgICB0aGlzLnByb3BzLm5vZGUucmVnaXN0 ZXJMaXN0ZW5lcih7CiAgICAgICB0b2dnbGVEZXRhaWxzOiAoZXZlbnQpID0+IHsKQEAgLTE0Mywx MyArMTQzLDEzIEBAIGV4cG9ydCBjbGFzcyBUYWJsZU5vZGVXaWRnZXQgZXh0ZW5kcyBSZWFjdC5D b21wb25lbnQgewogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzc05hbWU9Im1sLWF1 dG8gY29sLXJvdy1wb3J0Ij57dGhpcy5nZW5lcmF0ZVBvcnQocG9ydCl9PC9kaXY+CiAgICAgICA8 L2Rpdj4KLSAgICApCisgICAgKTsKICAgfQogCiAgIGdlbmVyYXRlUG9ydCA9IHBvcnQgPT4gewog ICAgIGlmKHBvcnQpIHsKICAgICAgIHJldHVybiAoCi0gICAgICAgIDxQb3J0V2lkZ2V0IGVuZ2lu ZT17dGhpcy5wcm9wcy5lbmdpbmV9IHBvcnQ9e3BvcnR9IGtleT17cG9ydC5nZXRJRCgpfSBjbGFz c05hbWU9eyJwb3J0LSIgKyBwb3J0Lm9wdGlvbnMuYWxpZ25tZW50fSAvPgorICAgICAgICA8UG9y dFdpZGdldCBlbmdpbmU9e3RoaXMucHJvcHMuZW5naW5lfSBwb3J0PXtwb3J0fSBrZXk9e3BvcnQu Z2V0SUQoKX0gY2xhc3NOYW1lPXsncG9ydC0nICsgcG9ydC5vcHRpb25zLmFsaWdubWVudH0gLz4K ICAgICAgICk7CiAgICAgfQogICAgIHJldHVybiA8PjwvPjsKQEAgLTE2MywyMSArMTYzLDIxIEBA IGV4cG9ydCBjbGFzcyBUYWJsZU5vZGVXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewog ICByZW5kZXIoKSB7CiAgICAgbGV0IG5vZGVfZGF0YSA9IHRoaXMucHJvcHMubm9kZS5nZXREYXRh KCk7CiAgICAgcmV0dXJuICgKLSAgICAgIDxkaXYgY2xhc3NOYW1lPXsidGFibGUtbm9kZSAiICsg KHRoaXMucHJvcHMubm9kZS5pc1NlbGVjdGVkKCkgPyAnc2VsZWN0ZWQnOiAnJykgfSBvbkRvdWJs ZUNsaWNrPXsoKT0+e3RoaXMucHJvcHMubm9kZS5maXJlRXZlbnQoe30sICdlZGl0Tm9kZScpfX0+ CisgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYmxlLW5vZGUgJyArICh0aGlzLnByb3BzLm5vZGUu aXNTZWxlY3RlZCgpID8gJ3NlbGVjdGVkJzogJycpIH0gb25Eb3VibGVDbGljaz17KCk9Pnt0aGlz LnByb3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnZWRpdE5vZGUnKTt9fT4KICAgICAgICAgPGRpdiBj bGFzc05hbWU9InRhYmxlLXRvb2xiYXIiPgogICAgICAgICAgIDxEZXRhaWxzVG9nZ2xlQnV0dG9u IGNsYXNzTmFtZT0nYnRuLXhzJyBzaG93RGV0YWlscz17dGhpcy5zdGF0ZS5zaG93X2RldGFpbHN9 IG9uQ2xpY2s9e3RoaXMudG9nZ2xlU2hvd0RldGFpbHN9IG9uRG91YmxlQ2xpY2s9eyhlKT0+e2Uu c3RvcFByb3BhZ2F0aW9uKCk7fX0gLz4KICAgICAgICAgICB7dGhpcy5wcm9wcy5ub2RlLmdldE5v dGUoKSAmJgogICAgICAgICAgICAgPEljb25CdXR0b24gaWNvbj0iZmFyIGZhLXN0aWNreS1ub3Rl IiBjbGFzc05hbWU9ImJ0bi14cyBidG4td2FybmluZyBtbC1hdXRvIiBvbkNsaWNrPXsoKT0+ewot ICAgICAgICAgICAgICB0aGlzLnByb3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnc2hvd05vdGUnKQor ICAgICAgICAgICAgICB0aGlzLnByb3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnc2hvd05vdGUnKTsK ICAgICAgICAgICAgIH19IHRpdGxlPSJDaGVjayBub3RlIiAvPn0KICAgICAgICAgPC9kaXY+Ci0g ICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ0YWJsZS1zY2hlbWEiPgotICAgICAgICAgIDxzcGFuIGNs YXNzTmFtZT0id2NUYWJJY29uIGljb24tc2NoZW1hIj48L3NwYW4+Ci0gICAgICAgICAge25vZGVf ZGF0YS5zY2hlbWF9CisgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJkLWZsZXggdGFibGUtc2NoZW1h LWRhdGEiPgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ0YWJsZS1pY29uLXNjaGVtYSI+PC9k aXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9InRhYmxlLXNjaGVtYSI+e25vZGVfZGF0YS5z Y2hlbWF9PC9kaXY+CiAgICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzTmFtZT0idGFi bGUtbmFtZSI+Ci0gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSJ3Y1RhYkljb24gaWNvbi10YWJs ZSI+PC9zcGFuPgotICAgICAgICAgIHtub2RlX2RhdGEubmFtZX0KKyAgICAgICAgPGRpdiBjbGFz c05hbWU9ImQtZmxleCB0YWJsZS1uYW1lLWRhdGEiPgorICAgICAgICAgIDxkaXY+PHNwYW4gY2xh c3NOYW1lPSJ3Y1RhYkljb24gaWNvbi10YWJsZSI+PC9zcGFuPjwvZGl2PgorICAgICAgICAgIDxk aXYgY2xhc3NOYW1lPSJ0YWJsZS1uYW1lIj57bm9kZV9kYXRhLm5hbWV9PC9kaXY+CiAgICAgICAg IDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzTmFtZT0idGFibGUtY29scyI+CiAgICAgICAgICAg e18ubWFwKG5vZGVfZGF0YS5jb2x1bW5zLCAoY29sKT0+dGhpcy5nZW5lcmF0ZUNvbHVtbihjb2wp KX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv cG9ydHMvT25lVG9NYW55UG9ydC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMv ZXJkX3Rvb2wvcG9ydHMvT25lVG9NYW55UG9ydC5qcwppbmRleCBjNDEyYWNkNzcuLjliY2JkYzQx NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9w b3J0cy9PbmVUb01hbnlQb3J0LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMv anMvZXJkX3Rvb2wvcG9ydHMvT25lVG9NYW55UG9ydC5qcwpAQCAtMTYsNiArMTYsNyBAQCBjb25z dCBUWVBFID0gJ29uZXRvbWFueSc7CiBleHBvcnQgZGVmYXVsdCBjbGFzcyBPbmVUb01hbnlQb3J0 TW9kZWwgZXh0ZW5kcyBQb3J0TW9kZWwgewogICBjb25zdHJ1Y3Rvcih7b3B0aW9uc30pIHsKICAg ICBzdXBlcih7CisgICAgICBzdWJ0eXBlOiAnbm90c2V0JywKICAgICAgIC4uLm9wdGlvbnMsCiAg ICAgICB0eXBlOiBUWVBFLAogICAgIH0pOwpAQCAtMzAsNiArMzEsMjIgQEAgZXhwb3J0IGRlZmF1 bHQgY2xhc3MgT25lVG9NYW55UG9ydE1vZGVsIGV4dGVuZHMgUG9ydE1vZGVsIHsKICAgY3JlYXRl TGlua01vZGVsKCkgewogICAgIHJldHVybiBuZXcgT25lVG9NYW55TGlua01vZGVsKHt9KTsKICAg fQorCisgIGdldFN1YnR5cGUoKSB7CisgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdWJ0eXBlOwor ICB9CisKKyAgZGVzZXJpYWxpemUoZXZlbnQpIHsKKyAgICBzdXBlci5kZXNlcmlhbGl6ZShldmVu dCk7CisgICAgdGhpcy5vcHRpb25zLnN1YnR5cGUgPSBldmVudC5kYXRhLnN1YnR5cGUgfHwgJ25v dHNldCc7CisgIH0KKworICBzZXJpYWxpemUoKSB7CisgICAgcmV0dXJuIHsKKyAgICAgIC4uLnN1 cGVyLnNlcmlhbGl6ZSgpLAorICAgICAgc3VidHlwZTogdGhpcy5vcHRpb25zLnN1YnR5cGUsCisg ICAgfTsKKyAgfQogfQogCiBleHBvcnQgY2xhc3MgT25lVG9NYW55UG9ydEZhY3RvcnkgZXh0ZW5k cyBBYnN0cmFjdE1vZGVsRmFjdG9yeSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9l cmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvQm9keVdpZGdldC5qc3ggYi93ZWIv cGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvQm9keVdp ZGdldC5qc3gKaW5kZXggMTQzNjU0Nzg3Li5hODVlMDA4YjYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Cb2R5V2lkZ2V0 LmpzeAorKysgYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2Nv bXBvbmVudHMvQm9keVdpZGdldC5qc3gKQEAgLTEyLDYgKzEyLDEwIEBAIGltcG9ydCB7IENhbnZh c1dpZGdldCB9IGZyb20gJ0Bwcm9qZWN0c3Rvcm0vcmVhY3QtY2FudmFzLWNvcmUnOwogaW1wb3J0 IGF4aW9zIGZyb20gJ2F4aW9zJzsKIGltcG9ydCB7IEFjdGlvbiwgSW5wdXRUeXBlIH0gZnJvbSAn QHByb2plY3RzdG9ybS9yZWFjdC1jYW52YXMtY29yZSc7CiBpbXBvcnQgUHJvcFR5cGVzIGZyb20g J3Byb3AtdHlwZXMnOworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9ydCBodG1sMmNhbnZh cyBmcm9tICdodG1sMmNhbnZhcyc7CitpbXBvcnQgKiBhcyBodG1sVG9JbWFnZSBmcm9tICdodG1s LXRvLWltYWdlJzsKKwogCiBpbXBvcnQgRVJEQ29yZSBmcm9tICcuLi9FUkRDb3JlJzsKIGltcG9y dCBUb29sQmFyLCB7SWNvbkJ1dHRvbiwgRGV0YWlsc1RvZ2dsZUJ1dHRvbiwgQnV0dG9uR3JvdXB9 IGZyb20gJy4vVG9vbEJhcic7CkBAIC0yMiwyMiArMjYsMjUgQEAgaW1wb3J0IHtzZXRQYW5lbFRp dGxlfSBmcm9tICcuLi8uLi9lcmRfbW9kdWxlJzsKIGltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJj ZXMvZ2V0dGV4dCc7CiBpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOwogaW1w b3J0IHtzaG93RVJEU3FsVG9vbH0gZnJvbSAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3df cXVlcnlfdG9vbCc7CitpbXBvcnQgJ3djZG9ja2VyJzsKIAogLyogQ3VzdG9tIHJlYWN0LWRpYWdy YW0gYWN0aW9uIGZvciBrZXlib2FyZCBldmVudHMgKi8KIGV4cG9ydCBjbGFzcyBLZXlib2FyZFNo b3J0Y3V0QWN0aW9uIGV4dGVuZHMgQWN0aW9uIHsKICAgY29uc3RydWN0b3Ioc2hvcnRjdXRfaGFu ZGxlcnM9W10pIHsKLSAgICAgIHN1cGVyKHsKLSAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuS0VZ X0RPV04sCi0gICAgICAgICAgZmlyZTogKHsgZXZlbnQgfSk9PnsKLSAgICAgICAgICAgIHRoaXMu Y2FsbEhhbmRsZXIoZXZlbnQpOwotICAgICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgdGhpcy5z aG9ydGN1dHMgPSB7fTsKKyAgICBzdXBlcih7CisgICAgICB0eXBlOiBJbnB1dFR5cGUuS0VZX0RP V04sCisgICAgICBmaXJlOiAoeyBldmVudCB9KT0+eworICAgICAgICB0aGlzLmNhbGxIYW5kbGVy KGV2ZW50KTsKKyAgICAgIH0sCisgICAgfSk7CisgICAgdGhpcy5zaG9ydGN1dHMgPSB7fTsKIAot ICAgICAgZm9yKGxldCBpPTA7IGk8c2hvcnRjdXRfaGFuZGxlcnMubGVuZ3RoOyBpKyspewotICAg ICAgICBsZXQgW2tleSwgaGFuZGxlcl0gPSBzaG9ydGN1dF9oYW5kbGVyc1tpXTsKKyAgICBmb3Io bGV0IGk9MDsgaTxzaG9ydGN1dF9oYW5kbGVycy5sZW5ndGg7IGkrKyl7CisgICAgICBsZXQgW2tl eSwgaGFuZGxlcl0gPSBzaG9ydGN1dF9oYW5kbGVyc1tpXTsKKyAgICAgIGlmKGtleSkgewogICAg ICAgICB0aGlzLnNob3J0Y3V0c1t0aGlzLnNob3J0Y3V0S2V5KGtleS5hbHQsIGtleS5jb250cm9s LCBrZXkuc2hpZnQsIGZhbHNlLCBrZXkua2V5LmtleV9jb2RlKV0gPSBoYW5kbGVyOwogICAgICAg fQorICAgIH0KICAgfQogCiAgIHNob3J0Y3V0S2V5KGFsdEtleSwgY3RybEtleSwgc2hpZnRLZXks IG1ldGFLZXksIGtleUNvZGUpIHsKQEAgLTY5LDkgKzc2LDEyIEBAIGV4cG9ydCBkZWZhdWx0IGNs YXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgY3VycmVudF9m aWxlOiBudWxsLAogICAgICAgZGlydHk6IGZhbHNlLAogICAgICAgc2hvd19kZXRhaWxzOiB0cnVl LAorICAgICAgaXNfbmV3X3RhYjogZmFsc2UsCiAgICAgICBwcmVmZXJlbmNlczoge30sCi0gICAg fQorICAgIH07CiAgICAgdGhpcy5kaWFncmFtID0gbmV3IEVSRENvcmUoKTsKKyAgICAvKiBGbGFn IGZvciBjaGVja2luZyBpZiB1c2VyIGhhcyBvcHRlZCBmb3Igc2F2ZSBiZWZvcmUgY2xvc2UgKi8K KyAgICB0aGlzLmNsb3NlT25TYXZlID0gUmVhY3QuY3JlYXRlUmVmKCk7CiAgICAgdGhpcy5maWxl SW5wdXRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTsKICAgICB0aGlzLmRpYWdyYW1Db250YWluZXJS ZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTsKICAgICB0aGlzLmNhbnZhc0VsZSA9IG51bGw7CkBAIC04 Myw2ICs5Myw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFj dC5Db21wb25lbnQgewogICAgIHRoaXMub25TYXZlRGlhZ3JhbSA9IHRoaXMub25TYXZlRGlhZ3Jh bS5iaW5kKHRoaXMpOwogICAgIHRoaXMub25TYXZlQXNEaWFncmFtID0gdGhpcy5vblNhdmVBc0Rp YWdyYW0uYmluZCh0aGlzKTsKICAgICB0aGlzLm9uU1FMQ2xpY2sgPSB0aGlzLm9uU1FMQ2xpY2su YmluZCh0aGlzKTsKKyAgICB0aGlzLm9uSW1hZ2VDbGljayA9IHRoaXMub25JbWFnZUNsaWNrLmJp bmQodGhpcyk7CiAgICAgdGhpcy5vbkFkZE5ld05vZGUgPSB0aGlzLm9uQWRkTmV3Tm9kZS5iaW5k KHRoaXMpOwogICAgIHRoaXMub25FZGl0Tm9kZSA9IHRoaXMub25FZGl0Tm9kZS5iaW5kKHRoaXMp OwogICAgIHRoaXMub25DbG9uZU5vZGUgPSB0aGlzLm9uQ2xvbmVOb2RlLmJpbmQodGhpcyk7CkBA IC0xMzMsNyArMTQ0LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRz IFJlYWN0LkNvbXBvbmVudCB7CiAgICAgICB9LAogICAgICAgJ2VkaXROb2RlJzogKGV2ZW50KSA9 PiB7CiAgICAgICAgIHRoaXMuYWRkRWRpdE5vZGUoZXZlbnQubm9kZSk7Ci0gICAgICB9CisgICAg ICB9LAogICAgIH07CiAgICAgT2JqZWN0LmtleXMoZGlhZ3JhbUV2ZW50cykuZm9yRWFjaChldmVu dE5hbWUgPT4gewogICAgICAgdGhpcy5kaWFncmFtLnJlZ2lzdGVyTW9kZWxFdmVudChldmVudE5h bWUsIGRpYWdyYW1FdmVudHNbZXZlbnROYW1lXSk7CkBAIC0xNTcsOSArMTY4LDEwIEBAIGV4cG9y dCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAg ICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMub25lX3RvX21hbnksIHRoaXMub25PbmVUb01hbnlD bGlja10sCiAgICAgICBbdGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy5tYW55X3RvX21hbnksIHRoaXMu b25NYW55VG9NYW55Q2xpY2tdLAogICAgICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuYXV0b19h bGlnbiwgdGhpcy5vbkF1dG9EaXN0cmlidXRlXSwKKyAgICAgIFt0aGlzLnN0YXRlLnByZWZlcmVu Y2VzLnNob3dfZGV0YWlscywgdGhpcy5vbkRldGFpbHNUb2dnbGVdLAogICAgICAgW3RoaXMuc3Rh dGUucHJlZmVyZW5jZXMuem9vbV90b19maXQsIHRoaXMuZGlhZ3JhbS56b29tVG9GaXRdLAogICAg ICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuem9vbV9pbiwgdGhpcy5kaWFncmFtLnpvb21Jbl0s Ci0gICAgICBbdGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy56b29tX291dCwgdGhpcy5kaWFncmFtLnpv b21PdXRdCisgICAgICBbdGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy56b29tX291dCwgdGhpcy5kaWFn cmFtLnpvb21PdXRdLAogICAgIF0pOwogCiAgICAgdGhpcy5kaWFncmFtLnJlZ2lzdGVyS2V5QWN0 aW9uKHRoaXMua2V5Ym9hcmRBY3Rpb25PYmopOwpAQCAtMTgyLDExICsxOTQsMTYgQEAgZXhwb3J0 IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7CiAgIH0K IAogICBhc3luYyBjb21wb25lbnREaWRNb3VudCgpIHsKLSAgICB0aGlzLnNldExvYWRpbmcoJ1By ZXBhcmluZycpOwotICAgIHRoaXMuc2V0VGl0bGUodGhpcy5zdGF0ZS5jdXJyZW50X2ZpbGUpOwor ICAgIHRoaXMuc2V0TG9hZGluZyhnZXR0ZXh0KCdQcmVwYXJpbmcuLi4nKSk7CisKICAgICB0aGlz LnNldFN0YXRlKHsKLSAgICAgIHByZWZlcmVuY2VzOiB0aGlzLnByb3BzLnBnQWRtaW4uQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnZXJkJykKLSAgICB9LCB0aGlzLnJlZ2lzdGVy S2V5Ym9hcmRTaG9ydGN1dHMpOworICAgICAgcHJlZmVyZW5jZXM6IHRoaXMucHJvcHMucGdXaW5k b3cucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdlcmQnKSwKKyAg ICAgIGlzX25ld190YWI6ICh0aGlzLnByb3BzLnBnV2luZG93LnBnQWRtaW4uQnJvd3Nlci5nZXRf cHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpLm5ld19icm93c2VyX3RhYl9vcGVuIHx8 ICcnKQorICAgICAgICAuaW5jbHVkZXMoJ2VyZF90b29sJyksCisgICAgfSwgKCk9PnsKKyAgICAg IHRoaXMucmVnaXN0ZXJLZXlib2FyZFNob3J0Y3V0cygpOworICAgICAgdGhpcy5zZXRUaXRsZSh0 aGlzLnN0YXRlLmN1cnJlbnRfZmlsZSk7CisgICAgfSk7CiAgICAgdGhpcy5yZWdpc3Rlck1vZGVs RXZlbnRzKCk7CiAgICAgdGhpcy5yZWFsaWduR3JpZCh7CiAgICAgICBiYWNrZ3JvdW5kU2l6ZTog JzQ1cHggNDVweCcsCkBAIC0xOTcsMTAgKzIxNCwxOSBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBC b2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICB0aGlzLnByb3BzLnBnQWRt aW4uQnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW4tc3RvcmFnZTpmaW5pc2hfYnRuOmNyZWF0ZV9m aWxlJywgdGhpcy5zYXZlRmlsZSwgdGhpcyk7CiAgICAgdGhpcy5wcm9wcy5wZ0FkbWluLkJyb3dz ZXIub25QcmVmZXJlbmNlc0NoYW5nZSgnZXJkJywgKCkgPT4gewogICAgICAgdGhpcy5zZXRTdGF0 ZSh7Ci0gICAgICAgIHByZWZlcmVuY2VzOiB0aGlzLnByb3BzLnBnQWRtaW4uQnJvd3Nlci5nZXRf cHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnZXJkJykKKyAgICAgICAgcHJlZmVyZW5jZXM6IHRoaXMu cHJvcHMucGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxl KCdlcmQnKSwKICAgICAgIH0sICgpPT50aGlzLnJlZ2lzdGVyS2V5Ym9hcmRTaG9ydGN1dHMoKSk7 CiAgICAgfSk7CiAKKyAgICB0aGlzLnByb3BzLnBhbmVsPy5vbih3aW5kb3cud2NEb2NrZXI/LkVW RU5ULkNMT1NJTkcsICgpID0+IHsKKyAgICAgIGlmKHRoaXMuc3RhdGUuZGlydHkpIHsKKyAgICAg ICAgdGhpcy5jbG9zZU9uU2F2ZSA9IGZhbHNlOworICAgICAgICB0aGlzLmNvbmZpcm1CZWZvcmVD bG9zZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICB9KTsKKwogICAgIGxldCBkb25lID0gYXdhaXQgdGhpcy5pbml0Q29ubmVjdGlvbigp OwogICAgIGlmKCFkb25lKSByZXR1cm47CiAKQEAgLTIxOCwxOCArMjQ0LDc4IEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgIH0K ICAgfQogCisgIGNvbmZpcm1CZWZvcmVDbG9zZSgpIHsKKyAgICBsZXQgYm9keU9iaiA9IHRoaXM7 CisgICAgdGhpcy5wcm9wcy5hbGVydGlmeS5jb25maXJtU2F2ZSB8fCB0aGlzLnByb3BzLmFsZXJ0 aWZ5LmRpYWxvZygnY29uZmlybVNhdmUnLCBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB7Cisg ICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlLCBtZXNzYWdlKSB7CisgICAgICAgICAgdGhpcy5z ZXRIZWFkZXIodGl0bGUpOworICAgICAgICAgIHRoaXMuc2V0Q29udGVudChtZXNzYWdlKTsKKyAg ICAgICAgfSwKKyAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHJldHVybiB7 CisgICAgICAgICAgICBidXR0b25zOiBbeworICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdD YW5jZWwnKSwKKyAgICAgICAgICAgICAga2V5OiAyNywgLy8gRVNDCisgICAgICAgICAgICAgIGlu dm9rZU9uQ2xvc2U6IHRydWUsCisgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vj b25kYXJ5IGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICAg ICB9LCB7CisgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0RvblwndCBzYXZlJyksCisgICAg ICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLWxnIGZhLXRyYXNo LWFsdCBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAg ICB0ZXh0OiBnZXR0ZXh0KCdTYXZlJyksCisgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBi dG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAg ICAgICB9XSwKKyAgICAgICAgICAgIGZvY3VzOiB7CisgICAgICAgICAgICAgIGVsZW1lbnQ6IDAs CisgICAgICAgICAgICAgIHNlbGVjdDogZmFsc2UsCisgICAgICAgICAgICB9LAorICAgICAgICAg ICAgb3B0aW9uczogeworICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsCisgICAgICAg ICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07Cisg ICAgICAgIH0sCisgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihjbG9zZUV2ZW50KSB7CisgICAg ICAgICAgc3dpdGNoIChjbG9zZUV2ZW50LmluZGV4KSB7CisgICAgICAgICAgY2FzZSAwOiAvLyBD YW5jZWwKKyAgICAgICAgICAgIC8vRG8gbm90aGluZy4KKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgIGNhc2UgMTogLy8gRG9uJ3QgU2F2ZQorICAgICAgICAgICAgYm9keU9iai5jbG9zZVBh bmVsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDI6IC8vU2F2ZQorICAg ICAgICAgICAgYm9keU9iai5vblNhdmVEaWFncmFtKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgIH07CisgICAgfSk7CisgICAg dGhpcy5wcm9wcy5hbGVydGlmeS5jb25maXJtU2F2ZShnZXR0ZXh0KCdTYXZlIGNoYW5nZXM/Jyks IGdldHRleHQoJ1RoZSBkaWFncmFtIGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIGNo YW5nZXM/JykpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGNsb3NlUGFuZWwoKSB7Cisg ICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gbnVsbDsKKyAgICB0aGlzLnByb3BzLnBhbmVsLm9m Zih3Y0RvY2tlci5FVkVOVC5DTE9TSU5HKTsKKyAgICB0aGlzLnByb3BzLnBnV2luZG93LnBnQWRt aW4uQnJvd3Nlci5kb2NrZXIucmVtb3ZlUGFuZWwodGhpcy5wcm9wcy5wYW5lbCk7CisgIH0KKwog ICBnZXREaWFsb2coZGlhbG9nTmFtZSkgewogICAgIGlmKGRpYWxvZ05hbWUgPT09ICdlbnRpdHlf ZGlhbG9nJykgeworICAgICAgbGV0IGV4aXN0aW5nVGFibGVzID0gdGhpcy5kaWFncmFtLmdldE1v ZGVsKCkuZ2V0Tm9kZXMoKS5tYXAoKG5vZGUpPT57CisgICAgICAgIHJldHVybiBub2RlLmdldFNj aGVtYVRhYmxlTmFtZSgpOworICAgICAgfSk7CiAgICAgICByZXR1cm4gKHRpdGxlLCBhdHRyaWJ1 dGVzLCBjYWxsYmFjayk9PnsKLSAgICAgICAgICB0aGlzLnByb3BzLmdldERpYWxvZyhkaWFsb2dO YW1lKS5zaG93KAotICAgICAgICAgICAgdGl0bGUsIGF0dHJpYnV0ZXMsIHRoaXMuZGlhZ3JhbS5n ZXRDYWNoZSgnY29sVHlwZXMnKSwgdGhpcy5kaWFncmFtLmdldENhY2hlKCdzY2hlbWFzJyksIHRo aXMuc3RhdGUuc2VydmVyX3ZlcnNpb24sIGNhbGxiYWNrCi0gICAgICAgICAgKTsKKyAgICAgICAg dGhpcy5wcm9wcy5nZXREaWFsb2coZGlhbG9nTmFtZSkuc2hvdygKKyAgICAgICAgICB0aXRsZSwg YXR0cmlidXRlcywgZXhpc3RpbmdUYWJsZXMsIHRoaXMuZGlhZ3JhbS5nZXRDYWNoZSgnY29sVHlw ZXMnKSwgdGhpcy5kaWFncmFtLmdldENhY2hlKCdzY2hlbWFzJyksIHRoaXMuc3RhdGUuc2VydmVy X3ZlcnNpb24sIGNhbGxiYWNrCisgICAgICAgICk7CiAgICAgICB9OwogICAgIH0gZWxzZSBpZihk aWFsb2dOYW1lID09PSAnb25ldG9tYW55X2RpYWxvZycgfHwgZGlhbG9nTmFtZSA9PT0gJ21hbnl0 b21hbnlfZGlhbG9nJykgewogICAgICAgcmV0dXJuICh0aXRsZSwgYXR0cmlidXRlcywgY2FsbGJh Y2spPT57Ci0gICAgICAgICAgdGhpcy5wcm9wcy5nZXREaWFsb2coZGlhbG9nTmFtZSkuc2hvdygK LSAgICAgICAgICAgICAgdGl0bGUsIGF0dHJpYnV0ZXMsIHRoaXMuZGlhZ3JhbS5nZXRNb2RlbCgp LmdldE5vZGVzRGljdCgpLCB0aGlzLnN0YXRlLnNlcnZlcl92ZXJzaW9uLCBjYWxsYmFjawotICAg ICAgICAgICk7CisgICAgICAgIHRoaXMucHJvcHMuZ2V0RGlhbG9nKGRpYWxvZ05hbWUpLnNob3co CisgICAgICAgICAgdGl0bGUsIGF0dHJpYnV0ZXMsIHRoaXMuZGlhZ3JhbS5nZXRNb2RlbCgpLmdl dE5vZGVzRGljdCgpLCB0aGlzLnN0YXRlLnNlcnZlcl92ZXJzaW9uLCBjYWxsYmFjaworICAgICAg ICApOwogICAgICAgfTsKICAgICB9CiAgIH0KQEAgLTI4OSwyMCArMzc1LDIwIEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAg Z2V0dGV4dCgnRGVsZXRlID8nKSwKICAgICAgIGdldHRleHQoJ1lvdSBoYXZlIHNlbGVjdGVkICVz IHRhYmxlcyBhbmQgJXMgbGlua3MuJywgdGhpcy5kaWFncmFtLmdldFNlbGVjdGVkTm9kZXMoKS5s ZW5ndGgsIHRoaXMuZGlhZ3JhbS5nZXRTZWxlY3RlZExpbmtzKCkubGVuZ3RoKQogICAgICAgICAr ICc8YnIgLz4nICsgZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA/Jyks Ci0gICAgICAgICgpID0+IHsKLSAgICAgICAgICB0aGlzLmRpYWdyYW0uZ2V0U2VsZWN0ZWROb2Rl cygpLmZvckVhY2goKG5vZGUpPT57Ci0gICAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKGZhbHNl KTsKLSAgICAgICAgICAgIG5vZGUucmVtb3ZlKCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgICAg dGhpcy5kaWFncmFtLmdldFNlbGVjdGVkTGlua3MoKS5mb3JFYWNoKChsaW5rKT0+ewotICAgICAg ICAgICAgbGluay5nZXRUYXJnZXRQb3J0KCkucmVtb3ZlKCk7Ci0gICAgICAgICAgICBsaW5rLmdl dFNvdXJjZVBvcnQoKS5yZW1vdmUoKTsKLSAgICAgICAgICAgIGxpbmsuc2V0U2VsZWN0ZWQoZmFs c2UpOwotICAgICAgICAgICAgbGluay5yZW1vdmUoKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAg ICB0aGlzLmRpYWdyYW0ucmVwYWludCgpOwotICAgICAgICB9LAotICAgICAgICAoKSA9PiB7fQor ICAgICAgKCkgPT4geworICAgICAgICB0aGlzLmRpYWdyYW0uZ2V0U2VsZWN0ZWROb2RlcygpLmZv ckVhY2goKG5vZGUpPT57CisgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZChmYWxzZSk7CisgICAg ICAgICAgbm9kZS5yZW1vdmUoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMuZGlhZ3JhbS5n ZXRTZWxlY3RlZExpbmtzKCkuZm9yRWFjaCgobGluayk9PnsKKyAgICAgICAgICBsaW5rLmdldFRh cmdldFBvcnQoKS5yZW1vdmUoKTsKKyAgICAgICAgICBsaW5rLmdldFNvdXJjZVBvcnQoKS5yZW1v dmUoKTsKKyAgICAgICAgICBsaW5rLnNldFNlbGVjdGVkKGZhbHNlKTsKKyAgICAgICAgICBsaW5r LnJlbW92ZSgpOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5kaWFncmFtLnJlcGFpbnQoKTsK KyAgICAgIH0sCisgICAgICAoKSA9PiB7fQogICAgICk7CiAgIH0KIApAQCAtMzEyLDExICszOTgs MTEgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBv bmVudCB7CiAKICAgb25EZXRhaWxzVG9nZ2xlKCkgewogICAgIHRoaXMuc2V0U3RhdGUoKHByZXZT dGF0ZSk9Pih7Ci0gICAgICBzaG93X2RldGFpbHM6ICFwcmV2U3RhdGUuc2hvd19kZXRhaWxzCisg ICAgICBzaG93X2RldGFpbHM6ICFwcmV2U3RhdGUuc2hvd19kZXRhaWxzLAogICAgIH0pLCAoKT0+ ewogICAgICAgdGhpcy5kaWFncmFtLmdldE1vZGVsKCkuZ2V0Tm9kZXMoKS5mb3JFYWNoKChub2Rl KT0+ewogICAgICAgICBub2RlLmZpcmVFdmVudCh7c2hvd19kZXRhaWxzOiB0aGlzLnN0YXRlLnNo b3dfZGV0YWlsc30sICd0b2dnbGVEZXRhaWxzJyk7Ci0gICAgICB9KQorICAgICAgfSk7CiAgICAg fSk7CiAgIH0KIApAQCAtMzM1LDggKzQyMSw5IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlX aWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICB9CiAKICAgb3BlbkZpbGUoZmlsZU5h bWUpIHsKKyAgICB0aGlzLnNldExvYWRpbmcoZ2V0dGV4dCgnTG9hZGluZyBwcm9qZWN0Li4uJykp OwogICAgIGF4aW9zLnBvc3QodXJsX2Zvcignc3FsZWRpdG9yLmxvYWRfZmlsZScpLCB7Ci0gICAg ICAnZmlsZV9uYW1lJzogZGVjb2RlVVJJKGZpbGVOYW1lKQorICAgICAgJ2ZpbGVfbmFtZSc6IGRl Y29kZVVSSShmaWxlTmFtZSksCiAgICAgfSkudGhlbigocmVzKT0+ewogICAgICAgdGhpcy5zZXRT dGF0ZSh7CiAgICAgICAgIGN1cnJlbnRfZmlsZTogZmlsZU5hbWUsCkBAIC0zNDQsMTMgKzQzMSwx NyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9u ZW50IHsKICAgICAgIH0pOwogICAgICAgdGhpcy5zZXRUaXRsZShmaWxlTmFtZSk7CiAgICAgICB0 aGlzLmRpYWdyYW0uZGVzZXJpYWxpemUocmVzLmRhdGEpOworICAgICAgdGhpcy5kaWFncmFtLmNs ZWFyU2VsZWN0aW9uKCk7CiAgICAgICB0aGlzLnJlZ2lzdGVyTW9kZWxFdmVudHMoKTsKICAgICB9 KS5jYXRjaCgoZXJyKT0+ewogICAgICAgdGhpcy5oYW5kbGVBeGlvc0NhdGNoKGVycik7CisgICAg fSkudGhlbigoKT0+eworICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOwogICAgIH0pOwogICB9 CiAKLSAgb25TYXZlRGlhZ3JhbShpc1NhdmVBcz1mYWxzZSkgeworICBvblNhdmVEaWFncmFtKGlz U2F2ZUFzPWZhbHNlLCBjbG9zZU9uU2F2ZT1mYWxzZSkgeworICAgIHRoaXMuY2xvc2VPblNhdmUg PSBjbG9zZU9uU2F2ZTsKICAgICBpZih0aGlzLnN0YXRlLmN1cnJlbnRfZmlsZSAmJiAhaXNTYXZl QXMpIHsKICAgICAgIHRoaXMuc2F2ZUZpbGUodGhpcy5zdGF0ZS5jdXJyZW50X2ZpbGUpOwogICAg IH0gZWxzZSB7CkBAIC0zNzAsOSArNDYxLDEwIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlX aWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICB9CiAKICAgc2F2ZUZpbGUoZmlsZU5h bWUpIHsKKyAgICB0aGlzLnNldExvYWRpbmcoZ2V0dGV4dCgnU2F2aW5nLi4uJykpOwogICAgIGF4 aW9zLnBvc3QodXJsX2Zvcignc3FsZWRpdG9yLnNhdmVfZmlsZScpLCB7CiAgICAgICAnZmlsZV9u YW1lJzogZGVjb2RlVVJJKGZpbGVOYW1lKSwKLSAgICAgICdmaWxlX2NvbnRlbnQnOiBKU09OLnN0 cmluZ2lmeSh0aGlzLmRpYWdyYW0uc2VyaWFsaXplKHRoaXMucHJvcHMucGdBZG1pbi5Ccm93c2Vy LnV0aWxzLmFwcF92ZXJzaW9uX2ludCkpCisgICAgICAnZmlsZV9jb250ZW50JzogSlNPTi5zdHJp bmdpZnkodGhpcy5kaWFncmFtLnNlcmlhbGl6ZSh0aGlzLnByb3BzLnBnQWRtaW4uQnJvd3Nlci51 dGlscy5hcHBfdmVyc2lvbl9pbnQpKSwKICAgICB9KS50aGVuKCgpPT57CiAgICAgICB0aGlzLnBy b3BzLmFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgnUHJvamVjdCBzYXZlZCBzdWNjZXNzZnVsbHku JykpOwogICAgICAgdGhpcy5zZXRTdGF0ZSh7CkBAIC0zODAsNyArNDcyLDEyIEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAg ICBkaXJ0eTogZmFsc2UsCiAgICAgICB9KTsKICAgICAgIHRoaXMuc2V0VGl0bGUoZmlsZU5hbWUp OworICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOworICAgICAgaWYodGhpcy5jbG9zZU9uU2F2 ZSkgeworICAgICAgICB0aGlzLmNsb3NlUGFuZWwuY2FsbCh0aGlzKTsKKyAgICAgIH0KICAgICB9 KS5jYXRjaCgoZXJyKT0+eworICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOwogICAgICAgdGhp cy5oYW5kbGVBeGlvc0NhdGNoKGVycik7CiAgICAgfSk7CiAgIH0KQEAgLTM5NSwxNCArNDkyLDEw IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25l bnQgewogICAgICAgdGl0bGUgPSAnVW50aXRsZWQnOwogICAgIH0KICAgICB0aXRsZSA9IHRoaXMu Z2V0Q3VycmVudFByb2plY3ROYW1lKHRpdGxlKSArIChkaXJ0eSA/ICcqJzogJycpOwotICAgIGlm ICh0aGlzLm5ld19icm93c2VyX3RhYikgeworICAgIGlmICh0aGlzLnN0YXRlLmlzX25ld190YWIp IHsKICAgICAgIHdpbmRvdy5kb2N1bWVudC50aXRsZSA9IHRpdGxlOwogICAgIH0gZWxzZSB7Ci0g ICAgICBfLmVhY2godGhpcy5wcm9wcy5wZ0FkbWluLkJyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHMo J2ZybV9lcmR0b29sJyksIGZ1bmN0aW9uKHApIHsKLSAgICAgICAgaWYgKHAuaXNWaXNpYmxlKCkp IHsKLSAgICAgICAgICBzZXRQYW5lbFRpdGxlKHAsIHRpdGxlKTsKLSAgICAgICAgfQotICAgICAg fSk7CisgICAgICBzZXRQYW5lbFRpdGxlKHRoaXMucHJvcHMucGFuZWwsIHRpdGxlKTsKICAgICB9 CiAgIH0KIApAQCAtNDE0LDcgKzUwNyw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRn ZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgdHJhbnNfaWQ6IHRoaXMucHJvcHMu cGFyYW1zLnRyYW5zX2lkLAogICAgICAgc2dpZDogdGhpcy5wcm9wcy5wYXJhbXMuc2dpZCwKICAg ICAgIHNpZDogdGhpcy5wcm9wcy5wYXJhbXMuc2lkLAotICAgICAgZGlkOiB0aGlzLnByb3BzLnBh cmFtcy5kaWQKKyAgICAgIGRpZDogdGhpcy5wcm9wcy5wYXJhbXMuZGlkLAogICAgIH0pOwogCiAg ICAgdGhpcy5zZXRMb2FkaW5nKGdldHRleHQoJ1ByZXBhcmluZyB0aGUgU1FMLi4uJykpOwpAQCAt NDI4LDE4ICs1MjEsNTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRz IFJlYWN0LkNvbXBvbmVudCB7CiAgICAgICAgICAgc2lkOiB0aGlzLnByb3BzLnBhcmFtcy5zaWQs CiAgICAgICAgICAgZGlkOiB0aGlzLnByb3BzLnBhcmFtcy5kaWQsCiAgICAgICAgICAgc3R5cGU6 IHRoaXMucHJvcHMucGFyYW1zLnNlcnZlcl90eXBlLAotICAgICAgICB9CisgICAgICAgIH07CiAK ICAgICAgICAgbGV0IHNxbElkID0gYGVyZCR7dGhpcy5wcm9wcy5wYXJhbXMudHJhbnNfaWR9YDsK ICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oc3FsSWQsIHNxbFNjcmlwdCk7Ci0gICAgICAg IHNob3dFUkRTcWxUb29sKHBhcmVudERhdGEsIHNxbElkLCB0aGlzLnByb3BzLnBhcmFtcy50aXRs ZSwgdGhpcy5wcm9wcy5wZ0FkbWluLkRhdGFHcmlkLCB0aGlzLnByb3BzLmFsZXJ0aWZ5KTsKKyAg ICAgICAgc2hvd0VSRFNxbFRvb2wocGFyZW50RGF0YSwgc3FsSWQsIHRoaXMucHJvcHMucGFyYW1z LnRpdGxlLCB0aGlzLnByb3BzLnBnV2luZG93LnBnQWRtaW4uRGF0YUdyaWQsIHRoaXMucHJvcHMu YWxlcnRpZnkpOwogICAgICAgfSkKICAgICAgIC5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgIHRo aXMuaGFuZGxlQXhpb3NDYXRjaChlcnJvcik7CiAgICAgICB9KQogICAgICAgLnRoZW4oKCk9PnsK ICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOwotICAgICAgfSkKKyAgICAgIH0pOworICB9 CisKKyAgb25JbWFnZUNsaWNrKCkgeworICAgIHRoaXMuc2V0TG9hZGluZyhnZXR0ZXh0KCdQcmVw YXJpbmcgdGhlIGltYWdlLi4uJykpOworCisgICAgLyogQ2hhbmdlIHRoZSBzdHlsZXMgZm9yIHN1 aXRpbmcgaHRtbDJjYW52YXMgKi8KKyAgICB0aGlzLmNhbnZhc0VsZS5jbGFzc0xpc3QuYWRkKCdo dG1sMmNhbnZhcy1yZXNldCcpOworICAgIHRoaXMuY2FudmFzRWxlLnN0eWxlLndpZHRoID0gdGhp cy5jYW52YXNFbGUuc2Nyb2xsV2lkdGggKyAncHgnOworICAgIHRoaXMuY2FudmFzRWxlLnN0eWxl LmhlaWdodCA9IHRoaXMuY2FudmFzRWxlLnNjcm9sbEhlaWdodCArICdweCc7CisKKyAgICBodG1s MmNhbnZhcyh0aGlzLmNhbnZhc0VsZSwgeworICAgICAgd2lkdGg6IHRoaXMuY2FudmFzRWxlLnNj cm9sbFdpZHRoICsgMTAsCisgICAgICBoZWlnaHQ6IHRoaXMuY2FudmFzRWxlLnNjcm9sbEhlaWdo dCArIDEwLAorICAgICAgc2Nyb2xsWDogMCwKKyAgICAgIHNjcm9sbFk6IDAsCisgICAgICB1c2VD T1JTOiB0cnVlLAorICAgICAgYWxsb3dUYWludDogdHJ1ZSwKKyAgICAgIGJhY2tncm91bmRDb2xv cjogd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5jYW52YXNFbGUpLmJhY2tncm91bmRDb2xv ciwKKyAgICB9KS50aGVuKChjYW52YXMpPT57CisgICAgICBsZXQgbGluayA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2EnKTsKKyAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgY2FudmFz LnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpOworICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25s b2FkJywgdGhpcy5nZXRDdXJyZW50UHJvamVjdE5hbWUoKSArICcucG5nJyk7CisgICAgICBsaW5r LmNsaWNrKCk7CisgICAgfSkuY2F0Y2goKGVycik9PnsKKyAgICAgIGNvbnNvbGUuZXJyb3IoZXJy KTsKKyAgICAgIHRoaXMucHJvcHMuYWxlcnRpZnkuYWxlcnQoKQorICAgICAgICAuc2V0KCd0aXRs ZScsIGdldHRleHQoJ0Vycm9yJykpCisgICAgICAgIC5zZXQoJ21lc3NhZ2UnLCBlcnIpLnNob3co KTsKKyAgICB9KS50aGVuKCgpPT57CisgICAgICAvKiBSZXZlcnQgYmFjayB0byB0aGUgb3JpZ2lu YWwgQ1NTIHN0eWxlcyAqLworICAgICAgdGhpcy5jYW52YXNFbGUuY2xhc3NMaXN0LnJlbW92ZSgn aHRtbDJjYW52YXMtcmVzZXQnKTsKKyAgICAgIHRoaXMuY2FudmFzRWxlLnN0eWxlLndpZHRoID0g Jyc7CisgICAgICB0aGlzLmNhbnZhc0VsZS5zdHlsZS5oZWlnaHQgPSAnJzsKKyAgICAgIHRoaXMu c2V0TG9hZGluZyhudWxsKTsKKyAgICB9KTsKICAgfQogCiAgIG9uT25lVG9NYW55Q2xpY2soKSB7 CkBAIC00NzMsOCArNjAxLDggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRl bmRzIFJlYWN0LkNvbXBvbmVudCB7CiAgICAgICAgICAgJ25hbWUnOiBgJHtyaWdodF90YWJsZS5n ZXREYXRhKCkubmFtZX1fJHtyaWdodF90YWJsZS5nZXRDb2x1bW5BdChuZXdEYXRhLnJpZ2h0X3Rh YmxlX2NvbHVtbl9hdHRudW0pLm5hbWV9YCwKICAgICAgICAgICAnaXNfcHJpbWFyeV9rZXknOiBm YWxzZSwKICAgICAgICAgICAnYXR0bnVtJzogMSwKLSAgICAgICAgfV0KLSAgICAgIH0KKyAgICAg ICAgfV0sCisgICAgICB9OwogICAgICAgbGV0IG5ld05vZGUgPSB0aGlzLmRpYWdyYW0uYWRkTm9k ZSh0YWJsZURhdGEpOwogICAgICAgdGhpcy5kaWFncmFtLmNsZWFyU2VsZWN0aW9uKCk7CiAgICAg ICBuZXdOb2RlLnNldFNlbGVjdGVkKHRydWUpOwpAQCAtNDg0LDcgKzYxMiw3IEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAg ICBsb2NhbF9jb2x1bW5fYXR0bnVtOiBuZXdOb2RlLmdldENvbHVtbnMoKVswXS5hdHRudW0sCiAg ICAgICAgIHJlZmVyZW5jZWRfdGFibGVfdWlkOiBuZXdEYXRhLmxlZnRfdGFibGVfdWlkLAogICAg ICAgICByZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0gOiBuZXdEYXRhLmxlZnRfdGFibGVfY29sdW1u X2F0dG51bSwKLSAgICAgIH0KKyAgICAgIH07CiAgICAgICB0aGlzLmRpYWdyYW0uYWRkTGluayhs aW5rRGF0YSwgJ29uZXRvbWFueScpOwogCiAgICAgICBsaW5rRGF0YSA9IHsKQEAgLTQ5Miw3ICs2 MjAsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29t cG9uZW50IHsKICAgICAgICAgbG9jYWxfY29sdW1uX2F0dG51bTogbmV3Tm9kZS5nZXRDb2x1bW5z KClbMV0uYXR0bnVtLAogICAgICAgICByZWZlcmVuY2VkX3RhYmxlX3VpZDogbmV3RGF0YS5yaWdo dF90YWJsZV91aWQsCiAgICAgICAgIHJlZmVyZW5jZWRfY29sdW1uX2F0dG51bSA6IG5ld0RhdGEu cmlnaHRfdGFibGVfY29sdW1uX2F0dG51bSwKLSAgICAgIH0KKyAgICAgIH07CiAKICAgICAgIHRo aXMuZGlhZ3JhbS5hZGRMaW5rKGxpbmtEYXRhLCAnb25ldG9tYW55Jyk7CiAKQEAgLTUwNSw3ICs2 MzMsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29t cG9uZW50IHsKICAgICAgIHRoaXMubm90ZVJlZkVsZSA9IHRoaXMuZGlhZ3JhbS5nZXRFbmdpbmUo KS5nZXROb2RlRWxlbWVudChub3RlTm9kZSk7CiAgICAgICB0aGlzLnNldFN0YXRlKHsKICAgICAg ICAgbm90ZV9ub2RlOiBub3RlTm9kZSwKLSAgICAgICAgbm90ZV9vcGVuOiB0cnVlCisgICAgICAg IG5vdGVfb3BlbjogdHJ1ZSwKICAgICAgIH0pOwogICAgIH0KICAgfQpAQCAtNTI4LDE0ICs2NTYs MTQgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBv bmVudCB7CiAgICAgICB0cmFuc19pZDogdGhpcy5wcm9wcy5wYXJhbXMudHJhbnNfaWQsCiAgICAg ICBzZ2lkOiB0aGlzLnByb3BzLnBhcmFtcy5zZ2lkLAogICAgICAgc2lkOiB0aGlzLnByb3BzLnBh cmFtcy5zaWQsCi0gICAgICBkaWQ6IHRoaXMucHJvcHMucGFyYW1zLmRpZAorICAgICAgZGlkOiB0 aGlzLnByb3BzLnBhcmFtcy5kaWQsCiAgICAgfSk7CiAKICAgICB0cnkgewogICAgICAgbGV0IHJl c3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChpbml0VXJsKTsKICAgICAgIHRoaXMuc2V0U3RhdGUo ewogICAgICAgICBjb25uX3N0YXR1czogQ09OTkVDVF9TVEFUVVMuQ09OTkVDVEVELAotICAgICAg ICBzZXJ2ZXJfdmVyc2lvbjogcmVzcG9uc2UuZGF0YS5kYXRhLnNlcnZlclZlcnNpb24KKyAgICAg ICAgc2VydmVyX3ZlcnNpb246IHJlc3BvbnNlLmRhdGEuZGF0YS5zZXJ2ZXJWZXJzaW9uLAogICAg ICAgfSk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGNhdGNoIChlcnJvcikgewpAQCAtNTU2 LDcgKzY4NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFj dC5Db21wb25lbnQgewogICAgICAgdHJhbnNfaWQ6IHRoaXMucHJvcHMucGFyYW1zLnRyYW5zX2lk LAogICAgICAgc2dpZDogdGhpcy5wcm9wcy5wYXJhbXMuc2dpZCwKICAgICAgIHNpZDogdGhpcy5w cm9wcy5wYXJhbXMuc2lkLAotICAgICAgZGlkOiB0aGlzLnByb3BzLnBhcmFtcy5kaWQKKyAgICAg IGRpZDogdGhpcy5wcm9wcy5wYXJhbXMuZGlkLAogICAgIH0pOwogCiAgICAgdHJ5IHsKQEAgLTU3 OSw3ICs3MDcsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVh Y3QuQ29tcG9uZW50IHsKICAgICAgIHRyYW5zX2lkOiB0aGlzLnByb3BzLnBhcmFtcy50cmFuc19p ZCwKICAgICAgIHNnaWQ6IHRoaXMucHJvcHMucGFyYW1zLnNnaWQsCiAgICAgICBzaWQ6IHRoaXMu cHJvcHMucGFyYW1zLnNpZCwKLSAgICAgIGRpZDogdGhpcy5wcm9wcy5wYXJhbXMuZGlkCisgICAg ICBkaWQ6IHRoaXMucHJvcHMucGFyYW1zLmRpZCwKICAgICB9KTsKIAogICAgIHRyeSB7CkBAIC02 MDQsNyArNzMyLDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJl YWN0LkNvbXBvbmVudCB7CiAgICAgICAgIDxCdXR0b25Hcm91cD4KICAgICAgICAgICA8SWNvbkJ1 dHRvbiBpZD0ib3Blbi1maWxlIiBpY29uPSJmYSBmYS1mb2xkZXItb3BlbiIgb25DbGljaz17dGhp cy5vbkxvYWREaWFncmFtfSB0aXRsZT17Z2V0dGV4dCgnTG9hZCBmcm9tIGZpbGUnKX0KICAgICAg ICAgICAgIHNob3J0Y3V0PXt0aGlzLnN0YXRlLnByZWZlcmVuY2VzLm9wZW5fcHJvamVjdH0vPgot ICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJzYXZlLWVyZCIgaWNvbj0iZmEgZmEtc2F2ZSIgb25D bGljaz17KCk9Pnt0aGlzLm9uU2F2ZURpYWdyYW0oKX19IHRpdGxlPXtnZXR0ZXh0KCdTYXZlIHBy b2plY3QnKX0KKyAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0ic2F2ZS1lcmQiIGljb249ImZhIGZh LXNhdmUiIG9uQ2xpY2s9eygpPT57dGhpcy5vblNhdmVEaWFncmFtKCk7fX0gdGl0bGU9e2dldHRl eHQoJ1NhdmUgcHJvamVjdCcpfQogICAgICAgICAgICAgc2hvcnRjdXQ9e3RoaXMuc3RhdGUucHJl ZmVyZW5jZXMuc2F2ZV9wcm9qZWN0fSBkaXNhYmxlZD17IXRoaXMuc3RhdGUuZGlydHl9Lz4KICAg ICAgICAgICA8SWNvbkJ1dHRvbiBpZD0ic2F2ZS1hcy1lcmQiIGljb249ImZhIGZhLXNoYXJlLXNx dWFyZSIgb25DbGljaz17dGhpcy5vblNhdmVBc0RpYWdyYW19IHRpdGxlPXtnZXR0ZXh0KCdTYXZl IGFzJyl9CiAgICAgICAgICAgICBzaG9ydGN1dD17dGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy5zYXZl X3Byb2plY3RfYXN9Lz4KQEAgLTYxMiw2ICs3NDAsOCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBC b2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAgICAgPEJ1dHRvbkdyb3Vw PgogICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJzYXZlLXNxbCIgaWNvbj0iZmEgZmEtZmlsZS1j b2RlIiBvbkNsaWNrPXt0aGlzLm9uU1FMQ2xpY2t9IHRpdGxlPXtnZXR0ZXh0KCdHZW5lcmF0ZSBT UUwnKX0KICAgICAgICAgICAgIHNob3J0Y3V0PXt0aGlzLnN0YXRlLnByZWZlcmVuY2VzLmdlbmVy YXRlX3NxbH0vPgorICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJzYXZlLWltYWdlIiBpY29uPSJm YSBmYS1maWxlLWltYWdlIiBvbkNsaWNrPXt0aGlzLm9uSW1hZ2VDbGlja30gdGl0bGU9e2dldHRl eHQoJ0dlbmVyYXRlIFNRTCcpfQorICAgICAgICAgICAgc2hvcnRjdXQ9e3RoaXMuc3RhdGUucHJl ZmVyZW5jZXMuZ2VuZXJhdGVfc3FsfS8+CiAgICAgICAgIDwvQnV0dG9uR3JvdXA+CiAgICAgICAg IDxCdXR0b25Hcm91cD4KICAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0iYWRkLW5vZGUiIGljb249 ImZhIGZhLXBsdXMtc3F1YXJlIiBvbkNsaWNrPXt0aGlzLm9uQWRkTmV3Tm9kZX0gdGl0bGU9e2dl dHRleHQoJ0FkZCB0YWJsZScpfQpAQCAtNjM0LDcgKzc2NCw4IEBAIGV4cG9ydCBkZWZhdWx0IGNs YXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgICA8QnV0dG9u R3JvdXA+CiAgICAgICAgICAgPEljb25CdXR0b24gaWQ9ImF1dG8tYWxpZ24iIGljb249ImZhIGZh LW1hZ2ljIiBvbkNsaWNrPXt0aGlzLm9uQXV0b0Rpc3RyaWJ1dGV9IHRpdGxlPXtnZXR0ZXh0KCdB dXRvIGFsaWduJyl9CiAgICAgICAgICAgICBzaG9ydGN1dD17dGhpcy5zdGF0ZS5wcmVmZXJlbmNl cy5hdXRvX2FsaWdufSAvPgotICAgICAgICAgIDxEZXRhaWxzVG9nZ2xlQnV0dG9uIGlkPSJtb3Jl LWRldGFpbHMiIG9uQ2xpY2s9e3RoaXMub25EZXRhaWxzVG9nZ2xlfSBzaG93RGV0YWlscz17dGhp cy5zdGF0ZS5zaG93X2RldGFpbHN9IC8+CisgICAgICAgICAgPERldGFpbHNUb2dnbGVCdXR0b24g aWQ9Im1vcmUtZGV0YWlscyIgb25DbGljaz17dGhpcy5vbkRldGFpbHNUb2dnbGV9IHNob3dEZXRh aWxzPXt0aGlzLnN0YXRlLnNob3dfZGV0YWlsc30KKyAgICAgICAgICAgIHNob3J0Y3V0PXt0aGlz LnN0YXRlLnByZWZlcmVuY2VzLnNob3dfZGV0YWlsc30gLz4KICAgICAgICAgPC9CdXR0b25Hcm91 cD4KICAgICAgICAgPEJ1dHRvbkdyb3VwPgogICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJ6b29t LXRvLWZpdCIgaWNvbj0iZmEgZmEtY29tcHJlc3MiIG9uQ2xpY2s9e3RoaXMuZGlhZ3JhbS56b29t VG9GaXR9IHRpdGxlPXtnZXR0ZXh0KCdab29tIHRvIGZpdCcpfQpAQCAtNjU0LDcgKzc4NSw3IEBA IGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQg ewogICAgICAgICByZWZlcmVuY2U9e3RoaXMubm90ZVJlZkVsZX0gbm90ZU5vZGU9e3RoaXMuc3Rh dGUubm90ZV9ub2RlfSBhcHBlbmRUbz17dGhpcy5kaWFncmFtQ29udGFpbmVyUmVmLmN1cnJlbnR9 IHJvd3M9ezh9Lz4KICAgICAgIDxkaXYgY2xhc3NOYW1lPSJkaWFncmFtLWNvbnRhaW5lciIgcmVm PXt0aGlzLmRpYWdyYW1Db250YWluZXJSZWZ9PgogICAgICAgICA8TG9hZGVyIG1lc3NhZ2U9e3Ro aXMuc3RhdGUubG9hZGluZ19tc2d9IGF1dG9FbGxpcHNpcz17dHJ1ZX0vPgotICAgICAgICA8Q2Fu dmFzV2lkZ2V0IGNsYXNzTmFtZT0iZGlhZ3JhbS1jYW52YXMgZmxleC1ncm93LTEiIHJlZj17KGVs ZSk9Pnt0aGlzLmNhbnZhc0VsZSA9IGVsZT8ucmVmPy5jdXJyZW50fX0gZW5naW5lPXt0aGlzLmRp YWdyYW0uZ2V0RW5naW5lKCl9IC8+CisgICAgICAgIDxDYW52YXNXaWRnZXQgY2xhc3NOYW1lPSJk aWFncmFtLWNhbnZhcyBmbGV4LWdyb3ctMSIgcmVmPXsoZWxlKT0+e3RoaXMuY2FudmFzRWxlID0g ZWxlPy5yZWY/LmN1cnJlbnQ7fX0gZW5naW5lPXt0aGlzLmRpYWdyYW0uZ2V0RW5naW5lKCl9IC8+ CiAgICAgICA8L2Rpdj4KICAgICAgIDwvPgogICAgICk7CkBAIC02NzIsMTAgKzgwMywxMSBAQCBC b2R5V2lkZ2V0LnByb3BUeXBlcyA9IHsKICAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1Jl cXVpcmVkLAogICAgIGJnY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsCiAgICAgZmdjb2xvcjogUHJv cFR5cGVzLnN0cmluZywKLSAgICBnZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQKKyAgICBn ZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsCiAgIH0pLAogICBnZXREaWFsb2c6IFByb3BU eXBlcy5mdW5jLmlzUmVxdWlyZWQsCiAgIHRyYW5zZm9ybVRvU3VwcG9ydGVkOiBQcm9wVHlwZXMu ZnVuYy5pc1JlcXVpcmVkLAorICBwZ1dpbmRvdzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVk LAogICBwZ0FkbWluOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsCi0gIGFsZXJ0aWZ5OiBQ cm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQKKyAgYWxlcnRpZnk6IFByb3BUeXBlcy5vYmplY3Qu aXNSZXF1aXJlZCwKIH07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGlj L2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvQ29ubmVjdGlvbkJhci5qc3ggYi93ZWIvcGdhZG1p bi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvQ29ubmVjdGlvbkJh ci5qc3gKaW5kZXggZjE5MWRjODVlLi4zYjcxZGJjYzAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Db25uZWN0aW9uQmFy LmpzeAorKysgYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2Nv bXBvbmVudHMvQ29ubmVjdGlvbkJhci5qc3gKQEAgLTE2LDcgKzE2LDcgQEAgZXhwb3J0IGNvbnN0 IFNUQVRVUyA9IHsKICAgRElTQ09OTkVDVEVEOiAyLAogICBDT05ORUNUSU5HOiAzLAogICBGQUlM RUQ6IDQsCi19Cit9OwogCiAvKiBUaGUgY29ubmVjdGlvbiBiYXIgY29tcG9uZW50ICovCiBleHBv cnQgZGVmYXVsdCBmdW5jdGlvbiBDb25uZWN0aW9uQmFyKHtzdGF0dXNJZCwgc3RhdHVzLCBiZ2Nv bG9yLCBmZ2NvbG9yLCB0aXRsZX0pIHsKQEAgLTMzLDE5ICszMywxOSBAQCBleHBvcnQgZGVmYXVs dCBmdW5jdGlvbiBDb25uZWN0aW9uQmFyKHtzdGF0dXNJZCwgc3RhdHVzLCBiZ2NvbG9yLCBmZ2Nv bG9yLCB0aXRsZQogICAgICAgICAgICAgKyAoc3RhdHVzID09IFNUQVRVUy5DT05ORUNURUQgPyAn aWNvbi1xdWVyeS10b29sLWNvbm5lY3RlZCcgOiAnJykKICAgICAgICAgICAgICsgKHN0YXR1cyA9 PSAoU1RBVFVTLkRJU0NPTk5FQ1RFRCB8fCBTVEFUVVMuRkFJTEVEKSA/ICdpY29uLXF1ZXJ5LXRv b2wtZGlzY29ubmVjdGVkICcgOiAnJykKICAgICAgICAgICAgICsgKHN0YXR1cyA9PSBTVEFUVVMu Q09OTkVDVElORyA/ICdvYnRhaW5pbmctY29ubicgOiAnJyl9Ci0gICAgICAgICAgYXJpYS1oaWRk ZW49InRydWUiIHRpdGxlPSIiIHJvbGU9ImltZyI+CisgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVl IiB0aXRsZT0iIiByb2xlPSJpbWciPgogICAgICAgICA8L3NwYW4+CiAgICAgICA8L2Rpdj4KICAg ICAgIDxkaXYgY2xhc3NOYW1lPSJjb25uZWN0aW9uLWluZm8gYnRuLWdyb3VwIiByb2xlPSJncm91 cCIgYXJpYS1sYWJlbD0iIj4KICAgICAgICAgPGRpdiBjbGFzc05hbWU9ImVkaXRvci10aXRsZSIK ICAgICAgICAgICBzdHlsZT17e2JhY2tncm91bmRDb2xvcjogYmdjb2xvciwgY29sb3I6IGZnY29s b3J9fT4KLSAgICAgICAgICAgIHtzdGF0dXMgPT0gU1RBVFVTLkNPTk5FQ1RJTkcgPyAnKCcgKyBn ZXR0ZXh0KCdPYnRhaW5pbmcgY29ubmVjdGlvbi4uLicpICsgJykgJyA6ICcnfQotICAgICAgICAg ICAge3N0YXR1cyA9PSBTVEFUVVMuRkFJTEVEID8gJygnICsgZ2V0dGV4dCgnQ29ubmVjdGlvbiBm YWlsZWQnKSArICcpICcgOiAnJ30KLSAgICAgICAgICAgIHt0aXRsZX0KKyAgICAgICAgICB7c3Rh dHVzID09IFNUQVRVUy5DT05ORUNUSU5HID8gJygnICsgZ2V0dGV4dCgnT2J0YWluaW5nIGNvbm5l Y3Rpb24uLi4nKSArICcpICcgOiAnJ30KKyAgICAgICAgICB7c3RhdHVzID09IFNUQVRVUy5GQUlM RUQgPyAnKCcgKyBnZXR0ZXh0KCdDb25uZWN0aW9uIGZhaWxlZCcpICsgJykgJyA6ICcnfQorICAg ICAgICAgIHt0aXRsZX0KICAgICAgICAgPC9kaXY+CiAgICAgICA8L2Rpdj4KICAgICA8L2Rpdj4K LSAgKQorICApOwogfQogCiBDb25uZWN0aW9uQmFyLnByb3BUeXBlcyA9IHsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9G bG9hdGluZ05vdGUuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9v bC91aV9jb21wb25lbnRzL0Zsb2F0aW5nTm90ZS5qc3gKaW5kZXggMTkwNTA1MTJjLi4wNTI4Mjlm OTMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv dWlfY29tcG9uZW50cy9GbG9hdGluZ05vdGUuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2Vy ZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9GbG9hdGluZ05vdGUuanN4CkBAIC01 MSwxMyArNTEsMTMgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmxvYXRpbmdOb3RlKHtvcGVu LCBvbkNsb3NlLCByZWZlcmVuY2UsIHJvd3MsIG5vdGVOb2RlLAogICAgICAgICAgIDwvZGl2Pgog ICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgotICAgICAgKX0KLSAgICAgIHZpc2libGU9e29w ZW59Ci0gICAgICBpbnRlcmFjdGl2ZT17dHJ1ZX0KLSAgICAgIGFuaW1hdGlvbj17ZmFsc2V9Ci0g ICAgICByZWZlcmVuY2U9e3JlZmVyZW5jZX0KLSAgICAgIHBsYWNlbWVudD0nYXV0by1lbmQnCi0g ICAgICB7Li4udGlwcHlQcm9wc30KKyAgICApfQorICAgIHZpc2libGU9e29wZW59CisgICAgaW50 ZXJhY3RpdmU9e3RydWV9CisgICAgYW5pbWF0aW9uPXtmYWxzZX0KKyAgICByZWZlcmVuY2U9e3Jl ZmVyZW5jZX0KKyAgICBwbGFjZW1lbnQ9J2F1dG8tZW5kJworICAgIHsuLi50aXBweVByb3BzfQog ICAgIC8+CiAgICk7CiB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGlj L2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvVG9vbEJhci5qc3ggYi93ZWIvcGdhZG1pbi90b29s cy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvVG9vbEJhci5qc3gKaW5kZXgg MmYzNzZlNGNiLi5mZTQyODBhZjMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9z dGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Ub29sQmFyLmpzeAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvVG9vbEJhci5q c3gKQEAgLTM0LDcgKzM0LDcgQEAgQmFzZUljb25CdXR0b24ucHJvcFR5cGVzID0gewogICB0ZXh0 OiBQcm9wVHlwZXMuc3RyaW5nLAogICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsCiAgIHJl ZjogQ3VzdG9tUHJvcFR5cGVzLnJlZiwKLX0KK307CiAKIAogLyogVGhlIHRvb2x0aXAgY29udGVu dCB0byBzaG93IHNob3J0Y3V0IGRldGFpbHMgKi8KQEAgLTQ3LDEwICs0NywxMCBAQCBleHBvcnQg ZnVuY3Rpb24gU2hvcnRjdXQoe3Nob3J0Y3V0fSkgewogICByZXR1cm4gKAogICAgIDxkaXYgc3R5 bGU9e3tqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsIG1hcmdpblRvcDogJzAuMTI1cmVtJ319IGNs YXNzTmFtZT0iZC1mbGV4Ij4KICAgICAgIHtrZXlzLm1hcCgoa2V5LCBpKT0+ewotICAgICAgICBy ZXR1cm4gPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT0ic2hvcnRjdXQta2V5Ij57a2V5fTwvZGl2Pgor ICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT0ic2hvcnRjdXQta2V5Ij57a2V5 fTwvZGl2PjsKICAgICAgIH0pfQogICAgIDwvZGl2PgotICApCisgICk7CiB9CiAKIGNvbnN0IHNo b3J0Y3V0UHJvcFR5cGUgPSBQcm9wVHlwZXMuc2hhcGUoewpAQCAtODUsNyArODUsNyBAQCBleHBv cnQgY29uc3QgSWNvbkJ1dHRvbiA9IGZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHsKICAgICAg IDwvVGlwcHk+CiAgICAgKTsKICAgfSBlbHNlIHsKLSAgICByZXR1cm4gPEJhc2VJY29uQnV0dG9u IHJlZj17cmVmfSBjbGFzc05hbWU9J2J0biBidG4tc20gYnRuLXByaW1hcnktaWNvbicgey4uLm90 aGVyUHJvcHN9Lz4KKyAgICByZXR1cm4gPEJhc2VJY29uQnV0dG9uIHJlZj17cmVmfSBjbGFzc05h bWU9J2J0biBidG4tc20gYnRuLXByaW1hcnktaWNvbicgey4uLm90aGVyUHJvcHN9Lz47CiAgIH0K IH0pOwogCkBAIC05MywyMSArOTMsMjEgQEAgSWNvbkJ1dHRvbi5wcm9wVHlwZXMgPSB7CiAgIHRp dGxlOiBQcm9wVHlwZXMuc3RyaW5nLAogICBzaG9ydGN1dDogc2hvcnRjdXRQcm9wVHlwZSwKICAg Y2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLAotfQorfTsKIAogLyogVG9nZ2xlIGJ1dHRvbiwg aWNvbiBjaGFuZ2VzIGJhc2VkIG9uIHZhbHVlICovCiBleHBvcnQgZnVuY3Rpb24gRGV0YWlsc1Rv Z2dsZUJ1dHRvbih7c2hvd0RldGFpbHMsIC4uLnByb3BzfSkgewogICByZXR1cm4gKAogICAgIDxJ Y29uQnV0dG9uCiAgICAgICBpY29uPXtzaG93RGV0YWlscyA/ICdmYXIgZmEtZXllJyA6ICdmYXMg ZmEtbG93LXZpc2lvbid9Ci0gICAgICB0aXRsZT17c2hvd0RldGFpbHMgPyBnZXR0ZXh0KCdTaG93 IGZld2VyIGRldGFpbHMnKSA6IGdldHRleHQoIlNob3cgbW9yZSBkZXRhaWxzIikgfQorICAgICAg dGl0bGU9e3Nob3dEZXRhaWxzID8gZ2V0dGV4dCgnU2hvdyBmZXdlciBkZXRhaWxzJykgOiBnZXR0 ZXh0KCdTaG93IG1vcmUgZGV0YWlscycpIH0KICAgICAgIHsuLi5wcm9wc30gLz4KICAgKTsKIH0K IAogRGV0YWlsc1RvZ2dsZUJ1dHRvbi5wcm9wVHlwZXMgPSB7CiAgIHNob3dEZXRhaWxzOiBQcm9w VHlwZXMuYm9vbCwKLX0KK307CiAKIC8qIEJ1dHRvbiBncm91cCBjb250YWluZXIgKi8KIGV4cG9y dCBmdW5jdGlvbiBCdXR0b25Hcm91cCh7Y2xhc3NOYW1lLCBjaGlsZHJlbn0pIHsKQEAgLTExNSwx MiArMTE1LDEyIEBAIGV4cG9ydCBmdW5jdGlvbiBCdXR0b25Hcm91cCh7Y2xhc3NOYW1lLCBjaGls ZHJlbn0pIHsKICAgICA8ZGl2IGNsYXNzTmFtZT17J2J0bi1ncm91cCBtci0xICcgKyAoY2xhc3NO YW1lID8gY2xhc3NOYW1lIDogJycpfSByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0ic2F2ZSBncm91 cCI+CiAgICAgICB7Y2hpbGRyZW59CiAgICAgPC9kaXY+Ci0gICkKKyAgKTsKIH0KIAogQnV0dG9u R3JvdXAucHJvcFR5cGVzID0gewogICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsCi19Cit9 OwogCiAvKiBUb29sYmFyIGNvbnRhaW5lciAqLwogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVG9v bEJhcih7aWQsIGNoaWxkcmVufSkgewpAQCAtMTI4LDkgKzEyOCw5IEBAIGV4cG9ydCBkZWZhdWx0 IGZ1bmN0aW9uIFRvb2xCYXIoe2lkLCBjaGlsZHJlbn0pIHsKICAgICA8ZGl2IGlkPXtpZH0gY2xh c3NOYW1lPSJlZGl0b3ItdG9vbGJhciBkLWZsZXgiIHJvbGU9InRvb2xiYXIiIGFyaWEtbGFiZWw9 IiI+CiAgICAgICB7Y2hpbGRyZW59CiAgICAgPC9kaXY+Ci0gICkKKyAgKTsKIH0KIAogQnV0dG9u R3JvdXAucHJvcFR5cGVzID0gewogICBpZDogUHJvcFR5cGVzLnN0cmluZywKLX0KK307CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL3Njc3MvX2VyZC5zY3NzIGIvd2Vi L3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9zY3NzL19lcmQuc2NzcwppbmRleCA3MzNkZDUzYzYu LjRmZmZjZjRiZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9zY3Nz L19lcmQuc2NzcworKysgYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL3Njc3MvX2VyZC5z Y3NzCkBAIC0yOCw2ICsyOCw3IEBACiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIHdpZHRo OiAxMDAlOwogICAgIGhlaWdodDogMTAwJTsKKyAgICBtaW4taGVpZ2h0OiAwOwogICB9CiAKICAg LmZsb2F0aW5nLW5vdGUgewpAQCAtNTYsNiArNTcsNyBAQAogICAgIH0KIAogICAgIC5ub3RlLWJv ZHkgeworICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICAgJiB0ZXh0YXJlYSB7CiAg ICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICBib3JkZXI6IG5vbmU7CkBAIC02OSwxMSArNzEs MjEgQEAKICAgICB9CiAgIH0KIAorICAuaHRtbDJjYW52YXMtcmVzZXQgeworICAgIGJhY2tncm91 bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKKyAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50 OworCisgICAgJiA+IHN2ZywgJiA+IGRpdiB7CisgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9y dGFudDsKKyAgICB9CisgIH0KKwogICAuZGlhZ3JhbS1jYW52YXN7CiAgICAgd2lkdGg6IDEwMCU7 CiAgICAgaGVpZ2h0OiAxMDAlOwogICAgIGNvbG9yOiAkY29sb3ItZmc7CiAgICAgZm9udC1mYW1p bHk6IHNhbnMtc2VyaWY7CisgICAgYmFja2dyb3VuZC1jb2xvcjogJGVyZC1jYW52YXMtYmc7CiAg ICAgYmFja2dyb3VuZC1pbWFnZTogJGVyZC1iZy1ncmlkOwogICAgIGN1cnNvcjogdW5zZXQ7CiAK QEAgLTg1LDYgKzk3LDIyIEBACiAgICAgICB3aWR0aDogMTc1cHg7CiAgICAgICBmb250LXNpemU6 IDAuOGVtOwogCisgICAgICAudGFibGUtaWNvbi1zY2hlbWEgeworICAgICAgICBiYWNrZ3JvdW5k LWltYWdlOiB1cmwoJ350b3AvYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvc3RhdGljL2ltZy9zY2hlbWEuc3ZnJykgIWltcG9ydGFudDsKKyAgICAgICAgLy8g YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICAgICAgLy8gLy8gYmFja2dyb3VuZC1z aXplOiAyMHB4ICFpbXBvcnRhbnQ7CisgICAgICAgIC8vIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsK KyAgICAgICAgLy8gdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgICAgICAgLy8gaGVpZ2h0OiAx MDAlOworICAgICAgICAvLyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3ht bDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdp UHo0S1BDRXRMU0JIWlc1bGNtRjBiM0k2SUVGa2IySmxJRWxzYkhWemRISmhkRzl5SURJd0xqQXVN Q3dnVTFaSElFVjRjRzl5ZENCUWJIVm5MVWx1SUM0Z1UxWkhJRlpsY25OcGIyNDZJRFl1TURBZ1Fu VnBiR1FnTUNrZ0lDMHRQZ284YzNabklIWmxjbk5wYjI0OUlqRXVNU0lnYVdROUlreGhlV1Z5WHpJ aUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02 ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpSUhnOUlqQndl Q0lnZVQwaU1IQjRJZ29KSUhacFpYZENiM2c5SWpBZ01DQTJOQ0EyTkNJZ2MzUjViR1U5SW1WdVlX SnNaUzFpWVdOclozSnZkVzVrT201bGR5QXdJREFnTmpRZ05qUTdJaUI0Yld3NmMzQmhZMlU5SW5C eVpYTmxjblpsSWo0S1BITjBlV3hsSUhSNWNHVTlJblJsZUhRdlkzTnpJajRLQ1M1emREQjdabWxz YkRwdWIyNWxPM04wY205clpUb2pPVGs1T1RrNU8zTjBjbTlyWlMxM2FXUjBhRG95TzNOMGNtOXJa UzFzYVc1bFkyRndPbkp2ZFc1a08zTjBjbTlyWlMxdGFYUmxjbXhwYldsME9qRXdPMzBLUEM5emRI bHNaVDRLUEhCaGRHZ2dZMnhoYzNNOUluTjBNQ0lnWkQwaVRUSXhMamtzTWpJdU1tTXdMRE11TlMw eUxqa3NOaTQwTFRZdU5DdzJMalJ6TFRZdU5DMHlMamt0Tmk0MExUWXVOSE15TGprdE5pNDBMRFl1 TkMwMkxqUlRNakV1T1N3eE9DNDNMREl4TGprc01qSXVNbm9nVFRRdU1pdzFNV3d5TWk0eExURTVD Z2tnVFRRMkxqVXNOVEV1TVV3eU5pNDBMRE15SUUwek55NDJMRFF5TGpac01URXVOaTB4TUNCTk5q SXVOQ3cwTlM0eFREUTVMaklzTXpJdU55Qk5Oak1zTVVneGRqWXlhRFl5VmpGNklFMHhMRFV4TGpS b05qSWlMejRLUEM5emRtYytDZz09Jyk7CisKKyAgICAgICAgd2lkdGg6IDIwcHg7CisgICAgICAg IGhlaWdodDogMjBweDsKKyAgICAgICAgLy8gYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCd+ dG9wL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRp Yy9pbWcvc2NoZW1hLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOworICAgICAgICAvLyBo ZWlnaHQ6IDEwMCU7CisgICAgICAgIC8vIHdpZHRoOiAyMHB4OworICAgICAgfQorCiAgICAgICAm LnNlbGVjdGVkIHsKICAgICAgICAgYm9yZGVyLWNvbG9yOiAkaW5wdXQtZm9jdXMtYm9yZGVyLWNv bG9yOwogICAgICAgICBib3gtc2hhZG93OiAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3c7CkBA IC0xMDUsMTYgKzEzMywyNCBAQAogICAgICAgICB9CiAgICAgICB9CiAKLSAgICAgIC50YWJsZS1z Y2hlbWEgeworICAgICAgLnRhYmxlLXNjaGVtYS1kYXRhIHsKICAgICAgICAgYm9yZGVyLWJvdHRv bTogJGJvcmRlci13aWR0aCBzb2xpZCAkZXJkLW5vZGUtYm9yZGVyLWNvbG9yOwogICAgICAgICBw YWRkaW5nOiAkZXJkLXJvdy1wYWRkaW5nOwotICAgICAgICBmb250LXdlaWdodDogYm9sZDsKKwor ICAgICAgICAmIC50YWJsZS1zY2hlbWEgeworICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwor ICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKKyAgICAgICAgfQogICAgICAgfQogCi0g ICAgICAudGFibGUtbmFtZSB7CisgICAgICAudGFibGUtbmFtZS1kYXRhIHsKICAgICAgICAgYm9y ZGVyLWJvdHRvbTogJGJvcmRlci13aWR0aCoyIHNvbGlkICRlcmQtbm9kZS1ib3JkZXItY29sb3I7 CiAgICAgICAgIHBhZGRpbmc6ICRlcmQtcm93LXBhZGRpbmc7Ci0gICAgICAgIGZvbnQtd2VpZ2h0 OiBib2xkOworCisgICAgICAgICYgLnRhYmxlLW5hbWUgeworICAgICAgICAgIGZvbnQtd2VpZ2h0 OiBib2xkOworICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKKyAgICAgICAgfQogICAg ICAgfQogCiAgICAgICAudGFibGUtY29scyB7CkBAIC0xMjMsMTAgKzE1OSw3IEBACiAgICAgICAg ICAgLmNvbC1yb3ctZGF0YSB7CiAgICAgICAgICAgICBwYWRkaW5nOiAkZXJkLXJvdy1wYWRkaW5n OwogICAgICAgICAgICAgd2lkdGg6IDEwMCU7Ci0KLSAgICAgICAgICAgIC5jb2wtbmFtZSB7Ci0g ICAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKLSAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICAgICAgICAgICB9CiAgICAgICAgICAgLmNv bC1yb3ctcG9ydCB7CiAgICAgICAgICAgICBwYWRkaW5nOiAwOwpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvdGFibGVfbm9kZV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9lcmQvdGFibGVfbm9kZV9zcGVjLmpzCmluZGV4IDFjOGJmNzRlZS4uNDgx OGQyYTdhIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2VyZC90YWJsZV9u b2RlX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvdGFibGVfbm9k ZV9zcGVjLmpzCkBAIC03Myw3ICs3MywxMCBAQCBkZXNjcmliZSgnRVJEIFRhYmxlTm9kZU1vZGVs JywgKCk9PnsKICAgfSk7CiAKICAgZGVzY3JpYmUoJ3NldERhdGEnLCAoKT0+ewotICAgIGxldCBl eGlzdFBvcnQgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigncG9ydCcsIFsncmVtb3ZlQWxsTGlua3Mn XSk7CisgICAgbGV0IGV4aXN0UG9ydCA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdwb3J0Jywgewor ICAgICAgJ3JlbW92ZUFsbExpbmtzJzogamFzbWluZS5jcmVhdGVTcHkoJ3JlbW92ZUFsbExpbmtz JyksCisgICAgICAnZ2V0U3VidHlwZSc6ICdub3RzZXQnLAorICAgIH0pOwogCiAgICAgYmVmb3Jl RWFjaCgoKT0+ewogICAgICAgbW9kZWxPYmouX2RhdGEuY29sdW1ucyA9IFsKQEAgLTkzLDYgKzk2 LDcgQEAgZGVzY3JpYmUoJ0VSRCBUYWJsZU5vZGVNb2RlbCcsICgpPT57CiAgICAgfSk7CiAKICAg ICBpdCgnYWRkIGNvbHVtbnMnLCAoKT0+eworICAgICAgc3B5T24oZXhpc3RQb3J0LCAnZ2V0U3Vi dHlwZScpLmFuZC5yZXR1cm5WYWx1ZSgnbWFueScpOwogICAgICAgZXhpc3RQb3J0LnJlbW92ZUFs bExpbmtzLmNhbGxzLnJlc2V0KCk7CiAgICAgICBtb2RlbE9iai5zZXREYXRhKHsKICAgICAgICAg bmFtZTogJ25vbmFtZScsCkBAIC0xMTgsMjkgKzEyMiwzMSBAQCBkZXNjcmliZSgnRVJEIFRhYmxl Tm9kZU1vZGVsJywgKCk9PnsKICAgICB9KTsKIAogICAgIGl0KCd1cGRhdGUgY29sdW1ucycsICgp PT57CisgICAgICBzcHlPbihleGlzdFBvcnQsICdnZXRTdWJ0eXBlJykuYW5kLnJldHVyblZhbHVl KCdtYW55Jyk7CiAgICAgICBleGlzdFBvcnQucmVtb3ZlQWxsTGlua3MuY2FsbHMucmVzZXQoKTsK ICAgICAgIG1vZGVsT2JqLnNldERhdGEoewogICAgICAgICBuYW1lOiAnbm9uYW1lJywKICAgICAg ICAgc2NoZW1hOiAnZXJkJywKICAgICAgICAgY29sdW1uczogWwotICAgICAgICAgIHtuYW1lOiAn Y29sMScsIG5vdF9udWxsOmZhbHNlLCBhdHRudW06IDB9LAotICAgICAgICAgIHtuYW1lOiAnY29s MnVwZGF0ZWQnLCBub3RfbnVsbDpmYWxzZSwgYXR0bnVtOiAxfSwKLSAgICAgICAgICB7bmFtZTog J2NvbDMnLCBub3RfbnVsbDp0cnVlLCBhdHRudW06IDJ9LAorICAgICAgICAgIHtuYW1lOiAnY29s MScsIG5vdF9udWxsOmZhbHNlLCBhdHRudW06IDAsIGlzX3ByaW1hcnlfa2V5OiBmYWxzZX0sCisg ICAgICAgICAge25hbWU6ICdjb2wydXBkYXRlZCcsIG5vdF9udWxsOmZhbHNlLCBhdHRudW06IDEs IGlzX3ByaW1hcnlfa2V5OiBmYWxzZX0sCisgICAgICAgICAge25hbWU6ICdjb2wzJywgbm90X251 bGw6dHJ1ZSwgYXR0bnVtOiAyLCBpc19wcmltYXJ5X2tleTogZmFsc2V9LAogICAgICAgICBdLAog ICAgICAgfSk7CiAgICAgICBleHBlY3QobW9kZWxPYmouZ2V0RGF0YSgpKS50b0VxdWFsKHsKICAg ICAgICAgbmFtZTogJ25vbmFtZScsCiAgICAgICAgIHNjaGVtYTogJ2VyZCcsCiAgICAgICAgIGNv bHVtbnM6IFsKLSAgICAgICAgICB7bmFtZTogJ2NvbDEnLCBub3RfbnVsbDpmYWxzZSwgYXR0bnVt OiAwfSwKLSAgICAgICAgICB7bmFtZTogJ2NvbDJ1cGRhdGVkJywgbm90X251bGw6ZmFsc2UsIGF0 dG51bTogMX0sCi0gICAgICAgICAge25hbWU6ICdjb2wzJywgbm90X251bGw6dHJ1ZSwgYXR0bnVt OiAyfSwKKyAgICAgICAgICB7bmFtZTogJ2NvbDEnLCBub3RfbnVsbDpmYWxzZSwgYXR0bnVtOiAw LCBpc19wcmltYXJ5X2tleTogZmFsc2V9LAorICAgICAgICAgIHtuYW1lOiAnY29sMnVwZGF0ZWQn LCBub3RfbnVsbDpmYWxzZSwgYXR0bnVtOiAxLCBpc19wcmltYXJ5X2tleTogZmFsc2V9LAorICAg ICAgICAgIHtuYW1lOiAnY29sMycsIG5vdF9udWxsOnRydWUsIGF0dG51bTogMiwgaXNfcHJpbWFy eV9rZXk6IGZhbHNlfSwKICAgICAgICAgXSwKICAgICAgIH0pOwogICAgICAgZXhwZWN0KGV4aXN0 UG9ydC5yZW1vdmVBbGxMaW5rcykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKICAgICB9KTsKIAog ICAgIGl0KCdyZW1vdmUgY29sdW1ucycsICgpPT57CisgICAgICBzcHlPbihleGlzdFBvcnQsICdn ZXRTdWJ0eXBlJykuYW5kLnJldHVyblZhbHVlKCdvbmUnKTsKICAgICAgIGV4aXN0UG9ydC5yZW1v dmVBbGxMaW5rcy5jYWxscy5yZXNldCgpOwogICAgICAgbW9kZWxPYmouc2V0RGF0YSh7CiAgICAg ICAgIG5hbWU6ICdub25hbWUnLApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlw dC9lcmQvdWlfY29tcG9uZW50cy9ib2R5X3dpZGdldF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9lcmQvdWlfY29tcG9uZW50cy9ib2R5X3dpZGdldF9zcGVjLmpzCmluZGV4IDE2 OTI4OTgwZi4uMzExNGJhNjI3IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9lcmQvdWlfY29tcG9uZW50cy9ib2R5X3dpZGdldF9zcGVjLmpzCkBAIC00 MSw2ICs0MSwxMCBAQCBsZXQgcGdBZG1pbiA9IHsKICAgfSwKIH07CiAKK2xldCBwZ1dpbmRvdyA9 IHsKKyAgcGdBZG1pbjogcGdBZG1pbiwKK307CisKIGxldCBhbGVydGlmeSA9IGphc21pbmUuY3Jl YXRlU3B5T2JqKCdhbGVydGlmeScsIHsKICAgJ3N1Y2Nlc3MnOiBudWxsLAogICAnZXJyb3InOiBu dWxsLApAQCAtMTI0LDcgKzEyOCw3IEBAIGRlc2NyaWJlKCdFUkQgQm9keVdpZGdldCcsICgpPT57 CiAKICAgYmVmb3JlRWFjaCgoKT0+ewogICAgIGphc21pbmVFbnp5bWUoKTsKLSAgICBib2R5ID0g bW91bnQoPEJvZHlXaWRnZXQgcGFyYW1zPXtwYXJhbXN9IHBnQWRtaW49e3BnQWRtaW59IGdldERp YWxvZz17Z2V0RGlhbG9nfSB0cmFuc2Zvcm1Ub1N1cHBvcnRlZD17KCk9Pnt9fSBhbGVydGlmeT17 YWxlcnRpZnl9Lz4pOworICAgIGJvZHkgPSBtb3VudCg8Qm9keVdpZGdldCBwYXJhbXM9e3BhcmFt c30gcGdBZG1pbj17cGdBZG1pbn0gcGdXaW5kb3c9e3BnV2luZG93fSBnZXREaWFsb2c9e2dldERp YWxvZ30gdHJhbnNmb3JtVG9TdXBwb3J0ZWQ9eygpPT57fX0gYWxlcnRpZnk9e2FsZXJ0aWZ5fS8+ KTsKICAgICBib2R5SW5zdGFuY2UgPSBib2R5Lmluc3RhbmNlKCk7CiAgIH0pOwogCkBAIC0yNDgs NyArMjUyLDcgQEAgZGVzY3JpYmUoJ0VSRCBCb2R5V2lkZ2V0JywgKCk9PnsKICAgICBib2R5SW5z dGFuY2UuYWRkRWRpdE5vZGUoKTsKICAgICBleHBlY3QodGFibGVEaWFsb2cuc2hvdykudG9IYXZl QmVlbkNhbGxlZCgpOwogCi0gICAgbGV0IHNhdmVDYWxsYmFjayA9IHRhYmxlRGlhbG9nLnNob3cu Y2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbNV07CisgICAgbGV0IHNhdmVDYWxsYmFjayA9IHRhYmxl RGlhbG9nLnNob3cuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbNl07CiAgICAgbGV0IG5ld0RhdGEg PSB7a2V5OiAndmFsdWUnfTsKICAgICBzYXZlQ2FsbGJhY2sobmV3RGF0YSk7CiAgICAgZXhwZWN0 KGJvZHlJbnN0YW5jZS5kaWFncmFtLmFkZE5vZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG5ld0Rh dGEpOwpAQCAtMjYzLDcgKzI2Nyw3IEBAIGRlc2NyaWJlKCdFUkQgQm9keVdpZGdldCcsICgpPT57 CiAgICAgYm9keUluc3RhbmNlLmFkZEVkaXROb2RlKG5vZGUpOwogICAgIGV4cGVjdCh0YWJsZURp YWxvZy5zaG93KS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAKLSAgICBzYXZlQ2FsbGJhY2sgPSB0YWJs ZURpYWxvZy5zaG93LmNhbGxzLm1vc3RSZWNlbnQoKS5hcmdzWzVdOworICAgIHNhdmVDYWxsYmFj ayA9IHRhYmxlRGlhbG9nLnNob3cuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbNl07CiAgICAgbmV3 RGF0YSA9IHtrZXk6ICd2YWx1ZSd9OwogICAgIHNhdmVDYWxsYmFjayhuZXdEYXRhKTsKICAgICBl eHBlY3Qobm9kZS5zZXREYXRhKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChuZXdEYXRhKTsKZGlmZiAt LWdpdCBhL3dlYi95YXJuLmxvY2sgYi93ZWIveWFybi5sb2NrCmluZGV4IDU1MTIxM2EyNy4uNTEw NmU4NGQxIDEwMDY0NAotLS0gYS93ZWIveWFybi5sb2NrCisrKyBiL3dlYi95YXJuLmxvY2sKQEAg LTEyODEsNiArMTI4MSwxNCBAQCBhY29ybkBeNy4wLjAsIGFjb3JuQF43LjEuMCwgYWNvcm5AXjcu MS4xOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi8tL2Fj b3JuLTcuNC4xLnRneiNmZWFlZDI1NTk3M2QyZTc3NTU1YjgzZGJjMDg4NTFhNmM2MzUyMGZhIgog ICBpbnRlZ3JpdHkgc2hhNTEyLW5ReXAwbzEvbU5kYlRPMVBPNmtIa3dTcm1nWjBNVC9qQ0NwTml3 YlVqR29STjRkbEJocUp0b1F1Q25FT0t6Z1RWd2cwWldpQ29ReTZTeE1lYlFWaDhBPT0KIAorYWRq dXN0LXNvdXJjZW1hcC1sb2FkZXJAMy4wLjA6CisgIHZlcnNpb24gIjMuMC4wIgorICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hZGp1c3Qtc291cmNlbWFwLWxvYWRlci8t L2FkanVzdC1zb3VyY2VtYXAtbG9hZGVyLTMuMC4wLnRneiM1YWUxMmZiNWI3YjFjNTg1ZTgwYmJi NWE2M2VjMTYzYTFhNDVlNjFlIgorICBpbnRlZ3JpdHkgc2hhNTEyLVlCckd5VDIvdVZRL2M2UnIr dDZaSlhuaVkwM1l0SEdNSlFZYWwzNjhidXJSR1lLcWh4OXFHVFdxY0JVNXMxQ3dZWTlFL3JpNjNS WXlHMUlhY01adHF3PT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGxvYWRlci11dGlscyAiXjIuMC4w IgorICAgIHJlZ2V4LXBhcnNlciAiXjIuMi4xMSIKKwogYWZ0ZXJAMC44LjI6CiAgIHZlcnNpb24g IjAuOC4yIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hZnRlci8t L2FmdGVyLTAuOC4yLnRneiNmZWRiMzk0ZjlmMGUwMmFhOTc2OGU3MDJiZGEyM2I1MDVmYWU3ZTFm IgpAQCAtMTQzMiw2ICsxNDQwLDExIEBAIGFyZ3BhcnNlQF4xLjAuNiwgYXJncGFyc2VAXjEuMC43 OgogICBkZXBlbmRlbmNpZXM6CiAgICAgc3ByaW50Zi1qcyAifjEuMC4yIgogCithcml0eS1uQF4x LjAuNDoKKyAgdmVyc2lvbiAiMS4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2FyaXR5LW4vLS9hcml0eS1uLTEuMC40LnRneiNkOWU3NmIxMTczM2UwODU2OWMw ODQ3YWU3YjM5YjI4NjBiMzBiNzQ1IgorICBpbnRlZ3JpdHkgc2hhMS0yZWRyRVhNK0NGYWNDRWV1 ZXpteWhnc3d0MFU9CisKIGFyci1kaWZmQF40LjAuMDoKICAgdmVyc2lvbiAiNC4wLjAiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1kaWZmLy0vYXJyLWRpZmYt NC4wLjAudGd6I2Q2NDYxMDc0ZmViZmVjNzFlN2UxNTIzNTc2MWEzMjlhNWRjN2M1MjAiCkBAIC0x ODEzLDYgKzE4MjYsMTEgQEAgYmFzZTY0LWFycmF5YnVmZmVyQDAuMS41OgogICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYXNlNjQtYXJyYXlidWZmZXIvLS9iYXNlNjQt YXJyYXlidWZmZXItMC4xLjUudGd6IzczOTI2NzcxOTIzYjVhMTk3NDdhZDY2NmFhNWNkNGJmOWM2 ZTljZTgiCiAgIGludGVncml0eSBzaGExLWM1Sm5jWkk3V2hsMGV0Wm1xbHpVdjV4dW5PZz0KIAor YmFzZTY0LWFycmF5YnVmZmVyQF4wLjIuMDoKKyAgdmVyc2lvbiAiMC4yLjAiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jhc2U2NC1hcnJheWJ1ZmZlci8tL2Jhc2U2 NC1hcnJheWJ1ZmZlci0wLjIuMC50Z3ojNGI5NDRmYWMwMTkxYWE1OTA3YWZlMmQ4Yzk5OWNjYzU3 Y2U4MGY0NSIKKyAgaW50ZWdyaXR5IHNoYTUxMi03ZW15Q3N1MS94aUJYZ1FacnNjdy84S1BSVDQ0 STRZcTlQZTZFR3MzYVBSVHNXdWdnTUwxLzFEVHVaVXVJYUpQSW0xRlREVVZYbDR4L3lXOHMwa1FE UT09CisKIGJhc2U2NC1qc0BeMS4wLjIsIGJhc2U2NC1qc0BeMS4zLjE6CiAgIHZlcnNpb24gIjEu NS4xIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYXNlNjQtanMv LS9iYXNlNjQtanMtMS41LjEudGd6IzFiMWI0NDAxNjBhNWJmN2FkNDBiNjUwZjA5NTk2MzQ4MTkw MzkzMGEiCkBAIC0yNDM3LDE2ICsyNDU1LDE2IEBAIGNhbWVsY2FzZS1rZXlzQF4yLjAuMDoKICAg ICBjYW1lbGNhc2UgIl4yLjAuMCIKICAgICBtYXAtb2JqICJeMS4wLjAiCiAKK2NhbWVsY2FzZUA1 LjMuMSwgY2FtZWxjYXNlQF41LjAuMDoKKyAgdmVyc2lvbiAiNS4zLjEiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbWVsY2FzZS8tL2NhbWVsY2FzZS01LjMuMS50 Z3ojZTNjOWIzMTU2OWUxMDY4MTFkZjI0MmY3MTU3MjVhMWY0YzQ5NDMyMCIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1MMjhTVEIxNzBud1dTNjNVanRsRU9FM2RsZFFBcGFKWFprT0kxdU1GZnpmM3JSdVBl Z0hhSGVzeWVlK1l4UStXNlN2UkRRVjZVcmRPZFJpUjE1M3dKZz09CisKIGNhbWVsY2FzZUBeMi4w LjA6CiAgIHZlcnNpb24gIjIuMS4xIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMi4xLjEudGd6IzdjMWQxNmQ2NzlhMWJiZTU5 Y2EwMmNhY2VjZmIwMTFlMjAxZjVhMWYiCiAgIGludGVncml0eSBzaGExLWZCMFcxbm1odStXY29D eXM3UHNCSGlBZldoOD0KIAotY2FtZWxjYXNlQF41LjAuMDoKLSAgdmVyc2lvbiAiNS4zLjEiCi0g IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbWVsY2FzZS8tL2NhbWVs Y2FzZS01LjMuMS50Z3ojZTNjOWIzMTU2OWUxMDY4MTFkZjI0MmY3MTU3MjVhMWY0YzQ5NDMyMCIK LSAgaW50ZWdyaXR5IHNoYTUxMi1MMjhTVEIxNzBud1dTNjNVanRsRU9FM2RsZFFBcGFKWFprT0kx dU1GZnpmM3JSdVBlZ0hhSGVzeWVlK1l4UStXNlN2UkRRVjZVcmRPZFJpUjE1M3dKZz09Ci0KIGNh bml1c2UtYXBpQF4zLjAuMDoKICAgdmVyc2lvbiAiMy4wLjAiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nhbml1c2UtYXBpLy0vY2FuaXVzZS1hcGktMy4wLjAudGd6 IzVlNGQ5MGUyMjc0OTYxZDQ2MjkxOTk3ZGY1OTllM2VkMDA4ZWU0YzAiCkBAIC0yNzk3LDYgKzI4 MTUsMTMgQEAgY29tcG9uZW50LWluaGVyaXRAMC4wLjM6CiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2NvbXBvbmVudC1pbmhlcml0Ly0vY29tcG9uZW50LWluaGVyaXQt MC4wLjMudGd6IzY0NWZjNGFkZjU4YjcyYjY0OWQ1Y2FlNjUxMzU2MTlkYjI2ZmYxNDMiCiAgIGlu dGVncml0eSBzaGExLVpGL0VyZldMY3JaSjFjcm1VVFZobmJKdjhVTT0KIAorY29tcG9zZS1mdW5j dGlvbkAzLjAuMzoKKyAgdmVyc2lvbiAiMy4wLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2NvbXBvc2UtZnVuY3Rpb24vLS9jb21wb3NlLWZ1bmN0aW9uLTMuMC4z LnRneiM5ZWQ2NzVmMTNjYzU0NTAxZDMwOTUwYTQ4NmZmNmE3YmEzYWIxODVmIgorICBpbnRlZ3Jp dHkgc2hhMS1udFoxOFR6RlJRSFRDVkNraHY5cWU2T3JHRjg9CisgIGRlcGVuZGVuY2llczoKKyAg ICBhcml0eS1uICJeMS4wLjQiCisKIGNvbmNhdC1tYXBAMC4wLjE6CiAgIHZlcnNpb24gIjAuMC4x IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25jYXQtbWFwLy0v Y29uY2F0LW1hcC0wLjAuMS50Z3ojZDhhOTZiZDc3ZmQ2OGRmNzc5M2E3MzAzNmEzYmEwZDU0MDVk NDc3YiIKQEAgLTI4NTcsMTMgKzI4ODIsMTggQEAgY29udGVudC10eXBlQH4xLjAuNDoKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udGVudC10eXBlLy0vY29udGVu dC10eXBlLTEuMC40LnRneiNlMTM4Y2M3NWUwNDBjNzI3YjE5NjZmZTVlNWY4YzlhZWUyNTZmZTNi IgogICBpbnRlZ3JpdHkgc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5 TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0KIAot Y29udmVydC1zb3VyY2UtbWFwQF4xLjEuMywgY29udmVydC1zb3VyY2UtbWFwQF4xLjUuMCwgY29u dmVydC1zb3VyY2UtbWFwQF4xLjcuMDoKK2NvbnZlcnQtc291cmNlLW1hcEAxLjcuMCwgY29udmVy dC1zb3VyY2UtbWFwQF4xLjEuMywgY29udmVydC1zb3VyY2UtbWFwQF4xLjUuMCwgY29udmVydC1z b3VyY2UtbWFwQF4xLjcuMDoKICAgdmVyc2lvbiAiMS43LjAiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnZlcnQtc291cmNlLW1hcC8tL2NvbnZlcnQtc291cmNl LW1hcC0xLjcuMC50Z3ojMTdhMmNiODgyZDdmNzdkMzQ5MDU4NWUyY2U2YzUyNDQyNGEzYTQ0MiIK ICAgaW50ZWdyaXR5IHNoYTUxMi00RkprWHpLWEVEQjFzbkNGWmxMUDRncEMzSklMaWNDcEdiekc5 ZjlHN3RHcUdDekVUUTJoV1ByY2luQTlvVTR3dGYyYmlVYUVINTA2NVVuTWVSMzNvQT09CiAgIGRl cGVuZGVuY2llczoKICAgICBzYWZlLWJ1ZmZlciAifjUuMS4xIgogCitjb252ZXJ0LXNvdXJjZS1t YXBAXjAuMy4zOgorICB2ZXJzaW9uICIwLjMuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vY29udmVydC1zb3VyY2UtbWFwLy0vY29udmVydC1zb3VyY2UtbWFwLTAu My41LnRneiNmMWQ4MDI5NTBhZjdkZDI2MzFhMWZlYmUwNTk2NTUwYzg2YWIzMTkwIgorICBpbnRl Z3JpdHkgc2hhMS04ZGdDbFFyMzNTWXhvZjYrQlpaVkRJYXJNWkE9CisKIGNvbnZlcnQtc291cmNl LW1hcEB+MS4xLjA6CiAgIHZlcnNpb24gIjEuMS4zIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9jb252ZXJ0LXNvdXJjZS1tYXAvLS9jb252ZXJ0LXNvdXJjZS1tYXAt MS4xLjMudGd6IzQ4MjljODc3ZTlmZTQ5YjMxNjFmM2JmMzY3Mzg4OGUyMDQ2OTk4NjAiCkBAIC0z MDUxLDYgKzMwODEsMTMgQEAgY3NzLWRlY2xhcmF0aW9uLXNvcnRlckBeNC4wLjE6CiAgICAgcG9z dGNzcyAiXjcuMC4xIgogICAgIHRpbXNvcnQgIl4wLjMuMCIKIAorY3NzLWxpbmUtYnJlYWtAMS4x LjE6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9jc3MtbGluZS1icmVhay8tL2Nzcy1saW5lLWJyZWFrLTEuMS4xLnRneiNkNWU5YmRk Mjk3ODQwMDk5ZWIwNTAzYzczMTBmZDM0OTI3YTAyNmVmIgorICBpbnRlZ3JpdHkgc2hhNTEyLTFm ZU5WYU00Rnl6ZGo0bUtQSVFOTDJuNzBNbXVZekFYWjFheXRsUk9GWDFKc09vMDcwT3N1Z3dHamo3 bmw2am5ESldIRE04elJac3drbWVZVldaSlFBPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGJhc2U2 NC1hcnJheWJ1ZmZlciAiXjAuMi4wIgorCiBjc3MtbG9hZGVyQDIuMS4wOgogICB2ZXJzaW9uICIy LjEuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3NzLWxvYWRl ci8tL2Nzcy1sb2FkZXItMi4xLjAudGd6IzQyOTUyYWMyMmJjYTVkMDc2OTc4NjM4ZTk4MTNhYmNl NDliOGYwY2MiCkBAIC0zMTE5LDYgKzMxNTYsMTYgQEAgY3NzLXdoYXRAXjQuMC4wOgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtd2hhdC8tL2Nzcy13aGF0LTQu MC4wLnRneiMzNWU3Mzc2MWNhYjJlZWIzZDM2NjExMjZiMjNkN2FhMGU4NDMyMjMzIgogICBpbnRl Z3JpdHkgc2hhNTEyLXRlaWp6Rzdrd1lmTlZzVWgySC9ZTjYyeFczS0s5WWhYRWdTbGJ4TWxjeWpQ TnZkS0pxRng1bHJ3bEpnb0ZQMVpIbEI4OWlHRGxvL0p5c2hLZVJodjVBPT0KIAorY3NzQF4yLjAu MDoKKyAgdmVyc2lvbiAiMi4yLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2Nzcy8tL2Nzcy0yLjIuNC50Z3ojYzY0Njc1NWM3Mzk3MWYyYmJhNmE2MDFlMmNmMmZk NzFiMTI5ODkyOSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1vVW5qbVdweTBuaUkzeC9tUEw4ZFZFSTFs N01uRzMrSEh5UlBIZitZRlNiSytzdk9oWHBtU09jRFVSVWgyYU9DZ2wyZ3J6ck9QdDFuSEx1Q1ZG VUxMdz09CisgIGRlcGVuZGVuY2llczoKKyAgICBpbmhlcml0cyAiXjIuMC4zIgorICAgIHNvdXJj ZS1tYXAgIl4wLjYuMSIKKyAgICBzb3VyY2UtbWFwLXJlc29sdmUgIl4wLjUuMiIKKyAgICB1cml4 ICJeMC4xLjAiCisKIGNzc2VzY0BeMy4wLjA6CiAgIHZlcnNpb24gIjMuMC4wIgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Nlc2MvLS9jc3Nlc2MtMy4wLjAudGd6 IzM3NzQxOTE5OTAzYjg2ODU2NWUxYzA5ZWE3NDc0NDVjZDE4OTgzZWUiCkBAIC0zMjM1LDYgKzMy ODIsMTQgQEAgY3ljbGlzdEBeMS4wLjE6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2N5Y2xpc3QvLS9jeWNsaXN0LTEuMC4xLnRneiM1OTZlOTY5OGZkMGM4MGUxMjAz OGMyYjgyZDZlYjFiMzViNjIyNGQ5IgogICBpbnRlZ3JpdHkgc2hhMS1XVzZXbVAwTWdPRWdPTUs0 TFc2eHMxdGlKTms9CiAKK2RAMSwgZEBeMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kLy0vZC0xLjAuMS50Z3ojODY5ODA5 NTM3MmQ1OGRiZWUzNDZmZmQwYzcwOTNmOTlmOGY5ZWI1YSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1t NjJTaEVPYlEzOUNmcmFsaWxFUVJqSDZvQU10TkNWMXhKeUV4NUxwUllVVk4rRXZpcGhEZ1VjL0Yz aG5ZYkFEbWtpTnM2N1krM3lsbWxHN0xudStGQT09CisgIGRlcGVuZGVuY2llczoKKyAgICBlczUt ZXh0ICJeMC4xMC41MCIKKyAgICB0eXBlICJeMS4wLjEiCisKIGRhZ3JlQF4wLjguNDoKICAgdmVy c2lvbiAiMC44LjUiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rh Z3JlLy0vZGFncmUtMC44LjUudGd6I2JhMzBiMDA1NWRhYzEyYjZjMWZjYzI0NzgxNzQ0Mjc3N2Qw NmFmZWUiCkBAIC0zNjY0LDYgKzM3MTksMTEgQEAgZW1vamktcmVnZXhAXjcuMC4xOgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbW9qaS1yZWdleC8tL2Vtb2ppLXJl Z2V4LTcuMC4zLnRneiM5MzNhMDQwNTI4NjBjODVlODNjMTIyNDc5YzQ3NDhhOGU0YzcyMTU2Igog ICBpbnRlZ3JpdHkgc2hhNTEyLUN3QkxSRUlRN0x2WUZCMFd5UnZ3aHE1TjVxUGhjNlBNakQ2Ylln Z0ZsSTVZeURnbCswdnhxNVZIYk1PRnFMZzdoZld6bXU4VDVaMVFvZmhtVEloSXRBPT0KIAorZW1v amlzLWxpc3RAXjIuMC4wOgorICB2ZXJzaW9uICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vZW1vamlzLWxpc3QvLS9lbW9qaXMtbGlzdC0yLjEuMC50Z3oj NGRhYTRkOWRiMDBmOTgxOTg4MGM3OWZhNDU3YWU1YjA5YTFmZDM4OSIKKyAgaW50ZWdyaXR5IHNo YTEtVGFwTm5iQVBtQm1JREhuNlJYcmxzSm9mMDRrPQorCiBlbW9qaXMtbGlzdEBeMy4wLjA6CiAg IHZlcnNpb24gIjMuMC4wIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9lbW9qaXMtbGlzdC8tL2Vtb2ppcy1saXN0LTMuMC4wLnRneiM1NTcwNjYyMDQ2YWQyOWUyZTkx NmU3MWFhZTI2MGFiZGZmNGY2YTc4IgpAQCAtMzg3MCw2ICszOTMwLDMyIEBAIGVzLXRvLXByaW1p dGl2ZUBeMS4yLjE6CiAgICAgaXMtZGF0ZS1vYmplY3QgIl4xLjAuMSIKICAgICBpcy1zeW1ib2wg Il4xLjAuMiIKIAorZXM1LWV4dEBeMC4xMC4zNSwgZXM1LWV4dEBeMC4xMC41MDoKKyAgdmVyc2lv biAiMC4xMC41MyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXM1 LWV4dC8tL2VzNS1leHQtMC4xMC41My50Z3ojOTNjNWEzYWNmZGJlZjI3NTIyMGFkNzI2NDRhZDAy ZWUxODM2OGRlMSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1YczJTdHc2TmlOSFd5cHpSVFkxTXRhRy91 Smx3Q2s4a0g4MTkyMG1hOG12TjhYcTFnc2ZoWnZwa0ltTFFBcnc4QUhudjhNVDJJNDVKM2MwUjhz bEUrUT09CisgIGRlcGVuZGVuY2llczoKKyAgICBlczYtaXRlcmF0b3IgIn4yLjAuMyIKKyAgICBl czYtc3ltYm9sICJ+My4xLjMiCisgICAgbmV4dC10aWNrICJ+MS4wLjAiCisKK2VzNi1pdGVyYXRv ckAyLjAuMywgZXM2LWl0ZXJhdG9yQH4yLjAuMzoKKyAgdmVyc2lvbiAiMi4wLjMiCisgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzNi1pdGVyYXRvci8tL2VzNi1pdGVy YXRvci0yLjAuMy50Z3ojYTdkZTg4OTE0MWEwNWE5NGIwODU0NDAzYjJkMGEwZmJmYTk4ZjNiNyIK KyAgaW50ZWdyaXR5IHNoYTEtcDk2SWtVR2dXcFN3aFVRRHN0Q2crL3FZODdjPQorICBkZXBlbmRl bmNpZXM6CisgICAgZCAiMSIKKyAgICBlczUtZXh0ICJeMC4xMC4zNSIKKyAgICBlczYtc3ltYm9s ICJeMy4xLjEiCisKK2VzNi1zeW1ib2xAXjMuMS4xLCBlczYtc3ltYm9sQH4zLjEuMzoKKyAgdmVy c2lvbiAiMy4xLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vz Ni1zeW1ib2wvLS9lczYtc3ltYm9sLTMuMS4zLnRneiNiYWQ1ZDNjMWJjZGFjMjgyNjlmNGNiMzMx ZTQzMWM3OGFjNzA1ZDE4IgorICBpbnRlZ3JpdHkgc2hhNTEyLU5KNlluM0Z1RGluQmFCUldsL3E1 WC9zNGtvUkhCcmdLQXUreUdJNkpDQmVpdTNxcmNiSmh3VDJHZVIvRVhWZnlsUms4ZHBRVkpvTEVG aEsrTXUzMU5BPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGQgIl4xLjAuMSIKKyAgICBleHQgIl4x LjEuMiIKKwogZXNjYWxhZGVAXjMuMS4xOgogICB2ZXJzaW9uICIzLjEuMSIKICAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNjYWxhZGUvLS9lc2NhbGFkZS0zLjEuMS50 Z3ojZDhjZmRjNzAwMDk2NWM1YTAxNzRiNGE4MmVhYTVjMDU1Mjc0MmU0MCIKQEAgLTQxNzYsNiAr NDI2MiwxMyBAQCBleHQtbmFtZUBeNS4wLjA6CiAgICAgZXh0LWxpc3QgIl4yLjAuMCIKICAgICBz b3J0LWtleXMtbGVuZ3RoICJeMS4wLjAiCiAKK2V4dEBeMS4xLjI6CisgIHZlcnNpb24gIjEuNC4w IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHQvLS9leHQtMS40 LjAudGd6Izg5YWU3YTA3MTU4Zjc5ZDM1NTE3ODgyOTA0MzI0MDc3ZTQzNzkyNDQiCisgIGludGVn cml0eSBzaGE1MTItS2V5NU5Jc1V4ZHFLZzN2SXNkdzlkU3VYcFBDUTI5N3k2d0JqTDMwZWR4d1Bn dDJFNDRXY1dCWmV5L1p2VWM2c0VSTFR4S2R5Q3U0Z1pGbVViazFRN0E9PQorICBkZXBlbmRlbmNp ZXM6CisgICAgdHlwZSAiXjIuMC4wIgorCiBleHRlbmQtc2hhbGxvd0BeMi4wLjE6CiAgIHZlcnNp b24gIjIuMC4xIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRl bmQtc2hhbGxvdy8tL2V4dGVuZC1zaGFsbG93LTIuMC4xLnRneiM1MWFmN2Q2MTRhZDlhOWY2MTBl YTFiYWZiYjk4OWQ2YjFjNTY4OTBmIgpAQCAtNDk4Miw2ICs1MDc1LDEzIEBAIGh0bWwtZXNjYXBl ckBeMi4wLjA6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWwt ZXNjYXBlci8tL2h0bWwtZXNjYXBlci0yLjAuMi50Z3ojZGZkNjAwMjdkYTM2YTM2ZGZjYmUyMzYy NjJjMDBhNTgyMjY4MTQ1MyIKICAgaW50ZWdyaXR5IHNoYTUxMi1IMmlNdGQwSTRNdDVlWWlhcFJk SURqcCtYemVsWFEwdEZFNEpTN1lGd0ZldlhYTW1PcDlteU5yVXZDZzBENndzOGlxa1JQQmZLSGdi d2lnMVNtbExmZz09CiAKK2h0bWwyY2FudmFzQF4xLjAuMC1yYy43OgorICB2ZXJzaW9uICIxLjAu MC1yYy43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odG1sMmNh bnZhcy8tL2h0bWwyY2FudmFzLTEuMC4wLXJjLjcudGd6IzcwYzE1OWNlMGU2Mzk1NGE5MTE2OTUz MTg5NGQwOGFkNTYyN2FjOTgiCisgIGludGVncml0eSBzaGE1MTIteXZQTlpHZWpCMktPeUtsZVpz cGpLL05ydVhWUXVvd3U4Tm5WMkhZRzdnVzd5dHpsK3VtZmZidFVJNjJ2MmRDSFFMRGRzSzZISUR0 eUpaMFczbmVlckE9PQorICBkZXBlbmRlbmNpZXM6CisgICAgY3NzLWxpbmUtYnJlYWsgIjEuMS4x IgorCiBodG1sZXNjYXBlQF4xLjEuMDoKICAgdmVyc2lvbiAiMS4xLjEiCiAgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWxlc2NhcGUvLS9odG1sZXNjYXBlLTEuMS4x LnRneiMzYTAzZWRjMjIxNGJjYTNiNjY0MjRhM2U3OTU5MzQ5NTA5Y2IwMzUxIgpAQCAtNjE2Nyw2 ICs2MjY3LDE1IEBAIGxvYWRlci1ydW5uZXJAXjIuNC4wOgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9sb2FkZXItcnVubmVyLy0vbG9hZGVyLXJ1bm5lci0yLjQuMC50 Z3ojZWQ0NzA2NmJmZTUzNGQ3ZTg0YzRjN2I5OTk4YzJhNzU2MDdkOTM1NyIKICAgaW50ZWdyaXR5 IHNoYTUxMi1Kc21yODlSY1hHSXdpdkZZMjFGY1JyaXNZWmZ2TE1UV3g1a09MYytKVHh0cEJPRzZ4 TUwwdnpiYzZTRVFHMkZPOS80RmMzd1c0TFZjQjVEbUdmbGFSdz09CiAKK2xvYWRlci11dGlsc0Ax LjIuMzoKKyAgdmVyc2lvbiAiMS4yLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2xvYWRlci11dGlscy8tL2xvYWRlci11dGlscy0xLjIuMy50Z3ojMWZmNWRjNjkx MWM5ZjBhMDYyNTMxYTRjMDRiNjA5NDA2MTA4YzJjNyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1ma3B6 OGVqZG5FTUczczM3d0dMMDdpU0JEZzk5TzlENXlmbEU5UkdOSDNoUmR4OVNPd1lmbkdZZFpPVUla aXROOEUrRTJ2a3EzTVVNWU12UFlsNVpaQT09CisgIGRlcGVuZGVuY2llczoKKyAgICBiaWcuanMg Il41LjIuMiIKKyAgICBlbW9qaXMtbGlzdCAiXjIuMC4wIgorICAgIGpzb241ICJeMS4wLjEiCisK IGxvYWRlci11dGlsc0AxLjQuMCwgbG9hZGVyLXV0aWxzQF4xLjAuMSwgbG9hZGVyLXV0aWxzQF4x LjAuMiwgbG9hZGVyLXV0aWxzQF4xLjEuMCwgbG9hZGVyLXV0aWxzQF4xLjIuMSwgbG9hZGVyLXV0 aWxzQF4xLjIuMywgbG9hZGVyLXV0aWxzQF4xLjQuMDoKICAgdmVyc2lvbiAiMS40LjAiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvYWRlci11dGlscy8tL2xvYWRl ci11dGlscy0xLjQuMC50Z3ojYzU3OWI1ZTM0Y2IzNGIxYTc0ZWRjNmMxZmIzNmJmYTM3MWQ1YTYx MyIKQEAgLTY4MzcsNiArNjk0NiwxMSBAQCBuZW8tYXN5bmNAXjIuNS4wLCBuZW8tYXN5bmNAXjIu Ni4xOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9uZW8tYXN5bmMv LS9uZW8tYXN5bmMtMi42LjIudGd6I2I0YWFmYjkzZTNhZWIyZDgxNzRjYTUzY2YxNjNhYjdkNzMw ODMwNWYiCiAgIGludGVncml0eSBzaGE1MTItWWQzVUVTNW1XQ1NxUitxTlQ5M1MzVW9ZVWtxQVo5 bExnOGE3ZzlyaW1zV21ZR0s4Y1ZUb0E0L3NGM1Jyc2hkeVYzc0FHTVhWVW1wTVlPdytkTHBPdXc9 PQogCituZXh0LXRpY2tAfjEuMC4wOgorICB2ZXJzaW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmV4dC10aWNrLy0vbmV4dC10aWNrLTEuMC4wLnRn eiNjYTg2ZDFmZTg4MjgxNjliMDEyMDIwOGUzZGM4NDI0YjlkYjgzNDJjIgorICBpbnRlZ3JpdHkg c2hhMS15b2JSL29nb0Zwc0JJQ0NPUGNoQ1M1MjROQ3c9CisKIG5pY2UtdHJ5QF4xLjAuNDoKICAg dmVyc2lvbiAiMS4wLjUiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L25pY2UtdHJ5Ly0vbmljZS10cnktMS4wLjUudGd6I2EzMzc4YTc2OTZjZTdkMjIzZTg4ZmM5Yjc2 NGJkN2VmMTA4OWUzNjYiCkBAIC03ODU0LDYgKzc5NjgsMTUgQEAgcG9zdGNzcy12YWx1ZS1wYXJz ZXJAXjQuMC4yLCBwb3N0Y3NzLXZhbHVlLXBhcnNlckBeNC4xLjA6CiAgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtdmFsdWUtcGFyc2VyLy0vcG9zdGNzcy12 YWx1ZS1wYXJzZXItNC4xLjAudGd6IzQ0M2Y2YTIwY2VkNjQ4MWEyYmRhNGZhODUzMmE2ZTU1ZDc4 OWEyY2IiCiAgIGludGVncml0eSBzaGE1MTItOTdEWE9GYlFKaGs3MW5lNS9NdDZjT3U2eXhzU2ZN MFFHUXlsMEwyNUdjYTR5R1dFR0phaWc3bDdnYkNYNjIzVnFUQk5HTFJMYVZVQ25Oa2NlZGxSU1E9 PQogCitwb3N0Y3NzQDcuMC4yMToKKyAgdmVyc2lvbiAiNy4wLjIxIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLy0vcG9zdGNzcy03LjAuMjEudGd6IzA2 YmIwNzgyNGMxOWMyMDIxYzVkMDU2ZDViMTBjMzViOTg5ZjdlMTciCisgIGludGVncml0eSBzaGE1 MTItdUlGdEpFbHhKbzI5UUM3NTNKemhpZG9BaHZwL2UvRXhlemtkaGZtdDhBeW1XVDYvNUI3VzFX bXBvbllXa0hrMmVnNnNPTnlUY2gwQTNua01QdW4zU1E9PQorICBkZXBlbmRlbmNpZXM6CisgICAg Y2hhbGsgIl4yLjQuMiIKKyAgICBzb3VyY2UtbWFwICJeMC42LjEiCisgICAgc3VwcG9ydHMtY29s b3IgIl42LjEuMCIKKwogcG9zdGNzc0A3LjAuMjc6CiAgIHZlcnNpb24gIjcuMC4yNyIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy8tL3Bvc3Rjc3MtNy4w LjI3LnRneiNjYzY3Y2RjNmIwZGFhMzc1MTA1YjdjNDI0YTg1NTY3MzQ1ZmM1NGQ5IgpAQCAtODI2 MCw2ICs4MzgzLDExIEBAIHJlZ2V4LW5vdEBeMS4wLjAsIHJlZ2V4LW5vdEBeMS4wLjI6CiAgICAg ZXh0ZW5kLXNoYWxsb3cgIl4zLjAuMiIKICAgICBzYWZlLXJlZ2V4ICJeMS4xLjAiCiAKK3JlZ2V4 LXBhcnNlckBeMi4yLjExOgorICB2ZXJzaW9uICIyLjIuMTEiCisgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4LXBhcnNlci8tL3JlZ2V4LXBhcnNlci0yLjIuMTEu dGd6IzNiMzdlYzkwNDllMTk0Nzk4MDZlODc4Y2FiZTdjMWNhODNjY2ZlNTgiCisgIGludGVncml0 eSBzaGE1MTItamJEL0ZUMCs5TUJVMlhBWmx1STd3Mk9CczFSQmk2cDlNODNua29aYXlRWFhVOWU4 Um9idDY5RmNaYzd3VTRlSkQvWUZUam4xSmRDazNyYk1KYWp6OFE9PQorCiByZWdleHAucHJvdG90 eXBlLmZsYWdzQF4xLjMuMDoKICAgdmVyc2lvbiAiMS4zLjAiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4cC5wcm90b3R5cGUuZmxhZ3MvLS9yZWdleHAucHJv dG90eXBlLmZsYWdzLTEuMy4wLnRneiM3YWJhODliM2MxM2E2NDUwOWRhYmNmM2NhOGQ5ZmJiOWJk ZjVjYjc1IgpAQCAtODM3NCw2ICs4NTAyLDIyIEBAIHJlc29sdmUtZnJvbUBeNC4wLjA6CiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jlc29sdmUtZnJvbS8tL3Jlc29s dmUtZnJvbS00LjAuMC50Z3ojNGFiY2Q4NTJhZDMyZGQ3YmFhYmZlOWI0MGUwMGEzNmRiNWYzOTJl NiIKICAgaW50ZWdyaXR5IHNoYTUxMi1wYi9NWW1Yc3RBa3lzUkZ4OHBpTkkxdEdGTlFJRkEzdmtF M0dxNEV1QTFkRjZnSHAvK3ZnWnFzQ0dKYXB2eThOM1ErNG83Rnd2cXVQSmNuWjdSWXk0Zz09CiAK K3Jlc29sdmUtdXJsLWxvYWRlckBeMy4xLjI6CisgIHZlcnNpb24gIjMuMS4yIgorICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXNvbHZlLXVybC1sb2FkZXIvLS9yZXNv bHZlLXVybC1sb2FkZXItMy4xLjIudGd6IzIzNWUyYzI4ZTIyZTNlNDMyYmE3YTVkNGUzMDVjNTlh NThlZGZjMDgiCisgIGludGVncml0eSBzaGE1MTItUUViNEE3NmM4TWk3STN4TktYbFJLUVNsTEJ3 alVWL1VMRk1QK0c3bjMvN3RKWjhNRzV3c1ozdWN4UDFKejhWZXZuNmZuSnN4RHg5Y0lscyt1dEd6 UFE9PQorICBkZXBlbmRlbmNpZXM6CisgICAgYWRqdXN0LXNvdXJjZW1hcC1sb2FkZXIgIjMuMC4w IgorICAgIGNhbWVsY2FzZSAiNS4zLjEiCisgICAgY29tcG9zZS1mdW5jdGlvbiAiMy4wLjMiCisg ICAgY29udmVydC1zb3VyY2UtbWFwICIxLjcuMCIKKyAgICBlczYtaXRlcmF0b3IgIjIuMC4zIgor ICAgIGxvYWRlci11dGlscyAiMS4yLjMiCisgICAgcG9zdGNzcyAiNy4wLjIxIgorICAgIHJld29y ayAiMS4wLjEiCisgICAgcmV3b3JrLXZpc2l0ICIxLjAuMCIKKyAgICBzb3VyY2UtbWFwICIwLjYu MSIKKwogcmVzb2x2ZS11cmxAXjAuMi4xOgogICB2ZXJzaW9uICIwLjIuMSIKICAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVzb2x2ZS11cmwvLS9yZXNvbHZlLXVybC0w LjIuMS50Z3ojMmM2MzdmZTc3Yzg5M2FmZDJhNjYzZmUyMWFhOTA4MDA2OGUyMDUyYSIKQEAgLTg0 MTIsNiArODU1NiwxOSBAQCByZXRAfjAuMS4xMDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vcmV0Ly0vcmV0LTAuMS4xNS50Z3ojYjhhNDgyNWQ1YmRiMWZjM2Y2ZjUz YzJiYzMzZjgxMzg4NjgxYzdiYyIKICAgaW50ZWdyaXR5IHNoYTUxMi1UVGxZcGErT0wrdk1NTkcy NHhTbFFHRUozQi9SekVmVWxMY3Q3YjVHL3l0YXYrd1BycGxDcFZNRnV3elhia2VjSnJiNklZbzFp RmIwUzl2Mzc3NTRtZz09CiAKK3Jld29yay12aXNpdEAxLjAuMDoKKyAgdmVyc2lvbiAiMS4wLjAi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jld29yay12aXNpdC8t L3Jld29yay12aXNpdC0xLjAuMC50Z3ojOTk0NWIyODAzZjIxOWUyZjdhY2EwMGFkYjhiYzlmNjQw Zjg0MmM5YSIKKyAgaW50ZWdyaXR5IHNoYTEtbVVXeWdEOGhuaTk2eWdDdHVMeWZaQStFTEpvPQor CityZXdvcmtAMS4wLjE6CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9yZXdvcmsvLS9yZXdvcmstMS4wLjEudGd6IzMwODA2YTg0MTM0 MmI1NDUxMGFhNDExMDg1MGNkNDg1MzQxNDRhYTciCisgIGludGVncml0eSBzaGExLU1JQnFoQk5D dFVVUXFrRVFoUXpVaFRRVVNxYz0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGNvbnZlcnQtc291cmNl LW1hcCAiXjAuMy4zIgorICAgIGNzcyAiXjIuMC4wIgorCiByZmRjQF4xLjEuNDoKICAgdmVyc2lv biAiMS4xLjQiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JmZGMv LS9yZmRjLTEuMS40LnRneiNiYTcyY2MxMzY3YTBjY2Q5Y2Y4MWE4NzBiM2I1OGJkM2FkMDdmOGMy IgpAQCAtODg5MCw3ICs5MDQ3LDcgQEAgc291cmNlLWxpc3QtbWFwQF4yLjAuMDoKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLWxpc3QtbWFwLy0vc291cmNl LWxpc3QtbWFwLTIuMC4xLnRneiMzOTkzYmQ4NzNiZmM0ODQ3OWNjYTllYTNhNTQ3ODM1YzdjMTU0 YjM0IgogICBpbnRlZ3JpdHkgc2hhNTEyLXFuUTdnVk14R054c2lMNGxFdUp3ZS9UbzhVbks3ZkFu bWJHRUVIOFJwTG91dUtiZUVtMGxoYlFWRklyTlN1QitHN3RWckFsVnNaZ0VUVDVubGpmK0l3PT0K IAotc291cmNlLW1hcC1yZXNvbHZlQF4wLjUuMDoKK3NvdXJjZS1tYXAtcmVzb2x2ZUBeMC41LjAs IHNvdXJjZS1tYXAtcmVzb2x2ZUBeMC41LjI6CiAgIHZlcnNpb24gIjAuNS4zIgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLXJlc29sdmUvLS9zb3Vy Y2UtbWFwLXJlc29sdmUtMC41LjMudGd6IzE5MDg2NmJlY2U3NTUzZTFmOGYyNjdhMmVlODJjNjA2 YjU1MDlhMWEiCiAgIGludGVncml0eSBzaGE1MTItSHR6K1Juc1hXazUrUDJzbHg1SmgzUTY2dmhR ajFDbGxtMHp2bmFZOTgrTkZ4K0R2MkNGL2Y1Ty90OHgrS2FOZHJkSUFzcnVOem9oL0twaWFsYnFB bnc9PQpAQCAtODkxOSwxNiArOTA3NiwxNiBAQCBzb3VyY2UtbWFwQDAuNS4wOgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0w LjUuMC50Z3ojMGZlOTY1MDNhYzg2YTVhZGI1ZGU2M2Y0ZTQxMmFlNDg3MmNkYmU4NiIKICAgaW50 ZWdyaXR5IHNoYTEtRCtsbEE2eUdwYTIxM21QMDVCS3VTSExOdm9ZPQogCitzb3VyY2UtbWFwQDAu Ni4xLCBzb3VyY2UtbWFwQF4wLjYuMCwgc291cmNlLW1hcEBeMC42LjEsIHNvdXJjZS1tYXBAfjAu Ni4xOgorICB2ZXJzaW9uICIwLjYuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC42LjEudGd6Izc0NzIyYWYzMmU5NjE0 ZTljMjg3YThkMGJiZGU0OGI1ZTJmMWEyNjMiCisgIGludGVncml0eSBzaGE1MTItVWpnYXB1bVds Yk1oa0JnelQ3WWtjNVlYVVQ0NkYwaUt1OFNHWHEwYmN3UDVkei9oMFBsajZlbkpxanoxWmJxMmw1 V2FxWW5yVmJ3V09XTXlGM0Y0N2c9PQorCiBzb3VyY2UtbWFwQF4wLjUuMCwgc291cmNlLW1hcEBe MC41LjYsIHNvdXJjZS1tYXBAXjAuNS43LCBzb3VyY2UtbWFwQH4wLjUuMzoKICAgdmVyc2lvbiAi MC41LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1t YXAvLS9zb3VyY2UtbWFwLTAuNS43LnRneiM4YTAzOWQyZDEwMjFkMjJkMWVhMTRjODBkOGVhNDY4 YmEyZWYzZmNjIgogICBpbnRlZ3JpdHkgc2hhMS1pZ09kTFJBaDBpMGVvVXlBMk9wR2k2THZQOHc9 CiAKLXNvdXJjZS1tYXBAXjAuNi4wLCBzb3VyY2UtbWFwQF4wLjYuMSwgc291cmNlLW1hcEB+MC42 LjE6Ci0gIHZlcnNpb24gIjAuNi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjYuMS50Z3ojNzQ3MjJhZjMyZTk2MTRl OWMyODdhOGQwYmJkZTQ4YjVlMmYxYTI2MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1VamdhcHVtV2xi TWhrQmd6VDdZa2M1WVhVVDQ2RjBpS3U4U0dYcTBiY3dQNWR6L2gwUGxqNmVuSnFqejFaYnEybDVX YXFZbnJWYndXT1dNeUYzRjQ3Zz09Ci0KIHNvdXJjZS1tYXBAXjAuNy4zOgogICB2ZXJzaW9uICIw LjcuMyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLW1h cC8tL3NvdXJjZS1tYXAtMC43LjMudGd6IzUzMDJmODE2OTAzMTczNTIyNjU0NDA5MmU2NDk4MWY3 NTE3NTAzODMiCkBAIC05NjUzLDYgKzk4MTAsMTYgQEAgdHlwZS1pc0B+MS42LjE3LCB0eXBlLWlz QH4xLjYuMTg6CiAgICAgbWVkaWEtdHlwZXIgIjAuMy4wIgogICAgIG1pbWUtdHlwZXMgIn4yLjEu MjQiCiAKK3R5cGVAXjEuMC4xOgorICB2ZXJzaW9uICIxLjIuMCIKKyAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHlwZS8tL3R5cGUtMS4yLjAudGd6Izg0OGRkNzY5OGRh ZmEzZTU0YTZjNDc5ZTc1OWM0YmMzZjE4ODQ3YTAiCisgIGludGVncml0eSBzaGE1MTItKzVudDVB QW5pcXNDbnUyY0VRUWRwekNBaDMza1Z4OG4wVm9GaWRLcEIxZFZWTEFOL0YrYmdWT3FPSnFPbkVu cmhwMjIyY2xCNXAzdlVsRCsxUUFuZmc9PQorCit0eXBlQF4yLjAuMDoKKyAgdmVyc2lvbiAiMi4x LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R5cGUvLS90eXBl LTIuMS4wLnRneiM5YmRjMjJjNjQ4Y2Y4Y2Y4NmRkMjNkMzIzMzZhNDFjZmI2NDc1ZTNmIgorICBp bnRlZ3JpdHkgc2hhNTEyLUc5YWJzRFd2aEFXQ1YyZ21GMXpLdWQzT3lDNjFuWkR3V3ZCTDJEQXBh VkZvZ0kwN0NwcmdnaVFBT09qdnAyTlJqWVdGelB5dTd2d3REclFGcThqZVNBPT0KKwogdHlwZWRh cnJheUBeMC4wLjY6CiAgIHZlcnNpb24gIjAuMC42IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS90eXBlZGFycmF5Ly0vdHlwZWRhcnJheS0wLjAuNi50Z3ojODY3YWM3 NGUzODY0MTg3YjFkM2Q0N2Q5OTZhNzhlYzVjODgzMDc3NyIK --00000000000082739a05b9b80b63--