tango-app-ui-manage-billing 3.3.45 → 3.3.47

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.
Files changed (23) hide show
  1. package/esm2022/lib/components/billing-groups/billing-group-form/billing-group-form.component.mjs +17 -4
  2. package/esm2022/lib/components/brand-invoices/brand-invoices.component.mjs +39 -9
  3. package/esm2022/lib/components/credit-notes/credit-notes.component.mjs +25 -3
  4. package/esm2022/lib/components/purchase-order/purchase-order-details/purchase-order-details.component.mjs +13 -3
  5. package/esm2022/lib/components/purchase-order/purchase-order-form/purchase-order-form.component.mjs +7 -3
  6. package/esm2022/lib/components/purchase-order/purchase-order.component.mjs +33 -3
  7. package/esm2022/lib/components/services/billing.service.mjs +4 -1
  8. package/esm2022/lib/components/tango-manage-billing/delete-confirmation/delete-confirmation.component.mjs +12 -5
  9. package/esm2022/lib/components/tango-manage-billing/edit-invoice/edit-invoice.component.mjs +59 -37
  10. package/esm2022/lib/components/tango-manage-billing/tango-manage-billing.component.mjs +31 -9
  11. package/fesm2022/tango-app-ui-manage-billing.mjs +228 -66
  12. package/fesm2022/tango-app-ui-manage-billing.mjs.map +1 -1
  13. package/lib/components/billing-groups/billing-group-form/billing-group-form.component.d.ts +2 -0
  14. package/lib/components/brand-invoices/brand-invoices.component.d.ts +3 -0
  15. package/lib/components/credit-notes/credit-notes.component.d.ts +1 -0
  16. package/lib/components/purchase-order/purchase-order-details/purchase-order-details.component.d.ts +4 -1
  17. package/lib/components/purchase-order/purchase-order-form/purchase-order-form.component.d.ts +2 -1
  18. package/lib/components/purchase-order/purchase-order.component.d.ts +5 -0
  19. package/lib/components/services/billing.service.d.ts +1 -0
  20. package/lib/components/tango-manage-billing/delete-confirmation/delete-confirmation.component.d.ts +3 -1
  21. package/lib/components/tango-manage-billing/edit-invoice/edit-invoice.component.d.ts +4 -1
  22. package/lib/components/tango-manage-billing/tango-manage-billing.component.d.ts +1 -0
  23. package/package.json +1 -1
@@ -226,8 +226,20 @@ export class BillingGroupFormComponent {
226
226
  clientId: [this.clientId],
227
227
  _id: [_id]
228
228
  });
229
+ this.linkTaxToCurrency(item);
229
230
  this.billingGroups.push(item);
230
231
  }
232
+ // Tax Calculation follows the Currency: INR → Domestic (GST), any other
233
+ // currency → International (no tax). Updated whenever the currency is
234
+ // changed; a saved group keeps its stored value until then.
235
+ taxCalculationFor(currency) {
236
+ return currency === 'inr' ? 'domestic' : 'international';
237
+ }
238
+ linkTaxToCurrency(item) {
239
+ item.get('currency')?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((currency) => {
240
+ item.get('taxCalculationType')?.setValue(this.taxCalculationFor(currency));
241
+ });
242
+ }
231
243
  addFormItem({ isPrimary, groupName }) {
232
244
  const item = this.fb.group({
233
245
  groupName: [groupName, [Validators.required]],
@@ -247,9 +259,9 @@ export class BillingGroupFormComponent {
247
259
  proRata: ['prorate'],
248
260
  paymentCategory: ['post'],
249
261
  currency: ['dollar'],
250
- // Default 'domestic' so the existing GST/IGST logic still applies
251
- // unless the user explicitly switches to international.
252
- taxCalculationType: ['domestic'],
262
+ // Follows the currency (see linkTaxToCurrency): the default Dollar is
263
+ // International; picking INR makes it Domestic.
264
+ taxCalculationType: [this.taxCalculationFor('dollar')],
253
265
  isInstallationOneTime: [false],
254
266
  installationFee: [{ value: '', disabled: true }],
255
267
  paymentCycle: ['monthly'],
@@ -263,6 +275,7 @@ export class BillingGroupFormComponent {
263
275
  currentTab: ['basic-info'],
264
276
  clientId: [this.clientId]
265
277
  });
278
+ this.linkTaxToCurrency(item);
266
279
  this.billingGroups.push(item);
267
280
  setTimeout(() => {
268
281
  this.accordion.toggle(`${this.billingGroups.length - 1}`);
@@ -749,4 +762,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
749
762
  type: ViewChild,
750
763
  args: [NgbAccordionDirective]
751
764
  }] } });
752
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBMEIsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVNuRixNQUFNLE9BQU8seUJBQXlCO0lBMEYxQjtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBNUZELFFBQVEsQ0FBUztJQUNqQixPQUFPLENBQVM7SUFDaEIsVUFBVSxDQUFTO0lBQzVCLFdBQVcsQ0FBWTtJQUN2QixTQUFTLENBQVU7SUFDbkIsVUFBVSxHQUEwQixFQUFFLENBQUM7SUFDdkMsbUJBQW1CLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLDZFQUE2RTtJQUM3RSx3REFBd0Q7SUFDeEQsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1Qiw0RUFBNEU7SUFDNUUseUVBQXlFO0lB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VUFBVSxFQUFFO29CQUNkLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO3dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDbEk7b0JBQ0QsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUM3SDtvQkFDRCxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTt3QkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQzVIO2lCQUNGO2dCQUNELElBQUksQ0FB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QUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQ2hELENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbEIsbUVBQW1FO2dCQUNuRSwrREFBK0Q7Z0JBQy9ELFlBQVk7Z0JBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkYsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBcnZCVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qix5TEFpRnpCLHFCQUFxQixnREM3RmxDLDgwNERBK3lCTTs7NEZEbnlCTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCOzhMQU16QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQTZFNEIsU0FBUztzQkFBMUMsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYkFjY29yZGlvbkRpcmVjdGl2ZSwgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBCaWxsaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JpbGxpbmcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaWxsaW5nLWdyb3VwLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWxsaW5nLWdyb3VwLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iaWxsaW5nLWdyb3VwLWZvcm0uY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZztcclxuICBASW5wdXQoKSBncm91cElkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VycmVudFRhYjogc3RyaW5nO1xyXG4gIGJpbGxpbmdGb3JtOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkOiBib29sZWFuO1xyXG4gIGZpbHRlckRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5bXSA9IFtdO1xyXG4gIHN1YnNjcmliZWRTdG9yZUxpc3Q6IGFueVtdID0gW107XHJcbiAgLy8gR3JvdXAgY3VycmVudGx5IGJlaW5nIGVkaXRlZCDigJQgY2FwdHVyZWQgYmVmb3JlIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkLCBzb1xyXG4gIC8vIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nIGNhbiByZWFkIGl0cyBzZWxlY3RlZCBzdG9yZXMuXHJcbiAgZWRpdGluZ0dyb3VwSWQ6IHN0cmluZyA9ICcnO1xyXG4gIC8vIEZvcm1BcnJheSBpbmRleCBvZiB0aGUgZ3JvdXAgd2hvc2UgU3RvcmUgU2VsZWN0aW9uIHRhYiBpcyBjdXJyZW50bHkgb3Blbi5cclxuICAvLyBUaGUgc2hhcmVkIHN0b3JlIGxpc3QgKHN1YnNjcmliZWRTdG9yZUxpc3QpIGlzIGxvYWRlZCArIHNlbGVjdGVkLWZpcnN0XHJcbiAgLy8gb3JkZXJlZCBmb3IgVEhJUyBncm91cCwgc28gZXhwYW5kaW5nIGEgZGlmZmVyZW50IGdyb3VwJ3MgU3RvcmUgU2VsZWN0aW9uXHJcbiAgLy8gcmVsb2FkcyB0aGUgbGlzdCBzY29wZWQgdG8gdGhhdCBncm91cCAobm90IGFsd2F5cyB0aGUgZGVmYXVsdCBncm91cCkuXHJcbiAgYWN0aXZlR3JvdXBJbmRleDogbnVtYmVyID0gMDtcclxuICBmaWx0ZXJDb3VudHJpZXM6IGFueVtdID0gW107XHJcbiAgZmlsdGVyU3RhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlckNpdGllczogYW55W10gPSBbXTtcclxuICBzZWFyY2hJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xyXG4gIHNvcnRlZENvbHVtbjogc3RyaW5nO1xyXG4gIHNvcnREaXJlY3Rpb246IG51bWJlcjtcclxuICBzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpO1xyXG4gIHN1YnNjcmliZWRQcm9kdWN0czogYW55W10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLy8gR1NUSU4gbG9va3VwIHN0YXRlIHBlciBiaWxsaW5nLWdyb3VwIHJvdywga2V5ZWQgYnkgRm9ybUFycmF5IGluZGV4LlxyXG4gIC8vICdpZGxlJyA9IG5vIGxvb2t1cCB5ZXQgKG9yIEdTVElOIHRvbyBzaG9ydCB0byB0cmlnZ2VyIG9uZSkuXHJcbiAgLy8gJ2xvYWRpbmcnID0gcmVxdWVzdCBpbiBmbGlnaHQuXHJcbiAgLy8gJ2ZvdW5kJyA9IGJhY2tlbmQgcmV0dXJuZWQgYW4gYWRkcmVzcywgZmllbGRzIGF1dG8tZmlsbGVkLlxyXG4gIC8vICdub3Rmb3VuZCcgPSBiYWNrZW5kIHJldHVybmVkIDQwNCAvIHVua25vd24gR1NUSU4uXHJcbiAgLy8gJ2Vycm9yJyA9IG5ldHdvcmsgb3IgdW5leHBlY3RlZCBlcnJvci5cclxuICBnc3RMb29rdXBTdGF0ZTogUmVjb3JkPG51bWJlciwgJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ2ZvdW5kJyB8ICdub3Rmb3VuZCcgfCAnZXJyb3InPiA9IHt9O1xyXG4gIC8vIFRyYWNrIHRoZSBsYXN0IEdTVElOIHdlIHN1Y2Nlc3NmdWxseSBsb29rZWQgdXAgcGVyIHJvdyBzbyByZS10eXBpbmcgdGhlXHJcbiAgLy8gc2FtZSB2YWx1ZSBkb2Vzbid0IHJlZmlyZSB0aGUgcmVxdWVzdCAoYW5kIGF2b2lkIGNsb2JiZXJpbmcgbWFudWFsIGVkaXRzXHJcbiAgLy8gdGhlIHVzZXIgbWF5IGhhdmUgbWFkZSBhZnRlciB0aGUgYXV0by1maWxsKS5cclxuICBwcml2YXRlIGxhc3RMb29rZWRVcEdzdGluOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge307XHJcblxyXG4gIGdyb3VwVGFnT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdzdG9yZScsIGxhYmVsOiAnU3RvcmUnIH0sXHJcbiAgICB7IHZhbHVlOiAnZ3N0JywgbGFiZWw6ICdHU1QnIH1cclxuICBdO1xyXG4gIGN1cnJlbmN5T3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdkb2xsYXInLCBsYWJlbDogJ0RvbGxhciAoJCknIH0sXHJcbiAgICB7IHZhbHVlOiAnaW5yJywgbGFiZWw6ICdJTlIgKOKCuSknIH0sXHJcbiAgICB7IHZhbHVlOiAnc2luZ2Fwb3JlZG9sbGFyJywgbGFiZWw6ICdTaW5nYXBvcmUgRG9sbGFyIChTJCknIH0sXHJcbiAgICB7IHZhbHVlOiAnZXVybycsIGxhYmVsOiAnRXVybyAo4oKsKScgfSxcclxuICAgIHsgdmFsdWU6ICdhZWQnLCBsYWJlbDogJ0FFRCAoQUVEKScgfSxcclxuICBdO1xyXG4gIC8vIEFkdmFuY2UtaW52b2ljZSBob3Jpem9uOiBob3cgZmFyIGFoZWFkIHRoZSBhZHZhbmNlIGludm9pY2UgaXMgZ2VuZXJhdGVkLlxyXG4gIGFkdmFuY2VQZXJpb2RPcHRpb25zID0gW1xyXG4gICAgeyB2YWx1ZTogJ21vbnRobHknLCBsYWJlbDogJ01vbnRobHkgKG5leHQgbW9udGgpJywgbW9udGhzOiAxIH0sXHJcbiAgICB7IHZhbHVlOiAncXVhcnRlcmx5JywgbGFiZWw6ICdRdWFydGVybHkgKG5leHQgMyBtb250aHMpJywgbW9udGhzOiAzIH0sXHJcbiAgICB7IHZhbHVlOiAnaGFsZnllYXJseScsIGxhYmVsOiAnSGFsZi15ZWFybHkgKG5leHQgNiBtb250aHMpJywgbW9udGhzOiA2IH0sXHJcbiAgICB7IHZhbHVlOiAneWVhcmx5JywgbGFiZWw6ICdZZWFybHkgKG5leHQgMTIgbW9udGhzKScsIG1vbnRoczogMTIgfSxcclxuICBdO1xyXG4gIC8vIERyaXZlcyB3aGV0aGVyIHRoZSBiYWNrZW5kIHdpbGwgY2FsY3VsYXRlIEdTVC9JR1NUIG9uIGludm9pY2VzIGZvciB0aGlzXHJcbiAgLy8gZ3JvdXAuICdpbnRlcm5hdGlvbmFsJyBza2lwcyB0YXhlcyBlbnRpcmVseSBzbyB0aGUgdG90YWxBbW91bnQgZXF1YWxzXHJcbiAgLy8gdGhlIHN1YnRvdGFsLiBTZWUgZ3N0aW5Mb29rdXAg4oaSIGludm9pY2VDb250cm9sbGVyLmNyZWF0ZUludm9pY2UuXHJcbiAgdGF4Q2FsY3VsYXRpb25UeXBlT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdkb21lc3RpYycsIGxhYmVsOiAnRG9tZXN0aWMnIH0sXHJcbiAgICB7IHZhbHVlOiAnaW50ZXJuYXRpb25hbCcsIGxhYmVsOiAnSW50ZXJuYXRpb25hbCcgfSxcclxuICBdO1xyXG4gIHBheW1lbnRDeWNsZU9wdGlvbnMgPSBbXHJcbiAgICB7IHZhbHVlOiAnbW9udGhseScsIGxhYmVsOiAnTW9udGhseScgfSxcclxuICAgIHsgdmFsdWU6ICdxdWFydGVyJywgbGFiZWw6ICdRdWFydGVybHknIH0sXHJcbiAgICB7IHZhbHVlOiAnaGFsZlllYXJseScsIGxhYmVsOiAnSGFsZiB5ZWFybHknIH0sXHJcbiAgICB7IHZhbHVlOiAneWVhcmx5JywgbGFiZWw6ICdZZWFybHknIH1cclxuICBdO1xyXG4gIHBheW1lbnRUZXJtT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6IDMwLCBsYWJlbDogJzMwJyB9LFxyXG4gICAgeyB2YWx1ZTogNDUsIGxhYmVsOiAnNDUnIH0sXHJcbiAgICB7IHZhbHVlOiA2MCwgbGFiZWw6ICc2MCcgfSxcclxuICAgIHsgdmFsdWU6IDkwLCBsYWJlbDogJzkwJyB9XHJcbiAgXTtcclxuICBiaWxsaW5nTWV0aG9kT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdlYWNoU3RvcmUnLCBsYWJlbDogJ1N0b3JlIFdpc2UnIH0sXHJcbiAgICB7IHZhbHVlOiAnb3ZlcmFsbFN0b3JlJywgbGFiZWw6ICdCcmFuZCBXaXNlJyB9XHJcbiAgXTtcclxuICBAVmlld0NoaWxkKE5nYkFjY29yZGlvbkRpcmVjdGl2ZSkgYWNjb3JkaW9uOiBOZ2JBY2NvcmRpb25EaXJlY3RpdmU7XHJcblxyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwO1xyXG4gIGN1cnJlbnRQYWdlID0gMTtcclxuICB0b3RhbEl0ZW1zID0gMDtcclxuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgcGFnZVNpemUgPSAxMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG1vZGFsUmVmOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGhvc3RSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2Nyb2xsIHRoZSBvcGVuZWQgZ3JvdXAncyBhY2NvcmRpb24gaGVhZGVyIGludG8gdmlldyBpbnNpZGUgdGhlIG1vZGFsIGJvZHkuXHJcbiAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBtYXRjaGVkIGFjY29yZGlvbiBpcyB0b2dnbGVkIG9wZW4gb24gaW5pdCwgc28gdGhlIHBvcHVwXHJcbiAgLy8gbGFuZHMgb24gdGhhdCBncm91cCBpbnN0ZWFkIG9mIHN0YXlpbmcgc2Nyb2xsZWQgYXQgdGhlIHRvcC5cclxuICBwcml2YXRlIHNjcm9sbFRvR3JvdXAoaWR4OiBudW1iZXIpIHtcclxuICAgIC8vIFdhaXQgZm9yIHRoZSBleHBhbmRlZCBib2R5IHRvIHJlbmRlciwgdGhlbiBicmluZyB0aGUgaGVhZGVyIGludG8gdmlldy5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBob3N0OiBIVE1MRWxlbWVudCA9IHRoaXMuaG9zdFJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgaGVhZGVyID0gaG9zdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtZ3JvdXAtaWR4PVwiJHtpZHh9XCJdYCkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gICAgICBpZiAoaGVhZGVyKSB7XHJcbiAgICAgICAgaGVhZGVyLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTUwKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRCaWxsaW5nR3JvdXBzKCk7XHJcbiAgICB0aGlzLmdldENsaWVudFByb2R1Y3RzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBJbml0aWFsIHN0b3JlIGxvYWQgaXMgdHJpZ2dlcmVkIGZyb20gZ2V0QmlsbGluZ0dyb3VwcygpIChhZnRlciB0aGVcclxuICAgIC8vIHNlbGVjdGVkIHN0b3JlcyBhcmUgcGF0Y2hlZCBpbikgc28gc2VsZWN0ZWQtZmlyc3Qgb3JkZXJpbmcgd29ya3MuXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbDtcclxuICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5iaWxsaW5nRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBncm91cHM6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRCaWxsaW5nR3JvdXBzKCkge1xyXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRBbGxCaWxsaW5nR3JvdXBzKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlcy5kYXRhLmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wYXRjaEZvcm1JdGVtKHsgLi4uZ3JvdXAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIFJlbWVtYmVyIHdoaWNoIGdyb3VwIGlzIGJlaW5nIGVkaXRlZCBzbyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyBjYW5cclxuICAgICAgICAgIC8vIHJlYWQgaXRzIHN0b3JlcyBldmVuIGFmdGVyIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkIGJlbG93LlxyXG4gICAgICAgICAgdGhpcy5lZGl0aW5nR3JvdXBJZCA9IHRoaXMuZ3JvdXBJZCB8fCB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHNbMF0/LmdldCgnX2lkJyk/LnZhbHVlIHx8ICcnO1xyXG4gICAgICAgICAgLy8gUG9pbnQgdGhlIGFjdGl2ZSBncm91cCBhdCB0aGUgb25lIHRoZSBtb2RhbCBvcGVuZWQgZm9yLCBzbyB0aGVcclxuICAgICAgICAgIC8vIGluaXRpYWwgc3RvcmUgbG9hZCBpcyBzY29wZWQgdG8gaXQgKG5vdCBhbHdheXMgaW5kZXggMCAvIGRlZmF1bHQpLlxyXG4gICAgICAgICAgY29uc3Qgb3BlbmVkSWR4ID0gdGhpcy5ncm91cElkXHJcbiAgICAgICAgICAgID8gdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZpbmRJbmRleCgoYykgPT4gYy5nZXQoJ19pZCcpPy52YWx1ZSA9PT0gdGhpcy5ncm91cElkKVxyXG4gICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwSW5kZXggPSBvcGVuZWRJZHggPj0gMCA/IG9wZW5lZElkeCA6IDA7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpZHgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmdldCgnX2lkJyk/LnZhbHVlID09PSB0aGlzLmdyb3VwSWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24udG9nZ2xlKGlkeC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSh0aGlzLmN1cnJlbnRUYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhYiA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJZCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAvLyBTY3JvbGwgdGhlIHBvcHVwIHRvIHRoZSBvcGVuZWQgZ3JvdXAncyBoZWFkZXIuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Hcm91cChpZHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUoJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIExvYWQgdGhlIHN0b3JlIGxpc3QgQUZURVIgZ3JvdXBzIGFyZSBwYXRjaGVkIHNvIHRoZSBzZWxlY3RlZCBzdG9yZUlkc1xyXG4gICAgICAgIC8vIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBiYWNrZW5kIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nLiAoZ2V0RmlsdGVycyBvblxyXG4gICAgICAgIC8vIHRoaXMgZmlyc3QgY2FsbCB0byBhbHNvIHBvcHVsYXRlIHRoZSBjb3VudHJ5L3N0YXRlL2NpdHkgZmlsdGVycy4pXHJcbiAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHsgZ2V0RmlsdGVyczogdHJ1ZSB9KTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAvLyBTdGlsbCBsb2FkIHN0b3JlcyBldmVuIGlmIGdyb3VwcyBmYWlsLCBzbyB0aGUgc2VjdGlvbiBpc24ndCBlbXB0eS5cclxuICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoeyBnZXRGaWx0ZXJzOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhdGNoRm9ybUl0ZW0oeyBncm91cE5hbWUsIGdyb3VwVGFnLCByZWdpc3RlcmVkQ29tcGFueU5hbWUsIGdzdCwgYWRkcmVzc0xpbmVPbmUsIGFkZHJlc3NMaW5lVHdvLCBjaXR5LCBzdGF0ZSwgY291bnRyeSxcclxuICAgIHBpbkNvZGUsIHBsYWNlT2ZTdXBwbHksIHBvLCBzdG9yZXMsIHByb1JhdGEsIHBheW1lbnRDYXRlZ29yeSwgY3VycmVuY3ksIHRheENhbGN1bGF0aW9uVHlwZSwgaXNJbnN0YWxsYXRpb25PbmVUaW1lLCBpbnN0YWxsYXRpb25GZWUsIHBheW1lbnRDeWNsZSxcclxuICAgIHBheW1lbnRUZXJtLCBnZW5lcmF0ZUludm9pY2VUbywgYXR0YWNoQW5uZXh1cmUsIGlzUHJpbWFyeSwgYWR2YW5jZUludm9pY2UsIGFkdmFuY2VQZXJpb2QsIHByb2R1Y3RzLCBfaWQgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBncm91cE5hbWU6IFtncm91cE5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGdyb3VwVGFnOiBbZ3JvdXBUYWcgfHwgJ3N0b3JlJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcmVnaXN0ZXJlZENvbXBhbnlOYW1lOiBbKHJlZ2lzdGVyZWRDb21wYW55TmFtZSB8fCAnJykudG9VcHBlckNhc2UoKSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgZ3N0OiBbZ3N0IHx8ICcnXSxcclxuICAgICAgYWRkcmVzc0xpbmVPbmU6IFthZGRyZXNzTGluZU9uZSB8fCAnJ10sXHJcbiAgICAgIGFkZHJlc3NMaW5lVHdvOiBbYWRkcmVzc0xpbmVUd28gfHwgJyddLFxyXG4gICAgICBjaXR5OiBbY2l0eSB8fCAnJ10sXHJcbiAgICAgIHN0YXRlOiBbc3RhdGUgfHwgJyddLFxyXG4gICAgICBjb3VudHJ5OiBbY291bnRyeSB8fCAnJ10sXHJcbiAgICAgIHBpbkNvZGU6IFtwaW5Db2RlIHx8ICcnXSxcclxuICAgICAgcGxhY2VPZlN1cHBseTogW3BsYWNlT2ZTdXBwbHkgfHwgJyddLFxyXG4gICAgICBwbzogW3BvIHx8ICcnXSxcclxuICAgICAgc3RvcmVzOiBbc3RvcmVzIHx8IFtdXSxcclxuICAgICAgLy8gUHJpY2luZyBtZXRob2Q6ICdwcm9yYXRlJyAoYWN0dWFsIHdvcmtpbmcgZGF5cykgb3IgJ2ZsYXQnIChmdWxsXHJcbiAgICAgIC8vIG1vbnRoKS4gRGVmYXVsdCB0byAncHJvcmF0ZScgZm9yIHJlY29yZHMgd2l0aG91dCBhIHZhbHVlLlxyXG4gICAgICBwcm9SYXRhOiBbcHJvUmF0YSA9PT0gJ2ZsYXQnID8gJ2ZsYXQnIDogJ3Byb3JhdGUnXSxcclxuICAgICAgcGF5bWVudENhdGVnb3J5OiBbcGF5bWVudENhdGVnb3J5IHx8ICdwb3N0J10sXHJcbiAgICAgIGN1cnJlbmN5OiBbY3VycmVuY3kgfHwgJ2RvbGxhciddLFxyXG4gICAgICAvLyBEZWZhdWx0IHRvICdkb21lc3RpYycgc28gZXhpc3RpbmcgcmVjb3JkcyAod2hpY2ggd29uJ3QgaGF2ZSB0aGlzXHJcbiAgICAgIC8vIGZpZWxkKSBiZWhhdmUgZXhhY3RseSBhcyB0b2RheSDigJQgR1NUL0lHU1Qgc3RpbGwgYXBwbGllZCBmb3IgSU5SLlxyXG4gICAgICB0YXhDYWxjdWxhdGlvblR5cGU6IFt0YXhDYWxjdWxhdGlvblR5cGUgfHwgJ2RvbWVzdGljJ10sXHJcbiAgICAgIGlzSW5zdGFsbGF0aW9uT25lVGltZTogW2lzSW5zdGFsbGF0aW9uT25lVGltZSB8fCBmYWxzZV0sXHJcbiAgICAgIGluc3RhbGxhdGlvbkZlZTogW3sgdmFsdWU6IGluc3RhbGxhdGlvbkZlZSB8fCAnJywgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIHBheW1lbnRDeWNsZTogW3BheW1lbnRDeWNsZSB8fCAnbW9udGhseSddLFxyXG4gICAgICBwYXltZW50VGVybTogW3BheW1lbnRUZXJtIHx8IDMwXSxcclxuICAgICAgZ2VuZXJhdGVJbnZvaWNlVG86IFtnZW5lcmF0ZUludm9pY2VUbyB8fCBbXV0sXHJcbiAgICAgIGF0dGFjaEFubmV4dXJlOiBbYXR0YWNoQW5uZXh1cmUgfHwgZmFsc2VdLFxyXG4gICAgICBpc1ByaW1hcnk6IFtpc1ByaW1hcnkgfHwgZmFsc2VdLFxyXG4gICAgICBhZHZhbmNlSW52b2ljZTogW2FkdmFuY2VJbnZvaWNlIHx8IGZhbHNlXSxcclxuICAgICAgYWR2YW5jZVBlcmlvZDogW2FkdmFuY2VQZXJpb2QgfHwgJ21vbnRobHknXSxcclxuICAgICAgcHJvZHVjdHM6IFtwcm9kdWN0cyB8fCBbXV0sXHJcbiAgICAgIGN1cnJlbnRUYWI6IFsnYmFzaWMtaW5mbyddLFxyXG4gICAgICBjbGllbnRJZDogW3RoaXMuY2xpZW50SWRdLFxyXG4gICAgICBfaWQ6IFtfaWRdXHJcbiAgICB9KTtcclxuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5wdXNoKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgYWRkRm9ybUl0ZW0oeyBpc1ByaW1hcnksIGdyb3VwTmFtZSB9OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgc3RyaW5nPikge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBncm91cE5hbWU6IFtncm91cE5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGdyb3VwVGFnOiBbJ3N0b3JlJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcmVnaXN0ZXJlZENvbXBhbnlOYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGdzdDogWycnXSxcclxuICAgICAgYWRkcmVzc0xpbmVPbmU6IFsnJ10sXHJcbiAgICAgIGFkZHJlc3NMaW5lVHdvOiBbJyddLFxyXG4gICAgICBjaXR5OiBbJyddLFxyXG4gICAgICBzdGF0ZTogWycnXSxcclxuICAgICAgY291bnRyeTogWycnXSxcclxuICAgICAgcGluQ29kZTogWycnXSxcclxuICAgICAgcGxhY2VPZlN1cHBseTogWycnXSxcclxuICAgICAgcG86IFsnJ10sXHJcbiAgICAgIHN0b3JlczogW1tdXSxcclxuICAgICAgLy8gTmV3IHJlY29yZHMgYWx3YXlzIHN0YXJ0IHdpdGggJ3Byb3JhdGUnOyBmbGF0IGlzIG9wdC1pbi5cclxuICAgICAgcHJvUmF0YTogWydwcm9yYXRlJ10sXHJcbiAgICAgIHBheW1lbnRDYXRlZ29yeTogWydwb3N0J10sXHJcbiAgICAgIGN1cnJlbmN5OiBbJ2RvbGxhciddLFxyXG4gICAgICAvLyBEZWZhdWx0ICdkb21lc3RpYycgc28gdGhlIGV4aXN0aW5nIEdTVC9JR1NUIGxvZ2ljIHN0aWxsIGFwcGxpZXNcclxuICAgICAgLy8gdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3dpdGNoZXMgdG8gaW50ZXJuYXRpb25hbC5cclxuICAgICAgdGF4Q2FsY3VsYXRpb25UeXBlOiBbJ2RvbWVzdGljJ10sXHJcbiAgICAgIGlzSW5zdGFsbGF0aW9uT25lVGltZTogW2ZhbHNlXSxcclxuICAgICAgaW5zdGFsbGF0aW9uRmVlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBwYXltZW50Q3ljbGU6IFsnbW9udGhseSddLFxyXG4gICAgICBwYXltZW50VGVybTogWzMwXSxcclxuICAgICAgZ2VuZXJhdGVJbnZvaWNlVG86IFtbXV0sXHJcbiAgICAgIGF0dGFjaEFubmV4dXJlOiBbZmFsc2VdLFxyXG4gICAgICBpc1ByaW1hcnk6IFtpc1ByaW1hcnldLFxyXG4gICAgICBhZHZhbmNlSW52b2ljZTogW2ZhbHNlXSxcclxuICAgICAgYWR2YW5jZVBlcmlvZDogWydtb250aGx5J10sXHJcbiAgICAgIHByb2R1Y3RzOiBbW11dLFxyXG4gICAgICBjdXJyZW50VGFiOiBbJ2Jhc2ljLWluZm8nXSxcclxuICAgICAgY2xpZW50SWQ6IFt0aGlzLmNsaWVudElkXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMucHVzaChpdGVtKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUoYCR7dGhpcy5iaWxsaW5nR3JvdXBzLmxlbmd0aCAtIDF9YCk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGdldCBiaWxsaW5nR3JvdXBzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmlsbGluZ0Zvcm0uZ2V0KCdncm91cHMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICAvLyBTdGFydCBtb250aCB0aGUgYWR2YW5jZSBpbnZvaWNlIHdpbGwgY292ZXIg4oCUIHRoZSBmaXJzdCBkYXkgb2YgbmV4dCBtb250aCxcclxuICAvLyBtYXRjaGluZyB0aGUgYmFja2VuZCAoZGF5anMoKS5hZGQoMSwnbW9udGgnKS5zdGFydE9mKCdtb250aCcpKS5cclxuICBnZXQgYWR2YW5jZUludm9pY2VEYXRlKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSArIDEsIDEpO1xyXG4gICAgcmV0dXJuIGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicsIHsgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBIdW1hbiBsYWJlbCBmb3IgdGhlIHBlcmlvZCBhIGNob3NlbiBhZHZhbmNlIGZyZXF1ZW5jeSBjb3ZlcnMsIHNob3duIG5leHRcclxuICAvLyB0byB0aGUgZHJvcGRvd24gKGUuZy4gXCJKdWwgMjAyNiDigJMgRGVjIDIwMjZcIiBmb3IgaGFsZi15ZWFybHkpLlxyXG4gIGFkdmFuY2VJbnZvaWNlUmFuZ2UocGVyaW9kOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbW9udGhzID0gdGhpcy5hZHZhbmNlUGVyaW9kT3B0aW9ucy5maW5kKG8gPT4gby52YWx1ZSA9PT0gcGVyaW9kKT8ubW9udGhzIHx8IDE7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkgKyAxLCAxKTtcclxuICAgIGNvbnN0IGZtdCA9IChkOiBEYXRlKSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tR0InLCB7IG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XHJcbiAgICBpZiAobW9udGhzIDw9IDEpIHJldHVybiBmbXQoc3RhcnQpO1xyXG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpICsgbW9udGhzLCAxKTtcclxuICAgIHJldHVybiBgJHtmbXQoc3RhcnQpfSDigJMgJHtmbXQoZW5kKX1gO1xyXG4gIH1cclxuXHJcbiAgb25UYWJDaGFuZ2UoaWR4OiBudW1iZXIsIHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ2N1cnJlbnRUYWInKT8uc2V0VmFsdWUodmFsKTtcclxuICAgIC8vIE9wZW5pbmcgYSBncm91cCdzIFN0b3JlIFNlbGVjdGlvbiBtYWtlcyBpdCB0aGUgYWN0aXZlIGdyb3VwIGFuZCByZWxvYWRzXHJcbiAgICAvLyB0aGUgc2hhcmVkIHN0b3JlIGxpc3Qgc2NvcGVkIHRvIFRIQVQgZ3JvdXAgKHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nICtcclxuICAgIC8vIGlzU2VsZWN0ZWQgcmVmbGVjdCB0aGUgZ3JvdXAgYmVpbmcgZWRpdGVkLCBub3QgdGhlIGRlZmF1bHQgZ3JvdXApLlxyXG4gICAgaWYgKHZhbCA9PT0gJ3N0b3JlLXNlbGVjdGlvbicpIHtcclxuICAgICAgdGhpcy5hY3RpdmVHcm91cEluZGV4ID0gaWR4O1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlR3JvdXAoaWR4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ19pZCcpPy52YWx1ZSkge1xyXG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmRlbGV0ZUJpbGxpbmdHcm91cCh0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ19pZCcpPy52YWx1ZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLmdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5yZW1vdmVBdChpZHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XHJcbiAgICAgICAgICBncm91cC5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShbLi4uZ3JvdXAuZ2V0KCdzdG9yZXMnKT8udmFsdWUsIC4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnc3RvcmVzJyk/LnZhbHVlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLnJlbW92ZUF0KGlkeCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdWJzY3JpYmVkU3RvcmVzKHsgZ2V0RmlsdGVycyB9OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpO1xyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydGVkQ29sdW1uLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVGVybSxcclxuICAgICAgY291bnRyeTogdGhpcy5maWx0ZXJDb3VudHJpZXMsXHJcbiAgICAgIHN0YXRlOiB0aGlzLmZpbHRlclN0YXRlcyxcclxuICAgICAgY2l0eTogdGhpcy5maWx0ZXJDaXRpZXMsXHJcbiAgICAgIGdldEZpbHRlcnM6IGdldEZpbHRlcnMsXHJcbiAgICAgIC8vIEJhY2tlbmQgcmVzb2x2ZXMgdGhpcyBncm91cCdzIHNlbGVjdGVkIHN0b3JlcywgdGFncyBlYWNoIHJvdyB3aXRoXHJcbiAgICAgIC8vIGlzU2VsZWN0ZWQgYW5kIGZsb2F0cyBzZWxlY3RlZCBzdG9yZXMgdG8gdGhlIHRvcCBhY3Jvc3MgYWxsIHBhZ2VzLlxyXG4gICAgICAvLyBTY29wZSB0byB0aGUgZ3JvdXAgd2hvc2UgU3RvcmUgU2VsZWN0aW9uIHRhYiBpcyBvcGVuIChhY3RpdmVHcm91cEluZGV4KVxyXG4gICAgICAvLyBzbyBleHBhbmRpbmcgYSBub24tZGVmYXVsdCBncm91cCBzaG93cyBUSEFUIGdyb3VwJ3MgY29udGV4dC5cclxuICAgICAgZ3JvdXBJZDogdGhpcy5iaWxsaW5nR3JvdXBzPy5jb250cm9scz8uW3RoaXMuYWN0aXZlR3JvdXBJbmRleF0/LmdldCgnX2lkJyk/LnZhbHVlXHJcbiAgICAgICAgfHwgdGhpcy5lZGl0aW5nR3JvdXBJZCB8fCB0aGlzLmdyb3VwSWQgfHwgdGhpcy5iaWxsaW5nR3JvdXBzPy5jb250cm9scz8uWzBdPy5nZXQoJ19pZCcpPy52YWx1ZSB8fCAnJyxcclxuICAgICAgLy8gQWxzbyBzZW5kIHRoZSBsaXZlIHNlbGVjdGlvbiAoY292ZXJzIGEgYnJhbmQtbmV3IHVuc2F2ZWQgZ3JvdXAgd2hvc2VcclxuICAgICAgLy8gc3RvcmVzIGFyZW4ndCB5ZXQgcGVyc2lzdGVkIHRvIHRoZSBiaWxsaW5nIGRvYykuXHJcbiAgICAgIHNlbGVjdGVkU3RvcmVJZHM6IHRoaXMuc2VsZWN0ZWRTdG9yZUlkc0ZvclNvcnQoKVxyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBpZiAoZGF0YVtrZXldID09PSB1bmRlZmluZWQgfHwgZGF0YVtrZXldID09PSAnJykgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2tleV0pICYmICFkYXRhW2tleV0ubGVuZ3RoKSBkZWxldGUgZGF0YVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRTdWJzY3JpYmVkU3RvcmVzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZWRTdG9yZXNBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKTtcclxuICAgICAgICBpZiAoZ2V0RmlsdGVycykge1xyXG4gICAgICAgICAgaWYgKHJlcz8uZGF0YT8uY291bnRyaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhLnB1c2goeyBEZXNjcmlwdGlvbjogJ0NvdW50cnknLCBJc3N1ZXM6IHJlcy5kYXRhLmNvdW50cmllcy5tYXAoKHZhbDogYW55KSA9PiAoeyB0ZXh0OiB2YWwuX2lkLCBpZDogdmFsLl9pZCB9KSkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzPy5kYXRhPy5zdGF0ZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckRhdGEucHVzaCh7IERlc2NyaXB0aW9uOiAnU3RhdGUnLCBJc3N1ZXM6IHJlcy5kYXRhLnN0YXRlcy5tYXAoKHZhbDogYW55KSA9PiAoeyB0ZXh0OiB2YWwuX2lkLCBpZDogdmFsLl9pZCB9KSkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzPy5kYXRhPy5jaXRpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckRhdGEucHVzaCh7IERlc2NyaXB0aW9uOiAnQ2l0eScsIElzc3VlczogcmVzLmRhdGEuY2l0aWVzLm1hcCgodmFsOiBhbnkpID0+ICh7IHRleHQ6IHZhbC5faWQsIGlkOiB2YWwuX2lkIH0pKSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5wYWdlSW5mbz8uY291bnQgfHwgMDtcclxuICAgICAgICAvLyBCYWNrZW5kIHJldHVybnMgc2VsZWN0ZWQgc3RvcmVzIGZpcnN0IChzZWxlY3RlZC1maXJzdCBvcmRlcmluZykuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3RvcmVMaXN0ID0gcmVzPy5kYXRhPy5kYXRhIHx8IFtdO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU3RvcmVDaGVjayhldmVudDogYW55LCBmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBzdG9yZUlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5pbmNsdWRlcyhzdG9yZUlkKSkge1xyXG4gICAgICAgICAgaXRlbS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShpdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigodmFsOiBzdHJpbmcpID0+IHZhbCAhPT0gc3RvcmVJZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUsIHN0b3JlSWRdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5maWx0ZXIoKHZhbDogc3RyaW5nKSA9PiB2YWwgIT09IHN0b3JlSWQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XHJcbiAgICAgICAgICBpdGVtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5pdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLCBzdG9yZUlkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QWxsU3RvcmVzKGV2ZW50OiBhbnksIGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHN1YnNjcmliZWRTdG9yZUlkcyA9IHRoaXMuc3Vic2NyaWJlZFN0b3JlTGlzdC5tYXAoaXRlbSA9PiBpdGVtLnN0b3JlSWQpO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKChncm91cCkgPT4ge1xyXG4gICAgICAgIGdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZvckVhY2goKHN0b3JlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmIChzdWJzY3JpYmVkU3RvcmVJZHMuaW5jbHVkZXMoc3RvcmUpKSB7XHJcbiAgICAgICAgICAgIGdyb3VwLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKGdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiBpdGVtICE9PSBzdG9yZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShbLi4udGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgLi4uc3Vic2NyaWJlZFN0b3JlSWRzXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUuZmlsdGVyKChpdGVtOiBhbnkpID0+ICFzdWJzY3JpYmVkU3RvcmVJZHMuaW5jbHVkZXMoaXRlbSkpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XHJcbiAgICAgICAgICBpdGVtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5pdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi5zdWJzY3JpYmVkU3RvcmVJZHNdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTdG9yZVNlbGVjdGVkSW5Hcm91cChmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBzdG9yZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmluY2x1ZGVzKHN0b3JlSWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2VsZWN0ZWQgc3RvcmVJZHMgc2VudCB0byB0aGUgYmFja2VuZCBzbyBpdCBjYW4gc29ydCBzZWxlY3RlZCBzdG9yZXMgZmlyc3QuXHJcbiAgLy8gUmVhZCBzdHJhaWdodCBmcm9tIHRoZSBsaXZlIGZvcm0gKHRoZSBzYW1lIHNvdXJjZSBhcyB0aGUgY2hlY2tib3hlcyksIHNvIGl0XHJcbiAgLy8gYWx3YXlzIG1hdGNoZXMgdGhlIFVJLiBTY29wZSB0byB0aGUgYWN0aXZlIGdyb3VwICh0aGUgb25lIHdob3NlIFN0b3JlXHJcbiAgLy8gU2VsZWN0aW9uIHRhYiBpcyBvcGVuKSBzbyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyByZWZsZWN0cyBUSEFUIGdyb3VwJ3NcclxuICAvLyBzZWxlY3Rpb24sIG5vdCBhIHVuaW9uIGFjcm9zcyBhbGwgZ3JvdXBzLlxyXG4gIHByaXZhdGUgc2VsZWN0ZWRTdG9yZUlkc0ZvclNvcnQoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5iaWxsaW5nR3JvdXBzPy5jb250cm9scz8uW3RoaXMuYWN0aXZlR3JvdXBJbmRleF07XHJcbiAgICByZXR1cm4gWyAuLi4oYWN0aXZlPy5nZXQoJ3N0b3JlcycpPy52YWx1ZSB8fCBbXSkgXTtcclxuICB9XHJcblxyXG4gIGlzQWxsU3RvcmVzU2VsZWN0ZWRJbkdyb3VwKGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZWRTdG9yZUxpc3QuZXZlcnkoaXRlbSA9PiB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmluY2x1ZGVzKGl0ZW0uc3RvcmVJZCkpICYmIHRoaXMuc3Vic2NyaWJlZFN0b3JlTGlzdC5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQ7XHJcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICB9XHJcblxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHZhciBrID0gZXZlbnQuY2hhckNvZGU7XHJcbiAgICByZXR1cm4gKGsgPT0gOCB8fCBrID09IDMyIHx8IChrID49IDQ4ICYmIGsgPD0gNTcpKTtcclxuICB9XHJcblxyXG4gIGZvcmNlVXBwZXJjYXNlKGV2ZW50OiBhbnksIGlkeDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgdXBwZXIgPSBpbnB1dC52YWx1ZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgaWYgKGlucHV0LnZhbHVlICE9PSB1cHBlcikge1xyXG4gICAgICBjb25zdCBjYXJldCA9IGlucHV0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICBpbnB1dC52YWx1ZSA9IHVwcGVyO1xyXG4gICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShjYXJldCwgY2FyZXQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uc2V0VmFsdWUodXBwZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVycyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIGV2ZW50LmZvckVhY2goKHZhbDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh2YWwuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5JykgdGhpcy5maWx0ZXJDb3VudHJpZXMgPSB2YWwuSXNzdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcclxuICAgICAgaWYgKHZhbC5EZXNjcmlwdGlvbiA9PT0gJ1N0YXRlJykgdGhpcy5maWx0ZXJTdGF0ZXMgPSB2YWwuSXNzdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcclxuICAgICAgaWYgKHZhbC5EZXNjcmlwdGlvbiA9PT0gJ0NpdHknKSB0aGlzLmZpbHRlckNpdGllcyA9IHZhbC5Jc3N1ZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoe30pO1xyXG4gIH1cclxuXHJcbiAgb25FbWFpbEtleURvd24oZXZlbnQ6IGFueSwgZm9ybUFycmF5SW5kZXg6IG51bWJlcikge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PSAnQmFja3NwYWNlJyAmJiBldmVudC50YXJnZXQudmFsdWUgPT0gJycpIHtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZS5zbGljZSgwLCAtMSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09ICdFbnRlcicpIHtcclxuICAgICAgY29uc3QgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICAgICAgaWYgKGVtYWlsUmVnZXgudGVzdChldmVudC50YXJnZXQudmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnNldFZhbHVlKFxyXG4gICAgICAgICAgWy4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZSwgZXZlbnQudGFyZ2V0LnZhbHVlXVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUVtYWlsQ2hpcChlbWFpbDogc3RyaW5nLCBmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8uc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZS5maWx0ZXIoKHZhbDogc3RyaW5nKSA9PiB2YWwgIT09IGVtYWlsKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uU29ydChjb2x1bW46IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoe30pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGUoZm9ybUFycmF5SW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycpIHtcclxuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc2V0dGluZ3MnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycpIHtcclxuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc3RvcmUtc2VsZWN0aW9uJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8uc2V0VmFsdWUoJ3NldHRpbmdzJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEJpbGxpbmdHcm91cCgpIHtcclxuICAgIHRoaXMuYWRkRm9ybUl0ZW0oeyBncm91cE5hbWU6IGBHcm91cCAke3RoaXMuYmlsbGluZ0dyb3Vwcy5sZW5ndGggKyAxfWAsIGlzUHJpbWFyeTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChmb3JtVmFsdWVzOiBhbnksIGlkeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LmludmFsaWQpIHtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKCdiYXNpYy1pbmZvJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1BsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIGVtYWlsIGluIEdlbmVyYXRlIEludm9pY2UgVG8nKTtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKCdzZXR0aW5ncycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlIGZvcm1WYWx1ZXMuY3VycmVudFRhYjtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtVmFsdWVzKSB7XHJcbiAgICAgIGlmIChmb3JtVmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBpZiAoZm9ybVZhbHVlc1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBmb3JtVmFsdWVzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoZm9ybVZhbHVlcy5faWQpIHtcclxuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS51cGRhdGVCaWxsaW5nR3JvdXAoZm9ybVZhbHVlcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRQcmltYXJ5VG9hc3QoJ0JpbGxpbmcgZ3JvdXAgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlcnIuZXJyb3I/LmNvZGUgPT09IDQwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gdXBkYXRlIGJpbGxpbmcgZ3JvdXAnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5jcmVhdGVCaWxsaW5nR3JvdXAoZm9ybVZhbHVlcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRQcmltYXJ5VG9hc3QoJ0JpbGxpbmcgZ3JvdXAgY3JlYXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlcnIuZXJyb3I/LmNvZGUgPT09IDQwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gY3JlYXRlIGJpbGxpbmcgZ3JvdXAnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xpZW50UHJvZHVjdHMoKSB7XHJcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldENsaWVudFByb2R1Y3RzKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5wbGFuRGV0YWlscz8ucHJvZHVjdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZWRQcm9kdWN0cyA9IHJlcy5kYXRhLnBsYW5EZXRhaWxzLnByb2R1Y3QuZmlsdGVyKChwOiBhbnkpID0+IHAuc3RhdHVzID09PSAnbGl2ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbChpZHg6IG51bWJlcikge1xyXG4gICAgdGhpcy5hY2NvcmRpb24udG9nZ2xlKGlkeC50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByZXZlbnRFbnRlcihldmVudDogYW55KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdEJpbGxpbmdNZXRob2QoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgcHJvZHVjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwcm9kdWN0cyA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy52YWx1ZSB8fCBbXTtcclxuICAgIGNvbnN0IGZvdW5kID0gcHJvZHVjdHMuZmluZCgocDogYW55KSA9PiBwLnByb2R1Y3ROYW1lID09PSBwcm9kdWN0TmFtZSk7XHJcbiAgICByZXR1cm4gZm91bmQ/LmJpbGxpbmdNZXRob2QgfHwgJ292ZXJhbGxTdG9yZSc7XHJcbiAgfVxyXG5cclxuICBvbkJpbGxpbmdNZXRob2RDaGFuZ2UoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgcHJvZHVjdE5hbWU6IHN0cmluZywgZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8udmFsdWUgfHwgW107XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHByb2R1Y3RzLmZpbmQoKHA6IGFueSkgPT4gcC5wcm9kdWN0TmFtZSA9PT0gcHJvZHVjdE5hbWUpO1xyXG4gICAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICAgIGV4aXN0aW5nLmJpbGxpbmdNZXRob2QgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwcm9kdWN0cy5wdXNoKHsgcHJvZHVjdE5hbWUsIGJpbGxpbmdNZXRob2Q6IGV2ZW50LnRhcmdldC52YWx1ZSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy5zZXRWYWx1ZShbLi4ucHJvZHVjdHNdKTtcclxuICB9XHJcblxyXG4gIG9uQmlsbGluZ01ldGhvZFNlbGVjdENoYW5nZShmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBwcm9kdWN0TmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBwcm9kdWN0cyA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy52YWx1ZSB8fCBbXTtcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gcHJvZHVjdHMuZmluZCgocDogYW55KSA9PiBwLnByb2R1Y3ROYW1lID09PSBwcm9kdWN0TmFtZSk7XHJcbiAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgZXhpc3RpbmcuYmlsbGluZ01ldGhvZCA9IHZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHJvZHVjdHMucHVzaCh7IHByb2R1Y3ROYW1lLCBiaWxsaW5nTWV0aG9kOiB2YWx1ZSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy5zZXRWYWx1ZShbLi4ucHJvZHVjdHNdKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFByb2R1Y3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnJztcclxuICAgIHJldHVybiBuYW1lLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXHJcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIC8vIEdTVElOIHN0YXRlLWNvZGUgcHJlZml4IOKGkiBTdGF0ZSAoUGxhY2Ugb2YgU3VwcGx5KVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3N0U3RhdGVDb2RlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgJzAxJzogJ0phbW11IGFuZCBLYXNobWlyJyxcclxuICAgICcwMic6ICdIaW1hY2hhbCBQcmFkZXNoJyxcclxuICAgICcwMyc6ICdQdW5qYWInLFxyXG4gICAgJzA0JzogJ0NoYW5kaWdhcmgnLFxyXG4gICAgJzA1JzogJ1V0dGFyYWtoYW5kJyxcclxuICAgICcwNic6ICdIYXJ5YW5hJyxcclxuICAgICcwNyc6ICdEZWxoaScsXHJcbiAgICAnMDgnOiAnUmFqYXN0aGFuJyxcclxuICAgICcwOSc6ICdVdHRhciBQcmFkZXNoJyxcclxuICAgICcxMCc6ICdCaWhhcicsXHJcbiAgICAnMTEnOiAnU2lra2ltJyxcclxuICAgICcxMic6ICdBcnVuYWNoYWwgUHJhZGVzaCcsXHJcbiAgICAnMTMnOiAnTmFnYWxhbmQnLFxyXG4gICAgJzE0JzogJ01hbmlwdXInLFxyXG4gICAgJzE1JzogJ01pem9yYW0nLFxyXG4gICAgJzE2JzogJ1RyaXB1cmEnLFxyXG4gICAgJzE3JzogJ01lZ2hhbGF5YScsXHJcbiAgICAnMTgnOiAnQXNzYW0nLFxyXG4gICAgJzE5JzogJ1dlc3QgQmVuZ2FsJyxcclxuICAgICcyMCc6ICdKaGFya2hhbmQnLFxyXG4gICAgJzIxJzogJ09kaXNoYScsXHJcbiAgICAnMjInOiAnQ2hoYXR0aXNnYXJoJyxcclxuICAgICcyMyc6ICdNYWRoeWEgUHJhZGVzaCcsXHJcbiAgICAnMjQnOiAnR3VqYXJhdCcsXHJcbiAgICAnMjUnOiAnRGFtYW4gYW5kIERpdScsXHJcbiAgICAnMjYnOiAnRGFkcmEgYW5kIE5hZ2FyIEhhdmVsaSBhbmQgRGFtYW4gYW5kIERpdScsXHJcbiAgICAnMjcnOiAnTWFoYXJhc2h0cmEnLFxyXG4gICAgJzI4JzogJ0FuZGhyYSBQcmFkZXNoIChPbGQpJyxcclxuICAgICcyOSc6ICdLYXJuYXRha2EnLFxyXG4gICAgJzMwJzogJ0dvYScsXHJcbiAgICAnMzEnOiAnTGFrc2hhZHdlZXAnLFxyXG4gICAgJzMyJzogJ0tlcmFsYScsXHJcbiAgICAnMzMnOiAnVGFtaWwgTmFkdScsXHJcbiAgICAnMzQnOiAnUHVkdWNoZXJyeScsXHJcbiAgICAnMzUnOiAnQW5kYW1hbiBhbmQgTmljb2JhciBJc2xhbmRzJyxcclxuICAgICczNic6ICdUZWxhbmdhbmEnLFxyXG4gICAgJzM3JzogJ0FuZGhyYSBQcmFkZXNoJyxcclxuICAgICczOCc6ICdMYWRha2gnLFxyXG4gICAgJzk3JzogJ090aGVyIFRlcnJpdG9yeScsXHJcbiAgICAnOTknOiAnQ2VudHJlIEp1cmlzZGljdGlvbidcclxuICB9O1xyXG5cclxuICBvbkdzdENoYW5nZShmb3JtQXJyYXlJbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBnc3QgPSAodmFsdWUgfHwgJycpLnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgY29uc3QgcGxhY2VPZlN1cHBseUN0cmwgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncGxhY2VPZlN1cHBseScpO1xyXG4gICAgaWYgKGdzdC5sZW5ndGggPCAyKSB7XHJcbiAgICAgIHBsYWNlT2ZTdXBwbHlDdHJsPy5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gJ2lkbGUnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2RlID0gZ3N0LnN1YnN0cmluZygwLCAyKTtcclxuICAgIGNvbnN0IHN0YXRlTmFtZSA9IHRoaXMuZ3N0U3RhdGVDb2RlTWFwW2NvZGVdO1xyXG4gICAgaWYgKHN0YXRlTmFtZSkge1xyXG4gICAgICBwbGFjZU9mU3VwcGx5Q3RybD8uc2V0VmFsdWUoYCR7c3RhdGVOYW1lfSAoJHtjb2RlfSlgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBsYWNlT2ZTdXBwbHlDdHJsPy5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRnVsbCBHU1RJTiBpcyAxNSBjaGFycyAoMTUtY2hhciBhbHBoYW51bWVyaWMpLiBUcmlnZ2VyIHRoZSBhZGRyZXNzXHJcbiAgICAvLyBsb29rdXAgb25jZSB0aGUgdXNlciBoYXMgdHlwZWQgYWxsIDE1LiBTa2lwIGlmIHdlIGFscmVhZHkgbG9va2VkIHRoaXNcclxuICAgIC8vIGV4YWN0IHZhbHVlIHVwIGZvciB0aGlzIHJvdyDigJQgb3RoZXJ3aXNlIHRoZSAoaW5wdXQpIGV2ZW50IHdvdWxkIHJlZmlyZVxyXG4gICAgLy8gb24gZm9jdXMvYmx1ciBhbmQgY2xvYmJlciBhbnkgbWFudWFsIHR3ZWFrcyB0aGUgdXNlciBtYWRlLlxyXG4gICAgaWYgKGdzdC5sZW5ndGggPT09IDE1ICYmIHRoaXMubGFzdExvb2tlZFVwR3N0aW5bZm9ybUFycmF5SW5kZXhdICE9PSBnc3QpIHtcclxuICAgICAgdGhpcy5sb29rdXBBbmRGaWxsQWRkcmVzcyhmb3JtQXJyYXlJbmRleCwgZ3N0KTtcclxuICAgIH0gZWxzZSBpZiAoZ3N0Lmxlbmd0aCA8IDE1KSB7XHJcbiAgICAgIC8vIFJlc2V0IHN0YXRlIHNvIGEgcHJldmlvdXMgXCJmb3VuZFwiIGluZGljYXRvciBkb2Vzbid0IHN0aWNrIGFyb3VuZFxyXG4gICAgICAvLyB3aGlsZSB0aGUgdXNlciBpcyBlZGl0aW5nIHRoZSBudW1iZXIgdG8gYSBuZXcgdmFsdWUuXHJcbiAgICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gJ2lkbGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb29rdXBBbmRGaWxsQWRkcmVzcyhmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBnc3Q6IHN0cmluZykge1xyXG4gICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSAnbG9hZGluZyc7XHJcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmxvb2t1cEdzdGluKGdzdCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIEJhY2tlbmQgd3JhcDogeyBjb2RlLCBzdGF0dXMsIGRhdGE6IDxwYXlsb2FkPiB9LiBQYXlsb2FkIGl0c2VsZlxyXG4gICAgICAgIC8vIG1heSBhbHNvIGJlIG5lc3RlZCB1bmRlciBgZGF0YWAgaWYgdGhlIHJlc3BvbnNlIG1pZGRsZXdhcmUgZG91YmxlLVxyXG4gICAgICAgIC8vIHdyYXBzIGl0OyBoYW5kbGUgYm90aCBzaGFwZXMgdG8gYmUgc2FmZS5cclxuICAgICAgICBjb25zdCBwYXlsb2FkID0gcmVzPy5kYXRhPy5kYXRhIHx8IHJlcz8uZGF0YSB8fCB7fTtcclxuICAgICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQuZ3N0aW4pIHtcclxuICAgICAgICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gJ25vdGZvdW5kJztcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpO1xyXG4gICAgICAgIC8vIFBhdGNoIG9ubHkgdGhlIGFkZHJlc3MtcmVsYXRlZCBmaWVsZHMuIERvbid0IG92ZXJ3cml0ZSBncm91cE5hbWUsXHJcbiAgICAgICAgLy8gZ3JvdXBUYWcsIHN0b3JlcywgY3VycmVuY3ksIHBheW1lbnRUZXJtIOKAlCB0aG9zZSBhcmUgdXNlciBjaG9pY2VzLFxyXG4gICAgICAgIC8vIG5vdCBkZXJpdmVkIGZyb20gR1NUSU4uXHJcbiAgICAgICAgY29uc3QgcGF0Y2g6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgICAgICBpZiAocGF5bG9hZC5sZWdhbE5hbWUpIHBhdGNoWydyZWdpc3RlcmVkQ29tcGFueU5hbWUnXSA9IFN0cmluZyhwYXlsb2FkLmxlZ2FsTmFtZSkudG9VcHBlckNhc2UoKTtcclxuICAgICAgICBpZiAocGF5bG9hZC5hZGRyZXNzTGluZU9uZSkgcGF0Y2hbJ2FkZHJlc3NMaW5lT25lJ10gPSBwYXlsb2FkLmFkZHJlc3NMaW5lT25lO1xyXG4gICAgICAgIGlmIChwYXlsb2FkLmFkZHJlc3NMaW5lVHdvKSBwYXRjaFsnYWRkcmVzc0xpbmVUd28nXSA9IHBheWxvYWQuYWRkcmVzc0xpbmVUd287XHJcbiAgICAgICAgaWYgKHBheWxvYWQuY2l0eSkgcGF0Y2hbJ2NpdHknXSA9IHBheWxvYWQuY2l0eTtcclxuICAgICAgICBpZiAocGF5bG9hZC5zdGF0ZSkgcGF0Y2hbJ3N0YXRlJ10gPSBwYXlsb2FkLnN0YXRlO1xyXG4gICAgICAgIGlmIChwYXlsb2FkLmNvdW50cnkpIHBhdGNoWydjb3VudHJ5J10gPSBwYXlsb2FkLmNvdW50cnk7XHJcbiAgICAgICAgaWYgKHBheWxvYWQucGluQ29kZSkgcGF0Y2hbJ3BpbkNvZGUnXSA9IHBheWxvYWQucGluQ29kZTtcclxuICAgICAgICBpZiAocGF5bG9hZC5wbGFjZU9mU3VwcGx5KSBwYXRjaFsncGxhY2VPZlN1cHBseSddID0gcGF5bG9hZC5wbGFjZU9mU3VwcGx5O1xyXG4gICAgICAgIGdyb3VwLnBhdGNoVmFsdWUocGF0Y2gpO1xyXG4gICAgICAgIHRoaXMubGFzdExvb2tlZFVwR3N0aW5bZm9ybUFycmF5SW5kZXhdID0gZ3N0O1xyXG4gICAgICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gJ2ZvdW5kJztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIDQwNCA9IHVua25vd24gR1NUSU47IGV2ZXJ5dGhpbmcgZWxzZSBzdXJmYWNlcyBhcyBhbiBlcnJvciBzbyB0aGVcclxuICAgICAgICAvLyB1c2VyIGtub3dzIHRoZSBhdXRvLWZpbGwgZGlkbid0IGhhcHBlbiBhbmQgdGhleSBzaG91bGQgZW50ZXJcclxuICAgICAgICAvLyBtYW51YWxseS5cclxuICAgICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9IGVycj8uc3RhdHVzID09PSA0MDQgPyAnbm90Zm91bmQnIDogJ2Vycm9yJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIFVwZGF0ZSBCaWxsaW5nIEluZm9ybWF0aW9uXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkQmlsbGluZ0dyb3VwKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gYWxpZ24taXRlbXMtZW5kIG5lZWRoZWxwXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDEzIDQuMTY2MDJWMTUuODMyN000LjE2Nzk3IDkuOTk5MzVIMTUuODM0NlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+QWRkIEJpbGxpbmcgR3JvdXA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48Zm9ybSBbZm9ybUdyb3VwXT1cImJpbGxpbmdGb3JtXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYmlsbGluZ0dyb3Vwcy5sZW5ndGggPiAxXCIgZm9ybUFycmF5TmFtZT1cImdyb3Vwc1wiIG5nYkFjY29yZGlvbiBhY2NvcmRpb249XCJOZ2JBY2NvcmRpb25cIlxyXG4gICAgICAgIFtjbG9zZU90aGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgYmlsbGluZ0dyb3Vwcy5jb250cm9sczsgbGV0IGkgPSBpbmRleDtcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCJcclxuICAgICAgICAgICAgW25nYkFjY29yZGlvbkl0ZW1dPVwiaS50b1N0cmluZygpXCIgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXIgW2F0dHIuZGF0YS1ncm91cC1pZHhdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCI+e3tncm91cC5nZXQoJ2dyb3VwTmFtZScpPy52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXAuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWVcIiBjbGFzcz1cInByaW1hcnktYmFkZ2VcIj5QcmltYXJ5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25EZWxldGVHcm91cChpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDQuOTk5MzVINC4xNjY2N000LjE2NjY3IDQuOTk5MzVMMTcuNSA0Ljk5OTM1TTQuMTY2NjcgNC45OTkzNUw0LjE2NjY3IDE2LjY2NkM0LjE2NjY3IDE3LjEwOCA0LjM0MjI2IDE3LjUzMiA0LjY1NDgyIDE3Ljg0NDVDNC45NjczOCAxOC4xNTcxIDUuMzkxMzEgMTguMzMyNyA1LjgzMzMzIDE4LjMzMjdIMTQuMTY2N0MxNC42MDg3IDE4LjMzMjcgMTUuMDMyNiAxOC4xNTcxIDE1LjM0NTIgMTcuODQ0NUMxNS42NTc3IDE3LjUzMiAxNS44MzMzIDE3LjEwOCAxNS44MzMzIDE2LjY2NkwxNS44MzMzIDQuOTk5MzVMNC4xNjY2NyA0Ljk5OTM1Wk02LjY2NjY3IDQuOTk5MzVWMy4zMzI2OEM2LjY2NjY3IDIuODkwNjUgNi44NDIyNiAyLjQ2NjczIDcuMTU0ODIgMi4xNTQxN0M3LjQ2NzM4IDEuODQxNjEgNy44OTEzMSAxLjY2NjAyIDguMzMzMzMgMS42NjYwMkwxMS42NjY3IDEuNjY2MDJDMTIuMTA4NyAxLjY2NjAyIDEyLjUzMjYgMS44NDE2MSAxMi44NDUyIDIuMTU0MTdDMTMuMTU3NyAyLjQ2NjczIDEzLjMzMzMgMi44OTA2NSAxMy4zMzMzIDMuMzMyNjhWNC45OTkzNU04LjMzMzMzIDkuMTY2MDJMOC4zMzMzMyAxNC4xNjZNMTEuNjY2NyA5LjE2NjAyVjE0LjE2NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWUgPyAncm93LWNvbHMtMicgOiAnJ1wiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgcm93IHJvdy1jb2xzLTMgIGctMCBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uVGFiQ2hhbmdlKGksICdiYXNpYy1pbmZvJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nID8gJ3NlbGVjdGVkJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1cIj5CYXNpYyBJbmZvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnc3RvcmUtc2VsZWN0aW9uJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3N0b3JlLXNlbGVjdGlvbicgPyAnc2VsZWN0ZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiPlN0b3JlIFNlbGVjdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ3NldHRpbmdzJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3NldHRpbmdzJyA/ICdzZWxlY3RlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCI+U2V0dGluZ3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdiYXNpYy1pbmZvJyA/ICdkLW5vbmUnIDogJydcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJncm91cE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Hcm91cCBOYW1lKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJncm91cE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImdyb3VwTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdncm91cE5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdncm91cE5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgbmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImdyb3VwVGFnXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImdyb3VwVGFnT3B0aW9uc1wiIFtsYWJlbF09XCInR3JvdXAgVGFnKidcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dyb3VwVGFnJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2dyb3VwVGFnJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgdGFnIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlZ2lzdGVyZWQgQ29tcGFueSBOYW1lKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoaW5wdXQpPVwiZm9yY2VVcHBlcmNhc2UoJGV2ZW50LCBpKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVnaXN0ZXJlZENvbXBhbnlOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGNvbXBhbnkgbmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJnc3RcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5HU1Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cIm9uR3N0Q2hhbmdlKGksICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZ3N0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3N0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdnc3QnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdnc3QnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1QgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBHU1RJTiBhZGRyZXNzLWxvb2t1cCBmZWVkYmFjay4gU3RhdGUgbWFjaGluZSBkcml2ZW4gYnkgbG9va3VwQW5kRmlsbEFkZHJlc3MoKS4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LW11dGVkXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2xvYWRpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9va2luZyB1cCByZWdpc3RlcmVkIGFkZHJlc3PigKZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZm91bmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBhZGRyZXNzIGF1dG8tZmlsbGVkLiBFZGl0IGlmIG5lZWRlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LXdhcm5pbmdcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnbm90Zm91bmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gcmVnaXN0ZXJlZCBhZGRyZXNzIGZvdW5kIGZvciB0aGlzIEdTVElOLiBFbnRlciBtYW51YWxseS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdlcnJvcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGxvb2t1cCBmYWlsZWQuIEVudGVyIG1hbnVhbGx5LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNSBzdWItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIERldGFpbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lT25lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDE8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVPbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NMaW5lT25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc0xpbmVUd29cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIGxpbmUgMjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzTGluZVR3b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc0xpbmVUd29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2l0eTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjaXR5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnY2l0eScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnY2l0eScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnY2l0eScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENpdHkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdGF0ZS9wcm92aW5jZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3N0YXRlJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdzdGF0ZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3N0YXRlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY291bnRyeVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvdW50cnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY291bnRyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnY291bnRyeScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnY291bnRyeScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnY291bnRyeScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50cnkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGluQ29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBpbiBjb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGluQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGluQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncGluQ29kZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncGluQ29kZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BpbkNvZGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncGluQ29kZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2RlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBsYWNlT2ZTdXBwbHlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QbGFjZSBvZiBTdXBwbHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGxhY2VPZlN1cHBseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGxhY2VPZlN1cHBseVwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlIG9mIHN1cHBseSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwb1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBPPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBvXCIgZm9ybUNvbnRyb2xOYW1lPVwicG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BvJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdwbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVyY2hhc2Ugb3JkZXIgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdzdG9yZS1zZWxlY3Rpb24nID8gJ2Qtbm9uZScgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS41IDEwTDExLjQzIDEwLjczQzEyLjQxIDkuNTkgMTMgOC4xMSAxMyA2LjVDMTMgMi45MSAxMC4wOSAwIDYuNSAwQzIuOTEgMCAwIDIuOTEgMCA2LjVDMCAxMC4wOSAyLjkxIDEzIDYuNSAxM0M4LjExIDEzIDkuNTkgMTIuNDEgMTAuNzMgMTEuNDNMMTAuMjc2MiAxMS43MUwxNiAxNy40OUwxNy40OSAxNkwxMS41IDEwWk02LjUgMTFDNC4wMSAxMSAyIDguOTkgMiA2LjVDMiA0LjAxIDQuMDEgMiA2LjUgMkM4Ljk5IDIgMTEgNC4wMSAxMSA2LjVDMTEgOC45OSA4Ljk5IDExIDYuNSAxMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiYmxhY2tcIiBmaWxsLW9wYWNpdHk9XCIwLjU0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBTdG9yZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJEYXRhLmxlbmd0aFwiIGNsYXNzPVwibWUtMlwiIFtkYXRhT2JqZWN0XT1cImZpbHRlckRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHN1YnNjcmliZWRTdG9yZXNBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJzY3JpYmVkU3RvcmVMaXN0Py5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBzdG9yZS10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJpc0FsbFN0b3Jlc1NlbGVjdGVkSW5Hcm91cChpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsU3RvcmVzKCRldmVudCwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgdHlwZT1cImNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrRGVmYXVsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlN0b3JlIE5hbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVOYW1lJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnc3RvcmVJZCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlSWQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc3Vic2NyaWJlZFN0b3JlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJpc1N0b3JlU2VsZWN0ZWRJbkdyb3VwKGksIGRhdGE/LnN0b3JlSWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TdG9yZUNoZWNrKCRldmVudCwgaSwgZGF0YT8uc3RvcmVJZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgdHlwZT1cImNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uc3RvcmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLWlkXCI+SUQgOiB7e2RhdGE/LnN0b3JlSWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIGRhdGE/LnByb2R1Y3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QgPT09ICd0YW5nb1RyYWZmaWMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwIG1lLTIgbWItMlwiPlRyYWZmaWM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0ID09PSAndGFuZ29ab25lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcCBtZS0yIG1iLTJcIj5ab25lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdCA9PT0gJ3RhbmdvVHJheCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXAgbWUtMiBtYi0yXCI+VHJheDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3Vic2NyaWJlZFN0b3JlTGlzdC5sZW5ndGhcIiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJzY3JpYmVkU3RvcmVMaXN0Py5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHN1YnNjcmliZWRTdG9yZXNBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lci1jYXJkIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnc2V0dGluZ3MnID8gJ2Qtbm9uZScgOiAnJ1wiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlByaWNpbmcgTWV0aG9kPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInByb1JhdGFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3Byb3JhdGUtJyArIGlcIiB2YWx1ZT1cInByb3JhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgW2Zvcl09XCIncHJvcmF0ZS0nICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcmF0ZSDigJQgYmlsbCBmb3IgYWN0dWFsIHdvcmtpbmcgZGF5c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmbGF0LScgKyBpXCIgdmFsdWU9XCJmbGF0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIFtmb3JdPVwiJ2ZsYXQtJyArIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXQg4oCUIGJpbGwgZm9yIHRoZSB3aG9sZSBtb250aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5BZHZhbmNlIEludm9pY2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCIgbmdiVG9vbHRpcD1cIkNyZWF0ZXMgYW4gaW52b2ljZSBmb3IgdGhlIG5leHQgbW9udGggYXV0b21hdGljYWxseSB1cG9uIHNhdmluZ1wiIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTNDMTAuMzEzNyAxMyAxMyAxMC4zMTM3IDEzIDdDMTMgMy42ODYyOSAxMC4zMTM3IDEgNyAxQzMuNjg2MjkgMSAxIDMuNjg2MjkgMSA3QzEgMTAuMzEzNyAzLjY4NjI5IDEzIDcgMTNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDkuNFY3TTcgNC42SDcuMDA2XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkdmFuY2VJbnZvaWNlXycgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VJbnZvaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cIidhZHZhbmNlSW52b2ljZV8nICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgaW4gYWR2YW5jZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmF0KGkpLmdldCgnYWR2YW5jZUludm9pY2UnKT8udmFsdWVcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBmdy1zZW1pYm9sZFwiPkFkdmFuY2UgZnJlcXVlbmN5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiYWR2YW5jZVBlcmlvZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGFkdmFuY2VQZXJpb2RPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdC52YWx1ZVwiPnt7IG9wdC5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWR2YW5jZSBpbnZvaWNlIHdpbGwgY292ZXIge3sgYWR2YW5jZUludm9pY2VSYW5nZShiaWxsaW5nR3JvdXBzLmF0KGkpLmdldCgnYWR2YW5jZVBlcmlvZCcpPy52YWx1ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiICpuZ0lmPVwic3Vic2NyaWJlZFByb2R1Y3RzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0zXCI+UHJvZHVjdCBCaWxsaW5nIE1ldGhvZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5vdGU6IG5vIC50YWJsZS1yZXNwb25zaXZlIHdyYXBwZXIgaGVyZS4gSXRzIG92ZXJmbG93LXg6YXV0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcyB0aGUgQmlsbGluZyBNZXRob2QgZHJvcGRvd24gb3B0aW9ucyBwYW5lbC4gVGhlIHRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgaGFzIHR3byBjb2x1bW5zLCBzbyBob3Jpem9udGFsIHNjcm9sbCBpc24ndCBuZWVkZWQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc20gYm90dG9tLWJvcmRlciBiaWxsaW5nLW1ldGhvZC10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJpbGxpbmcgTWV0aG9kPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kIG9mIHN1YnNjcmliZWRQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2QucHJvZHVjdE5hbWUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRQcm9kdWN0QmlsbGluZ01ldGhvZChpLCBwcm9kLnByb2R1Y3ROYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJpbGxpbmdNZXRob2RTZWxlY3RDaGFuZ2UoaSwgcHJvZC5wcm9kdWN0TmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJiaWxsaW5nTWV0aG9kT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImN1cnJlbmN5T3B0aW9uc1wiIFtsYWJlbF09XCInQ3VycmVuY3knXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0YXhDYWxjdWxhdGlvblR5cGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwidGF4Q2FsY3VsYXRpb25UeXBlT3B0aW9uc1wiIFtsYWJlbF09XCInVGF4IENhbGN1bGF0aW9uJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEN5Y2xlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInBheW1lbnRDeWNsZU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1BheW1lbnQgQ3ljbGUnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50VGVybVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJwYXltZW50VGVybU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1BheW1lbnQgVGVybSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtMTIgY29sLXh4bC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZW1haWwnICsgaVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkdlbmVyYXRlIEludm9pY2UgVG8qIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQtcmVxdWlyZWRcIj48L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbWFpbCBvZiBncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57eyBlbWFpbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlRW1haWxDaGlwKGVtYWlsLCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiAoa2V5ZG93bik9XCJvbkVtYWlsS2V5RG93bigkZXZlbnQsIGkpXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbWFpbFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtaW5wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmICFncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2UgZW1haWwgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlN0b3JlIExpc3QgQW5uZXh1cmUgQXR0YWNoZWQgV2l0aCBJbnZvaWNlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImF0dGFjaEFubmV4dXJlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cInllc1wiIFt2YWx1ZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwieWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImF0dGFjaEFubmV4dXJlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cIm5vXCIgW3ZhbHVlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwibm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWVuZCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNhbmNlbChpKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nIHx8IGdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3N0b3JlLXNlbGVjdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5hdmlnYXRlKGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc2V0dGluZ3MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblN1Ym1pdChncm91cC52YWx1ZSwgaSlcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiPlNhdmUgQ2hhbmdlczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJpbGxpbmdHcm91cHMubGVuZ3RoID09PSAxXCIgZm9ybUFycmF5TmFtZT1cImdyb3Vwc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGJpbGxpbmdHcm91cHMuY29udHJvbHM7IGxldCBpID0gaW5kZXg7XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYiByb3cgcm93LWNvbHMtMiBnLTAgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ2Jhc2ljLWluZm8nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyA/ICdzZWxlY3RlZCcgOiAnJ1wiIGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnc2V0dGluZ3MnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzZXR0aW5ncycgPyAnc2VsZWN0ZWQnIDogJydcIiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSAhPT0gJ2Jhc2ljLWluZm8nID8gJ2Qtbm9uZScgOiAnJ1wiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5SZWdpc3RlcmVkIENvbXBhbnkgTmFtZSo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoaW5wdXQpPVwiZm9yY2VVcHBlcmNhc2UoJGV2ZW50LCBpKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGNvbXBhbnkgbmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImdzdFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkdTVDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIChpbnB1dCk9XCJvbkdzdENoYW5nZShpLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImdzdFwiIGZvcm1Db250cm9sTmFtZT1cImdzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdnc3QnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnZ3N0Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGNvbXBhbnkgbmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1tdXRlZFwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdsb2FkaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9va2luZyB1cCByZWdpc3RlcmVkIGFkZHJlc3PigKZcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1zdWNjZXNzXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2ZvdW5kJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBhZGRyZXNzIGF1dG8tZmlsbGVkLiBFZGl0IGlmIG5lZWRlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC13YXJuaW5nXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ25vdGZvdW5kJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gcmVnaXN0ZXJlZCBhZGRyZXNzIGZvdW5kIGZvciB0aGlzIEdTVElOLiBFbnRlciBtYW51YWxseS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1kYW5nZXJcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZXJyb3InXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGxvb2t1cCBmYWlsZWQuIEVudGVyIG1hbnVhbGx5LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNSBzdWItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc0xpbmVPbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIGxpbmUgMTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NMaW5lT25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NMaW5lT25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2FkZHJlc3NMaW5lT25lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lVHdvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzTGluZVR3b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZVR3b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2l0eTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NpdHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnY2l0eScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdjaXR5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXR5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdGF0ZS9wcm92aW5jZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0YXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnc3RhdGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3N0YXRlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50cnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db3VudHJ5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY291bnRyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NvdW50cnknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnY291bnRyeScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGluQ29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBpbiBjb2RlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaW5Db2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBpbkNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncGluQ29kZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncGluQ29kZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BpbkNvZGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2RlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGxhY2VPZlN1cHBseVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBsYWNlIG9mIFN1cHBseTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlT2ZTdXBwbHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGxhY2VPZlN1cHBseVwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Ugb2Ygc3VwcGx5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QTzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBvXCIgZm9ybUNvbnRyb2xOYW1lPVwicG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncG8nKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXJjaGFzZSBvcmRlciBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnc2V0dGluZ3MnID8gJ2Qtbm9uZScgOiAnJ1wiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5QcmljaW5nIE1ldGhvZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3Byb3JhdGUtZWRpdC0nICsgaVwiIHZhbHVlPVwicHJvcmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIFtmb3JdPVwiJ3Byb3JhdGUtZWRpdC0nICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9yYXRlIOKAlCBiaWxsIGZvciBhY3R1YWwgd29ya2luZyBkYXlzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJvUmF0YVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCIgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmbGF0LWVkaXQtJyArIGlcIiB2YWx1ZT1cImZsYXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBbZm9yXT1cIidmbGF0LWVkaXQtJyArIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhdCDigJQgYmlsbCBmb3IgdGhlIHdob2xlIG1vbnRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPkFkdmFuY2UgSW52b2ljZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiIG5nYlRvb2x0aXA9XCJDcmVhdGVzIGFuIGludm9pY2UgZm9yIHRoZSBuZXh0IG1vbnRoIGF1dG9tYXRpY2FsbHkgdXBvbiBzYXZpbmdcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxM0MxMC4zMTM3IDEzIDEzIDEwLjMxMzcgMTMgN0MxMyAzLjY4NjI5IDEwLjMxMzcgMSA3IDFDMy42ODYyOSAxIDEgMy42ODYyOSAxIDdDMSAxMC4zMTM3IDMuNjg2MjkgMTMgNyAxM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyA5LjRWN003IDQuNkg3LjAwNlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZHZhbmNlSW52b2ljZVNpbmdsZV8nICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VJbnZvaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFtmb3JdPVwiJ2FkdmFuY2VJbnZvaWNlU2luZ2xlXycgKyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGluIGFkdmFuY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VJbnZvaWNlJyk/LnZhbHVlXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBmdy1zZW1pYm9sZFwiPkFkdmFuY2UgZnJlcXVlbmN5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJhZHZhbmNlUGVyaW9kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBhZHZhbmNlUGVyaW9kT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdmFuY2UgaW52b2ljZSB3aWxsIGNvdmVyIHt7IGFkdmFuY2VJbnZvaWNlUmFuZ2UoYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VQZXJpb2QnKT8udmFsdWUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCIgKm5nSWY9XCJzdWJzY3JpYmVkUHJvZHVjdHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItM1wiPlByb2R1Y3QgQmlsbGluZyBNZXRob2Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc20gYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJpbGxpbmcgTWV0aG9kPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kIG9mIHN1YnNjcmliZWRQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2QucHJvZHVjdE5hbWUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRQcm9kdWN0QmlsbGluZ01ldGhvZChpLCBwcm9kLnByb2R1Y3ROYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJpbGxpbmdNZXRob2RTZWxlY3RDaGFuZ2UoaSwgcHJvZC5wcm9kdWN0TmFtZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJiaWxsaW5nTWV0aG9kT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJjdXJyZW5jeU9wdGlvbnNcIiBbbGFiZWxdPVwiJ0N1cnJlbmN5J1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGF4Q2FsY3VsYXRpb25UeXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInRheENhbGN1bGF0aW9uVHlwZU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1RheCBDYWxjdWxhdGlvbidcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRDeWNsZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJwYXltZW50Q3ljbGVPcHRpb25zXCIgW2xhYmVsXT1cIidQYXltZW50IEN5Y2xlJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudFRlcm1cIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwicGF5bWVudFRlcm1PcHRpb25zXCIgW2xhYmVsXT1cIidQYXltZW50IFRlcm0nXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC0xMiBjb2wteHhsLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2VtYWlsJyArIGlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5HZW5lcmF0ZSBJbnZvaWNlIFRvKiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQtcmVxdWlyZWRcIj48L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbWFpbCBvZiBncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zXCI+e3sgZW1haWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlRW1haWxDaGlwKGVtYWlsLCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiAoa2V5ZG93bik9XCJvbkVtYWlsS2V5RG93bigkZXZlbnQsIGkpXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtYWlsVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1pbnBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgIWdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2ljZSBlbWFpbCBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlN0b3JlIExpc3QgQW5uZXh1cmUgQXR0YWNoZWQgV2l0aCBJbnZvaWNlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2hBbm5leHVyZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cInllc1wiIFt2YWx1ZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBmb3I9XCJ5ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImF0dGFjaEFubmV4dXJlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwibm9cIiBbdmFsdWVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIGZvcj1cIm5vXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQganVzdGlmeS1jb250ZW50LWVuZCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm1vZGFsUmVmLmNsb3NlKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTEwMFwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyB8fCBncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5hdmlnYXRlKGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3NldHRpbmdzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblN1Ym1pdChncm91cC52YWx1ZSwgaSlcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiPlNhdmUgQ2hhbmdlczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuPC9mb3JtPlxyXG48L2Rpdj4iXX0=
765
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBMEIsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVNuRixNQUFNLE9BQU8seUJBQXlCO0lBMEYxQjtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBNUZELFFBQVEsQ0FBUztJQUNqQixPQUFPLENBQVM7SUFDaEIsVUFBVSxDQUFTO0lBQzVCLFdBQVcsQ0FBWTtJQUN2QixTQUFTLENBQVU7SUFDbkIsVUFBVSxHQUEwQixFQUFFLENBQUM7SUFDdkMsbUJBQW1CLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLDZFQUE2RTtJQUM3RSx3REFBd0Q7SUFDeEQsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1Qiw0RUFBNEU7SUFDNUUseUVBQXlFO0lB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RnpCLHFCQUFxQixnREM3RmxDLDgwNERBK3lCTTs7NEZEbnlCTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCOzhMQU16QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQTZFNEIsU0FBUztzQkFBMUMsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYkFjY29yZGlvbkRpcmVjdGl2ZSwgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBCaWxsaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JpbGxpbmcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaWxsaW5nLWdyb3VwLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWxsaW5nLWdyb3VwLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iaWxsaW5nLWdyb3VwLWZvcm0uY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZztcclxuICBASW5wdXQoKSBncm91cElkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VycmVudFRhYjogc3RyaW5nO1xyXG4gIGJpbGxpbmdGb3JtOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkOiBib29sZWFuO1xyXG4gIGZpbHRlckRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5bXSA9IFtdO1xyXG4gIHN1YnNjcmliZWRTdG9yZUxpc3Q6IGFueVtdID0gW107XHJcbiAgLy8gR3JvdXAgY3VycmVudGx5IGJlaW5nIGVkaXRlZCDigJQgY2FwdHVyZWQgYmVmb3JlIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkLCBzb1xyXG4gIC8vIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nIGNhbiByZWFkIGl0cyBzZWxlY3RlZCBzdG9yZXMuXHJcbiAgZWRpdGluZ0dyb3VwSWQ6IHN0cmluZyA9ICcnO1xyXG4gIC8vIEZvcm1BcnJheSBpbmRleCBvZiB0aGUgZ3JvdXAgd2hvc2UgU3RvcmUgU2VsZWN0aW9uIHRhYiBpcyBjdXJyZW50bHkgb3Blbi5cclxuICAvLyBUaGUgc2hhcmVkIHN0b3JlIGxpc3QgKHN1YnNjcmliZWRTdG9yZUxpc3QpIGlzIGxvYWRlZCArIHNlbGVjdGVkLWZpcnN0XHJcbiAgLy8gb3JkZXJlZCBmb3IgVEhJUyBncm91cCwgc28gZXhwYW5kaW5nIGEgZGlmZmVyZW50IGdyb3VwJ3MgU3RvcmUgU2VsZWN0aW9uXHJcbiAgLy8gcmVsb2FkcyB0aGUgbGlzdCBzY29wZWQgdG8gdGhhdCBncm91cCAobm90IGFsd2F5cyB0aGUgZGVmYXVsdCBncm91cCkuXHJcbiAgYWN0aXZlR3JvdXBJbmRleDogbnVtYmVyID0gMDtcclxuICBmaWx0ZXJDb3VudHJpZXM6IGFueVtdID0gW107XHJcbiAgZmlsdGVyU3RhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlckNpdGllczogYW55W10gPSBbXTtcclxuICBzZWFyY2hJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xyXG4gIHNvcnRlZENvbHVtbjogc3RyaW5nO1xyXG4gIHNvcnREaXJlY3Rpb246IG51bWJlcjtcclxuICBzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpO1xyXG4gIHN1YnNjcmliZWRQcm9kdWN0czogYW55W10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLy8gR1NUSU4gbG9va3VwIHN0YXRlIHBlciBiaWxsaW5nLWdyb3VwIHJvdywga2V5ZWQgYnkgRm9ybUFycmF5IGluZGV4LlxyXG4gIC8vICdpZGxlJyA9IG5vIGxvb2t1cCB5ZXQgKG9yIEdTVElOIHRvbyBzaG9ydCB0byB0cmlnZ2VyIG9uZSkuXHJcbiAgLy8gJ2xvYWRpbmcnID0gcmVxdWVzdCBpbiBmbGlnaHQuXHJcbiAgLy8gJ2ZvdW5kJyA9IGJhY2tlbmQgcmV0dXJuZWQgYW4gYWRkcmVzcywgZmllbGRzIGF1dG8tZmlsbGVkLlxyXG4gIC8vICdub3Rmb3VuZCcgPSBiYWNrZW5kIHJldHVybmVkIDQwNCAvIHVua25vd24gR1NUSU4uXHJcbiAgLy8gJ2Vycm9yJyA9IG5ldHdvcmsgb3IgdW5leHBlY3RlZCBlcnJvci5cclxuICBnc3RMb29rdXBTdGF0ZTogUmVjb3JkPG51bWJlciwgJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ2ZvdW5kJyB8ICdub3Rmb3VuZCcgfCAnZXJyb3InPiA9IHt9O1xyXG4gIC8vIFRyYWNrIHRoZSBsYXN0IEdTVElOIHdlIHN1Y2Nlc3NmdWxseSBsb29rZWQgdXAgcGVyIHJvdyBzbyByZS10eXBpbmcgdGhlXHJcbiAgLy8gc2FtZSB2YWx1ZSBkb2Vzbid0IHJlZmlyZSB0aGUgcmVxdWVzdCAoYW5kIGF2b2lkIGNsb2JiZXJpbmcgbWFudWFsIGVkaXRzXHJcbiAgLy8gdGhlIHVzZXIgbWF5IGhhdmUgbWFkZSBhZnRlciB0aGUgYXV0by1maWxsKS5cclxuICBwcml2YXRlIGxhc3RMb29rZWRVcEdzdGluOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge307XHJcblxyXG4gIGdyb3VwVGFnT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdzdG9yZScsIGxhYmVsOiAnU3RvcmUnIH0sXHJcbiAgICB7IHZhbHVlOiAnZ3N0JywgbGFiZWw6ICdHU1QnIH1cclxuICBdO1xyXG4gIGN1cnJlbmN5T3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdkb2xsYXInLCBsYWJlbDogJ0RvbGxhciAoJCknIH0sXHJcbiAgICB7IHZhbHVlOiAnaW5yJywgbGFiZWw6ICdJTlIgKOKCuSknIH0sXHJcbiAgICB7IHZhbHVlOiAnc2luZ2Fwb3JlZG9sbGFyJywgbGFiZWw6ICdTaW5nYXBvcmUgRG9sbGFyIChTJCknIH0sXHJcbiAgICB7IHZhbHVlOiAnZXVybycsIGxhYmVsOiAnRXVybyAo4oKsKScgfSxcclxuICAgIHsgdmFsdWU6ICdhZWQnLCBsYWJlbDogJ0FFRCAoQUVEKScgfSxcclxuICBdO1xyXG4gIC8vIEFkdmFuY2UtaW52b2ljZSBob3Jpem9uOiBob3cgZmFyIGFoZWFkIHRoZSBhZHZhbmNlIGludm9pY2UgaXMgZ2VuZXJhdGVkLlxyXG4gIGFkdmFuY2VQZXJpb2RPcHRpb25zID0gW1xyXG4gICAgeyB2YWx1ZTogJ21vbnRobHknLCBsYWJlbDogJ01vbnRobHkgKG5leHQgbW9udGgpJywgbW9udGhzOiAxIH0sXHJcbiAgICB7IHZhbHVlOiAncXVhcnRlcmx5JywgbGFiZWw6ICdRdWFydGVybHkgKG5leHQgMyBtb250aHMpJywgbW9udGhzOiAzIH0sXHJcbiAgICB7IHZhbHVlOiAnaGFsZnllYXJseScsIGxhYmVsOiAnSGFsZi15ZWFybHkgKG5leHQgNiBtb250aHMpJywgbW9udGhzOiA2IH0sXHJcbiAgICB7IHZhbHVlOiAneWVhcmx5JywgbGFiZWw6ICdZZWFybHkgKG5leHQgMTIgbW9udGhzKScsIG1vbnRoczogMTIgfSxcclxuICBdO1xyXG4gIC8vIERyaXZlcyB3aGV0aGVyIHRoZSBiYWNrZW5kIHdpbGwgY2FsY3VsYXRlIEdTVC9JR1NUIG9uIGludm9pY2VzIGZvciB0aGlzXHJcbiAgLy8gZ3JvdXAuICdpbnRlcm5hdGlvbmFsJyBza2lwcyB0YXhlcyBlbnRpcmVseSBzbyB0aGUgdG90YWxBbW91bnQgZXF1YWxzXHJcbiAgLy8gdGhlIHN1YnRvdGFsLiBTZWUgZ3N0aW5Mb29rdXAg4oaSIGludm9pY2VDb250cm9sbGVyLmNyZWF0ZUludm9pY2UuXHJcbiAgdGF4Q2FsY3VsYXRpb25UeXBlT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdkb21lc3RpYycsIGxhYmVsOiAnRG9tZXN0aWMnIH0sXHJcbiAgICB7IHZhbHVlOiAnaW50ZXJuYXRpb25hbCcsIGxhYmVsOiAnSW50ZXJuYXRpb25hbCcgfSxcclxuICBdO1xyXG4gIHBheW1lbnRDeWNsZU9wdGlvbnMgPSBbXHJcbiAgICB7IHZhbHVlOiAnbW9udGhseScsIGxhYmVsOiAnTW9udGhseScgfSxcclxuICAgIHsgdmFsdWU6ICdxdWFydGVyJywgbGFiZWw6ICdRdWFydGVybHknIH0sXHJcbiAgICB7IHZhbHVlOiAnaGFsZlllYXJseScsIGxhYmVsOiAnSGFsZiB5ZWFybHknIH0sXHJcbiAgICB7IHZhbHVlOiAneWVhcmx5JywgbGFiZWw6ICdZZWFybHknIH1cclxuICBdO1xyXG4gIHBheW1lbnRUZXJtT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6IDMwLCBsYWJlbDogJzMwJyB9LFxyXG4gICAgeyB2YWx1ZTogNDUsIGxhYmVsOiAnNDUnIH0sXHJcbiAgICB7IHZhbHVlOiA2MCwgbGFiZWw6ICc2MCcgfSxcclxuICAgIHsgdmFsdWU6IDkwLCBsYWJlbDogJzkwJyB9XHJcbiAgXTtcclxuICBiaWxsaW5nTWV0aG9kT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdlYWNoU3RvcmUnLCBsYWJlbDogJ1N0b3JlIFdpc2UnIH0sXHJcbiAgICB7IHZhbHVlOiAnb3ZlcmFsbFN0b3JlJywgbGFiZWw6ICdCcmFuZCBXaXNlJyB9XHJcbiAgXTtcclxuICBAVmlld0NoaWxkKE5nYkFjY29yZGlvbkRpcmVjdGl2ZSkgYWNjb3JkaW9uOiBOZ2JBY2NvcmRpb25EaXJlY3RpdmU7XHJcblxyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwO1xyXG4gIGN1cnJlbnRQYWdlID0gMTtcclxuICB0b3RhbEl0ZW1zID0gMDtcclxuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgcGFnZVNpemUgPSAxMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG1vZGFsUmVmOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGhvc3RSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2Nyb2xsIHRoZSBvcGVuZWQgZ3JvdXAncyBhY2NvcmRpb24gaGVhZGVyIGludG8gdmlldyBpbnNpZGUgdGhlIG1vZGFsIGJvZHkuXHJcbiAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBtYXRjaGVkIGFjY29yZGlvbiBpcyB0b2dnbGVkIG9wZW4gb24gaW5pdCwgc28gdGhlIHBvcHVwXHJcbiAgLy8gbGFuZHMgb24gdGhhdCBncm91cCBpbnN0ZWFkIG9mIHN0YXlpbmcgc2Nyb2xsZWQgYXQgdGhlIHRvcC5cclxuICBwcml2YXRlIHNjcm9sbFRvR3JvdXAoaWR4OiBudW1iZXIpIHtcclxuICAgIC8vIFdhaXQgZm9yIHRoZSBleHBhbmRlZCBib2R5IHRvIHJlbmRlciwgdGhlbiBicmluZyB0aGUgaGVhZGVyIGludG8gdmlldy5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBob3N0OiBIVE1MRWxlbWVudCA9IHRoaXMuaG9zdFJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgaGVhZGVyID0gaG9zdD8ucXVlcnlTZWxlY3RvcihgW2RhdGEtZ3JvdXAtaWR4PVwiJHtpZHh9XCJdYCkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gICAgICBpZiAoaGVhZGVyKSB7XHJcbiAgICAgICAgaGVhZGVyLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTUwKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRCaWxsaW5nR3JvdXBzKCk7XHJcbiAgICB0aGlzLmdldENsaWVudFByb2R1Y3RzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBJbml0aWFsIHN0b3JlIGxvYWQgaXMgdHJpZ2dlcmVkIGZyb20gZ2V0QmlsbGluZ0dyb3VwcygpIChhZnRlciB0aGVcclxuICAgIC8vIHNlbGVjdGVkIHN0b3JlcyBhcmUgcGF0Y2hlZCBpbikgc28gc2VsZWN0ZWQtZmlyc3Qgb3JkZXJpbmcgd29ya3MuXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbDtcclxuICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtKCkge1xyXG4gICAgdGhpcy5iaWxsaW5nRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBncm91cHM6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRCaWxsaW5nR3JvdXBzKCkge1xyXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRBbGxCaWxsaW5nR3JvdXBzKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlcy5kYXRhLmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wYXRjaEZvcm1JdGVtKHsgLi4uZ3JvdXAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIFJlbWVtYmVyIHdoaWNoIGdyb3VwIGlzIGJlaW5nIGVkaXRlZCBzbyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyBjYW5cclxuICAgICAgICAgIC8vIHJlYWQgaXRzIHN0b3JlcyBldmVuIGFmdGVyIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkIGJlbG93LlxyXG4gICAgICAgICAgdGhpcy5lZGl0aW5nR3JvdXBJZCA9IHRoaXMuZ3JvdXBJZCB8fCB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHNbMF0/LmdldCgnX2lkJyk/LnZhbHVlIHx8ICcnO1xyXG4gICAgICAgICAgLy8gUG9pbnQgdGhlIGFjdGl2ZSBncm91cCBhdCB0aGUgb25lIHRoZSBtb2RhbCBvcGVuZWQgZm9yLCBzbyB0aGVcclxuICAgICAgICAgIC8vIGluaXRpYWwgc3RvcmUgbG9hZCBpcyBzY29wZWQgdG8gaXQgKG5vdCBhbHdheXMgaW5kZXggMCAvIGRlZmF1bHQpLlxyXG4gICAgICAgICAgY29uc3Qgb3BlbmVkSWR4ID0gdGhpcy5ncm91cElkXHJcbiAgICAgICAgICAgID8gdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZpbmRJbmRleCgoYykgPT4gYy5nZXQoJ19pZCcpPy52YWx1ZSA9PT0gdGhpcy5ncm91cElkKVxyXG4gICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwSW5kZXggPSBvcGVuZWRJZHggPj0gMCA/IG9wZW5lZElkeCA6IDA7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpZHgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmdldCgnX2lkJyk/LnZhbHVlID09PSB0aGlzLmdyb3VwSWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24udG9nZ2xlKGlkeC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSh0aGlzLmN1cnJlbnRUYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhYiA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJZCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAvLyBTY3JvbGwgdGhlIHBvcHVwIHRvIHRoZSBvcGVuZWQgZ3JvdXAncyBoZWFkZXIuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Hcm91cChpZHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUoJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIExvYWQgdGhlIHN0b3JlIGxpc3QgQUZURVIgZ3JvdXBzIGFyZSBwYXRjaGVkIHNvIHRoZSBzZWxlY3RlZCBzdG9yZUlkc1xyXG4gICAgICAgIC8vIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBiYWNrZW5kIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nLiAoZ2V0RmlsdGVycyBvblxyXG4gICAgICAgIC8vIHRoaXMgZmlyc3QgY2FsbCB0byBhbHNvIHBvcHVsYXRlIHRoZSBjb3VudHJ5L3N0YXRlL2NpdHkgZmlsdGVycy4pXHJcbiAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHsgZ2V0RmlsdGVyczogdHJ1ZSB9KTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAvLyBTdGlsbCBsb2FkIHN0b3JlcyBldmVuIGlmIGdyb3VwcyBmYWlsLCBzbyB0aGUgc2VjdGlvbiBpc24ndCBlbXB0eS5cclxuICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoeyBnZXRGaWx0ZXJzOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhdGNoRm9ybUl0ZW0oeyBncm91cE5hbWUsIGdyb3VwVGFnLCByZWdpc3RlcmVkQ29tcGFueU5hbWUsIGdzdCwgYWRkcmVzc0xpbmVPbmUsIGFkZHJlc3NMaW5lVHdvLCBjaXR5LCBzdGF0ZSwgY291bnRyeSxcclxuICAgIHBpbkNvZGUsIHBsYWNlT2ZTdXBwbHksIHBvLCBzdG9yZXMsIHByb1JhdGEsIHBheW1lbnRDYXRlZ29yeSwgY3VycmVuY3ksIHRheENhbGN1bGF0aW9uVHlwZSwgaXNJbnN0YWxsYXRpb25PbmVUaW1lLCBpbnN0YWxsYXRpb25GZWUsIHBheW1lbnRDeWNsZSxcclxuICAgIHBheW1lbnRUZXJtLCBnZW5lcmF0ZUludm9pY2VUbywgYXR0YWNoQW5uZXh1cmUsIGlzUHJpbWFyeSwgYWR2YW5jZUludm9pY2UsIGFkdmFuY2VQZXJpb2QsIHByb2R1Y3RzLCBfaWQgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBncm91cE5hbWU6IFtncm91cE5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGdyb3VwVGFnOiBbZ3JvdXBUYWcgfHwgJ3N0b3JlJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcmVnaXN0ZXJlZENvbXBhbnlOYW1lOiBbKHJlZ2lzdGVyZWRDb21wYW55TmFtZSB8fCAnJykudG9VcHBlckNhc2UoKSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgZ3N0OiBbZ3N0IHx8ICcnXSxcclxuICAgICAgYWRkcmVzc0xpbmVPbmU6IFthZGRyZXNzTGluZU9uZSB8fCAnJ10sXHJcbiAgICAgIGFkZHJlc3NMaW5lVHdvOiBbYWRkcmVzc0xpbmVUd28gfHwgJyddLFxyXG4gICAgICBjaXR5OiBbY2l0eSB8fCAnJ10sXHJcbiAgICAgIHN0YXRlOiBbc3RhdGUgfHwgJyddLFxyXG4gICAgICBjb3VudHJ5OiBbY291bnRyeSB8fCAnJ10sXHJcbiAgICAgIHBpbkNvZGU6IFtwaW5Db2RlIHx8ICcnXSxcclxuICAgICAgcGxhY2VPZlN1cHBseTogW3BsYWNlT2ZTdXBwbHkgfHwgJyddLFxyXG4gICAgICBwbzogW3BvIHx8ICcnXSxcclxuICAgICAgc3RvcmVzOiBbc3RvcmVzIHx8IFtdXSxcclxuICAgICAgLy8gUHJpY2luZyBtZXRob2Q6ICdwcm9yYXRlJyAoYWN0dWFsIHdvcmtpbmcgZGF5cykgb3IgJ2ZsYXQnIChmdWxsXHJcbiAgICAgIC8vIG1vbnRoKS4gRGVmYXVsdCB0byAncHJvcmF0ZScgZm9yIHJlY29yZHMgd2l0aG91dCBhIHZhbHVlLlxyXG4gICAgICBwcm9SYXRhOiBbcHJvUmF0YSA9PT0gJ2ZsYXQnID8gJ2ZsYXQnIDogJ3Byb3JhdGUnXSxcclxuICAgICAgcGF5bWVudENhdGVnb3J5OiBbcGF5bWVudENhdGVnb3J5IHx8ICdwb3N0J10sXHJcbiAgICAgIGN1cnJlbmN5OiBbY3VycmVuY3kgfHwgJ2RvbGxhciddLFxyXG4gICAgICAvLyBEZWZhdWx0IHRvICdkb21lc3RpYycgc28gZXhpc3RpbmcgcmVjb3JkcyAod2hpY2ggd29uJ3QgaGF2ZSB0aGlzXHJcbiAgICAgIC8vIGZpZWxkKSBiZWhhdmUgZXhhY3RseSBhcyB0b2RheSDigJQgR1NUL0lHU1Qgc3RpbGwgYXBwbGllZCBmb3IgSU5SLlxyXG4gICAgICB0YXhDYWxjdWxhdGlvblR5cGU6IFt0YXhDYWxjdWxhdGlvblR5cGUgfHwgJ2RvbWVzdGljJ10sXHJcbiAgICAgIGlzSW5zdGFsbGF0aW9uT25lVGltZTogW2lzSW5zdGFsbGF0aW9uT25lVGltZSB8fCBmYWxzZV0sXHJcbiAgICAgIGluc3RhbGxhdGlvbkZlZTogW3sgdmFsdWU6IGluc3RhbGxhdGlvbkZlZSB8fCAnJywgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIHBheW1lbnRDeWNsZTogW3BheW1lbnRDeWNsZSB8fCAnbW9udGhseSddLFxyXG4gICAgICBwYXltZW50VGVybTogW3BheW1lbnRUZXJtIHx8IDMwXSxcclxuICAgICAgZ2VuZXJhdGVJbnZvaWNlVG86IFtnZW5lcmF0ZUludm9pY2VUbyB8fCBbXV0sXHJcbiAgICAgIGF0dGFjaEFubmV4dXJlOiBbYXR0YWNoQW5uZXh1cmUgfHwgZmFsc2VdLFxyXG4gICAgICBpc1ByaW1hcnk6IFtpc1ByaW1hcnkgfHwgZmFsc2VdLFxyXG4gICAgICBhZHZhbmNlSW52b2ljZTogW2FkdmFuY2VJbnZvaWNlIHx8IGZhbHNlXSxcclxuICAgICAgYWR2YW5jZVBlcmlvZDogW2FkdmFuY2VQZXJpb2QgfHwgJ21vbnRobHknXSxcclxuICAgICAgcHJvZHVjdHM6IFtwcm9kdWN0cyB8fCBbXV0sXHJcbiAgICAgIGN1cnJlbnRUYWI6IFsnYmFzaWMtaW5mbyddLFxyXG4gICAgICBjbGllbnRJZDogW3RoaXMuY2xpZW50SWRdLFxyXG4gICAgICBfaWQ6IFtfaWRdXHJcbiAgICB9KTtcclxuICAgIHRoaXMubGlua1RheFRvQ3VycmVuY3koaXRlbSk7XHJcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMucHVzaChpdGVtKTtcclxuICB9XHJcblxyXG4gIC8vIFRheCBDYWxjdWxhdGlvbiBmb2xsb3dzIHRoZSBDdXJyZW5jeTogSU5SIOKGkiBEb21lc3RpYyAoR1NUKSwgYW55IG90aGVyXHJcbiAgLy8gY3VycmVuY3kg4oaSIEludGVybmF0aW9uYWwgKG5vIHRheCkuIFVwZGF0ZWQgd2hlbmV2ZXIgdGhlIGN1cnJlbmN5IGlzXHJcbiAgLy8gY2hhbmdlZDsgYSBzYXZlZCBncm91cCBrZWVwcyBpdHMgc3RvcmVkIHZhbHVlIHVudGlsIHRoZW4uXHJcbiAgcHJpdmF0ZSB0YXhDYWxjdWxhdGlvbkZvcihjdXJyZW5jeTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjdXJyZW5jeSA9PT0gJ2lucicgPyAnZG9tZXN0aWMnIDogJ2ludGVybmF0aW9uYWwnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaW5rVGF4VG9DdXJyZW5jeShpdGVtOiBGb3JtR3JvdXApIHtcclxuICAgIGl0ZW0uZ2V0KCdjdXJyZW5jeScpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoY3VycmVuY3k6IHN0cmluZykgPT4ge1xyXG4gICAgICBpdGVtLmdldCgndGF4Q2FsY3VsYXRpb25UeXBlJyk/LnNldFZhbHVlKHRoaXMudGF4Q2FsY3VsYXRpb25Gb3IoY3VycmVuY3kpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkRm9ybUl0ZW0oeyBpc1ByaW1hcnksIGdyb3VwTmFtZSB9OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgc3RyaW5nPikge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBncm91cE5hbWU6IFtncm91cE5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGdyb3VwVGFnOiBbJ3N0b3JlJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcmVnaXN0ZXJlZENvbXBhbnlOYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGdzdDogWycnXSxcclxuICAgICAgYWRkcmVzc0xpbmVPbmU6IFsnJ10sXHJcbiAgICAgIGFkZHJlc3NMaW5lVHdvOiBbJyddLFxyXG4gICAgICBjaXR5OiBbJyddLFxyXG4gICAgICBzdGF0ZTogWycnXSxcclxuICAgICAgY291bnRyeTogWycnXSxcclxuICAgICAgcGluQ29kZTogWycnXSxcclxuICAgICAgcGxhY2VPZlN1cHBseTogWycnXSxcclxuICAgICAgcG86IFsnJ10sXHJcbiAgICAgIHN0b3JlczogW1tdXSxcclxuICAgICAgLy8gTmV3IHJlY29yZHMgYWx3YXlzIHN0YXJ0IHdpdGggJ3Byb3JhdGUnOyBmbGF0IGlzIG9wdC1pbi5cclxuICAgICAgcHJvUmF0YTogWydwcm9yYXRlJ10sXHJcbiAgICAgIHBheW1lbnRDYXRlZ29yeTogWydwb3N0J10sXHJcbiAgICAgIGN1cnJlbmN5OiBbJ2RvbGxhciddLFxyXG4gICAgICAvLyBGb2xsb3dzIHRoZSBjdXJyZW5jeSAoc2VlIGxpbmtUYXhUb0N1cnJlbmN5KTogdGhlIGRlZmF1bHQgRG9sbGFyIGlzXHJcbiAgICAgIC8vIEludGVybmF0aW9uYWw7IHBpY2tpbmcgSU5SIG1ha2VzIGl0IERvbWVzdGljLlxyXG4gICAgICB0YXhDYWxjdWxhdGlvblR5cGU6IFt0aGlzLnRheENhbGN1bGF0aW9uRm9yKCdkb2xsYXInKV0sXHJcbiAgICAgIGlzSW5zdGFsbGF0aW9uT25lVGltZTogW2ZhbHNlXSxcclxuICAgICAgaW5zdGFsbGF0aW9uRmVlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBwYXltZW50Q3ljbGU6IFsnbW9udGhseSddLFxyXG4gICAgICBwYXltZW50VGVybTogWzMwXSxcclxuICAgICAgZ2VuZXJhdGVJbnZvaWNlVG86IFtbXV0sXHJcbiAgICAgIGF0dGFjaEFubmV4dXJlOiBbZmFsc2VdLFxyXG4gICAgICBpc1ByaW1hcnk6IFtpc1ByaW1hcnldLFxyXG4gICAgICBhZHZhbmNlSW52b2ljZTogW2ZhbHNlXSxcclxuICAgICAgYWR2YW5jZVBlcmlvZDogWydtb250aGx5J10sXHJcbiAgICAgIHByb2R1Y3RzOiBbW11dLFxyXG4gICAgICBjdXJyZW50VGFiOiBbJ2Jhc2ljLWluZm8nXSxcclxuICAgICAgY2xpZW50SWQ6IFt0aGlzLmNsaWVudElkXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxpbmtUYXhUb0N1cnJlbmN5KGl0ZW0pO1xyXG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLnB1c2goaXRlbSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hY2NvcmRpb24udG9nZ2xlKGAke3RoaXMuYmlsbGluZ0dyb3Vwcy5sZW5ndGggLSAxfWApO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBnZXQgYmlsbGluZ0dyb3VwcygpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbGxpbmdGb3JtLmdldCgnZ3JvdXBzJykgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgLy8gU3RhcnQgbW9udGggdGhlIGFkdmFuY2UgaW52b2ljZSB3aWxsIGNvdmVyIOKAlCB0aGUgZmlyc3QgZGF5IG9mIG5leHQgbW9udGgsXHJcbiAgLy8gbWF0Y2hpbmcgdGhlIGJhY2tlbmQgKGRheWpzKCkuYWRkKDEsJ21vbnRoJykuc3RhcnRPZignbW9udGgnKSkuXHJcbiAgZ2V0IGFkdmFuY2VJbnZvaWNlRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkgKyAxLCAxKTtcclxuICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tR0InLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSHVtYW4gbGFiZWwgZm9yIHRoZSBwZXJpb2QgYSBjaG9zZW4gYWR2YW5jZSBmcmVxdWVuY3kgY292ZXJzLCBzaG93biBuZXh0XHJcbiAgLy8gdG8gdGhlIGRyb3Bkb3duIChlLmcuIFwiSnVsIDIwMjYg4oCTIERlYyAyMDI2XCIgZm9yIGhhbGYteWVhcmx5KS5cclxuICBhZHZhbmNlSW52b2ljZVJhbmdlKHBlcmlvZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1vbnRocyA9IHRoaXMuYWR2YW5jZVBlcmlvZE9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT09IHBlcmlvZCk/Lm1vbnRocyB8fCAxO1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpICsgMSwgMSk7XHJcbiAgICBjb25zdCBmbXQgPSAoZDogRGF0ZSkgPT4gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJywgeyBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnIH0pO1xyXG4gICAgaWYgKG1vbnRocyA8PSAxKSByZXR1cm4gZm10KHN0YXJ0KTtcclxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSArIG1vbnRocywgMSk7XHJcbiAgICByZXR1cm4gYCR7Zm10KHN0YXJ0KX0g4oCTICR7Zm10KGVuZCl9YDtcclxuICB9XHJcblxyXG4gIG9uVGFiQ2hhbmdlKGlkeDogbnVtYmVyLCB2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKHZhbCk7XHJcbiAgICAvLyBPcGVuaW5nIGEgZ3JvdXAncyBTdG9yZSBTZWxlY3Rpb24gbWFrZXMgaXQgdGhlIGFjdGl2ZSBncm91cCBhbmQgcmVsb2Fkc1xyXG4gICAgLy8gdGhlIHNoYXJlZCBzdG9yZSBsaXN0IHNjb3BlZCB0byBUSEFUIGdyb3VwIChzZWxlY3RlZC1maXJzdCBvcmRlcmluZyArXHJcbiAgICAvLyBpc1NlbGVjdGVkIHJlZmxlY3QgdGhlIGdyb3VwIGJlaW5nIGVkaXRlZCwgbm90IHRoZSBkZWZhdWx0IGdyb3VwKS5cclxuICAgIGlmICh2YWwgPT09ICdzdG9yZS1zZWxlY3Rpb24nKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlR3JvdXBJbmRleCA9IGlkeDtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZUdyb3VwKGlkeDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdfaWQnKT8udmFsdWUpIHtcclxuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5kZWxldGVCaWxsaW5nR3JvdXAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdfaWQnKT8udmFsdWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZ3JvdXAuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5ncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgLi4udGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdzdG9yZXMnKT8udmFsdWVdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMucmVtb3ZlQXQoaWR4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIGlmIChncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xyXG4gICAgICAgICAgZ3JvdXAuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLmdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5yZW1vdmVBdChpZHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7IGdldEZpbHRlcnMgfTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlZFN0b3Jlc0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnRlZENvbHVtbixcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFRlcm0sXHJcbiAgICAgIGNvdW50cnk6IHRoaXMuZmlsdGVyQ291bnRyaWVzLFxyXG4gICAgICBzdGF0ZTogdGhpcy5maWx0ZXJTdGF0ZXMsXHJcbiAgICAgIGNpdHk6IHRoaXMuZmlsdGVyQ2l0aWVzLFxyXG4gICAgICBnZXRGaWx0ZXJzOiBnZXRGaWx0ZXJzLFxyXG4gICAgICAvLyBCYWNrZW5kIHJlc29sdmVzIHRoaXMgZ3JvdXAncyBzZWxlY3RlZCBzdG9yZXMsIHRhZ3MgZWFjaCByb3cgd2l0aFxyXG4gICAgICAvLyBpc1NlbGVjdGVkIGFuZCBmbG9hdHMgc2VsZWN0ZWQgc3RvcmVzIHRvIHRoZSB0b3AgYWNyb3NzIGFsbCBwYWdlcy5cclxuICAgICAgLy8gU2NvcGUgdG8gdGhlIGdyb3VwIHdob3NlIFN0b3JlIFNlbGVjdGlvbiB0YWIgaXMgb3BlbiAoYWN0aXZlR3JvdXBJbmRleClcclxuICAgICAgLy8gc28gZXhwYW5kaW5nIGEgbm9uLWRlZmF1bHQgZ3JvdXAgc2hvd3MgVEhBVCBncm91cCdzIGNvbnRleHQuXHJcbiAgICAgIGdyb3VwSWQ6IHRoaXMuYmlsbGluZ0dyb3Vwcz8uY29udHJvbHM/Llt0aGlzLmFjdGl2ZUdyb3VwSW5kZXhdPy5nZXQoJ19pZCcpPy52YWx1ZVxyXG4gICAgICAgIHx8IHRoaXMuZWRpdGluZ0dyb3VwSWQgfHwgdGhpcy5ncm91cElkIHx8IHRoaXMuYmlsbGluZ0dyb3Vwcz8uY29udHJvbHM/LlswXT8uZ2V0KCdfaWQnKT8udmFsdWUgfHwgJycsXHJcbiAgICAgIC8vIEFsc28gc2VuZCB0aGUgbGl2ZSBzZWxlY3Rpb24gKGNvdmVycyBhIGJyYW5kLW5ldyB1bnNhdmVkIGdyb3VwIHdob3NlXHJcbiAgICAgIC8vIHN0b3JlcyBhcmVuJ3QgeWV0IHBlcnNpc3RlZCB0byB0aGUgYmlsbGluZyBkb2MpLlxyXG4gICAgICBzZWxlY3RlZFN0b3JlSWRzOiB0aGlzLnNlbGVjdGVkU3RvcmVJZHNGb3JTb3J0KClcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgaWYgKGRhdGFba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGRhdGFba2V5XSA9PT0gJycpIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVtrZXldKSAmJiAhZGF0YVtrZXldLmxlbmd0aCkgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZ2V0U3Vic2NyaWJlZFN0b3JlcyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUubmV4dCgnbG9hZGVkJyk7XHJcbiAgICAgICAgaWYgKGdldEZpbHRlcnMpIHtcclxuICAgICAgICAgIGlmIChyZXM/LmRhdGE/LmNvdW50cmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRGF0YS5wdXNoKHsgRGVzY3JpcHRpb246ICdDb3VudHJ5JywgSXNzdWVzOiByZXMuZGF0YS5jb3VudHJpZXMubWFwKCh2YWw6IGFueSkgPT4gKHsgdGV4dDogdmFsLl9pZCwgaWQ6IHZhbC5faWQgfSkpIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcz8uZGF0YT8uc3RhdGVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhLnB1c2goeyBEZXNjcmlwdGlvbjogJ1N0YXRlJywgSXNzdWVzOiByZXMuZGF0YS5zdGF0ZXMubWFwKCh2YWw6IGFueSkgPT4gKHsgdGV4dDogdmFsLl9pZCwgaWQ6IHZhbC5faWQgfSkpIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcz8uZGF0YT8uY2l0aWVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhLnB1c2goeyBEZXNjcmlwdGlvbjogJ0NpdHknLCBJc3N1ZXM6IHJlcy5kYXRhLmNpdGllcy5tYXAoKHZhbDogYW55KSA9PiAoeyB0ZXh0OiB2YWwuX2lkLCBpZDogdmFsLl9pZCB9KSkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcz8uZGF0YT8ucGFnZUluZm8/LmNvdW50IHx8IDA7XHJcbiAgICAgICAgLy8gQmFja2VuZCByZXR1cm5zIHNlbGVjdGVkIHN0b3JlcyBmaXJzdCAoc2VsZWN0ZWQtZmlyc3Qgb3JkZXJpbmcpLlxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlZFN0b3JlTGlzdCA9IHJlcz8uZGF0YT8uZGF0YSB8fCBbXTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblN0b3JlQ2hlY2soZXZlbnQ6IGFueSwgZm9ybUFycmF5SW5kZXg6IG51bWJlciwgc3RvcmVJZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZ2V0KCdzdG9yZXMnKT8udmFsdWUuaW5jbHVkZXMoc3RvcmVJZCkpIHtcclxuICAgICAgICAgIGl0ZW0uZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoaXRlbS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5maWx0ZXIoKHZhbDogc3RyaW5nKSA9PiB2YWwgIT09IHN0b3JlSWQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLCBzdG9yZUlkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUuZmlsdGVyKCh2YWw6IHN0cmluZykgPT4gdmFsICE9PSBzdG9yZUlkKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xyXG4gICAgICAgICAgaXRlbS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShbLi4uaXRlbS5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgc3RvcmVJZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFsbFN0b3JlcyhldmVudDogYW55LCBmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBzdWJzY3JpYmVkU3RvcmVJZHMgPSB0aGlzLnN1YnNjcmliZWRTdG9yZUxpc3QubWFwKGl0ZW0gPT4gaXRlbS5zdG9yZUlkKTtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcclxuICAgICAgICBncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZS5mb3JFYWNoKChzdG9yZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc3Vic2NyaWJlZFN0b3JlSWRzLmluY2x1ZGVzKHN0b3JlKSkge1xyXG4gICAgICAgICAgICBncm91cC5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZS5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gaXRlbSAhPT0gc3RvcmUpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUsIC4uLnN1YnNjcmliZWRTdG9yZUlkc10pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigoaXRlbTogYW55KSA9PiAhc3Vic2NyaWJlZFN0b3JlSWRzLmluY2x1ZGVzKGl0ZW0pKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xyXG4gICAgICAgICAgaXRlbS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShbLi4uaXRlbS5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgLi4uc3Vic2NyaWJlZFN0b3JlSWRzXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzU3RvcmVTZWxlY3RlZEluR3JvdXAoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgc3RvcmVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5pbmNsdWRlcyhzdG9yZUlkKTtcclxuICB9XHJcblxyXG4gIC8vIFNlbGVjdGVkIHN0b3JlSWRzIHNlbnQgdG8gdGhlIGJhY2tlbmQgc28gaXQgY2FuIHNvcnQgc2VsZWN0ZWQgc3RvcmVzIGZpcnN0LlxyXG4gIC8vIFJlYWQgc3RyYWlnaHQgZnJvbSB0aGUgbGl2ZSBmb3JtICh0aGUgc2FtZSBzb3VyY2UgYXMgdGhlIGNoZWNrYm94ZXMpLCBzbyBpdFxyXG4gIC8vIGFsd2F5cyBtYXRjaGVzIHRoZSBVSS4gU2NvcGUgdG8gdGhlIGFjdGl2ZSBncm91cCAodGhlIG9uZSB3aG9zZSBTdG9yZVxyXG4gIC8vIFNlbGVjdGlvbiB0YWIgaXMgb3Blbikgc28gc2VsZWN0ZWQtZmlyc3Qgb3JkZXJpbmcgcmVmbGVjdHMgVEhBVCBncm91cCdzXHJcbiAgLy8gc2VsZWN0aW9uLCBub3QgYSB1bmlvbiBhY3Jvc3MgYWxsIGdyb3Vwcy5cclxuICBwcml2YXRlIHNlbGVjdGVkU3RvcmVJZHNGb3JTb3J0KCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYmlsbGluZ0dyb3Vwcz8uY29udHJvbHM/Llt0aGlzLmFjdGl2ZUdyb3VwSW5kZXhdO1xyXG4gICAgcmV0dXJuIFsgLi4uKGFjdGl2ZT8uZ2V0KCdzdG9yZXMnKT8udmFsdWUgfHwgW10pIF07XHJcbiAgfVxyXG5cclxuICBpc0FsbFN0b3Jlc1NlbGVjdGVkSW5Hcm91cChmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmVkU3RvcmVMaXN0LmV2ZXJ5KGl0ZW0gPT4gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5pbmNsdWRlcyhpdGVtLnN0b3JlSWQpKSAmJiB0aGlzLnN1YnNjcmliZWRTdG9yZUxpc3QubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBldmVudDtcclxuICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBldmVudDtcclxuICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudDogYW55KSB7XHJcbiAgICB2YXIgayA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgcmV0dXJuIChrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KSk7XHJcbiAgfVxyXG5cclxuICBmb3JjZVVwcGVyY2FzZShldmVudDogYW55LCBpZHg6IG51bWJlcikge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IHVwcGVyID0gaW5wdXQudmFsdWUudG9VcHBlckNhc2UoKTtcclxuICAgIGlmIChpbnB1dC52YWx1ZSAhPT0gdXBwZXIpIHtcclxuICAgICAgY29uc3QgY2FyZXQgPSBpbnB1dC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgaW5wdXQudmFsdWUgPSB1cHBlcjtcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY2FyZXQsIGNhcmV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LnNldFZhbHVlKHVwcGVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICBldmVudC5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodmFsLkRlc2NyaXB0aW9uID09PSAnQ291bnRyeScpIHRoaXMuZmlsdGVyQ291bnRyaWVzID0gdmFsLklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCk7XHJcbiAgICAgIGlmICh2YWwuRGVzY3JpcHRpb24gPT09ICdTdGF0ZScpIHRoaXMuZmlsdGVyU3RhdGVzID0gdmFsLklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCk7XHJcbiAgICAgIGlmICh2YWwuRGVzY3JpcHRpb24gPT09ICdDaXR5JykgdGhpcy5maWx0ZXJDaXRpZXMgPSB2YWwuSXNzdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICB9XHJcblxyXG4gIG9uRW1haWxLZXlEb3duKGV2ZW50OiBhbnksIGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0JhY2tzcGFjZScgJiYgZXZlbnQudGFyZ2V0LnZhbHVlID09ICcnKSB7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWUuc2xpY2UoMCwgLTEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PSAnRW50ZXInKSB7XHJcbiAgICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XHJcbiAgICAgIGlmIChlbWFpbFJlZ2V4LnRlc3QoZXZlbnQudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy5zZXRWYWx1ZShcclxuICAgICAgICAgIFsuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWUsIGV2ZW50LnRhcmdldC52YWx1ZV1cclxuICAgICAgICApO1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVFbWFpbENoaXAoZW1haWw6IHN0cmluZywgZm9ybUFycmF5SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnNldFZhbHVlKFxyXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWUuZmlsdGVyKCh2YWw6IHN0cmluZykgPT4gdmFsICE9PSBlbWFpbClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNvcnRlZENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydGVkQ29sdW1uID0gY29sdW1uO1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlKGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nKSB7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8uc2V0VmFsdWUoJ3NldHRpbmdzJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nKSB7XHJcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8uc2V0VmFsdWUoJ3N0b3JlLXNlbGVjdGlvbicpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc3RvcmUtc2VsZWN0aW9uJykge1xyXG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKCdzZXR0aW5ncycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRCaWxsaW5nR3JvdXAoKSB7XHJcbiAgICB0aGlzLmFkZEZvcm1JdGVtKHsgZ3JvdXBOYW1lOiBgR3JvdXAgJHt0aGlzLmJpbGxpbmdHcm91cHMubGVuZ3RoICsgMX1gLCBpc1ByaW1hcnk6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoZm9ybVZhbHVlczogYW55LCBpZHg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnYmFzaWMtaW5mbycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdQbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBlbWFpbCBpbiBHZW5lcmF0ZSBJbnZvaWNlIFRvJyk7XHJcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc2V0dGluZ3MnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSBmb3JtVmFsdWVzLmN1cnJlbnRUYWI7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybVZhbHVlcykge1xyXG4gICAgICBpZiAoZm9ybVZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgaWYgKGZvcm1WYWx1ZXNba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgZm9ybVZhbHVlc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm1WYWx1ZXMuX2lkKSB7XHJcbiAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlQmlsbGluZ0dyb3VwKGZvcm1WYWx1ZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuY2xvc2UoJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0UHJpbWFyeVRvYXN0KCdCaWxsaW5nIGdyb3VwIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZXJyLmVycm9yPy5jb2RlID09PSA0MDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZSBiaWxsaW5nIGdyb3VwJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuY3JlYXRlQmlsbGluZ0dyb3VwKGZvcm1WYWx1ZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuY2xvc2UoJ3N1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0UHJpbWFyeVRvYXN0KCdCaWxsaW5nIGdyb3VwIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZXJyLmVycm9yPy5jb2RlID09PSA0MDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGNyZWF0ZSBiaWxsaW5nIGdyb3VwJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENsaWVudFByb2R1Y3RzKCkge1xyXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRDbGllbnRQcm9kdWN0cyh0aGlzLmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8ucGxhbkRldGFpbHM/LnByb2R1Y3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVkUHJvZHVjdHMgPSByZXMuZGF0YS5wbGFuRGV0YWlscy5wcm9kdWN0LmZpbHRlcigocDogYW55KSA9PiBwLnN0YXR1cyA9PT0gJ2xpdmUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoaWR4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuYWNjb3JkaW9uLnRvZ2dsZShpZHgudG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwcmV2ZW50RW50ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RCaWxsaW5nTWV0aG9kKGZvcm1BcnJheUluZGV4OiBudW1iZXIsIHByb2R1Y3ROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8udmFsdWUgfHwgW107XHJcbiAgICBjb25zdCBmb3VuZCA9IHByb2R1Y3RzLmZpbmQoKHA6IGFueSkgPT4gcC5wcm9kdWN0TmFtZSA9PT0gcHJvZHVjdE5hbWUpO1xyXG4gICAgcmV0dXJuIGZvdW5kPy5iaWxsaW5nTWV0aG9kIHx8ICdvdmVyYWxsU3RvcmUnO1xyXG4gIH1cclxuXHJcbiAgb25CaWxsaW5nTWV0aG9kQ2hhbmdlKGZvcm1BcnJheUluZGV4OiBudW1iZXIsIHByb2R1Y3ROYW1lOiBzdHJpbmcsIGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHByb2R1Y3RzID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3Byb2R1Y3RzJyk/LnZhbHVlIHx8IFtdO1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBwcm9kdWN0cy5maW5kKChwOiBhbnkpID0+IHAucHJvZHVjdE5hbWUgPT09IHByb2R1Y3ROYW1lKTtcclxuICAgIGlmIChleGlzdGluZykge1xyXG4gICAgICBleGlzdGluZy5iaWxsaW5nTWV0aG9kID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHJvZHVjdHMucHVzaCh7IHByb2R1Y3ROYW1lLCBiaWxsaW5nTWV0aG9kOiBldmVudC50YXJnZXQudmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8uc2V0VmFsdWUoWy4uLnByb2R1Y3RzXSk7XHJcbiAgfVxyXG5cclxuICBvbkJpbGxpbmdNZXRob2RTZWxlY3RDaGFuZ2UoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgcHJvZHVjdE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8udmFsdWUgfHwgW107XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHByb2R1Y3RzLmZpbmQoKHA6IGFueSkgPT4gcC5wcm9kdWN0TmFtZSA9PT0gcHJvZHVjdE5hbWUpO1xyXG4gICAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICAgIGV4aXN0aW5nLmJpbGxpbmdNZXRob2QgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHByb2R1Y3RzLnB1c2goeyBwcm9kdWN0TmFtZSwgYmlsbGluZ01ldGhvZDogdmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8uc2V0VmFsdWUoWy4uLnByb2R1Y3RzXSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRQcm9kdWN0TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxyXG4gICAgICAucmVwbGFjZSgvXi4vLCAoc3RyKSA9PiBzdHIudG9VcHBlckNhc2UoKSk7XHJcbiAgfVxyXG5cclxuICAvLyBHU1RJTiBzdGF0ZS1jb2RlIHByZWZpeCDihpIgU3RhdGUgKFBsYWNlIG9mIFN1cHBseSlcclxuICBwcml2YXRlIHJlYWRvbmx5IGdzdFN0YXRlQ29kZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICcwMSc6ICdKYW1tdSBhbmQgS2FzaG1pcicsXHJcbiAgICAnMDInOiAnSGltYWNoYWwgUHJhZGVzaCcsXHJcbiAgICAnMDMnOiAnUHVuamFiJyxcclxuICAgICcwNCc6ICdDaGFuZGlnYXJoJyxcclxuICAgICcwNSc6ICdVdHRhcmFraGFuZCcsXHJcbiAgICAnMDYnOiAnSGFyeWFuYScsXHJcbiAgICAnMDcnOiAnRGVsaGknLFxyXG4gICAgJzA4JzogJ1JhamFzdGhhbicsXHJcbiAgICAnMDknOiAnVXR0YXIgUHJhZGVzaCcsXHJcbiAgICAnMTAnOiAnQmloYXInLFxyXG4gICAgJzExJzogJ1Npa2tpbScsXHJcbiAgICAnMTInOiAnQXJ1bmFjaGFsIFByYWRlc2gnLFxyXG4gICAgJzEzJzogJ05hZ2FsYW5kJyxcclxuICAgICcxNCc6ICdNYW5pcHVyJyxcclxuICAgICcxNSc6ICdNaXpvcmFtJyxcclxuICAgICcxNic6ICdUcmlwdXJhJyxcclxuICAgICcxNyc6ICdNZWdoYWxheWEnLFxyXG4gICAgJzE4JzogJ0Fzc2FtJyxcclxuICAgICcxOSc6ICdXZXN0IEJlbmdhbCcsXHJcbiAgICAnMjAnOiAnSmhhcmtoYW5kJyxcclxuICAgICcyMSc6ICdPZGlzaGEnLFxyXG4gICAgJzIyJzogJ0NoaGF0dGlzZ2FyaCcsXHJcbiAgICAnMjMnOiAnTWFkaHlhIFByYWRlc2gnLFxyXG4gICAgJzI0JzogJ0d1amFyYXQnLFxyXG4gICAgJzI1JzogJ0RhbWFuIGFuZCBEaXUnLFxyXG4gICAgJzI2JzogJ0RhZHJhIGFuZCBOYWdhciBIYXZlbGkgYW5kIERhbWFuIGFuZCBEaXUnLFxyXG4gICAgJzI3JzogJ01haGFyYXNodHJhJyxcclxuICAgICcyOCc6ICdBbmRocmEgUHJhZGVzaCAoT2xkKScsXHJcbiAgICAnMjknOiAnS2FybmF0YWthJyxcclxuICAgICczMCc6ICdHb2EnLFxyXG4gICAgJzMxJzogJ0xha3NoYWR3ZWVwJyxcclxuICAgICczMic6ICdLZXJhbGEnLFxyXG4gICAgJzMzJzogJ1RhbWlsIE5hZHUnLFxyXG4gICAgJzM0JzogJ1B1ZHVjaGVycnknLFxyXG4gICAgJzM1JzogJ0FuZGFtYW4gYW5kIE5pY29iYXIgSXNsYW5kcycsXHJcbiAgICAnMzYnOiAnVGVsYW5nYW5hJyxcclxuICAgICczNyc6ICdBbmRocmEgUHJhZGVzaCcsXHJcbiAgICAnMzgnOiAnTGFkYWtoJyxcclxuICAgICc5Nyc6ICdPdGhlciBUZXJyaXRvcnknLFxyXG4gICAgJzk5JzogJ0NlbnRyZSBKdXJpc2RpY3Rpb24nXHJcbiAgfTtcclxuXHJcbiAgb25Hc3RDaGFuZ2UoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZ3N0ID0gKHZhbHVlIHx8ICcnKS50cmltKCkudG9VcHBlckNhc2UoKTtcclxuICAgIGNvbnN0IHBsYWNlT2ZTdXBwbHlDdHJsID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3BsYWNlT2ZTdXBwbHknKTtcclxuICAgIGlmIChnc3QubGVuZ3RoIDwgMikge1xyXG4gICAgICBwbGFjZU9mU3VwcGx5Q3RybD8uc2V0VmFsdWUoJycpO1xyXG4gICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdpZGxlJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29kZSA9IGdzdC5zdWJzdHJpbmcoMCwgMik7XHJcbiAgICBjb25zdCBzdGF0ZU5hbWUgPSB0aGlzLmdzdFN0YXRlQ29kZU1hcFtjb2RlXTtcclxuICAgIGlmIChzdGF0ZU5hbWUpIHtcclxuICAgICAgcGxhY2VPZlN1cHBseUN0cmw/LnNldFZhbHVlKGAke3N0YXRlTmFtZX0gKCR7Y29kZX0pYCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwbGFjZU9mU3VwcGx5Q3RybD8uc2V0VmFsdWUoJycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZ1bGwgR1NUSU4gaXMgMTUgY2hhcnMgKDE1LWNoYXIgYWxwaGFudW1lcmljKS4gVHJpZ2dlciB0aGUgYWRkcmVzc1xyXG4gICAgLy8gbG9va3VwIG9uY2UgdGhlIHVzZXIgaGFzIHR5cGVkIGFsbCAxNS4gU2tpcCBpZiB3ZSBhbHJlYWR5IGxvb2tlZCB0aGlzXHJcbiAgICAvLyBleGFjdCB2YWx1ZSB1cCBmb3IgdGhpcyByb3cg4oCUIG90aGVyd2lzZSB0aGUgKGlucHV0KSBldmVudCB3b3VsZCByZWZpcmVcclxuICAgIC8vIG9uIGZvY3VzL2JsdXIgYW5kIGNsb2JiZXIgYW55IG1hbnVhbCB0d2Vha3MgdGhlIHVzZXIgbWFkZS5cclxuICAgIGlmIChnc3QubGVuZ3RoID09PSAxNSAmJiB0aGlzLmxhc3RMb29rZWRVcEdzdGluW2Zvcm1BcnJheUluZGV4XSAhPT0gZ3N0KSB7XHJcbiAgICAgIHRoaXMubG9va3VwQW5kRmlsbEFkZHJlc3MoZm9ybUFycmF5SW5kZXgsIGdzdCk7XHJcbiAgICB9IGVsc2UgaWYgKGdzdC5sZW5ndGggPCAxNSkge1xyXG4gICAgICAvLyBSZXNldCBzdGF0ZSBzbyBhIHByZXZpb3VzIFwiZm91bmRcIiBpbmRpY2F0b3IgZG9lc24ndCBzdGljayBhcm91bmRcclxuICAgICAgLy8gd2hpbGUgdGhlIHVzZXIgaXMgZWRpdGluZyB0aGUgbnVtYmVyIHRvIGEgbmV3IHZhbHVlLlxyXG4gICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdpZGxlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9va3VwQW5kRmlsbEFkZHJlc3MoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgZ3N0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gJ2xvYWRpbmcnO1xyXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5sb29rdXBHc3Rpbihnc3QpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBCYWNrZW5kIHdyYXA6IHsgY29kZSwgc3RhdHVzLCBkYXRhOiA8cGF5bG9hZD4gfS4gUGF5bG9hZCBpdHNlbGZcclxuICAgICAgICAvLyBtYXkgYWxzbyBiZSBuZXN0ZWQgdW5kZXIgYGRhdGFgIGlmIHRoZSByZXNwb25zZSBtaWRkbGV3YXJlIGRvdWJsZS1cclxuICAgICAgICAvLyB3cmFwcyBpdDsgaGFuZGxlIGJvdGggc2hhcGVzIHRvIGJlIHNhZmUuXHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHJlcz8uZGF0YT8uZGF0YSB8fCByZXM/LmRhdGEgfHwge307XHJcbiAgICAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLmdzdGluKSB7XHJcbiAgICAgICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdub3Rmb3VuZCc7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KTtcclxuICAgICAgICAvLyBQYXRjaCBvbmx5IHRoZSBhZGRyZXNzLXJlbGF0ZWQgZmllbGRzLiBEb24ndCBvdmVyd3JpdGUgZ3JvdXBOYW1lLFxyXG4gICAgICAgIC8vIGdyb3VwVGFnLCBzdG9yZXMsIGN1cnJlbmN5LCBwYXltZW50VGVybSDigJQgdGhvc2UgYXJlIHVzZXIgY2hvaWNlcyxcclxuICAgICAgICAvLyBub3QgZGVyaXZlZCBmcm9tIEdTVElOLlxyXG4gICAgICAgIGNvbnN0IHBhdGNoOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICAgICAgaWYgKHBheWxvYWQubGVnYWxOYW1lKSBwYXRjaFsncmVnaXN0ZXJlZENvbXBhbnlOYW1lJ10gPSBTdHJpbmcocGF5bG9hZC5sZWdhbE5hbWUpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHBheWxvYWQuYWRkcmVzc0xpbmVPbmUpIHBhdGNoWydhZGRyZXNzTGluZU9uZSddID0gcGF5bG9hZC5hZGRyZXNzTGluZU9uZTtcclxuICAgICAgICBpZiAocGF5bG9hZC5hZGRyZXNzTGluZVR3bykgcGF0Y2hbJ2FkZHJlc3NMaW5lVHdvJ10gPSBwYXlsb2FkLmFkZHJlc3NMaW5lVHdvO1xyXG4gICAgICAgIGlmIChwYXlsb2FkLmNpdHkpIHBhdGNoWydjaXR5J10gPSBwYXlsb2FkLmNpdHk7XHJcbiAgICAgICAgaWYgKHBheWxvYWQuc3RhdGUpIHBhdGNoWydzdGF0ZSddID0gcGF5bG9hZC5zdGF0ZTtcclxuICAgICAgICBpZiAocGF5bG9hZC5jb3VudHJ5KSBwYXRjaFsnY291bnRyeSddID0gcGF5bG9hZC5jb3VudHJ5O1xyXG4gICAgICAgIGlmIChwYXlsb2FkLnBpbkNvZGUpIHBhdGNoWydwaW5Db2RlJ10gPSBwYXlsb2FkLnBpbkNvZGU7XHJcbiAgICAgICAgaWYgKHBheWxvYWQucGxhY2VPZlN1cHBseSkgcGF0Y2hbJ3BsYWNlT2ZTdXBwbHknXSA9IHBheWxvYWQucGxhY2VPZlN1cHBseTtcclxuICAgICAgICBncm91cC5wYXRjaFZhbHVlKHBhdGNoKTtcclxuICAgICAgICB0aGlzLmxhc3RMb29rZWRVcEdzdGluW2Zvcm1BcnJheUluZGV4XSA9IGdzdDtcclxuICAgICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdmb3VuZCc7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAvLyA0MDQgPSB1bmtub3duIEdTVElOOyBldmVyeXRoaW5nIGVsc2Ugc3VyZmFjZXMgYXMgYW4gZXJyb3Igc28gdGhlXHJcbiAgICAgICAgLy8gdXNlciBrbm93cyB0aGUgYXV0by1maWxsIGRpZG4ndCBoYXBwZW4gYW5kIHRoZXkgc2hvdWxkIGVudGVyXHJcbiAgICAgICAgLy8gbWFudWFsbHkuXHJcbiAgICAgICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSBlcnI/LnN0YXR1cyA9PT0gNDA0ID8gJ25vdGZvdW5kJyA6ICdlcnJvcic7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICBVcGRhdGUgQmlsbGluZyBJbmZvcm1hdGlvblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEJpbGxpbmdHcm91cCgpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCBuZWVkaGVscFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAxMyA0LjE2NjAyVjE1LjgzMjdNNC4xNjc5NyA5Ljk5OTM1SDE1LjgzNDZcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9zcGFuPkFkZCBCaWxsaW5nIEdyb3VwPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuPGZvcm0gW2Zvcm1Hcm91cF09XCJiaWxsaW5nRm9ybVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImJpbGxpbmdHcm91cHMubGVuZ3RoID4gMVwiIGZvcm1BcnJheU5hbWU9XCJncm91cHNcIiBuZ2JBY2NvcmRpb24gYWNjb3JkaW9uPVwiTmdiQWNjb3JkaW9uXCJcclxuICAgICAgICBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGJpbGxpbmdHcm91cHMuY29udHJvbHM7IGxldCBpID0gaW5kZXg7XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXHJcbiAgICAgICAgICAgIFtuZ2JBY2NvcmRpb25JdGVtXT1cImkudG9TdHJpbmcoKVwiIGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyIFthdHRyLmRhdGEtZ3JvdXAtaWR4XT1cImlcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMlwiPnt7Z3JvdXAuZ2V0KCdncm91cE5hbWUnKT8udmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlXCIgY2xhc3M9XCJwcmltYXJ5LWJhZGdlXCI+UHJpbWFyeTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uRGVsZXRlR3JvdXAoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNSA0Ljk5OTM1SDQuMTY2NjdNNC4xNjY2NyA0Ljk5OTM1TDE3LjUgNC45OTkzNU00LjE2NjY3IDQuOTk5MzVMNC4xNjY2NyAxNi42NjZDNC4xNjY2NyAxNy4xMDggNC4zNDIyNiAxNy41MzIgNC42NTQ4MiAxNy44NDQ1QzQuOTY3MzggMTguMTU3MSA1LjM5MTMxIDE4LjMzMjcgNS44MzMzMyAxOC4zMzI3SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzI3IDE1LjAzMjYgMTguMTU3MSAxNS4zNDUyIDE3Ljg0NDVDMTUuNjU3NyAxNy41MzIgMTUuODMzMyAxNy4xMDggMTUuODMzMyAxNi42NjZMMTUuODMzMyA0Ljk5OTM1TDQuMTY2NjcgNC45OTkzNVpNNi42NjY2NyA0Ljk5OTM1VjMuMzMyNjhDNi42NjY2NyAyLjg5MDY1IDYuODQyMjYgMi40NjY3MyA3LjE1NDgyIDIuMTU0MTdDNy40NjczOCAxLjg0MTYxIDcuODkxMzEgMS42NjYwMiA4LjMzMzMzIDEuNjY2MDJMMTEuNjY2NyAxLjY2NjAyQzEyLjEwODcgMS42NjYwMiAxMi41MzI2IDEuODQxNjEgMTIuODQ1MiAyLjE1NDE3QzEzLjE1NzcgMi40NjY3MyAxMy4zMzMzIDIuODkwNjUgMTMuMzMzMyAzLjMzMjY4VjQuOTk5MzVNOC4zMzMzMyA5LjE2NjAyTDguMzMzMzMgMTQuMTY2TTExLjY2NjcgOS4xNjYwMlYxNC4xNjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlID8gJ3Jvdy1jb2xzLTInIDogJydcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiIHJvdyByb3ctY29scy0zICBnLTAgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnYmFzaWMtaW5mbycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyA/ICdzZWxlY3RlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCI+QmFzaWMgSW5mbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ3N0b3JlLXNlbGVjdGlvbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nID8gJ3NlbGVjdGVkJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1cIj5TdG9yZSBTZWxlY3Rpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uVGFiQ2hhbmdlKGksICdzZXR0aW5ncycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzZXR0aW5ncycgPyAnc2VsZWN0ZWQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiPlNldHRpbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnYmFzaWMtaW5mbycgPyAnZC1ub25lJyA6ICcnXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3JvdXBOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R3JvdXAgTmFtZSo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZ3JvdXBOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJncm91cE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2dyb3VwTmFtZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2dyb3VwTmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIG5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJncm91cFRhZ1wiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJncm91cFRhZ09wdGlvbnNcIiBbbGFiZWxdPVwiJ0dyb3VwIFRhZyonXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdncm91cFRhZycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdncm91cFRhZycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIHRhZyBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5SZWdpc3RlcmVkIENvbXBhbnkgTmFtZSo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cImZvcmNlVXBwZXJjYXNlKCRldmVudCwgaSlcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBjb21wYW55IG5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3N0XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R1NUPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIChpbnB1dCk9XCJvbkdzdENoYW5nZShpLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImdzdFwiIGZvcm1Db250cm9sTmFtZT1cImdzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnZ3N0Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnZ3N0Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gR1NUSU4gYWRkcmVzcy1sb29rdXAgZmVlZGJhY2suIFN0YXRlIG1hY2hpbmUgZHJpdmVuIGJ5IGxvb2t1cEFuZEZpbGxBZGRyZXNzKCkuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1tdXRlZFwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdsb2FkaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2tpbmcgdXAgcmVnaXN0ZXJlZCBhZGRyZXNz4oCmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1zdWNjZXNzXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2ZvdW5kJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWQgYWRkcmVzcyBhdXRvLWZpbGxlZC4gRWRpdCBpZiBuZWVkZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC13YXJuaW5nXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ25vdGZvdW5kJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHJlZ2lzdGVyZWQgYWRkcmVzcyBmb3VuZCBmb3IgdGhpcyBHU1RJTi4gRW50ZXIgbWFudWFsbHkuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1kYW5nZXJcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZXJyb3InXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBsb29rdXAgZmFpbGVkLiBFbnRlciBtYW51YWxseS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTUgc3ViLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhZGRyZXNzTGluZU9uZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFkZHJlc3MgbGluZSAxPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NMaW5lT25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZU9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2FkZHJlc3NMaW5lT25lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lVHdvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVUd29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NMaW5lVHdvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNpdHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY2l0eVwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NpdHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdjaXR5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2NpdHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXR5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGUvcHJvdmluY2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdzdGF0ZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnc3RhdGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdzdGF0ZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdzdGF0ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50cnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db3VudHJ5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvdW50cnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NvdW50cnknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2NvdW50cnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbkNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW4gY29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBpbkNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBpbkNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BpbkNvZGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BpbkNvZGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BpbkNvZGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW4gY29kZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwbGFjZU9mU3VwcGx5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGxhY2Ugb2YgU3VwcGx5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlT2ZTdXBwbHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBsYWNlT2ZTdXBwbHlcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFjZSBvZiBzdXBwbHkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QTzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwb1wiIGZvcm1Db250cm9sTmFtZT1cInBvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwbycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwbycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cmNoYXNlIG9yZGVyIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnc3RvcmUtc2VsZWN0aW9uJyA/ICdkLW5vbmUnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuNSAxMEwxMS40MyAxMC43M0MxMi40MSA5LjU5IDEzIDguMTEgMTMgNi41QzEzIDIuOTEgMTAuMDkgMCA2LjUgMEMyLjkxIDAgMCAyLjkxIDAgNi41QzAgMTAuMDkgMi45MSAxMyA2LjUgMTNDOC4xMSAxMyA5LjU5IDEyLjQxIDEwLjczIDExLjQzTDEwLjI3NjIgMTEuNzFMMTYgMTcuNDlMMTcuNDkgMTZMMTEuNSAxMFpNNi41IDExQzQuMDEgMTEgMiA4Ljk5IDIgNi41QzIgNC4wMSA0LjAxIDIgNi41IDJDOC45OSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgOC45OSAxMSA2LjUgMTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgZmlsbC1vcGFjaXR5PVwiMC41NFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggU3RvcmVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwiZmlsdGVyRGF0YS5sZW5ndGhcIiBjbGFzcz1cIm1lLTJcIiBbZGF0YU9iamVjdF09XCJmaWx0ZXJEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3Vic2NyaWJlZFN0b3JlTGlzdD8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgc3RvcmUtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NoZWNrZWRdPVwiaXNBbGxTdG9yZXNTZWxlY3RlZEluR3JvdXAoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdEFsbFN0b3JlcygkZXZlbnQsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0RlZmF1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TdG9yZSBOYW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlTmFtZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZU5hbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlIElkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlSWQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdzdG9yZUlkJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHN1YnNjcmliZWRTdG9yZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NoZWNrZWRdPVwiaXNTdG9yZVNlbGVjdGVkSW5Hcm91cChpLCBkYXRhPy5zdG9yZUlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU3RvcmVDaGVjaygkZXZlbnQsIGksIGRhdGE/LnN0b3JlSWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LnN0b3JlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1pZFwiPklEIDoge3tkYXRhPy5zdG9yZUlkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBkYXRhPy5wcm9kdWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0ID09PSAndGFuZ29UcmFmZmljJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcCBtZS0yIG1iLTJcIj5UcmFmZmljPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdCA9PT0gJ3RhbmdvWm9uZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXAgbWUtMiBtYi0yXCI+Wm9uZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QgPT09ICd0YW5nb1RyYXgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwIG1lLTIgbWItMlwiPlRyYXg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1YnNjcmliZWRTdG9yZUxpc3QubGVuZ3RoXCIgY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCIgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3Vic2NyaWJlZFN0b3JlTGlzdD8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXItY2FyZCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSAhPT0gJ3NldHRpbmdzJyA/ICdkLW5vbmUnIDogJydcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5QcmljaW5nIE1ldGhvZDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidwcm9yYXRlLScgKyBpXCIgdmFsdWU9XCJwcm9yYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIFtmb3JdPVwiJ3Byb3JhdGUtJyArIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3JhdGUg4oCUIGJpbGwgZm9yIGFjdHVhbCB3b3JraW5nIGRheXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJvUmF0YVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCIgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmxhdC0nICsgaVwiIHZhbHVlPVwiZmxhdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBbZm9yXT1cIidmbGF0LScgKyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGF0IOKAlCBiaWxsIGZvciB0aGUgd2hvbGUgbW9udGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+QWR2YW5jZSBJbnZvaWNlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiIG5nYlRvb2x0aXA9XCJDcmVhdGVzIGFuIGludm9pY2UgZm9yIHRoZSBuZXh0IG1vbnRoIGF1dG9tYXRpY2FsbHkgdXBvbiBzYXZpbmdcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDEzQzEwLjMxMzcgMTMgMTMgMTAuMzEzNyAxMyA3QzEzIDMuNjg2MjkgMTAuMzEzNyAxIDcgMUMzLjY4NjI5IDEgMSAzLjY4NjI5IDEgN0MxIDEwLjMxMzcgMy42ODYyOSAxMyA3IDEzWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyA5LjRWN003IDQuNkg3LjAwNlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZHZhbmNlSW52b2ljZV8nICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZHZhbmNlSW52b2ljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCInYWR2YW5jZUludm9pY2VfJyArIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGluIGFkdmFuY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VJbnZvaWNlJyk/LnZhbHVlXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgZnctc2VtaWJvbGRcIj5BZHZhbmNlIGZyZXF1ZW5jeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VQZXJpb2RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBhZHZhbmNlUGVyaW9kT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdmFuY2UgaW52b2ljZSB3aWxsIGNvdmVyIHt7IGFkdmFuY2VJbnZvaWNlUmFuZ2UoYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VQZXJpb2QnKT8udmFsdWUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIiAqbmdJZj1cInN1YnNjcmliZWRQcm9kdWN0cy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItM1wiPlByb2R1Y3QgQmlsbGluZyBNZXRob2Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBOb3RlOiBubyAudGFibGUtcmVzcG9uc2l2ZSB3cmFwcGVyIGhlcmUuIEl0cyBvdmVyZmxvdy14OmF1dG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcHMgdGhlIEJpbGxpbmcgTWV0aG9kIGRyb3Bkb3duIG9wdGlvbnMgcGFuZWwuIFRoZSB0YWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGhhcyB0d28gY29sdW1ucywgc28gaG9yaXpvbnRhbCBzY3JvbGwgaXNuJ3QgbmVlZGVkLiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGJvdHRvbS1ib3JkZXIgYmlsbGluZy1tZXRob2QtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CaWxsaW5nIE1ldGhvZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvZCBvZiBzdWJzY3JpYmVkUHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kLnByb2R1Y3ROYW1lKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0UHJvZHVjdEJpbGxpbmdNZXRob2QoaSwgcHJvZC5wcm9kdWN0TmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25CaWxsaW5nTWV0aG9kU2VsZWN0Q2hhbmdlKGksIHByb2QucHJvZHVjdE5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYmlsbGluZ01ldGhvZE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJjdXJyZW5jeU9wdGlvbnNcIiBbbGFiZWxdPVwiJ0N1cnJlbmN5J1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGF4Q2FsY3VsYXRpb25UeXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInRheENhbGN1bGF0aW9uVHlwZU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1RheCBDYWxjdWxhdGlvbidcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRDeWNsZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJwYXltZW50Q3ljbGVPcHRpb25zXCIgW2xhYmVsXT1cIidQYXltZW50IEN5Y2xlJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudFRlcm1cIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwicGF5bWVudFRlcm1PcHRpb25zXCIgW2xhYmVsXT1cIidQYXltZW50IFRlcm0nXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctMTIgY29sLXhsLTEyIGNvbC14eGwtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2VtYWlsJyArIGlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5HZW5lcmF0ZSBJbnZvaWNlIFRvKiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZW1haWwgb2YgZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zXCI+e3sgZW1haWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUVtYWlsQ2hpcChlbWFpbCwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDQ0cHg7XCIgKGtleWRvd24pPVwib25FbWFpbEtleURvd24oJGV2ZW50LCBpKVwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZW1haWxWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWlucFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiAhZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIGVtYWlsIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5TdG9yZSBMaXN0IEFubmV4dXJlIEF0dGFjaGVkIFdpdGggSW52b2ljZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2hBbm5leHVyZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgaWQ9XCJ5ZXNcIiBbdmFsdWVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIGZvcj1cInllc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2hBbm5leHVyZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgaWQ9XCJub1wiIFt2YWx1ZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIGZvcj1cIm5vXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQganVzdGlmeS1jb250ZW50LWVuZCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoaSlcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTEwMFwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyB8fCBncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZShpKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3NldHRpbmdzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25TdWJtaXQoZ3JvdXAudmFsdWUsIGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5TYXZlIENoYW5nZXM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmxlbmd0aCA9PT0gMVwiIGZvcm1BcnJheU5hbWU9XCJncm91cHNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBiaWxsaW5nR3JvdXBzLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4O1wiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgcm93IHJvdy1jb2xzLTIgZy0wIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uVGFiQ2hhbmdlKGksICdiYXNpYy1pbmZvJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycgPyAnc2VsZWN0ZWQnIDogJydcIiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ3NldHRpbmdzJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc2V0dGluZ3MnID8gJ3NlbGVjdGVkJyA6ICcnXCIgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdiYXNpYy1pbmZvJyA/ICdkLW5vbmUnIDogJydcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVnaXN0ZXJlZENvbXBhbnlOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UmVnaXN0ZXJlZCBDb21wYW55IE5hbWUqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cImZvcmNlVXBwZXJjYXNlKCRldmVudCwgaSlcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVnaXN0ZXJlZENvbXBhbnlOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBjb21wYW55IG5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJnc3RcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5HU1Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoaW5wdXQpPVwib25Hc3RDaGFuZ2UoaSwgJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJnc3RcIiBmb3JtQ29udHJvbE5hbWU9XCJnc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnZ3N0Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ3N0Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2dzdCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBjb21wYW55IG5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImdzdC1sb29rdXAtbXNnIHRleHQtbXV0ZWRcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnbG9hZGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2tpbmcgdXAgcmVnaXN0ZXJlZCBhZGRyZXNz4oCmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImdzdC1sb29rdXAtbXNnIHRleHQtc3VjY2Vzc1wiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdmb3VuZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWQgYWRkcmVzcyBhdXRvLWZpbGxlZC4gRWRpdCBpZiBuZWVkZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImdzdC1sb29rdXAtbXNnIHRleHQtd2FybmluZ1wiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdub3Rmb3VuZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHJlZ2lzdGVyZWQgYWRkcmVzcyBmb3VuZCBmb3IgdGhpcyBHU1RJTi4gRW50ZXIgbWFudWFsbHkuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImdzdC1sb29rdXAtbXNnIHRleHQtZGFuZ2VyXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2Vycm9yJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBsb29rdXAgZmFpbGVkLiBFbnRlciBtYW51YWxseS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTUgc3ViLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIERldGFpbHNcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lT25lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDE8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzTGluZU9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZU9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhZGRyZXNzTGluZVR3b1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFkZHJlc3MgbGluZSAyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVUd29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc0xpbmVUd29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNpdHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjaXR5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdjaXR5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdjaXR5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnY2l0eScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2l0eSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGUvcHJvdmluY2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3N0YXRlJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdzdGF0ZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdzdGF0ZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdzdGF0ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvdW50cnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnY291bnRyeScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRyeSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbkNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW4gY29kZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGluQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaW5Db2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BpbkNvZGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BpbkNvZGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncGluQ29kZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW4gY29kZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBsYWNlT2ZTdXBwbHlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QbGFjZSBvZiBTdXBwbHk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwbGFjZU9mU3VwcGx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBsYWNlT2ZTdXBwbHlcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlIG9mIHN1cHBseSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UE88L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwb1wiIGZvcm1Db250cm9sTmFtZT1cInBvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BvJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdwbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwbycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVyY2hhc2Ugb3JkZXIgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSAhPT0gJ3NldHRpbmdzJyA/ICdkLW5vbmUnIDogJydcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+UHJpY2luZyBNZXRob2Q8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJvUmF0YVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCIgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidwcm9yYXRlLWVkaXQtJyArIGlcIiB2YWx1ZT1cInByb3JhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBbZm9yXT1cIidwcm9yYXRlLWVkaXQtJyArIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcmF0ZSDigJQgYmlsbCBmb3IgYWN0dWFsIHdvcmtpbmcgZGF5c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInByb1JhdGFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmxhdC1lZGl0LScgKyBpXCIgdmFsdWU9XCJmbGF0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgW2Zvcl09XCInZmxhdC1lZGl0LScgKyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXQg4oCUIGJpbGwgZm9yIHRoZSB3aG9sZSBtb250aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5BZHZhbmNlIEludm9pY2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIiBuZ2JUb29sdGlwPVwiQ3JlYXRlcyBhbiBpbnZvaWNlIGZvciB0aGUgbmV4dCBtb250aCBhdXRvbWF0aWNhbGx5IHVwb24gc2F2aW5nXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTNDMTAuMzEzNyAxMyAxMyAxMC4zMTM3IDEzIDdDMTMgMy42ODYyOSAxMC4zMTM3IDEgNyAxQzMuNjg2MjkgMSAxIDMuNjg2MjkgMSA3QzEgMTAuMzEzNyAzLjY4NjI5IDEzIDcgMTNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgOS40VjdNNyA0LjZINy4wMDZcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWR2YW5jZUludm9pY2VTaW5nbGVfJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZHZhbmNlSW52b2ljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cIidhZHZhbmNlSW52b2ljZVNpbmdsZV8nICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBpbiBhZHZhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJpbGxpbmdHcm91cHMuYXQoaSkuZ2V0KCdhZHZhbmNlSW52b2ljZScpPy52YWx1ZVwiIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgZnctc2VtaWJvbGRcIj5BZHZhbmNlIGZyZXF1ZW5jeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiYWR2YW5jZVBlcmlvZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2YgYWR2YW5jZVBlcmlvZE9wdGlvbnNcIiBbdmFsdWVdPVwib3B0LnZhbHVlXCI+e3sgb3B0LmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZHZhbmNlIGludm9pY2Ugd2lsbCBjb3ZlciB7eyBhZHZhbmNlSW52b2ljZVJhbmdlKGJpbGxpbmdHcm91cHMuYXQoaSkuZ2V0KCdhZHZhbmNlUGVyaW9kJyk/LnZhbHVlKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiICpuZ0lmPVwic3Vic2NyaWJlZFByb2R1Y3RzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTNcIj5Qcm9kdWN0IEJpbGxpbmcgTWV0aG9kPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CaWxsaW5nIE1ldGhvZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvZCBvZiBzdWJzY3JpYmVkUHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kLnByb2R1Y3ROYW1lKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0UHJvZHVjdEJpbGxpbmdNZXRob2QoaSwgcHJvZC5wcm9kdWN0TmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25CaWxsaW5nTWV0aG9kU2VsZWN0Q2hhbmdlKGksIHByb2QucHJvZHVjdE5hbWUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYmlsbGluZ01ldGhvZE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiY3VycmVuY3lPcHRpb25zXCIgW2xhYmVsXT1cIidDdXJyZW5jeSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInRheENhbGN1bGF0aW9uVHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJ0YXhDYWxjdWxhdGlvblR5cGVPcHRpb25zXCIgW2xhYmVsXT1cIidUYXggQ2FsY3VsYXRpb24nXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50Q3ljbGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwicGF5bWVudEN5Y2xlT3B0aW9uc1wiIFtsYWJlbF09XCInUGF5bWVudCBDeWNsZSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRUZXJtXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInBheW1lbnRUZXJtT3B0aW9uc1wiIFtsYWJlbF09XCInUGF5bWVudCBUZXJtJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtMTIgY29sLXh4bC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidlbWFpbCcgKyBpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R2VuZXJhdGUgSW52b2ljZSBUbyogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZW1haWwgb2YgZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtM1wiPnt7IGVtYWlsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUVtYWlsQ2hpcChlbWFpbCwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDQ0cHg7XCIgKGtleWRvd24pPVwib25FbWFpbEtleURvd24oJGV2ZW50LCBpKVwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbWFpbFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtaW5wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmICFncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2UgZW1haWwgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5TdG9yZSBMaXN0IEFubmV4dXJlIEF0dGFjaGVkIFdpdGggSW52b2ljZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYXR0YWNoQW5uZXh1cmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgaWQ9XCJ5ZXNcIiBbdmFsdWVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwieWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2hBbm5leHVyZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cIm5vXCIgW3ZhbHVlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBmb3I9XCJub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtZW5kIGp1c3RpZnktY29udGVudC1lbmQgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJtb2RhbFJlZi5jbG9zZSgpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDBcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycgfHwgZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc3RvcmUtc2VsZWN0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZShpKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzZXR0aW5ncydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25TdWJtaXQoZ3JvdXAudmFsdWUsIGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5TYXZlIENoYW5nZXM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvZm9ybT5cclxuPC9kaXY+Il19