@atlasauth/angular 0.16.0 → 0.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/esm2022/lib/components/attempt-flow.component.mjs +21 -4
- package/dist/esm2022/lib/components/sign-in.component.mjs +2 -2
- package/dist/esm2022/lib/components/sign-up.component.mjs +4 -2
- package/dist/esm2022/lib/version.mjs +2 -2
- package/dist/fesm2022/atlasauth-angular.mjs +25 -6
- package/dist/fesm2022/atlasauth-angular.mjs.map +1 -1
- package/dist/lib/components/attempt-flow.component.d.ts +4 -1
- package/dist/lib/version.d.ts +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlasauth/angular changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.2 — 2026-11-06
|
|
4
|
+
|
|
5
|
+
- A username taken while the sign-up waited no longer shows a sign-in link beside the error. Picks up passkey promotion from `@atlasauth/js` 0.34.1.
|
|
6
|
+
|
|
7
|
+
## 0.16.1 — 2026-11-06
|
|
8
|
+
|
|
9
|
+
- The sign-up code step shows a sign-in link beside the taken-address error.
|
|
10
|
+
|
|
3
11
|
## 0.16.0 — 2026-11-06
|
|
4
12
|
|
|
5
13
|
- Uses `@atlasauth/js` 0.34.0. Emailed links now need the browser that started the flow or the code shown on the starting tab; the components show the code, ask for it on the link page, and offer every factor the instance has on at enrolment.
|
|
@@ -24,6 +24,8 @@ export class AttemptFlowComponent {
|
|
|
24
24
|
/** `FlowState.sessionKept`: whether this browser kept the session the sign-in created. */
|
|
25
25
|
sessionKept = undefined;
|
|
26
26
|
titleKey = 'signIn.title';
|
|
27
|
+
/** Sign-up only: the sign-in link beside the code step's "an account already uses this email". */
|
|
28
|
+
signInHref = null;
|
|
27
29
|
/**
|
|
28
30
|
* The sign-in captcha, drawn above the submit button on the identifier step
|
|
29
31
|
* (an always-on sign-in captcha) and on the challenge step the server demands
|
|
@@ -155,6 +157,9 @@ export class AttemptFlowComponent {
|
|
|
155
157
|
formErrors() {
|
|
156
158
|
return this.errors.filter((error) => !error.param);
|
|
157
159
|
}
|
|
160
|
+
signInLink(error) {
|
|
161
|
+
return this.step().kind === 'collect_email_code' && error.code === 'IDENTIFIER_EXISTS' && error.meta?.['identifier'] !== 'username' ? this.signInHref : null;
|
|
162
|
+
}
|
|
158
163
|
fieldErrorsFor(name) {
|
|
159
164
|
return this.errors.filter((error) => error.param === name);
|
|
160
165
|
}
|
|
@@ -281,12 +286,17 @@ export class AttemptFlowComponent {
|
|
|
281
286
|
}
|
|
282
287
|
}
|
|
283
288
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AttemptFlowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
284
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AttemptFlowComponent, isStandalone: true, selector: "atlas-attempt-flow", inputs: { attempt: "attempt", busy: "busy", errors: "errors", sessionKept: "sessionKept", titleKey: "titleKey", captcha: "captcha", firstFactors: "firstFactors", preparedFactor: "preparedFactor", passwordHold: "passwordHold", holdProof: "holdProof", offerEmailSecondFactor: "offerEmailSecondFactor", emailedSecondFactor: "emailedSecondFactor", offerSmsSecondFactor: "offerSmsSecondFactor", textedSecondFactor: "textedSecondFactor", enrollment: "enrollment", enrollmentState: "enrollmentState", emailVerification: "emailVerification", matchCode: "matchCode" }, outputs: { submitFlow: "submitFlow", chooseFactor: "chooseFactor", usePassword: "usePassword", emailSecondFactor: "emailSecondFactor", smsSecondFactor: "smsSecondFactor", resend: "resend", policyDeclined: "policyDeclined" }, ngImport: i0, template: `
|
|
289
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AttemptFlowComponent, isStandalone: true, selector: "atlas-attempt-flow", inputs: { attempt: "attempt", busy: "busy", errors: "errors", sessionKept: "sessionKept", titleKey: "titleKey", signInHref: "signInHref", captcha: "captcha", firstFactors: "firstFactors", preparedFactor: "preparedFactor", passwordHold: "passwordHold", holdProof: "holdProof", offerEmailSecondFactor: "offerEmailSecondFactor", emailedSecondFactor: "emailedSecondFactor", offerSmsSecondFactor: "offerSmsSecondFactor", textedSecondFactor: "textedSecondFactor", enrollment: "enrollment", enrollmentState: "enrollmentState", emailVerification: "emailVerification", matchCode: "matchCode" }, outputs: { submitFlow: "submitFlow", chooseFactor: "chooseFactor", usePassword: "usePassword", emailSecondFactor: "emailSecondFactor", smsSecondFactor: "smsSecondFactor", resend: "resend", policyDeclined: "policyDeclined" }, ngImport: i0, template: `
|
|
285
290
|
<div [class]="cls('card', 'atlas-card')">
|
|
286
291
|
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t(titleKey) }}</h1>
|
|
287
292
|
|
|
288
293
|
@for (error of formErrors(); track error.code) {
|
|
289
|
-
<p [class]="cls('formFieldError', 'atlas-error')" role="alert">
|
|
294
|
+
<p [class]="cls('formFieldError', 'atlas-error')" role="alert">
|
|
295
|
+
{{ errorText(error) }}
|
|
296
|
+
@if (signInLink(error); as href) {
|
|
297
|
+
<a class="atlas-link" [href]="href">{{ t('signIn.title') }}</a>
|
|
298
|
+
}
|
|
299
|
+
</p>
|
|
290
300
|
}
|
|
291
301
|
|
|
292
302
|
<form (submit)="onSubmit($event)">
|
|
@@ -552,7 +562,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
552
562
|
<h1 [class]="cls('headerTitle', 'atlas-title')">{{ t(titleKey) }}</h1>
|
|
553
563
|
|
|
554
564
|
@for (error of formErrors(); track error.code) {
|
|
555
|
-
<p [class]="cls('formFieldError', 'atlas-error')" role="alert">
|
|
565
|
+
<p [class]="cls('formFieldError', 'atlas-error')" role="alert">
|
|
566
|
+
{{ errorText(error) }}
|
|
567
|
+
@if (signInLink(error); as href) {
|
|
568
|
+
<a class="atlas-link" [href]="href">{{ t('signIn.title') }}</a>
|
|
569
|
+
}
|
|
570
|
+
</p>
|
|
556
571
|
}
|
|
557
572
|
|
|
558
573
|
<form (submit)="onSubmit($event)">
|
|
@@ -816,6 +831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
816
831
|
type: Input
|
|
817
832
|
}], titleKey: [{
|
|
818
833
|
type: Input
|
|
834
|
+
}], signInHref: [{
|
|
835
|
+
type: Input
|
|
819
836
|
}], captcha: [{
|
|
820
837
|
type: Input
|
|
821
838
|
}], firstFactors: [{
|
|
@@ -864,4 +881,4 @@ function msg(labelKey) {
|
|
|
864
881
|
function released() {
|
|
865
882
|
return { kind: 'released', name: '', labelKey: 'signIn.passwordHoldReleased', type: 'text' };
|
|
866
883
|
}
|
|
867
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZW1wdC1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdHRlbXB0LWZsb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixRQUFRLEdBUVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQWdCcEM7Ozs7Ozs7OztHQVNHO0FBeVFILE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXJDLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0lBQ25DLElBQUksR0FBRyxLQUFLLENBQUM7SUFDYixNQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUNuQywwRkFBMEY7SUFDakYsV0FBVyxHQUF3QixTQUFTLENBQUM7SUFDN0MsUUFBUSxHQUFHLGNBQWMsQ0FBQztJQUNuQzs7OztPQUlHO0lBQ00sT0FBTyxHQUE2QixJQUFJLENBQUM7SUFDbEQ7Ozs7T0FJRztJQUNNLFlBQVksR0FBb0IsSUFBSSxDQUFDO0lBQzlDLHFHQUFxRztJQUM1RixjQUFj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QixLQUFLO2dCQUdJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQU1FLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQU1FLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFNRSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07O0FBME5ULGtGQUFrRjtBQUNsRixTQUFTLEdBQUcsQ0FBQyxRQUFnQjtJQUMzQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQVMsUUFBUTtJQUNmLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUMvRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYXdhaXRpbmdTaWduVXBMaW5rLFxuICBlbnJvbGxtZW50T3B0aW9uS2V5LFxuICBlbnJvbGxtZW50U3VibWl0S2V5LFxuICBncm91cFNldHVwS2V5LFxuICBsb2NhbGl6ZWRFcnJvck1lc3NhZ2UsXG4gIG5leHRTdGVwLFxuICB0eXBlIEF0dGVtcHRWaWV3LFxuICB0eXBlIENhcHRjaGFDb250cm9sbGVyLFxuICB0eXBlIEZpZWxkRXJyb3IsXG4gIHR5cGUgRmxvd1N0YXRlLFxuICB0eXBlIE1mYUVucm9sbG1lbnRDb250cm9sbGVyLFxuICB0eXBlIE1mYUVucm9sbG1lbnRTdGF0ZSxcbiAgdHlwZSBNZmFFbnJvbGxtZW50U3RyYXRlZ3ksXG59IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgQXRsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRsYXMuc2VydmljZSc7XG5pbXBvcnQgeyBBdGxhc0NhcHRjaGFTbG90RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jYXB0Y2hhLXNsb3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvbGljeUFjY2VwdFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3BvbGljeS1ob3N0JztcbmltcG9ydCB7IGNsYXNzRm9yLCB0eXBlIEVsZW1lbnRLZXkgfSBmcm9tICcuLi9hcHBlYXJhbmNlJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJy4uL2kxOG4nO1xuXG4vKipcbiAqIE9uZSByZW5kZXJlZCByb3cgb2YgdGhlIGZsb3cuIEEgdW5pZm9ybSBzaGFwZSAocmF0aGVyIHRoYW4gYSBkaXNjcmltaW5hdGVkXG4gKiB1bmlvbikgc28gdGhlIHRlbXBsYXRlIGFjY2Vzc2VzIG9ubHkgZmllbGRzIHRoYXQgYWx3YXlzIGV4aXN0IOKAlCBubyByZWxpYW5jZSBvblxuICogdGVtcGxhdGUgY29udHJvbC1mbG93IG5hcnJvd2luZyBvZiBhIGxvb3AgdmFyaWFibGUsIHdoaWNoIHZhcmllcyBieSBBbmd1bGFyXG4gKiBtaW5vci4gRm9yIGEgYG1lc3NhZ2VgIHJvdywgYGxhYmVsS2V5YCBjYXJyaWVzIHRoZSBtZXNzYWdlJ3MgaTE4biBrZXkuXG4gKi9cbmludGVyZmFjZSBTdGVwRmllbGQge1xuICBraW5kOiAnaW5wdXQnIHwgJ21lc3NhZ2UnIHwgJ2FsZXJ0JyB8ICdyZWxlYXNlZCc7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFiZWxLZXk6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBhdXRvY29tcGxldGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNlcnZlci1kcml2ZW4gZmxvdyBzaGVsbCwgc2hhcmVkIGJ5IGA8YXRsYXMtc2lnbi1pbj5gIGFuZFxuICogYDxhdGxhcy1zaWduLXVwPmAuIFRoZSBBbmd1bGFyIHBlZXIgb2YgUmVhY3QncyBpbnRlcm5hbCBgQXR0ZW1wdEZsb3dgLlxuICpcbiAqIEl0IGNvbnRhaW5zIE5PIGRlY2lzaW9uIGFib3V0IHdoYXQgY29tZXMgbmV4dDogaXQgcmVuZGVycyB3aGF0ZXZlciBgc3RhdHVzYFxuICogdGhlIHNlcnZlciByZXR1cm5lZCwgbWFwcGVkIHRocm91Z2ggYG5leHRTdGVwYCBmcm9tIGBAYXRsYXNhdXRoL2pzYCAodGhlIHNhbWVcbiAqIGV4aGF1c3RpdmUgbWFwcGluZyB0aGUgUmVhY3QgU0RLIHVzZXMpLCBzbyBhZGRpbmcgYSBzdGVwIGlzIGEgc2VydmVyIGNoYW5nZVxuICogYW5kIGFuIG91dC1vZi1kYXRlIGNsaWVudCBkZWdyYWRlcyB0byBhIHZpc2libGUgXCJwbGVhc2UgdXBkYXRlXCIgbWVzc2FnZSByYXRoZXJcbiAqIHRoYW4gYSBibGFuayBzY3JlZW4uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0bGFzLWF0dGVtcHQtZmxvdycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQXRsYXNDYXB0Y2hhU2xvdERpcmVjdGl2ZSwgUG9saWN5QWNjZXB0U3RlcENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY2xzKCdjYXJkJywgJ2F0bGFzLWNhcmQnKVwiPlxuICAgICAgPGgxIFtjbGFzc109XCJjbHMoJ2hlYWRlclRpdGxlJywgJ2F0bGFzLXRpdGxlJylcIj57eyB0KHRpdGxlS2V5KSB9fTwvaDE+XG5cbiAgICAgIEBmb3IgKGVycm9yIG9mIGZvcm1FcnJvcnMoKTsgdHJhY2sgZXJyb3IuY29kZSkge1xuICAgICAgICA8cCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JUZXh0KGVycm9yKSB9fTwvcD5cbiAgICAgIH1cblxuICAgICAgPGZvcm0gKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gICAgICAgIEBpZiAoY29kZVNlbnRUZXh0KCk7IGFzIHNlbnRUZXh0KSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcy1jb2RlLXNlbnQ9XCJcIj57eyBzZW50VGV4dCB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGxpbmtTZW50VGV4dCgpOyBhcyBzZW50TGluaykge1xuICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXMtbGluay1zZW50PVwiXCI+e3sgc2VudExpbmsgfX08L3A+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChsaW5rT25seSgpKSB7XG4gICAgICAgICAgPCEtLSBOb3RoaW5nIHRvIHR5cGU6IHRoZSBmbG93IHBvbGxzIHVudGlsIHRoZSBlbWFpbGVkIGxpbmsgaXMgb3BlbmVkIChhbnl3aGVyZSkuIC0tPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXMtbGluay1zZW50PVwiXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICB7eyB0KCdzaWduVXAubGlua1NlbnRUbycsIHsgZW1haWw6IGF0dGVtcHQ/LmlkZW50aWZpZXIgPz8gJycgfSkgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWF0bGFzLXJlc2VuZD1cIlwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVzZW5kLmVtaXQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdCgnc2lnbkluLnJlc2VuZExpbmsnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc2hvd01hdGNoQ29kZSgpKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcz1cImxpbmstbWF0Y2gtY29kZVwiPnt7IHQoJ2xpbmsubWF0Y2hDb2RlSGludCcpIH19IDxzdHJvbmc+PGNvZGU+e3sgbWF0Y2hDb2RlIH19PC9jb2RlPjwvc3Ryb25nPjwvcD5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGVucm9sbGluZygpICYmIGVucm9sbG1lbnRTdGF0ZTsgYXMgZW5yb2wpIHtcbiAgICAgICAgICBAaWYgKGVucm9sLm1ldGhvZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnbWZhLmVucm9sbENob29zZScpIH19PC9wPlxuICAgICAgICAgICAgQGZvciAobSBvZiBlbnJvbC5vcHRpb25zOyB0cmFjayBtKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uU2Vjb25kYXJ5JywgJ2F0bGFzLWJ1dHRvbi1zZWNvbmRhcnknKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdGxhcy1tZmEtbWV0aG9kXT1cIm1cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5IHx8IGVucm9sLmJ1c3lcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaG9vc2VNZXRob2QobSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdChvcHRpb25LZXkobSkpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2UgaWYgKGVucm9sLm1ldGhvZCA9PT0gJ3l1YmlrZXknKSB7XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhdGxhcy1maWVsZFwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdtZmEueXViaWtleUxhYmVsJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRJbnB1dCcsICdhdGxhcy1pbnB1dCcpXCIgdHlwZT1cInRleHRcIiBuYW1lPVwib3RwXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW3ZhbHVlXT1cInZhbHVlc1snb3RwJ10gPz8gJydcIiAoaW5wdXQpPVwic2V0VmFsdWUoJ290cCcsICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZmllbGRFcnJvcnNGb3IoJ290cCcpOyB0cmFjayBlcnJvci5jb2RlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImNscygnZm9ybUZpZWxkRXJyb3InLCAnYXRsYXMtZXJyb3InKVwiPnt7IGVycm9yVGV4dChlcnJvcikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoZW5yb2wubWV0aG9kID09PSAnZHVvJyB8fCBlbnJvbC5tZXRob2QgPT09ICdwYXNza2V5Jykge1xuICAgICAgICAgICAgQGlmIChlbnJvbC5lbnJvbGxtZW50OyBhcyBzZXR1cCkge1xuICAgICAgICAgICAgICBAaWYgKGVucm9sLm1ldGhvZCA9PT0gJ3Bhc3NrZXknKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnbWZhLmVucm9sbFBhc3NrZXlIZWxwJykgfX08L3A+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiPnt7IHQoJ21mYS5lbnJvbGxEdW9IZWxwJykgfX08L3A+XG4gICAgICAgICAgICAgICAgQGlmIChzZXR1cC5hdXRob3JpemF0aW9uVXJsKSB7XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImF0bGFzLWxpbmtcIiBkYXRhLWF0bGFzPVwibWZhLWR1by1vcGVuXCIgW2hyZWZdPVwic2V0dXAuYXV0aG9yaXphdGlvblVybFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj57eyB0KCdtZmEuZW5yb2xsRHVvT3BlbicpIH19PC9hPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IGVucm9sLmJ1c3kgPyB0KCdtZmEuZW5yb2xsUHJlcGFyaW5nJykgOiAnJyB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIGlmIChlbnJvbC5tZXRob2QgPT09ICd0b3RwJyB8fCBlbnJvbC5tZXRob2QgPT09ICdob3RwJykge1xuICAgICAgICAgICAgQGlmIChlbnJvbC5lbnJvbGxtZW50OyBhcyBzZXR1cCkge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdtZmEuZW5yb2xsU2NhbicpIH19PC9wPlxuICAgICAgICAgICAgICBAaWYgKHNldHVwLnFyQ29kZSkge1xuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdGxhcy1tZmEtcXJcIiBkYXRhLWF0bGFzPVwibWZhLXFyXCIgW3NyY109XCJzZXR1cC5xckNvZGVcIiBbYWx0XT1cInQoJ21mYS5lbnJvbGxRckFsdCcpXCIgd2lkdGg9XCIxODBcIiBoZWlnaHQ9XCIxODBcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc2V0dXAuc2VjcmV0KSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcz1cIm1mYS1zZXR1cC1rZXlcIj57eyB0KCdtZmEuZW5yb2xsU2V0dXBLZXknKSB9fTogPGNvZGU+e3sgc2V0dXBLZXkoc2V0dXAuc2VjcmV0KSB9fTwvY29kZT48L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXRsYXMtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkSW5wdXQnLCAnYXRsYXMtaW5wdXQnKVwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNvZGVcIiBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIFt2YWx1ZV09XCJ2YWx1ZXNbJ2NvZGUnXSA/PyAnJ1wiIChpbnB1dCk9XCJzZXRWYWx1ZSgnY29kZScsICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgQGlmIChlbnJvbC5tZXRob2QgPT09ICd0b3RwJyAmJiBlbnJvbC50b3RwQ29kZXMgPj0gMikge1xuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF0bGFzLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdtZmEuZW5yb2xsU2Vjb25kQ29kZUxhYmVsJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkSW5wdXQnLCAnYXRsYXMtaW5wdXQnKVwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlY29uZENvZGVcIiBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIFt2YWx1ZV09XCJ2YWx1ZXNbJ3NlY29uZENvZGUnXSA/PyAnJ1wiIChpbnB1dCk9XCJzZXRWYWx1ZSgnc2Vjb25kQ29kZScsICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgYXJpYS1saXZlPVwicG9saXRlXCI+e3sgZW5yb2wuYnVzeSA/IHQoJ21mYS5lbnJvbGxQcmVwYXJpbmcnKSA6ICcnIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChlbnJvbC5lbnJvbGxtZW50OyBhcyB0ZXh0ZWQpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcz1cIm1mYS1jb2RlLXRleHRlZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IHQoJ21mYS5jb2RlVGV4dGVkVG8nLCB7IHBob25lOiB0ZXh0ZWQucGhvbmUgPz8gJycgfSkgfX08L3A+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF0bGFzLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnbWZhLmNvZGVMYWJlbCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRJbnB1dCcsICdhdGxhcy1pbnB1dCcpXCIgdHlwZT1cInRleHRcIiBuYW1lPVwiY29kZVwiIGF1dG9jb21wbGV0ZT1cIm9uZS10aW1lLWNvZGVcIiBpbnB1dG1vZGU9XCJudW1lcmljXCIgW3ZhbHVlXT1cInZhbHVlc1snY29kZSddID8/ICcnXCIgKGlucHV0KT1cInNldFZhbHVlKCdjb2RlJywgJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIiAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGRhdGEtYXRsYXMtcmVzZW5kPVwiXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSB8fCBlbnJvbC5idXN5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZW5kRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQoJ3NpZ25Jbi5yZXNlbmRDb2RlJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXRsYXMtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdtZmEucGhvbmVMYWJlbCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRJbnB1dCcsICdhdGxhcy1pbnB1dCcpXCIgdHlwZT1cInRlbFwiIG5hbWU9XCJwaG9uZVwiIGF1dG9jb21wbGV0ZT1cInRlbFwiIFt2YWx1ZV09XCJ2YWx1ZXNbJ3Bob25lJ10gPz8gJydcIiAoaW5wdXQpPVwic2V0VmFsdWUoJ3Bob25lJywgJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIiAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdtZmEucGhvbmVIaW50JykgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGVucm9sLmVycm9yczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8cCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3IubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChlbnJvbC5tZXRob2QgIT09IG51bGwgJiYgZW5yb2wub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBAZm9yIChvdGhlciBvZiBvdGhlck1ldGhvZHMoZW5yb2wpOyB0cmFjayBvdGhlcikge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXRsYXMtbWZhLW1ldGhvZF09XCJvdGhlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3kgfHwgZW5yb2wuYnVzeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNob29zZU1ldGhvZChvdGhlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdChvcHRpb25LZXkob3RoZXIpKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoZiBvZiBmaWVsZHMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgQGlmIChmLmtpbmQgPT09ICdpbnB1dCcpIHtcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF0bGFzLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoZi5sYWJlbEtleSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZElucHV0JywgJ2F0bGFzLWlucHV0JylcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImYudHlwZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCJmLm5hbWVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJmLmF1dG9jb21wbGV0ZSA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVzW2YubmFtZV0gPz8gJydcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJzZXRWYWx1ZShmLm5hbWUsICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZmllbGRFcnJvcnNGb3IoZi5uYW1lKTsgdHJhY2sgZXJyb3IuY29kZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZEVycm9yJywgJ2F0bGFzLWVycm9yJylcIj57eyBlcnJvclRleHQoZXJyb3IpIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGYua2luZCA9PT0gJ3JlbGVhc2VkJykge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcy1wYXNzd29yZC1yZWxlYXNlZD1cIlwiPnt7IHQoZi5sYWJlbEtleSkgfX08L3A+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoZi5raW5kID09PSAnYWxlcnQnKSB7XG4gICAgICAgICAgICA8cCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCIgcm9sZT1cImFsZXJ0XCI+e3sgdChmLmxhYmVsS2V5KSB9fTwvcD5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxwPnt7IHQoZi5sYWJlbEtleSkgfX08L3A+XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChhd2FpdGluZ1BvbGljaWVzKCkpIHtcbiAgICAgICAgICA8IS0tIEEgcmVxdWlyZWQgcG9saWN5IGNoYW5nZWQ6IHNjcm9sbC1tb2RlIG9uZXMgaW4gdGhlaXIgZGlhbG9nLCB0aGUgcmVzdCBhcyBjaGVja2JveGVzLiAtLT5cbiAgICAgICAgICA8YXRsYXMtcG9saWN5LWFjY2VwdC1zdGVwXG4gICAgICAgICAgICBbYXR0ZW1wdF09XCJhdHRlbXB0XCJcbiAgICAgICAgICAgIFtidXN5XT1cImJ1c3lcIlxuICAgICAgICAgICAgKHN1Ym1pdEZsb3cpPVwic3VibWl0Rmxvdy5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKGRlY2xpbmVkKT1cInBvbGljeURlY2xpbmVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXRsYXMtcG9saWN5LWFjY2VwdC1zdGVwPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaG93Q2FwdGNoYSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF0bGFzLWNhcHRjaGFcIiBkYXRhLWF0bGFzLWNhcHRjaGE9XCJcIiBbYXRsYXNDYXB0Y2hhU2xvdF09XCJjYXB0Y2hhXCI+PC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHNob3dTdWJtaXQoKSkge1xuICAgICAgICAgIDxidXR0b24gW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIiBbZGlzYWJsZWRdPVwiYnVzeSB8fCAoZW5yb2xsaW5nKCkgJiYgISFlbnJvbGxtZW50U3RhdGU/LmJ1c3kpXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICAgICAge3sgdChzdWJtaXRLZXkoKSkgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc2hvd1Ntc1NlY29uZEZhY3RvcigpKSB7XG4gICAgICAgICAgQGlmIChzbXNTZWNvbmRGYWN0b3JTZW50VG8oKTsgYXMgc2VudFRvKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIiBkYXRhLWF0bGFzPVwic21zLXNlY29uZC1mYWN0b3Itc2VudFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICB7eyB0KCdtZmEuY29kZVRleHRlZFRvJywgeyBwaG9uZTogc2VudFRvIH0pIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25TZWNvbmRhcnknLCAnYXRsYXMtYnV0dG9uLXNlY29uZGFyeScpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtYXRsYXM9XCJzbXMtc2Vjb25kLWZhY3RvclwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5IHx8ICEhdGV4dGVkU2Vjb25kRmFjdG9yPy5idXN5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNtc1NlY29uZEZhY3Rvci5lbWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0ZXh0ZWRTZWNvbmRGYWN0b3I/LmJ1c3kgPyB0KCdzaWduSW4uc2VuZGluZycpIDogdCgnbWZhLnNtc0NvZGVPcHRpb24nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKHRleHRlZFNlY29uZEZhY3Rvcj8uZXJyb3I7IGFzIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkRXJyb3InLCAnYXRsYXMtZXJyb3InKVwiIHJvbGU9XCJhbGVydFwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaG93RW1haWxTZWNvbmRGYWN0b3IoKSkge1xuICAgICAgICAgIEBpZiAoZW1haWxTZWNvbmRGYWN0b3JTZW50VG8oKTsgYXMgc2VudFRvKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIiBkYXRhLWF0bGFzPVwiZW1haWwtc2Vjb25kLWZhY3Rvci1zZW50XCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ3NpZ25Jbi5jb2RlU2VudFRvJywgeyBlbWFpbDogc2VudFRvIH0pIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25TZWNvbmRhcnknLCAnYXRsYXMtYnV0dG9uLXNlY29uZGFyeScpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtYXRsYXM9XCJlbWFpbC1zZWNvbmQtZmFjdG9yXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3kgfHwgISFlbWFpbGVkU2Vjb25kRmFjdG9yPy5idXN5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImVtYWlsU2Vjb25kRmFjdG9yLmVtaXQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGVtYWlsZWRTZWNvbmRGYWN0b3I/LmJ1c3kgPyB0KCdzaWduSW4uc2VuZGluZycpIDogdCgnc2lnbkluLmVtYWlsQ29kZU9wdGlvbicpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAoZW1haWxlZFNlY29uZEZhY3Rvcj8uZXJyb3I7IGFzIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgPHAgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkRXJyb3InLCAnYXRsYXMtZXJyb3InKVwiIHJvbGU9XCJhbGVydFwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaG93RW1haWxDb2RlT3B0aW9uKCkpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uU2Vjb25kYXJ5JywgJ2F0bGFzLWJ1dHRvbi1zZWNvbmRhcnknKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc3RyYXRlZ3ldPVwicHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9jb2RlJyA/IG51bGwgOiAnZW1haWxfY29kZSdcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1hdGxhcy1yZXNlbmRdPVwicHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9jb2RlJyA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlRmFjdG9yLmVtaXQoJ2VtYWlsX2NvZGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdChwcmVwYXJlZEZhY3RvciA9PT0gJ2VtYWlsX2NvZGUnID8gJ3NpZ25Jbi5yZXNlbmRDb2RlJyA6ICdzaWduSW4udXNlRW1haWxDb2RlJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoaG9sZFByb29mID09PSAnZW1haWxfbGluaycgJiYgc3RlcCgpLmtpbmQgPT09ICdjb2xsZWN0X2ZpcnN0X2ZhY3RvcicpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uU2Vjb25kYXJ5JywgJ2F0bGFzLWJ1dHRvbi1zZWNvbmRhcnknKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc3RyYXRlZ3ldPVwicHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9saW5rJyA/IG51bGwgOiAnZW1haWxfbGluaydcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1hdGxhcy1yZXNlbmRdPVwicHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9saW5rJyA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlRmFjdG9yLmVtaXQoJ2VtYWlsX2xpbmsnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdChwcmVwYXJlZEZhY3RvciA9PT0gJ2VtYWlsX2xpbmsnID8gJ3NpZ25Jbi5yZXNlbmRMaW5rJyA6ICdzaWduSW4udXNlRW1haWxMaW5rJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocHJlcGFyZWRGYWN0b3IgJiYgb2ZmZXJlZCgpLmluY2x1ZGVzKCdwYXNzd29yZCcpKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3lcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLXN0cmF0ZWd5PVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVzZVBhc3N3b3JkLmVtaXQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdCgnc2lnbkluLnBhc3N3b3JkT3B0aW9uJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBBdHRlbXB0Rmxvd0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXRsYXMgPSBpbmplY3QoQXRsYXNTZXJ2aWNlKTtcblxuICBASW5wdXQoKSBhdHRlbXB0OiBBdHRlbXB0VmlldyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBidXN5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yczogRmllbGRFcnJvcltdID0gW107XG4gIC8qKiBgRmxvd1N0YXRlLnNlc3Npb25LZXB0YDogd2hldGhlciB0aGlzIGJyb3dzZXIga2VwdCB0aGUgc2Vzc2lvbiB0aGUgc2lnbi1pbiBjcmVhdGVkLiAqL1xuICBASW5wdXQoKSBzZXNzaW9uS2VwdDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgdGl0bGVLZXkgPSAnc2lnbkluLnRpdGxlJztcbiAgLyoqXG4gICAqIFRoZSBzaWduLWluIGNhcHRjaGEsIGRyYXduIGFib3ZlIHRoZSBzdWJtaXQgYnV0dG9uIG9uIHRoZSBpZGVudGlmaWVyIHN0ZXBcbiAgICogKGFuIGFsd2F5cy1vbiBzaWduLWluIGNhcHRjaGEpIGFuZCBvbiB0aGUgY2hhbGxlbmdlIHN0ZXAgdGhlIHNlcnZlciBkZW1hbmRzXG4gICAqIHdpdGggYG5lZWRzX2NhcHRjaGFgLiBOdWxsIHdoZW4gdGhlIGZsb3cgZHJhd3Mgbm9uZS5cbiAgICovXG4gIEBJbnB1dCgpIGNhcHRjaGE6IENhcHRjaGFDb250cm9sbGVyIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZmFjdG9ycyB0byBvZmZlciBvbiB0aGUgYG5lZWRzX2ZpcnN0X2ZhY3RvcmAgc3RlcCDigJQgcGFzc1xuICAgKiBgQXRsYXNGbG93Q29udHJvbGxlci5maXJzdEZhY3RvcnMoKWAsIHdoaWNoIGRyb3BzIGVtYWlsIGNvZGUgLyBsaW5rIHdoaWxlIHRoZVxuICAgKiBhcHAgY2Fubm90IGRlbGl2ZXIgZW1haWwuIE51bGwgdXNlcyB0aGUgc2VydmVyJ3MgbGlzdCBhcy1pcy5cbiAgICovXG4gIEBJbnB1dCgpIGZpcnN0RmFjdG9yczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIFRoZSBmaXJzdCBmYWN0b3IgYWxyZWFkeSBzZW50IChgQXRsYXNGbG93Q29udHJvbGxlci5wcmVwYXJlZEZhY3RvcigpYCk6IGl0cyBjb2RlIGlzIGNvbGxlY3RlZC4gKi9cbiAgQElucHV0KCkgcHJlcGFyZWRGYWN0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAvKiogYEZsb3dTdGF0ZS5wYXNzd29yZEhvbGRgOiB3aGVyZSB0aGUgcHJvb2Ygd2VudCwgYW5kIHdoZXRoZXIgdGhlIHBhc3N3b3JkIHNpZ25zIGluIG5vdy4gKi9cbiAgQElucHV0KCkgcGFzc3dvcmRIb2xkOiBGbG93U3RhdGVbJ3Bhc3N3b3JkSG9sZCddID0gbnVsbDtcbiAgLyoqIGBBdGxhc0Zsb3dDb250cm9sbGVyLmhvbGRQcm9vZigpYDogdGhlIGVtYWlsZWQgcHJvb2YgYSBwYXNzd29yZCBob2xkIHN0aWxsIHdhaXRzIG9uLiAqL1xuICBASW5wdXQoKSBob2xkUHJvb2Y6ICdlbWFpbF9jb2RlJyB8ICdlbWFpbF9saW5rJyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBFbWl0cyB0aGUgY29sbGVjdGVkIGZpZWxkIHZhbHVlcyB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4gKi9cbiAgQE91dHB1dCgpIHN1Ym1pdEZsb3cgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KCk7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB1c2VyIHBpY2tzIGEgZmlyc3QgZmFjdG9yIHRoZSBzZXJ2ZXIgbXVzdCBzZW5kIGZpcnN0IChhbiBlbWFpbGVkIGNvZGUpLiAqL1xuICBAT3V0cHV0KCkgY2hvb3NlRmFjdG9yID0gbmV3IEV2ZW50RW1pdHRlcjwnZW1haWxfY29kZScgfCAnZW1haWxfbGluayc+KCk7XG4gIC8qKiBFbWl0cyBvbiBcIlVzZSB5b3VyIHBhc3N3b3JkIGluc3RlYWRcIiwgZnJvbSBhbiBlbWFpbGVkIGZhY3RvciBhbHJlYWR5IHNlbnQuICovXG4gIEBPdXRwdXQoKSB1c2VQYXNzd29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIE9mZmVyIFwiRW1haWwgbWUgYSBjb2RlIGluc3RlYWRcIiBhdCB0aGUgc2Vjb25kIGZhY3RvciAodGhlIGluc3RhbmNlJ3NcbiAgICogYGFjY291bnQuZW1haWxTZWNvbmRGYWN0b3JgKTsgYGVtYWlsU2Vjb25kRmFjdG9yYCBhc2tzIGZvciBpdCBhbmRcbiAgICogYGVtYWlsZWRTZWNvbmRGYWN0b3JgIHJlcG9ydHMgaG93IGl0IHdlbnQuXG4gICAqL1xuICBASW5wdXQoKSBvZmZlckVtYWlsU2Vjb25kRmFjdG9yID0gZmFsc2U7XG4gIC8qKiBgQXRsYXNGbG93Q29udHJvbGxlci5lbWFpbFNlY29uZEZhY3RvcigpYDogaW4gZmxpZ2h0LCB3aGVyZSBpdCB3ZW50LCBvciB3aHkgbm90LiAqL1xuICBASW5wdXQoKSBlbWFpbGVkU2Vjb25kRmFjdG9yOiB7IGJ1c3k/OiBib29sZWFuOyBzZW50VG8/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIGVtYWlsU2Vjb25kRmFjdG9yID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogT2ZmZXIgXCJUZXh0IG1lIGEgY29kZSBpbnN0ZWFkXCIgYXQgdGhlIHNlY29uZCBmYWN0b3IgKHdoZXJlIHRoZSBhcHAgb2ZmZXJzXG4gICAqIHRleHRlZCBjb2RlcywgYEF0bGFzRmxvd0NvbnRyb2xsZXIubWZhQ2hvaWNlcygpLnNtc2ApOyBgc21zU2Vjb25kRmFjdG9yYFxuICAgKiBhc2tzIGZvciBpdCBhbmQgYHRleHRlZFNlY29uZEZhY3RvcmAgcmVwb3J0cyBob3cgaXQgd2VudC5cbiAgICovXG4gIEBJbnB1dCgpIG9mZmVyU21zU2Vjb25kRmFjdG9yID0gZmFsc2U7XG4gIC8qKiBgQXRsYXNGbG93Q29udHJvbGxlci5zbXNTZWNvbmRGYWN0b3IoKWA6IGluIGZsaWdodCwgd2hlcmUgaXQgd2VudCwgb3Igd2h5IG5vdC4gKi9cbiAgQElucHV0KCkgdGV4dGVkU2Vjb25kRmFjdG9yOiB7IGJ1c3k/OiBib29sZWFuOyBzZW50VG8/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIHNtc1NlY29uZEZhY3RvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIFRoZSBNRkEgZW5yb2xtZW50IHN0ZXAgKGBBdGxhc0Zsb3dDb250cm9sbGVyLmVucm9sbG1lbnRgIGFuZFxuICAgKiBgZW5yb2xsbWVudFN0YXRlKClgKTogdGhlIGF1dGhlbnRpY2F0b3IgYXBwJ3MgUVIgY29kZSBhbmQgc2V0dXAga2V5LCBvciBhXG4gICAqIHRleHRlZCBjb2RlLiBOdWxsOiB0aGUgc3RlcCBhc2tzIGZvciB0d28gYXV0aGVudGljYXRvciBjb2RlcyBvbmx5LlxuICAgKi9cbiAgQElucHV0KCkgZW5yb2xsbWVudDogTWZhRW5yb2xsbWVudENvbnRyb2xsZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZW5yb2xsbWVudFN0YXRlOiBNZmFFbnJvbGxtZW50U3RhdGUgfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSdzIGBhY2NvdW50LmVtYWlsVmVyaWZpY2F0aW9uYC4gT24gYGxpbmtgIGEgc2lnbi11cCdzXG4gICAqIHZlcmlmaWNhdGlvbiBzdGVwIGhhcyBub3RoaW5nIHRvIHR5cGU6IGl0IHNheXMgdG8gb3BlbiB0aGUgZW1haWxlZCBsaW5rXG4gICAqIHdoaWxlIHRoZSBmbG93IHBvbGxzLCBhbmQgb2ZmZXJzIGEgcmVzZW5kIChgcmVzZW5kYCkuXG4gICAqL1xuICBASW5wdXQoKSBlbWFpbFZlcmlmaWNhdGlvbjogc3RyaW5nID0gJ2NvZGUnO1xuICAvKiogYEZsb3dTdGF0ZS5tYXRjaENvZGVgOiBzaG93biB3aGlsZSBhIG1haWxlZCBsaW5rIHdhaXRzLCB0byB0eXBlIGlmIGl0J3Mgb3BlbmVkIG9uIGFub3RoZXIgZGV2aWNlLiAqL1xuICBASW5wdXQoKSBtYXRjaENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgcmVzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKiogVGhlIHVzZXIgZGVjbGluZWQgYSBwb2xpY3kgdGhlIHNpZ24taW4gd2FzIHdhaXRpbmcgb24gKGBuZWVkc19wb2xpY3lfYWNjZXB0YW5jZWApOiBjYW5jZWwgdGhlIGF0dGVtcHQuICovXG4gIEBPdXRwdXQoKSBwb2xpY3lEZWNsaW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHByb3RlY3RlZCB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZywgdmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSwgdmFycyk7XG4gIH1cblxuICAvKiogQSBzZXJ2ZXIgZXJyb3IgaW4gdGhlIGFwcCdzIGxhbmd1YWdlIChgZXJyb3IuPHJlYXNvbj5gLCBlbHNlIHRoZSBzZXJ2ZXIncyBtZXNzYWdlKS4gKi9cbiAgcHJvdGVjdGVkIGVycm9yVGV4dChlcnJvcjogRmllbGRFcnJvcik6IHN0cmluZyB7XG4gICAgLy8gYGVycm9yTG9jYWxpemF0aW9uYCBpcyByZWFkIGRlZmVuc2l2ZWx5OiBhIHN0YW5kLWluIHNlcnZpY2UgbWF5IGxhY2sgaXQuXG4gICAgY29uc3QgbGF5ZXIgPSAodGhpcy5hdGxhcyBhcyB7IGVycm9yTG9jYWxpemF0aW9uPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9KS5lcnJvckxvY2FsaXphdGlvbjtcbiAgICByZXR1cm4gbG9jYWxpemVkRXJyb3JNZXNzYWdlKGVycm9yLCBsYXllciA/PyB0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwgdGhpcy5hdGxhcy5sb2NhbGl6YXRpb24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNscyhrZXk6IEVsZW1lbnRLZXksIGJhc2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNsYXNzRm9yKGtleSwgdGhpcy5hdGxhcy5hcHBlYXJhbmNlLCBiYXNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRWYWx1ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyA9IHsgLi4udGhpcy52YWx1ZXMsIFtuYW1lXTogdmFsdWUgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblN1Ym1pdChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vIEVucm9sbWVudDogdGV4dCB0aGUgY29kZSB0byB0aGUgdHlwZWQgbnVtYmVyLCBvciBjb25maXJtIHRoZSBmYWN0b3IuXG4gICAgaWYgKHRoaXMuZW5yb2xsaW5nKCkgJiYgdGhpcy5lbnJvbGxtZW50KSB7XG4gICAgICB2b2lkIHRoaXMuZW5yb2xsbWVudC5zdWJtaXQodGhpcy52YWx1ZXMpLnRoZW4oKG5leHQpID0+IHtcbiAgICAgICAgaWYgKG5leHQpIHRoaXMuc3VibWl0Rmxvdy5lbWl0KG5leHQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE9ubHkgd2hhdCBpcyBvbiBzY3JlZW46IGEgY29kZSB0eXBlZCBlYXJsaWVyIG11c3Qgbm90IHR1cm4gYSBwYXNzd29yZCBpbnRvIGEgY29kZSBhdHRlbXB0LlxuICAgIGlmICh0aGlzLnN0ZXAoKS5raW5kID09PSAnY29sbGVjdF9maXJzdF9mYWN0b3InKSB7XG4gICAgICB0aGlzLnN1Ym1pdEZsb3cuZW1pdCh0aGlzLnByZXBhcmVkRmFjdG9yID09PSAnZW1haWxfY29kZScgPyB7IGNvZGU6IHRoaXMudmFsdWVzWydjb2RlJ10gPz8gJycgfSA6IHsgcGFzc3dvcmQ6IHRoaXMudmFsdWVzWydwYXNzd29yZCddID8/ICcnIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdEZsb3cuZW1pdCh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICAvKiogVGhlIHNoYXJlZCBlbnJvbG1lbnQgc3RlcCBpcyBkcmF3biAoYSBjb250cm9sbGVyIHdhcyBwYXNzZWQgYW5kIHRoZSBmbG93IGlzIGVucm9sbGluZykuICovXG4gIHByb3RlY3RlZCBlbnJvbGxpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcCgpLmtpbmQgPT09ICdlbnJvbGxfc2Vjb25kX2ZhY3RvcicgJiYgISF0aGlzLmVucm9sbG1lbnQgJiYgISF0aGlzLmVucm9sbG1lbnRTdGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaG9vc2VNZXRob2QobWV0aG9kOiBNZmFFbnJvbGxtZW50U3RyYXRlZ3kpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyA9IHt9O1xuICAgIHZvaWQgdGhpcy5lbnJvbGxtZW50Py5jaG9vc2UobWV0aG9kKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNlbmRFbnJvbGxtZW50KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5lbnJvbGxtZW50Py5yZXNlbmQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcHRpb25LZXkobWV0aG9kOiBNZmFFbnJvbGxtZW50U3RyYXRlZ3kpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnJvbGxtZW50T3B0aW9uS2V5KG1ldGhvZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd01hdGNoQ29kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm1hdGNoQ29kZSAmJiAodGhpcy5zdGVwKCkua2luZCA9PT0gJ2NvbGxlY3RfZW1haWxfY29kZScgfHwgdGhpcy5saW5rU2VudFRleHQoKSAhPT0gbnVsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3RoZXJNZXRob2RzKHN0YXRlOiBNZmFFbnJvbGxtZW50U3RhdGUpOiBNZmFFbnJvbGxtZW50U3RyYXRlZ3lbXSB7XG4gICAgcmV0dXJuIHN0YXRlLm9wdGlvbnMuZmlsdGVyKChtKSA9PiBtICE9PSBzdGF0ZS5tZXRob2QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwS2V5KHNlY3JldDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ3JvdXBTZXR1cEtleShzZWNyZXQpO1xuICB9XG5cbiAgLyoqIFRoZSBzdWJtaXQgYnV0dG9uJ3MgbGFiZWwga2V5IChlbnJvbG1lbnQ6IFwiVGV4dCBtZSBhIGNvZGVcIiBiZWZvcmUgdGhlIG51bWJlciBpcyBzZW50KS4gKi9cbiAgcHJvdGVjdGVkIHN1Ym1pdEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5lbnJvbGxpbmcoKSAmJiB0aGlzLmVucm9sbG1lbnRTdGF0ZSAmJiBlbnJvbGxtZW50U3VibWl0S2V5KHRoaXMuZW5yb2xsbWVudFN0YXRlKSkgfHwgJ3NpZ25Jbi5zdWJtaXQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dTbXNTZWNvbmRGYWN0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub2ZmZXJTbXNTZWNvbmRGYWN0b3IgJiYgdGhpcy5zdGVwKCkua2luZCA9PT0gJ2NvbGxlY3Rfc2Vjb25kX2ZhY3Rvcic7XG4gIH1cblxuICAvKiogV2hlcmUgdGhlIHRleHRlZCBzZWNvbmQtZmFjdG9yIGNvZGUgd2VudCAobWFza2VkKSwgb25jZSBpdCB3YXMgc2VudC4gKi9cbiAgcHJvdGVjdGVkIHNtc1NlY29uZEZhY3RvclNlbnRUbygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzZW50ID0gdGhpcy50ZXh0ZWRTZWNvbmRGYWN0b3I/LnNlbnRUbztcbiAgICByZXR1cm4gdHlwZW9mIHNlbnQgPT09ICdzdHJpbmcnID8gc2VudCB8fCAnICcgOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1FcnJvcnMoKTogRmllbGRFcnJvcltdIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMuZmlsdGVyKChlcnJvcikgPT4gIWVycm9yLnBhcmFtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWVsZEVycm9yc0ZvcihuYW1lOiBzdHJpbmcpOiBGaWVsZEVycm9yW10ge1xuICAgIHJldHVybiB0aGlzLmVycm9ycy5maWx0ZXIoKGVycm9yKSA9PiBlcnJvci5wYXJhbSA9PT0gbmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRlbXB0ID8gbmV4dFN0ZXAodGhpcy5hdHRlbXB0KSA6ICh7IGtpbmQ6ICdjb2xsZWN0X2lkZW50aWZpZXInIH0gYXMgY29uc3QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dDYXB0Y2hhKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnN0ZXAoKS5raW5kO1xuICAgIHJldHVybiAhIXRoaXMuY2FwdGNoYSAmJiAoa2luZCA9PT0gJ2NvbGxlY3RfaWRlbnRpZmllcicgfHwga2luZCA9PT0gJ2NvbGxlY3RfY2FwdGNoYScpO1xuICB9XG5cbiAgLyoqIFRoZSBmaXJzdCBmYWN0b3JzIG9uIG9mZmVyIGF0IGEgYG5lZWRzX2ZpcnN0X2ZhY3RvcmAgc3RlcCAoZW1wdHkgb24gYW55IG90aGVyKS4gKi9cbiAgcHJvdGVjdGVkIG9mZmVyZWQoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnN0ZXAoKTtcbiAgICBpZiAoc3RlcC5raW5kICE9PSAnY29sbGVjdF9maXJzdF9mYWN0b3InKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuZmlyc3RGYWN0b3JzID8/IHN0ZXAuc3RyYXRlZ2llcztcbiAgfVxuXG4gIHByb3RlY3RlZCBsaW5rT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXdhaXRpbmdTaWduVXBMaW5rKHRoaXMuYXR0ZW1wdCwgdGhpcy5lbWFpbFZlcmlmaWNhdGlvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd0VtYWlsU2Vjb25kRmFjdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9mZmVyRW1haWxTZWNvbmRGYWN0b3IgJiYgdGhpcy5zdGVwKCkua2luZCA9PT0gJ2NvbGxlY3Rfc2Vjb25kX2ZhY3Rvcic7XG4gIH1cblxuICAvKiogV2hlcmUgdGhlIGVtYWlsZWQgc2Vjb25kLWZhY3RvciBjb2RlIHdlbnQgKG1hc2tlZCksIG9uY2UgaXQgd2FzIHNlbnQuICovXG4gIHByb3RlY3RlZCBlbWFpbFNlY29uZEZhY3RvclNlbnRUbygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzZW50ID0gdGhpcy5lbWFpbGVkU2Vjb25kRmFjdG9yPy5zZW50VG87XG4gICAgcmV0dXJuIHR5cGVvZiBzZW50ID09PSAnc3RyaW5nJyA/IHNlbnQgfHwgJyAnIDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93RW1haWxDb2RlT3B0aW9uKCk6IGJvb2xlYW4ge1xuICAgIC8vIEJlZm9yZSB0aGUgY29kZSBpcyBzZW50OiB0aGUgY2hvaWNlIChvciB0aGUgcmV0cnkgb2YgYSBmYWlsZWQgYXV0b21hdGljXG4gICAgLy8gc2VuZCkuIEFmdGVyOiBcIlJlc2VuZCBjb2RlXCIuXG4gICAgcmV0dXJuIHRoaXMub2ZmZXJlZCgpLmluY2x1ZGVzKCdlbWFpbF9jb2RlJyk7XG4gIH1cblxuICAvKiogVGhlIFwid2Ugc2VudCBhIGNvZGUgdG8g4oCmXCIgbGluZSBvbiB0aGUgY29kZSBzdGVwLiAqL1xuICBwcm90ZWN0ZWQgY29kZVNlbnRUZXh0KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnN0ZXAoKS5raW5kICE9PSAnY29sbGVjdF9maXJzdF9mYWN0b3InIHx8IHRoaXMucHJlcGFyZWRGYWN0b3IgIT09ICdlbWFpbF9jb2RlJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudCgnc2lnbkluLmNvZGVTZW50VG8nLCB7IGVtYWlsOiB0aGlzLnBhc3N3b3JkSG9sZD8uZW1haWwgPz8gdGhpcy5hdHRlbXB0Py5pZGVudGlmaWVyID8/ICcnIH0pO1xuICB9XG5cbiAgLyoqIFRoZSBcIndlIHNlbnQgYSBsaW5rIHRvIOKAplwiIGxpbmUsIG9uY2UgYSBsaW5rIHdhcyBzZW50LiAqL1xuICBwcm90ZWN0ZWQgbGlua1NlbnRUZXh0KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnN0ZXAoKS5raW5kICE9PSAnY29sbGVjdF9maXJzdF9mYWN0b3InIHx8IHRoaXMucHJlcGFyZWRGYWN0b3IgIT09ICdlbWFpbF9saW5rJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudCgnc2lnbkluLmxpbmtTZW50VG8nLCB7IGVtYWlsOiB0aGlzLnBhc3N3b3JkSG9sZD8uZW1haWwgPz8gdGhpcy5hdHRlbXB0Py5pZGVudGlmaWVyID8/ICcnIH0pO1xuICB9XG5cbiAgLyoqIFRoZSBhdHRlbXB0IGlzIGBuZWVkc19wb2xpY3lfYWNjZXB0YW5jZWAuICovXG4gIHByb3RlY3RlZCBhd2FpdGluZ1BvbGljaWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXAoKS5raW5kID09PSAnYWNjZXB0X3BvbGljaWVzJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93U3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnN0ZXAoKS5raW5kO1xuICAgIC8vIE5vdGhpbmcgdG8gc3VibWl0IG9uIGEgZmlyc3QtZmFjdG9yIHN0ZXAgdGhhdCBvbmx5IG9mZmVycyBhbiBlbWFpbGVkIGNvZGVcbiAgICAvLyB1bnRpbCB0aGF0IGNvZGUgaXMgc2VudC5cbiAgICBpZiAoa2luZCA9PT0gJ2NvbGxlY3RfZmlyc3RfZmFjdG9yJykgcmV0dXJuIHRoaXMuZmllbGRzKCkuc29tZSgoZikgPT4gZi5raW5kID09PSAnaW5wdXQnKTtcbiAgICBpZiAodGhpcy5saW5rT25seSgpKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gRW5yb2xtZW50OiBub3RoaW5nIHRvIHN1Ym1pdCB3aGlsZSBjaG9vc2luZyBhIG1ldGhvZCBvciBmZXRjaGluZyB0aGUgc2V0dXAuXG4gICAgaWYgKHRoaXMuZW5yb2xsaW5nKCkgJiYgdGhpcy5lbnJvbGxtZW50U3RhdGUgJiYgIWVucm9sbG1lbnRTdWJtaXRLZXkodGhpcy5lbnJvbGxtZW50U3RhdGUpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGtpbmQgIT09ICdkb25lJyAmJiBraW5kICE9PSAnYXdhaXRfb2F1dGgnICYmIGtpbmQgIT09ICdhY2NlcHRfcG9saWNpZXMnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpZWxkcygpOiBTdGVwRmllbGRbXSB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuc3RlcCgpO1xuICAgIHN3aXRjaCAoc3RlcC5raW5kKSB7XG4gICAgICBjYXNlICdjb2xsZWN0X2lkZW50aWZpZXInOlxuICAgICAgICAvLyBgd2ViYXV0aG5gOiBzYXZlZCBwYXNza2V5cyBhcHBlYXIgaW4gdGhpcyBmaWVsZCdzIGF1dG9maWxsIHdoaWxlIDxhdGxhcy1zaWduLWluPiBob2xkcyBhIGNvbmRpdGlvbmFsIHJlcXVlc3QuXG4gICAgICAgIHJldHVybiBbeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAnaWRlbnRpZmllcicsIGxhYmVsS2V5OiAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCcsIHR5cGU6ICdlbWFpbCcsIGF1dG9jb21wbGV0ZTogJ3VzZXJuYW1lIHdlYmF1dGhuJyB9XTtcbiAgICAgIGNhc2UgJ2NvbGxlY3RfZmlyc3RfZmFjdG9yJzoge1xuICAgICAgICBpZiAodGhpcy5wcmVwYXJlZEZhY3RvciA9PT0gJ2VtYWlsX2NvZGUnKSB7XG4gICAgICAgICAgcmV0dXJuIFt7IGtpbmQ6ICdpbnB1dCcsIG5hbWU6ICdjb2RlJywgbGFiZWxLZXk6ICdzaWduSW4uZW1haWxDb2RlTGFiZWwnLCB0eXBlOiAndGV4dCcgfV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9saW5rJykgcmV0dXJuIFtdO1xuICAgICAgICAvLyBUaGUgcGFzc3dvcmQgZmllbGQgdW5sZXNzIHRoZSBvbmx5IG9mZmVyIGlzIGFuIGVtYWlsZWQgY29kZSAoY2hvc2VuXG4gICAgICAgIC8vIHdpdGggdGhlIGJ1dHRvbiBiZWxvdyB0aGUgZm9ybSkuXG4gICAgICAgIGNvbnN0IG9mZmVyZWQgPSB0aGlzLm9mZmVyZWQoKTtcbiAgICAgICAgcmV0dXJuIG9mZmVyZWQuaW5jbHVkZXMoJ2VtYWlsX2NvZGUnKSAmJiAhb2ZmZXJlZC5pbmNsdWRlcygncGFzc3dvcmQnKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgLi4uKHRoaXMucGFzc3dvcmRIb2xkPy5yZWxlYXNlZCA/IFtyZWxlYXNlZCgpXSA6IFtdKSxcbiAgICAgICAgICAgICAgeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAncGFzc3dvcmQnLCBsYWJlbEtleTogJ3NpZ25Jbi5wYXNzd29yZExhYmVsJywgdHlwZTogJ3Bhc3N3b3JkJyB9LFxuICAgICAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbGxlY3Rfc2Vjb25kX2ZhY3Rvcic6XG4gICAgICAgIHJldHVybiBbeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAnY29kZScsIGxhYmVsS2V5OiAnbWZhLmNvZGVMYWJlbCcsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICAgIGNhc2UgJ2Vucm9sbF9zZWNvbmRfZmFjdG9yJzpcbiAgICAgICAgLy8gVGhlIHNoYXJlZCBlbnJvbG1lbnQgc3RlcCBkcmF3cyBpdHMgb3duIGZpZWxkcyAoYWJvdmUpLlxuICAgICAgICBpZiAodGhpcy5lbnJvbGxpbmcoKSkgcmV0dXJuIFtdO1xuICAgICAgICAvLyBUd28gY29uc2VjdXRpdmUgY29kZXMgKMKnNS42KTogYSBwaG9uZSB3aXRoIGEgZmFzdCBjbG9jayBmYWlscyBoZXJlXG4gICAgICAgIC8vIHJhdGhlciB0aGFuIG9uIGV2ZXJ5IHNpZ24taW4gYWZ0ZXJ3YXJkcy5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7IGtpbmQ6ICdpbnB1dCcsIG5hbWU6ICdjb2RlJywgbGFiZWxLZXk6ICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnLCB0eXBlOiAndGV4dCcgfSxcbiAgICAgICAgICB7IGtpbmQ6ICdpbnB1dCcsIG5hbWU6ICdzZWNvbmRDb2RlJywgbGFiZWxLZXk6ICdtZmEuZW5yb2xsU2Vjb25kQ29kZUxhYmVsJywgdHlwZTogJ3RleHQnIH0sXG4gICAgICAgIF07XG4gICAgICBjYXNlICdjb2xsZWN0X2VtYWlsX2NvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5saW5rT25seSgpID8gW10gOiBbeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAnY29kZScsIGxhYmVsS2V5OiAnc2lnbkluLmVtYWlsQ29kZUxhYmVsJywgdHlwZTogJ3RleHQnIH1dO1xuICAgICAgY2FzZSAnY29sbGVjdF9uZXdfcGFzc3dvcmQnOlxuICAgICAgICByZXR1cm4gW3sga2luZDogJ2lucHV0JywgbmFtZTogJ3Bhc3N3b3JkJywgbGFiZWxLZXk6ICdyZXNldC5uZXdQYXNzd29yZExhYmVsJywgdHlwZTogJ3Bhc3N3b3JkJyB9XTtcbiAgICAgIGNhc2UgJ2FjY2VwdF9wb2xpY2llcyc6XG4gICAgICAgIC8vIERyYXduIGJ5IDxhdGxhcy1wb2xpY3ktYWNjZXB0LXN0ZXA+IGFib3ZlLlxuICAgICAgICByZXR1cm4gW107XG4gICAgICBjYXNlICdjb2xsZWN0X2NhcHRjaGEnOlxuICAgICAgICAvLyDCpzUgdGhlIHNlcnZlciB3aXRoaGVsZCB0aGUgYXR0ZW1wdCB1bnRpbCBhIGNhcHRjaGEgY2xlYXJzLiBTb2x2aW5nIHRoZVxuICAgICAgICAvLyB3aWRnZXQgcmVzdWJtaXRzIHRoZSBpZGVudGlmaWVyIG9uIGl0cyBvd247IHRoZSBidXR0b24gcmV0cmllcy5cbiAgICAgICAgcmV0dXJuIFttc2coJ2NhcHRjaGEucHJvbXB0JyldO1xuICAgICAgY2FzZSAnYXdhaXRfb2F1dGgnOlxuICAgICAgICByZXR1cm4gW21zZygnc2lnbkluLm1hZ2ljTGlua1NlbnQnKV07XG4gICAgICBjYXNlICdkb25lJzpcbiAgICAgICAgLy8gU2lnbmVkIGluIG9ubHkgd2hlbiB0aGlzIGJyb3dzZXIgaG9sZHMgdGhlIHNlc3Npb247IGEgYmxvY2tlZCBjb29raWUgaXMgc2FpZFxuICAgICAgICAvLyBwbGFpbmx5LiBcIkNoZWNrIHRoZSBvdGhlciB0YWJcIiBpcyBmb3IgYSBzaWduLWluIGNvbXBsZXRlZCBvbiBhbm90aGVyIGRldmljZS5cbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbktlcHQgPT09IHRydWUpIHJldHVybiBbbXNnKCdzaWduSW4uc2lnbmVkSW4nKV07XG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25LZXB0ID09PSBmYWxzZSkgcmV0dXJuIFt7IGtpbmQ6ICdhbGVydCcsIG5hbWU6ICcnLCBsYWJlbEtleTogJ3NpZ25Jbi5zZXNzaW9uTm90S2VwdCcsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICAgICAgcmV0dXJuIFttc2coJ3NpZ25Jbi5jaGVja090aGVyVGFiJyldO1xuICAgICAgY2FzZSAncmVzdGFydCc6XG4gICAgICAgIHJldHVybiBbbXNnKCdlcnJvci5nZW5lcmljJyldO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQSBzdGF0dXMgdGhpcyBTREsgdmVyc2lvbiBkb2VzIG5vdCBrbm93LiBBbiBob25lc3QgbWVzc2FnZSBiZWF0cyBhXG4gICAgICAgIC8vIGJsYW5rIGxvZ2luIGJveCB0aGUgdXNlciBjYW5ub3QgYWN0IG9uLlxuICAgICAgICByZXR1cm4gW21zZygnZXJyb3IuZ2VuZXJpYycpXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEEgcmVhZC1vbmx5IG1lc3NhZ2Ugcm93OiBgbGFiZWxLZXlgIGhvbGRzIHRoZSBpMThuIGtleSBvZiB0aGUgdGV4dCB0byBzaG93LiAqL1xuZnVuY3Rpb24gbXNnKGxhYmVsS2V5OiBzdHJpbmcpOiBTdGVwRmllbGQge1xuICByZXR1cm4geyBraW5kOiAnbWVzc2FnZScsIG5hbWU6ICcnLCBsYWJlbEtleSwgdHlwZTogJ3RleHQnIH07XG59XG5cbmZ1bmN0aW9uIHJlbGVhc2VkKCk6IFN0ZXBGaWVsZCB7XG4gIHJldHVybiB7IGtpbmQ6ICdyZWxlYXNlZCcsIG5hbWU6ICcnLCBsYWJlbEtleTogJ3NpZ25Jbi5wYXNzd29yZEhvbGRSZWxlYXNlZCcsIHR5cGU6ICd0ZXh0JyB9O1xufVxuIl19
|
|
884
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZW1wdC1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdHRlbXB0LWZsb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixRQUFRLEdBUVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQWdCcEM7Ozs7Ozs7OztHQVNHO0FBOFFILE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXJDLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0lBQ25DLElBQUksR0FBRyxLQUFLLENBQUM7SUFDYixNQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUNuQywwRkFBMEY7SUFDakYsV0FBVyxHQUF3QixTQUFTLENBQUM7SUFDN0MsUUFBUSxHQUFHLGNBQWMsQ0FBQztJQUNuQyxrR0FBa0c7SUFDekYsVUFBVSxHQUFrQixJQUFJLENBQUM7SUFDMUM7Ozs7T0FJRztJQUNNLE9BQU8sR0FBNkIsSUFBSSxDQUFDO0lBQ2xEOzs7O09BSUc7SUFDTSxZQUFZLEdBQW9CLElBQUksQ0FBQztJQUM5QyxxR0FBcUc7SUFDNUYsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFDOUMsNkZBQTZGO0lBQ3BGLFlBQVksR0FBOEIsSUFBSSxDQUFDO0lBQ3hELDJGQUEyRjtJQUNsRixTQUFTLEdBQXVDLElBQUksQ0FBQztJQUU5RCxtRUFBbUU7SUFDekQsVUFBVSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO0lBQ2xFLDZGQUE2RjtJQUNuRixZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7SUFDekUsaUZBQWlGO0lBQ3ZFLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2pEOzs7O09BSUc7SUFDTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDeEMsdUZBQXVGO0lBQzlFLG1CQUFtQixHQUErRCxJQUFJLENBQUM7SUFDdEYsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN2RDs7OztPQUlHO0lBQ00sb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLHFGQUFxRjtJQUM1RSxrQkFBa0IsR0FBK0QsSUFBSSxDQUFDO0lBQ3JGLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3JEOzs7O09BSUc7SUFDTSxVQUFVLEdBQW1DLElBQUksQ0FBQztJQUNsRCxlQUFlLEdBQThCLElBQUksQ0FBQztJQUMzRDs7OztPQUlHO0lBQ00saUJBQWlCLEdBQVcsTUFBTSxDQUFDO0lBQzVDLHdHQUF3RztJQUMvRixTQUFTLEdBQWtCLElBQUksQ0FBQztJQUMvQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUM1Qyw2R0FBNkc7SUFDbkcsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFNUMsTUFBTSxHQUEyQixFQUFFLENBQUM7SUFFcEMsQ0FBQyxDQUFDLEdBQVcsRUFBRSxJQUE2QjtRQUNwRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELDBGQUEwRjtJQUNoRixTQUFTLENBQUMsS0FBaUI7UUFDbkMsMkVBQTJFO1FBQzNFLE1BQU0sS0FBSyxHQUFJLElBQUksQ0FBQyxLQUF3RCxDQUFDLGlCQUFpQixDQUFDO1FBQy9GLE9BQU8scUJBQXFCLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFUyxHQUFHLENBQUMsR0FBZSxFQUFFLElBQVk7UUFDekMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUyxRQUFRLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFUyxRQUFRLENBQUMsS0FBWTtRQUM3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsdUVBQXVFO1FBQ3ZFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDckQsSUFBSSxJQUFJO29CQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCw2RkFBNkY7UUFDN0YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLHNCQUFzQixFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvSSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsOEZBQThGO0lBQ3BGLFNBQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3BHLENBQUM7SUFFUyxZQUFZLENBQUMsTUFBNkI7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsZ0JBQWdCO1FBQ3hCLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRVMsU0FBUyxDQUFDLE1BQTZCO1FBQy9DLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVTLGFBQWE7UUFDckIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFUyxZQUFZLENBQUMsS0FBeUI7UUFDOUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRVMsUUFBUSxDQUFDLE1BQWM7UUFDL0IsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDZGQUE2RjtJQUNuRixTQUFTO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxlQUFlLENBQUM7SUFDcEgsQ0FBQztJQUVTLG1CQUFtQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLHVCQUF1QixDQUFDO0lBQ25GLENBQUM7SUFFRCwyRUFBMkU7SUFDakUscUJBQXFCO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUM7UUFDN0MsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRVMsVUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsVUFBVSxDQUFDLEtBQWlCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxvQkFBb0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvSixDQUFDO0lBRVMsY0FBYyxDQUFDLElBQVk7UUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRVMsSUFBSTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQVksQ0FBQztJQUMzRixDQUFDO0lBRVMsV0FBVztRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssb0JBQW9CLElBQUksSUFBSSxLQUFLLGlCQUFpQixDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELHNGQUFzRjtJQUM1RSxPQUFPO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxzQkFBc0I7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRVMsUUFBUTtRQUNoQixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVTLHFCQUFxQjtRQUM3QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLHVCQUF1QixDQUFDO0lBQ3JGLENBQUM7SUFFRCw0RUFBNEU7SUFDbEUsdUJBQXVCO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUM7UUFDOUMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLDBFQUEwRTtRQUMxRSwrQkFBK0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCx1REFBdUQ7SUFDN0MsWUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssc0JBQXNCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELDREQUE0RDtJQUNsRCxZQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNyRyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsZ0RBQWdEO0lBQ3RDLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUM7SUFDaEQsQ0FBQztJQUVTLFVBQVU7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQztRQUM5Qiw0RUFBNEU7UUFDNUUsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxLQUFLLHNCQUFzQjtZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztRQUMxRixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNsQyw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN6RyxPQUFPLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLEtBQUssaUJBQWlCLENBQUM7SUFDakYsQ0FBQztJQUVTLE1BQU07UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxvQkFBb0I7Z0JBQ3ZCLGdIQUFnSDtnQkFDaEgsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDdkksS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDNUYsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWTtvQkFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDcEQsc0VBQXNFO2dCQUN0RSxtQ0FBbUM7Z0JBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7b0JBQ3BFLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQzt3QkFDRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNwRCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtxQkFDeEYsQ0FBQztZQUNSLENBQUM7WUFDRCxLQUFLLHVCQUF1QjtnQkFDMUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEYsS0FBSyxzQkFBc0I7Z0JBQ3pCLDBEQUEwRDtnQkFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxxRUFBcUU7Z0JBQ3JFLDJDQUEyQztnQkFDM0MsT0FBTztvQkFDTCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtvQkFDbkYsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7aUJBQzNGLENBQUM7WUFDSixLQUFLLG9CQUFvQjtnQkFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbkgsS0FBSyxzQkFBc0I7Z0JBQ3pCLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDckcsS0FBSyxpQkFBaUI7Z0JBQ3BCLDZDQUE2QztnQkFDN0MsT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLGlCQUFpQjtnQkFDcEIseUVBQXlFO2dCQUN6RSxrRUFBa0U7Z0JBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssYUFBYTtnQkFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDdkMsS0FBSyxNQUFNO2dCQUNULCtFQUErRTtnQkFDL0UsK0VBQStFO2dCQUMvRSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSTtvQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDdEgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDdkMsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUNoQztnQkFDRSxxRUFBcUU7Z0JBQ3JFLDBDQUEwQztnQkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO3dHQWxTVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix5M0JBeFFyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNRVCw0REF2UVMseUJBQXlCLDZGQUFFLHlCQUF5Qjs7NEZBeVFuRCxvQkFBb0I7a0JBN1FoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUseUJBQXlCLENBQUM7b0JBQy9ELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNRVDtpQkFDRjs4QkFJVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFHSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFNRSxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFNRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBTUUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNOztBQThOVCxrRkFBa0Y7QUFDbEYsU0FBUyxHQUFHLENBQUMsUUFBZ0I7SUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFTLFFBQVE7SUFDZixPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDL0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGF3YWl0aW5nU2lnblVwTGluayxcbiAgZW5yb2xsbWVudE9wdGlvbktleSxcbiAgZW5yb2xsbWVudFN1Ym1pdEtleSxcbiAgZ3JvdXBTZXR1cEtleSxcbiAgbG9jYWxpemVkRXJyb3JNZXNzYWdlLFxuICBuZXh0U3RlcCxcbiAgdHlwZSBBdHRlbXB0VmlldyxcbiAgdHlwZSBDYXB0Y2hhQ29udHJvbGxlcixcbiAgdHlwZSBGaWVsZEVycm9yLFxuICB0eXBlIEZsb3dTdGF0ZSxcbiAgdHlwZSBNZmFFbnJvbGxtZW50Q29udHJvbGxlcixcbiAgdHlwZSBNZmFFbnJvbGxtZW50U3RhdGUsXG4gIHR5cGUgTWZhRW5yb2xsbWVudFN0cmF0ZWd5LFxufSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEF0bGFzU2VydmljZSB9IGZyb20gJy4uL2F0bGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXRsYXNDYXB0Y2hhU2xvdERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY2FwdGNoYS1zbG90LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb2xpY3lBY2NlcHRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9wb2xpY3ktaG9zdCc7XG5pbXBvcnQgeyBjbGFzc0ZvciwgdHlwZSBFbGVtZW50S2V5IH0gZnJvbSAnLi4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICcuLi9pMThuJztcblxuLyoqXG4gKiBPbmUgcmVuZGVyZWQgcm93IG9mIHRoZSBmbG93LiBBIHVuaWZvcm0gc2hhcGUgKHJhdGhlciB0aGFuIGEgZGlzY3JpbWluYXRlZFxuICogdW5pb24pIHNvIHRoZSB0ZW1wbGF0ZSBhY2Nlc3NlcyBvbmx5IGZpZWxkcyB0aGF0IGFsd2F5cyBleGlzdCDigJQgbm8gcmVsaWFuY2Ugb25cbiAqIHRlbXBsYXRlIGNvbnRyb2wtZmxvdyBuYXJyb3dpbmcgb2YgYSBsb29wIHZhcmlhYmxlLCB3aGljaCB2YXJpZXMgYnkgQW5ndWxhclxuICogbWlub3IuIEZvciBhIGBtZXNzYWdlYCByb3csIGBsYWJlbEtleWAgY2FycmllcyB0aGUgbWVzc2FnZSdzIGkxOG4ga2V5LlxuICovXG5pbnRlcmZhY2UgU3RlcEZpZWxkIHtcbiAga2luZDogJ2lucHV0JyB8ICdtZXNzYWdlJyB8ICdhbGVydCcgfCAncmVsZWFzZWQnO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsS2V5OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgYXV0b2NvbXBsZXRlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBzZXJ2ZXItZHJpdmVuIGZsb3cgc2hlbGwsIHNoYXJlZCBieSBgPGF0bGFzLXNpZ24taW4+YCBhbmRcbiAqIGA8YXRsYXMtc2lnbi11cD5gLiBUaGUgQW5ndWxhciBwZWVyIG9mIFJlYWN0J3MgaW50ZXJuYWwgYEF0dGVtcHRGbG93YC5cbiAqXG4gKiBJdCBjb250YWlucyBOTyBkZWNpc2lvbiBhYm91dCB3aGF0IGNvbWVzIG5leHQ6IGl0IHJlbmRlcnMgd2hhdGV2ZXIgYHN0YXR1c2BcbiAqIHRoZSBzZXJ2ZXIgcmV0dXJuZWQsIG1hcHBlZCB0aHJvdWdoIGBuZXh0U3RlcGAgZnJvbSBgQGF0bGFzYXV0aC9qc2AgKHRoZSBzYW1lXG4gKiBleGhhdXN0aXZlIG1hcHBpbmcgdGhlIFJlYWN0IFNESyB1c2VzKSwgc28gYWRkaW5nIGEgc3RlcCBpcyBhIHNlcnZlciBjaGFuZ2VcbiAqIGFuZCBhbiBvdXQtb2YtZGF0ZSBjbGllbnQgZGVncmFkZXMgdG8gYSB2aXNpYmxlIFwicGxlYXNlIHVwZGF0ZVwiIG1lc3NhZ2UgcmF0aGVyXG4gKiB0aGFuIGEgYmxhbmsgc2NyZWVuLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdGxhcy1hdHRlbXB0LWZsb3cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0F0bGFzQ2FwdGNoYVNsb3REaXJlY3RpdmUsIFBvbGljeUFjY2VwdFN0ZXBDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNscygnY2FyZCcsICdhdGxhcy1jYXJkJylcIj5cbiAgICAgIDxoMSBbY2xhc3NdPVwiY2xzKCdoZWFkZXJUaXRsZScsICdhdGxhcy10aXRsZScpXCI+e3sgdCh0aXRsZUtleSkgfX08L2gxPlxuXG4gICAgICBAZm9yIChlcnJvciBvZiBmb3JtRXJyb3JzKCk7IHRyYWNrIGVycm9yLmNvZGUpIHtcbiAgICAgICAgPHAgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkRXJyb3InLCAnYXRsYXMtZXJyb3InKVwiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICAgIHt7IGVycm9yVGV4dChlcnJvcikgfX1cbiAgICAgICAgICBAaWYgKHNpZ25JbkxpbmsoZXJyb3IpOyBhcyBocmVmKSB7XG4gICAgICAgICAgICA8YSBjbGFzcz1cImF0bGFzLWxpbmtcIiBbaHJlZl09XCJocmVmXCI+e3sgdCgnc2lnbkluLnRpdGxlJykgfX08L2E+XG4gICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICB9XG5cbiAgICAgIDxmb3JtIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICAgICAgICBAaWYgKGNvZGVTZW50VGV4dCgpOyBhcyBzZW50VGV4dCkge1xuICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXMtY29kZS1zZW50PVwiXCI+e3sgc2VudFRleHQgfX08L3A+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChsaW5rU2VudFRleHQoKTsgYXMgc2VudExpbmspIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIiBkYXRhLWF0bGFzLWxpbmstc2VudD1cIlwiPnt7IHNlbnRMaW5rIH19PC9wPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobGlua09ubHkoKSkge1xuICAgICAgICAgIDwhLS0gTm90aGluZyB0byB0eXBlOiB0aGUgZmxvdyBwb2xscyB1bnRpbCB0aGUgZW1haWxlZCBsaW5rIGlzIG9wZW5lZCAoYW55d2hlcmUpLiAtLT5cbiAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIiBkYXRhLWF0bGFzLWxpbmstc2VudD1cIlwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge3sgdCgnc2lnblVwLmxpbmtTZW50VG8nLCB7IGVtYWlsOiBhdHRlbXB0Py5pZGVudGlmaWVyID8/ICcnIH0pIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25TZWNvbmRhcnknLCAnYXRsYXMtYnV0dG9uLXNlY29uZGFyeScpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1hdGxhcy1yZXNlbmQ9XCJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3lcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2VuZC5lbWl0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHQoJ3NpZ25Jbi5yZXNlbmRMaW5rJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3dNYXRjaENvZGUoKSkge1xuICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXM9XCJsaW5rLW1hdGNoLWNvZGVcIj57eyB0KCdsaW5rLm1hdGNoQ29kZUhpbnQnKSB9fSA8c3Ryb25nPjxjb2RlPnt7IG1hdGNoQ29kZSB9fTwvY29kZT48L3N0cm9uZz48L3A+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChlbnJvbGxpbmcoKSAmJiBlbnJvbGxtZW50U3RhdGU7IGFzIGVucm9sKSB7XG4gICAgICAgICAgQGlmIChlbnJvbC5tZXRob2QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiPnt7IHQoJ21mYS5lbnJvbGxDaG9vc2UnKSB9fTwvcD5cbiAgICAgICAgICAgIEBmb3IgKG0gb2YgZW5yb2wub3B0aW9uczsgdHJhY2sgbSkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXRsYXMtbWZhLW1ldGhvZF09XCJtXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSB8fCBlbnJvbC5idXN5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlTWV0aG9kKG0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQob3B0aW9uS2V5KG0pKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIGlmIChlbnJvbC5tZXRob2QgPT09ICd5dWJpa2V5Jykge1xuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXRsYXMtZmllbGRcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnbWZhLnl1YmlrZXlMYWJlbCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkSW5wdXQnLCAnYXRsYXMtaW5wdXQnKVwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm90cFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFt2YWx1ZV09XCJ2YWx1ZXNbJ290cCddID8/ICcnXCIgKGlucHV0KT1cInNldFZhbHVlKCdvdHAnLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGZpZWxkRXJyb3JzRm9yKCdvdHAnKTsgdHJhY2sgZXJyb3IuY29kZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZEVycm9yJywgJ2F0bGFzLWVycm9yJylcIj57eyBlcnJvclRleHQoZXJyb3IpIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGVucm9sLm1ldGhvZCA9PT0gJ2R1bycgfHwgZW5yb2wubWV0aG9kID09PSAncGFzc2tleScpIHtcbiAgICAgICAgICAgIEBpZiAoZW5yb2wuZW5yb2xsbWVudDsgYXMgc2V0dXApIHtcbiAgICAgICAgICAgICAgQGlmIChlbnJvbC5tZXRob2QgPT09ICdwYXNza2V5Jykge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiPnt7IHQoJ21mYS5lbnJvbGxQYXNza2V5SGVscCcpIH19PC9wPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdtZmEuZW5yb2xsRHVvSGVscCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIEBpZiAoc2V0dXAuYXV0aG9yaXphdGlvblVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgZGF0YS1hdGxhcz1cIm1mYS1kdW8tb3BlblwiIFtocmVmXT1cInNldHVwLmF1dGhvcml6YXRpb25VcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+e3sgdCgnbWZhLmVucm9sbER1b09wZW4nKSB9fTwvYT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj57eyBlbnJvbC5idXN5ID8gdCgnbWZhLmVucm9sbFByZXBhcmluZycpIDogJycgfX08L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBAZWxzZSBpZiAoZW5yb2wubWV0aG9kID09PSAndG90cCcgfHwgZW5yb2wubWV0aG9kID09PSAnaG90cCcpIHtcbiAgICAgICAgICAgIEBpZiAoZW5yb2wuZW5yb2xsbWVudDsgYXMgc2V0dXApIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnbWZhLmVucm9sbFNjYW4nKSB9fTwvcD5cbiAgICAgICAgICAgICAgQGlmIChzZXR1cC5xckNvZGUpIHtcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXRsYXMtbWZhLXFyXCIgZGF0YS1hdGxhcz1cIm1mYS1xclwiIFtzcmNdPVwic2V0dXAucXJDb2RlXCIgW2FsdF09XCJ0KCdtZmEuZW5yb2xsUXJBbHQnKVwiIHdpZHRoPVwiMTgwXCIgaGVpZ2h0PVwiMTgwXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHNldHVwLnNlY3JldCkge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXM9XCJtZmEtc2V0dXAta2V5XCI+e3sgdCgnbWZhLmVucm9sbFNldHVwS2V5JykgfX06IDxjb2RlPnt7IHNldHVwS2V5KHNldHVwLnNlY3JldCkgfX08L2NvZGU+PC9wPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF0bGFzLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnbWZhLmVucm9sbEZpcnN0Q29kZUxhYmVsJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0IFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZElucHV0JywgJ2F0bGFzLWlucHV0JylcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJjb2RlXCIgYXV0b2NvbXBsZXRlPVwib25lLXRpbWUtY29kZVwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBbdmFsdWVdPVwidmFsdWVzWydjb2RlJ10gPz8gJydcIiAoaW5wdXQpPVwic2V0VmFsdWUoJ2NvZGUnLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIEBpZiAoZW5yb2wubWV0aG9kID09PSAndG90cCcgJiYgZW5yb2wudG90cENvZGVzID49IDIpIHtcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhdGxhcy1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnbWZhLmVucm9sbFNlY29uZENvZGVMYWJlbCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZElucHV0JywgJ2F0bGFzLWlucHV0JylcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJzZWNvbmRDb2RlXCIgYXV0b2NvbXBsZXRlPVwib25lLXRpbWUtY29kZVwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBbdmFsdWVdPVwidmFsdWVzWydzZWNvbmRDb2RlJ10gPz8gJydcIiAoaW5wdXQpPVwic2V0VmFsdWUoJ3NlY29uZENvZGUnLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IGVucm9sLmJ1c3kgPyB0KCdtZmEuZW5yb2xsUHJlcGFyaW5nJykgOiAnJyB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoZW5yb2wuZW5yb2xsbWVudDsgYXMgdGV4dGVkKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXM9XCJtZmEtY29kZS10ZXh0ZWRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj57eyB0KCdtZmEuY29kZVRleHRlZFRvJywgeyBwaG9uZTogdGV4dGVkLnBob25lID8/ICcnIH0pIH19PC9wPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhdGxhcy1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ21mYS5jb2RlTGFiZWwnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkSW5wdXQnLCAnYXRsYXMtaW5wdXQnKVwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNvZGVcIiBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIFt2YWx1ZV09XCJ2YWx1ZXNbJ2NvZGUnXSA/PyAnJ1wiIChpbnB1dCk9XCJzZXRWYWx1ZSgnY29kZScsICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25TZWNvbmRhcnknLCAnYXRsYXMtYnV0dG9uLXNlY29uZGFyeScpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBkYXRhLWF0bGFzLXJlc2VuZD1cIlwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3kgfHwgZW5yb2wuYnVzeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2VuZEVucm9sbG1lbnQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0KCdzaWduSW4ucmVzZW5kQ29kZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImF0bGFzLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnbWZhLnBob25lTGFiZWwnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkSW5wdXQnLCAnYXRsYXMtaW5wdXQnKVwiIHR5cGU9XCJ0ZWxcIiBuYW1lPVwicGhvbmVcIiBhdXRvY29tcGxldGU9XCJ0ZWxcIiBbdmFsdWVdPVwidmFsdWVzWydwaG9uZSddID8/ICcnXCIgKGlucHV0KT1cInNldFZhbHVlKCdwaG9uZScsICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnbWZhLnBob25lSGludCcpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChlcnJvciBvZiBlbnJvbC5lcnJvcnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHAgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkRXJyb3InLCAnYXRsYXMtZXJyb3InKVwiIHJvbGU9XCJhbGVydFwiPnt7IGVycm9yLm1lc3NhZ2UgfX08L3A+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoZW5yb2wubWV0aG9kICE9PSBudWxsICYmIGVucm9sLm9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgQGZvciAob3RoZXIgb2Ygb3RoZXJNZXRob2RzKGVucm9sKTsgdHJhY2sgb3RoZXIpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25TZWNvbmRhcnknLCAnYXRsYXMtYnV0dG9uLXNlY29uZGFyeScpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF0bGFzLW1mYS1tZXRob2RdPVwib3RoZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5IHx8IGVucm9sLmJ1c3lcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaG9vc2VNZXRob2Qob3RoZXIpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQob3B0aW9uS2V5KG90aGVyKSkgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGYgb2YgZmllbGRzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIEBpZiAoZi5raW5kID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhdGxhcy1maWVsZFwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KGYubGFiZWxLZXkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRJbnB1dCcsICdhdGxhcy1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJmLnR5cGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiZi5uYW1lXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiZi5hdXRvY29tcGxldGUgPz8gbnVsbFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlc1tmLm5hbWVdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwic2V0VmFsdWUoZi5uYW1lLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGZpZWxkRXJyb3JzRm9yKGYubmFtZSk7IHRyYWNrIGVycm9yLmNvZGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCI+e3sgZXJyb3JUZXh0KGVycm9yKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICB9IEBlbHNlIGlmIChmLmtpbmQgPT09ICdyZWxlYXNlZCcpIHtcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIGRhdGEtYXRsYXMtcGFzc3dvcmQtcmVsZWFzZWQ9XCJcIj57eyB0KGYubGFiZWxLZXkpIH19PC9wPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGYua2luZCA9PT0gJ2FsZXJ0Jykge1xuICAgICAgICAgICAgPHAgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkRXJyb3InLCAnYXRsYXMtZXJyb3InKVwiIHJvbGU9XCJhbGVydFwiPnt7IHQoZi5sYWJlbEtleSkgfX08L3A+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8cD57eyB0KGYubGFiZWxLZXkpIH19PC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoYXdhaXRpbmdQb2xpY2llcygpKSB7XG4gICAgICAgICAgPCEtLSBBIHJlcXVpcmVkIHBvbGljeSBjaGFuZ2VkOiBzY3JvbGwtbW9kZSBvbmVzIGluIHRoZWlyIGRpYWxvZywgdGhlIHJlc3QgYXMgY2hlY2tib3hlcy4gLS0+XG4gICAgICAgICAgPGF0bGFzLXBvbGljeS1hY2NlcHQtc3RlcFxuICAgICAgICAgICAgW2F0dGVtcHRdPVwiYXR0ZW1wdFwiXG4gICAgICAgICAgICBbYnVzeV09XCJidXN5XCJcbiAgICAgICAgICAgIChzdWJtaXRGbG93KT1cInN1Ym1pdEZsb3cuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChkZWNsaW5lZCk9XCJwb2xpY3lEZWNsaW5lZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgID48L2F0bGFzLXBvbGljeS1hY2NlcHQtc3RlcD5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc2hvd0NhcHRjaGEoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdGxhcy1jYXB0Y2hhXCIgZGF0YS1hdGxhcy1jYXB0Y2hhPVwiXCIgW2F0bGFzQ2FwdGNoYVNsb3RdPVwiY2FwdGNoYVwiPjwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaG93U3VibWl0KCkpIHtcbiAgICAgICAgICA8YnV0dG9uIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25QcmltYXJ5JywgJ2F0bGFzLWJ1dHRvbicpXCIgW2Rpc2FibGVkXT1cImJ1c3kgfHwgKGVucm9sbGluZygpICYmICEhZW5yb2xsbWVudFN0YXRlPy5idXN5KVwiIHR5cGU9XCJzdWJtaXRcIj5cbiAgICAgICAgICAgIHt7IHQoc3VibWl0S2V5KCkpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHNob3dTbXNTZWNvbmRGYWN0b3IoKSkge1xuICAgICAgICAgIEBpZiAoc21zU2Vjb25kRmFjdG9yU2VudFRvKCk7IGFzIHNlbnRUbykge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcz1cInNtcy1zZWNvbmQtZmFjdG9yLXNlbnRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAge3sgdCgnbWZhLmNvZGVUZXh0ZWRUbycsIHsgcGhvbmU6IHNlbnRUbyB9KSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uU2Vjb25kYXJ5JywgJ2F0bGFzLWJ1dHRvbi1zZWNvbmRhcnknKVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBkYXRhLWF0bGFzPVwic21zLXNlY29uZC1mYWN0b3JcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSB8fCAhIXRleHRlZFNlY29uZEZhY3Rvcj8uYnVzeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzbXNTZWNvbmRGYWN0b3IuZW1pdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGV4dGVkU2Vjb25kRmFjdG9yPy5idXN5ID8gdCgnc2lnbkluLnNlbmRpbmcnKSA6IHQoJ21mYS5zbXNDb2RlT3B0aW9uJykgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmICh0ZXh0ZWRTZWNvbmRGYWN0b3I/LmVycm9yOyBhcyBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgIDxwIFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZEVycm9yJywgJ2F0bGFzLWVycm9yJylcIiByb2xlPVwiYWxlcnRcIj57eyBtZXNzYWdlIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc2hvd0VtYWlsU2Vjb25kRmFjdG9yKCkpIHtcbiAgICAgICAgICBAaWYgKGVtYWlsU2Vjb25kRmFjdG9yU2VudFRvKCk7IGFzIHNlbnRUbykge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgZGF0YS1hdGxhcz1cImVtYWlsLXNlY29uZC1mYWN0b3Itc2VudFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICB7eyB0KCdzaWduSW4uY29kZVNlbnRUbycsIHsgZW1haWw6IHNlbnRUbyB9KSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uU2Vjb25kYXJ5JywgJ2F0bGFzLWJ1dHRvbi1zZWNvbmRhcnknKVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBkYXRhLWF0bGFzPVwiZW1haWwtc2Vjb25kLWZhY3RvclwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5IHx8ICEhZW1haWxlZFNlY29uZEZhY3Rvcj8uYnVzeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJlbWFpbFNlY29uZEZhY3Rvci5lbWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBlbWFpbGVkU2Vjb25kRmFjdG9yPy5idXN5ID8gdCgnc2lnbkluLnNlbmRpbmcnKSA6IHQoJ3NpZ25Jbi5lbWFpbENvZGVPcHRpb24nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKGVtYWlsZWRTZWNvbmRGYWN0b3I/LmVycm9yOyBhcyBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgIDxwIFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZEVycm9yJywgJ2F0bGFzLWVycm9yJylcIiByb2xlPVwiYWxlcnRcIj57eyBtZXNzYWdlIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc2hvd0VtYWlsQ29kZU9wdGlvbigpKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3lcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXN0cmF0ZWd5XT1cInByZXBhcmVkRmFjdG9yID09PSAnZW1haWxfY29kZScgPyBudWxsIDogJ2VtYWlsX2NvZGUnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXRsYXMtcmVzZW5kXT1cInByZXBhcmVkRmFjdG9yID09PSAnZW1haWxfY29kZScgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNob29zZUZhY3Rvci5lbWl0KCdlbWFpbF9jb2RlJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHQocHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9jb2RlJyA/ICdzaWduSW4ucmVzZW5kQ29kZScgOiAnc2lnbkluLnVzZUVtYWlsQ29kZScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGhvbGRQcm9vZiA9PT0gJ2VtYWlsX2xpbmsnICYmIHN0ZXAoKS5raW5kID09PSAnY29sbGVjdF9maXJzdF9mYWN0b3InKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3lcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXN0cmF0ZWd5XT1cInByZXBhcmVkRmFjdG9yID09PSAnZW1haWxfbGluaycgPyBudWxsIDogJ2VtYWlsX2xpbmsnXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXRsYXMtcmVzZW5kXT1cInByZXBhcmVkRmFjdG9yID09PSAnZW1haWxfbGluaycgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNob29zZUZhY3Rvci5lbWl0KCdlbWFpbF9saW5rJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHQocHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9saW5rJyA/ICdzaWduSW4ucmVzZW5kTGluaycgOiAnc2lnbkluLnVzZUVtYWlsTGluaycpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHByZXBhcmVkRmFjdG9yICYmIG9mZmVyZWQoKS5pbmNsdWRlcygncGFzc3dvcmQnKSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25TZWNvbmRhcnknLCAnYXRsYXMtYnV0dG9uLXNlY29uZGFyeScpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1zdHJhdGVneT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1c2VQYXNzd29yZC5lbWl0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHQoJ3NpZ25Jbi5wYXNzd29yZE9wdGlvbicpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQXR0ZW1wdEZsb3dDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGF0bGFzID0gaW5qZWN0KEF0bGFzU2VydmljZSk7XG5cbiAgQElucHV0KCkgYXR0ZW1wdDogQXR0ZW1wdFZpZXcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgYnVzeSA9IGZhbHNlO1xuICBASW5wdXQoKSBlcnJvcnM6IEZpZWxkRXJyb3JbXSA9IFtdO1xuICAvKiogYEZsb3dTdGF0ZS5zZXNzaW9uS2VwdGA6IHdoZXRoZXIgdGhpcyBicm93c2VyIGtlcHQgdGhlIHNlc3Npb24gdGhlIHNpZ24taW4gY3JlYXRlZC4gKi9cbiAgQElucHV0KCkgc2Vzc2lvbktlcHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHRpdGxlS2V5ID0gJ3NpZ25Jbi50aXRsZSc7XG4gIC8qKiBTaWduLXVwIG9ubHk6IHRoZSBzaWduLWluIGxpbmsgYmVzaWRlIHRoZSBjb2RlIHN0ZXAncyBcImFuIGFjY291bnQgYWxyZWFkeSB1c2VzIHRoaXMgZW1haWxcIi4gKi9cbiAgQElucHV0KCkgc2lnbkluSHJlZjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgc2lnbi1pbiBjYXB0Y2hhLCBkcmF3biBhYm92ZSB0aGUgc3VibWl0IGJ1dHRvbiBvbiB0aGUgaWRlbnRpZmllciBzdGVwXG4gICAqIChhbiBhbHdheXMtb24gc2lnbi1pbiBjYXB0Y2hhKSBhbmQgb24gdGhlIGNoYWxsZW5nZSBzdGVwIHRoZSBzZXJ2ZXIgZGVtYW5kc1xuICAgKiB3aXRoIGBuZWVkc19jYXB0Y2hhYC4gTnVsbCB3aGVuIHRoZSBmbG93IGRyYXdzIG5vbmUuXG4gICAqL1xuICBASW5wdXQoKSBjYXB0Y2hhOiBDYXB0Y2hhQ29udHJvbGxlciB8IG51bGwgPSBudWxsO1xuICAvKipcbiAgICogVGhlIGZpcnN0IGZhY3RvcnMgdG8gb2ZmZXIgb24gdGhlIGBuZWVkc19maXJzdF9mYWN0b3JgIHN0ZXAg4oCUIHBhc3NcbiAgICogYEF0bGFzRmxvd0NvbnRyb2xsZXIuZmlyc3RGYWN0b3JzKClgLCB3aGljaCBkcm9wcyBlbWFpbCBjb2RlIC8gbGluayB3aGlsZSB0aGVcbiAgICogYXBwIGNhbm5vdCBkZWxpdmVyIGVtYWlsLiBOdWxsIHVzZXMgdGhlIHNlcnZlcidzIGxpc3QgYXMtaXMuXG4gICAqL1xuICBASW5wdXQoKSBmaXJzdEZhY3RvcnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBUaGUgZmlyc3QgZmFjdG9yIGFscmVhZHkgc2VudCAoYEF0bGFzRmxvd0NvbnRyb2xsZXIucHJlcGFyZWRGYWN0b3IoKWApOiBpdHMgY29kZSBpcyBjb2xsZWN0ZWQuICovXG4gIEBJbnB1dCgpIHByZXBhcmVkRmFjdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgLyoqIGBGbG93U3RhdGUucGFzc3dvcmRIb2xkYDogd2hlcmUgdGhlIHByb29mIHdlbnQsIGFuZCB3aGV0aGVyIHRoZSBwYXNzd29yZCBzaWducyBpbiBub3cuICovXG4gIEBJbnB1dCgpIHBhc3N3b3JkSG9sZDogRmxvd1N0YXRlWydwYXNzd29yZEhvbGQnXSA9IG51bGw7XG4gIC8qKiBgQXRsYXNGbG93Q29udHJvbGxlci5ob2xkUHJvb2YoKWA6IHRoZSBlbWFpbGVkIHByb29mIGEgcGFzc3dvcmQgaG9sZCBzdGlsbCB3YWl0cyBvbi4gKi9cbiAgQElucHV0KCkgaG9sZFByb29mOiAnZW1haWxfY29kZScgfCAnZW1haWxfbGluaycgfCBudWxsID0gbnVsbDtcblxuICAvKiogRW1pdHMgdGhlIGNvbGxlY3RlZCBmaWVsZCB2YWx1ZXMgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQuICovXG4gIEBPdXRwdXQoKSBzdWJtaXRGbG93ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgdXNlciBwaWNrcyBhIGZpcnN0IGZhY3RvciB0aGUgc2VydmVyIG11c3Qgc2VuZCBmaXJzdCAoYW4gZW1haWxlZCBjb2RlKS4gKi9cbiAgQE91dHB1dCgpIGNob29zZUZhY3RvciA9IG5ldyBFdmVudEVtaXR0ZXI8J2VtYWlsX2NvZGUnIHwgJ2VtYWlsX2xpbmsnPigpO1xuICAvKiogRW1pdHMgb24gXCJVc2UgeW91ciBwYXNzd29yZCBpbnN0ZWFkXCIsIGZyb20gYW4gZW1haWxlZCBmYWN0b3IgYWxyZWFkeSBzZW50LiAqL1xuICBAT3V0cHV0KCkgdXNlUGFzc3dvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBPZmZlciBcIkVtYWlsIG1lIGEgY29kZSBpbnN0ZWFkXCIgYXQgdGhlIHNlY29uZCBmYWN0b3IgKHRoZSBpbnN0YW5jZSdzXG4gICAqIGBhY2NvdW50LmVtYWlsU2Vjb25kRmFjdG9yYCk7IGBlbWFpbFNlY29uZEZhY3RvcmAgYXNrcyBmb3IgaXQgYW5kXG4gICAqIGBlbWFpbGVkU2Vjb25kRmFjdG9yYCByZXBvcnRzIGhvdyBpdCB3ZW50LlxuICAgKi9cbiAgQElucHV0KCkgb2ZmZXJFbWFpbFNlY29uZEZhY3RvciA9IGZhbHNlO1xuICAvKiogYEF0bGFzRmxvd0NvbnRyb2xsZXIuZW1haWxTZWNvbmRGYWN0b3IoKWA6IGluIGZsaWdodCwgd2hlcmUgaXQgd2VudCwgb3Igd2h5IG5vdC4gKi9cbiAgQElucHV0KCkgZW1haWxlZFNlY29uZEZhY3RvcjogeyBidXN5PzogYm9vbGVhbjsgc2VudFRvPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIEBPdXRwdXQoKSBlbWFpbFNlY29uZEZhY3RvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIE9mZmVyIFwiVGV4dCBtZSBhIGNvZGUgaW5zdGVhZFwiIGF0IHRoZSBzZWNvbmQgZmFjdG9yICh3aGVyZSB0aGUgYXBwIG9mZmVyc1xuICAgKiB0ZXh0ZWQgY29kZXMsIGBBdGxhc0Zsb3dDb250cm9sbGVyLm1mYUNob2ljZXMoKS5zbXNgKTsgYHNtc1NlY29uZEZhY3RvcmBcbiAgICogYXNrcyBmb3IgaXQgYW5kIGB0ZXh0ZWRTZWNvbmRGYWN0b3JgIHJlcG9ydHMgaG93IGl0IHdlbnQuXG4gICAqL1xuICBASW5wdXQoKSBvZmZlclNtc1NlY29uZEZhY3RvciA9IGZhbHNlO1xuICAvKiogYEF0bGFzRmxvd0NvbnRyb2xsZXIuc21zU2Vjb25kRmFjdG9yKClgOiBpbiBmbGlnaHQsIHdoZXJlIGl0IHdlbnQsIG9yIHdoeSBub3QuICovXG4gIEBJbnB1dCgpIHRleHRlZFNlY29uZEZhY3RvcjogeyBidXN5PzogYm9vbGVhbjsgc2VudFRvPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIEBPdXRwdXQoKSBzbXNTZWNvbmRGYWN0b3IgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBUaGUgTUZBIGVucm9sbWVudCBzdGVwIChgQXRsYXNGbG93Q29udHJvbGxlci5lbnJvbGxtZW50YCBhbmRcbiAgICogYGVucm9sbG1lbnRTdGF0ZSgpYCk6IHRoZSBhdXRoZW50aWNhdG9yIGFwcCdzIFFSIGNvZGUgYW5kIHNldHVwIGtleSwgb3IgYVxuICAgKiB0ZXh0ZWQgY29kZS4gTnVsbDogdGhlIHN0ZXAgYXNrcyBmb3IgdHdvIGF1dGhlbnRpY2F0b3IgY29kZXMgb25seS5cbiAgICovXG4gIEBJbnB1dCgpIGVucm9sbG1lbnQ6IE1mYUVucm9sbG1lbnRDb250cm9sbGVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGVucm9sbG1lbnRTdGF0ZTogTWZhRW5yb2xsbWVudFN0YXRlIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UncyBgYWNjb3VudC5lbWFpbFZlcmlmaWNhdGlvbmAuIE9uIGBsaW5rYCBhIHNpZ24tdXAnc1xuICAgKiB2ZXJpZmljYXRpb24gc3RlcCBoYXMgbm90aGluZyB0byB0eXBlOiBpdCBzYXlzIHRvIG9wZW4gdGhlIGVtYWlsZWQgbGlua1xuICAgKiB3aGlsZSB0aGUgZmxvdyBwb2xscywgYW5kIG9mZmVycyBhIHJlc2VuZCAoYHJlc2VuZGApLlxuICAgKi9cbiAgQElucHV0KCkgZW1haWxWZXJpZmljYXRpb246IHN0cmluZyA9ICdjb2RlJztcbiAgLyoqIGBGbG93U3RhdGUubWF0Y2hDb2RlYDogc2hvd24gd2hpbGUgYSBtYWlsZWQgbGluayB3YWl0cywgdG8gdHlwZSBpZiBpdCdzIG9wZW5lZCBvbiBhbm90aGVyIGRldmljZS4gKi9cbiAgQElucHV0KCkgbWF0Y2hDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIHJlc2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIFRoZSB1c2VyIGRlY2xpbmVkIGEgcG9saWN5IHRoZSBzaWduLWluIHdhcyB3YWl0aW5nIG9uIChgbmVlZHNfcG9saWN5X2FjY2VwdGFuY2VgKTogY2FuY2VsIHRoZSBhdHRlbXB0LiAqL1xuICBAT3V0cHV0KCkgcG9saWN5RGVjbGluZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcm90ZWN0ZWQgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcsIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXksIHZhcnMpO1xuICB9XG5cbiAgLyoqIEEgc2VydmVyIGVycm9yIGluIHRoZSBhcHAncyBsYW5ndWFnZSAoYGVycm9yLjxyZWFzb24+YCwgZWxzZSB0aGUgc2VydmVyJ3MgbWVzc2FnZSkuICovXG4gIHByb3RlY3RlZCBlcnJvclRleHQoZXJyb3I6IEZpZWxkRXJyb3IpOiBzdHJpbmcge1xuICAgIC8vIGBlcnJvckxvY2FsaXphdGlvbmAgaXMgcmVhZCBkZWZlbnNpdmVseTogYSBzdGFuZC1pbiBzZXJ2aWNlIG1heSBsYWNrIGl0LlxuICAgIGNvbnN0IGxheWVyID0gKHRoaXMuYXRsYXMgYXMgeyBlcnJvckxvY2FsaXphdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSkuZXJyb3JMb2NhbGl6YXRpb247XG4gICAgcmV0dXJuIGxvY2FsaXplZEVycm9yTWVzc2FnZShlcnJvciwgbGF5ZXIgPz8gdGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIHRoaXMuYXRsYXMubG9jYWxpemF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbHMoa2V5OiBFbGVtZW50S2V5LCBiYXNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjbGFzc0ZvcihrZXksIHRoaXMuYXRsYXMuYXBwZWFyYW5jZSwgYmFzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXMgPSB7IC4uLnRoaXMudmFsdWVzLCBbbmFtZV06IHZhbHVlIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyBFbnJvbG1lbnQ6IHRleHQgdGhlIGNvZGUgdG8gdGhlIHR5cGVkIG51bWJlciwgb3IgY29uZmlybSB0aGUgZmFjdG9yLlxuICAgIGlmICh0aGlzLmVucm9sbGluZygpICYmIHRoaXMuZW5yb2xsbWVudCkge1xuICAgICAgdm9pZCB0aGlzLmVucm9sbG1lbnQuc3VibWl0KHRoaXMudmFsdWVzKS50aGVuKChuZXh0KSA9PiB7XG4gICAgICAgIGlmIChuZXh0KSB0aGlzLnN1Ym1pdEZsb3cuZW1pdChuZXh0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBPbmx5IHdoYXQgaXMgb24gc2NyZWVuOiBhIGNvZGUgdHlwZWQgZWFybGllciBtdXN0IG5vdCB0dXJuIGEgcGFzc3dvcmQgaW50byBhIGNvZGUgYXR0ZW1wdC5cbiAgICBpZiAodGhpcy5zdGVwKCkua2luZCA9PT0gJ2NvbGxlY3RfZmlyc3RfZmFjdG9yJykge1xuICAgICAgdGhpcy5zdWJtaXRGbG93LmVtaXQodGhpcy5wcmVwYXJlZEZhY3RvciA9PT0gJ2VtYWlsX2NvZGUnID8geyBjb2RlOiB0aGlzLnZhbHVlc1snY29kZSddID8/ICcnIH0gOiB7IHBhc3N3b3JkOiB0aGlzLnZhbHVlc1sncGFzc3dvcmQnXSA/PyAnJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdWJtaXRGbG93LmVtaXQodGhpcy52YWx1ZXMpO1xuICB9XG5cbiAgLyoqIFRoZSBzaGFyZWQgZW5yb2xtZW50IHN0ZXAgaXMgZHJhd24gKGEgY29udHJvbGxlciB3YXMgcGFzc2VkIGFuZCB0aGUgZmxvdyBpcyBlbnJvbGxpbmcpLiAqL1xuICBwcm90ZWN0ZWQgZW5yb2xsaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXAoKS5raW5kID09PSAnZW5yb2xsX3NlY29uZF9mYWN0b3InICYmICEhdGhpcy5lbnJvbGxtZW50ICYmICEhdGhpcy5lbnJvbGxtZW50U3RhdGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hvb3NlTWV0aG9kKG1ldGhvZDogTWZhRW5yb2xsbWVudFN0cmF0ZWd5KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXMgPSB7fTtcbiAgICB2b2lkIHRoaXMuZW5yb2xsbWVudD8uY2hvb3NlKG1ldGhvZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZW5kRW5yb2xsbWVudCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuZW5yb2xsbWVudD8ucmVzZW5kKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3B0aW9uS2V5KG1ldGhvZDogTWZhRW5yb2xsbWVudFN0cmF0ZWd5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5yb2xsbWVudE9wdGlvbktleShtZXRob2QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dNYXRjaENvZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tYXRjaENvZGUgJiYgKHRoaXMuc3RlcCgpLmtpbmQgPT09ICdjb2xsZWN0X2VtYWlsX2NvZGUnIHx8IHRoaXMubGlua1NlbnRUZXh0KCkgIT09IG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG90aGVyTWV0aG9kcyhzdGF0ZTogTWZhRW5yb2xsbWVudFN0YXRlKTogTWZhRW5yb2xsbWVudFN0cmF0ZWd5W10ge1xuICAgIHJldHVybiBzdGF0ZS5vcHRpb25zLmZpbHRlcigobSkgPT4gbSAhPT0gc3RhdGUubWV0aG9kKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEtleShzZWNyZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdyb3VwU2V0dXBLZXkoc2VjcmV0KTtcbiAgfVxuXG4gIC8qKiBUaGUgc3VibWl0IGJ1dHRvbidzIGxhYmVsIGtleSAoZW5yb2xtZW50OiBcIlRleHQgbWUgYSBjb2RlXCIgYmVmb3JlIHRoZSBudW1iZXIgaXMgc2VudCkuICovXG4gIHByb3RlY3RlZCBzdWJtaXRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuZW5yb2xsaW5nKCkgJiYgdGhpcy5lbnJvbGxtZW50U3RhdGUgJiYgZW5yb2xsbWVudFN1Ym1pdEtleSh0aGlzLmVucm9sbG1lbnRTdGF0ZSkpIHx8ICdzaWduSW4uc3VibWl0JztcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93U21zU2Vjb25kRmFjdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9mZmVyU21zU2Vjb25kRmFjdG9yICYmIHRoaXMuc3RlcCgpLmtpbmQgPT09ICdjb2xsZWN0X3NlY29uZF9mYWN0b3InO1xuICB9XG5cbiAgLyoqIFdoZXJlIHRoZSB0ZXh0ZWQgc2Vjb25kLWZhY3RvciBjb2RlIHdlbnQgKG1hc2tlZCksIG9uY2UgaXQgd2FzIHNlbnQuICovXG4gIHByb3RlY3RlZCBzbXNTZWNvbmRGYWN0b3JTZW50VG8oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc2VudCA9IHRoaXMudGV4dGVkU2Vjb25kRmFjdG9yPy5zZW50VG87XG4gICAgcmV0dXJuIHR5cGVvZiBzZW50ID09PSAnc3RyaW5nJyA/IHNlbnQgfHwgJyAnIDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmb3JtRXJyb3JzKCk6IEZpZWxkRXJyb3JbXSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmZpbHRlcigoZXJyb3IpID0+ICFlcnJvci5wYXJhbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2lnbkluTGluayhlcnJvcjogRmllbGRFcnJvcik6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0ZXAoKS5raW5kID09PSAnY29sbGVjdF9lbWFpbF9jb2RlJyAmJiBlcnJvci5jb2RlID09PSAnSURFTlRJRklFUl9FWElTVFMnICYmIGVycm9yLm1ldGE/LlsnaWRlbnRpZmllciddICE9PSAndXNlcm5hbWUnID8gdGhpcy5zaWduSW5IcmVmIDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWVsZEVycm9yc0ZvcihuYW1lOiBzdHJpbmcpOiBGaWVsZEVycm9yW10ge1xuICAgIHJldHVybiB0aGlzLmVycm9ycy5maWx0ZXIoKGVycm9yKSA9PiBlcnJvci5wYXJhbSA9PT0gbmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRlbXB0ID8gbmV4dFN0ZXAodGhpcy5hdHRlbXB0KSA6ICh7IGtpbmQ6ICdjb2xsZWN0X2lkZW50aWZpZXInIH0gYXMgY29uc3QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dDYXB0Y2hhKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnN0ZXAoKS5raW5kO1xuICAgIHJldHVybiAhIXRoaXMuY2FwdGNoYSAmJiAoa2luZCA9PT0gJ2NvbGxlY3RfaWRlbnRpZmllcicgfHwga2luZCA9PT0gJ2NvbGxlY3RfY2FwdGNoYScpO1xuICB9XG5cbiAgLyoqIFRoZSBmaXJzdCBmYWN0b3JzIG9uIG9mZmVyIGF0IGEgYG5lZWRzX2ZpcnN0X2ZhY3RvcmAgc3RlcCAoZW1wdHkgb24gYW55IG90aGVyKS4gKi9cbiAgcHJvdGVjdGVkIG9mZmVyZWQoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnN0ZXAoKTtcbiAgICBpZiAoc3RlcC5raW5kICE9PSAnY29sbGVjdF9maXJzdF9mYWN0b3InKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuZmlyc3RGYWN0b3JzID8/IHN0ZXAuc3RyYXRlZ2llcztcbiAgfVxuXG4gIHByb3RlY3RlZCBsaW5rT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXdhaXRpbmdTaWduVXBMaW5rKHRoaXMuYXR0ZW1wdCwgdGhpcy5lbWFpbFZlcmlmaWNhdGlvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd0VtYWlsU2Vjb25kRmFjdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9mZmVyRW1haWxTZWNvbmRGYWN0b3IgJiYgdGhpcy5zdGVwKCkua2luZCA9PT0gJ2NvbGxlY3Rfc2Vjb25kX2ZhY3Rvcic7XG4gIH1cblxuICAvKiogV2hlcmUgdGhlIGVtYWlsZWQgc2Vjb25kLWZhY3RvciBjb2RlIHdlbnQgKG1hc2tlZCksIG9uY2UgaXQgd2FzIHNlbnQuICovXG4gIHByb3RlY3RlZCBlbWFpbFNlY29uZEZhY3RvclNlbnRUbygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzZW50ID0gdGhpcy5lbWFpbGVkU2Vjb25kRmFjdG9yPy5zZW50VG87XG4gICAgcmV0dXJuIHR5cGVvZiBzZW50ID09PSAnc3RyaW5nJyA/IHNlbnQgfHwgJyAnIDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93RW1haWxDb2RlT3B0aW9uKCk6IGJvb2xlYW4ge1xuICAgIC8vIEJlZm9yZSB0aGUgY29kZSBpcyBzZW50OiB0aGUgY2hvaWNlIChvciB0aGUgcmV0cnkgb2YgYSBmYWlsZWQgYXV0b21hdGljXG4gICAgLy8gc2VuZCkuIEFmdGVyOiBcIlJlc2VuZCBjb2RlXCIuXG4gICAgcmV0dXJuIHRoaXMub2ZmZXJlZCgpLmluY2x1ZGVzKCdlbWFpbF9jb2RlJyk7XG4gIH1cblxuICAvKiogVGhlIFwid2Ugc2VudCBhIGNvZGUgdG8g4oCmXCIgbGluZSBvbiB0aGUgY29kZSBzdGVwLiAqL1xuICBwcm90ZWN0ZWQgY29kZVNlbnRUZXh0KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnN0ZXAoKS5raW5kICE9PSAnY29sbGVjdF9maXJzdF9mYWN0b3InIHx8IHRoaXMucHJlcGFyZWRGYWN0b3IgIT09ICdlbWFpbF9jb2RlJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudCgnc2lnbkluLmNvZGVTZW50VG8nLCB7IGVtYWlsOiB0aGlzLnBhc3N3b3JkSG9sZD8uZW1haWwgPz8gdGhpcy5hdHRlbXB0Py5pZGVudGlmaWVyID8/ICcnIH0pO1xuICB9XG5cbiAgLyoqIFRoZSBcIndlIHNlbnQgYSBsaW5rIHRvIOKAplwiIGxpbmUsIG9uY2UgYSBsaW5rIHdhcyBzZW50LiAqL1xuICBwcm90ZWN0ZWQgbGlua1NlbnRUZXh0KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnN0ZXAoKS5raW5kICE9PSAnY29sbGVjdF9maXJzdF9mYWN0b3InIHx8IHRoaXMucHJlcGFyZWRGYWN0b3IgIT09ICdlbWFpbF9saW5rJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudCgnc2lnbkluLmxpbmtTZW50VG8nLCB7IGVtYWlsOiB0aGlzLnBhc3N3b3JkSG9sZD8uZW1haWwgPz8gdGhpcy5hdHRlbXB0Py5pZGVudGlmaWVyID8/ICcnIH0pO1xuICB9XG5cbiAgLyoqIFRoZSBhdHRlbXB0IGlzIGBuZWVkc19wb2xpY3lfYWNjZXB0YW5jZWAuICovXG4gIHByb3RlY3RlZCBhd2FpdGluZ1BvbGljaWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXAoKS5raW5kID09PSAnYWNjZXB0X3BvbGljaWVzJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93U3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnN0ZXAoKS5raW5kO1xuICAgIC8vIE5vdGhpbmcgdG8gc3VibWl0IG9uIGEgZmlyc3QtZmFjdG9yIHN0ZXAgdGhhdCBvbmx5IG9mZmVycyBhbiBlbWFpbGVkIGNvZGVcbiAgICAvLyB1bnRpbCB0aGF0IGNvZGUgaXMgc2VudC5cbiAgICBpZiAoa2luZCA9PT0gJ2NvbGxlY3RfZmlyc3RfZmFjdG9yJykgcmV0dXJuIHRoaXMuZmllbGRzKCkuc29tZSgoZikgPT4gZi5raW5kID09PSAnaW5wdXQnKTtcbiAgICBpZiAodGhpcy5saW5rT25seSgpKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gRW5yb2xtZW50OiBub3RoaW5nIHRvIHN1Ym1pdCB3aGlsZSBjaG9vc2luZyBhIG1ldGhvZCBvciBmZXRjaGluZyB0aGUgc2V0dXAuXG4gICAgaWYgKHRoaXMuZW5yb2xsaW5nKCkgJiYgdGhpcy5lbnJvbGxtZW50U3RhdGUgJiYgIWVucm9sbG1lbnRTdWJtaXRLZXkodGhpcy5lbnJvbGxtZW50U3RhdGUpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGtpbmQgIT09ICdkb25lJyAmJiBraW5kICE9PSAnYXdhaXRfb2F1dGgnICYmIGtpbmQgIT09ICdhY2NlcHRfcG9saWNpZXMnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpZWxkcygpOiBTdGVwRmllbGRbXSB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuc3RlcCgpO1xuICAgIHN3aXRjaCAoc3RlcC5raW5kKSB7XG4gICAgICBjYXNlICdjb2xsZWN0X2lkZW50aWZpZXInOlxuICAgICAgICAvLyBgd2ViYXV0aG5gOiBzYXZlZCBwYXNza2V5cyBhcHBlYXIgaW4gdGhpcyBmaWVsZCdzIGF1dG9maWxsIHdoaWxlIDxhdGxhcy1zaWduLWluPiBob2xkcyBhIGNvbmRpdGlvbmFsIHJlcXVlc3QuXG4gICAgICAgIHJldHVybiBbeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAnaWRlbnRpZmllcicsIGxhYmVsS2V5OiAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCcsIHR5cGU6ICdlbWFpbCcsIGF1dG9jb21wbGV0ZTogJ3VzZXJuYW1lIHdlYmF1dGhuJyB9XTtcbiAgICAgIGNhc2UgJ2NvbGxlY3RfZmlyc3RfZmFjdG9yJzoge1xuICAgICAgICBpZiAodGhpcy5wcmVwYXJlZEZhY3RvciA9PT0gJ2VtYWlsX2NvZGUnKSB7XG4gICAgICAgICAgcmV0dXJuIFt7IGtpbmQ6ICdpbnB1dCcsIG5hbWU6ICdjb2RlJywgbGFiZWxLZXk6ICdzaWduSW4uZW1haWxDb2RlTGFiZWwnLCB0eXBlOiAndGV4dCcgfV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJlcGFyZWRGYWN0b3IgPT09ICdlbWFpbF9saW5rJykgcmV0dXJuIFtdO1xuICAgICAgICAvLyBUaGUgcGFzc3dvcmQgZmllbGQgdW5sZXNzIHRoZSBvbmx5IG9mZmVyIGlzIGFuIGVtYWlsZWQgY29kZSAoY2hvc2VuXG4gICAgICAgIC8vIHdpdGggdGhlIGJ1dHRvbiBiZWxvdyB0aGUgZm9ybSkuXG4gICAgICAgIGNvbnN0IG9mZmVyZWQgPSB0aGlzLm9mZmVyZWQoKTtcbiAgICAgICAgcmV0dXJuIG9mZmVyZWQuaW5jbHVkZXMoJ2VtYWlsX2NvZGUnKSAmJiAhb2ZmZXJlZC5pbmNsdWRlcygncGFzc3dvcmQnKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgLi4uKHRoaXMucGFzc3dvcmRIb2xkPy5yZWxlYXNlZCA/IFtyZWxlYXNlZCgpXSA6IFtdKSxcbiAgICAgICAgICAgICAgeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAncGFzc3dvcmQnLCBsYWJlbEtleTogJ3NpZ25Jbi5wYXNzd29yZExhYmVsJywgdHlwZTogJ3Bhc3N3b3JkJyB9LFxuICAgICAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbGxlY3Rfc2Vjb25kX2ZhY3Rvcic6XG4gICAgICAgIHJldHVybiBbeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAnY29kZScsIGxhYmVsS2V5OiAnbWZhLmNvZGVMYWJlbCcsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICAgIGNhc2UgJ2Vucm9sbF9zZWNvbmRfZmFjdG9yJzpcbiAgICAgICAgLy8gVGhlIHNoYXJlZCBlbnJvbG1lbnQgc3RlcCBkcmF3cyBpdHMgb3duIGZpZWxkcyAoYWJvdmUpLlxuICAgICAgICBpZiAodGhpcy5lbnJvbGxpbmcoKSkgcmV0dXJuIFtdO1xuICAgICAgICAvLyBUd28gY29uc2VjdXRpdmUgY29kZXMgKMKnNS42KTogYSBwaG9uZSB3aXRoIGEgZmFzdCBjbG9jayBmYWlscyBoZXJlXG4gICAgICAgIC8vIHJhdGhlciB0aGFuIG9uIGV2ZXJ5IHNpZ24taW4gYWZ0ZXJ3YXJkcy5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7IGtpbmQ6ICdpbnB1dCcsIG5hbWU6ICdjb2RlJywgbGFiZWxLZXk6ICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnLCB0eXBlOiAndGV4dCcgfSxcbiAgICAgICAgICB7IGtpbmQ6ICdpbnB1dCcsIG5hbWU6ICdzZWNvbmRDb2RlJywgbGFiZWxLZXk6ICdtZmEuZW5yb2xsU2Vjb25kQ29kZUxhYmVsJywgdHlwZTogJ3RleHQnIH0sXG4gICAgICAgIF07XG4gICAgICBjYXNlICdjb2xsZWN0X2VtYWlsX2NvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5saW5rT25seSgpID8gW10gOiBbeyBraW5kOiAnaW5wdXQnLCBuYW1lOiAnY29kZScsIGxhYmVsS2V5OiAnc2lnbkluLmVtYWlsQ29kZUxhYmVsJywgdHlwZTogJ3RleHQnIH1dO1xuICAgICAgY2FzZSAnY29sbGVjdF9uZXdfcGFzc3dvcmQnOlxuICAgICAgICByZXR1cm4gW3sga2luZDogJ2lucHV0JywgbmFtZTogJ3Bhc3N3b3JkJywgbGFiZWxLZXk6ICdyZXNldC5uZXdQYXNzd29yZExhYmVsJywgdHlwZTogJ3Bhc3N3b3JkJyB9XTtcbiAgICAgIGNhc2UgJ2FjY2VwdF9wb2xpY2llcyc6XG4gICAgICAgIC8vIERyYXduIGJ5IDxhdGxhcy1wb2xpY3ktYWNjZXB0LXN0ZXA+IGFib3ZlLlxuICAgICAgICByZXR1cm4gW107XG4gICAgICBjYXNlICdjb2xsZWN0X2NhcHRjaGEnOlxuICAgICAgICAvLyDCpzUgdGhlIHNlcnZlciB3aXRoaGVsZCB0aGUgYXR0ZW1wdCB1bnRpbCBhIGNhcHRjaGEgY2xlYXJzLiBTb2x2aW5nIHRoZVxuICAgICAgICAvLyB3aWRnZXQgcmVzdWJtaXRzIHRoZSBpZGVudGlmaWVyIG9uIGl0cyBvd247IHRoZSBidXR0b24gcmV0cmllcy5cbiAgICAgICAgcmV0dXJuIFttc2coJ2NhcHRjaGEucHJvbXB0JyldO1xuICAgICAgY2FzZSAnYXdhaXRfb2F1dGgnOlxuICAgICAgICByZXR1cm4gW21zZygnc2lnbkluLm1hZ2ljTGlua1NlbnQnKV07XG4gICAgICBjYXNlICdkb25lJzpcbiAgICAgICAgLy8gU2lnbmVkIGluIG9ubHkgd2hlbiB0aGlzIGJyb3dzZXIgaG9sZHMgdGhlIHNlc3Npb247IGEgYmxvY2tlZCBjb29raWUgaXMgc2FpZFxuICAgICAgICAvLyBwbGFpbmx5LiBcIkNoZWNrIHRoZSBvdGhlciB0YWJcIiBpcyBmb3IgYSBzaWduLWluIGNvbXBsZXRlZCBvbiBhbm90aGVyIGRldmljZS5cbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbktlcHQgPT09IHRydWUpIHJldHVybiBbbXNnKCdzaWduSW4uc2lnbmVkSW4nKV07XG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25LZXB0ID09PSBmYWxzZSkgcmV0dXJuIFt7IGtpbmQ6ICdhbGVydCcsIG5hbWU6ICcnLCBsYWJlbEtleTogJ3NpZ25Jbi5zZXNzaW9uTm90S2VwdCcsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICAgICAgcmV0dXJuIFttc2coJ3NpZ25Jbi5jaGVja090aGVyVGFiJyldO1xuICAgICAgY2FzZSAncmVzdGFydCc6XG4gICAgICAgIHJldHVybiBbbXNnKCdlcnJvci5nZW5lcmljJyldO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQSBzdGF0dXMgdGhpcyBTREsgdmVyc2lvbiBkb2VzIG5vdCBrbm93LiBBbiBob25lc3QgbWVzc2FnZSBiZWF0cyBhXG4gICAgICAgIC8vIGJsYW5rIGxvZ2luIGJveCB0aGUgdXNlciBjYW5ub3QgYWN0IG9uLlxuICAgICAgICByZXR1cm4gW21zZygnZXJyb3IuZ2VuZXJpYycpXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEEgcmVhZC1vbmx5IG1lc3NhZ2Ugcm93OiBgbGFiZWxLZXlgIGhvbGRzIHRoZSBpMThuIGtleSBvZiB0aGUgdGV4dCB0byBzaG93LiAqL1xuZnVuY3Rpb24gbXNnKGxhYmVsS2V5OiBzdHJpbmcpOiBTdGVwRmllbGQge1xuICByZXR1cm4geyBraW5kOiAnbWVzc2FnZScsIG5hbWU6ICcnLCBsYWJlbEtleSwgdHlwZTogJ3RleHQnIH07XG59XG5cbmZ1bmN0aW9uIHJlbGVhc2VkKCk6IFN0ZXBGaWVsZCB7XG4gIHJldHVybiB7IGtpbmQ6ICdyZWxlYXNlZCcsIG5hbWU6ICcnLCBsYWJlbEtleTogJ3NpZ25Jbi5wYXNzd29yZEhvbGRSZWxlYXNlZCcsIHR5cGU6ICd0ZXh0JyB9O1xufVxuIl19
|
|
@@ -152,7 +152,7 @@ export class SignInComponent {
|
|
|
152
152
|
</p>
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
`, isInline: true, dependencies: [{ kind: "component", type: EmailLinkComponent, selector: "atlas-email-link", inputs: ["link"] }, { kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification", "matchCode"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: RecoveryCodesComponent, selector: "atlas-recovery-codes", inputs: ["codes", "busy"], outputs: ["saved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
155
|
+
`, isInline: true, dependencies: [{ kind: "component", type: EmailLinkComponent, selector: "atlas-email-link", inputs: ["link"] }, { kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "signInHref", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification", "matchCode"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: RecoveryCodesComponent, selector: "atlas-recovery-codes", inputs: ["codes", "busy"], outputs: ["saved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
156
156
|
}
|
|
157
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignInComponent, decorators: [{
|
|
158
158
|
type: Component,
|
|
@@ -231,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
231
231
|
}], signUpUrl: [{
|
|
232
232
|
type: Input
|
|
233
233
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1pbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sZUFBZSxFQUNmLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxJQUFJLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFeEQ7Ozs7Ozs7OztHQVNHO0FBdUVILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5Qyw2R0FBNkc7SUFDMUYsU0FBUyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFFOUQ7UUFDRSxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixD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aUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLDRFQUE0RTtRQUM1RSx5RUFBeUU7UUFDekUsMkNBQTJDO1FBQzNDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVztZQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQzt3R0E5RVUsZUFBZTs0RkFBZixlQUFlLG1JQWpFaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStEVCw0REFoRVMsa0JBQWtCLCtFQUFFLG9CQUFvQix5ZUFBRSxzQkFBc0I7OzRGQWtFL0QsZUFBZTtrQkF0RTNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLENBQUM7b0JBQzNFLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0RUO2lCQUNGO3dEQVlVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlbWFpbExpbmtGcm9tVXJsLCB0eXBlIEVtYWlsTGluayB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgbGFzdFVzZWRNZXRob2RMYWJlbCwgcGFzc2tleXNTdXBwb3J0ZWQsIHNpZ25VcCBhcyBob3N0ZWRTaWduVXAgfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEF0bGFzU2VydmljZSB9IGZyb20gJy4uL2F0bGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBBdHRlbXB0Rmxvd0NvbXBvbmVudCB9IGZyb20gJy4vYXR0ZW1wdC1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbWFpbExpbmtDb21wb25lbnQgfSBmcm9tICcuL2VtYWlsLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IFJlY292ZXJ5Q29kZXNDb21wb25lbnQgfSBmcm9tICcuL3JlY292ZXJ5LWNvZGVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdGxhc0Zsb3dDb250cm9sbGVyIH0gZnJvbSAnLi9mbG93LWNvbnRyb2xsZXInO1xuXG4vKipcbiAqIGA8YXRsYXMtc2lnbi1pbj5gIOKAlCB0aGUgZnVsbCwgbXVsdGktc3RlcCBzaWduLWluIGZsb3cgZHJpdmVuIGVudGlyZWx5IGJ5IHRoZVxuICogc2VydmVyLXNpZGUgYXR0ZW1wdCBzdGF0dXMuIFRoZSBBbmd1bGFyIHBlZXIgb2YgUmVhY3QncyBgPFNpZ25Jbi8+YC4gRHJhd3MgdGhlXG4gKiBpbnN0YW5jZSdzIHNpZ24taW4gY2FwdGNoYSB3aGVuIGl0IGlzIHJlcXVpcmVkIChhbHdheXMtb24sIG9yIGFcbiAqIGBuZWVkc19jYXB0Y2hhYCBjaGFsbGVuZ2UpLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxhdGxhcy1zaWduLWluICphdGxhc1NpZ25lZE91dCBhZnRlclVybD1cIi9kYXNoYm9hcmRcIj48L2F0bGFzLXNpZ24taW4+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRsYXMtc2lnbi1pbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbRW1haWxMaW5rQ29tcG9uZW50LCBBdHRlbXB0Rmxvd0NvbXBvbmVudCwgUmVjb3ZlcnlDb2Rlc0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChlbWFpbExpbmsoKTsgYXMgbGluaykge1xuICAgICAgPGF0bGFzLWVtYWlsLWxpbmsgW2xpbmtdPVwibGlua1wiPjwvYXRsYXMtZW1haWwtbGluaz5cbiAgICB9IEBlbHNlIHtcbiAgICBAaWYgKGxhc3RVc2VkTGFiZWwoKTsgYXMgbGFiZWwpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dCBhdGxhcy1sYXN0LXVzZWQtaGludFwiIGRhdGEtYXRsYXM9XCJsYXN0LXVzZWRcIiBbYXR0ci5kYXRhLWF0bGFzLW1ldGhvZF09XCJmbG93Lmxhc3RNZXRob2QoKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubGFzdFVzZWQnKSB9fToge3sgbGFiZWwgfX1cbiAgICAgIDwvcD5cbiAgICB9XG4gICAgQGlmIChhdGxhc0Nvbm5lY3Rpb24oKTsgYXMgY29ubmVjdGlvbklkKSB7XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF0bGFzLXNvY2lhbC1idXR0b25cIiBkYXRhLWF0bGFzLXByb3ZpZGVyPVwiYXRsYXNcIiAoY2xpY2spPVwiZmxvdy5zaWduSW5XaXRoQXRsYXMoY29ubmVjdGlvbklkKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4uY29udGludWVXaXRoQXRsYXMnKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICBAaWYgKGZsb3cuc2lnbkluV2l0aEF0bGFzRXJyb3IoKTsgYXMgbWVzc2FnZSkge1xuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLWVycm9yXCIgcm9sZT1cImFsZXJ0XCI+e3sgbWVzc2FnZSB9fTwvcD5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChmbG93LnJlY292ZXJ5Q29kZXMoKTsgYXMgY29kZXMpIHtcbiAgICAgIDxhdGxhcy1yZWNvdmVyeS1jb2RlcyBbY29kZXNdPVwiY29kZXNcIiBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiIChzYXZlZCk9XCJmbG93LnNhdmVSZWNvdmVyeUNvZGVzKClcIj48L2F0bGFzLXJlY292ZXJ5LWNvZGVzPlxuICAgIH0gQGVsc2Uge1xuICAgIDxhdGxhcy1hdHRlbXB0LWZsb3dcbiAgICAgIFthdHRlbXB0XT1cImZsb3cuc3RhdGUoKS5hdHRlbXB0XCJcbiAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICBbc2Vzc2lvbktlcHRdPVwiZmxvdy5zdGF0ZSgpLnNlc3Npb25LZXB0XCJcbiAgICAgIHRpdGxlS2V5PVwic2lnbkluLnRpdGxlXCJcbiAgICAgIFtjYXB0Y2hhXT1cImZsb3cuY2FwdGNoYURyYXduKCkgPyBmbG93LmNhcHRjaGEgOiBudWxsXCJcbiAgICAgIFtmaXJzdEZhY3RvcnNdPVwiZmxvdy5maXJzdEZhY3RvcnMoKVwiXG4gICAgICBbcHJlcGFyZWRGYWN0b3JdPVwiZmxvdy5wcmVwYXJlZEZhY3RvcigpXCJcbiAgICAgIFttYXRjaENvZGVdPVwiZmxvdy5zdGF0ZSgpLm1hdGNoQ29kZSA/PyBudWxsXCJcbiAgICAgIFtwYXNzd29yZEhvbGRdPVwiZmxvdy5zdGF0ZSgpLnBhc3N3b3JkSG9sZCA/PyBudWxsXCJcbiAgICAgIFtob2xkUHJvb2ZdPVwiZmxvdy5ob2xkUHJvb2YoKVwiXG4gICAgICAodXNlUGFzc3dvcmQpPVwiZmxvdy51c2VQYXNzd29yZCgpXCJcbiAgICAgIFtvZmZlckVtYWlsU2Vjb25kRmFjdG9yXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxTZWNvbmRGYWN0b3IgPT09IHRydWVcIlxuICAgICAgW2VtYWlsZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5lbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzdWJtaXRGbG93KT1cInN1Ym1pdElkZW50aWZpZXIoJGV2ZW50KVwiXG4gICAgICAoY2hvb3NlRmFjdG9yKT1cImZsb3cucHJlcGFyZSgkZXZlbnQpXCJcbiAgICAgIFtvZmZlclNtc1NlY29uZEZhY3Rvcl09XCJmbG93LnNldHRpbmdzKCkgIT09IG51bGwgJiYgZmxvdy5tZmFDaG9pY2VzKCkuc21zXCJcbiAgICAgIFt0ZXh0ZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5zbXNTZWNvbmRGYWN0b3IoKVwiXG4gICAgICBbZW5yb2xsbWVudF09XCJmbG93LmVucm9sbG1lbnRcIlxuICAgICAgW2Vucm9sbG1lbnRTdGF0ZV09XCJmbG93LmVucm9sbG1lbnRTdGF0ZSgpXCJcbiAgICAgIChlbWFpbFNlY29uZEZhY3Rvcik9XCJmbG93LnNlbmRFbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzbXNTZWNvbmRGYWN0b3IpPVwiZmxvdy5zZW5kU21zU2Vjb25kRmFjdG9yKClcIlxuICAgICAgKHBvbGljeURlY2xpbmVkKT1cImZsb3cuZGVjbGluZVBvbGljeSgkZXZlbnQpXCJcbiAgICA+PC9hdGxhcy1hdHRlbXB0LWZsb3c+XG4gICAgfVxuICAgIEBpZiAoZmxvdy5wYXNza2V5T2ZmZXJlZCgpICYmICFmbG93LnJlY292ZXJ5Q29kZXMoKSkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJhdGxhcy1zb2NpYWwtYnV0dG9uIGF0bGFzLXBhc3NrZXktYnV0dG9uXCJcbiAgICAgICAgZGF0YS1hdGxhcy1wYXNza2V5LXNpZ24taW49XCJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmxvdy5zdGF0ZSgpLmJ1c3lcIlxuICAgICAgICAoY2xpY2spPVwiZmxvdy5wYXNza2V5LnNpZ25JbigpXCJcbiAgICAgID5cbiAgICAgICAge3sgdCgnc2lnbkluLnBhc3NrZXlCdXR0b24nKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZmxvdy5zdGF0ZSgpLmF0dGVtcHQ/LnN0YXR1cyAhPT0gJ2NvbXBsZXRlJyAmJiBzaWduVXBIcmVmKCk7IGFzIGhyZWYpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtZm9vdGVyXCIgZGF0YS1hdGxhcy1zaWduLXVwLXByb21wdD1cIlwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubm9BY2NvdW50JykgfX0gPGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi5zaWduVXBMaW5rJykgfX08L2E+XG4gICAgICA8L3A+XG4gICAgfVxuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGF0bGFzID0gaW5qZWN0KEF0bGFzU2VydmljZSk7XG5cbiAgLyoqIE9wZW5lZCBmcm9tIGEgbWFpbGVkIGxpbms6IHRoYXQgcGFnZSwgbm90IHRoZSBmbG93LiBSZWFkIGFmdGVyIHRoZSBmaXJzdCByZW5kZXIsIHNvIGh5ZHJhdGlvbiBtYXRjaGVzLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1haWxMaW5rID0gc2lnbmFsPEVtYWlsTGluayB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB0aGlzLmVtYWlsTGluay5zZXQoZW1haWxMaW5rRnJvbVVybCh1bmRlZmluZWQsICdzaWduX2luJykpKTtcbiAgfVxuXG4gIC8qKiBXaGVyZSB0byBzZW5kIHRoZSB1c2VyIG9uY2UgdGhlIGZsb3cgY29tcGxldGVzLiBSZXNlcnZlZCBmb3IgaG9zdCByb3V0aW5nLiAqL1xuICBASW5wdXQoKSBhZnRlclVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXJlIFwiTm8gYWNjb3VudD8gU2lnbiB1cFwiIGdvZXMuIERlZmF1bHQ6IHRoZSBpbnN0YW5jZSdzIGhvc3RlZCBzaWduLXVwXG4gICAqIHBhZ2UgKGNhcnJ5aW5nIHRoZSB2aXNpdG9yJ3MgcmVmZXJyYWwpLiBgbnVsbGAgaGlkZXMgaXQuIEFsd2F5cyBzaG93biwgbmV2ZXJcbiAgICogb25seSBhZnRlciBhIGZhaWxlZCBzaWduLWluLCBzbyBpdCBzYXlzIG5vdGhpbmcgYWJvdXQgd2hldGhlciBhbiBlbWFpbCBoYXMgYW4gYWNjb3VudC5cbiAgICovXG4gIEBJbnB1dCgpIHNpZ25VcFVybD86IHN0cmluZyB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSk7XG4gIH1cblxuICAvKiogXCJMYXN0IHVzZWQ6IFBhc3N3b3JkXCIgb24gdGhlIGlkZW50aWZpZXIgc3RlcCwgd2hlbiB0aGUgaW5zdGFuY2Ugc2hvd3MgdGhlIGhpbnQuICovXG4gIHByb3RlY3RlZCBsYXN0VXNlZExhYmVsKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmZsb3cuc3RhdGUoKS5hdHRlbXB0KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbGFzdFVzZWRNZXRob2RMYWJlbCh0aGlzLmZsb3cubGFzdE1ldGhvZCgpLCAoa2V5KSA9PiB0aGlzLnQoa2V5KSk7XG4gIH1cblxuICAvKiogVGhlIFwiU2lnbiBpbiB3aXRoIEF0bGFzXCIgY29ubmVjdGlvbiwgb24gdGhlIGZpcnN0IHN0ZXAsIHdoZW4gdGhlIGluc3RhbmNlIGhhcyBpdCBvbi4gKi9cbiAgcHJvdGVjdGVkIGF0bGFzQ29ubmVjdGlvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mbG93LnN0YXRlKCkuYXR0ZW1wdCB8fCB0aGlzLmZsb3cucmVjb3ZlcnlDb2RlcygpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5mbG93LnNldHRpbmdzKCk/LnNpZ25JbldpdGhBdGxhcz8uY29ubmVjdGlvbklkID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2lnblVwSHJlZigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5zaWduVXBVcmwgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgIGlmICh0aGlzLnNpZ25VcFVybCkgcmV0dXJuIHRoaXMuc2lnblVwVXJsO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gaG9zdGVkU2lnblVwKHtcbiAgICAgICAgZnJvbnRlbmRBcGk6IHRoaXMuYXRsYXMuZnJvbnRlbmRBcGksXG4gICAgICAgIHJlZGlyZWN0VXJsOiB0aGlzLmFmdGVyVXJsID8/ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogdW5kZWZpbmVkKSxcbiAgICAgICAgbmF2aWdhdGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmxvdyA9IG5ldyBBdGxhc0Zsb3dDb250cm9sbGVyKFxuICAgIHRoaXMuYXRsYXMuY3JlYXRlRmFwaUNsaWVudCgpLFxuICAgICgpID0+IHRoaXMuYXRsYXMucmVsb2FkKCksXG4gICAgLy8gUmVzdW1lIG1pZC1mbG93IGlmIGFuIE9BdXRoIHJlZGlyZWN0IGNhbWUgYmFjayBvd2luZyBhIHNlY29uZCBmYWN0b3IuXG4gICAgdGhpcy5hdGxhcy5wZW5kaW5nQXR0ZW1wdCxcbiAgICAoa2V5KSA9PiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSksXG4gICk7XG5cbiAgLy8gUGFzc2tleSBhdXRvZmlsbCBydW5zIHdoaWxlIHRoZSBmaXJzdCBzdGVwIG9mZmVycyBwYXNza2V5cyAoYSBjb21wdXRlZCwgc28gaXQgcmUtYXJtcyBvbmx5IHdoZW4gdGhhdCBjaGFuZ2VzKS5cbiAgcHJpdmF0ZSByZWFkb25seSBwYXNza2V5T2ZmZXJlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvdy5wYXNza2V5T2ZmZXJlZCgpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhc3NrZXlBdXRvZmlsbCA9IGVmZmVjdCgoKSA9PiAodGhpcy5wYXNza2V5T2ZmZXJlZCgpID8gdGhpcy5mbG93LnBhc3NrZXkuYXJtQXV0b2ZpbGwoKSA6IHRoaXMuZmxvdy5wYXNza2V5LnN0b3BBdXRvZmlsbCgpKSk7XG5cbiAgcHJvdGVjdGVkIHN1Ym1pdElkZW50aWZpZXIodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5mbG93LnBhc3NrZXkuc3RvcEF1dG9maWxsKCk7XG4gICAgdm9pZCB0aGlzLmZsb3cuc3VibWl0KHZhbHVlcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHRoaXMuZmxvdy5wYXNza2V5U3VwcG9ydGVkLnNldChwYXNza2V5c1N1cHBvcnRlZCgpKTtcbiAgICAvLyBJZiBzZWVkZWQgZnJvbSBhIHBlbmRpbmcgYXR0ZW1wdCB0aGF0IGlzIGFscmVhZHkgcG9sbGFibGUsIHN0YXJ0IHBvbGxpbmcuXG4gICAgdGhpcy5mbG93LnN5bmNQb2xsaW5nKCk7XG4gICAgLy8gwqc1IHRoZSBpbnN0YW5jZSdzIGNhcHRjaGEgc2V0dGluZ3MgKHN3aXRjaGluZyBjYXB0Y2hhIG9uIGluIHRoZSBkYXNoYm9hcmRcbiAgICAvLyBkcmF3cyBpdCBoZXJlIHdpdGggbm8gY29kZSBjaGFuZ2UpIGFuZCBlbWFpbCBkZWxpdmVyeSAobm8gZW1haWxlZC1jb2RlXG4gICAgLy8gb3B0aW9uIHdoaWxlIHRoZSBhcHAgY2Fubm90IHNlbmQgZW1haWwpLlxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgdm9pZCB0aGlzLmZsb3cubG9hZFNldHRpbmdzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZsb3cuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1pbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sZUFBZSxFQUNmLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxJQUFJLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFeEQ7Ozs7Ozs7OztHQVNHO0FBdUVILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5Qyw2R0FBNkc7SUFDMUYsU0FBUyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFFOUQ7UUFDRSxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsaUZBQWlGO0lBQ3hFLFFBQVEsQ0FBVTtJQUMzQjs7OztPQUlHO0lBQ00sU0FBUyxDQUFpQjtJQUV6QixDQUFDLENBQUMsR0FBVztRQUNyQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsc0ZBQXNGO0lBQzVFLGFBQWE7UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsMkZBQTJGO0lBQ2pGLGVBQWU7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQztJQUNyRSxDQUFDO0lBRVMsVUFBVTtRQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxZQUFZLENBQUM7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7Z0JBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNoRyxRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVrQixJQUFJLEdBQUcsSUFBSSxtQkFBbUIsQ0FDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxFQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtJQUN6Qix3RUFBd0U7SUFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQ3pCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQ2pELENBQUM7SUFFRixpSEFBaUg7SUFDaEcsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDMUQsZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0SSxnQkFBZ0IsQ0FBQyxNQUE4QjtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNqQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLDRFQUE0RTtRQUM1RSx5RUFBeUU7UUFDekUsMkNBQTJDO1FBQzNDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVztZQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQzt3R0E5RVUsZUFBZTs0RkFBZixlQUFlLG1JQWpFaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStEVCw0REFoRVMsa0JBQWtCLCtFQUFFLG9CQUFvQix1ZkFBRSxzQkFBc0I7OzRGQWtFL0QsZUFBZTtrQkF0RTNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLENBQUM7b0JBQzNFLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0RUO2lCQUNGO3dEQVlVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlbWFpbExpbmtGcm9tVXJsLCB0eXBlIEVtYWlsTGluayB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgbGFzdFVzZWRNZXRob2RMYWJlbCwgcGFzc2tleXNTdXBwb3J0ZWQsIHNpZ25VcCBhcyBob3N0ZWRTaWduVXAgfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEF0bGFzU2VydmljZSB9IGZyb20gJy4uL2F0bGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBBdHRlbXB0Rmxvd0NvbXBvbmVudCB9IGZyb20gJy4vYXR0ZW1wdC1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbWFpbExpbmtDb21wb25lbnQgfSBmcm9tICcuL2VtYWlsLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IFJlY292ZXJ5Q29kZXNDb21wb25lbnQgfSBmcm9tICcuL3JlY292ZXJ5LWNvZGVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdGxhc0Zsb3dDb250cm9sbGVyIH0gZnJvbSAnLi9mbG93LWNvbnRyb2xsZXInO1xuXG4vKipcbiAqIGA8YXRsYXMtc2lnbi1pbj5gIOKAlCB0aGUgZnVsbCwgbXVsdGktc3RlcCBzaWduLWluIGZsb3cgZHJpdmVuIGVudGlyZWx5IGJ5IHRoZVxuICogc2VydmVyLXNpZGUgYXR0ZW1wdCBzdGF0dXMuIFRoZSBBbmd1bGFyIHBlZXIgb2YgUmVhY3QncyBgPFNpZ25Jbi8+YC4gRHJhd3MgdGhlXG4gKiBpbnN0YW5jZSdzIHNpZ24taW4gY2FwdGNoYSB3aGVuIGl0IGlzIHJlcXVpcmVkIChhbHdheXMtb24sIG9yIGFcbiAqIGBuZWVkc19jYXB0Y2hhYCBjaGFsbGVuZ2UpLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxhdGxhcy1zaWduLWluICphdGxhc1NpZ25lZE91dCBhZnRlclVybD1cIi9kYXNoYm9hcmRcIj48L2F0bGFzLXNpZ24taW4+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRsYXMtc2lnbi1pbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbRW1haWxMaW5rQ29tcG9uZW50LCBBdHRlbXB0Rmxvd0NvbXBvbmVudCwgUmVjb3ZlcnlDb2Rlc0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChlbWFpbExpbmsoKTsgYXMgbGluaykge1xuICAgICAgPGF0bGFzLWVtYWlsLWxpbmsgW2xpbmtdPVwibGlua1wiPjwvYXRsYXMtZW1haWwtbGluaz5cbiAgICB9IEBlbHNlIHtcbiAgICBAaWYgKGxhc3RVc2VkTGFiZWwoKTsgYXMgbGFiZWwpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dCBhdGxhcy1sYXN0LXVzZWQtaGludFwiIGRhdGEtYXRsYXM9XCJsYXN0LXVzZWRcIiBbYXR0ci5kYXRhLWF0bGFzLW1ldGhvZF09XCJmbG93Lmxhc3RNZXRob2QoKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubGFzdFVzZWQnKSB9fToge3sgbGFiZWwgfX1cbiAgICAgIDwvcD5cbiAgICB9XG4gICAgQGlmIChhdGxhc0Nvbm5lY3Rpb24oKTsgYXMgY29ubmVjdGlvbklkKSB7XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF0bGFzLXNvY2lhbC1idXR0b25cIiBkYXRhLWF0bGFzLXByb3ZpZGVyPVwiYXRsYXNcIiAoY2xpY2spPVwiZmxvdy5zaWduSW5XaXRoQXRsYXMoY29ubmVjdGlvbklkKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4uY29udGludWVXaXRoQXRsYXMnKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICBAaWYgKGZsb3cuc2lnbkluV2l0aEF0bGFzRXJyb3IoKTsgYXMgbWVzc2FnZSkge1xuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLWVycm9yXCIgcm9sZT1cImFsZXJ0XCI+e3sgbWVzc2FnZSB9fTwvcD5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChmbG93LnJlY292ZXJ5Q29kZXMoKTsgYXMgY29kZXMpIHtcbiAgICAgIDxhdGxhcy1yZWNvdmVyeS1jb2RlcyBbY29kZXNdPVwiY29kZXNcIiBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiIChzYXZlZCk9XCJmbG93LnNhdmVSZWNvdmVyeUNvZGVzKClcIj48L2F0bGFzLXJlY292ZXJ5LWNvZGVzPlxuICAgIH0gQGVsc2Uge1xuICAgIDxhdGxhcy1hdHRlbXB0LWZsb3dcbiAgICAgIFthdHRlbXB0XT1cImZsb3cuc3RhdGUoKS5hdHRlbXB0XCJcbiAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICBbc2Vzc2lvbktlcHRdPVwiZmxvdy5zdGF0ZSgpLnNlc3Npb25LZXB0XCJcbiAgICAgIHRpdGxlS2V5PVwic2lnbkluLnRpdGxlXCJcbiAgICAgIFtjYXB0Y2hhXT1cImZsb3cuY2FwdGNoYURyYXduKCkgPyBmbG93LmNhcHRjaGEgOiBudWxsXCJcbiAgICAgIFtmaXJzdEZhY3RvcnNdPVwiZmxvdy5maXJzdEZhY3RvcnMoKVwiXG4gICAgICBbcHJlcGFyZWRGYWN0b3JdPVwiZmxvdy5wcmVwYXJlZEZhY3RvcigpXCJcbiAgICAgIFttYXRjaENvZGVdPVwiZmxvdy5zdGF0ZSgpLm1hdGNoQ29kZSA/PyBudWxsXCJcbiAgICAgIFtwYXNzd29yZEhvbGRdPVwiZmxvdy5zdGF0ZSgpLnBhc3N3b3JkSG9sZCA/PyBudWxsXCJcbiAgICAgIFtob2xkUHJvb2ZdPVwiZmxvdy5ob2xkUHJvb2YoKVwiXG4gICAgICAodXNlUGFzc3dvcmQpPVwiZmxvdy51c2VQYXNzd29yZCgpXCJcbiAgICAgIFtvZmZlckVtYWlsU2Vjb25kRmFjdG9yXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxTZWNvbmRGYWN0b3IgPT09IHRydWVcIlxuICAgICAgW2VtYWlsZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5lbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzdWJtaXRGbG93KT1cInN1Ym1pdElkZW50aWZpZXIoJGV2ZW50KVwiXG4gICAgICAoY2hvb3NlRmFjdG9yKT1cImZsb3cucHJlcGFyZSgkZXZlbnQpXCJcbiAgICAgIFtvZmZlclNtc1NlY29uZEZhY3Rvcl09XCJmbG93LnNldHRpbmdzKCkgIT09IG51bGwgJiYgZmxvdy5tZmFDaG9pY2VzKCkuc21zXCJcbiAgICAgIFt0ZXh0ZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5zbXNTZWNvbmRGYWN0b3IoKVwiXG4gICAgICBbZW5yb2xsbWVudF09XCJmbG93LmVucm9sbG1lbnRcIlxuICAgICAgW2Vucm9sbG1lbnRTdGF0ZV09XCJmbG93LmVucm9sbG1lbnRTdGF0ZSgpXCJcbiAgICAgIChlbWFpbFNlY29uZEZhY3Rvcik9XCJmbG93LnNlbmRFbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzbXNTZWNvbmRGYWN0b3IpPVwiZmxvdy5zZW5kU21zU2Vjb25kRmFjdG9yKClcIlxuICAgICAgKHBvbGljeURlY2xpbmVkKT1cImZsb3cuZGVjbGluZVBvbGljeSgkZXZlbnQpXCJcbiAgICA+PC9hdGxhcy1hdHRlbXB0LWZsb3c+XG4gICAgfVxuICAgIEBpZiAoZmxvdy5wYXNza2V5T2ZmZXJlZCgpICYmICFmbG93LnJlY292ZXJ5Q29kZXMoKSkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJhdGxhcy1zb2NpYWwtYnV0dG9uIGF0bGFzLXBhc3NrZXktYnV0dG9uXCJcbiAgICAgICAgZGF0YS1hdGxhcy1wYXNza2V5LXNpZ24taW49XCJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmxvdy5zdGF0ZSgpLmJ1c3lcIlxuICAgICAgICAoY2xpY2spPVwiZmxvdy5wYXNza2V5LnNpZ25JbigpXCJcbiAgICAgID5cbiAgICAgICAge3sgdCgnc2lnbkluLnBhc3NrZXlCdXR0b24nKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZmxvdy5zdGF0ZSgpLmF0dGVtcHQ/LnN0YXR1cyAhPT0gJ2NvbXBsZXRlJyAmJiBzaWduVXBIcmVmKCk7IGFzIGhyZWYpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtZm9vdGVyXCIgZGF0YS1hdGxhcy1zaWduLXVwLXByb21wdD1cIlwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubm9BY2NvdW50JykgfX0gPGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi5zaWduVXBMaW5rJykgfX08L2E+XG4gICAgICA8L3A+XG4gICAgfVxuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGF0bGFzID0gaW5qZWN0KEF0bGFzU2VydmljZSk7XG5cbiAgLyoqIE9wZW5lZCBmcm9tIGEgbWFpbGVkIGxpbms6IHRoYXQgcGFnZSwgbm90IHRoZSBmbG93LiBSZWFkIGFmdGVyIHRoZSBmaXJzdCByZW5kZXIsIHNvIGh5ZHJhdGlvbiBtYXRjaGVzLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1haWxMaW5rID0gc2lnbmFsPEVtYWlsTGluayB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB0aGlzLmVtYWlsTGluay5zZXQoZW1haWxMaW5rRnJvbVVybCh1bmRlZmluZWQsICdzaWduX2luJykpKTtcbiAgfVxuXG4gIC8qKiBXaGVyZSB0byBzZW5kIHRoZSB1c2VyIG9uY2UgdGhlIGZsb3cgY29tcGxldGVzLiBSZXNlcnZlZCBmb3IgaG9zdCByb3V0aW5nLiAqL1xuICBASW5wdXQoKSBhZnRlclVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXJlIFwiTm8gYWNjb3VudD8gU2lnbiB1cFwiIGdvZXMuIERlZmF1bHQ6IHRoZSBpbnN0YW5jZSdzIGhvc3RlZCBzaWduLXVwXG4gICAqIHBhZ2UgKGNhcnJ5aW5nIHRoZSB2aXNpdG9yJ3MgcmVmZXJyYWwpLiBgbnVsbGAgaGlkZXMgaXQuIEFsd2F5cyBzaG93biwgbmV2ZXJcbiAgICogb25seSBhZnRlciBhIGZhaWxlZCBzaWduLWluLCBzbyBpdCBzYXlzIG5vdGhpbmcgYWJvdXQgd2hldGhlciBhbiBlbWFpbCBoYXMgYW4gYWNjb3VudC5cbiAgICovXG4gIEBJbnB1dCgpIHNpZ25VcFVybD86IHN0cmluZyB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSk7XG4gIH1cblxuICAvKiogXCJMYXN0IHVzZWQ6IFBhc3N3b3JkXCIgb24gdGhlIGlkZW50aWZpZXIgc3RlcCwgd2hlbiB0aGUgaW5zdGFuY2Ugc2hvd3MgdGhlIGhpbnQuICovXG4gIHByb3RlY3RlZCBsYXN0VXNlZExhYmVsKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmZsb3cuc3RhdGUoKS5hdHRlbXB0KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbGFzdFVzZWRNZXRob2RMYWJlbCh0aGlzLmZsb3cubGFzdE1ldGhvZCgpLCAoa2V5KSA9PiB0aGlzLnQoa2V5KSk7XG4gIH1cblxuICAvKiogVGhlIFwiU2lnbiBpbiB3aXRoIEF0bGFzXCIgY29ubmVjdGlvbiwgb24gdGhlIGZpcnN0IHN0ZXAsIHdoZW4gdGhlIGluc3RhbmNlIGhhcyBpdCBvbi4gKi9cbiAgcHJvdGVjdGVkIGF0bGFzQ29ubmVjdGlvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mbG93LnN0YXRlKCkuYXR0ZW1wdCB8fCB0aGlzLmZsb3cucmVjb3ZlcnlDb2RlcygpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5mbG93LnNldHRpbmdzKCk/LnNpZ25JbldpdGhBdGxhcz8uY29ubmVjdGlvbklkID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2lnblVwSHJlZigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5zaWduVXBVcmwgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgIGlmICh0aGlzLnNpZ25VcFVybCkgcmV0dXJuIHRoaXMuc2lnblVwVXJsO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gaG9zdGVkU2lnblVwKHtcbiAgICAgICAgZnJvbnRlbmRBcGk6IHRoaXMuYXRsYXMuZnJvbnRlbmRBcGksXG4gICAgICAgIHJlZGlyZWN0VXJsOiB0aGlzLmFmdGVyVXJsID8/ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogdW5kZWZpbmVkKSxcbiAgICAgICAgbmF2aWdhdGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmxvdyA9IG5ldyBBdGxhc0Zsb3dDb250cm9sbGVyKFxuICAgIHRoaXMuYXRsYXMuY3JlYXRlRmFwaUNsaWVudCgpLFxuICAgICgpID0+IHRoaXMuYXRsYXMucmVsb2FkKCksXG4gICAgLy8gUmVzdW1lIG1pZC1mbG93IGlmIGFuIE9BdXRoIHJlZGlyZWN0IGNhbWUgYmFjayBvd2luZyBhIHNlY29uZCBmYWN0b3IuXG4gICAgdGhpcy5hdGxhcy5wZW5kaW5nQXR0ZW1wdCxcbiAgICAoa2V5KSA9PiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSksXG4gICk7XG5cbiAgLy8gUGFzc2tleSBhdXRvZmlsbCBydW5zIHdoaWxlIHRoZSBmaXJzdCBzdGVwIG9mZmVycyBwYXNza2V5cyAoYSBjb21wdXRlZCwgc28gaXQgcmUtYXJtcyBvbmx5IHdoZW4gdGhhdCBjaGFuZ2VzKS5cbiAgcHJpdmF0ZSByZWFkb25seSBwYXNza2V5T2ZmZXJlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvdy5wYXNza2V5T2ZmZXJlZCgpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhc3NrZXlBdXRvZmlsbCA9IGVmZmVjdCgoKSA9PiAodGhpcy5wYXNza2V5T2ZmZXJlZCgpID8gdGhpcy5mbG93LnBhc3NrZXkuYXJtQXV0b2ZpbGwoKSA6IHRoaXMuZmxvdy5wYXNza2V5LnN0b3BBdXRvZmlsbCgpKSk7XG5cbiAgcHJvdGVjdGVkIHN1Ym1pdElkZW50aWZpZXIodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5mbG93LnBhc3NrZXkuc3RvcEF1dG9maWxsKCk7XG4gICAgdm9pZCB0aGlzLmZsb3cuc3VibWl0KHZhbHVlcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHRoaXMuZmxvdy5wYXNza2V5U3VwcG9ydGVkLnNldChwYXNza2V5c1N1cHBvcnRlZCgpKTtcbiAgICAvLyBJZiBzZWVkZWQgZnJvbSBhIHBlbmRpbmcgYXR0ZW1wdCB0aGF0IGlzIGFscmVhZHkgcG9sbGFibGUsIHN0YXJ0IHBvbGxpbmcuXG4gICAgdGhpcy5mbG93LnN5bmNQb2xsaW5nKCk7XG4gICAgLy8gwqc1IHRoZSBpbnN0YW5jZSdzIGNhcHRjaGEgc2V0dGluZ3MgKHN3aXRjaGluZyBjYXB0Y2hhIG9uIGluIHRoZSBkYXNoYm9hcmRcbiAgICAvLyBkcmF3cyBpdCBoZXJlIHdpdGggbm8gY29kZSBjaGFuZ2UpIGFuZCBlbWFpbCBkZWxpdmVyeSAobm8gZW1haWxlZC1jb2RlXG4gICAgLy8gb3B0aW9uIHdoaWxlIHRoZSBhcHAgY2Fubm90IHNlbmQgZW1haWwpLlxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgdm9pZCB0aGlzLmZsb3cubG9hZFNldHRpbmdzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZsb3cuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -149,6 +149,7 @@ export class SignUpComponent {
|
|
|
149
149
|
(emailSecondFactor)="flow.sendEmailSecondFactor()"
|
|
150
150
|
(smsSecondFactor)="flow.sendSmsSecondFactor()"
|
|
151
151
|
(policyDeclined)="flow.declinePolicy($event)"
|
|
152
|
+
[signInHref]="signInHref()"
|
|
152
153
|
></atlas-attempt-flow>
|
|
153
154
|
} @else {
|
|
154
155
|
<atlas-sign-up-form
|
|
@@ -166,7 +167,7 @@ export class SignUpComponent {
|
|
|
166
167
|
></atlas-sign-up-form>
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
|
-
`, isInline: true, dependencies: [{ kind: "component", type: EmailLinkComponent, selector: "atlas-email-link", inputs: ["link"] }, { kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification", "matchCode"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: RecoveryCodesComponent, selector: "atlas-recovery-codes", inputs: ["codes", "busy"], outputs: ["saved"] }, { kind: "component", type: SignUpFormComponent, selector: "atlas-sign-up-form", inputs: ["settings", "busy", "errors", "captcha", "passkey", "switchable", "policies"], outputs: ["switchMode", "submitSignUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
170
|
+
`, isInline: true, dependencies: [{ kind: "component", type: EmailLinkComponent, selector: "atlas-email-link", inputs: ["link"] }, { kind: "component", type: AttemptFlowComponent, selector: "atlas-attempt-flow", inputs: ["attempt", "busy", "errors", "sessionKept", "titleKey", "signInHref", "captcha", "firstFactors", "preparedFactor", "passwordHold", "holdProof", "offerEmailSecondFactor", "emailedSecondFactor", "offerSmsSecondFactor", "textedSecondFactor", "enrollment", "enrollmentState", "emailVerification", "matchCode"], outputs: ["submitFlow", "chooseFactor", "usePassword", "emailSecondFactor", "smsSecondFactor", "resend", "policyDeclined"] }, { kind: "component", type: RecoveryCodesComponent, selector: "atlas-recovery-codes", inputs: ["codes", "busy"], outputs: ["saved"] }, { kind: "component", type: SignUpFormComponent, selector: "atlas-sign-up-form", inputs: ["settings", "busy", "errors", "captcha", "passkey", "switchable", "policies"], outputs: ["switchMode", "submitSignUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
170
171
|
}
|
|
171
172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignUpComponent, decorators: [{
|
|
172
173
|
type: Component,
|
|
@@ -241,6 +242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
241
242
|
(emailSecondFactor)="flow.sendEmailSecondFactor()"
|
|
242
243
|
(smsSecondFactor)="flow.sendSmsSecondFactor()"
|
|
243
244
|
(policyDeclined)="flow.declinePolicy($event)"
|
|
245
|
+
[signInHref]="signInHref()"
|
|
244
246
|
></atlas-attempt-flow>
|
|
245
247
|
} @else {
|
|
246
248
|
<atlas-sign-up-form
|
|
@@ -267,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
267
269
|
}], signInUrl: [{
|
|
268
270
|
type: Input
|
|
269
271
|
}] } });
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi11cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFHTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXhEOzs7Ozs7Ozs7OztHQVdHO0FBMkZILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5Qyw2R0FBNkc7SUFDMUYsU0FBUyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFFOUQ7UUFDRSxlQUFlLENBQUMsR0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1GVDtpQkFDRjt3REFZVSxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGVtYWlsTGlua0Zyb21VcmwsIHR5cGUgRW1haWxMaW5rIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5pbXBvcnQgeyBhd2FpdGluZ1Bhc3NrZXksIGV4aXN0aW5nQWNjb3VudFJlc2V0VXJsLCBsb2NhbGl6ZWRFcnJvck1lc3NhZ2UsIHBhc3NrZXlzU3VwcG9ydGVkLCBzaWduSW5BZnRlclByb29mVXJsLCBzaWduVXBQcm92ZWRCeUxpbmssIHR5cGUgRmllbGRFcnJvciB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgQXRsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRsYXMuc2VydmljZSc7XG5pbXBvcnQgeyBjbGFzc0ZvciwgdHlwZSBFbGVtZW50S2V5IH0gZnJvbSAnLi4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICcuLi9pMThuJztcbmltcG9ydCB7IEF0dGVtcHRGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRlbXB0LWZsb3cuY29tcG9uZW50JztcbmltcG9ydCB7IEVtYWlsTGlua0NvbXBvbmVudCB9IGZyb20gJy4vZW1haWwtbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVjb3ZlcnlDb2Rlc0NvbXBvbmVudCB9IGZyb20gJy4vcmVjb3ZlcnktY29kZXMuY29tcG9uZW50JztcbmltcG9ydCB7IFNpZ25VcEZvcm1Db21wb25lbnQgfSBmcm9tICcuL3NpZ24tdXAtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXRsYXNGbG93Q29udHJvbGxlciB9IGZyb20gJy4vZmxvdy1jb250cm9sbGVyJztcblxuLyoqXG4gKiBgPGF0bGFzLXNpZ24tdXA+YCDigJQgY3JlYXRlcyBhbiBhY2NvdW50LiBUaGUgQW5ndWxhciBwZWVyIG9mIFJlYWN0J3NcbiAqIGA8U2lnblVwLz5gLiBUaGUgZmlyc3Qgc3RlcCBpcyB0aGUgY3JlYXRlLWFjY291bnQgZm9ybSAodGhlIGluc3RhbmNlJ3NcbiAqIGNvbmZpZ3VyZWQgZmllbGRzLCBlbWFpbCwgcGFzc3dvcmQsIGxlZ2FsIGNvbnNlbnQgYW5kIOKAlCB3aGVuIHJlcXVpcmVkIOKAlCB0aGVcbiAqIGNhcHRjaGEpLCB3aGljaCBQT1NUcyBgL3YxL2NsaWVudC9zaWduX3Vwc2A7IGZyb20gdGhlcmUgaXQgc2hhcmVzIHRoZSBmbG93XG4gKiBlbmdpbmUgd2l0aCBgPGF0bGFzLXNpZ24taW4+YCAodGhlIGVtYWlsZWQtY29kZSBzdGVwLCB0aGVuIHRoZSB0aWNrZXRcbiAqIGV4Y2hhbmdlKSwgYmVjYXVzZSB0aGUgc2VxdWVuY2Ugb2Ygc3RlcHMgaXMgZGVjaWRlZCBieSB0aGUgc2VydmVyLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxhdGxhcy1zaWduLXVwICphdGxhc1NpZ25lZE91dD48L2F0bGFzLXNpZ24tdXA+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRsYXMtc2lnbi11cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbRW1haWxMaW5rQ29tcG9uZW50LCBBdHRlbXB0Rmxvd0NvbXBvbmVudCwgUmVjb3ZlcnlDb2Rlc0NvbXBvbmVudCwgU2lnblVwRm9ybUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChlbWFpbExpbmsoKTsgYXMgbGluaykge1xuICAgICAgPGF0bGFzLWVtYWlsLWxpbmsgW2xpbmtdPVwibGlua1wiPjwvYXRsYXMtZW1haWwtbGluaz5cbiAgICB9IEBlbHNlIHtcbiAgICBAaWYgKGZsb3cucmVjb3ZlcnlDb2RlcygpOyBhcyBjb2Rlcykge1xuICAgICAgPGF0bGFzLXJlY292ZXJ5LWNvZGVzIFtjb2Rlc109XCJjb2Rlc1wiIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCIgKHNhdmVkKT1cImZsb3cuc2F2ZVJlY292ZXJ5Q29kZXMoKVwiPjwvYXRsYXMtcmVjb3ZlcnktY29kZXM+XG4gICAgfSBAZWxzZSBpZiAoZmxvdy5leGlzdGluZ0FjY291bnROb3RpY2UoKSkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwiY2xzKCdjYXJkJywgJ2F0bGFzLWNhcmQnKVwiIGRhdGEtYXRsYXMtZXhpc3RpbmctYWNjb3VudD1cIlwiPlxuICAgICAgICA8aDEgW2NsYXNzXT1cImNscygnaGVhZGVyVGl0bGUnLCAnYXRsYXMtdGl0bGUnKVwiPnt7IHQoJ3NpZ25VcC50aXRsZScpIH19PC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+e3sgdCgnc2lnblVwLmV4aXN0aW5nQWNjb3VudCcpIH19PC9wPlxuICAgICAgICBAaWYgKHJlc2V0SHJlZigpOyBhcyBocmVmKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCI+PGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi5mb3Jnb3RQYXNzd29yZCcpIH19PC9hPjwvcD5cbiAgICAgICAgfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY29udGludWVBZnRlckV4aXN0aW5nQWNjb3VudCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoJ3NpZ25VcC5zdWJtaXQnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKGF3YWl0aW5nUGFzc2tleSgpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjbHMoJ2NhcmQnLCAnYXRsYXMtY2FyZCcpXCIgZGF0YS1hdGxhcy1wYXNza2V5LXNpZ24tdXA9XCJcIj5cbiAgICAgICAgPGgxIFtjbGFzc109XCJjbHMoJ2hlYWRlclRpdGxlJywgJ2F0bGFzLXRpdGxlJylcIj57eyB0KCdzaWduVXAudGl0bGUnKSB9fTwvaDE+XG4gICAgICAgIEBmb3IgKGVycm9yIG9mIGZsb3cuc3RhdGUoKS5lcnJvcnM7IHRyYWNrIGVycm9yLmNvZGUpIHtcbiAgICAgICAgICA8cCBbY2xhc3NdPVwiY2xzKCdmb3JtRmllbGRFcnJvcicsICdhdGxhcy1lcnJvcicpXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JUZXh0KGVycm9yKSB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdzaWduVXAucGFzc2tleVByb21wdCcpIH19PC9wPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblByaW1hcnknLCAnYXRsYXMtYnV0dG9uJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY3JlYXRlUGFzc2tleSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoJ3NpZ25VcC5wYXNza2V5Q3JlYXRlJykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmIChlbWFpbENvbmZpcm1lZCgpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjbHMoJ2NhcmQnLCAnYXRsYXMtY2FyZCcpXCIgZGF0YS1hdGxhcy1lbWFpbC1jb25maXJtZWQ9XCJcIj5cbiAgICAgICAgPGgxIFtjbGFzc109XCJjbHMoJ2hlYWRlclRpdGxlJywgJ2F0bGFzLXRpdGxlJylcIj57eyB0KCdzaWduVXAudGl0bGUnKSB9fTwvaDE+XG4gICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiIHJvbGU9XCJzdGF0dXNcIj57eyB0KCdzaWduVXAuZW1haWxDb25maXJtZWQnKSB9fTwvcD5cbiAgICAgICAgQGlmIChzaWduSW5IcmVmKCk7IGFzIGhyZWYpIHtcbiAgICAgICAgICA8YSBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uUHJpbWFyeScsICdhdGxhcy1idXR0b24nKVwiIFtocmVmXT1cImhyZWZcIj57eyB0KCdzaWduSW4udGl0bGUnKSB9fTwvYT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAoZmxvdy5zdGF0ZSgpLmF0dGVtcHQpIHtcbiAgICAgIDxhdGxhcy1hdHRlbXB0LWZsb3dcbiAgICAgICAgW2F0dGVtcHRdPVwiZmxvdy5zdGF0ZSgpLmF0dGVtcHRcIlxuICAgICAgICBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICAgIFtzZXNzaW9uS2VwdF09XCJmbG93LnN0YXRlKCkuc2Vzc2lvbktlcHRcIlxuICAgICAgICB0aXRsZUtleT1cInNpZ25VcC50aXRsZVwiXG4gICAgICAgIFtlbWFpbFZlcmlmaWNhdGlvbl09XCJmbG93LnNldHRpbmdzKCk/LmFjY291bnQ/LmVtYWlsVmVyaWZpY2F0aW9uID8/ICdjb2RlJ1wiXG4gICAgICAgIChzdWJtaXRGbG93KT1cImZsb3cuc3VibWl0KCRldmVudClcIlxuICAgICAgICAocmVzZW5kKT1cImZsb3cucmVzZW5kU2lnblVwKClcIlxuICAgICAgICBbbWF0Y2hDb2RlXT1cImZsb3cuc3RhdGUoKS5tYXRjaENvZGUgPz8gbnVsbFwiXG4gICAgICAgIFtvZmZlckVtYWlsU2Vjb25kRmFjdG9yXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxTZWNvbmRGYWN0b3IgPT09IHRydWVcIlxuICAgICAgICBbZW1haWxlZFNlY29uZEZhY3Rvcl09XCJmbG93LmVtYWlsU2Vjb25kRmFjdG9yKClcIlxuICAgICAgICBbb2ZmZXJTbXNTZWNvbmRGYWN0b3JdPVwiZmxvdy5zZXR0aW5ncygpICE9PSBudWxsICYmIGZsb3cubWZhQ2hvaWNlcygpLnNtc1wiXG4gICAgICAgIFt0ZXh0ZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5zbXNTZWNvbmRGYWN0b3IoKVwiXG4gICAgICAgIFtlbnJvbGxtZW50XT1cImZsb3cuZW5yb2xsbWVudFwiXG4gICAgICAgIFtlbnJvbGxtZW50U3RhdGVdPVwiZmxvdy5lbnJvbGxtZW50U3RhdGUoKVwiXG4gICAgICAgIChlbWFpbFNlY29uZEZhY3Rvcik9XCJmbG93LnNlbmRFbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgICAgKHNtc1NlY29uZEZhY3Rvcik9XCJmbG93LnNlbmRTbXNTZWNvbmRGYWN0b3IoKVwiXG4gICAgICAgIChwb2xpY3lEZWNsaW5lZCk9XCJmbG93LmRlY2xpbmVQb2xpY3koJGV2ZW50KVwiXG4gICAgICA+PC9hdGxhcy1hdHRlbXB0LWZsb3c+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8YXRsYXMtc2lnbi11cC1mb3JtXG4gICAgICAgIFtzZXR0aW5nc109XCJmbG93LnNldHRpbmdzKClcIlxuICAgICAgICBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiXG4gICAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICAgIFtjYXB0Y2hhXT1cImZsb3cuc2lnblVwQ2FwdGNoYURyYXduKCkgPyBmbG93LnNpZ25VcENhcHRjaGEgOiBudWxsXCJcbiAgICAgICAgW3BvbGljaWVzXT1cImZsb3cucG9saWNpZXNcIlxuICAgICAgICBbcGFzc2tleV09XCJwYXNza2V5Rm9ybSgpXCJcbiAgICAgICAgW3N3aXRjaGFibGVdPVwiY2FuUGFzc2tleSgpXCJcbiAgICAgICAgKHN3aXRjaE1vZGUpPVwidG9nZ2xlTW9kZSgpXCJcbiAgICAgICAgKHN1Ym1pdFNpZ25VcCk9XCJcbiAgICAgICAgICBwYXNza2V5Rm9ybSgpID8gZmxvdy5jcmVhdGVXaXRoUGFzc2tleSgkZXZlbnQudmFsdWVzLCAkZXZlbnQuY29uc2VudCkgOiBmbG93LmNyZWF0ZSgkZXZlbnQudmFsdWVzLCAkZXZlbnQuY29uc2VudClcbiAgICAgICAgXCJcbiAgICAgID48L2F0bGFzLXNpZ24tdXAtZm9ybT5cbiAgICB9XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduVXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXRsYXMgPSBpbmplY3QoQXRsYXNTZXJ2aWNlKTtcblxuICAvKiogT3BlbmVkIGZyb20gYSBtYWlsZWQgbGluazogdGhhdCBwYWdlLCBub3QgdGhlIGZsb3cuIFJlYWQgYWZ0ZXIgdGhlIGZpcnN0IHJlbmRlciwgc28gaHlkcmF0aW9uIG1hdGNoZXMuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBlbWFpbExpbmsgPSBzaWduYWw8RW1haWxMaW5rIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHRoaXMuZW1haWxMaW5rLnNldChlbWFpbExpbmtGcm9tVXJsKHVuZGVmaW5lZCwgJ3NpZ25fdXAnKSkpO1xuICB9XG5cbiAgLyoqIFdoZXJlIHRvIHNlbmQgdGhlIHVzZXIgb25jZSB0aGUgZmxvdyBjb21wbGV0ZXMuIFJlc2VydmVkIGZvciBob3N0IHJvdXRpbmcuICovXG4gIEBJbnB1dCgpIGFmdGVyVXJsPzogc3RyaW5nO1xuXG4gIC8qKiBXaGVyZSB0aGUgZXhpc3RpbmctYWNjb3VudCBub3RpY2UncyBcIkZvcmdvdCBwYXNzd29yZD9cIiBnb2VzLiBEZWZhdWx0OiB0aGUgaG9zdGVkIHNpZ24taW4gcGFnZTsgYG51bGxgIGhpZGVzIGl0LiAqL1xuICBASW5wdXQoKSByZXNldFBhc3N3b3JkVXJsPzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogV2hlcmUgXCJTaWduIGluXCIgZ29lcyBvbmNlIGFuIGVtYWlsZWQgbGluayBjb25maXJtZWQgdGhlIGFkZHJlc3MgYW5kIG1hZGUgbm8gc2Vzc2lvbiBoZXJlLiBEZWZhdWx0OiB0aGUgaG9zdGVkIHNpZ24taW4gcGFnZTsgYG51bGxgIGhpZGVzIGl0LiAqL1xuICBASW5wdXQoKSBzaWduSW5Vcmw/OiBzdHJpbmcgfCBudWxsO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmbG93ID0gbmV3IEF0bGFzRmxvd0NvbnRyb2xsZXIoXG4gICAgdGhpcy5hdGxhcy5jcmVhdGVGYXBpQ2xpZW50KCksXG4gICAgKCkgPT4gdGhpcy5hdGxhcy5yZWxvYWQoKSxcbiAgICB0aGlzLmF0bGFzLnBlbmRpbmdBdHRlbXB0LFxuICAgIChrZXkpID0+IHRyYW5zbGF0ZSh0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwga2V5KSxcbiAgICB0cnVlLFxuICApO1xuXG4gIC8qKiBQYXNzd29yZCBvciBwYXNza2V5LW9ubHkgc2lnbi11cCAodGhlIGxhdHRlciB3aGVuIHRoZSBpbnN0YW5jZSBvZmZlcnMgaXQpLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZSA9IHNpZ25hbDwncGFzc3dvcmQnIHwgJ3Bhc3NrZXknPigncGFzc3dvcmQnKTtcblxuICBwcm90ZWN0ZWQgY2FuUGFzc2tleSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudC5wYXNza2V5U2lnblVwICYmIHBhc3NrZXlzU3VwcG9ydGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFzc2tleUZvcm0oKTogeyBlbWFpbDogJ29mZicgfCAnb3B0aW9uYWwnIHwgJ3JlcXVpcmVkJyB9IHwgbnVsbCB7XG4gICAgY29uc3Qgb2ZmZXIgPSB0aGlzLmZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudC5wYXNza2V5U2lnblVwID8/IG51bGw7XG4gICAgcmV0dXJuIHRoaXMubW9kZSgpID09PSAncGFzc2tleScgJiYgb2ZmZXIgJiYgdGhpcy5jYW5QYXNza2V5KCkgPyB7IGVtYWlsOiBvZmZlci5lbWFpbCB9IDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuZmxvdy5zdGF0ZS51cGRhdGUoKGN1cnJlbnQpID0+ICh7IC4uLmN1cnJlbnQsIGVycm9yczogW10gfSkpO1xuICAgIHRoaXMubW9kZS5zZXQodGhpcy5wYXNza2V5Rm9ybSgpID8gJ3Bhc3N3b3JkJyA6ICdwYXNza2V5Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRIcmVmKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiBleGlzdGluZ0FjY291bnRSZXNldFVybCh7IHVybDogdGhpcy5yZXNldFBhc3N3b3JkVXJsLCBmcm9udGVuZEFwaTogdGhpcy5hdGxhcy5mcm9udGVuZEFwaSwgcmVkaXJlY3RVcmw6IHRoaXMuYWZ0ZXJVcmwgfSk7XG4gIH1cblxuICAvKiogQSBsaW5rIGNvbmZpcm1lZCB0aGUgYWRkcmVzcyBhbmQgbWFkZSBubyBzZXNzaW9uIGhlcmUuIFNheXMgdGhlIHNhbWUgZm9yIGFueSBhZGRyZXNzLiAqL1xuICBwcm90ZWN0ZWQgZW1haWxDb25maXJtZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNpZ25VcFByb3ZlZEJ5TGluayh0aGlzLmZsb3cuc3RhdGUoKS5hdHRlbXB0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaWduSW5IcmVmKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiBzaWduSW5BZnRlclByb29mVXJsKHsgdXJsOiB0aGlzLnNpZ25JblVybCwgZnJvbnRlbmRBcGk6IHRoaXMuYXRsYXMuZnJvbnRlbmRBcGksIHJlZGlyZWN0VXJsOiB0aGlzLmFmdGVyVXJsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF3YWl0aW5nUGFzc2tleSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXdhaXRpbmdQYXNza2V5KHRoaXMuZmxvdy5zdGF0ZSgpLmF0dGVtcHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xzKGtleTogRWxlbWVudEtleSwgYmFzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2xhc3NGb3Ioa2V5LCB0aGlzLmF0bGFzLmFwcGVhcmFuY2UsIGJhc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVycm9yVGV4dChlcnJvcjogRmllbGRFcnJvcik6IHN0cmluZyB7XG4gICAgY29uc3QgbGF5ZXIgPSAodGhpcy5hdGxhcyBhcyB7IGVycm9yTG9jYWxpemF0aW9uPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9KS5lcnJvckxvY2FsaXphdGlvbjtcbiAgICByZXR1cm4gbG9jYWxpemVkRXJyb3JNZXNzYWdlKGVycm9yLCBsYXllciA/PyB0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwgdGhpcy5hdGxhcy5sb2NhbGl6YXRpb24pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gwqc1IHRoZSBpbnN0YW5jZSdzIHNpZ24tdXAgZmllbGRzLCBjb25zZW50IHBvbGljeSBhbmQgY2FwdGNoYSBzZXR0aW5ncy5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZvaWQgdGhpcy5mbG93LmxvYWRTZXR0aW5ncygpO1xuICAgICAgdm9pZCB0aGlzLmZsb3cubG9hZFBvbGljaWVzKHRoaXMuYXRsYXMubG9jYWxlID8/IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mbG93LmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi11cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFHTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXhEOzs7Ozs7Ozs7OztHQVdHO0FBNEZILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5Qyw2R0FBNkc7SUFDMUYsU0FBUyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFFOUQ7UUFDRSxlQUFlLENBQUMsR0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0ZUO2lCQUNGO3dEQVlVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBhZnRlck5leHRSZW5kZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZW1haWxMaW5rRnJvbVVybCwgdHlwZSBFbWFpbExpbmsgfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IGF3YWl0aW5nUGFzc2tleSwgZXhpc3RpbmdBY2NvdW50UmVzZXRVcmwsIGxvY2FsaXplZEVycm9yTWVzc2FnZSwgcGFzc2tleXNTdXBwb3J0ZWQsIHNpZ25JbkFmdGVyUHJvb2ZVcmwsIHNpZ25VcFByb3ZlZEJ5TGluaywgdHlwZSBGaWVsZEVycm9yIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5pbXBvcnQgeyBBdGxhc1NlcnZpY2UgfSBmcm9tICcuLi9hdGxhcy5zZXJ2aWNlJztcbmltcG9ydCB7IGNsYXNzRm9yLCB0eXBlIEVsZW1lbnRLZXkgfSBmcm9tICcuLi9hcHBlYXJhbmNlJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgQXR0ZW1wdEZsb3dDb21wb25lbnQgfSBmcm9tICcuL2F0dGVtcHQtZmxvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1haWxMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9lbWFpbC1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNvdmVyeUNvZGVzQ29tcG9uZW50IH0gZnJvbSAnLi9yZWNvdmVyeS1jb2Rlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lnblVwRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vc2lnbi11cC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdGxhc0Zsb3dDb250cm9sbGVyIH0gZnJvbSAnLi9mbG93LWNvbnRyb2xsZXInO1xuXG4vKipcbiAqIGA8YXRsYXMtc2lnbi11cD5gIOKAlCBjcmVhdGVzIGFuIGFjY291bnQuIFRoZSBBbmd1bGFyIHBlZXIgb2YgUmVhY3Qnc1xuICogYDxTaWduVXAvPmAuIFRoZSBmaXJzdCBzdGVwIGlzIHRoZSBjcmVhdGUtYWNjb3VudCBmb3JtICh0aGUgaW5zdGFuY2Unc1xuICogY29uZmlndXJlZCBmaWVsZHMsIGVtYWlsLCBwYXNzd29yZCwgbGVnYWwgY29uc2VudCBhbmQg4oCUIHdoZW4gcmVxdWlyZWQg4oCUIHRoZVxuICogY2FwdGNoYSksIHdoaWNoIFBPU1RzIGAvdjEvY2xpZW50L3NpZ25fdXBzYDsgZnJvbSB0aGVyZSBpdCBzaGFyZXMgdGhlIGZsb3dcbiAqIGVuZ2luZSB3aXRoIGA8YXRsYXMtc2lnbi1pbj5gICh0aGUgZW1haWxlZC1jb2RlIHN0ZXAsIHRoZW4gdGhlIHRpY2tldFxuICogZXhjaGFuZ2UpLCBiZWNhdXNlIHRoZSBzZXF1ZW5jZSBvZiBzdGVwcyBpcyBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gKlxuICogYGBgaHRtbFxuICogPGF0bGFzLXNpZ24tdXAgKmF0bGFzU2lnbmVkT3V0PjwvYXRsYXMtc2lnbi11cD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdGxhcy1zaWduLXVwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtFbWFpbExpbmtDb21wb25lbnQsIEF0dGVtcHRGbG93Q29tcG9uZW50LCBSZWNvdmVyeUNvZGVzQ29tcG9uZW50LCBTaWduVXBGb3JtQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGVtYWlsTGluaygpOyBhcyBsaW5rKSB7XG4gICAgICA8YXRsYXMtZW1haWwtbGluayBbbGlua109XCJsaW5rXCI+PC9hdGxhcy1lbWFpbC1saW5rPlxuICAgIH0gQGVsc2Uge1xuICAgIEBpZiAoZmxvdy5yZWNvdmVyeUNvZGVzKCk7IGFzIGNvZGVzKSB7XG4gICAgICA8YXRsYXMtcmVjb3ZlcnktY29kZXMgW2NvZGVzXT1cImNvZGVzXCIgW2J1c3ldPVwiZmxvdy5zdGF0ZSgpLmJ1c3lcIiAoc2F2ZWQpPVwiZmxvdy5zYXZlUmVjb3ZlcnlDb2RlcygpXCI+PC9hdGxhcy1yZWNvdmVyeS1jb2Rlcz5cbiAgICB9IEBlbHNlIGlmIChmbG93LmV4aXN0aW5nQWNjb3VudE5vdGljZSgpKSB7XG4gICAgICA8ZGl2IFtjbGFzc109XCJjbHMoJ2NhcmQnLCAnYXRsYXMtY2FyZCcpXCIgZGF0YS1hdGxhcy1leGlzdGluZy1hY2NvdW50PVwiXCI+XG4gICAgICAgIDxoMSBbY2xhc3NdPVwiY2xzKCdoZWFkZXJUaXRsZScsICdhdGxhcy10aXRsZScpXCI+e3sgdCgnc2lnblVwLnRpdGxlJykgfX08L2gxPlxuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj57eyB0KCdzaWduVXAuZXhpc3RpbmdBY2NvdW50JykgfX08L3A+XG4gICAgICAgIEBpZiAocmVzZXRIcmVmKCk7IGFzIGhyZWYpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImF0bGFzLXRleHRcIj48YSBjbGFzcz1cImF0bGFzLWxpbmtcIiBbaHJlZl09XCJocmVmXCI+e3sgdCgnc2lnbkluLmZvcmdvdFBhc3N3b3JkJykgfX08L2E+PC9wPlxuICAgICAgICB9XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uUHJpbWFyeScsICdhdGxhcy1idXR0b24nKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgICAgICAoY2xpY2spPVwiZmxvdy5jb250aW51ZUFmdGVyRXhpc3RpbmdBY2NvdW50KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdCgnc2lnblVwLnN1Ym1pdCcpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAoYXdhaXRpbmdQYXNza2V5KCkpIHtcbiAgICAgIDxkaXYgW2NsYXNzXT1cImNscygnY2FyZCcsICdhdGxhcy1jYXJkJylcIiBkYXRhLWF0bGFzLXBhc3NrZXktc2lnbi11cD1cIlwiPlxuICAgICAgICA8aDEgW2NsYXNzXT1cImNscygnaGVhZGVyVGl0bGUnLCAnYXRsYXMtdGl0bGUnKVwiPnt7IHQoJ3NpZ25VcC50aXRsZScpIH19PC9oMT5cbiAgICAgICAgQGZvciAoZXJyb3Igb2YgZmxvdy5zdGF0ZSgpLmVycm9yczsgdHJhY2sgZXJyb3IuY29kZSkge1xuICAgICAgICAgIDxwIFtjbGFzc109XCJjbHMoJ2Zvcm1GaWVsZEVycm9yJywgJ2F0bGFzLWVycm9yJylcIiByb2xlPVwiYWxlcnRcIj57eyBlcnJvclRleHQoZXJyb3IpIH19PC9wPlxuICAgICAgICB9XG4gICAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dFwiPnt7IHQoJ3NpZ25VcC5wYXNza2V5UHJvbXB0JykgfX08L3A+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uUHJpbWFyeScsICdhdGxhcy1idXR0b24nKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgICAgICAoY2xpY2spPVwiZmxvdy5jcmVhdGVQYXNza2V5KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdCgnc2lnblVwLnBhc3NrZXlDcmVhdGUnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKGVtYWlsQ29uZmlybWVkKCkpIHtcbiAgICAgIDxkaXYgW2NsYXNzXT1cImNscygnY2FyZCcsICdhdGxhcy1jYXJkJylcIiBkYXRhLWF0bGFzLWVtYWlsLWNvbmZpcm1lZD1cIlwiPlxuICAgICAgICA8aDEgW2NsYXNzXT1cImNscygnaGVhZGVyVGl0bGUnLCAnYXRsYXMtdGl0bGUnKVwiPnt7IHQoJ3NpZ25VcC50aXRsZScpIH19PC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJhdGxhcy10ZXh0XCIgcm9sZT1cInN0YXR1c1wiPnt7IHQoJ3NpZ25VcC5lbWFpbENvbmZpcm1lZCcpIH19PC9wPlxuICAgICAgICBAaWYgKHNpZ25JbkhyZWYoKTsgYXMgaHJlZikge1xuICAgICAgICAgIDxhIFtjbGFzc109XCJjbHMoJ2Zvcm1CdXR0b25QcmltYXJ5JywgJ2F0bGFzLWJ1dHRvbicpXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi50aXRsZScpIH19PC9hPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmIChmbG93LnN0YXRlKCkuYXR0ZW1wdCkge1xuICAgICAgPGF0bGFzLWF0dGVtcHQtZmxvd1xuICAgICAgICBbYXR0ZW1wdF09XCJmbG93LnN0YXRlKCkuYXR0ZW1wdFwiXG4gICAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgICAgW2Vycm9yc109XCJmbG93LnN0YXRlKCkuZXJyb3JzXCJcbiAgICAgICAgW3Nlc3Npb25LZXB0XT1cImZsb3cuc3RhdGUoKS5zZXNzaW9uS2VwdFwiXG4gICAgICAgIHRpdGxlS2V5PVwic2lnblVwLnRpdGxlXCJcbiAgICAgICAgW2VtYWlsVmVyaWZpY2F0aW9uXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxWZXJpZmljYXRpb24gPz8gJ2NvZGUnXCJcbiAgICAgICAgKHN1Ym1pdEZsb3cpPVwiZmxvdy5zdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgIChyZXNlbmQpPVwiZmxvdy5yZXNlbmRTaWduVXAoKVwiXG4gICAgICAgIFttYXRjaENvZGVdPVwiZmxvdy5zdGF0ZSgpLm1hdGNoQ29kZSA/PyBudWxsXCJcbiAgICAgICAgW29mZmVyRW1haWxTZWNvbmRGYWN0b3JdPVwiZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50Py5lbWFpbFNlY29uZEZhY3RvciA9PT0gdHJ1ZVwiXG4gICAgICAgIFtlbWFpbGVkU2Vjb25kRmFjdG9yXT1cImZsb3cuZW1haWxTZWNvbmRGYWN0b3IoKVwiXG4gICAgICAgIFtvZmZlclNtc1NlY29uZEZhY3Rvcl09XCJmbG93LnNldHRpbmdzKCkgIT09IG51bGwgJiYgZmxvdy5tZmFDaG9pY2VzKCkuc21zXCJcbiAgICAgICAgW3RleHRlZFNlY29uZEZhY3Rvcl09XCJmbG93LnNtc1NlY29uZEZhY3RvcigpXCJcbiAgICAgICAgW2Vucm9sbG1lbnRdPVwiZmxvdy5lbnJvbGxtZW50XCJcbiAgICAgICAgW2Vucm9sbG1lbnRTdGF0ZV09XCJmbG93LmVucm9sbG1lbnRTdGF0ZSgpXCJcbiAgICAgICAgKGVtYWlsU2Vjb25kRmFjdG9yKT1cImZsb3cuc2VuZEVtYWlsU2Vjb25kRmFjdG9yKClcIlxuICAgICAgICAoc21zU2Vjb25kRmFjdG9yKT1cImZsb3cuc2VuZFNtc1NlY29uZEZhY3RvcigpXCJcbiAgICAgICAgKHBvbGljeURlY2xpbmVkKT1cImZsb3cuZGVjbGluZVBvbGljeSgkZXZlbnQpXCJcbiAgICAgICAgW3NpZ25JbkhyZWZdPVwic2lnbkluSHJlZigpXCJcbiAgICAgID48L2F0bGFzLWF0dGVtcHQtZmxvdz5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxhdGxhcy1zaWduLXVwLWZvcm1cbiAgICAgICAgW3NldHRpbmdzXT1cImZsb3cuc2V0dGluZ3MoKVwiXG4gICAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgICAgW2Vycm9yc109XCJmbG93LnN0YXRlKCkuZXJyb3JzXCJcbiAgICAgICAgW2NhcHRjaGFdPVwiZmxvdy5zaWduVXBDYXB0Y2hhRHJhd24oKSA/IGZsb3cuc2lnblVwQ2FwdGNoYSA6IG51bGxcIlxuICAgICAgICBbcG9saWNpZXNdPVwiZmxvdy5wb2xpY2llc1wiXG4gICAgICAgIFtwYXNza2V5XT1cInBhc3NrZXlGb3JtKClcIlxuICAgICAgICBbc3dpdGNoYWJsZV09XCJjYW5QYXNza2V5KClcIlxuICAgICAgICAoc3dpdGNoTW9kZSk9XCJ0b2dnbGVNb2RlKClcIlxuICAgICAgICAoc3VibWl0U2lnblVwKT1cIlxuICAgICAgICAgIHBhc3NrZXlGb3JtKCkgPyBmbG93LmNyZWF0ZVdpdGhQYXNza2V5KCRldmVudC52YWx1ZXMsICRldmVudC5jb25zZW50KSA6IGZsb3cuY3JlYXRlKCRldmVudC52YWx1ZXMsICRldmVudC5jb25zZW50KVxuICAgICAgICBcIlxuICAgICAgPjwvYXRsYXMtc2lnbi11cC1mb3JtPlxuICAgIH1cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25VcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdGxhcyA9IGluamVjdChBdGxhc1NlcnZpY2UpO1xuXG4gIC8qKiBPcGVuZWQgZnJvbSBhIG1haWxlZCBsaW5rOiB0aGF0IHBhZ2UsIG5vdCB0aGUgZmxvdy4gUmVhZCBhZnRlciB0aGUgZmlyc3QgcmVuZGVyLCBzbyBoeWRyYXRpb24gbWF0Y2hlcy4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVtYWlsTGluayA9IHNpZ25hbDxFbWFpbExpbmsgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4gdGhpcy5lbWFpbExpbmsuc2V0KGVtYWlsTGlua0Zyb21VcmwodW5kZWZpbmVkLCAnc2lnbl91cCcpKSk7XG4gIH1cblxuICAvKiogV2hlcmUgdG8gc2VuZCB0aGUgdXNlciBvbmNlIHRoZSBmbG93IGNvbXBsZXRlcy4gUmVzZXJ2ZWQgZm9yIGhvc3Qgcm91dGluZy4gKi9cbiAgQElucHV0KCkgYWZ0ZXJVcmw/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXJlIHRoZSBleGlzdGluZy1hY2NvdW50IG5vdGljZSdzIFwiRm9yZ290IHBhc3N3b3JkP1wiIGdvZXMuIERlZmF1bHQ6IHRoZSBob3N0ZWQgc2lnbi1pbiBwYWdlOyBgbnVsbGAgaGlkZXMgaXQuICovXG4gIEBJbnB1dCgpIHJlc2V0UGFzc3dvcmRVcmw/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKiBXaGVyZSBcIlNpZ24gaW5cIiBnb2VzIG9uY2UgYW4gZW1haWxlZCBsaW5rIGNvbmZpcm1lZCB0aGUgYWRkcmVzcyBhbmQgbWFkZSBubyBzZXNzaW9uIGhlcmUuIERlZmF1bHQ6IHRoZSBob3N0ZWQgc2lnbi1pbiBwYWdlOyBgbnVsbGAgaGlkZXMgaXQuICovXG4gIEBJbnB1dCgpIHNpZ25JblVybD86IHN0cmluZyB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZsb3cgPSBuZXcgQXRsYXNGbG93Q29udHJvbGxlcihcbiAgICB0aGlzLmF0bGFzLmNyZWF0ZUZhcGlDbGllbnQoKSxcbiAgICAoKSA9PiB0aGlzLmF0bGFzLnJlbG9hZCgpLFxuICAgIHRoaXMuYXRsYXMucGVuZGluZ0F0dGVtcHQsXG4gICAgKGtleSkgPT4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpLFxuICAgIHRydWUsXG4gICk7XG5cbiAgLyoqIFBhc3N3b3JkIG9yIHBhc3NrZXktb25seSBzaWduLXVwICh0aGUgbGF0dGVyIHdoZW4gdGhlIGluc3RhbmNlIG9mZmVycyBpdCkuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCdwYXNzd29yZCcgfCAncGFzc2tleSc+KCdwYXNzd29yZCcpO1xuXG4gIHByb3RlY3RlZCBjYW5QYXNza2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50LnBhc3NrZXlTaWduVXAgJiYgcGFzc2tleXNTdXBwb3J0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXNza2V5Rm9ybSgpOiB7IGVtYWlsOiAnb2ZmJyB8ICdvcHRpb25hbCcgfCAncmVxdWlyZWQnIH0gfCBudWxsIHtcbiAgICBjb25zdCBvZmZlciA9IHRoaXMuZmxvdy5zZXR0aW5ncygpPy5hY2NvdW50LnBhc3NrZXlTaWduVXAgPz8gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5tb2RlKCkgPT09ICdwYXNza2V5JyAmJiBvZmZlciAmJiB0aGlzLmNhblBhc3NrZXkoKSA/IHsgZW1haWw6IG9mZmVyLmVtYWlsIH0gOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5mbG93LnN0YXRlLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgZXJyb3JzOiBbXSB9KSk7XG4gICAgdGhpcy5tb2RlLnNldCh0aGlzLnBhc3NrZXlGb3JtKCkgPyAncGFzc3dvcmQnIDogJ3Bhc3NrZXknKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldEhyZWYoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGV4aXN0aW5nQWNjb3VudFJlc2V0VXJsKHsgdXJsOiB0aGlzLnJlc2V0UGFzc3dvcmRVcmwsIGZyb250ZW5kQXBpOiB0aGlzLmF0bGFzLmZyb250ZW5kQXBpLCByZWRpcmVjdFVybDogdGhpcy5hZnRlclVybCB9KTtcbiAgfVxuXG4gIC8qKiBBIGxpbmsgY29uZmlybWVkIHRoZSBhZGRyZXNzIGFuZCBtYWRlIG5vIHNlc3Npb24gaGVyZS4gU2F5cyB0aGUgc2FtZSBmb3IgYW55IGFkZHJlc3MuICovXG4gIHByb3RlY3RlZCBlbWFpbENvbmZpcm1lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2lnblVwUHJvdmVkQnlMaW5rKHRoaXMuZmxvdy5zdGF0ZSgpLmF0dGVtcHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNpZ25JbkhyZWYoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHNpZ25JbkFmdGVyUHJvb2ZVcmwoeyB1cmw6IHRoaXMuc2lnbkluVXJsLCBmcm9udGVuZEFwaTogdGhpcy5hdGxhcy5mcm9udGVuZEFwaSwgcmVkaXJlY3RVcmw6IHRoaXMuYWZ0ZXJVcmwgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXdhaXRpbmdQYXNza2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhd2FpdGluZ1Bhc3NrZXkodGhpcy5mbG93LnN0YXRlKCkuYXR0ZW1wdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZSh0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwga2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbHMoa2V5OiBFbGVtZW50S2V5LCBiYXNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjbGFzc0ZvcihrZXksIHRoaXMuYXRsYXMuYXBwZWFyYW5jZSwgYmFzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZXJyb3JUZXh0KGVycm9yOiBGaWVsZEVycm9yKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXllciA9ICh0aGlzLmF0bGFzIGFzIHsgZXJyb3JMb2NhbGl6YXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH0pLmVycm9yTG9jYWxpemF0aW9uO1xuICAgIHJldHVybiBsb2NhbGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IsIGxheWVyID8/IHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCB0aGlzLmF0bGFzLmxvY2FsaXphdGlvbik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyDCpzUgdGhlIGluc3RhbmNlJ3Mgc2lnbi11cCBmaWVsZHMsIGNvbnNlbnQgcG9saWN5IGFuZCBjYXB0Y2hhIHNldHRpbmdzLlxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdm9pZCB0aGlzLmZsb3cubG9hZFNldHRpbmdzKCk7XG4gICAgICB2b2lkIHRoaXMuZmxvdy5sb2FkUG9saWNpZXModGhpcy5hdGxhcy5sb2NhbGUgPz8gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZsb3cuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
|
|
2
|
-
export const ATLAS_ANGULAR_VERSION = '0.16.
|
|
2
|
+
export const ATLAS_ANGULAR_VERSION = '0.16.2';
|
|
3
3
|
export const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjE2LjInO1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfU0RLOiBBdGxhc1Nka0luZm8gPSB7IG5hbWU6ICdAYXRsYXNhdXRoL2FuZ3VsYXInLCB2ZXJzaW9uOiBBVExBU19BTkdVTEFSX1ZFUlNJT04gfTtcbiJdfQ==
|