@vendure/admin-ui 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/catalog/components/move-collections-dialog/move-collections-dialog.component.d.ts +3 -2
  2. package/catalog/components/product-options-editor/product-options-editor.component.d.ts +6 -0
  3. package/core/common/base-detail.component.d.ts +28 -0
  4. package/core/common/version.d.ts +1 -1
  5. package/core/data/providers/interceptor.d.ts +11 -1
  6. package/core/providers/page/page.service.d.ts +7 -0
  7. package/core/shared/components/chart/chart.component.d.ts +3 -1
  8. package/esm2022/catalog/catalog.module.mjs +2 -2
  9. package/esm2022/catalog/components/asset-list/asset-list.component.mjs +3 -3
  10. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +3 -3
  11. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +34 -8
  12. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +13 -5
  13. package/esm2022/core/common/base-detail.component.mjs +29 -1
  14. package/esm2022/core/common/base-list.component.mjs +1 -1
  15. package/esm2022/core/common/component-registry-types.mjs +1 -1
  16. package/esm2022/core/common/generated-types.mjs +1 -1
  17. package/esm2022/core/common/introspection-result.mjs +1 -1
  18. package/esm2022/core/common/title-setter.mjs +1 -1
  19. package/esm2022/core/common/version.mjs +2 -2
  20. package/esm2022/core/components/app-shell/app-shell.component.mjs +3 -3
  21. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +3 -3
  22. package/esm2022/core/data/providers/interceptor.mjs +32 -11
  23. package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +1 -1
  24. package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +1 -1
  25. package/esm2022/core/providers/local-storage/local-storage.service.mjs +1 -4
  26. package/esm2022/core/providers/page/page.service.mjs +5 -2
  27. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +1 -1
  28. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +1 -1
  29. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +2 -2
  30. package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +3 -3
  31. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +1 -1
  32. package/esm2022/core/shared/components/chart/chart.component.mjs +6 -2
  33. package/esm2022/core/shared/components/chip/chip.component.mjs +2 -2
  34. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +1 -1
  35. package/esm2022/core/shared/components/data-table/data-table.component.mjs +1 -1
  36. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +1 -1
  37. package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +3 -3
  38. package/esm2022/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +1 -1
  39. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +1 -1
  40. package/esm2022/customer/components/address-card/address-card.component.mjs +3 -3
  41. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +3 -3
  42. package/esm2022/customer/components/customer-list/customer-list.component.mjs +14 -10
  43. package/esm2022/customer/customer.module.mjs +1 -1
  44. package/esm2022/customer/customer.routes.mjs +2 -2
  45. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +1 -1
  46. package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +13 -13
  47. package/esm2022/marketing/marketing.module.mjs +1 -1
  48. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +3 -3
  49. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +3 -3
  50. package/esm2022/order/components/order-detail/order-detail.component.mjs +2 -4
  51. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +3 -3
  52. package/esm2022/order/order.module.mjs +1 -1
  53. package/esm2022/order/order.routes.mjs +1 -1
  54. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +12 -12
  55. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +8 -8
  56. package/esm2022/settings/settings.module.mjs +1 -1
  57. package/fesm2022/vendure-admin-ui-catalog.mjs +49 -15
  58. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  59. package/fesm2022/vendure-admin-ui-core.mjs +80 -27
  60. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  61. package/fesm2022/vendure-admin-ui-customer.mjs +18 -14
  62. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  63. package/fesm2022/vendure-admin-ui-dashboard.mjs +12 -12
  64. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  65. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  66. package/fesm2022/vendure-admin-ui-order.mjs +7 -9
  67. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  68. package/fesm2022/vendure-admin-ui-settings.mjs +18 -18
  69. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  70. package/package.json +13 -13
  71. package/static/i18n-messages/cs.json +770 -768
  72. package/static/i18n-messages/de.json +771 -769
  73. package/static/i18n-messages/en.json +771 -769
  74. package/static/i18n-messages/es.json +770 -768
  75. package/static/i18n-messages/fr.json +770 -768
  76. package/static/i18n-messages/it.json +770 -768
  77. package/static/i18n-messages/pl.json +770 -768
  78. package/static/i18n-messages/pt_BR.json +770 -768
  79. package/static/i18n-messages/pt_PT.json +770 -768
  80. package/static/i18n-messages/ru.json +770 -768
  81. package/static/i18n-messages/uk.json +770 -768
  82. package/static/i18n-messages/zh_Hans.json +770 -768
  83. package/static/i18n-messages/zh_Hant.json +770 -768
  84. package/static/styles/global/_buttons.scss +24 -0
  85. package/static/theme.min.css +1 -1
@@ -136,6 +136,34 @@ export class TypedBaseDetailComponent extends BaseDetailComponent {
136
136
  this.setUpStreams();
137
137
  }
138
138
  }
139
+ /**
140
+ * @description
141
+ * A helper function for creating tabs that point to a {@link TypedBaseDetailComponent}. This takes
142
+ * care of the route resolver parts so that the detail component automatically has access to the
143
+ * correct resolved detail data.
144
+ *
145
+ * @example
146
+ * ```TypeScript
147
+ * \@NgModule({
148
+ * imports: [ReviewsSharedModule],
149
+ * declarations: [/* ... *\/],
150
+ * providers: [
151
+ * registerPageTab({
152
+ * location: 'product-detail',
153
+ * tab: 'Specs',
154
+ * route: 'specs',
155
+ * component: detailComponentWithResolver({
156
+ * component: ProductSpecDetailComponent,
157
+ * query: GetProductSpecsDocument,
158
+ * entityKey: 'spec',
159
+ * }),
160
+ * }),
161
+ * ],
162
+ * })
163
+ * export class ProductSpecsUiExtensionModule {}
164
+ * ```
165
+ * @docsCategory list-detail-views
166
+ */
139
167
  export function detailComponentWithResolver(config) {
140
168
  const resolveFn = (route, state) => {
141
169
  const router = inject(Router);
@@ -168,4 +196,4 @@ export function detailComponentWithResolver(config) {
168
196
  component: config.component,
169
197
  };
170
198
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9jb21tb24vYmFzZS1kZXRhaWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQWEsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU81RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFNLE9BQWdCLG1CQUFtQjtJQVlyQyxZQUNjLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDeEMsV0FBd0I7UUFIeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFONUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPdEMsQ0FBQztJQUVKLElBQUk7UUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMs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QkFDWCxNQUFNLEVBQUUsYUFBYTtnQkFDckIsTUFBTTthQUNULENBQUMsQ0FBQyxDQUNOLENBQUM7U0FDTDtJQUNMLENBQUMsQ0FBQztJQUNGLE9BQU87UUFDSCxTQUFTO1FBQ1QsWUFBWSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUssRUFBd0I7UUFDM0YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO0tBQzlCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGlvblN0YXJ0LCBSZXNvbHZlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSZXN1bHRPZiwgVHlwZWREb2N1bWVudE5vZGUgfSBmcm9tICdAZ3JhcGhxbC10eXBlZC1kb2N1bWVudC1ub2RlL2NvcmUnO1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3NlcnZlci1jb25maWcnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYlZhbHVlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRGVhY3RpdmF0ZUF3YXJlIH0gZnJvbSAnLi9kZWFjdGl2YXRlLWF3YXJlJztcbmltcG9ydCB7IEN1c3RvbUZpZWxkQ29uZmlnLCBDdXN0b21GaWVsZHMsIExhbmd1YWdlQ29kZSB9IGZyb20gJy4vZ2VuZXJhdGVkLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uT2YgfSBmcm9tICcuL3V0aWxpdGllcy9maW5kLXRyYW5zbGF0aW9uJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgYmFzZSBjbGFzcyBmb3IgZW50aXR5IGRldGFpbCB2aWV3cy4gSXQgc2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbiAqIHtAbGluayBCYXNlRW50aXR5UmVzb2x2ZXJ9LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBUeXBlU2NyaXB0XG4gKiBcXEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcC1teS1lbnRpdHknLFxuICogICB0ZW1wbGF0ZVVybDogJy4vbXktZW50aXR5LmNvbXBvbmVudC5odG1sJyxcbiAqICAgc3R5bGVVcmxzOiBbJy4vbXktZW50aXR5LmNvbXBvbmVudC5zY3NzJ10sXG4gKiAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBHbG9iYWxTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8TXlFbnRpdHlGcmFnbWVudD4gaW1wbGVtZW50cyBPbkluaXQge1xuICogICBkZXRhaWxGb3JtOiBGb3JtR3JvdXA7XG4gKlxuICogICBjb25zdHJ1Y3RvcihcbiAqICAgICByb3V0ZXI6IFJvdXRlcixcbiAqICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gKiAgICAgc2VydmVyQ29uZmlnU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSxcbiAqICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICogICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICogICApIHtcbiAqICAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBzZXJ2ZXJDb25maWdTZXJ2aWNlLCBkYXRhU2VydmljZSk7XG4gKiAgICAgdGhpcy5kZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gKiAgICAgICBuYW1lOiBbJyddLFxuICogICAgIH0pO1xuICogICB9XG4gKlxuICogICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IE15RW50aXR5RnJhZ21lbnQsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XG4gKiAgICAgdGhpcy5kZXRhaWxGb3JtLnBhdGNoVmFsdWUoe1xuICogICAgICAgbmFtZTogZW50aXR5Lm5hbWUsXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBkb2NzQ2F0ZWdvcnkgbGlzdC1kZXRhaWwtdmlld3NcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEZXRhaWxDb21wb25lbnQ8RW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nOyB1cGRhdGVkQXQ/OiBzdHJpbmcgfT5cbiAgICBpbXBsZW1lbnRzIERlYWN0aXZhdGVBd2FyZVxue1xuICAgIGVudGl0eSQ6IE9ic2VydmFibGU8RW50aXR5PjtcbiAgICBhdmFpbGFibGVMYW5ndWFnZXMkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZVtdPjtcbiAgICBsYW5ndWFnZUNvZGUkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZT47XG4gICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGU7XG4gICAgaXNOZXckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGlkOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgZGV0YWlsRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgICkge31cblxuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMuZW50aXR5JCA9IHRoaXMucm91dGUuZGF0YS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4gKGRhdGEuZW50aXR5IGFzIE9ic2VydmFibGU8RW50aXR5PikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpKSxcbiAgICAgICAgICAgIGZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpLFxuICAgICAgICAgICAgdGFwKGVudGl0eSA9PiAodGhpcy5pZCA9IGVudGl0eS5pZCkpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNOZXckID0gdGhpcy5lbnRpdHkkLnBpcGUoXG4gICAgICAgICAgICBtYXAoZW50aXR5ID0+ICFlbnRpdHk/LmlkKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldFVwU3RyZWFtcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRVcFN0cmVhbXMoKSB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlJCA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICAgICAgICAgIG1hcChwYXJhbU1hcCA9PiBwYXJhbU1hcC5nZXQoJ2xhbmcnKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAobGFuZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGxhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGxhbmcgYXMgTGFuZ3VhZ2VDb2RlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jbGllbnQudWlTdGF0ZSgpLm1hcFNpbmdsZShkYXRhID0+IGRhdGEudWlTdGF0ZS5jb250ZW50TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCh2YWwgPT4gKHRoaXMubGFuZ3VhZ2VDb2RlID0gdmFsKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyQgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdCh0aGlzLmVudGl0eSQsIHRoaXMubGFuZ3VhZ2VDb2RlJClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtlbnRpdHksIGxhbmd1YWdlQ29kZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyhlbnRpdHksIGxhbmd1YWdlQ29kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBzZXRMYW5ndWFnZShjb2RlOiBMYW5ndWFnZUNvZGUpIHtcbiAgICAgICAgdGhpcy5zZXRRdWVyeVBhcmFtKCdsYW5nJywgY29kZSk7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LnNldENvbnRlbnRMYW5ndWFnZShjb2RlKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXRhaWxGb3JtICYmIHRoaXMuZGV0YWlsRm9ybS5wcmlzdGluZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEVudGl0eSwgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIHNldEN1c3RvbUZpZWxkRm9ybVZhbHVlczxUID0gRW50aXR5PihcbiAgICAgICAgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdLFxuICAgICAgICBmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCB8IG51bGwsXG4gICAgICAgIGVudGl0eTogVCxcbiAgICAgICAgY3VycmVudFRyYW5zbGF0aW9uPzogVHJhbnNsYXRpb25PZjxUPixcbiAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZERlZiBvZiBjdXN0b21GaWVsZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpZWxkRGVmLm5hbWU7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgZmllbGREZWYudHlwZSA9PT0gJ2xvY2FsZVN0cmluZycgfHwgZmllbGREZWYudHlwZSA9PT0gJ2xvY2FsZVRleHQnXG4gICAgICAgICAgICAgICAgICAgID8gKGN1cnJlbnRUcmFuc2xhdGlvbiBhcyBhbnkpPy5jdXN0b21GaWVsZHM/LltrZXldXG4gICAgICAgICAgICAgICAgICAgIDogKGVudGl0eSBhcyBhbnkpLmN1c3RvbUZpZWxkcz8uW2tleV07XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwPy5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDdXN0b21GaWVsZENvbmZpZyhrZXk6IEV4Y2x1ZGU8a2V5b2YgQ3VzdG9tRmllbGRzLCAnX190eXBlbmFtZSc+KTogQ3VzdG9tRmllbGRDb25maWdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0Q3VzdG9tRmllbGRzRm9yKGtleSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgJy4vJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICBba2V5XTogdmFsdWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBIHZlcnNpb24gb2YgdGhlIHtAbGluayBCYXNlRGV0YWlsQ29tcG9uZW50fSB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggYVxuICogW1R5cGVkRG9jdW1lbnROb2RlXShodHRwczovL3RoZS1ndWlsZC5kZXYvZ3JhcGhxbC9jb2RlZ2VuL3BsdWdpbnMvdHlwZXNjcmlwdC90eXBlZC1kb2N1bWVudC1ub2RlKS5cbiAqXG4gKiBAZG9jc0NhdGVnb3J5IGxpc3QtZGV0YWlsLXZpZXdzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8XG4gICAgVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgYW55PixcbiAgICBGaWVsZCBleHRlbmRzIGtleW9mIFJlc3VsdE9mPFQ+LFxuPiBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8Tm9uTnVsbGFibGU8UmVzdWx0T2Y8VD5bRmllbGRdPj4ge1xuICAgIHByb3RlY3RlZCByZXN1bHQkOiBPYnNlcnZhYmxlPFJlc3VsdE9mPFQ+PjtcbiAgICBwcm90ZWN0ZWQgZW50aXR5OiBSZXN1bHRPZjxUPltGaWVsZF07XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKGluamVjdChBY3RpdmF0ZWRSb3V0ZSksIGluamVjdChSb3V0ZXIpLCBpbmplY3QoU2VydmVyQ29uZmlnU2VydmljZSksIGluamVjdChEYXRhU2VydmljZSkpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMuZW50aXR5JCA9IHRoaXMucm91dGUuZGF0YS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT5cbiAgICAgICAgICAgICAgICAoZGF0YS5kZXRhaWwuZW50aXR5IGFzIE9ic2VydmFibGU8UmVzdWx0T2Y8VD5bRmllbGRdPikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpLFxuICAgICAgICAgICAgdGFwKGVudGl0eSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IGVudGl0eS5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzdWx0JCA9IHRoaXMucm91dGUuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5kZXRhaWwucmVzdWx0KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzTmV3JCA9IHRoaXMucm91dGUuZGF0YS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4gZGF0YS5kZXRhaWwuZW50aXR5KSxcbiAgICAgICAgICAgIG1hcChlbnRpdHkgPT4gIWVudGl0eSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRVcFN0cmVhbXMoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRhaWxDb21wb25lbnRXaXRoUmVzb2x2ZXI8XG4gICAgVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgeyBpZDogc3RyaW5nIH0+LFxuICAgIEZpZWxkIGV4dGVuZHMga2V5b2YgUmVzdWx0T2Y8VD4sXG4gICAgUiBleHRlbmRzIEZpZWxkLFxuPihjb25maWc6IHtcbiAgICBjb21wb25lbnQ6IFR5cGU8VHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50PFQsIEZpZWxkPj47XG4gICAgcXVlcnk6IFQ7XG4gICAgZW50aXR5S2V5OiBSO1xuICAgIGdldEJyZWFkY3J1bWJzPzogKGVudGl0eTogUmVzdWx0T2Y8VD5bUl0pID0+IEJyZWFkY3J1bWJWYWx1ZTtcbn0pIHtcbiAgICBjb25zdCByZXNvbHZlRm46IFJlc29sdmVGbjx7IGVudGl0eTogT2JzZXJ2YWJsZTxSZXN1bHRPZjxUPltGaWVsZF0gfCBudWxsPjsgcmVzdWx0PzogUmVzdWx0T2Y8VD4gfT4gPSAoXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBzdGF0ZSxcbiAgICApID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgICAgIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0KERhdGFTZXJ2aWNlKTtcbiAgICAgICAgY29uc3QgaWQgPSByb3V0ZS5wYXJhbU1hcC5nZXQoJ2lkJyk7XG5cbiAgICAgICAgLy8gQ29tcGxldGUgdGhlIGVudGl0eSBzdHJlYW0gdXBvbiBuYXZpZ2F0aW5nIGF3YXlcbiAgICAgICAgY29uc3QgbmF2aWdhdGVBd2F5JCA9IHJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBBY3RpdmF0aW9uU3RhcnQpKTtcblxuICAgICAgICBpZiAoaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBpZCBmb3VuZCBpbiByb3V0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZCA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7IGVudGl0eTogb2YobnVsbCkgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQkID0gZGF0YVNlcnZpY2VcbiAgICAgICAgICAgICAgICAucXVlcnkoY29uZmlnLnF1ZXJ5LCB7IGlkIH0pXG4gICAgICAgICAgICAgICAgLnJlZmV0Y2hPbkNoYW5uZWxDaGFuZ2UoKVxuICAgICAgICAgICAgICAgIC5zdHJlYW0kLnBpcGUodGFrZVVudGlsKG5hdmlnYXRlQXdheSQpLCBzaGFyZVJlcGxheSgxKSk7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHkkID0gcmVzdWx0JC5waXBlKG1hcChyZXN1bHQgPT4gcmVzdWx0W2NvbmZpZy5lbnRpdHlLZXldKSk7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlTdHJlYW0kID0gZW50aXR5JC5waXBlKGZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IGVudGl0eVN0cmVhbSQsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZXNvbHZlRm4sXG4gICAgICAgIGJyZWFkY3J1bWJGbjogKHJlc3VsdDogYW55KSA9PiBjb25maWcuZ2V0QnJlYWRjcnVtYnM/LihyZXN1bHQpID8/IChbXSBhcyBCcmVhZGNydW1iVmFsdWVbXSksXG4gICAgICAgIGNvbXBvbmVudDogY29uZmlnLmNvbXBvbmVudCxcbiAgICB9O1xufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9jb21tb24vYmFzZS1kZXRhaWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQWEsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU81RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFNLE9BQWdCLG1CQUFtQjtJQVlyQyxZQUNjLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDeEMsV0FBd0I7UUFIeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFONUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPdEMsQ0FBQztJQUVKLElBQUk7UUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMs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LEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1gsTUFBTSxFQUFFLGFBQWE7Z0JBQ3JCLE1BQU07YUFDVCxDQUFDLENBQUMsQ0FDTixDQUFDO1NBQ0w7SUFDTCxDQUFDLENBQUM7SUFDRixPQUFPO1FBQ0gsU0FBUztRQUNULFlBQVksRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFLLEVBQXdCO1FBQzNGLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztLQUM5QixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0aW9uU3RhcnQsIFJlc29sdmVGbiwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmVzdWx0T2YsIFR5cGVkRG9jdW1lbnROb2RlIH0gZnJvbSAnQGdyYXBocWwtdHlwZWQtZG9jdW1lbnQtbm9kZS9jb3JlJztcclxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2ZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YS9zZXJ2ZXItY29uZmlnJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYlZhbHVlIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IERlYWN0aXZhdGVBd2FyZSB9IGZyb20gJy4vZGVhY3RpdmF0ZS1hd2FyZSc7XHJcbmltcG9ydCB7IEN1c3RvbUZpZWxkQ29uZmlnLCBDdXN0b21GaWVsZHMsIExhbmd1YWdlQ29kZSB9IGZyb20gJy4vZ2VuZXJhdGVkLXR5cGVzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25PZiB9IGZyb20gJy4vdXRpbGl0aWVzL2ZpbmQtdHJhbnNsYXRpb24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGVudGl0eSBkZXRhaWwgdmlld3MuIEl0IHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlXHJcbiAqIHtAbGluayBCYXNlRW50aXR5UmVzb2x2ZXJ9LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBUeXBlU2NyaXB0XHJcbiAqIFxcQENvbXBvbmVudCh7XHJcbiAqICAgc2VsZWN0b3I6ICdhcHAtbXktZW50aXR5JyxcclxuICogICB0ZW1wbGF0ZVVybDogJy4vbXktZW50aXR5LmNvbXBvbmVudC5odG1sJyxcclxuICogICBzdHlsZVVybHM6IFsnLi9teS1lbnRpdHkuY29tcG9uZW50LnNjc3MnXSxcclxuICogICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICogfSlcclxuICogZXhwb3J0IGNsYXNzIEdsb2JhbFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQmFzZURldGFpbENvbXBvbmVudDxNeUVudGl0eUZyYWdtZW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAqICAgZGV0YWlsRm9ybTogRm9ybUdyb3VwO1xyXG4gKlxyXG4gKiAgIGNvbnN0cnVjdG9yKFxyXG4gKiAgICAgcm91dGVyOiBSb3V0ZXIsXHJcbiAqICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAqICAgICBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gKiAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICogICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gKiAgICkge1xyXG4gKiAgICAgc3VwZXIocm91dGUsIHJvdXRlciwgc2VydmVyQ29uZmlnU2VydmljZSwgZGF0YVNlcnZpY2UpO1xyXG4gKiAgICAgdGhpcy5kZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAqICAgICAgIG5hbWU6IFsnJ10sXHJcbiAqICAgICB9KTtcclxuICogICB9XHJcbiAqXHJcbiAqICAgcHJvdGVjdGVkIHNldEZvcm1WYWx1ZXMoZW50aXR5OiBNeUVudGl0eUZyYWdtZW50LCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG4gKiAgICAgdGhpcy5kZXRhaWxGb3JtLnBhdGNoVmFsdWUoe1xyXG4gKiAgICAgICBuYW1lOiBlbnRpdHkubmFtZSxcclxuICogICAgIH0pO1xyXG4gKiAgIH1cclxuICogfVxyXG4gKiBgYGBcclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBsaXN0LWRldGFpbC12aWV3c1xyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEZXRhaWxDb21wb25lbnQ8RW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nOyB1cGRhdGVkQXQ/OiBzdHJpbmcgfT5cclxuICAgIGltcGxlbWVudHMgRGVhY3RpdmF0ZUF3YXJlXHJcbntcclxuICAgIGVudGl0eSQ6IE9ic2VydmFibGU8RW50aXR5PjtcclxuICAgIGF2YWlsYWJsZUxhbmd1YWdlcyQ6IE9ic2VydmFibGU8TGFuZ3VhZ2VDb2RlW10+O1xyXG4gICAgbGFuZ3VhZ2VDb2RlJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGU+O1xyXG4gICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGU7XHJcbiAgICBpc05ldyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgYWJzdHJhY3QgZGV0YWlsRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICApIHt9XHJcblxyXG4gICAgaW5pdCgpIHtcclxuICAgICAgICB0aGlzLmVudGl0eSQgPSB0aGlzLnJvdXRlLmRhdGEucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4gKGRhdGEuZW50aXR5IGFzIE9ic2VydmFibGU8RW50aXR5PikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpKSxcclxuICAgICAgICAgICAgZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCksXHJcbiAgICAgICAgICAgIHRhcChlbnRpdHkgPT4gKHRoaXMuaWQgPSBlbnRpdHkuaWQpKSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmlzTmV3JCA9IHRoaXMuZW50aXR5JC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoZW50aXR5ID0+ICFlbnRpdHk/LmlkKSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldFVwU3RyZWFtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRVcFN0cmVhbXMoKSB7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZUNvZGUkID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxyXG4gICAgICAgICAgICBtYXAocGFyYW1NYXAgPT4gcGFyYW1NYXAuZ2V0KCdsYW5nJykpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAobGFuZyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobGFuZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihsYW5nIGFzIExhbmd1YWdlQ29kZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC51aVN0YXRlKCkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS51aVN0YXRlLmNvbnRlbnRMYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICB0YXAodmFsID0+ICh0aGlzLmxhbmd1YWdlQ29kZSA9IHZhbCkpLFxyXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyQgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5lbnRpdHkkLCB0aGlzLmxhbmd1YWdlQ29kZSQpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW2VudGl0eSwgbGFuZ3VhZ2VDb2RlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyhlbnRpdHksIGxhbmd1YWdlQ29kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TGFuZ3VhZ2UoY29kZTogTGFuZ3VhZ2VDb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRRdWVyeVBhcmFtKCdsYW5nJywgY29kZSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQuc2V0Q29udGVudExhbmd1YWdlKGNvZGUpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkRlYWN0aXZhdGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGV0YWlsRm9ybSAmJiB0aGlzLmRldGFpbEZvcm0ucHJpc3RpbmU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldEZvcm1WYWx1ZXMoZW50aXR5OiBFbnRpdHksIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzPFQgPSBFbnRpdHk+KFxyXG4gICAgICAgIGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXSxcclxuICAgICAgICBmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCB8IG51bGwsXHJcbiAgICAgICAgZW50aXR5OiBULFxyXG4gICAgICAgIGN1cnJlbnRUcmFuc2xhdGlvbj86IFRyYW5zbGF0aW9uT2Y8VD4sXHJcbiAgICApIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIGN1c3RvbUZpZWxkcykge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBmaWVsZERlZi5uYW1lO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9XHJcbiAgICAgICAgICAgICAgICBmaWVsZERlZi50eXBlID09PSAnbG9jYWxlU3RyaW5nJyB8fCBmaWVsZERlZi50eXBlID09PSAnbG9jYWxlVGV4dCdcclxuICAgICAgICAgICAgICAgICAgICA/IChjdXJyZW50VHJhbnNsYXRpb24gYXMgYW55KT8uY3VzdG9tRmllbGRzPy5ba2V5XVxyXG4gICAgICAgICAgICAgICAgICAgIDogKGVudGl0eSBhcyBhbnkpLmN1c3RvbUZpZWxkcz8uW2tleV07XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXA/LmdldChrZXkpO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Q3VzdG9tRmllbGRDb25maWcoa2V5OiBFeGNsdWRlPGtleW9mIEN1c3RvbUZpZWxkcywgJ19fdHlwZW5hbWUnPik6IEN1c3RvbUZpZWxkQ29uZmlnW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0Q3VzdG9tRmllbGRzRm9yKGtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJy4vJyxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgICBba2V5XTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEEgdmVyc2lvbiBvZiB0aGUge0BsaW5rIEJhc2VEZXRhaWxDb21wb25lbnR9IHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCBhXHJcbiAqIFtUeXBlZERvY3VtZW50Tm9kZV0oaHR0cHM6Ly90aGUtZ3VpbGQuZGV2L2dyYXBocWwvY29kZWdlbi9wbHVnaW5zL3R5cGVzY3JpcHQvdHlwZWQtZG9jdW1lbnQtbm9kZSkuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbGlzdC1kZXRhaWwtdmlld3NcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8XHJcbiAgICBUIGV4dGVuZHMgVHlwZWREb2N1bWVudE5vZGU8YW55LCBhbnk+LFxyXG4gICAgRmllbGQgZXh0ZW5kcyBrZXlvZiBSZXN1bHRPZjxUPixcclxuPiBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8Tm9uTnVsbGFibGU8UmVzdWx0T2Y8VD5bRmllbGRdPj4ge1xyXG4gICAgcHJvdGVjdGVkIHJlc3VsdCQ6IE9ic2VydmFibGU8UmVzdWx0T2Y8VD4+O1xyXG4gICAgcHJvdGVjdGVkIGVudGl0eTogUmVzdWx0T2Y8VD5bRmllbGRdO1xyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcihpbmplY3QoQWN0aXZhdGVkUm91dGUpLCBpbmplY3QoUm91dGVyKSwgaW5qZWN0KFNlcnZlckNvbmZpZ1NlcnZpY2UpLCBpbmplY3QoRGF0YVNlcnZpY2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBpbml0KCkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5JCA9IHRoaXMucm91dGUuZGF0YS5waXBlKFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PlxyXG4gICAgICAgICAgICAgICAgKGRhdGEuZGV0YWlsLmVudGl0eSBhcyBPYnNlcnZhYmxlPFJlc3VsdE9mPFQ+W0ZpZWxkXT4pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCksXHJcbiAgICAgICAgICAgIHRhcChlbnRpdHkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IGVudGl0eS5pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3VsdCQgPSB0aGlzLnJvdXRlLmRhdGEucGlwZShcclxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5kZXRhaWwucmVzdWx0KSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmlzTmV3JCA9IHRoaXMucm91dGUuZGF0YS5waXBlKFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PiBkYXRhLmRldGFpbC5lbnRpdHkpLFxyXG4gICAgICAgICAgICBtYXAoZW50aXR5ID0+ICFlbnRpdHkpLFxyXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0VXBTdHJlYW1zKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHRhYnMgdGhhdCBwb2ludCB0byBhIHtAbGluayBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnR9LiBUaGlzIHRha2VzXHJcbiAqIGNhcmUgb2YgdGhlIHJvdXRlIHJlc29sdmVyIHBhcnRzIHNvIHRoYXQgdGhlIGRldGFpbCBjb21wb25lbnQgYXV0b21hdGljYWxseSBoYXMgYWNjZXNzIHRvIHRoZVxyXG4gKiBjb3JyZWN0IHJlc29sdmVkIGRldGFpbCBkYXRhLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBUeXBlU2NyaXB0XHJcbiAqIFxcQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbUmV2aWV3c1NoYXJlZE1vZHVsZV0sXHJcbiAqICAgZGVjbGFyYXRpb25zOiBbLyogLi4uICpcXC9dLFxyXG4gKiAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgcmVnaXN0ZXJQYWdlVGFiKHtcclxuICogICAgICAgbG9jYXRpb246ICdwcm9kdWN0LWRldGFpbCcsXHJcbiAqICAgICAgIHRhYjogJ1NwZWNzJyxcclxuICogICAgICAgcm91dGU6ICdzcGVjcycsXHJcbiAqICAgICAgIGNvbXBvbmVudDogZGV0YWlsQ29tcG9uZW50V2l0aFJlc29sdmVyKHtcclxuICogICAgICAgICBjb21wb25lbnQ6IFByb2R1Y3RTcGVjRGV0YWlsQ29tcG9uZW50LFxyXG4gKiAgICAgICAgIHF1ZXJ5OiBHZXRQcm9kdWN0U3BlY3NEb2N1bWVudCxcclxuICogICAgICAgICBlbnRpdHlLZXk6ICdzcGVjJyxcclxuICogICAgICAgfSksXHJcbiAqICAgICB9KSxcclxuICogICBdLFxyXG4gKiB9KVxyXG4gKiBleHBvcnQgY2xhc3MgUHJvZHVjdFNwZWNzVWlFeHRlbnNpb25Nb2R1bGUge31cclxuICogYGBgXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbGlzdC1kZXRhaWwtdmlld3NcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZXRhaWxDb21wb25lbnRXaXRoUmVzb2x2ZXI8XHJcbiAgICBUIGV4dGVuZHMgVHlwZWREb2N1bWVudE5vZGU8YW55LCB7IGlkOiBzdHJpbmcgfT4sXHJcbiAgICBGaWVsZCBleHRlbmRzIGtleW9mIFJlc3VsdE9mPFQ+LFxyXG4gICAgUiBleHRlbmRzIEZpZWxkLFxyXG4+KGNvbmZpZzoge1xyXG4gICAgY29tcG9uZW50OiBUeXBlPFR5cGVkQmFzZURldGFpbENvbXBvbmVudDxULCBGaWVsZD4+O1xyXG4gICAgcXVlcnk6IFQ7XHJcbiAgICBlbnRpdHlLZXk6IFI7XHJcbiAgICBnZXRCcmVhZGNydW1icz86IChlbnRpdHk6IFJlc3VsdE9mPFQ+W1JdKSA9PiBCcmVhZGNydW1iVmFsdWU7XHJcbn0pIHtcclxuICAgIGNvbnN0IHJlc29sdmVGbjogUmVzb2x2ZUZuPHsgZW50aXR5OiBPYnNlcnZhYmxlPFJlc3VsdE9mPFQ+W0ZpZWxkXSB8IG51bGw+OyByZXN1bHQ/OiBSZXN1bHRPZjxUPiB9PiA9IChcclxuICAgICAgICByb3V0ZSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0KERhdGFTZXJ2aWNlKTtcclxuICAgICAgICBjb25zdCBpZCA9IHJvdXRlLnBhcmFtTWFwLmdldCgnaWQnKTtcclxuXHJcbiAgICAgICAgLy8gQ29tcGxldGUgdGhlIGVudGl0eSBzdHJlYW0gdXBvbiBuYXZpZ2F0aW5nIGF3YXlcclxuICAgICAgICBjb25zdCBuYXZpZ2F0ZUF3YXkkID0gcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIEFjdGl2YXRpb25TdGFydCkpO1xyXG5cclxuICAgICAgICBpZiAoaWQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGlkIGZvdW5kIGluIHJvdXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZCA9PT0gJ2NyZWF0ZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHsgZW50aXR5OiBvZihudWxsKSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQkID0gZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5xdWVyeShjb25maWcucXVlcnksIHsgaWQgfSlcclxuICAgICAgICAgICAgICAgIC5yZWZldGNoT25DaGFubmVsQ2hhbmdlKClcclxuICAgICAgICAgICAgICAgIC5zdHJlYW0kLnBpcGUodGFrZVVudGlsKG5hdmlnYXRlQXdheSQpLCBzaGFyZVJlcGxheSgxKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVudGl0eSQgPSByZXN1bHQkLnBpcGUobWFwKHJlc3VsdCA9PiByZXN1bHRbY29uZmlnLmVudGl0eUtleV0pKTtcclxuICAgICAgICAgICAgY29uc3QgZW50aXR5U3RyZWFtJCA9IGVudGl0eSQucGlwZShmaWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQkLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiBlbnRpdHlTdHJlYW0kLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcclxuICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICByZXNvbHZlRm4sXHJcbiAgICAgICAgYnJlYWRjcnVtYkZuOiAocmVzdWx0OiBhbnkpID0+IGNvbmZpZy5nZXRCcmVhZGNydW1icz8uKHJlc3VsdCkgPz8gKFtdIGFzIEJyZWFkY3J1bWJWYWx1ZVtdKSxcclxuICAgICAgICBjb21wb25lbnQ6IGNvbmZpZy5jb21wb25lbnQsXHJcbiAgICB9O1xyXG59XHJcbiJdfQ==
@@ -168,4 +168,4 @@ export class TypedBaseListComponent extends BaseListComponent {
168
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: TypedBaseListComponent, decorators: [{
169
169
  type: Directive
170
170
  }], ctorParameters: function () { return []; } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL2Jhc2UtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUF1QixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUU3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBZ0JqRTs7Ozs7Ozs7R0FRRztBQUVILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8saUJBQWlCO0lBdUIxQixZQUFzQixNQUFjLEVBQVksS0FBcUI7UUFBL0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBcEJyRSxzQkFBaUIsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxxQkFB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Q0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07YUFDMUMsT0FBTyxFQUFFO2FBQ1QsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQzthQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixPQUFPLElBQUkseUJBQXlCLENBQXlDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSx1QkFBdUIsQ0FBdUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBa0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQThDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBekRRLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBRdWVyeVBhcmFtc0hhbmRsaW5nLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUmVzdWx0T2YsIFR5cGVkRG9jdW1lbnROb2RlLCBWYXJpYWJsZXNPZiB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBRdWVyeVJlc3VsdCB9IGZyb20gJy4uL2RhdGEvcXVlcnktcmVzdWx0JztcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3NlcnZlci1jb25maWcnO1xuaW1wb3J0IHsgRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbiB9IGZyb20gJy4uL3Byb3ZpZGVycy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtZmlsdGVyLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRGF0YVRhYmxlU29ydENvbGxlY3Rpb24gfSBmcm9tICcuLi9wcm92aWRlcnMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLXNvcnQtY29sbGVjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgQ3VzdG9tRmllbGRzLCBMYW5ndWFnZUNvZGUgfSBmcm9tICcuL2dlbmVyYXRlZC10eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi91dGlsaXRpZXMvc2VsZWN0aW9uLW1hbmFnZXInO1xuXG5leHBvcnQgdHlwZSBMaXN0UXVlcnlGbjxSPiA9ICh0YWtlOiBudW1iZXIsIHNraXA6IG51bWJlciwgLi4uYXJnczogYW55W10pID0+IFF1ZXJ5UmVzdWx0PFIsIGFueT47XG5leHBvcnQgdHlwZSBNYXBwaW5nRm48VCwgUj4gPSAocmVzdWx0OiBSKSA9PiB7IGl0ZW1zOiBUW107IHRvdGFsSXRlbXM6IG51bWJlciB9O1xuZXhwb3J0IHR5cGUgT25QYWdlQ2hhbmdlRm48Vj4gPSAoc2tpcDogbnVtYmVyLCB0YWtlOiBudW1iZXIpID0+IFY7XG5cbi8qKlxuICogVW53cmFwcyBhIHF1ZXJ5IHRoYXQgcmV0dXJucyBhIHBhZ2luYXRlZCBsaXN0IHdpdGggYW4gXCJpdGVtc1wiIHByb3BlcnR5LFxuICogcmV0dXJuaW5nIHRoZSB0eXBlIG9mIG9uZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxuICovXG5leHBvcnQgdHlwZSBJdGVtT2Y8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gVFtLXSBleHRlbmRzIHsgaXRlbXM6IGluZmVyIFIgfVxuICAgID8gUiBleHRlbmRzIGFueVtdXG4gICAgICAgID8gUltudW1iZXJdXG4gICAgICAgIDogUlxuICAgIDogbmV2ZXI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGlzIGEgYmFzZSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2dpYyByZXF1aXJlZCB0byBmZXRjaCBhbmQgbWFuaXB1bGF0ZVxuICogYSBsaXN0IG9mIGRhdGEgZnJvbSBhIHF1ZXJ5IHdoaWNoIHJldHVybnMgYSBQYWdpbmF0ZWRMaXN0IHR5cGUuXG4gKlxuICogSXQgaXMgbm9ybWFsbHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSB7QGxpbmsgRGF0YVRhYmxlMkNvbXBvbmVudH0uXG4gKlxuICogQGRvY3NDYXRlZ29yeSBsaXN0LWRldGFpbC12aWV3c1xuICovXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEJhc2VMaXN0Q29tcG9uZW50PFJlc3VsdFR5cGUsIEl0ZW1UeXBlLCBWYXJpYWJsZVR5cGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gYW55PlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBzZWFyY2hUZXJtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgc2VsZWN0aW9uTWFuYWdlciA9IG5ldyBTZWxlY3Rpb25NYW5hZ2VyPGFueT4oe1xuICAgICAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcbiAgICAgICAgaXRlbXNBcmVFcXVhbDogKGEsIGIpID0+IGEuaWQgPT09IGIuaWQsXG4gICAgICAgIGFkZGl0aXZlTW9kZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXN1bHQkOiBPYnNlcnZhYmxlPFJlc3VsdFR5cGU+O1xuICAgIGl0ZW1zJDogT2JzZXJ2YWJsZTxJdGVtVHlwZVtdPjtcbiAgICB0b3RhbEl0ZW1zJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIGl0ZW1zUGVyUGFnZSQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBjdXJyZW50UGFnZSQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgbGlzdFF1ZXJ5OiBRdWVyeVJlc3VsdDxSZXN1bHRUeXBlLCBWYXJpYWJsZVR5cGU+O1xuICAgIHByaXZhdGUgbGlzdFF1ZXJ5Rm46IExpc3RRdWVyeUZuPFJlc3VsdFR5cGU+O1xuICAgIHByaXZhdGUgbWFwcGluZ0ZuOiBNYXBwaW5nRm48SXRlbVR5cGUsIFJlc3VsdFR5cGU+O1xuICAgIHByaXZhdGUgb25QYWdlQ2hhbmdlRm46IE9uUGFnZUNoYW5nZUZuPFZhcmlhYmxlVHlwZT4gPSAoc2tpcCwgdGFrZSkgPT5cbiAgICAgICAgKHsgb3B0aW9uczogeyBza2lwLCB0YWtlIH0gfSBhcyBhbnkpO1xuICAgIHByb3RlY3RlZCByZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgZGVmYXVsdHM6IHsgdGFrZTogbnVtYmVyOyBza2lwOiBudW1iZXIgfSA9IHsgdGFrZTogMTAsIHNraXA6IDAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFNldHMgdGhlIGZldGNoIGZ1bmN0aW9uIGZvciB0aGUgbGlzdCBiZWluZyBpbXBsZW1lbnRlZC5cbiAgICAgKi9cbiAgICBzZXRRdWVyeUZuKFxuICAgICAgICBsaXN0UXVlcnlGbjogTGlzdFF1ZXJ5Rm48UmVzdWx0VHlwZT4sXG4gICAgICAgIG1hcHBpbmdGbjogTWFwcGluZ0ZuPEl0ZW1UeXBlLCBSZXN1bHRUeXBlPixcbiAgICAgICAgb25QYWdlQ2hhbmdlRm4/OiBPblBhZ2VDaGFuZ2VGbjxWYXJpYWJsZVR5cGU+LFxuICAgICAgICBkZWZhdWx0cz86IHsgdGFrZTogbnVtYmVyOyBza2lwOiBudW1iZXIgfSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5saXN0UXVlcnlGbiA9IGxpc3RRdWVyeUZuO1xuICAgICAgICB0aGlzLm1hcHBpbmdGbiA9IG1hcHBpbmdGbjtcbiAgICAgICAgaWYgKG9uUGFnZUNoYW5nZUZuKSB7XG4gICAgICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZUZuID0gb25QYWdlQ2hhbmdlRm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmF1bHRzKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5saXN0UXVlcnlGbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBObyBsaXN0UXVlcnlGbiBoYXMgYmVlbiBkZWZpbmVkLiBQbGVhc2UgY2FsbCBzdXBlci5zZXRRdWVyeUZuKCkgaW4gdGhlIGNvbnN0cnVjdG9yLmAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdFF1ZXJ5ID0gdGhpcy5saXN0UXVlcnlGbih0aGlzLmRlZmF1bHRzLnRha2UsIHRoaXMuZGVmYXVsdHMuc2tpcCk7XG5cbiAgICAgICAgY29uc3QgZmV0Y2hQYWdlID0gKFtjdXJyZW50UGFnZSwgaXRlbXNQZXJQYWdlLCBfXTogW251bWJlciwgbnVtYmVyLCB1bmRlZmluZWRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWtlID0gaXRlbXNQZXJQYWdlO1xuICAgICAgICAgICAgY29uc3Qgc2tpcCA9IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgICAgICAgICAgdGhpcy5saXN0UXVlcnkucmVmLnJlZmV0Y2godGhpcy5vblBhZ2VDaGFuZ2VGbihza2lwLCB0YWtlKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZXN1bHQkID0gdGhpcy5saXN0UXVlcnkuc3RyZWFtJC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgICAgdGhpcy5pdGVtcyQgPSB0aGlzLnJlc3VsdCQucGlwZShtYXAoZGF0YSA9PiB0aGlzLm1hcHBpbmdGbihkYXRhKS5pdGVtcykpO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkudG90YWxJdGVtcykpO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlJCA9IHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5waXBlKFxuICAgICAgICAgICAgbWFwKHFwbSA9PiBxcG0uZ2V0KCdwYWdlJykpLFxuICAgICAgICAgICAgbWFwKHBhZ2UgPT4gKCFwYWdlID8gMSA6ICtwYWdlKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSQgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICAgICAgICAgIG1hcChxcG0gPT4gcXBtLmdldCgncGVyUGFnZScpKSxcbiAgICAgICAgICAgIG1hcChwZXJQYWdlID0+ICghcGVyUGFnZSA/IHRoaXMuZGVmYXVsdHMudGFrZSA6ICtwZXJQYWdlKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5jdXJyZW50UGFnZSQsIHRoaXMuaXRlbXNQZXJQYWdlJCwgdGhpcy5yZWZyZXNoJClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZmV0Y2hQYWdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBBY2NlcHRzIGEgbGlzdCBvZiBPYnNlcnZhYmxlcyB3aGljaCB3aWxsIHRyaWdnZXIgYSByZWZyZXNoIG9mIHRoZSBsaXN0IHdoZW4gYW55IG9mIHRoZW0gZW1pdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVmcmVzaExpc3RPbkNoYW5nZXMoLi4uc3RyZWFtczogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+Pikge1xuICAgICAgICBjb25zdCBzZWFyY2hUZXJtJCA9IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IG51bGwgJiYgKDIgPCB2YWx1ZS5sZW5ndGggfHwgdmFsdWUubGVuZ3RoID09PSAwKSksXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcbiAgICAgICAgKTtcblxuICAgICAgICBtZXJnZShzZWFyY2hUZXJtJCwgLi4uc3RyZWFtcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoJC5uZXh0KHVuZGVmaW5lZCkpO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5saXN0UXVlcnkuY29tcGxldGVkJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogU2V0cyB0aGUgY3VycmVudCBwYWdlIG51bWJlciBpbiB0aGUgdXJsLlxuICAgICAqL1xuICAgIHNldFBhZ2VOdW1iZXIocGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0UXVlcnlQYXJhbSgncGFnZScsIHBhZ2UsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTZXRzIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGhlIHVybC5cbiAgICAgKi9cbiAgICBzZXRJdGVtc1BlclBhZ2UocGVyUGFnZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0UXVlcnlQYXJhbSgncGVyUGFnZScsIHBlclBhZ2UsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZS1mZXRjaCB0aGUgY3VycmVudCBwYWdlIG9mIHJlc3VsdHMuXG4gICAgICovXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oXG4gICAgICAgIGhhc2g6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgICAgIG9wdGlvbnM/OiB7IHJlcGxhY2VVcmw/OiBib29sZWFuOyBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZyB9LFxuICAgICk7XG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICB2YWx1ZTogYW55LFxuICAgICAgICBvcHRpb25zPzogeyByZXBsYWNlVXJsPzogYm9vbGVhbjsgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSxcbiAgICApO1xuICAgIHByb3RlY3RlZCBzZXRRdWVyeVBhcmFtKFxuICAgICAgICBrZXlPckhhc2g6IHN0cmluZyB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgICAgIHZhbHVlT3JPcHRpb25zPzogYW55LFxuICAgICAgICBtYXliZU9wdGlvbnM/OiB7IHJlcGxhY2VVcmw/OiBib29sZWFuOyBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZyB9LFxuICAgICkge1xuICAgICAgICBjb25zdCBwYXJhbXNPYmplY3QgPSB0eXBlb2Yga2V5T3JIYXNoID09PSAnc3RyaW5nJyA/IHsgW2tleU9ySGFzaF06IHZhbHVlT3JPcHRpb25zIH0gOiBrZXlPckhhc2g7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAodHlwZW9mIGtleU9ySGFzaCA9PT0gJ3N0cmluZycgPyBtYXliZU9wdGlvbnMgOiB2YWx1ZU9yT3B0aW9ucykgPz8ge307XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHR5cGVvZiBrZXlPckhhc2ggPT09ICdzdHJpbmcnID8geyBba2V5T3JIYXNoXTogdmFsdWVPck9wdGlvbnMgfSA6IGtleU9ySGFzaCxcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQSB2ZXJzaW9uIG9mIHRoZSB7QGxpbmsgQmFzZUxpc3RDb21wb25lbnR9IHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCBhXG4gKiBbVHlwZWREb2N1bWVudE5vZGVdKGh0dHBzOi8vdGhlLWd1aWxkLmRldi9ncmFwaHFsL2NvZGVnZW4vcGx1Z2lucy90eXBlc2NyaXB0L3R5cGVkLWRvY3VtZW50LW5vZGUpLlxuICpcbiAqIEBkb2NzQ2F0ZWdvcnkgbGlzdC1kZXRhaWwtdmlld3NcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgVHlwZWRCYXNlTGlzdENvbXBvbmVudDxcbiAgICAgICAgVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGFueSwgVmFycz4sXG4gICAgICAgIEZpZWxkIGV4dGVuZHMga2V5b2YgUmVzdWx0T2Y8VD4sXG4gICAgICAgIFZhcnMgZXh0ZW5kcyB7IG9wdGlvbnM6IHsgZmlsdGVyOiBhbnk7IHNvcnQ6IGFueSB9IH0gPSBWYXJpYWJsZXNPZjxUPixcbiAgICA+XG4gICAgZXh0ZW5kcyBCYXNlTGlzdENvbXBvbmVudDxSZXN1bHRPZjxUPiwgSXRlbU9mPFJlc3VsdE9mPFQ+LCBGaWVsZD4sIFZhcmlhYmxlc09mPFQ+PlxuICAgIGltcGxlbWVudHMgT25Jbml0XG57XG4gICAgYXZhaWxhYmxlTGFuZ3VhZ2VzJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGVbXT47XG4gICAgY29udGVudExhbmd1YWdlJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGU+O1xuXG4gICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlID0gaW5qZWN0KERhdGFTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJvdGVjdGVkIHNlcnZlckNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoU2VydmVyQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWZyZXNoU3RyZWFtczogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PiA9IFtdO1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihpbmplY3QoUm91dGVyKSwgaW5qZWN0KEFjdGl2YXRlZFJvdXRlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbmZpZ3VyZShjb25maWc6IHtcbiAgICAgICAgZG9jdW1lbnQ6IFQ7XG4gICAgICAgIGdldEl0ZW1zOiAoZGF0YTogUmVzdWx0T2Y8VD4pID0+IHsgaXRlbXM6IEFycmF5PEl0ZW1PZjxSZXN1bHRPZjxUPiwgRmllbGQ+PjsgdG90YWxJdGVtczogbnVtYmVyIH07XG4gICAgICAgIHNldFZhcmlhYmxlcz86IChza2lwOiBudW1iZXIsIHRha2U6IG51bWJlcikgPT4gVmFyaWFibGVzT2Y8VD47XG4gICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzPzogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PjtcbiAgICB9KSB7XG4gICAgICAgIHN1cGVyLnNldFF1ZXJ5Rm4oXG4gICAgICAgICAgICAoYXJnczogYW55KSA9PiB0aGlzLmRhdGFTZXJ2aWNlLnF1ZXJ5KGNvbmZpZy5kb2N1bWVudCkucmVmZXRjaE9uQ2hhbm5lbENoYW5nZSgpLFxuICAgICAgICAgICAgZGF0YSA9PiBjb25maWcuZ2V0SXRlbXMoZGF0YSksXG4gICAgICAgICAgICAoc2tpcCwgdGFrZSkgPT4gY29uZmlnLnNldFZhcmlhYmxlcz8uKHNraXAsIHRha2UpID8/ICh7fSBhcyBhbnkpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyQgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XG4gICAgICAgIHRoaXMuY29udGVudExhbmd1YWdlJCA9IHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50XG4gICAgICAgICAgICAudWlTdGF0ZSgpXG4gICAgICAgICAgICAubWFwU3RyZWFtKCh7IHVpU3RhdGUgfSkgPT4gdWlTdGF0ZS5jb250ZW50TGFuZ3VhZ2UpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5yZWZyZXNoKCkpKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU3RyZWFtcyA9IGNvbmZpZy5yZWZyZXNoTGlzdE9uQ2hhbmdlcyA/PyBbXTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgc3VwZXIucmVmcmVzaExpc3RPbkNoYW5nZXModGhpcy5jb250ZW50TGFuZ3VhZ2UkLCAuLi50aGlzLnJlZnJlc2hTdHJlYW1zKTtcbiAgICB9XG5cbiAgICBjcmVhdGVGaWx0ZXJDb2xsZWN0aW9uKCk6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddPlsnZmlsdGVyJ10+PiB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxOb25OdWxsYWJsZTxWYXJzWydvcHRpb25zJ11bJ2ZpbHRlciddPj4odGhpcy5yb3V0ZXIpO1xuICAgIH1cblxuICAgIGNyZWF0ZVNvcnRDb2xsZWN0aW9uKCk6IERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFZhcnNbJ29wdGlvbnMnXT5bJ3NvcnQnXT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhVGFibGVTb3J0Q29sbGVjdGlvbjxOb25OdWxsYWJsZTxWYXJzWydvcHRpb25zJ11bJ3NvcnQnXT4+KHRoaXMucm91dGVyKTtcbiAgICB9XG5cbiAgICBzZXRMYW5ndWFnZShjb2RlOiBMYW5ndWFnZUNvZGUpIHtcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQuc2V0Q29udGVudExhbmd1YWdlKGNvZGUpLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGdldEN1c3RvbUZpZWxkQ29uZmlnKGtleTogRXhjbHVkZTxrZXlvZiBDdXN0b21GaWVsZHMsICdfX3R5cGVuYW1lJz4pOiBDdXN0b21GaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmVyQ29uZmlnU2VydmljZS5nZXRDdXN0b21GaWVsZHNGb3Ioa2V5KTtcbiAgICB9XG59XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL2Jhc2UtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUF1QixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUU3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBZ0JqRTs7Ozs7Ozs7R0FRRztBQUVILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8saUJBQWlCO0lBdUIxQixZQUFzQixNQUFjLEVBQVksS0FBcUI7UUFBL0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBcEJyRSxzQkFBaUIsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxxQkFB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Q0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07YUFDMUMsT0FBTyxFQUFFO2FBQ1QsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQzthQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixPQUFPLElBQUkseUJBQXlCLENBQXlDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSx1QkFBdUIsQ0FBdUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBa0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQThDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBekRRLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUXVlcnlQYXJhbXNIYW5kbGluZywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmVzdWx0T2YsIFR5cGVkRG9jdW1lbnROb2RlLCBWYXJpYWJsZXNPZiB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgUXVlcnlSZXN1bHQgfSBmcm9tICcuLi9kYXRhL3F1ZXJ5LXJlc3VsdCc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRhL3NlcnZlci1jb25maWcnO1xyXG5pbXBvcnQgeyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1zb3J0LWNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgQ3VzdG9tRmllbGRzLCBMYW5ndWFnZUNvZGUgfSBmcm9tICcuL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1hbmFnZXIgfSBmcm9tICcuL3V0aWxpdGllcy9zZWxlY3Rpb24tbWFuYWdlcic7XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0UXVlcnlGbjxSPiA9ICh0YWtlOiBudW1iZXIsIHNraXA6IG51bWJlciwgLi4uYXJnczogYW55W10pID0+IFF1ZXJ5UmVzdWx0PFIsIGFueT47XHJcbmV4cG9ydCB0eXBlIE1hcHBpbmdGbjxULCBSPiA9IChyZXN1bHQ6IFIpID0+IHsgaXRlbXM6IFRbXTsgdG90YWxJdGVtczogbnVtYmVyIH07XHJcbmV4cG9ydCB0eXBlIE9uUGFnZUNoYW5nZUZuPFY+ID0gKHNraXA6IG51bWJlciwgdGFrZTogbnVtYmVyKSA9PiBWO1xyXG5cclxuLyoqXHJcbiAqIFVud3JhcHMgYSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCB3aXRoIGFuIFwiaXRlbXNcIiBwcm9wZXJ0eSxcclxuICogcmV0dXJuaW5nIHRoZSB0eXBlIG9mIG9uZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgSXRlbU9mPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbS10gZXh0ZW5kcyB7IGl0ZW1zOiBpbmZlciBSIH1cclxuICAgID8gUiBleHRlbmRzIGFueVtdXHJcbiAgICAgICAgPyBSW251bWJlcl1cclxuICAgICAgICA6IFJcclxuICAgIDogbmV2ZXI7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoaXMgaXMgYSBiYXNlIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIGZldGNoIGFuZCBtYW5pcHVsYXRlXHJcbiAqIGEgbGlzdCBvZiBkYXRhIGZyb20gYSBxdWVyeSB3aGljaCByZXR1cm5zIGEgUGFnaW5hdGVkTGlzdCB0eXBlLlxyXG4gKlxyXG4gKiBJdCBpcyBub3JtYWxseSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHtAbGluayBEYXRhVGFibGUyQ29tcG9uZW50fS5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBsaXN0LWRldGFpbC12aWV3c1xyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQmFzZUxpc3RDb21wb25lbnQ8UmVzdWx0VHlwZSwgSXRlbVR5cGUsIFZhcmlhYmxlVHlwZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBhbnk+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIHNlYXJjaFRlcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICAgIHNlbGVjdGlvbk1hbmFnZXIgPSBuZXcgU2VsZWN0aW9uTWFuYWdlcjxhbnk+KHtcclxuICAgICAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcclxuICAgICAgICBpdGVtc0FyZUVxdWFsOiAoYSwgYikgPT4gYS5pZCA9PT0gYi5pZCxcclxuICAgICAgICBhZGRpdGl2ZU1vZGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHJlc3VsdCQ6IE9ic2VydmFibGU8UmVzdWx0VHlwZT47XHJcbiAgICBpdGVtcyQ6IE9ic2VydmFibGU8SXRlbVR5cGVbXT47XHJcbiAgICB0b3RhbEl0ZW1zJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgaXRlbXNQZXJQYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgY3VycmVudFBhZ2UkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBsaXN0UXVlcnk6IFF1ZXJ5UmVzdWx0PFJlc3VsdFR5cGUsIFZhcmlhYmxlVHlwZT47XHJcbiAgICBwcml2YXRlIGxpc3RRdWVyeUZuOiBMaXN0UXVlcnlGbjxSZXN1bHRUeXBlPjtcclxuICAgIHByaXZhdGUgbWFwcGluZ0ZuOiBNYXBwaW5nRm48SXRlbVR5cGUsIFJlc3VsdFR5cGU+O1xyXG4gICAgcHJpdmF0ZSBvblBhZ2VDaGFuZ2VGbjogT25QYWdlQ2hhbmdlRm48VmFyaWFibGVUeXBlPiA9IChza2lwLCB0YWtlKSA9PlxyXG4gICAgICAgICh7IG9wdGlvbnM6IHsgc2tpcCwgdGFrZSB9IH0gYXMgYW55KTtcclxuICAgIHByb3RlY3RlZCByZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gICAgcHJpdmF0ZSBkZWZhdWx0czogeyB0YWtlOiBudW1iZXI7IHNraXA6IG51bWJlciB9ID0geyB0YWtlOiAxMCwgc2tpcDogMCB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogU2V0cyB0aGUgZmV0Y2ggZnVuY3Rpb24gZm9yIHRoZSBsaXN0IGJlaW5nIGltcGxlbWVudGVkLlxyXG4gICAgICovXHJcbiAgICBzZXRRdWVyeUZuKFxyXG4gICAgICAgIGxpc3RRdWVyeUZuOiBMaXN0UXVlcnlGbjxSZXN1bHRUeXBlPixcclxuICAgICAgICBtYXBwaW5nRm46IE1hcHBpbmdGbjxJdGVtVHlwZSwgUmVzdWx0VHlwZT4sXHJcbiAgICAgICAgb25QYWdlQ2hhbmdlRm4/OiBPblBhZ2VDaGFuZ2VGbjxWYXJpYWJsZVR5cGU+LFxyXG4gICAgICAgIGRlZmF1bHRzPzogeyB0YWtlOiBudW1iZXI7IHNraXA6IG51bWJlciB9LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UXVlcnlGbiA9IGxpc3RRdWVyeUZuO1xyXG4gICAgICAgIHRoaXMubWFwcGluZ0ZuID0gbWFwcGluZ0ZuO1xyXG4gICAgICAgIGlmIChvblBhZ2VDaGFuZ2VGbikge1xyXG4gICAgICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZUZuID0gb25QYWdlQ2hhbmdlRm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWZhdWx0cykge1xyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0gZGVmYXVsdHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5saXN0UXVlcnlGbikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgTm8gbGlzdFF1ZXJ5Rm4gaGFzIGJlZW4gZGVmaW5lZC4gUGxlYXNlIGNhbGwgc3VwZXIuc2V0UXVlcnlGbigpIGluIHRoZSBjb25zdHJ1Y3Rvci5gLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpc3RRdWVyeSA9IHRoaXMubGlzdFF1ZXJ5Rm4odGhpcy5kZWZhdWx0cy50YWtlLCB0aGlzLmRlZmF1bHRzLnNraXApO1xyXG5cclxuICAgICAgICBjb25zdCBmZXRjaFBhZ2UgPSAoW2N1cnJlbnRQYWdlLCBpdGVtc1BlclBhZ2UsIF9dOiBbbnVtYmVyLCBudW1iZXIsIHVuZGVmaW5lZF0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFrZSA9IGl0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgICAgY29uc3Qgc2tpcCA9IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RRdWVyeS5yZWYucmVmZXRjaCh0aGlzLm9uUGFnZUNoYW5nZUZuKHNraXAsIHRha2UpKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnJlc3VsdCQgPSB0aGlzLmxpc3RRdWVyeS5zdHJlYW0kLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgICAgIHRoaXMuaXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkuaXRlbXMpKTtcclxuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkID0gdGhpcy5yZXN1bHQkLnBpcGUobWFwKGRhdGEgPT4gdGhpcy5tYXBwaW5nRm4oZGF0YSkudG90YWxJdGVtcykpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UkID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChxcG0gPT4gcXBtLmdldCgncGFnZScpKSxcclxuICAgICAgICAgICAgbWFwKHBhZ2UgPT4gKCFwYWdlID8gMSA6ICtwYWdlKSksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSQgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcclxuICAgICAgICAgICAgbWFwKHFwbSA9PiBxcG0uZ2V0KCdwZXJQYWdlJykpLFxyXG4gICAgICAgICAgICBtYXAocGVyUGFnZSA9PiAoIXBlclBhZ2UgPyB0aGlzLmRlZmF1bHRzLnRha2UgOiArcGVyUGFnZSkpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5jdXJyZW50UGFnZSQsIHRoaXMuaXRlbXNQZXJQYWdlJCwgdGhpcy5yZWZyZXNoJClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGZldGNoUGFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIEFjY2VwdHMgYSBsaXN0IG9mIE9ic2VydmFibGVzIHdoaWNoIHdpbGwgdHJpZ2dlciBhIHJlZnJlc2ggb2YgdGhlIGxpc3Qgd2hlbiBhbnkgb2YgdGhlbSBlbWl0LlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVmcmVzaExpc3RPbkNoYW5nZXMoLi4uc3RyZWFtczogQXJyYXk8T2JzZXJ2YWJsZTxhbnk+Pikge1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFRlcm0kID0gdGhpcy5zZWFyY2hUZXJtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBudWxsICYmICgyIDwgdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpLFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBtZXJnZShzZWFyY2hUZXJtJCwgLi4uc3RyZWFtcylcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVmcmVzaCQubmV4dCh1bmRlZmluZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGludGVybmFsICovXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5saXN0UXVlcnkuY29tcGxldGVkJC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFNldHMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgaW4gdGhlIHVybC5cclxuICAgICAqL1xyXG4gICAgc2V0UGFnZU51bWJlcihwYWdlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnNldFF1ZXJ5UGFyYW0oJ3BhZ2UnLCBwYWdlLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFNldHMgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBpbiB0aGUgdXJsLlxyXG4gICAgICovXHJcbiAgICBzZXRJdGVtc1BlclBhZ2UocGVyUGFnZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXRRdWVyeVBhcmFtKCdwZXJQYWdlJywgcGVyUGFnZSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBSZS1mZXRjaCB0aGUgY3VycmVudCBwYWdlIG9mIHJlc3VsdHMuXHJcbiAgICAgKi9cclxuICAgIHJlZnJlc2goKSB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldFF1ZXJ5UGFyYW0oXHJcbiAgICAgICAgaGFzaDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgICAgICBvcHRpb25zPzogeyByZXBsYWNlVXJsPzogYm9vbGVhbjsgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSxcclxuICAgICk7XHJcbiAgICBwcm90ZWN0ZWQgc2V0UXVlcnlQYXJhbShcclxuICAgICAgICBrZXk6IHN0cmluZyxcclxuICAgICAgICB2YWx1ZTogYW55LFxyXG4gICAgICAgIG9wdGlvbnM/OiB7IHJlcGxhY2VVcmw/OiBib29sZWFuOyBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZyB9LFxyXG4gICAgKTtcclxuICAgIHByb3RlY3RlZCBzZXRRdWVyeVBhcmFtKFxyXG4gICAgICAgIGtleU9ySGFzaDogc3RyaW5nIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgICAgICB2YWx1ZU9yT3B0aW9ucz86IGFueSxcclxuICAgICAgICBtYXliZU9wdGlvbnM/OiB7IHJlcGxhY2VVcmw/OiBib29sZWFuOyBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZyB9LFxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zT2JqZWN0ID0gdHlwZW9mIGtleU9ySGFzaCA9PT0gJ3N0cmluZycgPyB7IFtrZXlPckhhc2hdOiB2YWx1ZU9yT3B0aW9ucyB9IDoga2V5T3JIYXNoO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAodHlwZW9mIGtleU9ySGFzaCA9PT0gJ3N0cmluZycgPyBtYXliZU9wdGlvbnMgOiB2YWx1ZU9yT3B0aW9ucykgPz8ge307XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7XHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0eXBlb2Yga2V5T3JIYXNoID09PSAnc3RyaW5nJyA/IHsgW2tleU9ySGFzaF06IHZhbHVlT3JPcHRpb25zIH0gOiBrZXlPckhhc2gsXHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSB2ZXJzaW9uIG9mIHRoZSB7QGxpbmsgQmFzZUxpc3RDb21wb25lbnR9IHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCBhXHJcbiAqIFtUeXBlZERvY3VtZW50Tm9kZV0oaHR0cHM6Ly90aGUtZ3VpbGQuZGV2L2dyYXBocWwvY29kZWdlbi9wbHVnaW5zL3R5cGVzY3JpcHQvdHlwZWQtZG9jdW1lbnQtbm9kZSkuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbGlzdC1kZXRhaWwtdmlld3NcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgVHlwZWRCYXNlTGlzdENvbXBvbmVudDxcclxuICAgICAgICBUIGV4dGVuZHMgVHlwZWREb2N1bWVudE5vZGU8YW55LCBWYXJzPixcclxuICAgICAgICBGaWVsZCBleHRlbmRzIGtleW9mIFJlc3VsdE9mPFQ+LFxyXG4gICAgICAgIFZhcnMgZXh0ZW5kcyB7IG9wdGlvbnM6IHsgZmlsdGVyOiBhbnk7IHNvcnQ6IGFueSB9IH0gPSBWYXJpYWJsZXNPZjxUPixcclxuICAgID5cclxuICAgIGV4dGVuZHMgQmFzZUxpc3RDb21wb25lbnQ8UmVzdWx0T2Y8VD4sIEl0ZW1PZjxSZXN1bHRPZjxUPiwgRmllbGQ+LCBWYXJpYWJsZXNPZjxUPj5cclxuICAgIGltcGxlbWVudHMgT25Jbml0XHJcbntcclxuICAgIGF2YWlsYWJsZUxhbmd1YWdlcyQ6IE9ic2VydmFibGU8TGFuZ3VhZ2VDb2RlW10+O1xyXG4gICAgY29udGVudExhbmd1YWdlJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGU+O1xyXG5cclxuICAgIHByb3RlY3RlZCBkYXRhU2VydmljZSA9IGluamVjdChEYXRhU2VydmljZSk7XHJcbiAgICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICBwcm90ZWN0ZWQgc2VydmVyQ29uZmlnU2VydmljZSA9IGluamVjdChTZXJ2ZXJDb25maWdTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVmcmVzaFN0cmVhbXM6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBbXTtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoQWN0aXZhdGVkUm91dGUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlndXJlKGNvbmZpZzoge1xyXG4gICAgICAgIGRvY3VtZW50OiBUO1xyXG4gICAgICAgIGdldEl0ZW1zOiAoZGF0YTogUmVzdWx0T2Y8VD4pID0+IHsgaXRlbXM6IEFycmF5PEl0ZW1PZjxSZXN1bHRPZjxUPiwgRmllbGQ+PjsgdG90YWxJdGVtczogbnVtYmVyIH07XHJcbiAgICAgICAgc2V0VmFyaWFibGVzPzogKHNraXA6IG51bWJlciwgdGFrZTogbnVtYmVyKSA9PiBWYXJpYWJsZXNPZjxUPjtcclxuICAgICAgICByZWZyZXNoTGlzdE9uQ2hhbmdlcz86IEFycmF5PE9ic2VydmFibGU8YW55Pj47XHJcbiAgICB9KSB7XHJcbiAgICAgICAgc3VwZXIuc2V0UXVlcnlGbihcclxuICAgICAgICAgICAgKGFyZ3M6IGFueSkgPT4gdGhpcy5kYXRhU2VydmljZS5xdWVyeShjb25maWcuZG9jdW1lbnQpLnJlZmV0Y2hPbkNoYW5uZWxDaGFuZ2UoKSxcclxuICAgICAgICAgICAgZGF0YSA9PiBjb25maWcuZ2V0SXRlbXMoZGF0YSksXHJcbiAgICAgICAgICAgIChza2lwLCB0YWtlKSA9PiBjb25maWcuc2V0VmFyaWFibGVzPy4oc2tpcCwgdGFrZSkgPz8gKHt9IGFzIGFueSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyQgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50TGFuZ3VhZ2UkID0gdGhpcy5kYXRhU2VydmljZS5jbGllbnRcclxuICAgICAgICAgICAgLnVpU3RhdGUoKVxyXG4gICAgICAgICAgICAubWFwU3RyZWFtKCh7IHVpU3RhdGUgfSkgPT4gdWlTdGF0ZS5jb250ZW50TGFuZ3VhZ2UpXHJcbiAgICAgICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLnJlZnJlc2goKSkpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFN0cmVhbXMgPSBjb25maWcucmVmcmVzaExpc3RPbkNoYW5nZXMgPz8gW107XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBzdXBlci5yZWZyZXNoTGlzdE9uQ2hhbmdlcyh0aGlzLmNvbnRlbnRMYW5ndWFnZSQsIC4uLnRoaXMucmVmcmVzaFN0cmVhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbHRlckNvbGxlY3Rpb24oKTogRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxWYXJzWydvcHRpb25zJ10+WydmaWx0ZXInXT4+IHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248Tm9uTnVsbGFibGU8VmFyc1snb3B0aW9ucyddWydmaWx0ZXInXT4+KHRoaXMucm91dGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVTb3J0Q29sbGVjdGlvbigpOiBEYXRhVGFibGVTb3J0Q29sbGVjdGlvbjxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxWYXJzWydvcHRpb25zJ10+Wydzb3J0J10+PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhVGFibGVTb3J0Q29sbGVjdGlvbjxOb25OdWxsYWJsZTxWYXJzWydvcHRpb25zJ11bJ3NvcnQnXT4+KHRoaXMucm91dGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMYW5ndWFnZShjb2RlOiBMYW5ndWFnZUNvZGUpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5zZXRDb250ZW50TGFuZ3VhZ2UoY29kZSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q3VzdG9tRmllbGRDb25maWcoa2V5OiBFeGNsdWRlPGtleW9mIEN1c3RvbUZpZWxkcywgJ19fdHlwZW5hbWUnPik6IEN1c3RvbUZpZWxkQ29uZmlnW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0Q3VzdG9tRmllbGRzRm9yKGtleSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlZ2lzdHJ5LXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9jb21tb24vY29tcG9uZW50LXJlZ2lzdHJ5LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGludGVyZmFjZSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgYW55IGNvbXBvbmVudCBiZWluZyB1c2VkIGFzIGEgY3VzdG9tIGlucHV0LiBGb3IgZXhhbXBsZSxcbiAqIGlucHV0cyBmb3IgY3VzdG9tIGZpZWxkcywgb3IgZm9yIGNvbmZpZ3VyYWJsZSBhcmd1bWVudHMuXG4gKlxuICogQGRvY3NDYXRlZ29yeSBjdXN0b20taW5wdXQtY29tcG9uZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1JbnB1dENvbXBvbmVudDxDID0gSW5wdXRDb21wb25lbnRDb25maWc+IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTaG91bGQgYmUgc2V0IHRvIGB0cnVlYCBpZiB0aGlzIGNvbXBvbmVudCBpcyBkZXNpZ25lZCB0byBoYW5kbGUgbGlzdHMuXG4gICAgICogSWYgYHRydWVgIHRoZW4gdGhlIGZvcm1Db250cm9sIHZhbHVlIHdpbGwgYmUgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAqIHZhbHVlcyBpbiB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBpc0xpc3RJbnB1dD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhpcyBpcyBzZXQgYnkgdGhlIEFkbWluIFVJIHdoZW4gY29uc3VtaW5nIHRoaXMgY29tcG9uZW50LCBpbmRpY2F0aW5nIHRoYXQgdGhlXG4gICAgICogY29tcG9uZW50IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIHJlYWQtb25seSBzdGF0ZS5cbiAgICAgKi9cbiAgICByZWFkb25seTogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGlzIGNvbnRyb2xzIHRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIGZvcm0gaXRlbS4gVGhlIGN1cnJlbnQgdmFsdWUgaXMgYXZhaWxhYmxlXG4gICAgICogYXMgYHRoaXMuZm9ybUNvbnRyb2wudmFsdWVgLCBhbmQgYW4gT2JzZXJ2YWJsZSBzdHJlYW0gb2YgdmFsdWUgY2hhbmdlcyBpcyBhdmFpbGFibGVcbiAgICAgKiBhcyBgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNgLiBUbyB1cGRhdGUgdGhlIHZhbHVlLCB1c2UgYC5zZXRWYWx1ZSh2YWwpYCBhbmQgdGhlblxuICAgICAqIGAubWFya0FzRGlydHkoKWAuXG4gICAgICpcbiAgICAgKiBGdWxsIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBbQW5ndWxhciBkb2NzXShodHRwczovL2FuZ3VsYXIuaW8vYXBpL2Zvcm1zL0Zvcm1Db250cm9sKS5cbiAgICAgKi9cbiAgICBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoZSBgY29uZmlnYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgZnVsbCBjb25maWd1cmF0aW9uIG9iamVjdCBvZiB0aGUgY3VzdG9tIGZpZWxkIG9yIGNvbmZpZ3VyYWJsZSBhcmd1bWVudC5cbiAgICAgKi9cbiAgICBjb25maWc6IEM7XG59XG5cbmV4cG9ydCB0eXBlIElucHV0Q29tcG9uZW50Q29uZmlnID0ge1xuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIHZhbGlkIGxvY2F0aW9uSWRzIGZvciByZWdpc3RlcmluZyBhY3Rpb24gYmFyIGl0ZW1zIG9yIHRhYnMuXG4gKlxuICogQGRvY3NDYXRlZ29yeSBhY3Rpb24tYmFyXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VMb2NhdGlvbklkID1cbiAgICB8ICdhZG1pbmlzdHJhdG9yLWRldGFpbCdcbiAgICB8ICdhZG1pbmlzdHJhdG9yLWxpc3QnXG4gICAgfCAnYXNzZXQtZGV0YWlsJ1xuICAgIHwgJ2Fzc2V0LWxpc3QnXG4gICAgfCAnY2hhbm5lbC1kZXRhaWwnXG4gICAgfCAnY2hhbm5lbC1saXN0J1xuICAgIHwgJ2NvbGxlY3Rpb24tZGV0YWlsJ1xuICAgIHwgJ2NvbGxlY3Rpb24tbGlzdCdcbiAgICB8ICdjb3VudHJ5LWRldGFpbCdcbiAgICB8ICdjb3VudHJ5LWxpc3QnXG4gICAgfCAnY3VzdG9tZXItZGV0YWlsJ1xuICAgIHwgJ2N1c3RvbWVyLWxpc3QnXG4gICAgfCAnY3VzdG9tZXItZ3JvdXAtbGlzdCdcbiAgICB8ICdjdXN0b21lci1ncm91cC1kZXRhaWwnXG4gICAgfCAnZHJhZnQtb3JkZXItZGV0YWlsJ1xuICAgIHwgJ2ZhY2V0LWRldGFpbCdcbiAgICB8ICdmYWNldC1saXN0J1xuICAgIHwgJ2dsb2JhbC1zZXR0aW5nLWRldGFpbCdcbiAgICB8ICdzeXN0ZW0tc3RhdHVzJ1xuICAgIHwgJ2pvYi1saXN0J1xuICAgIHwgJ29yZGVyLWRldGFpbCdcbiAgICB8ICdvcmRlci1saXN0J1xuICAgIHwgJ3BheW1lbnQtbWV0aG9kLWRldGFpbCdcbiAgICB8ICdwYXltZW50LW1ldGhvZC1saXN0J1xuICAgIHwgJ3Byb2R1Y3QtZGV0YWlsJ1xuICAgIHwgJ3Byb2R1Y3QtbGlzdCdcbiAgICB8ICdwcm9kdWN0LXZhcmlhbnQtZGV0YWlsJ1xuICAgIHwgJ3Byb2ZpbGUnXG4gICAgfCAncHJvbW90aW9uLWRldGFpbCdcbiAgICB8ICdwcm9tb3Rpb24tbGlzdCdcbiAgICB8ICdyb2xlLWRldGFpbCdcbiAgICB8ICdyb2xlLWxpc3QnXG4gICAgfCAnc2VsbGVyLWRldGFpbCdcbiAgICB8ICdzZWxsZXItbGlzdCdcbiAgICB8ICdzaGlwcGluZy1tZXRob2QtZGV0YWlsJ1xuICAgIHwgJ3NoaXBwaW5nLW1ldGhvZC1saXN0J1xuICAgIHwgJ3N0b2NrLWxvY2F0aW9uLWRldGFpbCdcbiAgICB8ICdzdG9jay1sb2NhdGlvbi1saXN0J1xuICAgIHwgJ3RheC1jYXRlZ29yeS1kZXRhaWwnXG4gICAgfCAndGF4LWNhdGVnb3J5LWxpc3QnXG4gICAgfCAndGF4LXJhdGUtZGV0YWlsJ1xuICAgIHwgJ3RheC1yYXRlLWxpc3QnXG4gICAgfCAnem9uZS1kZXRhaWwnXG4gICAgfCAnem9uZS1saXN0JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSB2YWxpZCBsb2NhdGlvbklkcyBmb3IgcmVnaXN0ZXJpbmcgYWN0aW9uIGJhciBpdGVtcy5cbiAqXG4gKiBAZG9jc0NhdGVnb3J5IGFjdGlvbi1iYXJcbiAqL1xuZXhwb3J0IHR5cGUgQWN0aW9uQmFyTG9jYXRpb25JZCA9IFBhZ2VMb2NhdGlvbklkO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIHZhbGlkIGxvY2F0aW9ucyBmb3IgZW1iZWRkaW5nIGEge0BsaW5rIEN1c3RvbURldGFpbENvbXBvbmVudH0uXG4gKlxuICogQGRvY3NDYXRlZ29yeSBjdXN0b20tZGV0YWlsLWNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IHR5cGUgQ3VzdG9tRGV0YWlsQ29tcG9uZW50TG9jYXRpb25JZCA9XG4gICAgfCAnYWRtaW5pc3RyYXRvci1wcm9maWxlJ1xuICAgIHwgJ2FkbWluaXN0cmF0b3ItZGV0YWlsJ1xuICAgIHwgJ2NoYW5uZWwtZGV0YWlsJ1xuICAgIHwgJ2NvbGxlY3Rpb24tZGV0YWlsJ1xuICAgIHwgJ2NvdW50cnktZGV0YWlsJ1xuICAgIHwgJ2N1c3RvbWVyLWRldGFpbCdcbiAgICB8ICdjdXN0b21lci1ncm91cC1kZXRhaWwnXG4gICAgfCAnZmFjZXQtZGV0YWlsJ1xuICAgIHwgJ2dsb2JhbC1zZXR0aW5ncy1kZXRhaWwnXG4gICAgfCAnb3JkZXItZGV0YWlsJ1xuICAgIHwgJ3BheW1lbnQtbWV0aG9kLWRldGFpbCdcbiAgICB8ICdwcm9kdWN0LWRldGFpbCdcbiAgICB8ICdwcm9kdWN0LXZhcmlhbnQtZGV0YWlsJ1xuICAgIHwgJ3Byb21vdGlvbi1kZXRhaWwnXG4gICAgfCAnc2VsbGVyLWRldGFpbCdcbiAgICB8ICdzaGlwcGluZy1tZXRob2QtZGV0YWlsJ1xuICAgIHwgJ3N0b2NrLWxvY2F0aW9uLWRldGFpbCdcbiAgICB8ICd0YXgtY2F0ZWdvcnktZGV0YWlsJ1xuICAgIHwgJ3RheC1yYXRlLWRldGFpbCdcbiAgICB8ICd6b25lLWRldGFpbCc7XG5cbmV4cG9ydCB0eXBlIFVJRXh0ZW5zaW9uTG9jYXRpb25JZCA9IEFjdGlvbkJhckxvY2F0aW9uSWQgfCBDdXN0b21EZXRhaWxDb21wb25lbnRMb2NhdGlvbklkO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlZ2lzdHJ5LXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9jb21tb24vY29tcG9uZW50LXJlZ2lzdHJ5LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoaXMgaW50ZXJmYWNlIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBhbnkgY29tcG9uZW50IGJlaW5nIHVzZWQgYXMgYSBjdXN0b20gaW5wdXQuIEZvciBleGFtcGxlLFxyXG4gKiBpbnB1dHMgZm9yIGN1c3RvbSBmaWVsZHMsIG9yIGZvciBjb25maWd1cmFibGUgYXJndW1lbnRzLlxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IGN1c3RvbS1pbnB1dC1jb21wb25lbnRzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1JbnB1dENvbXBvbmVudDxDID0gSW5wdXRDb21wb25lbnRDb25maWc+IHtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTaG91bGQgYmUgc2V0IHRvIGB0cnVlYCBpZiB0aGlzIGNvbXBvbmVudCBpcyBkZXNpZ25lZCB0byBoYW5kbGUgbGlzdHMuXHJcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiB0aGUgZm9ybUNvbnRyb2wgdmFsdWUgd2lsbCBiZSBhbiBhcnJheSBvZiBhbGwgdGhlXHJcbiAgICAgKiB2YWx1ZXMgaW4gdGhlIGxpc3QuXHJcbiAgICAgKi9cclxuICAgIGlzTGlzdElucHV0PzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBUaGlzIGlzIHNldCBieSB0aGUgQWRtaW4gVUkgd2hlbiBjb25zdW1pbmcgdGhpcyBjb21wb25lbnQsIGluZGljYXRpbmcgdGhhdCB0aGVcclxuICAgICAqIGNvbXBvbmVudCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gYSByZWFkLW9ubHkgc3RhdGUuXHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFRoaXMgY29udHJvbHMgdGhlIGFjdHVhbCB2YWx1ZSBvZiB0aGUgZm9ybSBpdGVtLiBUaGUgY3VycmVudCB2YWx1ZSBpcyBhdmFpbGFibGVcclxuICAgICAqIGFzIGB0aGlzLmZvcm1Db250cm9sLnZhbHVlYCwgYW5kIGFuIE9ic2VydmFibGUgc3RyZWFtIG9mIHZhbHVlIGNoYW5nZXMgaXMgYXZhaWxhYmxlXHJcbiAgICAgKiBhcyBgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNgLiBUbyB1cGRhdGUgdGhlIHZhbHVlLCB1c2UgYC5zZXRWYWx1ZSh2YWwpYCBhbmQgdGhlblxyXG4gICAgICogYC5tYXJrQXNEaXJ0eSgpYC5cclxuICAgICAqXHJcbiAgICAgKiBGdWxsIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBbQW5ndWxhciBkb2NzXShodHRwczovL2FuZ3VsYXIuaW8vYXBpL2Zvcm1zL0Zvcm1Db250cm9sKS5cclxuICAgICAqL1xyXG4gICAgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBUaGUgYGNvbmZpZ2AgcHJvcGVydHkgY29udGFpbnMgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBvYmplY3Qgb2YgdGhlIGN1c3RvbSBmaWVsZCBvciBjb25maWd1cmFibGUgYXJndW1lbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbmZpZzogQztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSW5wdXRDb21wb25lbnRDb25maWcgPSB7XHJcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBUaGUgdmFsaWQgbG9jYXRpb25JZHMgZm9yIHJlZ2lzdGVyaW5nIGFjdGlvbiBiYXIgaXRlbXMgb3IgdGFicy5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBhY3Rpb24tYmFyXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQYWdlTG9jYXRpb25JZCA9XHJcbiAgICB8ICdhZG1pbmlzdHJhdG9yLWRldGFpbCdcclxuICAgIHwgJ2FkbWluaXN0cmF0b3ItbGlzdCdcclxuICAgIHwgJ2Fzc2V0LWRldGFpbCdcclxuICAgIHwgJ2Fzc2V0LWxpc3QnXHJcbiAgICB8ICdjaGFubmVsLWRldGFpbCdcclxuICAgIHwgJ2NoYW5uZWwtbGlzdCdcclxuICAgIHwgJ2NvbGxlY3Rpb24tZGV0YWlsJ1xyXG4gICAgfCAnY29sbGVjdGlvbi1saXN0J1xyXG4gICAgfCAnY291bnRyeS1kZXRhaWwnXHJcbiAgICB8ICdjb3VudHJ5LWxpc3QnXHJcbiAgICB8ICdjdXN0b21lci1kZXRhaWwnXHJcbiAgICB8ICdjdXN0b21lci1saXN0J1xyXG4gICAgfCAnY3VzdG9tZXItZ3JvdXAtbGlzdCdcclxuICAgIHwgJ2N1c3RvbWVyLWdyb3VwLWRldGFpbCdcclxuICAgIHwgJ2RyYWZ0LW9yZGVyLWRldGFpbCdcclxuICAgIHwgJ2ZhY2V0LWRldGFpbCdcclxuICAgIHwgJ2ZhY2V0LWxpc3QnXHJcbiAgICB8ICdnbG9iYWwtc2V0dGluZy1kZXRhaWwnXHJcbiAgICB8ICdzeXN0ZW0tc3RhdHVzJ1xyXG4gICAgfCAnam9iLWxpc3QnXHJcbiAgICB8ICdvcmRlci1kZXRhaWwnXHJcbiAgICB8ICdvcmRlci1saXN0J1xyXG4gICAgfCAncGF5bWVudC1tZXRob2QtZGV0YWlsJ1xyXG4gICAgfCAncGF5bWVudC1tZXRob2QtbGlzdCdcclxuICAgIHwgJ3Byb2R1Y3QtZGV0YWlsJ1xyXG4gICAgfCAncHJvZHVjdC1saXN0J1xyXG4gICAgfCAncHJvZHVjdC12YXJpYW50LWRldGFpbCdcclxuICAgIHwgJ3Byb2ZpbGUnXHJcbiAgICB8ICdwcm9tb3Rpb24tZGV0YWlsJ1xyXG4gICAgfCAncHJvbW90aW9uLWxpc3QnXHJcbiAgICB8ICdyb2xlLWRldGFpbCdcclxuICAgIHwgJ3JvbGUtbGlzdCdcclxuICAgIHwgJ3NlbGxlci1kZXRhaWwnXHJcbiAgICB8ICdzZWxsZXItbGlzdCdcclxuICAgIHwgJ3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwnXHJcbiAgICB8ICdzaGlwcGluZy1tZXRob2QtbGlzdCdcclxuICAgIHwgJ3N0b2NrLWxvY2F0aW9uLWRldGFpbCdcclxuICAgIHwgJ3N0b2NrLWxvY2F0aW9uLWxpc3QnXHJcbiAgICB8ICd0YXgtY2F0ZWdvcnktZGV0YWlsJ1xyXG4gICAgfCAndGF4LWNhdGVnb3J5LWxpc3QnXHJcbiAgICB8ICd0YXgtcmF0ZS1kZXRhaWwnXHJcbiAgICB8ICd0YXgtcmF0ZS1saXN0J1xyXG4gICAgfCAnem9uZS1kZXRhaWwnXHJcbiAgICB8ICd6b25lLWxpc3QnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBUaGUgdmFsaWQgbG9jYXRpb25JZHMgZm9yIHJlZ2lzdGVyaW5nIGFjdGlvbiBiYXIgaXRlbXMuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgYWN0aW9uLWJhclxyXG4gKi9cclxuZXhwb3J0IHR5cGUgQWN0aW9uQmFyTG9jYXRpb25JZCA9IFBhZ2VMb2NhdGlvbklkO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBUaGUgdmFsaWQgbG9jYXRpb25zIGZvciBlbWJlZGRpbmcgYSB7QGxpbmsgQ3VzdG9tRGV0YWlsQ29tcG9uZW50fS5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBjdXN0b20tZGV0YWlsLWNvbXBvbmVudHNcclxuICovXHJcbmV4cG9ydCB0eXBlIEN1c3RvbURldGFpbENvbXBvbmVudExvY2F0aW9uSWQgPVxyXG4gICAgfCAnYWRtaW5pc3RyYXRvci1wcm9maWxlJ1xyXG4gICAgfCAnYWRtaW5pc3RyYXRvci1kZXRhaWwnXHJcbiAgICB8ICdjaGFubmVsLWRldGFpbCdcclxuICAgIHwgJ2NvbGxlY3Rpb24tZGV0YWlsJ1xyXG4gICAgfCAnY291bnRyeS1kZXRhaWwnXHJcbiAgICB8ICdjdXN0b21lci1kZXRhaWwnXHJcbiAgICB8ICdjdXN0b21lci1ncm91cC1kZXRhaWwnXHJcbiAgICB8ICdmYWNldC1kZXRhaWwnXHJcbiAgICB8ICdnbG9iYWwtc2V0dGluZ3MtZGV0YWlsJ1xyXG4gICAgfCAnb3JkZXItZGV0YWlsJ1xyXG4gICAgfCAncGF5bWVudC1tZXRob2QtZGV0YWlsJ1xyXG4gICAgfCAncHJvZHVjdC1kZXRhaWwnXHJcbiAgICB8ICdwcm9kdWN0LXZhcmlhbnQtZGV0YWlsJ1xyXG4gICAgfCAncHJvbW90aW9uLWRldGFpbCdcclxuICAgIHwgJ3NlbGxlci1kZXRhaWwnXHJcbiAgICB8ICdzaGlwcGluZy1tZXRob2QtZGV0YWlsJ1xyXG4gICAgfCAnc3RvY2stbG9jYXRpb24tZGV0YWlsJ1xyXG4gICAgfCAndGF4LWNhdGVnb3J5LWRldGFpbCdcclxuICAgIHwgJ3RheC1yYXRlLWRldGFpbCdcclxuICAgIHwgJ3pvbmUtZGV0YWlsJztcclxuXHJcbmV4cG9ydCB0eXBlIFVJRXh0ZW5zaW9uTG9jYXRpb25JZCA9IEFjdGlvbkJhckxvY2F0aW9uSWQgfCBDdXN0b21EZXRhaWxDb21wb25lbnRMb2NhdGlvbklkO1xyXG4iXX0=