@vendure/admin-ui 2.0.4 → 2.0.6

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 (83) hide show
  1. package/core/common/component-registry-types.d.ts +1 -1
  2. package/core/common/version.d.ts +1 -1
  3. package/core/components/app-shell/app-shell.component.d.ts +1 -0
  4. package/core/providers/dashboard-widget/dashboard-widget.service.d.ts +4 -1
  5. package/core/providers/i18n/i18n.service.d.ts +4 -0
  6. package/dashboard/components/dashboard/dashboard.component.d.ts +4 -1
  7. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +3 -3
  8. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +2 -2
  9. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +4 -4
  10. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +2 -2
  11. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +7 -1
  12. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +7 -5
  13. package/esm2022/catalog/components/stock-location-detail/stock-location-detail.component.mjs +30 -30
  14. package/esm2022/core/app.config.mjs +3 -7
  15. package/esm2022/core/common/base-list.component.mjs +1 -1
  16. package/esm2022/core/common/component-registry-types.mjs +1 -1
  17. package/esm2022/core/common/generated-types.mjs +1 -1
  18. package/esm2022/core/common/version.mjs +2 -2
  19. package/esm2022/core/components/app-shell/app-shell.component.mjs +11 -9
  20. package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +1 -1
  21. package/esm2022/core/components/user-menu/user-menu.component.mjs +3 -3
  22. package/esm2022/core/data/data.module.mjs +3 -3
  23. package/esm2022/core/data/utils/transform-relation-custom-field-inputs.mjs +1 -1
  24. package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +1 -1
  25. package/esm2022/core/providers/dashboard-widget/dashboard-widget-types.mjs +1 -1
  26. package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +5 -5
  27. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +1 -1
  28. package/esm2022/core/providers/i18n/i18n.service.mjs +15 -1
  29. package/esm2022/core/providers/page/page.service.mjs +1 -1
  30. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +2 -2
  31. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +3 -3
  32. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +1 -1
  33. package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +29 -29
  34. package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +1 -1
  35. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +1 -1
  36. package/esm2022/core/shared/components/rich-text-editor/prosemirror/custom-nodes.mjs +1 -1
  37. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +1 -1
  38. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +1 -1
  39. package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +1 -1
  40. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +3 -3
  41. package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +1 -1
  42. package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +1 -1
  43. package/esm2022/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +1 -1
  44. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +14 -14
  45. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +1 -1
  46. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +3 -3
  47. package/esm2022/core/shared/shared.module.mjs +1 -1
  48. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +27 -27
  49. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +4 -4
  50. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +3 -3
  51. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +5 -3
  52. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +3 -3
  53. package/esm2022/order/components/order-detail/order-detail.component.mjs +13 -11
  54. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +9 -9
  55. package/fesm2022/vendure-admin-ui-catalog.mjs +48 -41
  56. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  57. package/fesm2022/vendure-admin-ui-core.mjs +79 -69
  58. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  59. package/fesm2022/vendure-admin-ui-customer.mjs +26 -26
  60. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  61. package/fesm2022/vendure-admin-ui-dashboard.mjs +3 -3
  62. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  63. package/fesm2022/vendure-admin-ui-order.mjs +20 -16
  64. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  65. package/fesm2022/vendure-admin-ui-settings.mjs +8 -8
  66. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  67. package/package.json +14 -14
  68. package/static/i18n-messages/ar.json +774 -0
  69. package/static/i18n-messages/cs.json +773 -773
  70. package/static/i18n-messages/de.json +773 -773
  71. package/static/i18n-messages/en.json +774 -774
  72. package/static/i18n-messages/es.json +773 -773
  73. package/static/i18n-messages/fr.json +773 -773
  74. package/static/i18n-messages/he.json +774 -0
  75. package/static/i18n-messages/it.json +773 -773
  76. package/static/i18n-messages/pl.json +773 -773
  77. package/static/i18n-messages/pt_BR.json +773 -773
  78. package/static/i18n-messages/pt_PT.json +773 -773
  79. package/static/i18n-messages/ru.json +773 -773
  80. package/static/i18n-messages/uk.json +773 -773
  81. package/static/i18n-messages/zh_Hans.json +773 -773
  82. package/static/i18n-messages/zh_Hant.json +773 -773
  83. package/static/vendure-ui-config.json +3 -0
@@ -100,7 +100,6 @@ export class ProductVariantDetailComponent extends TypedBaseDetailComponent {
100
100
  save() {
101
101
  combineLatest(this.entity$, this.languageCode$)
102
102
  .pipe(take(1), mergeMap(([variant, languageCode]) => {
103
- const formValue = this.detailForm.value;
104
103
  const input = pick(this.getUpdatedVariant(variant, this.detailForm, languageCode), [
105
104
  'id',
106
105
  'enabled',
@@ -254,6 +253,7 @@ export class ProductVariantDetailComponent extends TypedBaseDetailComponent {
254
253
  assetIds: this.assetChanges.assets?.map(a => a.id),
255
254
  featuredAssetId: this.assetChanges.featuredAsset?.id,
256
255
  facetValueIds: variantFormGroup.value.facetValueIds,
256
+ taxCategoryId: variantFormGroup.value.taxCategoryId,
257
257
  };
258
258
  }
259
259
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ProductVariantDetailComponent, deps: [{ token: i1.ProductDetailService }, { token: i2.FormBuilder }, { token: i3.ModalService }, { token: i3.NotificationService }, { token: i3.DataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -263,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
263
263
  type: Component,
264
264
  args: [{ selector: 'vdr-product-variant-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left [grow]=\"true\">\r\n <div class=\"flex center\">\r\n <ng-container *ngIf=\"availableLanguages$ | async as availableLanguages\">\r\n <vdr-language-selector\r\n *ngIf=\"availableLanguages.length > 1\"\r\n class=\"mr-2\"\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </ng-container>\r\n <vdr-product-variant-quick-jump [productId]=\"entity?.product.id\" />\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"product-variant-detail\"></vdr-action-bar-items>\r\n <button\r\n *vdrIfPermissions=\"['UpdateCatalog', 'UpdateProduct']\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"\r\n (detailForm.invalid ||\r\n stockLevelsForm.invalid ||\r\n pricesForm.invalid ||\r\n (detailForm.pristine && stockLevelsForm.pristine && pricesForm.pristine)) &&\r\n !assetsChanged()\r\n \"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"entity$ | async as variant\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar\r\n ><vdr-card>\r\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\r\n <clr-toggle-wrapper *vdrIfPermissions=\"['UpdateCatalog', 'UpdateProduct']\">\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"enabled\"\r\n [formControl]=\"detailForm.get(['enabled'])\"\r\n />\r\n <label>{{ 'common.enabled' | translate }}</label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"variant.options.length\" [title]=\"'catalog.product-options' | translate\">\r\n <div class=\"options\">\r\n <vdr-chip\r\n *ngFor=\"let option of variant.options | sort : 'groupId'\"\r\n [colorFrom]=\"optionGroupCode(option.groupId)\"\r\n [invert]=\"true\"\r\n >\r\n <span>{{ optionGroupCode(option.groupId) }}:</span>\r\n {{ optionName(option) }}\r\n </vdr-chip>\r\n </div>\r\n <div>\r\n <a\r\n [routerLink]=\"['../../', 'options']\"\r\n class=\"button-small mt-2\"\r\n *vdrIfPermissions=\"updatePermissions\"\r\n >\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'catalog.edit-options' | translate }}\r\n </a>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.facets' | translate\">\r\n <div class=\"facets\">\r\n <vdr-facet-value-chip\r\n *ngFor=\"let facetValue of facetValues$ | async\"\r\n [facetValue]=\"facetValue\"\r\n [removable]=\"updatePermissions | hasPermission\"\r\n (remove)=\"removeFacetValue(facetValue.id)\"\r\n ></vdr-facet-value-chip>\r\n </div>\r\n <div>\r\n <button\r\n class=\"button-small mt-2\"\r\n *vdrIfPermissions=\"updatePermissions\"\r\n (click)=\"selectFacetValue()\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.add-facets' | translate }}\r\n </button>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block>\r\n <button type=\"submit\" hidden x-data=\"prevents enter key from triggering other buttons\"></button>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateProduct'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'catalog.sku' | translate\" for=\"sku\">\r\n <input\r\n id=\"sku\"\r\n type=\"text\"\r\n formControlName=\"sku\"\r\n [readonly]=\"!(updatePermissions | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ProductVariant\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermissions | hasPermission)\"\r\n />\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"product-variant-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n />\r\n <vdr-card [title]=\"'catalog.assets' | translate\">\r\n <vdr-assets\r\n [assets]=\"assetChanges.assets || variant.assets\"\r\n [featuredAsset]=\"assetChanges.featuredAsset || variant.featuredAsset\"\r\n [updatePermissions]=\"updatePermissions\"\r\n (change)=\"assetChanges = $event\"\r\n />\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.price-and-tax' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'catalog.tax-category' | translate\" for=\"taxCategory\">\r\n <select name=\"taxCategory\" formControlName=\"taxCategoryId\">\r\n <option\r\n *ngFor=\"let taxCategory of taxCategories$ | async\"\r\n [value]=\"taxCategory.id\"\r\n >\r\n {{ taxCategory.name }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n </div>\r\n <div class=\"form-grid prices\" *ngFor=\"let price of pricesForm.controls\" [formGroup]=\"price\">\r\n <vdr-form-field\r\n [label]=\"\r\n ('catalog.price' | translate) +\r\n (1 < pricesForm.length ? ' (' + price.value.currencyCode + ')' : '')\r\n \"\r\n [tooltip]=\"\r\n 1 < pricesForm.length && price.value.currencyCode === channelDefaultCurrencyCode\r\n ? ('catalog.default-currency' | translate)\r\n : undefined\r\n \"\r\n for=\"price\"\r\n >\r\n <div class=\"price-wrapper\" [class.pending-deletion]=\"price.value.delete === true\">\r\n <vdr-currency-input\r\n name=\"price\"\r\n [currencyCode]=\"price.value.currencyCode\"\r\n [readonly]=\"\r\n !(updatePermissions | hasPermission) || price.value.delete === true\r\n \"\r\n formControlName=\"price\"\r\n />\r\n <div *ngIf=\"1 < pricesForm.controls.length\">\r\n <button\r\n class=\"button-small delete-button\"\r\n [disabled]=\"price.value.currencyCode === channelDefaultCurrencyCode\"\r\n (click)=\"toggleDeletePrice(price.get('delete'))\"\r\n >\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </vdr-form-field>\r\n <vdr-variant-price-detail\r\n [price]=\"price.value.price\"\r\n [currencyCode]=\"price.value.currencyCode\"\r\n [priceIncludesTax]=\"channelPriceIncludesTax$ | async\"\r\n [taxCategoryId]=\"detailForm.get('taxCategoryId')!.value\"\r\n />\r\n </div>\r\n <ng-container *ngIf=\"unusedCurrencyCodes$ | async as unusedCurrencyCodes\">\r\n <div *ngIf=\"unusedCurrencyCodes.length\">\r\n <vdr-dropdown>\r\n <button class=\"button mt-2\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.add-price-in-another-currency' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let currencyCode of unusedCurrencyCodes\"\r\n (click)=\"addPriceInCurrency(currencyCode)\"\r\n >\r\n {{ currencyCode | localeCurrencyName }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.stock-levels' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n for=\"track-inventory\"\r\n [label]=\"'catalog.track-inventory' | translate\"\r\n [tooltip]=\"'catalog.track-inventory-tooltip' | translate\"\r\n >\r\n <select\r\n name=\"track-inventory\"\r\n formControlName=\"trackInventory\"\r\n [disabled]=\"!(updatePermissions | hasPermission)\"\r\n >\r\n <option [value]=\"GlobalFlag.TRUE\">\r\n {{ 'catalog.track-inventory-true' | translate }}\r\n </option>\r\n <option [value]=\"GlobalFlag.FALSE\">\r\n {{ 'catalog.track-inventory-false' | translate }}\r\n </option>\r\n <option [value]=\"GlobalFlag.INHERIT\">\r\n {{ 'catalog.track-inventory-inherit' | translate }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n\r\n <vdr-form-item\r\n [label]=\"'catalog.out-of-stock-threshold' | translate\"\r\n [tooltip]=\"'catalog.out-of-stock-threshold-tooltip' | translate\"\r\n >\r\n <input\r\n type=\"number\"\r\n formControlName=\"outOfStockThreshold\"\r\n [readonly]=\"!(updatePermissions | hasPermission)\"\r\n [vdrDisabled]=\"\r\n detailForm.get('useGlobalOutOfStockThreshold')?.value !== false ||\r\n inventoryIsNotTracked(detailForm)\r\n \"\r\n />\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"useGlobalOutOfStockThreshold\"\r\n formControlName=\"useGlobalOutOfStockThreshold\"\r\n [vdrDisabled]=\"\r\n !(updatePermissions | hasPermission) || inventoryIsNotTracked(detailForm)\r\n \"\r\n />\r\n <label\r\n >{{ 'catalog.use-global-value' | translate }} ({{\r\n globalOutOfStockThreshold\r\n }})</label\r\n >\r\n </clr-toggle-wrapper>\r\n </vdr-form-item>\r\n </div>\r\n <div\r\n class=\"form-grid stock-levels\"\r\n *ngFor=\"let stockLevel of stockLevelsForm.controls\"\r\n [formGroup]=\"stockLevel\"\r\n >\r\n <vdr-form-field\r\n [label]=\"\r\n stockLevel.get('stockLocationName')?.value +\r\n ': ' +\r\n ('catalog.stock-on-hand' | translate)\r\n \"\r\n [for]=\"'stockOnHand_' + stockLevel.get('stockLocationId')?.value\"\r\n >\r\n <input\r\n [id]=\"'stockOnHand_' + stockLevel.get('stockLocationId')?.value\"\r\n type=\"number\"\r\n formControlName=\"stockOnHand\"\r\n [readonly]=\"!(updatePermissions | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-item\r\n [label]=\"\r\n stockLevel.get('stockLocationName')?.value +\r\n ': ' +\r\n ('catalog.stock-allocated' | translate)\r\n \"\r\n >\r\n {{ stockLevel.get('stockAllocated')?.value }}\r\n </vdr-form-item>\r\n </div>\r\n <ng-container *ngIf=\"unusedStockLocation$ | async as unusedStockLocations\">\r\n <div *ngIf=\"unusedStockLocations.length\">\r\n <vdr-dropdown>\r\n <button class=\"button mt-2\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.add-stock-location' | translate }}\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <button\r\n vdrDropdownItem\r\n *ngFor=\"let stockLocation of unusedStockLocations\"\r\n (click)=\"addStockLocation(stockLocation)\"\r\n >\r\n <clr-icon shape=\"map-marker\"></clr-icon> {{ stockLocation.name }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: [".facets,.options{display:flex;flex-wrap:wrap;gap:3px}vdr-product-variant-quick-jump{flex:1;margin-right:calc(var(--space-unit) * 2)}.stock-levels,.prices{margin-top:calc(var(--space-unit) * 2);padding-top:calc(var(--space-unit) * 2);border-top:1px solid var(--color-weight-150)}.price-wrapper{display:flex;align-items:center;gap:var(--space-unit);width:100%}.price-wrapper.pending-deletion vdr-currency-input{opacity:.7}.price-wrapper.pending-deletion .delete-button{background-color:var(--color-error-700);color:var(--color-error-100)}\n"] }]
265
265
  }], ctorParameters: function () { return [{ type: i1.ProductDetailService }, { type: i2.FormBuilder }, { type: i3.ModalService }, { type: i3.NotificationService }, { type: i3.DataService }, { type: i0.ChangeDetectorRef }]; } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvcHJvZHVjdC12YXJpYW50LWRldGFpbC9wcm9kdWN0LXZhcmlhbnQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtZGV0YWlsL3Byb2R1Y3QtdmFyaWFudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUdILHlCQUF5QixFQUd6QixlQUFlLEVBR2YsVUFBVSxFQUtWLFVBQVUsRUFFVixvQ0FBb0MsRUFDcEMsd0JBQXdCLEdBRTNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxRQUFRLEVBQ1IsV0FBVyxFQUNYLElBQUksRUFDSixTQUFTLEVBQ1QsV0FBVyxFQUNYLElBQUksRUFDSixHQUFHLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7O0FBNEIvRixNQUFNLE9BQU8sNkJBQ1QsU0FBUSx3QkFBa0Y7SUFnRDFGLFlBQ1ks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O09BR0c7SUFDSyxpQkFBaUIsQ0FDckIsT0FBb0UsRUFDcEUsZ0JBQXdDLEVBQ3hDLFlBQTBCO1FBRTFCLE1BQU0sY0FBYyxHQUFHLHlCQUF5QixDQUFDO1lBQzdDLFlBQVksRUFBRSxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ3JDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3BDLFlBQVk7WUFDWixrQkFBa0IsRUFBRTtnQkFDaEIsWUFBWTtnQkFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQzNCO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNILEdBQUcsY0FBYztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwRCxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGFBQWE7U0FDRyxDQUFDO0lBQy9ELENBQUM7OEdBalZRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLHlGQ2xFMUMseThoQkF1VUE7OzJGRHJRYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0ksNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcbmltcG9ydCB7XG4gICAgQXNzZXQsXG4gICAgQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCxcbiAgICBjcmVhdGVVcGRhdGVkVHJhbnNsYXRhYmxlLFxuICAgIEN1cnJlbmN5Q29kZSxcbiAgICBEYXRhU2VydmljZSxcbiAgICBmaW5kVHJhbnNsYXRpb24sXG4gICAgR2V0UHJvZHVjdFZhcmlhbnREZXRhaWxEb2N1bWVudCxcbiAgICBHZXRQcm9kdWN0VmFyaWFudERldGFpbFF1ZXJ5LFxuICAgIEdsb2JhbEZsYWcsXG4gICAgSXRlbU9mLFxuICAgIExhbmd1YWdlQ29kZSxcbiAgICBNb2RhbFNlcnZpY2UsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBQZXJtaXNzaW9uLFxuICAgIFByb2R1Y3RPcHRpb25GcmFnbWVudCxcbiAgICBQcm9kdWN0VmFyaWFudFVwZGF0ZU11dGF0aW9uRG9jdW1lbnQsXG4gICAgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50LFxuICAgIFVwZGF0ZVByb2R1Y3RWYXJpYW50SW5wdXQsXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xuaW1wb3J0IHsgcGljayB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvcGljayc7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3VuaXF1ZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBjb25jYXQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIG1lcmdlTWFwLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHNraXAsXG4gICAgc3dpdGNoTWFwLFxuICAgIHN3aXRjaE1hcFRvLFxuICAgIHRha2UsXG4gICAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9wcm9kdWN0LWRldGFpbC9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGx5RmFjZXREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9hcHBseS1mYWNldC1kaWFsb2cvYXBwbHktZmFjZXQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBTZWxlY3RlZEFzc2V0cyB7XG4gICAgYXNzZXRzPzogQXNzZXRbXTtcbiAgICBmZWF0dXJlZEFzc2V0PzogQXNzZXQ7XG59XG5cbmludGVyZmFjZSBWYXJpYW50Rm9ybVZhbHVlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRheENhdGVnb3J5SWQ6IHN0cmluZztcbiAgICBzdG9ja09uSGFuZDogbnVtYmVyO1xuICAgIHVzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGQ6IGJvb2xlYW47XG4gICAgb3V0T2ZTdG9ja1RocmVzaG9sZDogbnVtYmVyO1xuICAgIHRyYWNrSW52ZW50b3J5OiBHbG9iYWxGbGFnO1xuICAgIGZhY2V0VmFsdWVJZHM6IHN0cmluZ1tdW107XG4gICAgY3VzdG9tRmllbGRzPzogYW55O1xufVxudHlwZSBUID0gTm9uTnVsbGFibGU8R2V0UHJvZHVjdFZhcmlhbnREZXRhaWxRdWVyeVsncHJvZHVjdFZhcmlhbnQnXT47XG50eXBlIFQxID0gVFsnc3RvY2tMZXZlbHMnXTtcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtdmFyaWFudC1kZXRhaWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LXZhcmlhbnQtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LXZhcmlhbnQtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RWYXJpYW50RGV0YWlsQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8dHlwZW9mIEdldFByb2R1Y3RWYXJpYW50RGV0YWlsRG9jdW1lbnQsICdwcm9kdWN0VmFyaWFudCc+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICAgIHB1YmxpYyByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9ucyA9IFtQZXJtaXNzaW9uLlVwZGF0ZUNhdGFsb2csIFBlcm1pc3Npb24uVXBkYXRlUHJvZHVjdF07XG4gICAgcmVhZG9ubHkgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnUHJvZHVjdFZhcmlhbnQnKTtcbiAgICByZWFkb25seSBjdXN0b21PcHRpb25GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdQcm9kdWN0T3B0aW9uJyk7XG4gICAgc3RvY2tMZXZlbHMkOiBPYnNlcnZhYmxlPE5vbk51bGxhYmxlPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnlbJ3Byb2R1Y3RWYXJpYW50J10+WydzdG9ja0xldmVscyddPjtcbiAgICBkZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cDxWYXJpYW50Rm9ybVZhbHVlPih7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHNrdTogJycsXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICB0YXhDYXRlZ29yeUlkOiAnJyxcbiAgICAgICAgc3RvY2tPbkhhbmQ6IDAsXG4gICAgICAgIHVzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGQ6IHRydWUsXG4gICAgICAgIG91dE9mU3RvY2tUaHJlc2hvbGQ6IDAsXG4gICAgICAgIHRyYWNrSW52ZW50b3J5OiBHbG9iYWxGbGFnLlRSVUUsXG4gICAgICAgIGZhY2V0VmFsdWVJZHM6IFtdLFxuICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcy5yZWR1Y2UoKGhhc2gsIGZpZWxkKSA9PiAoeyAuLi5oYXNoLCBbZmllbGQubmFtZV06ICcnIH0pLCB7fSksXG4gICAgICAgICksXG4gICAgfSk7XG4gICAgc3RvY2tMZXZlbHNGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheTxcbiAgICAgICAgRm9ybUdyb3VwPHtcbiAgICAgICAgICAgIHN0b2NrTG9jYXRpb25JZDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgICAgICBzdG9ja0xvY2F0aW9uTmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgICAgICBzdG9ja09uSGFuZDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgICAgICAgICBzdG9ja0FsbG9jYXRlZDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgICAgIH0+XG4gICAgPihbXSk7XG4gICAgcHJpY2VzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXk8XG4gICAgICAgIEZvcm1Hcm91cDx7XG4gICAgICAgICAgICBwcmljZTogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgICAgICAgICBjdXJyZW5jeUNvZGU6IEZvcm1Db250cm9sPEN1cnJlbmN5Q29kZSB8IG51bGw+O1xuICAgICAgICAgICAgZGVsZXRlOiBGb3JtQ29udHJvbDxib29sZWFuIHwgbnVsbD47XG4gICAgICAgIH0+XG4gICAgPihbXSk7XG4gICAgYXNzZXRDaGFuZ2VzOiBTZWxlY3RlZEFzc2V0cyA9IHt9O1xuICAgIHRheENhdGVnb3JpZXMkOiBPYnNlcnZhYmxlPEFycmF5PEl0ZW1PZjxHZXRQcm9kdWN0VmFyaWFudERldGFpbFF1ZXJ5LCAndGF4Q2F0ZWdvcmllcyc+Pj47XG4gICAgdW51c2VkU3RvY2tMb2NhdGlvbiQ6IE9ic2VydmFibGU8QXJyYXk8SXRlbU9mPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnksICdzdG9ja0xvY2F0aW9ucyc+Pj47XG4gICAgdW51c2VkQ3VycmVuY3lDb2RlcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICAgIGNoYW5uZWxQcmljZUluY2x1ZGVzVGF4JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICByZWFkb25seSBHbG9iYWxGbGFnID0gR2xvYmFsRmxhZztcbiAgICBnbG9iYWxUcmFja0ludmVudG9yeTogYm9vbGVhbjtcbiAgICBnbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkOiBudW1iZXI7XG4gICAgZmFjZXRWYWx1ZXMkOiBPYnNlcnZhYmxlPE5vbk51bGxhYmxlPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnlbJ3Byb2R1Y3RWYXJpYW50J10+WydmYWNldFZhbHVlcyddPjtcbiAgICBjaGFubmVsRGVmYXVsdEN1cnJlbmN5Q29kZTogQ3VycmVuY3lDb2RlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdERldGFpbFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MuZ2V0R2xvYmFsU2V0dGluZ3MoJ2NhY2hlLWZpcnN0Jykuc2luZ2xlJC5zdWJzY3JpYmUoKHsgZ2xvYmFsU2V0dGluZ3MgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxUcmFja0ludmVudG9yeSA9IGdsb2JhbFNldHRpbmdzLnRyYWNrSW52ZW50b3J5O1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkID0gZ2xvYmFsU2V0dGluZ3Mub3V0T2ZTdG9ja1RocmVzaG9sZDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRheENhdGVnb3JpZXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gZGF0YS50YXhDYXRlZ29yaWVzLml0ZW1zKSk7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUN1cnJlbmN5Q29kZXMkID0gdGhpcy5yZXN1bHQkLnBpcGUoXG4gICAgICAgICAgICB0YXAoZGF0YSA9PiAodGhpcy5jaGFubmVsRGVmYXVsdEN1cnJlbmN5Q29kZSA9IGRhdGEuYWN0aXZlQ2hhbm5lbC5kZWZhdWx0Q3VycmVuY3lDb2RlKSksXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiBkYXRhLmFjdGl2ZUNoYW5uZWwuYXZhaWxhYmxlQ3VycmVuY3lDb2RlcyksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudW51c2VkQ3VycmVuY3lDb2RlcyQgPSBjb21iaW5lTGF0ZXN0KHRoaXMucHJpY2VzRm9ybS52YWx1ZUNoYW5nZXMsIGF2YWlsYWJsZUN1cnJlbmN5Q29kZXMkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbcHJpY2VzLCBjdXJyZW5jeUNvZGVzXSkgPT5cbiAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGVzLmZpbHRlcihjb2RlID0+ICFwcmljZXMubWFwKHAgPT4gcC5jdXJyZW5jeUNvZGUpLmluY2x1ZGVzKGNvZGUpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN0b2NrTG9jYXRpb25zJCA9IHRoaXMucmVzdWx0JC5waXBlKG1hcChkYXRhID0+IGRhdGEuc3RvY2tMb2NhdGlvbnMuaXRlbXMpKTtcbiAgICAgICAgdGhpcy51bnVzZWRTdG9ja0xvY2F0aW9uJCA9IGNvbWJpbmVMYXRlc3QodGhpcy5lbnRpdHkkLCBzdG9ja0xvY2F0aW9ucyQpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtlbnRpdHksIHN0b2NrTG9jYXRpb25zXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVzZWRJZHMgPSBlbnRpdHkuc3RvY2tMZXZlbHMubWFwKGwgPT4gbC5zdG9ja0xvY2F0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvY2tMb2NhdGlvbnMuZmlsdGVyKGwgPT4gIXVzZWRJZHMuaW5jbHVkZXMobC5pZCkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2hhbm5lbFByaWNlSW5jbHVkZXNUYXgkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5nc1xuICAgICAgICAgICAgLmdldEFjdGl2ZUNoYW5uZWwoJ2NhY2hlLWZpcnN0JylcbiAgICAgICAgICAgIC5yZWZldGNoT25DaGFubmVsQ2hhbmdlKClcbiAgICAgICAgICAgIC5tYXBTdHJlYW0oZGF0YSA9PiBkYXRhLmFjdGl2ZUNoYW5uZWwucHJpY2VzSW5jbHVkZVRheClcbiAgICAgICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgICAgdGhpcy5zdG9ja0xldmVscyQgPSB0aGlzLmVudGl0eSQucGlwZShtYXAoZW50aXR5ID0+IGVudGl0eT8uc3RvY2tMZXZlbHMgPz8gW10pKTtcbiAgICAgICAgY29uc3QgZmFjZXRWYWx1ZXMkID0gdGhpcy5lbnRpdHkkLnBpcGUobWFwKHZhcmlhbnQgPT4gdmFyaWFudC5mYWNldFZhbHVlcyA/PyBbXSkpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBjb25zdCBmb3JtRmFjZXRWYWx1ZUlkQ2hhbmdlcyQgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdmYWNldFZhbHVlSWRzJykhLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaWRzID0+XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5mYWNldFxuICAgICAgICAgICAgICAgICAgICAuZ2V0RmFjZXRWYWx1ZXMoeyBmaWx0ZXI6IHsgaWQ6IHsgaW46IGlkcyB9IH0gfSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZSgoeyBmYWNldFZhbHVlcyB9KSA9PiBmYWNldFZhbHVlcy5pdGVtcyksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmFjZXRWYWx1ZXMkID0gY29uY2F0KFxuICAgICAgICAgICAgZmFjZXRWYWx1ZXMkLnBpcGUodGFrZSgxKSksXG4gICAgICAgICAgICBmYWNldFZhbHVlcyQucGlwZShzd2l0Y2hNYXBUbyhmb3JtRmFjZXRWYWx1ZUlkQ2hhbmdlcyQpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgYWRkUHJpY2VJbkN1cnJlbmN5KGN1cnJlbmN5Q29kZTogQ3VycmVuY3lDb2RlKSB7XG4gICAgICAgIHRoaXMucHJpY2VzRm9ybS5wdXNoKFxuICAgICAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlLFxuICAgICAgICAgICAgICAgIHByaWNlOiAwLFxuICAgICAgICAgICAgICAgIGRlbGV0ZTogZmFsc2UgYXMgYm9vbGVhbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHRvZ2dsZURlbGV0ZVByaWNlKGRlbGV0ZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgICAgICBkZWxldGVGb3JtQ29udHJvbC5zZXRWYWx1ZSghZGVsZXRlRm9ybUNvbnRyb2wudmFsdWUpO1xuICAgICAgICBkZWxldGVGb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIGFkZFN0b2NrTG9jYXRpb24oc3RvY2tMb2NhdGlvbjogSXRlbU9mPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnksICdzdG9ja0xvY2F0aW9ucyc+KSB7XG4gICAgICAgIHRoaXMuc3RvY2tMZXZlbHNGb3JtLnB1c2goXG4gICAgICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uSWQ6IHN0b2NrTG9jYXRpb24uaWQsXG4gICAgICAgICAgICAgICAgc3RvY2tMb2NhdGlvbk5hbWU6IHN0b2NrTG9jYXRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICBzdG9ja09uSGFuZDogMCxcbiAgICAgICAgICAgICAgICBzdG9ja0FsbG9jYXRlZDogMCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNhdmUoKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5lbnRpdHkkLCB0aGlzLmxhbmd1YWdlQ29kZSQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChbdmFyaWFudCwgbGFuZ3VhZ2VDb2RlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gcGljayhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXBkYXRlZFZhcmlhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdza3UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXhDYXRlZ29yeUlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0SWRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2tJbnZlbnRvcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRPZlN0b2NrVGhyZXNob2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbUZpZWxkcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICApIGFzIFVwZGF0ZVByb2R1Y3RWYXJpYW50SW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0b2NrTGV2ZWxzRm9ybS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuc3RvY2tMZXZlbHMgPSB0aGlzLnN0b2NrTGV2ZWxzRm9ybS5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmRpcnR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoY29udHJvbCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uSWQ6IGNvbnRyb2wudmFsdWUuc3RvY2tMb2NhdGlvbklkISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvY2tPbkhhbmQ6IGNvbnRyb2wudmFsdWUuc3RvY2tPbkhhbmQhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmljZXNGb3JtLmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5wcmljZXMgPSB0aGlzLnByaWNlc0Zvcm0uY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGNvbnRyb2wgPT4gY29udHJvbC5kaXJ0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGNvbnRyb2wgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGNvbnRyb2wudmFsdWUucHJpY2UhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6IGNvbnRyb2wudmFsdWUuY3VycmVuY3lDb2RlISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlOiBjb250cm9sLnZhbHVlLmRlbGV0ZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UubXV0YXRlKFByb2R1Y3RWYXJpYW50VXBkYXRlTXV0YXRpb25Eb2N1bWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IFtpbnB1dF0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9ja0xldmVsc0Zvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmljZXNGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzZXRDaGFuZ2VzID0ge307XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUHJvZHVjdFZhcmlhbnQnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdQcm9kdWN0VmFyaWFudCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGFzc2V0c0NoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIU9iamVjdC52YWx1ZXModGhpcy5hc3NldENoYW5nZXMpLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpbnZlbnRvcnlJc05vdFRyYWNrZWQoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRyYWNrSW52ZW50b3J5ID0gZm9ybUdyb3VwLmdldCgndHJhY2tJbnZlbnRvcnknKT8udmFsdWU7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0cmFja0ludmVudG9yeSA9PT0gR2xvYmFsRmxhZy5GQUxTRSB8fFxuICAgICAgICAgICAgKHRyYWNrSW52ZW50b3J5ID09PSBHbG9iYWxGbGFnLklOSEVSSVQgJiYgdGhpcy5nbG9iYWxUcmFja0ludmVudG9yeSA9PT0gZmFsc2UpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3B0aW9uR3JvdXBDb2RlKG9wdGlvbkdyb3VwSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5lbnRpdHk/LnByb2R1Y3Qub3B0aW9uR3JvdXBzLmZpbmQoZyA9PiBnLmlkID09PSBvcHRpb25Hcm91cElkKTtcbiAgICAgICAgcmV0dXJuIGdyb3VwPy5jb2RlO1xuICAgIH1cblxuICAgIG9wdGlvbk5hbWUob3B0aW9uOiBQcm9kdWN0T3B0aW9uRnJhZ21lbnQpIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPVxuICAgICAgICAgICAgb3B0aW9uLnRyYW5zbGF0aW9ucy5maW5kKHQgPT4gdC5sYW5ndWFnZUNvZGUgPT09IHRoaXMubGFuZ3VhZ2VDb2RlKSA/PyBvcHRpb24udHJhbnNsYXRpb25zWzBdO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRpb24ubmFtZTtcbiAgICB9XG5cbiAgICByZW1vdmVGYWNldFZhbHVlKGZhY2V0VmFsdWVJZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RHcm91cCA9IHRoaXMuZGV0YWlsRm9ybTtcbiAgICAgICAgY29uc3QgY3VycmVudEZhY2V0VmFsdWVJZHMgPSBwcm9kdWN0R3JvdXAudmFsdWUuZmFjZXRWYWx1ZUlkcyA/PyBbXTtcbiAgICAgICAgcHJvZHVjdEdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgZmFjZXRWYWx1ZUlkczogY3VycmVudEZhY2V0VmFsdWVJZHMuZmlsdGVyKGlkID0+IGlkICE9PSBmYWNldFZhbHVlSWQpLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvZHVjdEdyb3VwLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuXG4gICAgc2VsZWN0RmFjZXRWYWx1ZSgpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5RmFjZXRWYWx1ZU1vZGFsKCkuc3Vic2NyaWJlKGZhY2V0VmFsdWVJZHMgPT4ge1xuICAgICAgICAgICAgaWYgKGZhY2V0VmFsdWVJZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RmFjZXRWYWx1ZUlkcyA9IHRoaXMuZGV0YWlsRm9ybS52YWx1ZS5mYWNldFZhbHVlSWRzID8/IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgZmFjZXRWYWx1ZUlkczogdW5pcXVlKFsuLi5jdXJyZW50RmFjZXRWYWx1ZUlkcywgLi4uZmFjZXRWYWx1ZUlkc10pLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3BsYXlGYWNldFZhbHVlTW9kYWwoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEFwcGx5RmFjZXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChmYWNldFZhbHVlcyA9PiBmYWNldFZhbHVlcyAmJiBmYWNldFZhbHVlcy5tYXAodiA9PiB2LmlkKSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKFxuICAgICAgICB2YXJpYW50OiBOb25OdWxsYWJsZTxHZXRQcm9kdWN0VmFyaWFudERldGFpbFF1ZXJ5Wydwcm9kdWN0VmFyaWFudCddPixcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhcmlhbnRUcmFuc2xhdGlvbiA9IGZpbmRUcmFuc2xhdGlvbih2YXJpYW50LCBsYW5ndWFnZUNvZGUpO1xuICAgICAgICBjb25zdCBmYWNldFZhbHVlSWRzID0gdmFyaWFudC5mYWNldFZhbHVlcy5tYXAoZnYgPT4gZnYuaWQpO1xuICAgICAgICB0aGlzLmRldGFpbEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBpZDogdmFyaWFudC5pZCxcbiAgICAgICAgICAgIGVuYWJsZWQ6IHZhcmlhbnQuZW5hYmxlZCxcbiAgICAgICAgICAgIHNrdTogdmFyaWFudC5za3UsXG4gICAgICAgICAgICBuYW1lOiB2YXJpYW50VHJhbnNsYXRpb24gPyB2YXJpYW50VHJhbnNsYXRpb24ubmFtZSA6ICcnLFxuICAgICAgICAgICAgdGF4Q2F0ZWdvcnlJZDogdmFyaWFudC50YXhDYXRlZ29yeS5pZCxcbiAgICAgICAgICAgIHN0b2NrT25IYW5kOiB2YXJpYW50LnN0b2NrTGV2ZWxzWzBdPy5zdG9ja09uSGFuZCA/PyAwLFxuICAgICAgICAgICAgdXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZDogdmFyaWFudC51c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkLFxuICAgICAgICAgICAgb3V0T2ZTdG9ja1RocmVzaG9sZDogdmFyaWFudC5vdXRPZlN0b2NrVGhyZXNob2xkLFxuICAgICAgICAgICAgdHJhY2tJbnZlbnRvcnk6IHZhcmlhbnQudHJhY2tJbnZlbnRvcnksXG4gICAgICAgICAgICBmYWNldFZhbHVlSWRzLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9ja0xldmVsc0Zvcm0uY2xlYXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBzdG9ja0xldmVsIG9mIHZhcmlhbnQuc3RvY2tMZXZlbHMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvY2tMZXZlbHNGb3JtLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICAgICAgIHN0b2NrTG9jYXRpb25JZDogc3RvY2tMZXZlbC5zdG9ja0xvY2F0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uTmFtZTogc3RvY2tMZXZlbC5zdG9ja0xvY2F0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrT25IYW5kOiBzdG9ja0xldmVsLnN0b2NrT25IYW5kLFxuICAgICAgICAgICAgICAgICAgICBzdG9ja0FsbG9jYXRlZDogc3RvY2tMZXZlbC5zdG9ja0FsbG9jYXRlZCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmljZXNGb3JtLmNsZWFyKCk7XG4gICAgICAgIGZvciAoY29uc3QgcHJpY2Ugb2YgdmFyaWFudC5wcmljZXMpIHtcbiAgICAgICAgICAgIHRoaXMucHJpY2VzRm9ybS5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBwcmljZTogcHJpY2UucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogcHJpY2UuY3VycmVuY3lDb2RlLFxuICAgICAgICAgICAgICAgICAgICBkZWxldGU6IGZhbHNlIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzLFxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpLFxuICAgICAgICAgICAgICAgIHZhcmlhbnQsXG4gICAgICAgICAgICAgICAgdmFyaWFudFRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcHJvZHVjdCBhbmQgdGhlIHZhbHVlIG9mIHRoZSBkZXRhaWxGb3JtLCB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUgcHJvZHVjdCB3aGljaFxuICAgICAqIGNhbiB0aGVuIGJlIHBlcnNpc3RlZCB0byB0aGUgQVBJLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VXBkYXRlZFZhcmlhbnQoXG4gICAgICAgIHZhcmlhbnQ6IE5vbk51bGxhYmxlPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnlbJ3Byb2R1Y3RWYXJpYW50J10+LFxuICAgICAgICB2YXJpYW50Rm9ybUdyb3VwOiB0eXBlb2YgdGhpcy5kZXRhaWxGb3JtLFxuICAgICAgICBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSxcbiAgICApOiBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0IHwgQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQcm9kdWN0ID0gY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSh7XG4gICAgICAgICAgICB0cmFuc2xhdGFibGU6IHZhcmlhbnQsXG4gICAgICAgICAgICB1cGRhdGVkRmllbGRzOiB2YXJpYW50Rm9ybUdyb3VwLnZhbHVlLFxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMuY3VzdG9tRmllbGRzLFxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgZGVmYXVsdFRyYW5zbGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHZhcmlhbnQubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udXBkYXRlZFByb2R1Y3QsXG4gICAgICAgICAgICBhc3NldElkczogdGhpcy5hc3NldENoYW5nZXMuYXNzZXRzPy5tYXAoYSA9PiBhLmlkKSxcbiAgICAgICAgICAgIGZlYXR1cmVkQXNzZXRJZDogdGhpcy5hc3NldENoYW5nZXMuZmVhdHVyZWRBc3NldD8uaWQsXG4gICAgICAgICAgICBmYWNldFZhbHVlSWRzOiB2YXJpYW50Rm9ybUdyb3VwLnZhbHVlLmZhY2V0VmFsdWVJZHMsXG4gICAgICAgIH0gYXMgVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCB8IENyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXQ7XG4gICAgfVxufVxuIiwiPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgPHZkci1hY3Rpb24tYmFyPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdCBbZ3Jvd109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF2YWlsYWJsZUxhbmd1YWdlcyQgfCBhc3luYyBhcyBhdmFpbGFibGVMYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWxhbmd1YWdlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzLmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNOZXckIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJsYW5ndWFnZUNvZGUkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobGFuZ3VhZ2VDb2RlQ2hhbmdlKT1cInNldExhbmd1YWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1sYW5ndWFnZS1zZWxlY3Rvcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHZkci1wcm9kdWN0LXZhcmlhbnQtcXVpY2stanVtcCBbcHJvZHVjdElkXT1cImVudGl0eT8ucHJvZHVjdC5pZFwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdmRyLWFiLWxlZnQ+XHJcblxyXG4gICAgICAgIDx2ZHItYWItcmlnaHQ+XHJcbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1pdGVtcyBsb2NhdGlvbklkPVwicHJvZHVjdC12YXJpYW50LWRldGFpbFwiPjwvdmRyLWFjdGlvbi1iYXItaXRlbXM+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwiWydVcGRhdGVDYXRhbG9nJywgJ1VwZGF0ZVByb2R1Y3QnXVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICAoZGV0YWlsRm9ybS5pbnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b2NrTGV2ZWxzRm9ybS5pbnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlc0Zvcm0uaW52YWxpZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGV0YWlsRm9ybS5wcmlzdGluZSAmJiBzdG9ja0xldmVsc0Zvcm0ucHJpc3RpbmUgJiYgcHJpY2VzRm9ybS5wcmlzdGluZSkpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWFzc2V0c0NoYW5nZWQoKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgJ2NvbW1vbi51cGRhdGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdmRyLWFiLXJpZ2h0PlxyXG4gICAgPC92ZHItYWN0aW9uLWJhcj5cclxuPC92ZHItcGFnZS1ibG9jaz5cclxuPGZvcm0gY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJkZXRhaWxGb3JtXCIgKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgdmFyaWFudFwiPlxyXG4gICAgPHZkci1wYWdlLWRldGFpbC1sYXlvdXQ+XHJcbiAgICAgICAgPHZkci1wYWdlLWRldGFpbC1zaWRlYmFyXHJcbiAgICAgICAgICAgID48dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjYXRhbG9nLnZpc2liaWxpdHknIHwgdHJhbnNsYXRlXCIgZm9yPVwidmlzaWJpbGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItdG9nZ2xlLXdyYXBwZXIgKnZkcklmUGVybWlzc2lvbnM9XCJbJ1VwZGF0ZUNhdGFsb2cnLCAnVXBkYXRlUHJvZHVjdCddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsclRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRldGFpbEZvcm0uZ2V0KFsnZW5hYmxlZCddKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnY29tbW9uLmVuYWJsZWQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Nsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCAqbmdJZj1cInZhcmlhbnQub3B0aW9ucy5sZW5ndGhcIiBbdGl0bGVdPVwiJ2NhdGFsb2cucHJvZHVjdC1vcHRpb25zJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWNoaXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB2YXJpYW50Lm9wdGlvbnMgfCBzb3J0IDogJ2dyb3VwSWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yRnJvbV09XCJvcHRpb25Hcm91cENvZGUob3B0aW9uLmdyb3VwSWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ludmVydF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbkdyb3VwQ29kZShvcHRpb24uZ3JvdXBJZCkgfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25OYW1lKG9wdGlvbikgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1jaGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLi4vLi4vJywgJ29wdGlvbnMnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsIG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqdmRySWZQZXJtaXNzaW9ucz1cInVwZGF0ZVBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBlbmNpbFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLmVkaXQtb3B0aW9ucycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInY2F0YWxvZy5mYWNldHMnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFjZXRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mYWNldC12YWx1ZS1jaGlwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYWNldFZhbHVlIG9mIGZhY2V0VmFsdWVzJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZhY2V0VmFsdWVdPVwiZmFjZXRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVGYWNldFZhbHVlKGZhY2V0VmFsdWUuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC92ZHItZmFjZXQtdmFsdWUtY2hpcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsIG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqdmRySWZQZXJtaXNzaW9ucz1cInVwZGF0ZVBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZhY2V0VmFsdWUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuYWRkLWZhY2V0cycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG5cclxuICAgICAgICAgICAgPHZkci1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPHZkci1wYWdlLWVudGl0eS1pbmZvICpuZ0lmPVwiZW50aXR5JCB8IGFzeW5jIGFzIGVudGl0eVwiIFtlbnRpdHldPVwiZW50aXR5XCIgLz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG5cclxuICAgICAgICA8dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGhpZGRlbiB4LWRhdGE9XCJwcmV2ZW50cyBlbnRlciBrZXkgZnJvbSB0cmlnZ2VyaW5nIG90aGVyIGJ1dHRvbnNcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPHZkci1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiIGZvcj1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIShbJ1VwZGF0ZUNhdGFsb2cnLCAnVXBkYXRlUHJvZHVjdCddIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY2F0YWxvZy5za3UnIHwgdHJhbnNsYXRlXCIgZm9yPVwic2t1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJza3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXRhYmJlZC1jdXN0b20tZmllbGRzXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZT1cIlByb2R1Y3RWYXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJkZXRhaWxGb3JtLmdldCgnY3VzdG9tRmllbGRzJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0XHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbklkPVwicHJvZHVjdC12YXJpYW50LWRldGFpbFwiXHJcbiAgICAgICAgICAgICAgICBbZW50aXR5JF09XCJlbnRpdHkkXCJcclxuICAgICAgICAgICAgICAgIFtkZXRhaWxGb3JtXT1cImRldGFpbEZvcm1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidjYXRhbG9nLmFzc2V0cycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItYXNzZXRzXHJcbiAgICAgICAgICAgICAgICAgICAgW2Fzc2V0c109XCJhc3NldENoYW5nZXMuYXNzZXRzIHx8IHZhcmlhbnQuYXNzZXRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmVhdHVyZWRBc3NldF09XCJhc3NldENoYW5nZXMuZmVhdHVyZWRBc3NldCB8fCB2YXJpYW50LmZlYXR1cmVkQXNzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt1cGRhdGVQZXJtaXNzaW9uc109XCJ1cGRhdGVQZXJtaXNzaW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhc3NldENoYW5nZXMgPSAkZXZlbnRcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInY2F0YWxvZy5wcmljZS1hbmQtdGF4JyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NhdGFsb2cudGF4LWNhdGVnb3J5JyB8IHRyYW5zbGF0ZVwiIGZvcj1cInRheENhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cInRheENhdGVnb3J5XCIgZm9ybUNvbnRyb2xOYW1lPVwidGF4Q2F0ZWdvcnlJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YXhDYXRlZ29yeSBvZiB0YXhDYXRlZ29yaWVzJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGF4Q2F0ZWdvcnkuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRheENhdGVnb3J5Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkIHByaWNlc1wiICpuZ0Zvcj1cImxldCBwcmljZSBvZiBwcmljZXNGb3JtLmNvbnRyb2xzXCIgW2Zvcm1Hcm91cF09XCJwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2NhdGFsb2cucHJpY2UnIHwgdHJhbnNsYXRlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8IHByaWNlc0Zvcm0ubGVuZ3RoID8gJyAoJyArIHByaWNlLnZhbHVlLmN1cnJlbmN5Q29kZSArICcpJyA6ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPCBwcmljZXNGb3JtLmxlbmd0aCAmJiBwcmljZS52YWx1ZS5jdXJyZW5jeUNvZGUgPT09IGNoYW5uZWxEZWZhdWx0Q3VycmVuY3lDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoJ2NhdGFsb2cuZGVmYXVsdC1jdXJyZW5jeScgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXdyYXBwZXJcIiBbY2xhc3MucGVuZGluZy1kZWxldGlvbl09XCJwcmljZS52YWx1ZS5kZWxldGUgPT09IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwicHJpY2UudmFsdWUuY3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKSB8fCBwcmljZS52YWx1ZS5kZWxldGUgPT09IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiMSA8IHByaWNlc0Zvcm0uY29udHJvbHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1zbWFsbCBkZWxldGUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByaWNlLnZhbHVlLmN1cnJlbmN5Q29kZSA9PT0gY2hhbm5lbERlZmF1bHRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGVsZXRlUHJpY2UocHJpY2UuZ2V0KCdkZWxldGUnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidHJhc2hcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci12YXJpYW50LXByaWNlLWRldGFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJpY2VdPVwicHJpY2UudmFsdWUucHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3lDb2RlXT1cInByaWNlLnZhbHVlLmN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcmljZUluY2x1ZGVzVGF4XT1cImNoYW5uZWxQcmljZUluY2x1ZGVzVGF4JCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RheENhdGVnb3J5SWRdPVwiZGV0YWlsRm9ybS5nZXQoJ3RheENhdGVnb3J5SWQnKSEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1bnVzZWRDdXJyZW5jeUNvZGVzJCB8IGFzeW5jIGFzIHVudXNlZEN1cnJlbmN5Q29kZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidW51c2VkQ3VycmVuY3lDb2Rlcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gbXQtMlwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY2F0YWxvZy5hZGQtcHJpY2UtaW4tYW5vdGhlci1jdXJyZW5jeScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJlbGxpcHNpcy12ZXJ0aWNhbFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3VycmVuY3lDb2RlIG9mIHVudXNlZEN1cnJlbmN5Q29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUHJpY2VJbkN1cnJlbmN5KGN1cnJlbmN5Q29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVuY3lDb2RlIHwgbG9jYWxlQ3VycmVuY3lOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidjYXRhbG9nLnN0b2NrLWxldmVscycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwidHJhY2staW52ZW50b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjYXRhbG9nLnRyYWNrLWludmVudG9yeScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInY2F0YWxvZy50cmFjay1pbnZlbnRvcnktdG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYWNrLWludmVudG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0cmFja0ludmVudG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9ucyB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiR2xvYmFsRmxhZy5UUlVFXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cudHJhY2staW52ZW50b3J5LXRydWUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIkdsb2JhbEZsYWcuRkFMU0VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY2F0YWxvZy50cmFjay1pbnZlbnRvcnktZmFsc2UnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIkdsb2JhbEZsYWcuSU5IRVJJVFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLnRyYWNrLWludmVudG9yeS1pbmhlcml0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInY2F0YWxvZy5vdXQtb2Ytc3RvY2stdGhyZXNob2xkJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidjYXRhbG9nLm91dC1vZi1zdG9jay10aHJlc2hvbGQtdG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm91dE9mU3RvY2tUaHJlc2hvbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsRm9ybS5nZXQoJ3VzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGQnKT8udmFsdWUgIT09IGZhbHNlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZW50b3J5SXNOb3RUcmFja2VkKGRldGFpbEZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZkckRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbikgfHwgaW52ZW50b3J5SXNOb3RUcmFja2VkKGRldGFpbEZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgJ2NhdGFsb2cudXNlLWdsb2JhbC12YWx1ZScgfCB0cmFuc2xhdGUgfX0gKHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk8L2xhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0taXRlbT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncmlkIHN0b2NrLWxldmVsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0b2NrTGV2ZWwgb2Ygc3RvY2tMZXZlbHNGb3JtLmNvbnRyb2xzXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInN0b2NrTGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9ja0xldmVsLmdldCgnc3RvY2tMb2NhdGlvbk5hbWUnKT8udmFsdWUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzogJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2NhdGFsb2cuc3RvY2stb24taGFuZCcgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ3N0b2NrT25IYW5kXycgKyBzdG9ja0xldmVsLmdldCgnc3RvY2tMb2NhdGlvbklkJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidzdG9ja09uSGFuZF8nICsgc3RvY2tMZXZlbC5nZXQoJ3N0b2NrTG9jYXRpb25JZCcpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0b2NrT25IYW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvY2tMZXZlbC5nZXQoJ3N0b2NrTG9jYXRpb25OYW1lJyk/LnZhbHVlICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6ICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjYXRhbG9nLnN0b2NrLWFsbG9jYXRlZCcgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9ja0xldmVsLmdldCgnc3RvY2tBbGxvY2F0ZWQnKT8udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1bnVzZWRTdG9ja0xvY2F0aW9uJCB8IGFzeW5jIGFzIHVudXNlZFN0b2NrTG9jYXRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVudXNlZFN0b2NrTG9jYXRpb25zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBtdC0yXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLmFkZC1zdG9jay1sb2NhdGlvbicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJlbGxpcHNpcy12ZXJ0aWNhbFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RvY2tMb2NhdGlvbiBvZiB1bnVzZWRTdG9ja0xvY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRTdG9ja0xvY2F0aW9uKHN0b2NrTG9jYXRpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cIm1hcC1tYXJrZXJcIj48L2Nsci1pY29uPiB7eyBzdG9ja0xvY2F0aW9uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPC92ZHItcGFnZS1ibG9jaz5cclxuICAgIDwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuPC9mb3JtPlxyXG4iXX0=
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvcHJvZHVjdC12YXJpYW50LWRldGFpbC9wcm9kdWN0LXZhcmlhbnQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtZGV0YWlsL3Byb2R1Y3QtdmFyaWFudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUdILHlCQUF5QixFQUd6QixlQUFlLEVBR2YsVUFBVSxFQUtWLFVBQVUsRUFFVixvQ0FBb0MsRUFDcEMsd0JBQXdCLEdBRTNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxRQUFRLEVBQ1IsV0FBVyxFQUNYLElBQUksRUFDSixTQUFTLEVBQ1QsV0FBVyxFQUNYLElBQUksRUFDSixHQUFHLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7O0FBNEIvRixNQUFNLE9BQU8sNkJBQ1QsU0FBUSx3QkFBa0Y7SUFnRDFGLFlBQ1ks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QTBCO1FBRTFCLE1BQU0sY0FBYyxHQUFHLHlCQUF5QixDQUFDO1lBQzdDLFlBQVksRUFBRSxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ3JDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3BDLFlBQVk7WUFDWixrQkFBa0IsRUFBRTtnQkFDaEIsWUFBWTtnQkFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQzNCO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNILEdBQUcsY0FBYztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwRCxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDbkQsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxhQUFhO1NBQ0csQ0FBQztJQUMvRCxDQUFDOzhHQWpWUSw2QkFBNkI7a0dBQTdCLDZCQUE2Qix5RkNsRTFDLHk4aEJBdVVBOzsyRkRyUWEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNJLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgQXNzZXQsXHJcbiAgICBDcmVhdGVQcm9kdWN0VmFyaWFudElucHV0LFxyXG4gICAgY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSxcclxuICAgIEN1cnJlbmN5Q29kZSxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgZmluZFRyYW5zbGF0aW9uLFxyXG4gICAgR2V0UHJvZHVjdFZhcmlhbnREZXRhaWxEb2N1bWVudCxcclxuICAgIEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnksXHJcbiAgICBHbG9iYWxGbGFnLFxyXG4gICAgSXRlbU9mLFxyXG4gICAgTGFuZ3VhZ2VDb2RlLFxyXG4gICAgTW9kYWxTZXJ2aWNlLFxyXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIFBlcm1pc3Npb24sXHJcbiAgICBQcm9kdWN0T3B0aW9uRnJhZ21lbnQsXHJcbiAgICBQcm9kdWN0VmFyaWFudFVwZGF0ZU11dGF0aW9uRG9jdW1lbnQsXHJcbiAgICBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQsXHJcbiAgICBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0LFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9waWNrJztcclxuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi91bmlxdWUnO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBjb25jYXQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gICAgbWFwLFxyXG4gICAgbWVyZ2VNYXAsXHJcbiAgICBzaGFyZVJlcGxheSxcclxuICAgIHNraXAsXHJcbiAgICBzd2l0Y2hNYXAsXHJcbiAgICBzd2l0Y2hNYXBUbyxcclxuICAgIHRha2UsXHJcbiAgICB0YXAsXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9wcm9kdWN0LWRldGFpbC9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwbHlGYWNldERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcGx5LWZhY2V0LWRpYWxvZy9hcHBseS1mYWNldC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBTZWxlY3RlZEFzc2V0cyB7XHJcbiAgICBhc3NldHM/OiBBc3NldFtdO1xyXG4gICAgZmVhdHVyZWRBc3NldD86IEFzc2V0O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVmFyaWFudEZvcm1WYWx1ZSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcclxuICAgIHNrdTogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgdGF4Q2F0ZWdvcnlJZDogc3RyaW5nO1xyXG4gICAgc3RvY2tPbkhhbmQ6IG51bWJlcjtcclxuICAgIHVzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGQ6IGJvb2xlYW47XHJcbiAgICBvdXRPZlN0b2NrVGhyZXNob2xkOiBudW1iZXI7XHJcbiAgICB0cmFja0ludmVudG9yeTogR2xvYmFsRmxhZztcclxuICAgIGZhY2V0VmFsdWVJZHM6IHN0cmluZ1tdW107XHJcbiAgICBjdXN0b21GaWVsZHM/OiBhbnk7XHJcbn1cclxudHlwZSBUID0gTm9uTnVsbGFibGU8R2V0UHJvZHVjdFZhcmlhbnREZXRhaWxRdWVyeVsncHJvZHVjdFZhcmlhbnQnXT47XHJcbnR5cGUgVDEgPSBUWydzdG9ja0xldmVscyddO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtdmFyaWFudC1kZXRhaWwnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtdmFyaWFudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC12YXJpYW50LWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudERldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8dHlwZW9mIEdldFByb2R1Y3RWYXJpYW50RGV0YWlsRG9jdW1lbnQsICdwcm9kdWN0VmFyaWFudCc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIHB1YmxpYyByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9ucyA9IFtQZXJtaXNzaW9uLlVwZGF0ZUNhdGFsb2csIFBlcm1pc3Npb24uVXBkYXRlUHJvZHVjdF07XHJcbiAgICByZWFkb25seSBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdQcm9kdWN0VmFyaWFudCcpO1xyXG4gICAgcmVhZG9ubHkgY3VzdG9tT3B0aW9uRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnUHJvZHVjdE9wdGlvbicpO1xyXG4gICAgc3RvY2tMZXZlbHMkOiBPYnNlcnZhYmxlPE5vbk51bGxhYmxlPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnlbJ3Byb2R1Y3RWYXJpYW50J10+WydzdG9ja0xldmVscyddPjtcclxuICAgIGRldGFpbEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwPFZhcmlhbnRGb3JtVmFsdWU+KHtcclxuICAgICAgICBpZDogJycsXHJcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgc2t1OiAnJyxcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICB0YXhDYXRlZ29yeUlkOiAnJyxcclxuICAgICAgICBzdG9ja09uSGFuZDogMCxcclxuICAgICAgICB1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkOiB0cnVlLFxyXG4gICAgICAgIG91dE9mU3RvY2tUaHJlc2hvbGQ6IDAsXHJcbiAgICAgICAgdHJhY2tJbnZlbnRvcnk6IEdsb2JhbEZsYWcuVFJVRSxcclxuICAgICAgICBmYWNldFZhbHVlSWRzOiBbXSxcclxuICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzLnJlZHVjZSgoaGFzaCwgZmllbGQpID0+ICh7IC4uLmhhc2gsIFtmaWVsZC5uYW1lXTogJycgfSksIHt9KSxcclxuICAgICAgICApLFxyXG4gICAgfSk7XHJcbiAgICBzdG9ja0xldmVsc0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmFycmF5PFxyXG4gICAgICAgIEZvcm1Hcm91cDx7XHJcbiAgICAgICAgICAgIHN0b2NrTG9jYXRpb25JZDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgICAgICAgICAgIHN0b2NrTG9jYXRpb25OYW1lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICAgICAgICAgICAgc3RvY2tPbkhhbmQ6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xyXG4gICAgICAgICAgICBzdG9ja0FsbG9jYXRlZDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XHJcbiAgICAgICAgfT5cclxuICAgID4oW10pO1xyXG4gICAgcHJpY2VzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXk8XHJcbiAgICAgICAgRm9ybUdyb3VwPHtcclxuICAgICAgICAgICAgcHJpY2U6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xyXG4gICAgICAgICAgICBjdXJyZW5jeUNvZGU6IEZvcm1Db250cm9sPEN1cnJlbmN5Q29kZSB8IG51bGw+O1xyXG4gICAgICAgICAgICBkZWxldGU6IEZvcm1Db250cm9sPGJvb2xlYW4gfCBudWxsPjtcclxuICAgICAgICB9PlxyXG4gICAgPihbXSk7XHJcbiAgICBhc3NldENoYW5nZXM6IFNlbGVjdGVkQXNzZXRzID0ge307XHJcbiAgICB0YXhDYXRlZ29yaWVzJDogT2JzZXJ2YWJsZTxBcnJheTxJdGVtT2Y8R2V0UHJvZHVjdFZhcmlhbnREZXRhaWxRdWVyeSwgJ3RheENhdGVnb3JpZXMnPj4+O1xyXG4gICAgdW51c2VkU3RvY2tMb2NhdGlvbiQ6IE9ic2VydmFibGU8QXJyYXk8SXRlbU9mPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnksICdzdG9ja0xvY2F0aW9ucyc+Pj47XHJcbiAgICB1bnVzZWRDdXJyZW5jeUNvZGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XHJcbiAgICBjaGFubmVsUHJpY2VJbmNsdWRlc1RheCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICByZWFkb25seSBHbG9iYWxGbGFnID0gR2xvYmFsRmxhZztcclxuICAgIGdsb2JhbFRyYWNrSW52ZW50b3J5OiBib29sZWFuO1xyXG4gICAgZ2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZDogbnVtYmVyO1xyXG4gICAgZmFjZXRWYWx1ZXMkOiBPYnNlcnZhYmxlPE5vbk51bGxhYmxlPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnlbJ3Byb2R1Y3RWYXJpYW50J10+WydmYWNldFZhbHVlcyddPjtcclxuICAgIGNoYW5uZWxEZWZhdWx0Q3VycmVuY3lDb2RlOiBDdXJyZW5jeUNvZGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcm9kdWN0RGV0YWlsU2VydmljZTogUHJvZHVjdERldGFpbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5zZXR0aW5ncy5nZXRHbG9iYWxTZXR0aW5ncygnY2FjaGUtZmlyc3QnKS5zaW5nbGUkLnN1YnNjcmliZSgoeyBnbG9iYWxTZXR0aW5ncyB9KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVHJhY2tJbnZlbnRvcnkgPSBnbG9iYWxTZXR0aW5ncy50cmFja0ludmVudG9yeTtcclxuICAgICAgICAgICAgdGhpcy5nbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkID0gZ2xvYmFsU2V0dGluZ3Mub3V0T2ZTdG9ja1RocmVzaG9sZDtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRheENhdGVnb3JpZXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gZGF0YS50YXhDYXRlZ29yaWVzLml0ZW1zKSk7XHJcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlQ3VycmVuY3lDb2RlcyQgPSB0aGlzLnJlc3VsdCQucGlwZShcclxuICAgICAgICAgICAgdGFwKGRhdGEgPT4gKHRoaXMuY2hhbm5lbERlZmF1bHRDdXJyZW5jeUNvZGUgPSBkYXRhLmFjdGl2ZUNoYW5uZWwuZGVmYXVsdEN1cnJlbmN5Q29kZSkpLFxyXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiBkYXRhLmFjdGl2ZUNoYW5uZWwuYXZhaWxhYmxlQ3VycmVuY3lDb2RlcyksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVudXNlZEN1cnJlbmN5Q29kZXMkID0gY29tYmluZUxhdGVzdCh0aGlzLnByaWNlc0Zvcm0udmFsdWVDaGFuZ2VzLCBhdmFpbGFibGVDdXJyZW5jeUNvZGVzJCkucGlwZShcclxuICAgICAgICAgICAgbWFwKChbcHJpY2VzLCBjdXJyZW5jeUNvZGVzXSkgPT5cclxuICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZXMuZmlsdGVyKGNvZGUgPT4gIXByaWNlcy5tYXAocCA9PiBwLmN1cnJlbmN5Q29kZSkuaW5jbHVkZXMoY29kZSkpLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgc3RvY2tMb2NhdGlvbnMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gZGF0YS5zdG9ja0xvY2F0aW9ucy5pdGVtcykpO1xyXG4gICAgICAgIHRoaXMudW51c2VkU3RvY2tMb2NhdGlvbiQgPSBjb21iaW5lTGF0ZXN0KHRoaXMuZW50aXR5JCwgc3RvY2tMb2NhdGlvbnMkKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKFtlbnRpdHksIHN0b2NrTG9jYXRpb25zXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlZElkcyA9IGVudGl0eS5zdG9ja0xldmVscy5tYXAobCA9PiBsLnN0b2NrTG9jYXRpb24uaWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b2NrTG9jYXRpb25zLmZpbHRlcihsID0+ICF1c2VkSWRzLmluY2x1ZGVzKGwuaWQpKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmNoYW5uZWxQcmljZUluY2x1ZGVzVGF4JCA9IHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3NcclxuICAgICAgICAgICAgLmdldEFjdGl2ZUNoYW5uZWwoJ2NhY2hlLWZpcnN0JylcclxuICAgICAgICAgICAgLnJlZmV0Y2hPbkNoYW5uZWxDaGFuZ2UoKVxyXG4gICAgICAgICAgICAubWFwU3RyZWFtKGRhdGEgPT4gZGF0YS5hY3RpdmVDaGFubmVsLnByaWNlc0luY2x1ZGVUYXgpXHJcbiAgICAgICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcclxuICAgICAgICB0aGlzLnN0b2NrTGV2ZWxzJCA9IHRoaXMuZW50aXR5JC5waXBlKG1hcChlbnRpdHkgPT4gZW50aXR5Py5zdG9ja0xldmVscyA/PyBbXSkpO1xyXG4gICAgICAgIGNvbnN0IGZhY2V0VmFsdWVzJCA9IHRoaXMuZW50aXR5JC5waXBlKG1hcCh2YXJpYW50ID0+IHZhcmlhbnQuZmFjZXRWYWx1ZXMgPz8gW10pKTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgIGNvbnN0IGZvcm1GYWNldFZhbHVlSWRDaGFuZ2VzJCA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2ZhY2V0VmFsdWVJZHMnKSEudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIHNraXAoMSksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcChpZHMgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZmFjZXRcclxuICAgICAgICAgICAgICAgICAgICAuZ2V0RmFjZXRWYWx1ZXMoeyBmaWx0ZXI6IHsgaWQ6IHsgaW46IGlkcyB9IH0gfSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKCh7IGZhY2V0VmFsdWVzIH0pID0+IGZhY2V0VmFsdWVzLml0ZW1zKSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZhY2V0VmFsdWVzJCA9IGNvbmNhdChcclxuICAgICAgICAgICAgZmFjZXRWYWx1ZXMkLnBpcGUodGFrZSgxKSksXHJcbiAgICAgICAgICAgIGZhY2V0VmFsdWVzJC5waXBlKHN3aXRjaE1hcFRvKGZvcm1GYWNldFZhbHVlSWRDaGFuZ2VzJCkpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUHJpY2VJbkN1cnJlbmN5KGN1cnJlbmN5Q29kZTogQ3VycmVuY3lDb2RlKSB7XHJcbiAgICAgICAgdGhpcy5wcmljZXNGb3JtLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IDAsXHJcbiAgICAgICAgICAgICAgICBkZWxldGU6IGZhbHNlIGFzIGJvb2xlYW4sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRGVsZXRlUHJpY2UoZGVsZXRlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgZGVsZXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUoIWRlbGV0ZUZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgICBkZWxldGVGb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFN0b2NrTG9jYXRpb24oc3RvY2tMb2NhdGlvbjogSXRlbU9mPEdldFByb2R1Y3RWYXJpYW50RGV0YWlsUXVlcnksICdzdG9ja0xvY2F0aW9ucyc+KSB7XHJcbiAgICAgICAgdGhpcy5zdG9ja0xldmVsc0Zvcm0ucHVzaChcclxuICAgICAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uSWQ6IHN0b2NrTG9jYXRpb24uaWQsXHJcbiAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uTmFtZTogc3RvY2tMb2NhdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgc3RvY2tPbkhhbmQ6IDAsXHJcbiAgICAgICAgICAgICAgICBzdG9ja0FsbG9jYXRlZDogMCxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCkge1xyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5lbnRpdHkkLCB0aGlzLmxhbmd1YWdlQ29kZSQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChbdmFyaWFudCwgbGFuZ3VhZ2VDb2RlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gcGljayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRVcGRhdGVkVmFyaWFudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmFibGVkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NrdScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGF4Q2F0ZWdvcnlJZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NldElkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2tJbnZlbnRvcnknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dE9mU3RvY2tUaHJlc2hvbGQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbUZpZWxkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0b2NrTGV2ZWxzRm9ybS5kaXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5zdG9ja0xldmVscyA9IHRoaXMuc3RvY2tMZXZlbHNGb3JtLmNvbnRyb2xzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGNvbnRyb2wgPT4gY29udHJvbC5kaXJ0eSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoY29udHJvbCA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvY2tMb2NhdGlvbklkOiBjb250cm9sLnZhbHVlLnN0b2NrTG9jYXRpb25JZCEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9ja09uSGFuZDogY29udHJvbC52YWx1ZS5zdG9ja09uSGFuZCEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByaWNlc0Zvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQucHJpY2VzID0gdGhpcy5wcmljZXNGb3JtLmNvbnRyb2xzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGNvbnRyb2wgPT4gY29udHJvbC5kaXJ0eSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoY29udHJvbCA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGNvbnRyb2wudmFsdWUucHJpY2UhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiBjb250cm9sLnZhbHVlLmN1cnJlbmN5Q29kZSEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlOiBjb250cm9sLnZhbHVlLmRlbGV0ZSA9PT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UubXV0YXRlKFByb2R1Y3RWYXJpYW50VXBkYXRlTXV0YXRpb25Eb2N1bWVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogW2lucHV0XSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvY2tMZXZlbHNGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmljZXNGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NldENoYW5nZXMgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUHJvZHVjdFZhcmlhbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdQcm9kdWN0VmFyaWFudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzc2V0c0NoYW5nZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhT2JqZWN0LnZhbHVlcyh0aGlzLmFzc2V0Q2hhbmdlcykubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGludmVudG9yeUlzTm90VHJhY2tlZChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCB0cmFja0ludmVudG9yeSA9IGZvcm1Hcm91cC5nZXQoJ3RyYWNrSW52ZW50b3J5Jyk/LnZhbHVlO1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRyYWNrSW52ZW50b3J5ID09PSBHbG9iYWxGbGFnLkZBTFNFIHx8XHJcbiAgICAgICAgICAgICh0cmFja0ludmVudG9yeSA9PT0gR2xvYmFsRmxhZy5JTkhFUklUICYmIHRoaXMuZ2xvYmFsVHJhY2tJbnZlbnRvcnkgPT09IGZhbHNlKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb3B0aW9uR3JvdXBDb2RlKG9wdGlvbkdyb3VwSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmVudGl0eT8ucHJvZHVjdC5vcHRpb25Hcm91cHMuZmluZChnID0+IGcuaWQgPT09IG9wdGlvbkdyb3VwSWQpO1xyXG4gICAgICAgIHJldHVybiBncm91cD8uY29kZTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25OYW1lKG9wdGlvbjogUHJvZHVjdE9wdGlvbkZyYWdtZW50KSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPVxyXG4gICAgICAgICAgICBvcHRpb24udHJhbnNsYXRpb25zLmZpbmQodCA9PiB0Lmxhbmd1YWdlQ29kZSA9PT0gdGhpcy5sYW5ndWFnZUNvZGUpID8/IG9wdGlvbi50cmFuc2xhdGlvbnNbMF07XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRmFjZXRWYWx1ZShmYWNldFZhbHVlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y3RHcm91cCA9IHRoaXMuZGV0YWlsRm9ybTtcclxuICAgICAgICBjb25zdCBjdXJyZW50RmFjZXRWYWx1ZUlkcyA9IHByb2R1Y3RHcm91cC52YWx1ZS5mYWNldFZhbHVlSWRzID8/IFtdO1xyXG4gICAgICAgIHByb2R1Y3RHcm91cC5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgZmFjZXRWYWx1ZUlkczogY3VycmVudEZhY2V0VmFsdWVJZHMuZmlsdGVyKGlkID0+IGlkICE9PSBmYWNldFZhbHVlSWQpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHByb2R1Y3RHcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdEZhY2V0VmFsdWUoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5RmFjZXRWYWx1ZU1vZGFsKCkuc3Vic2NyaWJlKGZhY2V0VmFsdWVJZHMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmFjZXRWYWx1ZUlkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEZhY2V0VmFsdWVJZHMgPSB0aGlzLmRldGFpbEZvcm0udmFsdWUuZmFjZXRWYWx1ZUlkcyA/PyBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgICAgICAgICBmYWNldFZhbHVlSWRzOiB1bmlxdWUoWy4uLmN1cnJlbnRGYWNldFZhbHVlSWRzLCAuLi5mYWNldFZhbHVlSWRzXSksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkaXNwbGF5RmFjZXRWYWx1ZU1vZGFsKCk6IE9ic2VydmFibGU8c3RyaW5nW10gfCB1bmRlZmluZWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoQXBwbHlGYWNldERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShtYXAoZmFjZXRWYWx1ZXMgPT4gZmFjZXRWYWx1ZXMgJiYgZmFjZXRWYWx1ZXMubWFwKHYgPT4gdi5pZCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhcclxuICAgICAgICB2YXJpYW50OiBOb25OdWxsYWJsZTxHZXRQcm9kdWN0VmFyaWFudERldGFpbFF1ZXJ5Wydwcm9kdWN0VmFyaWFudCddPixcclxuICAgICAgICBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSxcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHZhcmlhbnRUcmFuc2xhdGlvbiA9IGZpbmRUcmFuc2xhdGlvbih2YXJpYW50LCBsYW5ndWFnZUNvZGUpO1xyXG4gICAgICAgIGNvbnN0IGZhY2V0VmFsdWVJZHMgPSB2YXJpYW50LmZhY2V0VmFsdWVzLm1hcChmdiA9PiBmdi5pZCk7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBpZDogdmFyaWFudC5pZCxcclxuICAgICAgICAgICAgZW5hYmxlZDogdmFyaWFudC5lbmFibGVkLFxyXG4gICAgICAgICAgICBza3U6IHZhcmlhbnQuc2t1LFxyXG4gICAgICAgICAgICBuYW1lOiB2YXJpYW50VHJhbnNsYXRpb24gPyB2YXJpYW50VHJhbnNsYXRpb24ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICB0YXhDYXRlZ29yeUlkOiB2YXJpYW50LnRheENhdGVnb3J5LmlkLFxyXG4gICAgICAgICAgICBzdG9ja09uSGFuZDogdmFyaWFudC5zdG9ja0xldmVsc1swXT8uc3RvY2tPbkhhbmQgPz8gMCxcclxuICAgICAgICAgICAgdXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZDogdmFyaWFudC51c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkLFxyXG4gICAgICAgICAgICBvdXRPZlN0b2NrVGhyZXNob2xkOiB2YXJpYW50Lm91dE9mU3RvY2tUaHJlc2hvbGQsXHJcbiAgICAgICAgICAgIHRyYWNrSW52ZW50b3J5OiB2YXJpYW50LnRyYWNrSW52ZW50b3J5LFxyXG4gICAgICAgICAgICBmYWNldFZhbHVlSWRzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc3RvY2tMZXZlbHNGb3JtLmNsZWFyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBzdG9ja0xldmVsIG9mIHZhcmlhbnQuc3RvY2tMZXZlbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9ja0xldmVsc0Zvcm0ucHVzaChcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrTG9jYXRpb25JZDogc3RvY2tMZXZlbC5zdG9ja0xvY2F0aW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrTG9jYXRpb25OYW1lOiBzdG9ja0xldmVsLnN0b2NrTG9jYXRpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja09uSGFuZDogc3RvY2tMZXZlbC5zdG9ja09uSGFuZCxcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja0FsbG9jYXRlZDogc3RvY2tMZXZlbC5zdG9ja0FsbG9jYXRlZCxcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByaWNlc0Zvcm0uY2xlYXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHByaWNlIG9mIHZhcmlhbnQucHJpY2VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJpY2VzRm9ybS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHByaWNlLnByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogcHJpY2UuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZTogZmFsc2UgYXMgYm9vbGVhbixcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKSxcclxuICAgICAgICAgICAgICAgIHZhcmlhbnQsXHJcbiAgICAgICAgICAgICAgICB2YXJpYW50VHJhbnNsYXRpb24sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2l2ZW4gYSBwcm9kdWN0IGFuZCB0aGUgdmFsdWUgb2YgdGhlIGRldGFpbEZvcm0sIHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gdXBkYXRlZCBjb3B5IG9mIHRoZSBwcm9kdWN0IHdoaWNoXHJcbiAgICAgKiBjYW4gdGhlbiBiZSBwZXJzaXN0ZWQgdG8gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRVcGRhdGVkVmFyaWFudChcclxuICAgICAgICB2YXJpYW50OiBOb25OdWxsYWJsZTxHZXRQcm9kdWN0VmFyaWFudERldGFpbFF1ZXJ5Wydwcm9kdWN0VmFyaWFudCddPixcclxuICAgICAgICB2YXJpYW50Rm9ybUdyb3VwOiB0eXBlb2YgdGhpcy5kZXRhaWxGb3JtLFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKTogVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCB8IENyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXQge1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQcm9kdWN0ID0gY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSh7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0YWJsZTogdmFyaWFudCxcclxuICAgICAgICAgICAgdXBkYXRlZEZpZWxkczogdmFyaWFudEZvcm1Hcm91cC52YWx1ZSxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRUcmFuc2xhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdmFyaWFudC5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnVwZGF0ZWRQcm9kdWN0LFxyXG4gICAgICAgICAgICBhc3NldElkczogdGhpcy5hc3NldENoYW5nZXMuYXNzZXRzPy5tYXAoYSA9PiBhLmlkKSxcclxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldElkOiB0aGlzLmFzc2V0Q2hhbmdlcy5mZWF0dXJlZEFzc2V0Py5pZCxcclxuICAgICAgICAgICAgZmFjZXRWYWx1ZUlkczogdmFyaWFudEZvcm1Hcm91cC52YWx1ZS5mYWNldFZhbHVlSWRzLFxyXG4gICAgICAgICAgICB0YXhDYXRlZ29yeUlkOiB2YXJpYW50Rm9ybUdyb3VwLnZhbHVlLnRheENhdGVnb3J5SWQsXHJcbiAgICAgICAgfSBhcyBVcGRhdGVQcm9kdWN0VmFyaWFudElucHV0IHwgQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dDtcclxuICAgIH1cclxufVxyXG4iLCI8dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICA8dmRyLWFjdGlvbi1iYXI+XHJcbiAgICAgICAgPHZkci1hYi1sZWZ0IFtncm93XT1cInRydWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzJCB8IGFzeW5jIGFzIGF2YWlsYWJsZUxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItbGFuZ3VhZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhdmFpbGFibGVMYW5ndWFnZXMubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05ldyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVMYW5ndWFnZUNvZGVzXT1cImF2YWlsYWJsZUxhbmd1YWdlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50TGFuZ3VhZ2VDb2RlXT1cImxhbmd1YWdlQ29kZSQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWxhbmd1YWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXByb2R1Y3QtdmFyaWFudC1xdWljay1qdW1wIFtwcm9kdWN0SWRdPVwiZW50aXR5Py5wcm9kdWN0LmlkXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC92ZHItYWItbGVmdD5cclxuXHJcbiAgICAgICAgPHZkci1hYi1yaWdodD5cclxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWl0ZW1zIGxvY2F0aW9uSWQ9XCJwcm9kdWN0LXZhcmlhbnQtZGV0YWlsXCI+PC92ZHItYWN0aW9uLWJhci1pdGVtcz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKnZkcklmUGVybWlzc2lvbnM9XCJbJ1VwZGF0ZUNhdGFsb2cnLCAnVXBkYXRlUHJvZHVjdCddXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChkZXRhaWxGb3JtLmludmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvY2tMZXZlbHNGb3JtLmludmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VzRm9ybS5pbnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZXRhaWxGb3JtLnByaXN0aW5lICYmIHN0b2NrTGV2ZWxzRm9ybS5wcmlzdGluZSAmJiBwcmljZXNGb3JtLnByaXN0aW5lKSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAhYXNzZXRzQ2hhbmdlZCgpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyAnY29tbW9uLnVwZGF0ZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XHJcbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG48Zm9ybSBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImRldGFpbEZvcm1cIiAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyB2YXJpYW50XCI+XHJcbiAgICA8dmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuICAgICAgICA8dmRyLXBhZ2UtZGV0YWlsLXNpZGViYXJcclxuICAgICAgICAgICAgPjx2ZHItY2FyZD5cclxuICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NhdGFsb2cudmlzaWJpbGl0eScgfCB0cmFuc2xhdGVcIiBmb3I9XCJ2aXNpYmlsaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci10b2dnbGUtd3JhcHBlciAqdmRySWZQZXJtaXNzaW9ucz1cIlsnVXBkYXRlQ2F0YWxvZycsICdVcGRhdGVQcm9kdWN0J11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZGV0YWlsRm9ybS5nZXQoWydlbmFibGVkJ10pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdjb21tb24uZW5hYmxlZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvY2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkICpuZ0lmPVwidmFyaWFudC5vcHRpb25zLmxlbmd0aFwiIFt0aXRsZV09XCInY2F0YWxvZy5wcm9kdWN0LW9wdGlvbnMnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItY2hpcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHZhcmlhbnQub3B0aW9ucyB8IHNvcnQgOiAnZ3JvdXBJZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JGcm9tXT1cIm9wdGlvbkdyb3VwQ29kZShvcHRpb24uZ3JvdXBJZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW52ZXJ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgb3B0aW9uR3JvdXBDb2RlKG9wdGlvbi5ncm91cElkKSB9fTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbk5hbWUob3B0aW9uKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWNoaXA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycuLi8uLi8nLCAnb3B0aW9ucyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc21hbGwgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGVuY2lsXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuZWRpdC1vcHRpb25zJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidjYXRhbG9nLmZhY2V0cycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYWNldHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZhY2V0LXZhbHVlLWNoaXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhY2V0VmFsdWUgb2YgZmFjZXRWYWx1ZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmFjZXRWYWx1ZV09XCJmYWNldFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJ1cGRhdGVQZXJtaXNzaW9ucyB8IGhhc1Blcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZhY2V0VmFsdWUoZmFjZXRWYWx1ZS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1mYWNldC12YWx1ZS1jaGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc21hbGwgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmFjZXRWYWx1ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnY2F0YWxvZy5hZGQtZmFjZXRzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXBhZ2UtZW50aXR5LWluZm8gKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgZW50aXR5XCIgW2VudGl0eV09XCJlbnRpdHlcIiAvPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDwvdmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcblxyXG4gICAgICAgIDx2ZHItcGFnZS1ibG9jaz5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgaGlkZGVuIHgtZGF0YT1cInByZXZlbnRzIGVudGVyIGtleSBmcm9tIHRyaWdnZXJpbmcgb3RoZXIgYnV0dG9uc1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLm5hbWUnIHwgdHJhbnNsYXRlXCIgZm9yPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKFsnVXBkYXRlQ2F0YWxvZycsICdVcGRhdGVQcm9kdWN0J10gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjYXRhbG9nLnNrdScgfCB0cmFuc2xhdGVcIiBmb3I9XCJza3VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJza3VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidjb21tb24uY3VzdG9tLWZpZWxkcycgfCB0cmFuc2xhdGVcIiAqbmdJZj1cImN1c3RvbUZpZWxkcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItdGFiYmVkLWN1c3RvbS1maWVsZHNcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlOYW1lPVwiUHJvZHVjdFZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiY3VzdG9tRmllbGRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWN1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3RcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uSWQ9XCJwcm9kdWN0LXZhcmlhbnQtZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgIFtlbnRpdHkkXT1cImVudGl0eSRcIlxyXG4gICAgICAgICAgICAgICAgW2RldGFpbEZvcm1dPVwiZGV0YWlsRm9ybVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ2NhdGFsb2cuYXNzZXRzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1hc3NldHNcclxuICAgICAgICAgICAgICAgICAgICBbYXNzZXRzXT1cImFzc2V0Q2hhbmdlcy5hc3NldHMgfHwgdmFyaWFudC5hc3NldHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmZWF0dXJlZEFzc2V0XT1cImFzc2V0Q2hhbmdlcy5mZWF0dXJlZEFzc2V0IHx8IHZhcmlhbnQuZmVhdHVyZWRBc3NldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3VwZGF0ZVBlcm1pc3Npb25zXT1cInVwZGF0ZVBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFzc2V0Q2hhbmdlcyA9ICRldmVudFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidjYXRhbG9nLnByaWNlLWFuZC10YXgnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY2F0YWxvZy50YXgtY2F0ZWdvcnknIHwgdHJhbnNsYXRlXCIgZm9yPVwidGF4Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwidGF4Q2F0ZWdvcnlcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YXhDYXRlZ29yeUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRheENhdGVnb3J5IG9mIHRheENhdGVnb3JpZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0YXhDYXRlZ29yeS5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGF4Q2F0ZWdvcnkubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWQgcHJpY2VzXCIgKm5nRm9yPVwibGV0IHByaWNlIG9mIHByaWNlc0Zvcm0uY29udHJvbHNcIiBbZm9ybUdyb3VwXT1cInByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnY2F0YWxvZy5wcmljZScgfCB0cmFuc2xhdGUpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDwgcHJpY2VzRm9ybS5sZW5ndGggPyAnICgnICsgcHJpY2UudmFsdWUuY3VycmVuY3lDb2RlICsgJyknIDogJycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA8IHByaWNlc0Zvcm0ubGVuZ3RoICYmIHByaWNlLnZhbHVlLmN1cnJlbmN5Q29kZSA9PT0gY2hhbm5lbERlZmF1bHRDdXJyZW5jeUNvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICgnY2F0YWxvZy5kZWZhdWx0LWN1cnJlbmN5JyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd3JhcHBlclwiIFtjbGFzcy5wZW5kaW5nLWRlbGV0aW9uXT1cInByaWNlLnZhbHVlLmRlbGV0ZSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1jdXJyZW5jeS1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5Q29kZV09XCJwcmljZS52YWx1ZS5jdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISh1cGRhdGVQZXJtaXNzaW9ucyB8IGhhc1Blcm1pc3Npb24pIHx8IHByaWNlLnZhbHVlLmRlbGV0ZSA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIxIDwgcHJpY2VzRm9ybS5jb250cm9scy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsIGRlbGV0ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJpY2UudmFsdWUuY3VycmVuY3lDb2RlID09PSBjaGFubmVsRGVmYXVsdEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZWxldGVQcmljZShwcmljZS5nZXQoJ2RlbGV0ZScpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ0cmFzaFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLXZhcmlhbnQtcHJpY2UtZGV0YWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcmljZV09XCJwcmljZS52YWx1ZS5wcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwicHJpY2UudmFsdWUuY3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ByaWNlSW5jbHVkZXNUYXhdPVwiY2hhbm5lbFByaWNlSW5jbHVkZXNUYXgkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGF4Q2F0ZWdvcnlJZF09XCJkZXRhaWxGb3JtLmdldCgndGF4Q2F0ZWdvcnlJZCcpIS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVudXNlZEN1cnJlbmN5Q29kZXMkIHwgYXN5bmMgYXMgdW51c2VkQ3VycmVuY3lDb2Rlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1bnVzZWRDdXJyZW5jeUNvZGVzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBtdC0yXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLmFkZC1wcmljZS1pbi1hbm90aGVyLWN1cnJlbmN5JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImVsbGlwc2lzLXZlcnRpY2FsXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjdXJyZW5jeUNvZGUgb2YgdW51c2VkQ3VycmVuY3lDb2Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRQcmljZUluQ3VycmVuY3koY3VycmVuY3lDb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjdXJyZW5jeUNvZGUgfCBsb2NhbGVDdXJyZW5jeU5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ2NhdGFsb2cuc3RvY2stbGV2ZWxzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJ0cmFjay1pbnZlbnRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2NhdGFsb2cudHJhY2staW52ZW50b3J5JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidjYXRhbG9nLnRyYWNrLWludmVudG9yeS10b29sdGlwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidHJhY2staW52ZW50b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRyYWNrSW52ZW50b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb25zIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJHbG9iYWxGbGFnLlRSVUVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY2F0YWxvZy50cmFjay1pbnZlbnRvcnktdHJ1ZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiR2xvYmFsRmxhZy5GQUxTRVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLnRyYWNrLWludmVudG9yeS1mYWxzZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiR2xvYmFsRmxhZy5JTkhFUklUXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cudHJhY2staW52ZW50b3J5LWluaGVyaXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjYXRhbG9nLm91dC1vZi1zdG9jay10aHJlc2hvbGQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ2NhdGFsb2cub3V0LW9mLXN0b2NrLXRocmVzaG9sZC10b29sdGlwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3V0T2ZTdG9ja1RocmVzaG9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9ucyB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxGb3JtLmdldCgndXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCcpPy52YWx1ZSAhPT0gZmFsc2UgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlbnRvcnlJc05vdFRyYWNrZWQoZGV0YWlsRm9ybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItdG9nZ2xlLXdyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsclRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKSB8fCBpbnZlbnRvcnlJc05vdFRyYWNrZWQoZGV0YWlsRm9ybSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnY2F0YWxvZy51c2UtZ2xvYmFsLXZhbHVlJyB8IHRyYW5zbGF0ZSB9fSAoe3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTwvbGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItdG9nZ2xlLXdyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1pdGVtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyaWQgc3RvY2stbGV2ZWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RvY2tMZXZlbCBvZiBzdG9ja0xldmVsc0Zvcm0uY29udHJvbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwic3RvY2tMZXZlbFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b2NrTGV2ZWwuZ2V0KCdzdG9ja0xvY2F0aW9uTmFtZScpPy52YWx1ZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOiAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnY2F0YWxvZy5zdG9jay1vbi1oYW5kJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCInc3RvY2tPbkhhbmRfJyArIHN0b2NrTGV2ZWwuZ2V0KCdzdG9ja0xvY2F0aW9uSWQnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3N0b2NrT25IYW5kXycgKyBzdG9ja0xldmVsLmdldCgnc3RvY2tMb2NhdGlvbklkJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RvY2tPbkhhbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbnMgfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0taXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9ja0xldmVsLmdldCgnc3RvY2tMb2NhdGlvbk5hbWUnKT8udmFsdWUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzogJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2NhdGFsb2cuc3RvY2stYWxsb2NhdGVkJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b2NrTGV2ZWwuZ2V0KCdzdG9ja0FsbG9jYXRlZCcpPy52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0taXRlbT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVudXNlZFN0b2NrTG9jYXRpb24kIHwgYXN5bmMgYXMgdW51c2VkU3RvY2tMb2NhdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidW51c2VkU3RvY2tMb2NhdGlvbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIG10LTJcIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuYWRkLXN0b2NrLWxvY2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImVsbGlwc2lzLXZlcnRpY2FsXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdG9ja0xvY2F0aW9uIG9mIHVudXNlZFN0b2NrTG9jYXRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFN0b2NrTG9jYXRpb24oc3RvY2tMb2NhdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwibWFwLW1hcmtlclwiPjwvY2xyLWljb24+IHt7IHN0b2NrTG9jYXRpb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWJsb2NrPlxyXG4gICAgPC92ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -15,6 +15,12 @@ export class ProductVariantListComponent extends TypedBaseListComponent {
15
15
  this.filters = this.createFilterCollection()
16
16
  .addDateFilters()
17
17
  .addFilters([
18
+ {
19
+ name: 'name',
20
+ type: { kind: 'text' },
21
+ label: _('common.name'),
22
+ filterField: 'name',
23
+ },
18
24
  {
19
25
  name: 'id',
20
26
  type: { kind: 'text' },
@@ -91,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
91
97
  }], hideLanguageSelect: [{
92
98
  type: Input
93
99
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jYXRhbG9nL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtdmFyaWFudC1saXN0L3Byb2R1Y3QtdmFyaWFudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtbGlzdC9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCwrQkFBK0IsRUFDL0Isc0JBQXNCLEdBQ3pCLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLDJCQUNULFNBQVEsc0JBQWlGO0lBd0R6RjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBckRILHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELFlBQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7YUFDM0MsY0FBYyxFQUFFO2FBQ2hCLFVBQVUsQ0FBQztZQUNSO2dCQUNJLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUNyQixXQUFXLEVBQUUsSUFBSTthQUNwQjtZQUNEO2dCQUNJLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQ3pCLEtBQUssRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzFCLFdBQVcsRUFBRSxTQUFTO2FBQ3pCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDdEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZCLFdBQVcsRUFBRSxLQUFLO2FBQ3JCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQztnQkFDeEIsV0FBVyxFQUFFLE9BQU87YUFDdkI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsY0FBYztnQkFDcEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDO2dCQUNqQyxXQUFXLEVBQUUsY0FBYzthQUM5QjtTQUNKLENBQUM7YUFDRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsVUFBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRTthQUN2QyxRQUFRLENBQUM7WUFDTixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDZCxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDckIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3JCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNoQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDZixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDakIsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO1NBQzNCLENBQUM7YUFDRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3RDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFJNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNYLFFBQVEsRUFBRSwrQkFBK0I7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxFQUFFO29CQUNMLElBQUk7b0JBQ0osSUFBSTtvQkFDSixNQUFNLEVBQUU7d0JBQ0osR0FBRyxFQUFFOzRCQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSzt5QkFDekM7d0JBQ0QsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO3dCQUNuQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDbkU7b0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFO2lCQUNyQzthQUNKLENBQUM7WUFDRixvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1NBQzdFLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBOUVRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLHFLQ2J4Qyw4cktBeUhBOzsyRkQ1R2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNJLDBCQUEwQjswRUFRM0IsU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcbmltcG9ydCB7XG4gICAgTG9naWNhbE9wZXJhdG9yLFxuICAgIFByb2R1Y3RWYXJpYW50TGlzdFF1ZXJ5RG9jdW1lbnQsXG4gICAgVHlwZWRCYXNlTGlzdENvbXBvbmVudCxcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtdmFyaWFudC1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC12YXJpYW50LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtdmFyaWFudC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RWYXJpYW50TGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgVHlwZWRCYXNlTGlzdENvbXBvbmVudDx0eXBlb2YgUHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlEb2N1bWVudCwgJ3Byb2R1Y3RWYXJpYW50cyc+XG4gICAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgICBASW5wdXQoKSBwcm9kdWN0SWQ/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaGlkZUxhbmd1YWdlU2VsZWN0ID0gZmFsc2U7XG4gICAgcmVhZG9ubHkgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnUHJvZHVjdFZhcmlhbnQnKTtcbiAgICByZWFkb25seSBmaWx0ZXJzID0gdGhpcy5jcmVhdGVGaWx0ZXJDb2xsZWN0aW9uKClcbiAgICAgICAgLmFkZERhdGVGaWx0ZXJzKClcbiAgICAgICAgLmFkZEZpbHRlcnMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAndGV4dCcgfSxcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmlkJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdpZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdlbmFibGVkJyxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdib29sZWFuJyB9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uZW5hYmxlZCcpLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnZW5hYmxlZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdza3UnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ3RleHQnIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NhdGFsb2cuc2t1JyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdza3UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAncHJpY2UnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ251bWJlcicsIGlucHV0VHlwZTogJ2N1cnJlbmN5JyB9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24ucHJpY2UnKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ3ByaWNlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3ByaWNlV2l0aFRheCcsXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnbnVtYmVyJywgaW5wdXRUeXBlOiAnY3VycmVuY3knIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5wcmljZS13aXRoLXRheCcpLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAncHJpY2VXaXRoVGF4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC5hZGRDdXN0b21GaWVsZEZpbHRlcnModGhpcy5jdXN0b21GaWVsZHMpXG4gICAgICAgIC5jb25uZWN0VG9Sb3V0ZSh0aGlzLnJvdXRlKTtcblxuICAgIHJlYWRvbmx5IHNvcnRzID0gdGhpcy5jcmVhdGVTb3J0Q29sbGVjdGlvbigpXG4gICAgICAgIC5hZGRTb3J0cyhbXG4gICAgICAgICAgICB7IG5hbWU6ICdpZCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2NyZWF0ZWRBdCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3VwZGF0ZWRBdCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ25hbWUnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdza3UnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdwcmljZScgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3ByaWNlV2l0aFRheCcgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLmFkZEN1c3RvbUZpZWxkU29ydHModGhpcy5jdXN0b21GaWVsZHMpXG4gICAgICAgIC5jb25uZWN0VG9Sb3V0ZSh0aGlzLnJvdXRlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZSh7XG4gICAgICAgICAgICBkb2N1bWVudDogUHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlEb2N1bWVudCxcbiAgICAgICAgICAgIGdldEl0ZW1zOiBkYXRhID0+IGRhdGEucHJvZHVjdFZhcmlhbnRzLFxuICAgICAgICAgICAgc2V0VmFyaWFibGVzOiAoc2tpcCwgdGFrZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2t1OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWx0ZXJzLmNyZWF0ZUZpbHRlcklucHV0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odGhpcy5wcm9kdWN0SWQgPyB7IHByb2R1Y3RJZDogeyBlcTogdGhpcy5wcm9kdWN0SWQgfSB9IDoge30pLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzb3J0OiB0aGlzLnNvcnRzLmNyZWF0ZVNvcnRJbnB1dCgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzOiBbdGhpcy5zb3J0cy52YWx1ZUNoYW5nZXMsIHRoaXMuZmlsdGVycy52YWx1ZUNoYW5nZXNdLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8dmRyLXBhZ2UtYmxvY2sgKm5nSWY9XCIhaGlkZUxhbmd1YWdlU2VsZWN0XCI+XHJcbiAgICA8dmRyLWxhbmd1YWdlLXNlbGVjdG9yXHJcbiAgICAgICAgW2F2YWlsYWJsZUxhbmd1YWdlQ29kZXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzJCB8IGFzeW5jXCJcclxuICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJjb250ZW50TGFuZ3VhZ2UkIHwgYXN5bmNcIlxyXG4gICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC92ZHItbGFuZ3VhZ2Utc2VsZWN0b3I+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcbjx2ZHItZGF0YS10YWJsZS0yXHJcbiAgICBjbGFzcz1cIm10LTJcIlxyXG4gICAgaWQ9XCJwcm9kdWN0LXZhcmlhbnQtbGlzdFwiXHJcbiAgICBbaXRlbXNdPVwiaXRlbXMkIHwgYXN5bmNcIlxyXG4gICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxyXG4gICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtcyQgfCBhc3luY1wiXHJcbiAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2UkIHwgYXN5bmNcIlxyXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXHJcbiAgICAocGFnZUNoYW5nZSk9XCJzZXRQYWdlTnVtYmVyKCRldmVudClcIlxyXG4gICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJzZXRJdGVtc1BlclBhZ2UoJGV2ZW50KVwiXHJcbj5cclxuICAgIDx2ZHItYnVsay1hY3Rpb24tbWVudVxyXG4gICAgICAgIGxvY2F0aW9uSWQ9XCJwcm9kdWN0LXZhcmlhbnQtbGlzdFwiXHJcbiAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXHJcbiAgICAgICAgW3NlbGVjdGlvbk1hbmFnZXJdPVwic2VsZWN0aW9uTWFuYWdlclwiXHJcbiAgICAvPlxyXG4gICAgPHZkci1kdDItc2VhcmNoXHJcbiAgICAgICAgW3NlYXJjaFRlcm1Db250cm9sXT1cInNlYXJjaFRlcm1Db250cm9sXCJcclxuICAgICAgICBbc2VhcmNoVGVybVBsYWNlaG9sZGVyXT1cIidjYXRhbG9nLmZpbHRlci1ieS1za3UnIHwgdHJhbnNsYXRlXCJcclxuICAgIC8+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5pZCcgfCB0cmFuc2xhdGVcIiBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIiBbc29ydF09XCJzb3J0cy5nZXQoJ2lkJylcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IHZhcmlhbnQuaWQgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgIFtoZWFkaW5nXT1cIidjb21tb24uY3JlYXRlZC1hdCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdjcmVhdGVkQXQnKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxyXG4gICAgICAgICAgICB7eyB2YXJpYW50LmNyZWF0ZWRBdCB8IGxvY2FsZURhdGUgOiAnc2hvcnQnIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW5cclxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnVwZGF0ZWQtYXQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxyXG4gICAgICAgIFtzb3J0XT1cInNvcnRzLmdldCgndXBkYXRlZEF0JylcIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgdmFyaWFudC51cGRhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaW1hZ2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZhcmlhbnQuZmVhdHVyZWRBc3NldCBhcyBhc3NldDsgZWxzZSBpbWFnZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFzc2V0IHwgYXNzZXRQcmV2aWV3IDogJ3RpbnknXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ltYWdlUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjQ4XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjYXRhbG9nLm5hbWUnIHwgdHJhbnNsYXRlXCIgW29wdGlvbmFsXT1cImZhbHNlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCduYW1lJylcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1naG9zdFwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9jYXRhbG9nL2ludmVudG9yeScsIHZhcmlhbnQucHJvZHVjdElkLCAndmFyaWFudHMnLCB2YXJpYW50LmlkXVwiXHJcbiAgICAgICAgICAgICAgICA+PHNwYW4+e3sgdmFyaWFudC5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIlxyXG4gICAgICAgICAgICAvPjwvYT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5za3UnIHwgdHJhbnNsYXRlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCdza3UnKVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgdmFyaWFudC5za3UgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmVuYWJsZWQnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxyXG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCJ2YXJpYW50LmVuYWJsZWRcIiBjb2xvclR5cGU9XCJzdWNjZXNzXCI+e3tcclxuICAgICAgICAgICAgICAgICdjb21tb24uZW5hYmxlZCcgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgfX08L3Zkci1jaGlwPlxyXG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCIhdmFyaWFudC5lbmFibGVkXCIgY29sb3JUeXBlPVwid2FybmluZ1wiPnt7XHJcbiAgICAgICAgICAgICAgICAnY29tbW9uLmRpc2FibGVkJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW5cclxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnByaWNlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcclxuICAgICAgICBbc29ydF09XCJzb3J0cy5nZXQoJ3ByaWNlJylcIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgdmFyaWFudC5wcmljZSB8IGxvY2FsZUN1cnJlbmN5IDogdmFyaWFudC5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLnByaWNlLXdpdGgtdGF4JyB8IHRyYW5zbGF0ZVwiIFtzb3J0XT1cInNvcnRzLmdldCgncHJpY2VXaXRoVGF4JylcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IHZhcmlhbnQucHJpY2VXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiB2YXJpYW50LmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5zdG9jay1vbi1oYW5kJyB8IHRyYW5zbGF0ZVwiIFtoaWRkZW5CeURlZmF1bHRdPVwiZmFsc2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDx2ZHItY2hpcCAqbmdGb3I9XCJsZXQgc3RvY2tMZXZlbCBvZiB2YXJpYW50LnN0b2NrTGV2ZWxzXCIgW3RpdGxlXT1cInN0b2NrTGV2ZWwuc3RvY2tMb2NhdGlvbj8ubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvY2tMZXZlbC5zdG9ja09uSGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVwibWwtMVwiICpuZ0lmPVwic3RvY2tMZXZlbC5zdG9ja0FsbG9jYXRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+KHt7IHN0b2NrTGV2ZWwuc3RvY2tBbGxvY2F0ZWQgfX0gYWxsb2NhdGVkKTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2hpcD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWN1c3RvbS1maWVsZC1jb2x1bW4gKm5nRm9yPVwibGV0IGZpZWxkIG9mIGN1c3RvbUZpZWxkc1wiIFtjdXN0b21GaWVsZF09XCJmaWVsZFwiIFtzb3J0c109XCJzb3J0c1wiIC8+XHJcbjwvdmRyLWRhdGEtdGFibGUtMj5cclxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jYXRhbG9nL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtdmFyaWFudC1saXN0L3Byb2R1Y3QtdmFyaWFudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtbGlzdC9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCwrQkFBK0IsRUFDL0Isc0JBQXNCLEdBQ3pCLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLDJCQUNULFNBQVEsc0JBQWlGO0lBOER6RjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBM0RILHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELFlBQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7YUFDM0MsY0FBYyxFQUFFO2FBQ2hCLFVBQVUsQ0FBQztZQUNSO2dCQUNJLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUN2QixXQUFXLEVBQUUsTUFBTTthQUN0QjtZQUNEO2dCQUNJLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JB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QkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgTG9naWNhbE9wZXJhdG9yLFxyXG4gICAgUHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlEb2N1bWVudCxcclxuICAgIFR5cGVkQmFzZUxpc3RDb21wb25lbnQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtdmFyaWFudC1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdFZhcmlhbnRMaXN0Q29tcG9uZW50XHJcbiAgICBleHRlbmRzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8dHlwZW9mIFByb2R1Y3RWYXJpYW50TGlzdFF1ZXJ5RG9jdW1lbnQsICdwcm9kdWN0VmFyaWFudHMnPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gICAgQElucHV0KCkgcHJvZHVjdElkPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaGlkZUxhbmd1YWdlU2VsZWN0ID0gZmFsc2U7XHJcbiAgICByZWFkb25seSBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdQcm9kdWN0VmFyaWFudCcpO1xyXG4gICAgcmVhZG9ubHkgZmlsdGVycyA9IHRoaXMuY3JlYXRlRmlsdGVyQ29sbGVjdGlvbigpXHJcbiAgICAgICAgLmFkZERhdGVGaWx0ZXJzKClcclxuICAgICAgICAuYWRkRmlsdGVycyhbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ3RleHQnIH0sXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLm5hbWUnKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICd0ZXh0JyB9LFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5pZCcpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdpZCcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdlbmFibGVkJyxcclxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2Jvb2xlYW4nIH0sXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmVuYWJsZWQnKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnZW5hYmxlZCcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdza3UnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAndGV4dCcgfSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjYXRhbG9nLnNrdScpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdza3UnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAncHJpY2UnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnbnVtYmVyJywgaW5wdXRUeXBlOiAnY3VycmVuY3knIH0sXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLnByaWNlJyksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ3ByaWNlJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3ByaWNlV2l0aFRheCcsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdudW1iZXInLCBpbnB1dFR5cGU6ICdjdXJyZW5jeScgfSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24ucHJpY2Utd2l0aC10YXgnKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAncHJpY2VXaXRoVGF4JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdKVxyXG4gICAgICAgIC5hZGRDdXN0b21GaWVsZEZpbHRlcnModGhpcy5jdXN0b21GaWVsZHMpXHJcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xyXG5cclxuICAgIHJlYWRvbmx5IHNvcnRzID0gdGhpcy5jcmVhdGVTb3J0Q29sbGVjdGlvbigpXHJcbiAgICAgICAgLmFkZFNvcnRzKFtcclxuICAgICAgICAgICAgeyBuYW1lOiAnaWQnIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTogJ2NyZWF0ZWRBdCcgfSxcclxuICAgICAgICAgICAgeyBuYW1lOiAndXBkYXRlZEF0JyB9LFxyXG4gICAgICAgICAgICB7IG5hbWU6ICduYW1lJyB9LFxyXG4gICAgICAgICAgICB7IG5hbWU6ICdza3UnIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTogJ3ByaWNlJyB9LFxyXG4gICAgICAgICAgICB7IG5hbWU6ICdwcmljZVdpdGhUYXgnIH0sXHJcbiAgICAgICAgXSlcclxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRTb3J0cyh0aGlzLmN1c3RvbUZpZWxkcylcclxuICAgICAgICAuY29ubmVjdFRvUm91dGUodGhpcy5yb3V0ZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZSh7XHJcbiAgICAgICAgICAgIGRvY3VtZW50OiBQcm9kdWN0VmFyaWFudExpc3RRdWVyeURvY3VtZW50LFxyXG4gICAgICAgICAgICBnZXRJdGVtczogZGF0YSA9PiBkYXRhLnByb2R1Y3RWYXJpYW50cyxcclxuICAgICAgICAgICAgc2V0VmFyaWFibGVzOiAoc2tpcCwgdGFrZSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwLFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNrdToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVycy5jcmVhdGVGaWx0ZXJJbnB1dCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odGhpcy5wcm9kdWN0SWQgPyB7IHByb2R1Y3RJZDogeyBlcTogdGhpcy5wcm9kdWN0SWQgfSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0cy5jcmVhdGVTb3J0SW5wdXQoKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICByZWZyZXNoTGlzdE9uQ2hhbmdlczogW3RoaXMuc29ydHMudmFsdWVDaGFuZ2VzLCB0aGlzLmZpbHRlcnMudmFsdWVDaGFuZ2VzXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8dmRyLXBhZ2UtYmxvY2sgKm5nSWY9XCIhaGlkZUxhbmd1YWdlU2VsZWN0XCI+XHJcbiAgICA8dmRyLWxhbmd1YWdlLXNlbGVjdG9yXHJcbiAgICAgICAgW2F2YWlsYWJsZUxhbmd1YWdlQ29kZXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzJCB8IGFzeW5jXCJcclxuICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJjb250ZW50TGFuZ3VhZ2UkIHwgYXN5bmNcIlxyXG4gICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC92ZHItbGFuZ3VhZ2Utc2VsZWN0b3I+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcbjx2ZHItZGF0YS10YWJsZS0yXHJcbiAgICBjbGFzcz1cIm10LTJcIlxyXG4gICAgaWQ9XCJwcm9kdWN0LXZhcmlhbnQtbGlzdFwiXHJcbiAgICBbaXRlbXNdPVwiaXRlbXMkIHwgYXN5bmNcIlxyXG4gICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxyXG4gICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtcyQgfCBhc3luY1wiXHJcbiAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2UkIHwgYXN5bmNcIlxyXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXHJcbiAgICAocGFnZUNoYW5nZSk9XCJzZXRQYWdlTnVtYmVyKCRldmVudClcIlxyXG4gICAgKGl0ZW1zUGVyUGFnZUNoYW5nZSk9XCJzZXRJdGVtc1BlclBhZ2UoJGV2ZW50KVwiXHJcbj5cclxuICAgIDx2ZHItYnVsay1hY3Rpb24tbWVudVxyXG4gICAgICAgIGxvY2F0aW9uSWQ9XCJwcm9kdWN0LXZhcmlhbnQtbGlzdFwiXHJcbiAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXHJcbiAgICAgICAgW3NlbGVjdGlvbk1hbmFnZXJdPVwic2VsZWN0aW9uTWFuYWdlclwiXHJcbiAgICAvPlxyXG4gICAgPHZkci1kdDItc2VhcmNoXHJcbiAgICAgICAgW3NlYXJjaFRlcm1Db250cm9sXT1cInNlYXJjaFRlcm1Db250cm9sXCJcclxuICAgICAgICBbc2VhcmNoVGVybVBsYWNlaG9sZGVyXT1cIidjYXRhbG9nLmZpbHRlci1ieS1za3UnIHwgdHJhbnNsYXRlXCJcclxuICAgIC8+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5pZCcgfCB0cmFuc2xhdGVcIiBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIiBbc29ydF09XCJzb3J0cy5nZXQoJ2lkJylcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IHZhcmlhbnQuaWQgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgIFtoZWFkaW5nXT1cIidjb21tb24uY3JlYXRlZC1hdCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdjcmVhdGVkQXQnKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxyXG4gICAgICAgICAgICB7eyB2YXJpYW50LmNyZWF0ZWRBdCB8IGxvY2FsZURhdGUgOiAnc2hvcnQnIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW5cclxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnVwZGF0ZWQtYXQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxyXG4gICAgICAgIFtzb3J0XT1cInNvcnRzLmdldCgndXBkYXRlZEF0JylcIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgdmFyaWFudC51cGRhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaW1hZ2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZhcmlhbnQuZmVhdHVyZWRBc3NldCBhcyBhc3NldDsgZWxzZSBpbWFnZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFzc2V0IHwgYXNzZXRQcmV2aWV3IDogJ3RpbnknXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ltYWdlUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjQ4XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjYXRhbG9nLm5hbWUnIHwgdHJhbnNsYXRlXCIgW29wdGlvbmFsXT1cImZhbHNlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCduYW1lJylcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1naG9zdFwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9jYXRhbG9nL2ludmVudG9yeScsIHZhcmlhbnQucHJvZHVjdElkLCAndmFyaWFudHMnLCB2YXJpYW50LmlkXVwiXHJcbiAgICAgICAgICAgICAgICA+PHNwYW4+e3sgdmFyaWFudC5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIlxyXG4gICAgICAgICAgICAvPjwvYT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5za3UnIHwgdHJhbnNsYXRlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCdza3UnKVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgdmFyaWFudC5za3UgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmVuYWJsZWQnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxyXG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCJ2YXJpYW50LmVuYWJsZWRcIiBjb2xvclR5cGU9XCJzdWNjZXNzXCI+e3tcclxuICAgICAgICAgICAgICAgICdjb21tb24uZW5hYmxlZCcgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgfX08L3Zkci1jaGlwPlxyXG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCIhdmFyaWFudC5lbmFibGVkXCIgY29sb3JUeXBlPVwid2FybmluZ1wiPnt7XHJcbiAgICAgICAgICAgICAgICAnY29tbW9uLmRpc2FibGVkJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICA8dmRyLWR0Mi1jb2x1bW5cclxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnByaWNlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcclxuICAgICAgICBbc29ydF09XCJzb3J0cy5nZXQoJ3ByaWNlJylcIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cclxuICAgICAgICAgICAge3sgdmFyaWFudC5wcmljZSB8IGxvY2FsZUN1cnJlbmN5IDogdmFyaWFudC5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLnByaWNlLXdpdGgtdGF4JyB8IHRyYW5zbGF0ZVwiIFtzb3J0XT1cInNvcnRzLmdldCgncHJpY2VXaXRoVGF4JylcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIHt7IHZhcmlhbnQucHJpY2VXaXRoVGF4IHwgbG9jYWxlQ3VycmVuY3kgOiB2YXJpYW50LmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3Zkci1kdDItY29sdW1uPlxyXG5cclxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5zdG9jay1vbi1oYW5kJyB8IHRyYW5zbGF0ZVwiIFtoaWRkZW5CeURlZmF1bHRdPVwiZmFsc2VcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDx2ZHItY2hpcCAqbmdGb3I9XCJsZXQgc3RvY2tMZXZlbCBvZiB2YXJpYW50LnN0b2NrTGV2ZWxzXCIgW3RpdGxlXT1cInN0b2NrTGV2ZWwuc3RvY2tMb2NhdGlvbj8ubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvY2tMZXZlbC5zdG9ja09uSGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVwibWwtMVwiICpuZ0lmPVwic3RvY2tMZXZlbC5zdG9ja0FsbG9jYXRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+KHt7IHN0b2NrTGV2ZWwuc3RvY2tBbGxvY2F0ZWQgfX0gYWxsb2NhdGVkKTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2hpcD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgIDx2ZHItZHQyLWN1c3RvbS1maWVsZC1jb2x1bW4gKm5nRm9yPVwibGV0IGZpZWxkIG9mIGN1c3RvbUZpZWxkc1wiIFtjdXN0b21GaWVsZF09XCJmaWVsZFwiIFtzb3J0c109XCJzb3J0c1wiIC8+XHJcbjwvdmRyLWRhdGEtdGFibGUtMj5cclxuIl19