@vendure/admin-ui 3.1.0-next.3 → 3.1.0-next.4

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 (119) hide show
  1. package/catalog/components/collection-detail/collection-detail.component.d.ts +1 -1
  2. package/catalog/components/facet-detail/facet-detail.component.d.ts +1 -1
  3. package/catalog/components/product-detail/product-detail.component.d.ts +1 -1
  4. package/core/common/generated-types.d.ts +1188 -139
  5. package/core/common/utilities/custom-field-default-value.d.ts +1 -1
  6. package/core/common/version.d.ts +1 -1
  7. package/core/data/definitions/order-definitions.d.ts +2 -0
  8. package/core/data/definitions/settings-definitions.d.ts +1 -0
  9. package/core/data/providers/order-data.service.d.ts +2 -0
  10. package/core/public_api.d.ts +1 -0
  11. package/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +1 -0
  12. package/core/shared/components/facet-value-chip/facet-value-chip.component.d.ts +4 -2
  13. package/core/shared/components/product-variant-selector/product-variant-selector.component.d.ts +1 -1
  14. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +2 -1
  15. package/core/shared/dynamic-form-inputs/struct-form-input/struct-form-input.component.d.ts +34 -0
  16. package/core/shared/shared.module.d.ts +12 -11
  17. package/customer/components/customer-detail/customer-detail.component.d.ts +1 -1
  18. package/customer/components/customer-group-detail/customer-group-detail.component.d.ts +1 -1
  19. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +1 -1
  20. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +1 -1
  21. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +11 -11
  22. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +1 -1
  23. package/esm2022/catalog/components/product-list/product-list.component.mjs +1 -1
  24. package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +2 -2
  25. package/esm2022/core/common/base-list.component.mjs +1 -1
  26. package/esm2022/core/common/generated-types.mjs +17 -13
  27. package/esm2022/core/common/introspection-result.mjs +22 -1
  28. package/esm2022/core/common/utilities/custom-field-default-value.mjs +3 -1
  29. package/esm2022/core/common/version.mjs +2 -2
  30. package/esm2022/core/data/data.module.mjs +1 -1
  31. package/esm2022/core/data/definitions/facet-definitions.mjs +2 -1
  32. package/esm2022/core/data/definitions/order-definitions.mjs +17 -1
  33. package/esm2022/core/data/definitions/settings-definitions.mjs +52 -1
  34. package/esm2022/core/data/providers/base-data.service.mjs +1 -1
  35. package/esm2022/core/data/providers/collection-data.service.mjs +1 -1
  36. package/esm2022/core/data/providers/data.service.mjs +1 -1
  37. package/esm2022/core/data/providers/order-data.service.mjs +8 -2
  38. package/esm2022/core/data/providers/product-data.service.mjs +1 -1
  39. package/esm2022/core/data/query-result.mjs +5 -3
  40. package/esm2022/core/data/utils/add-custom-fields.mjs +12 -1
  41. package/esm2022/core/providers/data-table/data-table-config.service.mjs +1 -1
  42. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +3 -2
  43. package/esm2022/core/providers/data-table/data-table-sort-collection.mjs +2 -1
  44. package/esm2022/core/public_api.mjs +2 -1
  45. package/esm2022/core/shared/components/card/card.component.mjs +1 -1
  46. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +1 -1
  47. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +3 -3
  48. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +1 -1
  49. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +23 -3
  50. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +1 -1
  51. package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +1 -1
  52. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +8 -3
  53. package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +1 -1
  54. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +1 -1
  55. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +2 -2
  56. package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +2 -2
  57. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +2 -1
  58. package/esm2022/core/shared/directives/disabled.directive.mjs +1 -1
  59. package/esm2022/core/shared/dynamic-form-inputs/default-form-inputs.mjs +3 -1
  60. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +9 -1
  61. package/esm2022/core/shared/dynamic-form-inputs/struct-form-input/struct-form-input.component.mjs +52 -0
  62. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +1 -1
  63. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +1 -1
  64. package/esm2022/core/shared/shared.module.mjs +7 -3
  65. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +11 -11
  66. package/esm2022/customer/components/customer-list/customer-list.component.mjs +24 -24
  67. package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +1 -1
  68. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +11 -11
  69. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +34 -3
  70. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +1 -1
  71. package/esm2022/order/components/order-list/order-list.component.mjs +1 -1
  72. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +1 -1
  73. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +1 -1
  74. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +3 -3
  75. package/esm2022/order/order.routes.mjs +1 -2
  76. package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +3 -3
  77. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +30 -30
  78. package/esm2022/settings/components/channel-list/channel-list.component.mjs +11 -11
  79. package/esm2022/settings/components/country-list/country-list.component.mjs +19 -19
  80. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +19 -19
  81. package/esm2022/settings/components/role-list/role-list.component.mjs +11 -11
  82. package/esm2022/settings/components/seller-list/seller-list.component.mjs +16 -16
  83. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +19 -19
  84. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +17 -17
  85. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +11 -11
  86. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +11 -11
  87. package/esm2022/settings/components/zone-list/zone-list.component.mjs +16 -16
  88. package/esm2022/system/components/job-state-label/job-state-label.component.mjs +1 -1
  89. package/fesm2022/vendure-admin-ui-catalog.mjs +11 -11
  90. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  91. package/fesm2022/vendure-admin-ui-core.mjs +221 -28
  92. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  93. package/fesm2022/vendure-admin-ui-customer.mjs +33 -33
  94. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  95. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  96. package/fesm2022/vendure-admin-ui-marketing.mjs +10 -10
  97. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  98. package/fesm2022/vendure-admin-ui-order.mjs +34 -4
  99. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  100. package/fesm2022/vendure-admin-ui-settings.mjs +171 -171
  101. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  102. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  103. package/marketing/components/promotion-detail/promotion-detail.component.d.ts +1 -1
  104. package/order/components/draft-order-detail/draft-order-detail.component.d.ts +1 -0
  105. package/order/components/order-detail/order-detail.component.d.ts +1 -1
  106. package/package.json +14 -14
  107. package/settings/components/admin-detail/admin-detail.component.d.ts +1 -1
  108. package/settings/components/channel-detail/channel-detail.component.d.ts +1 -1
  109. package/settings/components/country-detail/country-detail.component.d.ts +1 -1
  110. package/settings/components/global-settings/global-settings.component.d.ts +1 -1
  111. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +1 -1
  112. package/settings/components/profile/profile.component.d.ts +1 -1
  113. package/settings/components/seller-detail/seller-detail.component.d.ts +1 -1
  114. package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +1 -1
  115. package/settings/components/stock-location-detail/stock-location-detail.component.d.ts +1 -1
  116. package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +1 -1
  117. package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +1 -1
  118. package/settings/components/zone-detail/zone-detail.component.d.ts +1 -1
  119. package/static/i18n-messages/sv.json +12 -12
@@ -256,4 +256,4 @@ export class ProductDataService {
256
256
  });
257
257
  }
258
258
  }
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUNILDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixlQUFlLEVBQ2YsWUFBWSxFQUNaLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixVQUFVLEdBQ2IsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLE9BQU8sRUFDUCxnQ0FBZ0MsR0FDbkMsTUFBTSxxQ0FBcUMsQ0FBQztBQUk3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdB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QUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUdoQyw0QkFBNEIsRUFBRTtZQUM1QixLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBb0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQzdCLFlBQVksRUFDWjtZQUNJLE9BQU87U0FDVixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEtBQUs7U0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEtBQUs7U0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDOUIsVUFBVSxFQUNWO1lBQ0ksRUFBRTtTQUNMLENBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBpY2sgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3BpY2snO1xuXG5pbXBvcnQgKiBhcyBDb2RlZ2VuIGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IHsgU29ydE9yZGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XG5pbXBvcnQge1xuICAgIEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCxcbiAgICBBRERfT1BUSU9OX1RPX0dST1VQLFxuICAgIEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMLFxuICAgIEFTU0lHTl9WQVJJQU5UU19UT19DSEFOTkVMLFxuICAgIENSRUFURV9BU1NFVFMsXG4gICAgQ1JFQVRFX1BST0RVQ1QsXG4gICAgQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxuICAgIENSRUFURV9QUk9EVUNUX1ZBUklBTlRTLFxuICAgIENSRUFURV9UQUcsXG4gICAgREVMRVRFX0FTU0VUUyxcbiAgICBERUxFVEVfUFJPRFVDVCxcbiAgICBERUxFVEVfUFJPRFVDVF9PUFRJT04sXG4gICAgREVMRVRFX1BST0RVQ1RfVkFSSUFOVCxcbiAgICBERUxFVEVfUFJPRFVDVF9WQVJJQU5UUyxcbiAgICBERUxFVEVfUFJPRFVDVFMsXG4gICAgREVMRVRFX1RBRyxcbiAgICBHRVRfQVNTRVQsXG4gICAgR0VUX0FTU0VUX0xJU1QsXG4gICAgR0VUX1BST0RVQ1RfTElTVCxcbiAgICBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAsXG4gICAgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUyxcbiAgICBHRVRfUFJPRFVDVF9TSU1QTEUsXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVCxcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QsXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX0ZPUl9QUk9EVUNULFxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVF9PUFRJT05TLFxuICAgIEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMsXG4gICAgR0VUX1RBRyxcbiAgICBHRVRfVEFHX0xJU1QsXG4gICAgUFJPRFVDVF9TRUxFQ1RPUl9TRUFSQ0gsXG4gICAgUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsXG4gICAgUkVNT1ZFX1BST0RVQ1RTX0ZST01fQ0hBTk5FTCxcbiAgICBSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMLFxuICAgIFNFQVJDSF9QUk9EVUNUUyxcbiAgICBVUERBVEVfQVNTRVQsXG4gICAgVVBEQVRFX1BST0RVQ1QsXG4gICAgVVBEQVRFX1BST0RVQ1RfT1BUSU9OLFxuICAgIFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCxcbiAgICBVUERBVEVfUFJPRFVDVF9WQVJJQU5UUyxcbiAgICBVUERBVEVfVEFHLFxufSBmcm9tICcuLi9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zJztcbmltcG9ydCB7XG4gICAgR0VUX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXG4gICAgUkVJTkRFWCxcbiAgICBSVU5fUEVORElOR19TRUFSQ0hfSU5ERVhfVVBEQVRFUyxcbn0gZnJvbSAnLi4vZGVmaW5pdGlvbnMvc2V0dGluZ3MtZGVmaW5pdGlvbnMnO1xuXG5pbXBvcnQgeyBCYXNlRGF0YVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZGF0YS5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3REYXRhU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBiYXNlRGF0YVNlcnZpY2U6IEJhc2VEYXRhU2VydmljZSkge31cblxuICAgIHNlYXJjaFByb2R1Y3RzKHRlcm06IHN0cmluZywgdGFrZSA9IDEwLCBza2lwID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8Q29kZWdlbi5TZWFyY2hQcm9kdWN0c1F1ZXJ5LCBDb2RlZ2VuLlNlYXJjaFByb2R1Y3RzUXVlcnlWYXJpYWJsZXM+KFxuICAgICAgICAgICAgU0VBUkNIX1BST0RVQ1RTLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXG4gICAgICAgICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQnlQcm9kdWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb2R1Y3RTZWxlY3RvclNlYXJjaCh0ZXJtOiBzdHJpbmcsIHRha2U6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLlByb2R1Y3RTZWxlY3RvclNlYXJjaFF1ZXJ5LFxuICAgICAgICAgICAgQ29kZWdlbi5Qcm9kdWN0U2VsZWN0b3JTZWFyY2hRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNILCB7XG4gICAgICAgICAgICB0YWtlLFxuICAgICAgICAgICAgdGVybSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVpbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxDb2RlZ2VuLlJlaW5kZXhNdXRhdGlvbj4oUkVJTkRFWCk7XG4gICAgfVxuXG4gICAgZ2V0UGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlc1F1ZXJ5PihcbiAgICAgICAgICAgIEdFVF9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5SdW5QZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzTXV0YXRpb24+KFxuICAgICAgICAgICAgUlVOX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdHMob3B0aW9uczogQ29kZWdlbi5Qcm9kdWN0TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UHJvZHVjdExpc3RRdWVyeSwgQ29kZWdlbi5HZXRQcm9kdWN0TGlzdFF1ZXJ5VmFyaWFibGVzPihcbiAgICAgICAgICAgIEdFVF9QUk9EVUNUX0xJU1QsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdChpZDogc3RyaW5nLCB2YXJpYW50TGlzdE9wdGlvbnM/OiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0V2l0aFZhcmlhbnRzUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RXaXRoVmFyaWFudHNRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdmFyaWFudExpc3RPcHRpb25zLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0U2ltcGxlKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0U2ltcGxlUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1NJTVBMRSwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RWYXJpYW50c1NpbXBsZShvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMsIHByb2R1Y3RJZD86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50TGlzdFNpbXBsZVF1ZXJ5LFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsIHsgb3B0aW9ucywgcHJvZHVjdElkIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RRdWVyeSxcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlWYXJpYWJsZXNcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QsIHsgb3B0aW9ucyB9KTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0VmFyaWFudHNGb3JQcm9kdWN0KG9wdGlvbnM6IENvZGVnZW4uUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucywgcHJvZHVjdElkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0UXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50TGlzdEZvclByb2R1Y3RRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9GT1JfUFJPRFVDVCwgeyBvcHRpb25zLCBwcm9kdWN0SWQgfSk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnQoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50UXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50UXVlcnlWYXJpYWJsZXNcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5ULCB7IGlkIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RWYXJpYW50c09wdGlvbnMoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50T3B0aW9uc1F1ZXJ5LFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudE9wdGlvbnNRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfT1BUSU9OUywge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RPcHRpb25Hcm91cChpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3VwUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cFF1ZXJ5VmFyaWFibGVzXG4gICAgICAgID4oR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUHJvZHVjdChwcm9kdWN0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RJbnB1dCkge1xuICAgICAgICBjb25zdCBpbnB1dDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0TXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpbnB1dDogcGljayhwcm9kdWN0LCBbXG4gICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxuICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxuICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxuICAgICAgICAgICAgICAgICdhc3NldElkcycsXG4gICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXG4gICAgICAgICAgICAgICAgJ2ZhY2V0VmFsdWVJZHMnLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oQ1JFQVRFX1BST0RVQ1QsIGlucHV0KTtcbiAgICB9XG5cbiAgICB1cGRhdGVQcm9kdWN0KHByb2R1Y3Q6IENvZGVnZW4uVXBkYXRlUHJvZHVjdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcyA9IHtcbiAgICAgICAgICAgIGlucHV0OiBwaWNrKHByb2R1Y3QsIFtcbiAgICAgICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgICAgICdlbmFibGVkJyxcbiAgICAgICAgICAgICAgICAndHJhbnNsYXRpb25zJyxcbiAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcbiAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxuICAgICAgICAgICAgICAgICdmZWF0dXJlZEFzc2V0SWQnLFxuICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0TXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KFVQREFURV9QUk9EVUNULCBpbnB1dCk7XG4gICAgfVxuXG4gICAgZGVsZXRlUHJvZHVjdChpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1QsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0cyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RzTXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RzTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVFMsIHtcbiAgICAgICAgICAgIGlkcyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXRbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihDUkVBVEVfUFJPRFVDVF9WQVJJQU5UUywge1xuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50cyh2YXJpYW50czogQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudElucHV0W10pIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpbnB1dDogdmFyaWFudHMubWFwKFxuICAgICAgICAgICAgICAgIHBpY2soW1xuICAgICAgICAgICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAnZW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICAnc2t1JyxcbiAgICAgICAgICAgICAgICAgICAgJ3ByaWNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RheENhdGVnb3J5SWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXG4gICAgICAgICAgICAgICAgICAgICdmZWF0dXJlZEFzc2V0SWQnLFxuICAgICAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxuICAgICAgICAgICAgICAgICAgICAnb3B0aW9uSWRzJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RyYWNrSW52ZW50b3J5JyxcbiAgICAgICAgICAgICAgICAgICAgJ291dE9mU3RvY2tUaHJlc2hvbGQnLFxuICAgICAgICAgICAgICAgICAgICAndXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCcsXG4gICAgICAgICAgICAgICAgICAgICdzdG9ja09uSGFuZCcsXG4gICAgICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMsIGlucHV0KTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0VmFyaWFudChpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVF9WQVJJQU5ULCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlUHJvZHVjdFZhcmlhbnRzKGlkczogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1RfVkFSSUFOVFMsIHtcbiAgICAgICAgICAgIGlkcyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyhwcm9kdWN0T3B0aW9uR3JvdXA6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQpIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpbnB1dDogcHJvZHVjdE9wdGlvbkdyb3VwLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihDUkVBVEVfUFJPRFVDVF9PUFRJT05fR1JPVVAsIGlucHV0KTtcbiAgICB9XG5cbiAgICBhZGRPcHRpb25Hcm91cFRvUHJvZHVjdCh2YXJpYWJsZXM6IENvZGVnZW4uQWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3RNdXRhdGlvblZhcmlhYmxlcykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oQUREX09QVElPTl9HUk9VUF9UT19QUk9EVUNULCB2YXJpYWJsZXMpO1xuICAgIH1cblxuICAgIGFkZE9wdGlvblRvR3JvdXAoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbklucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvblRvR3JvdXBNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uVG9Hcm91cE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oQUREX09QVElPTl9UT19HUk9VUCwgeyBpbnB1dCB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0T3B0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVF9PUFRJT04sIHsgaWQgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdCh2YXJpYWJsZXM6IENvZGVnZW4uUmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsIHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbihpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVF9PUFRJT04sIHtcbiAgICAgICAgICAgIGlucHV0OiBwaWNrKGlucHV0LCBbJ2lkJywgJ2NvZGUnLCAndHJhbnNsYXRpb25zJywgJ2N1c3RvbUZpZWxkcyddKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cE11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCwge1xuICAgICAgICAgICAgaW5wdXQ6IHBpY2soaW5wdXQsIFsnaWQnLCAnY29kZScsICd0cmFuc2xhdGlvbnMnLCAnY3VzdG9tRmllbGRzJ10pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0T3B0aW9uR3JvdXBzKGZpbHRlclRlcm0/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0T3B0aW9uR3JvdXBzUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cHNRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUFMsIHtcbiAgICAgICAgICAgIGZpbHRlclRlcm0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc2V0TGlzdCh0YWtlID0gMTAsIHNraXAgPSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5VmFyaWFibGVzPihcbiAgICAgICAgICAgIEdFVF9BU1NFVF9MSVNULFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcbiAgICAgICAgICAgICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0OiBTb3J0T3JkZXIuREVTQyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQgZG8gbm90IGxvYWQgY3VzdG9tIGZpZWxkcyBpbiB0aGUgbGlzdCB2aWV3XG4gICAgICAgICAgICB7IGluY2x1ZGVDdXN0b21GaWVsZHM6IFtdIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QXNzZXQoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8Q29kZWdlbi5HZXRBc3NldFF1ZXJ5LCBDb2RlZ2VuLkdldEFzc2V0UXVlcnlWYXJpYWJsZXM+KEdFVF9BU1NFVCwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZUFzc2V0cyhmaWxlczogRmlsZVtdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZUFzc2V0c011dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KENSRUFURV9BU1NFVFMsIHtcbiAgICAgICAgICAgIGlucHV0OiBmaWxlcy5tYXAoZmlsZSA9PiAoeyBmaWxlIH0pKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXNzZXQoaW5wdXQ6IENvZGVnZW4uVXBkYXRlQXNzZXRJbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uVXBkYXRlQXNzZXRNdXRhdGlvbiwgQ29kZWdlbi5VcGRhdGVBc3NldE11dGF0aW9uVmFyaWFibGVzPihcbiAgICAgICAgICAgIFVQREFURV9BU1NFVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlQXNzZXRzKGlkczogc3RyaW5nW10sIGZvcmNlOiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZUFzc2V0c011dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KERFTEVURV9BU1NFVFMsIHtcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgYXNzZXRJZHM6IGlkcyxcbiAgICAgICAgICAgICAgICBmb3JjZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzc2lnblByb2R1Y3RzVG9DaGFubmVsKGlucHV0OiBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMLCB7XG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbE11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihSRU1PVkVfUFJPRFVDVFNfRlJPTV9DSEFOTkVMLCB7XG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXNzaWduVmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6IENvZGVnZW4uQXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KEFTU0lHTl9WQVJJQU5UU19UT19DSEFOTkVMLCB7XG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVZhcmlhbnRzRnJvbUNoYW5uZWxNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oUkVNT1ZFX1ZBUklBTlRTX0ZST01fQ0hBTk5FTCwge1xuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFRhZyhpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFRhZ1F1ZXJ5LCBDb2RlZ2VuLkdldFRhZ1F1ZXJ5VmFyaWFibGVzPihHRVRfVEFHLCB7IGlkIH0pO1xuICAgIH1cblxuICAgIGdldFRhZ0xpc3Qob3B0aW9ucz86IENvZGVnZW4uVGFnTGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0VGFnTGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldFRhZ0xpc3RRdWVyeVZhcmlhYmxlcz4oXG4gICAgICAgICAgICBHRVRfVEFHX0xJU1QsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlVGFnKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVRhZ0lucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5DcmVhdGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5DcmVhdGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXG4gICAgICAgICAgICBDUkVBVEVfVEFHLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUYWcoaW5wdXQ6IENvZGVnZW4uVXBkYXRlVGFnSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxDb2RlZ2VuLlVwZGF0ZVRhZ011dGF0aW9uLCBDb2RlZ2VuLlVwZGF0ZVRhZ011dGF0aW9uVmFyaWFibGVzPihcbiAgICAgICAgICAgIFVQREFURV9UQUcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZVRhZyhpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5EZWxldGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5EZWxldGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXG4gICAgICAgICAgICBERUxFVEVfVEFHLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUNILDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixlQUFlLEVBQ2YsWUFBWSxFQUNaLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixVQUFVLEdBQ2IsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLE9BQU8sRUFDUCxnQ0FBZ0MsR0FDbkMsTUFBTSxxQ0FBcUMsQ0FBQztBQUk3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdB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QUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUdoQyw0QkFBNEIsRUFBRTtZQUM1QixLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBb0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQzdCLFlBQVksRUFDWjtZQUNJLE9BQU87U0FDVixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEtBQUs7U0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEtBQUs7U0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDOUIsVUFBVSxFQUNWO1lBQ0ksRUFBRTtTQUNMLENBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBpY2sgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3BpY2snO1xyXG5cclxuaW1wb3J0ICogYXMgQ29kZWdlbiBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcclxuaW1wb3J0IHsgU29ydE9yZGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgICBBRERfT1BUSU9OX0dST1VQX1RPX1BST0RVQ1QsXHJcbiAgICBBRERfT1BUSU9OX1RPX0dST1VQLFxyXG4gICAgQVNTSUdOX1BST0RVQ1RTX1RPX0NIQU5ORUwsXHJcbiAgICBBU1NJR05fVkFSSUFOVFNfVE9fQ0hBTk5FTCxcclxuICAgIENSRUFURV9BU1NFVFMsXHJcbiAgICBDUkVBVEVfUFJPRFVDVCxcclxuICAgIENSRUFURV9QUk9EVUNUX09QVElPTl9HUk9VUCxcclxuICAgIENSRUFURV9QUk9EVUNUX1ZBUklBTlRTLFxyXG4gICAgQ1JFQVRFX1RBRyxcclxuICAgIERFTEVURV9BU1NFVFMsXHJcbiAgICBERUxFVEVfUFJPRFVDVCxcclxuICAgIERFTEVURV9QUk9EVUNUX09QVElPTixcclxuICAgIERFTEVURV9QUk9EVUNUX1ZBUklBTlQsXHJcbiAgICBERUxFVEVfUFJPRFVDVF9WQVJJQU5UUyxcclxuICAgIERFTEVURV9QUk9EVUNUUyxcclxuICAgIERFTEVURV9UQUcsXHJcbiAgICBHRVRfQVNTRVQsXHJcbiAgICBHRVRfQVNTRVRfTElTVCxcclxuICAgIEdFVF9QUk9EVUNUX0xJU1QsXHJcbiAgICBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAsXHJcbiAgICBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVBTLFxyXG4gICAgR0VUX1BST0RVQ1RfU0lNUExFLFxyXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVCxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVCxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9GT1JfUFJPRFVDVCxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX09QVElPTlMsXHJcbiAgICBHRVRfUFJPRFVDVF9XSVRIX1ZBUklBTlRTLFxyXG4gICAgR0VUX1RBRyxcclxuICAgIEdFVF9UQUdfTElTVCxcclxuICAgIFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNILFxyXG4gICAgUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsXHJcbiAgICBSRU1PVkVfUFJPRFVDVFNfRlJPTV9DSEFOTkVMLFxyXG4gICAgUkVNT1ZFX1ZBUklBTlRTX0ZST01fQ0hBTk5FTCxcclxuICAgIFNFQVJDSF9QUk9EVUNUUyxcclxuICAgIFVQREFURV9BU1NFVCxcclxuICAgIFVQREFURV9QUk9EVUNULFxyXG4gICAgVVBEQVRFX1BST0RVQ1RfT1BUSU9OLFxyXG4gICAgVVBEQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxyXG4gICAgVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMsXHJcbiAgICBVUERBVEVfVEFHLFxyXG59IGZyb20gJy4uL2RlZmluaXRpb25zL3Byb2R1Y3QtZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gICAgR0VUX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbiAgICBSRUlOREVYLFxyXG4gICAgUlVOX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbn0gZnJvbSAnLi4vZGVmaW5pdGlvbnMvc2V0dGluZ3MtZGVmaW5pdGlvbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWRhdGEuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERhdGFTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZURhdGFTZXJ2aWNlOiBCYXNlRGF0YVNlcnZpY2UpIHt9XHJcblxyXG4gICAgc2VhcmNoUHJvZHVjdHModGVybTogc3RyaW5nLCB0YWtlID0gMTAsIHNraXAgPSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uU2VhcmNoUHJvZHVjdHNRdWVyeSwgQ29kZWdlbi5TZWFyY2hQcm9kdWN0c1F1ZXJ5VmFyaWFibGVzPihcclxuICAgICAgICAgICAgU0VBUkNIX1BST0RVQ1RTLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgICAgICBza2lwLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQnlQcm9kdWN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2R1Y3RTZWxlY3RvclNlYXJjaCh0ZXJtOiBzdHJpbmcsIHRha2U6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5Qcm9kdWN0U2VsZWN0b3JTZWFyY2hRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5Qcm9kdWN0U2VsZWN0b3JTZWFyY2hRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oUFJPRFVDVF9TRUxFQ1RPUl9TRUFSQ0gsIHtcclxuICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgdGVybSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWluZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5SZWluZGV4TXV0YXRpb24+KFJFSU5ERVgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlc1F1ZXJ5PihcclxuICAgICAgICAgICAgR0VUX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBydW5QZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5SdW5QZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzTXV0YXRpb24+KFxyXG4gICAgICAgICAgICBSVU5fUEVORElOR19TRUFSQ0hfSU5ERVhfVVBEQVRFUyxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RzKG9wdGlvbnM6IENvZGVnZW4uUHJvZHVjdExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UHJvZHVjdExpc3RRdWVyeSwgQ29kZWdlbi5HZXRQcm9kdWN0TGlzdFF1ZXJ5VmFyaWFibGVzPihcclxuICAgICAgICAgICAgR0VUX1BST0RVQ1RfTElTVCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3QoaWQ6IHN0cmluZywgdmFyaWFudExpc3RPcHRpb25zPzogQ29kZWdlbi5Qcm9kdWN0VmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RXaXRoVmFyaWFudHNRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0V2l0aFZhcmlhbnRzUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0T3B0aW9ucyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0U2ltcGxlKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFNpbXBsZVF1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfU0lNUExFLCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50c1NpbXBsZShvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMsIHByb2R1Y3RJZD86IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGVRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX1NJTVBMRSwgeyBvcHRpb25zLCBwcm9kdWN0SWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnRzKG9wdGlvbnM6IENvZGVnZW4uUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNULCB7IG9wdGlvbnMgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnRzRm9yUHJvZHVjdChvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMsIHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50TGlzdEZvclByb2R1Y3RRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0UXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9GT1JfUFJPRFVDVCwgeyBvcHRpb25zLCBwcm9kdWN0SWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudFF1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50UXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlQsIHsgaWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnRzT3B0aW9ucyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50T3B0aW9uc1F1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50T3B0aW9uc1F1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5UX09QVElPTlMsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdE9wdGlvbkdyb3VwKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3VwUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3VwUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUCwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQcm9kdWN0KHByb2R1Y3Q6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdElucHV0KSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzID0ge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhwcm9kdWN0LCBbXHJcbiAgICAgICAgICAgICAgICAnZW5hYmxlZCcsXHJcbiAgICAgICAgICAgICAgICAndHJhbnNsYXRpb25zJyxcclxuICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxyXG4gICAgICAgICAgICAgICAgJ2Fzc2V0SWRzJyxcclxuICAgICAgICAgICAgICAgICdmZWF0dXJlZEFzc2V0SWQnLFxyXG4gICAgICAgICAgICAgICAgJ2ZhY2V0VmFsdWVJZHMnLFxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX1BST0RVQ1QsIGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQcm9kdWN0KHByb2R1Y3Q6IENvZGVnZW4uVXBkYXRlUHJvZHVjdElucHV0KSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzID0ge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhwcm9kdWN0LCBbXHJcbiAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxyXG4gICAgICAgICAgICAgICAgJ3RyYW5zbGF0aW9ucycsXHJcbiAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgICdhc3NldElkcycsXHJcbiAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFVQREFURV9QUk9EVUNULCBpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUHJvZHVjdChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVCwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0cyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RzTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUUywge1xyXG4gICAgICAgICAgICBpZHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXRbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KENSRUFURV9QUk9EVUNUX1ZBUklBTlRTLCB7XHJcbiAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50cyh2YXJpYW50czogQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudElucHV0W10pIHtcclxuICAgICAgICBjb25zdCBpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHZhcmlhbnRzLm1hcChcclxuICAgICAgICAgICAgICAgIHBpY2soW1xyXG4gICAgICAgICAgICAgICAgICAgICdpZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxyXG4gICAgICAgICAgICAgICAgICAgICdza3UnLFxyXG4gICAgICAgICAgICAgICAgICAgICdwcmljZScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3RheENhdGVnb3J5SWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxyXG4gICAgICAgICAgICAgICAgICAgICdvcHRpb25JZHMnLFxyXG4gICAgICAgICAgICAgICAgICAgICd0cmFja0ludmVudG9yeScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ291dE9mU3RvY2tUaHJlc2hvbGQnLFxyXG4gICAgICAgICAgICAgICAgICAgICd1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkJyxcclxuICAgICAgICAgICAgICAgICAgICAnc3RvY2tPbkhhbmQnLFxyXG4gICAgICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxyXG4gICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVF9WQVJJQU5UUywgaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3RWYXJpYW50KGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdFZhcmlhbnRNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1RfVkFSSUFOVCwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0VmFyaWFudHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUX1ZBUklBTlRTLCB7XHJcbiAgICAgICAgICAgIGlkcyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBzKHByb2R1Y3RPcHRpb25Hcm91cDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBJbnB1dCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cE11dGF0aW9uVmFyaWFibGVzID0ge1xyXG4gICAgICAgICAgICBpbnB1dDogcHJvZHVjdE9wdGlvbkdyb3VwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLCBpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3QodmFyaWFibGVzOiBDb2RlZ2VuLkFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQUREX09QVElPTl9HUk9VUF9UT19QUk9EVUNULCB2YXJpYWJsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE9wdGlvblRvR3JvdXAoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbklucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Ub0dyb3VwTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uVG9Hcm91cE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihBRERfT1BUSU9OX1RPX0dST1VQLCB7IGlucHV0IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3RPcHRpb24oaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RPcHRpb25NdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1RfT1BUSU9OLCB7IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QodmFyaWFibGVzOiBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsIHZhcmlhYmxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbihpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25NdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFVQREFURV9QUk9EVUNUX09QVElPTiwge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhpbnB1dCwgWydpZCcsICdjb2RlJywgJ3RyYW5zbGF0aW9ucycsICdjdXN0b21GaWVsZHMnXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oVVBEQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLCB7XHJcbiAgICAgICAgICAgIGlucHV0OiBwaWNrKGlucHV0LCBbJ2lkJywgJ2NvZGUnLCAndHJhbnNsYXRpb25zJywgJ2N1c3RvbUZpZWxkcyddKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0T3B0aW9uR3JvdXBzKGZpbHRlclRlcm0/OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3Vwc1F1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cHNRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUywge1xyXG4gICAgICAgICAgICBmaWx0ZXJUZXJtLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFzc2V0TGlzdCh0YWtlID0gMTAsIHNraXAgPSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0QXNzZXRMaXN0UXVlcnksIENvZGVnZW4uR2V0QXNzZXRMaXN0UXVlcnlWYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBHRVRfQVNTRVRfTElTVCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHNraXAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgICAgICBzb3J0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogU29ydE9yZGVyLkRFU0MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCBkbyBub3QgbG9hZCBjdXN0b20gZmllbGRzIGluIHRoZSBsaXN0IHZpZXdcclxuICAgICAgICAgICAgeyBpbmNsdWRlQ3VzdG9tRmllbGRzOiBbXSB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXNzZXQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0UXVlcnksIENvZGVnZW4uR2V0QXNzZXRRdWVyeVZhcmlhYmxlcz4oR0VUX0FTU0VULCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUFzc2V0cyhmaWxlczogRmlsZVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX0FTU0VUUywge1xyXG4gICAgICAgICAgICBpbnB1dDogZmlsZXMubWFwKGZpbGUgPT4gKHsgZmlsZSB9KSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQXNzZXQoaW5wdXQ6IENvZGVnZW4uVXBkYXRlQXNzZXRJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5VcGRhdGVBc3NldE11dGF0aW9uLCBDb2RlZ2VuLlVwZGF0ZUFzc2V0TXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBVUERBVEVfQVNTRVQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQXNzZXRzKGlkczogc3RyaW5nW10sIGZvcmNlOiBib29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX0FTU0VUUywge1xyXG4gICAgICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgICAgICAgYXNzZXRJZHM6IGlkcyxcclxuICAgICAgICAgICAgICAgIGZvcmNlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzc2lnblByb2R1Y3RzVG9DaGFubmVsKGlucHV0OiBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQVNTSUdOX1BST0RVQ1RTX1RPX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWxNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFJFTU9WRV9QUk9EVUNUU19GUk9NX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXNzaWduVmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6IENvZGVnZW4uQXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFzc2lnblZhcmlhbnRzVG9DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQVNTSUdOX1ZBUklBTlRTX1RPX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVWYXJpYW50c0Zyb21DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMLCB7XHJcbiAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRhZyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0VGFnUXVlcnksIENvZGVnZW4uR2V0VGFnUXVlcnlWYXJpYWJsZXM+KEdFVF9UQUcsIHsgaWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFnTGlzdChvcHRpb25zPzogQ29kZWdlbi5UYWdMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFRhZ0xpc3RRdWVyeSwgQ29kZWdlbi5HZXRUYWdMaXN0UXVlcnlWYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBHRVRfVEFHX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUYWcoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlVGFnSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uQ3JlYXRlVGFnTXV0YXRpb24sIENvZGVnZW4uQ3JlYXRlVGFnTXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBDUkVBVEVfVEFHLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVRhZyhpbnB1dDogQ29kZWdlbi5VcGRhdGVUYWdJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5VcGRhdGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5VcGRhdGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIFVQREFURV9UQUcsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlVGFnKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uRGVsZXRlVGFnTXV0YXRpb24sIENvZGVnZW4uRGVsZXRlVGFnTXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBERUxFVEVfVEFHLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { NetworkStatus } from '@apollo/client/core';
2
2
  import { notNullOrUndefined } from '@vendure/common/lib/shared-utils';
3
3
  import { merge, Observable, Subject } from 'rxjs';
4
- import { distinctUntilChanged, filter, finalize, map, skip, take, takeUntil } from 'rxjs/operators';
4
+ import { distinctUntilChanged, filter, finalize, map, shareReplay, skip, startWith, take, takeUntil, } from 'rxjs/operators';
5
5
  import { GET_USER_STATUS } from './definitions/client-definitions';
6
6
  import { addCustomFields } from './utils/add-custom-fields';
7
7
  /**
@@ -140,7 +140,9 @@ export class QueryResult {
140
140
  this.subscribeToQueryRef(this.queryRef);
141
141
  this.queryRefSubscribed.set(this.queryRef, true);
142
142
  }
143
- this.valueChangeSubject.subscribe(subscriber);
143
+ this.valueChangeSubject
144
+ .pipe(startWith(this.queryRef.getCurrentResult()), shareReplay(1))
145
+ .subscribe(subscriber);
144
146
  return () => {
145
147
  this.queryRefSubscribed.delete(this.queryRef);
146
148
  };
@@ -160,4 +162,4 @@ export class QueryResult {
160
162
  .subscribe(this.valueChangeSubject);
161
163
  }
162
164
  }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9kYXRhL3F1ZXJ5LXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFDWSxRQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBZ0Q7UUFGaEQsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFrQztRQUs1RDs7O1dBR0c7UUFDSyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU96Qzs7OztXQUlHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7UUFDakU7OztXQUdHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUF4QmhFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUMsQ0FBQztJQStCRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDbEIsTUFBTSxXQUFXLEdB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Q0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCwgTmV0d29ya1N0YXR1cyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xuaW1wb3J0IHsgQXBvbGxvLCBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZmluYWxpemUsIG1hcCwgc2tpcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgR2V0VXNlclN0YXR1c1F1ZXJ5IH0gZnJvbSAnLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XG5cbmltcG9ydCB7IEdFVF9VU0VSX1NUQVRVUyB9IGZyb20gJy4vZGVmaW5pdGlvbnMvY2xpZW50LWRlZmluaXRpb25zJztcbmltcG9ydCB7IGFkZEN1c3RvbUZpZWxkcyB9IGZyb20gJy4vdXRpbHMvYWRkLWN1c3RvbS1maWVsZHMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBjbGFzcyB3cmFwcyB0aGUgQXBvbGxvIEFuZ3VsYXIgUXVlcnlSZWYgb2JqZWN0IGFuZCBleHBvc2VzIHNvbWUgZ2V0dGVyc1xuICogZm9yIGNvbnZlbmllbmNlLlxuICpcbiAqIEBkb2NzQ2F0ZWdvcnkgc2VydmljZXNcbiAqIEBkb2NzUGFnZSBEYXRhU2VydmljZVxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlSZXN1bHQ8VCwgViBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcXVlcnlSZWY6IFF1ZXJ5UmVmPFQsIFY+LFxuICAgICAgICBwcml2YXRlIGFwb2xsbzogQXBvbGxvLFxuICAgICAgICBwcml2YXRlIGN1c3RvbUZpZWxkTWFwOiBNYXA8c3RyaW5nLCBDdXN0b21GaWVsZENvbmZpZ1tdPixcbiAgICApIHtcbiAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBxdWVyeVJlZi5vcHRpb25zLnF1ZXJ5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhdXNlcyBhbnkgc3Vic2NyaXB0aW9ucyB0byB0aGUgUXVlcnlSZWYgdG8gY29tcGxldGUsIHZpYSB0aGUgdXNlXG4gICAgICogb2YgdGhlIGB0YWtlVW50aWxgIG9wZXJhdG9yLlxuICAgICAqL1xuICAgIHByaXZhdGUgY29tcGxldGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhlIHN1YnNjcmlwdGlvbiB0byB0aGUgY3VycmVudCBRdWVyeVJlZi52YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZS5cbiAgICAgKiBUaGlzIGlzIHN0b3JlZCBzbyB0aGF0IGl0IGNhbiBiZSB1bnN1YnNjcmliZWQgZnJvbSB3aGVuIHRoZSBRdWVyeVJlZlxuICAgICAqIGNoYW5nZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICAvKipcbiAgICAgKiBUaGlzIFN1YmplY3QgaXMgdXNlZCB0byBlbWl0IG5ldyB2YWx1ZXMgZnJvbSB0aGUgUXVlcnlSZWYudmFsdWVDaGFuZ2VzIE9ic2VydmFibGUuXG4gICAgICogV2UgdXNlIHRoaXMgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc3Vic2NyaWJpbmcgdG8gdGhlIFF1ZXJ5UmVmLnZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlXG4gICAgICogc28gdGhhdCB3ZSBhcmUgYWJsZSB0byBjaGFuZ2UgdGhlIFF1ZXJ5UmVmIGFuZCByZS1zdWJzY3JpYmUgd2hlbiBuZWNlc3NhcnkuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxBcG9sbG9RdWVyeVJlc3VsdDxUPj4oKTtcbiAgICAvKipcbiAgICAgKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBRdWVyeVJlZnMgd2hpY2ggaGF2ZSBiZWVuIHN1YnNjcmliZWQgdG8gc28gdGhhdCB3ZSBjYW4gYXZvaWRcbiAgICAgKiByZS1zdWJzY3JpYmluZyB0byB0aGUgc2FtZSBRdWVyeVJlZiBtdWx0aXBsZSB0aW1lcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHF1ZXJ5UmVmU3Vic2NyaWJlZCA9IG5ldyBXZWFrTWFwPFF1ZXJ5UmVmPFQsIFY+LCBib29sZWFuPigpO1xuICAgIC8qKlxuICAgICAqIFdlIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IHF1ZXJ5IHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgaXQgd2l0aCB0aGUgbmV4dCBxdWVyeVxuICAgICAqIGFuZCBhdm9pZCByZS1mZXRjaGluZyB0aGUgc2FtZSBxdWVyeSBtdWx0aXBsZSB0aW1lcy4gVGhpcyBpcyBhcHBsaWNhYmxlIHRvIHRoZSBjb2RlXG4gICAgICogcGF0aHMgdGhhdCBhY3R1YWxseSBjaGFuZ2UgdGhlIHF1ZXJ5LCBpLmUuIHJlZmV0Y2hPbkN1c3RvbUZpZWxkc0NoYW5nZSgpLlxuICAgICAqL1xuICAgIHByaXZhdGUgbGFzdFF1ZXJ5OiBEb2N1bWVudE5vZGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZS1mZXRjaCB0aGlzIHF1ZXJ5IHdoZW5ldmVyIHRoZSBhY3RpdmUgQ2hhbm5lbCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHJlZmV0Y2hPbkNoYW5uZWxDaGFuZ2UoKTogUXVlcnlSZXN1bHQ8VCwgVj4ge1xuICAgICAgICBjb25zdCB1c2VyU3RhdHVzJCA9IHRoaXMuYXBvbGxvLndhdGNoUXVlcnk8R2V0VXNlclN0YXR1c1F1ZXJ5Pih7XG4gICAgICAgICAgICBxdWVyeTogR0VUX1VTRVJfU1RBVFVTLFxuICAgICAgICB9KS52YWx1ZUNoYW5nZXM7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNoYW5uZWxJZCQgPSB1c2VyU3RhdHVzJC5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5kYXRhLnVzZXJTdGF0dXMuYWN0aXZlQ2hhbm5lbElkKSxcbiAgICAgICAgICAgIGZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wbGV0ZWQkKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbG9nZ2VkT3V0JCA9IHVzZXJTdGF0dXMkLnBpcGUoXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiBkYXRhLmRhdGEudXNlclN0YXR1cy5pc0xvZ2dlZEluKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgZmlsdGVyKGlzTG9nZ2VkSW4gPT4gIWlzTG9nZ2VkSW4pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCksXG4gICAgICAgICk7XG5cbiAgICAgICAgbWVyZ2UoYWN0aXZlQ2hhbm5lbElkJCwgdGhpcy52YWx1ZUNoYW5nZVN1YmplY3QpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwobG9nZ2VkT3V0JCksIHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlZCQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKS50aGVuKCgpID0+IHRoaXMucXVlcnlSZWYucmVmZXRjaCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmUtZmV0Y2ggdGhpcyBxdWVyeSB3aGVuZXZlciB0aGUgY3VzdG9tIGZpZWxkcyBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBxdWVyeSB0byBpbmNsdWRlIHRoZVxuICAgICAqIHNwZWNpZmllZCBjdXN0b20gZmllbGRzLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMC40XG4gICAgICovXG4gICAgcmVmZXRjaE9uQ3VzdG9tRmllbGRzQ2hhbmdlKGN1c3RvbUZpZWxkc1RvSW5jbHVkZSQ6IE9ic2VydmFibGU8c3RyaW5nW10+KTogUXVlcnlSZXN1bHQ8VCwgVj4ge1xuICAgICAgICBjdXN0b21GaWVsZHNUb0luY2x1ZGUkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoY3VzdG9tRmllbGRzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UXVlcnkgPSBhZGRDdXN0b21GaWVsZHModGhpcy5sYXN0UXVlcnksIHRoaXMuY3VzdG9tRmllbGRNYXAsIGN1c3RvbUZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSBKU09OLnN0cmluZ2lmeShuZXdRdWVyeSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMubGFzdFF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGN1c3RvbUZpZWxkcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UXVlcnkgPSBhZGRDdXN0b21GaWVsZHModGhpcy5sYXN0UXVlcnksIHRoaXMuY3VzdG9tRmllbGRNYXAsIGN1c3RvbUZpZWxkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBuZXdRdWVyeTtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeVJlZiA9IHRoaXMuYXBvbGxvLndhdGNoUXVlcnk8VCwgVj4oe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogbmV3UXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdGhpcy5xdWVyeVJlZi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoUG9saWN5OiB0aGlzLnF1ZXJ5UmVmLm9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlZiA9IHF1ZXJ5UmVmO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVJlZihxdWVyeVJlZik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyBhbiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIGEgc2luZ2xlIHJlc3VsdCBhbmQgdGhlbiBjb21wbGV0ZXMuXG4gICAgICovXG4gICAgZ2V0IHNpbmdsZSQoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRRdWVyeVJlZlZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gTmV0d29ya1N0YXR1cy5yZWFkeSksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQuZGF0YSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZWQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB1bnRpbCB1bnN1YnNjcmliZWQuXG4gICAgICovXG4gICAgZ2V0IHN0cmVhbSQoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRRdWVyeVJlZlZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gTmV0d29ya1N0YXR1cy5yZWFkeSksXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhKSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHJlZigpOiBRdWVyeVJlZjxULCBWPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5UmVmO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgYSBzaW5nbGUtcmVzdWx0IE9ic2VydmFibGUgYWZ0ZXIgYXBwbHlpbmcgdGhlIG1hcCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBtYXBTaW5nbGU8Uj4obWFwRm46IChpdGVtOiBUKSA9PiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZSQucGlwZShtYXAobWFwRm4pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZXR1cm5zIGEgbXVsdGlwbGUtcmVzdWx0IE9ic2VydmFibGUgYWZ0ZXIgYXBwbHlpbmcgdGhlIG1hcCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBtYXBTdHJlYW08Uj4obWFwRm46IChpdGVtOiBUKSA9PiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbSQucGlwZShtYXAobWFwRm4pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTaWduYWxzIHRvIHRoZSBpbnRlcm5hbCBPYnNlcnZhYmxlIHN1YnNjcmlwdGlvbnMgdGhhdCB0aGV5IHNob3VsZCBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZXR1cm5zIGFuIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFF1ZXJ5UmVmLnZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlLlxuICAgICAqXG4gICAgICogV2Ugd3JhcCB0aGUgdmFsdWVDaGFuZ2VzIE9ic2VydmFibGUgaW4gYSBuZXcgT2JzZXJ2YWJsZSBzbyB0aGF0IHdlIGNhbiBoYXZlIGEgbGF6eVxuICAgICAqIGV2YWx1YXRpb24gb2YgdGhlIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlLiBUaGF0IGlzLCB3ZSBvbmx5IGZpcmUgdGhlIEhUVFAgcmVxdWVzdCB3aGVuXG4gICAgICogdGhlIHJldHVybmVkIE9ic2VydmFibGUgaXMgc3Vic2NyaWJlZCB0by5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldCBjdXJyZW50UXVlcnlSZWZWYWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxBcG9sbG9RdWVyeVJlc3VsdDxUPj4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSZWZTdWJzY3JpYmVkLmdldCh0aGlzLnF1ZXJ5UmVmKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVJlZih0aGlzLnF1ZXJ5UmVmKTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVmU3Vic2NyaWJlZC5zZXQodGhpcy5xdWVyeVJlZiwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSZWZTdWJzY3JpYmVkLmRlbGV0ZSh0aGlzLnF1ZXJ5UmVmKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlIG9mIHRoZSBnaXZlbiBRdWVyeVJlZiwgYW5kIHN0b3JlcyB0aGUgc3Vic2NyaXB0aW9uXG4gICAgICogc28gdGhhdCBpdCBjYW4gYmUgdW5zdWJzY3JpYmVkIGZyb20gd2hlbiB0aGUgUXVlcnlSZWYgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN1YnNjcmliZVRvUXVlcnlSZWYocXVlcnlSZWY6IFF1ZXJ5UmVmPFQsIFY+KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHF1ZXJ5UmVmLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMudmFsdWVDaGFuZ2VTdWJqZWN0KTtcbiAgICB9XG59XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9kYXRhL3F1ZXJ5LXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUNILG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFDSCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFDWSxRQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBZ0Q7UUFGaEQsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFrQztRQUs1RDs7O1dBR0c7UUFDSyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU96Qzs7OztXQUlHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7UUFDakU7OztXQUdHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUF4QmhFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUMsQ0FBQztJQStCRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQXFCO1lBQzNELEtBQUssRUFBRSxlQUFlO1NBQ3pCLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFDakQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQzFCLG9CQUFvQixFQUFFLEVBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUM3QixDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQzVDLG9CQUFvQixFQUFFLEVBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUM3QixDQUFDO1FBRUYsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzthQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN4RixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsMkJBQTJCLENBQUMsc0JBQTRDO1FBQ3BFLHNCQUFzQjthQUNqQixJQUFJLENBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvRSxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUM3QjthQUNBLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN0QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFPO2dCQUMxQyxLQUFLLEVBQUUsUUFBUTtnQkFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2dCQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVzthQUNqRCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFDOUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDMUIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQzlELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDMUIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFJLEtBQXFCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBSSxLQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBWSwyQkFBMkI7UUFDbkMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxJQUFJLENBQUMsa0JBQWtCO2lCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxRQUF3QjtRQUNoRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFFBQVEsQ0FBQyxZQUFZO2FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCwgTmV0d29ya1N0YXR1cyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xuaW1wb3J0IHsgQXBvbGxvLCBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHRha2UsXG4gICAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEN1c3RvbUZpZWxkQ29uZmlnLCBHZXRVc2VyU3RhdHVzUXVlcnkgfSBmcm9tICcuLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcblxuaW1wb3J0IHsgR0VUX1VTRVJfU1RBVFVTIH0gZnJvbSAnLi9kZWZpbml0aW9ucy9jbGllbnQtZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgYWRkQ3VzdG9tRmllbGRzIH0gZnJvbSAnLi91dGlscy9hZGQtY3VzdG9tLWZpZWxkcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGNsYXNzIHdyYXBzIHRoZSBBcG9sbG8gQW5ndWxhciBRdWVyeVJlZiBvYmplY3QgYW5kIGV4cG9zZXMgc29tZSBnZXR0ZXJzXG4gKiBmb3IgY29udmVuaWVuY2UuXG4gKlxuICogQGRvY3NDYXRlZ29yeSBzZXJ2aWNlc1xuICogQGRvY3NQYWdlIERhdGFTZXJ2aWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeVJlc3VsdDxULCBWIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBxdWVyeVJlZjogUXVlcnlSZWY8VCwgVj4sXG4gICAgICAgIHByaXZhdGUgYXBvbGxvOiBBcG9sbG8sXG4gICAgICAgIHByaXZhdGUgY3VzdG9tRmllbGRNYXA6IE1hcDxzdHJpbmcsIEN1c3RvbUZpZWxkQ29uZmlnW10+LFxuICAgICkge1xuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IHF1ZXJ5UmVmLm9wdGlvbnMucXVlcnk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2F1c2VzIGFueSBzdWJzY3JpcHRpb25zIHRvIHRoZSBRdWVyeVJlZiB0byBjb21wbGV0ZSwgdmlhIHRoZSB1c2VcbiAgICAgKiBvZiB0aGUgYHRha2VVbnRpbGAgb3BlcmF0b3IuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb21wbGV0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKipcbiAgICAgKiBUaGUgc3Vic2NyaXB0aW9uIHRvIHRoZSBjdXJyZW50IFF1ZXJ5UmVmLnZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlLlxuICAgICAqIFRoaXMgaXMgc3RvcmVkIHNvIHRoYXQgaXQgY2FuIGJlIHVuc3Vic2NyaWJlZCBmcm9tIHdoZW4gdGhlIFF1ZXJ5UmVmXG4gICAgICogY2hhbmdlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoaXMgU3ViamVjdCBpcyB1c2VkIHRvIGVtaXQgbmV3IHZhbHVlcyBmcm9tIHRoZSBRdWVyeVJlZi52YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZS5cbiAgICAgKiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbiBkaXJlY3RseSBzdWJzY3JpYmluZyB0byB0aGUgUXVlcnlSZWYudmFsdWVDaGFuZ2VzIE9ic2VydmFibGVcbiAgICAgKiBzbyB0aGF0IHdlIGFyZSBhYmxlIHRvIGNoYW5nZSB0aGUgUXVlcnlSZWYgYW5kIHJlLXN1YnNjcmliZSB3aGVuIG5lY2Vzc2FyeS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+PigpO1xuICAgIC8qKlxuICAgICAqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIFF1ZXJ5UmVmcyB3aGljaCBoYXZlIGJlZW4gc3Vic2NyaWJlZCB0byBzbyB0aGF0IHdlIGNhbiBhdm9pZFxuICAgICAqIHJlLXN1YnNjcmliaW5nIHRvIHRoZSBzYW1lIFF1ZXJ5UmVmIG11bHRpcGxlIHRpbWVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcXVlcnlSZWZTdWJzY3JpYmVkID0gbmV3IFdlYWtNYXA8UXVlcnlSZWY8VCwgVj4sIGJvb2xlYW4+KCk7XG4gICAgLyoqXG4gICAgICogV2Ugc3RvcmUgYSByZWZlcmVuY2UgdG8gdGhlIGxhc3QgcXVlcnkgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSBpdCB3aXRoIHRoZSBuZXh0IHF1ZXJ5XG4gICAgICogYW5kIGF2b2lkIHJlLWZldGNoaW5nIHRoZSBzYW1lIHF1ZXJ5IG11bHRpcGxlIHRpbWVzLiBUaGlzIGlzIGFwcGxpY2FibGUgdG8gdGhlIGNvZGVcbiAgICAgKiBwYXRocyB0aGF0IGFjdHVhbGx5IGNoYW5nZSB0aGUgcXVlcnksIGkuZS4gcmVmZXRjaE9uQ3VzdG9tRmllbGRzQ2hhbmdlKCkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsYXN0UXVlcnk6IERvY3VtZW50Tm9kZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJlLWZldGNoIHRoaXMgcXVlcnkgd2hlbmV2ZXIgdGhlIGFjdGl2ZSBDaGFubmVsIGNoYW5nZXMuXG4gICAgICovXG4gICAgcmVmZXRjaE9uQ2hhbm5lbENoYW5nZSgpOiBRdWVyeVJlc3VsdDxULCBWPiB7XG4gICAgICAgIGNvbnN0IHVzZXJTdGF0dXMkID0gdGhpcy5hcG9sbG8ud2F0Y2hRdWVyeTxHZXRVc2VyU3RhdHVzUXVlcnk+KHtcbiAgICAgICAgICAgIHF1ZXJ5OiBHRVRfVVNFUl9TVEFUVVMsXG4gICAgICAgIH0pLnZhbHVlQ2hhbmdlcztcbiAgICAgICAgY29uc3QgYWN0aXZlQ2hhbm5lbElkJCA9IHVzZXJTdGF0dXMkLnBpcGUoXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiBkYXRhLmRhdGEudXNlclN0YXR1cy5hY3RpdmVDaGFubmVsSWQpLFxuICAgICAgICAgICAgZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlZCQpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBsb2dnZWRPdXQkID0gdXNlclN0YXR1cyQucGlwZShcbiAgICAgICAgICAgIG1hcChkYXRhID0+IGRhdGEuZGF0YS51c2VyU3RhdHVzLmlzTG9nZ2VkSW4pLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBmaWx0ZXIoaXNMb2dnZWRJbiA9PiAhaXNMb2dnZWRJbiksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wbGV0ZWQkKSxcbiAgICAgICAgKTtcblxuICAgICAgICBtZXJnZShhY3RpdmVDaGFubmVsSWQkLCB0aGlzLnZhbHVlQ2hhbmdlU3ViamVjdClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChsb2dnZWRPdXQkKSwgdGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpLnRoZW4oKCkgPT4gdGhpcy5xdWVyeVJlZi5yZWZldGNoKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZS1mZXRjaCB0aGlzIHF1ZXJ5IHdoZW5ldmVyIHRoZSBjdXN0b20gZmllbGRzIGNoYW5nZSwgdXBkYXRpbmcgdGhlIHF1ZXJ5IHRvIGluY2x1ZGUgdGhlXG4gICAgICogc3BlY2lmaWVkIGN1c3RvbSBmaWVsZHMuXG4gICAgICpcbiAgICAgKiBAc2luY2UgMy4wLjRcbiAgICAgKi9cbiAgICByZWZldGNoT25DdXN0b21GaWVsZHNDaGFuZ2UoY3VzdG9tRmllbGRzVG9JbmNsdWRlJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT4pOiBRdWVyeVJlc3VsdDxULCBWPiB7XG4gICAgICAgIGN1c3RvbUZpZWxkc1RvSW5jbHVkZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihjdXN0b21GaWVsZHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdRdWVyeSA9IGFkZEN1c3RvbUZpZWxkcyh0aGlzLmxhc3RRdWVyeSwgdGhpcy5jdXN0b21GaWVsZE1hcCwgY3VzdG9tRmllbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IEpTT04uc3RyaW5naWZ5KG5ld1F1ZXJ5KSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5sYXN0UXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2hhbmdlZDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wbGV0ZWQkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoY3VzdG9tRmllbGRzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdRdWVyeSA9IGFkZEN1c3RvbUZpZWxkcyh0aGlzLmxhc3RRdWVyeSwgdGhpcy5jdXN0b21GaWVsZE1hcCwgY3VzdG9tRmllbGRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IG5ld1F1ZXJ5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UmVmID0gdGhpcy5hcG9sbG8ud2F0Y2hRdWVyeTxULCBWPih7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBuZXdRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB0aGlzLnF1ZXJ5UmVmLnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6IHRoaXMucXVlcnlSZWYub3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVmID0gcXVlcnlSZWY7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1F1ZXJ5UmVmKHF1ZXJ5UmVmKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZXR1cm5zIGFuIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgYSBzaW5nbGUgcmVzdWx0IGFuZCB0aGVuIGNvbXBsZXRlcy5cbiAgICAgKi9cbiAgICBnZXQgc2luZ2xlJCgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXJ5UmVmVmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5uZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnJlYWR5KSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhKSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyBhbiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHVudGlsIHVuc3Vic2NyaWJlZC5cbiAgICAgKi9cbiAgICBnZXQgc3RyZWFtJCgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXJ5UmVmVmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5uZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnJlYWR5KSxcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0LmRhdGEpLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVkJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgcmVmKCk6IFF1ZXJ5UmVmPFQsIFY+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyBhIHNpbmdsZS1yZXN1bHQgT2JzZXJ2YWJsZSBhZnRlciBhcHBseWluZyB0aGUgbWFwIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIG1hcFNpbmdsZTxSPihtYXBGbjogKGl0ZW06IFQpID0+IFIpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2luZ2xlJC5waXBlKG1hcChtYXBGbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgYSBtdWx0aXBsZS1yZXN1bHQgT2JzZXJ2YWJsZSBhZnRlciBhcHBseWluZyB0aGUgbWFwIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIG1hcFN0cmVhbTxSPihtYXBGbjogKGl0ZW06IFQpID0+IFIpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtJC5waXBlKG1hcChtYXBGbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFNpZ25hbHMgdG8gdGhlIGludGVybmFsIE9ic2VydmFibGUgc3Vic2NyaXB0aW9ucyB0aGF0IHRoZXkgc2hvdWxkIGNvbXBsZXRlLlxuICAgICAqL1xuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY29tcGxldGVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgUXVlcnlSZWYudmFsdWVDaGFuZ2VzIE9ic2VydmFibGUuXG4gICAgICpcbiAgICAgKiBXZSB3cmFwIHRoZSB2YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZSBpbiBhIG5ldyBPYnNlcnZhYmxlIHNvIHRoYXQgd2UgY2FuIGhhdmUgYSBsYXp5XG4gICAgICogZXZhbHVhdGlvbiBvZiB0aGUgdmFsdWVDaGFuZ2VzIE9ic2VydmFibGUuIFRoYXQgaXMsIHdlIG9ubHkgZmlyZSB0aGUgSFRUUCByZXF1ZXN0IHdoZW5cbiAgICAgKiB0aGUgcmV0dXJuZWQgT2JzZXJ2YWJsZSBpcyBzdWJzY3JpYmVkIHRvLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0IGN1cnJlbnRRdWVyeVJlZlZhbHVlQ2hhbmdlcygpOiBPYnNlcnZhYmxlPEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+PiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWVyeVJlZlN1YnNjcmliZWQuZ2V0KHRoaXMucXVlcnlSZWYpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1F1ZXJ5UmVmKHRoaXMucXVlcnlSZWYpO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSZWZTdWJzY3JpYmVkLnNldCh0aGlzLnF1ZXJ5UmVmLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2VTdWJqZWN0XG4gICAgICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMucXVlcnlSZWYuZ2V0Q3VycmVudFJlc3VsdCgpKSwgc2hhcmVSZXBsYXkoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlZlN1YnNjcmliZWQuZGVsZXRlKHRoaXMucXVlcnlSZWYpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogU3Vic2NyaWJlcyB0byB0aGUgdmFsdWVDaGFuZ2VzIE9ic2VydmFibGUgb2YgdGhlIGdpdmVuIFF1ZXJ5UmVmLCBhbmQgc3RvcmVzIHRoZSBzdWJzY3JpcHRpb25cbiAgICAgKiBzbyB0aGF0IGl0IGNhbiBiZSB1bnN1YnNjcmliZWQgZnJvbSB3aGVuIHRoZSBRdWVyeVJlZiBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9RdWVyeVJlZihxdWVyeVJlZjogUXVlcnlSZWY8VCwgVj4pIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gcXVlcnlSZWYudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wbGV0ZWQkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy52YWx1ZUNoYW5nZVN1YmplY3QpO1xuICAgIH1cbn1cbiJdfQ==
@@ -43,6 +43,17 @@ export function addCustomFields(documentNode, customFields, includeCustomFields)
43
43
  },
44
44
  }
45
45
  : {}),
46
+ ...(customField.type === 'struct'
47
+ ? {
48
+ selectionSet: {
49
+ kind: Kind.SELECTION_SET,
50
+ selections: customField.fields.map(f => ({
51
+ kind: Kind.FIELD,
52
+ name: { kind: Kind.NAME, value: f.name },
53
+ })),
54
+ },
55
+ }
56
+ : {}),
46
57
  }));
47
58
  if (!existingCustomFieldsField) {
48
59
  // If no customFields field exists, add one
@@ -99,4 +110,4 @@ function isFragmentDefinition(value) {
99
110
  function isFieldNode(value) {
100
111
  return value.kind === Kind.FIELD;
101
112
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWN1c3RvbS1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvdXRpbHMvYWRkLWN1c3RvbS1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILElBQUksR0FFUCxNQUFNLFNBQVMsQ0FBQztBQVNqQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUMzQixZQUEwQixFQUMxQixZQUE4QyxFQUM5QyxtQkFBOEI7SUFFOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFpQixDQUFDO0lBQ3ZFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFcEUsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUcvQyxDQUFDO1FBRUYsSUFBSSxVQUFVLEtBQU0sY0FBc0IsRUFBRSxDQUFDO1lBQ3pDLHFGQUFxRjtZQUNyRiw2QkFBNkI7WUFDN0IsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxVQUFVLEtBQU0sU0FBaUIsRUFBRSxDQUFDO1lBQ3BDLGdDQUFnQztZQUNoQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxpRUFBaUU7WUFDakUsdUJBQXVCO1lBQ3ZCLE1BQU0seUJBQXlCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN0RSxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxjQUFjLENBQ3hELENBQUM7WUFDM0IsTUFBTSxjQUFjLEdBQW9CLG1CQUFtQjtpQkFDdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNqRixHQUFHLENBQ0EsV0FBVyxDQUFDLEVBQUUsQ0FDVixDQUFDO2dCQUNHLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDaEIsSUFBSSxFQUFFO29CQUNGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUk7aUJBQzFCO2dCQUNELHVEQUF1RDtnQkFDdkQsNENBQTRDO2dCQUM1QyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxVQUFVO29CQUMvQixDQUFDLENBQUM7d0JBQ0ksWUFBWSxFQUFFOzRCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTs0QkFDeEIsVUFBVSxFQUNOLFdBQ0gsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO2dDQUNoQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFOzZCQUN0QyxDQUFDLENBQUM7eUJBQ047cUJBQ0o7b0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNaLENBQWMsQ0FDdEIsQ0FBQztZQUNOLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUM3QiwyQ0FBMkM7Z0JBQzFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBOEIsQ0FBQyxJQUFJLENBQUM7b0JBQzFELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixLQUFLLEVBQUUsY0FBYztxQkFDeEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTt3QkFDeEIsVUFBVSxFQUFFLGNBQWM7cUJBQzdCO2lCQUNKLENBQUMsQ0FBQztZQUNQLENBQUM7aUJBQU0sQ0FBQztnQkFDSixnRUFBZ0U7Z0JBQ2hFLGdDQUFnQztnQkFDL0IseUJBQXlCLENBQUMsWUFBb0IsR0FBRztvQkFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUN4QixVQUFVLEVBQUUsY0FBYztpQkFDN0IsQ0FBQztZQUNOLENBQUM7WUFFRCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQzlDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQ3hFLENBQUM7WUFFRixNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVTtpQkFDeEQsTUFBTSxDQUFDLFdBQVcsQ0FBQztpQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssY0FBYyxDQUFDLENBQUM7WUFFeEQsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMvRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsVUFBOEIsQ0FBQyxJQUFJLENBQUM7b0JBQ2hFLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsS0FBSyxFQUFFLGNBQWM7cUJBQ3hCO29CQUNELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDaEIsWUFBWSxFQUFFO3dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTt3QkFDeEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQzNCLFdBQVcsQ0FBQyxFQUFFLENBQ1YsQ0FBQzs0QkFDRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7NEJBQ2hCLElBQUksRUFBRTtnQ0FDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0NBQ2YsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJOzZCQUMxQjt5QkFDSixDQUFjLENBQ3RCO3FCQUNKO2lCQUNKLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLEtBQXFCO0lBQy9DLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQW9CO0lBQ3JDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERlZmluaXRpb25Ob2RlLFxuICAgIERvY3VtZW50Tm9kZSxcbiAgICBGaWVsZE5vZGUsXG4gICAgRnJhZ21lbnREZWZpbml0aW9uTm9kZSxcbiAgICBLaW5kLFxuICAgIFNlbGVjdGlvbk5vZGUsXG59IGZyb20gJ2dyYXBocWwnO1xuXG5pbXBvcnQge1xuICAgIEN1c3RvbUZpZWxkQ29uZmlnLFxuICAgIEN1c3RvbUZpZWxkcyxcbiAgICBFbnRpdHlDdXN0b21GaWVsZHMsXG4gICAgUmVsYXRpb25DdXN0b21GaWVsZEZyYWdtZW50LFxufSBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcblxuLyoqXG4gKiBHaXZlbiBhIEdyYXBoUUwgQVNUIChEb2N1bWVudE5vZGUpLCB0aGlzIGZ1bmN0aW9uIGxvb2tzIGZvciBmcmFnbWVudCBkZWZpbml0aW9ucyBhbmQgYWRkcyBhbmQgY29uZmlndXJlZFxuICogY3VzdG9tIGZpZWxkcyB0byB0aG9zZSBmcmFnbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDdXN0b21GaWVsZHMoXG4gICAgZG9jdW1lbnROb2RlOiBEb2N1bWVudE5vZGUsXG4gICAgY3VzdG9tRmllbGRzOiBNYXA8c3RyaW5nLCBDdXN0b21GaWVsZENvbmZpZ1tdPixcbiAgICBpbmNsdWRlQ3VzdG9tRmllbGRzPzogc3RyaW5nW10sXG4pOiBEb2N1bWVudE5vZGUge1xuICAgIGNvbnN0IGNsb25lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkb2N1bWVudE5vZGUpKSBhcyBEb2N1bWVudE5vZGU7XG4gICAgY29uc3QgZnJhZ21lbnREZWZzID0gY2xvbmUuZGVmaW5pdGlvbnMuZmlsdGVyKGlzRnJhZ21lbnREZWZpbml0aW9uKTtcblxuICAgIGZvciAoY29uc3QgZnJhZ21lbnREZWYgb2YgZnJhZ21lbnREZWZzKSB7XG4gICAgICAgIGxldCBlbnRpdHlUeXBlID0gZnJhZ21lbnREZWYudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlIGFzIGtleW9mIFBpY2s8XG4gICAgICAgICAgICBDdXN0b21GaWVsZHMsXG4gICAgICAgICAgICBFeGNsdWRlPGtleW9mIEN1c3RvbUZpZWxkcywgJ19fdHlwZW5hbWUnPlxuICAgICAgICA+O1xuXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSAoJ09yZGVyQWRkcmVzcycgYXMgYW55KSkge1xuICAgICAgICAgICAgLy8gT3JkZXJBZGRyZXNzIGlzIGEgc3BlY2lhbCBjYXNlIG9mIHRoZSBBZGRyZXNzIGVudGl0eSwgYW5kIHNoYXJlcyBpdHMgY3VzdG9tIGZpZWxkc1xuICAgICAgICAgICAgLy8gc28gd2UgdHJlYXQgaXQgYXMgYW4gYWxpYXNcbiAgICAgICAgICAgIGVudGl0eVR5cGUgPSAnQWRkcmVzcyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PT0gKCdDb3VudHJ5JyBhcyBhbnkpKSB7XG4gICAgICAgICAgICAvLyBDb3VudHJ5IGlzIGFuIGFsaWFzIG9mIFJlZ2lvblxuICAgICAgICAgICAgZW50aXR5VHlwZSA9ICdSZWdpb24nO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzRm9yVHlwZSA9IGN1c3RvbUZpZWxkcy5nZXQoZW50aXR5VHlwZSk7XG4gICAgICAgIGlmIChjdXN0b21GaWVsZHNGb3JUeXBlICYmIGN1c3RvbUZpZWxkc0ZvclR5cGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgY3VzdG9tRmllbGRzIGZpZWxkIGluIHRoZSBmcmFnbWVudFxuICAgICAgICAgICAgLy8gdG8gYXZvaWQgZHVwbGljYXRpb25cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQgPSBmcmFnbWVudERlZi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9PiBpc0ZpZWxkTm9kZShzZWxlY3Rpb24pICYmIHNlbGVjdGlvbi5uYW1lLnZhbHVlID09PSAnY3VzdG9tRmllbGRzJyxcbiAgICAgICAgICAgICkgYXMgRmllbGROb2RlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uTm9kZXM6IFNlbGVjdGlvbk5vZGVbXSA9IGN1c3RvbUZpZWxkc0ZvclR5cGVcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZpZWxkID0+ICFpbmNsdWRlQ3VzdG9tRmllbGRzIHx8IGluY2x1ZGVDdXN0b21GaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSkpXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5GSUVMRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN1c3RvbUZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgXCJyZWxhdGlvblwiIGN1c3RvbSBmaWVsZHMsIHdlIG5lZWQgdG8gYWxzbyBzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGhlIHNjYWxhciBmaWVsZHMgb2YgdGhlIHJlbGF0ZWQgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihjdXN0b21GaWVsZC50eXBlID09PSAncmVsYXRpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZCBhcyBSZWxhdGlvbkN1c3RvbUZpZWxkRnJhZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc2NhbGFyRmllbGRzLm1hcChmID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5GSUVMRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6IGYgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRmllbGROb2RlLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBubyBjdXN0b21GaWVsZHMgZmllbGQgZXhpc3RzLCBhZGQgb25lXG4gICAgICAgICAgICAgICAgKGZyYWdtZW50RGVmLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zIGFzIFNlbGVjdGlvbk5vZGVbXSkucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tRmllbGRzJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25zOiBzZWxlY3Rpb25Ob2RlcyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgYSBjdXN0b21GaWVsZHMgZmllbGQgYWxyZWFkeSBleGlzdHMsIGFkZCB0aGUgY3VzdG9tIGZpZWxkc1xuICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBleGlzdGluZyBzZWxlY3Rpb24gc2V0XG4gICAgICAgICAgICAgICAgKGV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQuc2VsZWN0aW9uU2V0IGFzIGFueSkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uczogc2VsZWN0aW9uTm9kZXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbG9jYWxpemVkRmllbGRzID0gY3VzdG9tRmllbGRzRm9yVHlwZS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgZmllbGQgPT4gZmllbGQudHlwZSA9PT0gJ2xvY2FsZVN0cmluZycgfHwgZmllbGQudHlwZSA9PT0gJ2xvY2FsZVRleHQnLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zRmllbGQgPSBmcmFnbWVudERlZi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNGaWVsZE5vZGUpXG4gICAgICAgICAgICAgICAgLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ3RyYW5zbGF0aW9ucycpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxpemVkRmllbGRzLmxlbmd0aCAmJiB0cmFuc2xhdGlvbnNGaWVsZCAmJiB0cmFuc2xhdGlvbnNGaWVsZC5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICAodHJhbnNsYXRpb25zRmllbGQuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgYXMgU2VsZWN0aW9uTm9kZVtdKS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdjdXN0b21GaWVsZHMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IGxvY2FsaXplZEZpZWxkcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjdXN0b21GaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRmllbGROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZTtcbn1cblxuZnVuY3Rpb24gaXNGcmFnbWVudERlZmluaXRpb24odmFsdWU6IERlZmluaXRpb25Ob2RlKTogdmFsdWUgaXMgRnJhZ21lbnREZWZpbml0aW9uTm9kZSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjtcbn1cblxuZnVuY3Rpb24gaXNGaWVsZE5vZGUodmFsdWU6IFNlbGVjdGlvbk5vZGUpOiB2YWx1ZSBpcyBGaWVsZE5vZGUge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSBLaW5kLkZJRUxEO1xufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWN1c3RvbS1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvdXRpbHMvYWRkLWN1c3RvbS1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILElBQUksR0FFUCxNQUFNLFNBQVMsQ0FBQztBQVNqQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUMzQixZQUEwQixFQUMxQixZQUE4QyxFQUM5QyxtQkFBOEI7SUFFOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFpQixDQUFDO0lBQ3ZFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFcEUsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUcvQyxDQUFDO1FBRUYsSUFBSSxVQUFVLEtBQU0sY0FBc0IsRUFBRSxDQUFDO1lBQ3pDLHFGQUFxRjtZQUNyRiw2QkFBNkI7WUFDN0IsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxVQUFVLEtBQU0sU0FBaUIsRUFBRSxDQUFDO1lBQ3BDLGdDQUFnQztZQUNoQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxpRUFBaUU7WUFDakUsdUJBQXVCO1lBQ3ZCLE1BQU0seUJBQXlCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxD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Q0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxjQUFjLENBQUMsQ0FBQztZQUV4RCxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQy9FLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxVQUE4QixDQUFDLElBQUksQ0FBQztvQkFDaEUsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixLQUFLLEVBQUUsY0FBYztxQkFDeEI7b0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNoQixZQUFZLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUN4QixVQUFVLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FDM0IsV0FBVyxDQUFDLEVBQUUsQ0FDVixDQUFDOzRCQUNHLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSzs0QkFDaEIsSUFBSSxFQUFFO2dDQUNGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQ0FDZixLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUk7NkJBQzFCO3lCQUNKLENBQWMsQ0FDdEI7cUJBQ0o7aUJBQ0osQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsS0FBcUI7SUFDL0MsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBb0I7SUFDckMsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEZWZpbml0aW9uTm9kZSxcclxuICAgIERvY3VtZW50Tm9kZSxcclxuICAgIEZpZWxkTm9kZSxcclxuICAgIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXHJcbiAgICBLaW5kLFxyXG4gICAgU2VsZWN0aW9uTm9kZSxcclxufSBmcm9tICdncmFwaHFsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDdXN0b21GaWVsZENvbmZpZyxcclxuICAgIEN1c3RvbUZpZWxkcyxcclxuICAgIFJlbGF0aW9uQ3VzdG9tRmllbGRGcmFnbWVudCxcclxuICAgIFN0cnVjdEN1c3RvbUZpZWxkRnJhZ21lbnQsXHJcbn0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG4vKipcclxuICogR2l2ZW4gYSBHcmFwaFFMIEFTVCAoRG9jdW1lbnROb2RlKSwgdGhpcyBmdW5jdGlvbiBsb29rcyBmb3IgZnJhZ21lbnQgZGVmaW5pdGlvbnMgYW5kIGFkZHMgYW5kIGNvbmZpZ3VyZWRcclxuICogY3VzdG9tIGZpZWxkcyB0byB0aG9zZSBmcmFnbWVudHMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkQ3VzdG9tRmllbGRzKFxyXG4gICAgZG9jdW1lbnROb2RlOiBEb2N1bWVudE5vZGUsXHJcbiAgICBjdXN0b21GaWVsZHM6IE1hcDxzdHJpbmcsIEN1c3RvbUZpZWxkQ29uZmlnW10+LFxyXG4gICAgaW5jbHVkZUN1c3RvbUZpZWxkcz86IHN0cmluZ1tdLFxyXG4pOiBEb2N1bWVudE5vZGUge1xyXG4gICAgY29uc3QgY2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRvY3VtZW50Tm9kZSkpIGFzIERvY3VtZW50Tm9kZTtcclxuICAgIGNvbnN0IGZyYWdtZW50RGVmcyA9IGNsb25lLmRlZmluaXRpb25zLmZpbHRlcihpc0ZyYWdtZW50RGVmaW5pdGlvbik7XHJcblxyXG4gICAgZm9yIChjb25zdCBmcmFnbWVudERlZiBvZiBmcmFnbWVudERlZnMpIHtcclxuICAgICAgICBsZXQgZW50aXR5VHlwZSA9IGZyYWdtZW50RGVmLnR5cGVDb25kaXRpb24ubmFtZS52YWx1ZSBhcyBrZXlvZiBQaWNrPFxyXG4gICAgICAgICAgICBDdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgIEV4Y2x1ZGU8a2V5b2YgQ3VzdG9tRmllbGRzLCAnX190eXBlbmFtZSc+XHJcbiAgICAgICAgPjtcclxuXHJcbiAgICAgICAgaWYgKGVudGl0eVR5cGUgPT09ICgnT3JkZXJBZGRyZXNzJyBhcyBhbnkpKSB7XHJcbiAgICAgICAgICAgIC8vIE9yZGVyQWRkcmVzcyBpcyBhIHNwZWNpYWwgY2FzZSBvZiB0aGUgQWRkcmVzcyBlbnRpdHksIGFuZCBzaGFyZXMgaXRzIGN1c3RvbSBmaWVsZHNcclxuICAgICAgICAgICAgLy8gc28gd2UgdHJlYXQgaXQgYXMgYW4gYWxpYXNcclxuICAgICAgICAgICAgZW50aXR5VHlwZSA9ICdBZGRyZXNzJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSAoJ0NvdW50cnknIGFzIGFueSkpIHtcclxuICAgICAgICAgICAgLy8gQ291bnRyeSBpcyBhbiBhbGlhcyBvZiBSZWdpb25cclxuICAgICAgICAgICAgZW50aXR5VHlwZSA9ICdSZWdpb24nO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzRm9yVHlwZSA9IGN1c3RvbUZpZWxkcy5nZXQoZW50aXR5VHlwZSk7XHJcbiAgICAgICAgaWYgKGN1c3RvbUZpZWxkc0ZvclR5cGUgJiYgY3VzdG9tRmllbGRzRm9yVHlwZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGN1c3RvbUZpZWxkcyBmaWVsZCBpbiB0aGUgZnJhZ21lbnRcclxuICAgICAgICAgICAgLy8gdG8gYXZvaWQgZHVwbGljYXRpb25cclxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdDdXN0b21GaWVsZHNGaWVsZCA9IGZyYWdtZW50RGVmLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPT4gaXNGaWVsZE5vZGUoc2VsZWN0aW9uKSAmJiBzZWxlY3Rpb24ubmFtZS52YWx1ZSA9PT0gJ2N1c3RvbUZpZWxkcycsXHJcbiAgICAgICAgICAgICkgYXMgRmllbGROb2RlIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Ob2RlczogU2VsZWN0aW9uTm9kZVtdID0gY3VzdG9tRmllbGRzRm9yVHlwZVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmaWVsZCA9PiAhaW5jbHVkZUN1c3RvbUZpZWxkcyB8fCBpbmNsdWRlQ3VzdG9tRmllbGRzLmluY2x1ZGVzKGZpZWxkLm5hbWUpKVxyXG4gICAgICAgICAgICAgICAgLm1hcChcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5GSUVMRCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN1c3RvbUZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIFwicmVsYXRpb25cIiBjdXN0b20gZmllbGRzLCB3ZSBuZWVkIHRvIGFsc28gc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGhlIHNjYWxhciBmaWVsZHMgb2YgdGhlIHJlbGF0ZWQgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGN1c3RvbUZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25zOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZCBhcyBSZWxhdGlvbkN1c3RvbUZpZWxkRnJhZ21lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zY2FsYXJGaWVsZHMubWFwKGYgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6IGYgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oY3VzdG9tRmllbGQudHlwZSA9PT0gJ3N0cnVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25zOiAoY3VzdG9tRmllbGQgYXMgU3RydWN0Q3VzdG9tRmllbGRGcmFnbWVudCkuZmllbGRzLm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogZi5uYW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBGaWVsZE5vZGUsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoIWV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQpIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIG5vIGN1c3RvbUZpZWxkcyBmaWVsZCBleGlzdHMsIGFkZCBvbmVcclxuICAgICAgICAgICAgICAgIChmcmFnbWVudERlZi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyBhcyBTZWxlY3Rpb25Ob2RlW10pLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IHNlbGVjdGlvbk5vZGVzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIGEgY3VzdG9tRmllbGRzIGZpZWxkIGFscmVhZHkgZXhpc3RzLCBhZGQgdGhlIGN1c3RvbSBmaWVsZHNcclxuICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBleGlzdGluZyBzZWxlY3Rpb24gc2V0XHJcbiAgICAgICAgICAgICAgICAoZXhpc3RpbmdDdXN0b21GaWVsZHNGaWVsZC5zZWxlY3Rpb25TZXQgYXMgYW55KSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uczogc2VsZWN0aW9uTm9kZXMsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBsb2NhbGl6ZWRGaWVsZHMgPSBjdXN0b21GaWVsZHNGb3JUeXBlLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIGZpZWxkID0+IGZpZWxkLnR5cGUgPT09ICdsb2NhbGVTdHJpbmcnIHx8IGZpZWxkLnR5cGUgPT09ICdsb2NhbGVUZXh0JyxcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uc0ZpZWxkID0gZnJhZ21lbnREZWYuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnNcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNGaWVsZE5vZGUpXHJcbiAgICAgICAgICAgICAgICAuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAndHJhbnNsYXRpb25zJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAobG9jYWxpemVkRmllbGRzLmxlbmd0aCAmJiB0cmFuc2xhdGlvbnNGaWVsZCAmJiB0cmFuc2xhdGlvbnNGaWVsZC5zZWxlY3Rpb25TZXQpIHtcclxuICAgICAgICAgICAgICAgICh0cmFuc2xhdGlvbnNGaWVsZC5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyBhcyBTZWxlY3Rpb25Ob2RlW10pLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2N1c3RvbUZpZWxkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IGxvY2FsaXplZEZpZWxkcy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjdXN0b21GaWVsZC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEZpZWxkTm9kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNsb25lO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0ZyYWdtZW50RGVmaW5pdGlvbih2YWx1ZTogRGVmaW5pdGlvbk5vZGUpOiB2YWx1ZSBpcyBGcmFnbWVudERlZmluaXRpb25Ob2RlIHtcclxuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT047XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRmllbGROb2RlKHZhbHVlOiBTZWxlY3Rpb25Ob2RlKTogdmFsdWUgaXMgRmllbGROb2RlIHtcclxuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSBLaW5kLkZJRUxEO1xyXG59XHJcbiJdfQ==
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
40
40
  providedIn: 'root',
41
41
  }]
42
42
  }], ctorParameters: () => [{ type: i1.LocalStorageService }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtJQUFHLENBQUM7SUFJaEUsU0FBUyxDQUFDLFdBQW9CO1FBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FDSCxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzVCLFVBQVUsRUFBRSxFQUFFO2dCQUNkLEtBQUssRUFBRSxFQUFFO2dCQUNULG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxFQUFFO2FBQ3BCLENBQ0osQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBSUQsU0FBUyxDQUFDLFVBQW9DLEVBQUUsV0FBcUM7UUFDakYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO29CQUM1QyxHQUFHLGFBQWE7b0JBQ2hCLENBQUMsVUFBVSxDQUFDLEVBQUUsV0FBVztpQkFDNUIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0wsQ0FBQzs4R0FsQ1Esc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGbkIsTUFBTTs7MkZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFUYWJsZUNvbmZpZywgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL2xvY2FsLXN0b3JhZ2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29uZmlnU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7fVxuXG4gICAgZ2V0Q29uZmlnKCk6IERhdGFUYWJsZUNvbmZpZztcbiAgICBnZXRDb25maWcoZGF0YVRhYmxlSWQ6IHN0cmluZyk6IERhdGFUYWJsZUNvbmZpZ1tzdHJpbmddO1xuICAgIGdldENvbmZpZyhkYXRhVGFibGVJZD86IHN0cmluZyk6IERhdGFUYWJsZUNvbmZpZ1tzdHJpbmddIHwgRGF0YVRhYmxlQ29uZmlnIHtcbiAgICAgICAgY29uc3QgZGF0YVRhYmxlQ29uZmlnID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldCgnZGF0YVRhYmxlQ29uZmlnJykgPz8ge307XG4gICAgICAgIGlmIChkYXRhVGFibGVJZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVDb25maWdbZGF0YVRhYmxlSWRdID8/IHtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogW10sXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NlYXJjaEZpbHRlclJvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclByZXNldHM6IFtdLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGFUYWJsZUNvbmZpZztcbiAgICB9XG5cbiAgICBzZXRDb25maWcoZGF0YVRhYmxlSWQ6IHN0cmluZywgY29uZmlnOiBEYXRhVGFibGVDb25maWdbc3RyaW5nXSk6IHZvaWQ7XG4gICAgc2V0Q29uZmlnKGRhdGFUYWJsZUNvbmZpZzogRGF0YVRhYmxlQ29uZmlnKTogdm9pZDtcbiAgICBzZXRDb25maWcoaWRPckNvbmZpZzogc3RyaW5nIHwgRGF0YVRhYmxlQ29uZmlnLCBtYXliZUNvbmZpZz86IERhdGFUYWJsZUNvbmZpZ1tzdHJpbmddKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSB0aGlzLmdldENvbmZpZygpO1xuICAgICAgICBpZiAodHlwZW9mIGlkT3JDb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAobWF5YmVDb25maWcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0KCdkYXRhVGFibGVDb25maWcnLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgIFtpZE9yQ29uZmlnXTogbWF5YmVDb25maWcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0KCdkYXRhVGFibGVDb25maWcnLCB7IC4uLmN1cnJlbnRDb25maWcsIC4uLmlkT3JDb25maWcgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtJQUFHLENBQUM7SUFJaEUsU0FBUyxDQUFDLFdBQW9CO1FBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FDSCxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzVCLFVBQVUsRUFBRSxFQUFFO2dCQUNkLEtBQUssRUFBRSxFQUFFO2dCQUNULG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxFQUFFO2FBQ3BCLENBQ0osQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBSUQsU0FBUyxDQUFDLFVBQW9DLEVBQUUsV0FBcUM7UUFDakYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO29CQUM1QyxHQUFHLGFBQWE7b0JBQ2hCLENBQUMsVUFBVSxDQUFDLEVBQUUsV0FBVztpQkFDNUIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0wsQ0FBQzs4R0FsQ1Esc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGbkIsTUFBTTs7MkZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVRhYmxlQ29uZmlnLCBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29uZmlnU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHt9XHJcblxyXG4gICAgZ2V0Q29uZmlnKCk6IERhdGFUYWJsZUNvbmZpZztcclxuICAgIGdldENvbmZpZyhkYXRhVGFibGVJZDogc3RyaW5nKTogRGF0YVRhYmxlQ29uZmlnW3N0cmluZ107XHJcbiAgICBnZXRDb25maWcoZGF0YVRhYmxlSWQ/OiBzdHJpbmcpOiBEYXRhVGFibGVDb25maWdbc3RyaW5nXSB8IERhdGFUYWJsZUNvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgZGF0YVRhYmxlQ29uZmlnID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldCgnZGF0YVRhYmxlQ29uZmlnJykgPz8ge307XHJcbiAgICAgICAgaWYgKGRhdGFUYWJsZUlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVDb25maWdbZGF0YVRhYmxlSWRdID8/IHtcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBvcmRlcjoge30sXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NlYXJjaEZpbHRlclJvdzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUHJlc2V0czogW10sXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhVGFibGVDb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29uZmlnKGRhdGFUYWJsZUlkOiBzdHJpbmcsIGNvbmZpZzogRGF0YVRhYmxlQ29uZmlnW3N0cmluZ10pOiB2b2lkO1xyXG4gICAgc2V0Q29uZmlnKGRhdGFUYWJsZUNvbmZpZzogRGF0YVRhYmxlQ29uZmlnKTogdm9pZDtcclxuICAgIHNldENvbmZpZyhpZE9yQ29uZmlnOiBzdHJpbmcgfCBEYXRhVGFibGVDb25maWcsIG1heWJlQ29uZmlnPzogRGF0YVRhYmxlQ29uZmlnW3N0cmluZ10pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdGhpcy5nZXRDb25maWcoKTtcclxuICAgICAgICBpZiAodHlwZW9mIGlkT3JDb25maWcgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXliZUNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldCgnZGF0YVRhYmxlQ29uZmlnJywge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkT3JDb25maWddOiBtYXliZUNvbmZpZyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldCgnZGF0YVRhYmxlQ29uZmlnJywgeyAuLi5jdXJyZW50Q29uZmlnLCAuLi5pZE9yQ29uZmlnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -132,7 +132,8 @@ export class DataTableFilterCollection {
132
132
  filterType = { kind: 'text' };
133
133
  break;
134
134
  case 'relation':
135
- // Cannot sort relations
135
+ case 'struct':
136
+ // Cannot filter relations
136
137
  break;
137
138
  default:
138
139
  assertNever(type);
@@ -292,4 +293,4 @@ export class DataTableFilterCollection {
292
293
  return new FilterWithValue(filter, value, v => this.#valueChanges$.next(v));
293
294
  }
294
295
  }
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRL0YsT0FBTyxFQUNILGVBQWUsR0FXbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUNvQixNQUFrQyxFQUMzQyxLQUFpQyxFQUN4QyxRQUFzRDtRQUZ0QyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUMzQyxVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUpwQyxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBT3pFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUErQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLEtBQUssTUFBTSxFQUFF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Q0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxxQkFBcUIsQ0FDekIsTUFBaUMsRUFDakMsS0FBZ0Q7UUFFaEQsT0FBTyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZFR5cGUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC10eXBlcyc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ2p1c3QtZXh0ZW5kJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ3VzdG9tRmllbGRDb25maWcsXHJcbiAgICBEYXRlT3BlcmF0b3JzLFxyXG4gICAgSWRPcGVyYXRvcnMsXHJcbiAgICBOdW1iZXJPcGVyYXRvcnMsXHJcbiAgICBTdHJpbmdPcGVyYXRvcnMsXHJcbn0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgICBEYXRhVGFibGVGaWx0ZXIsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJCb29sZWFuVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlckN1c3RvbVR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJEYXRlUmFuZ2VUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVySURUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyTnVtYmVyVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlck9wdGlvbnMsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJTZWxlY3RUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyVGV4dFR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyVmFsdWUsXHJcbn0gZnJvbSAnLi9kYXRhLXRhYmxlLWZpbHRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsdGVyV2l0aFZhbHVlPFR5cGUgZXh0ZW5kcyBEYXRhVGFibGVGaWx0ZXJUeXBlID0gRGF0YVRhYmxlRmlsdGVyVHlwZT4ge1xyXG4gICAgcHJpdmF0ZSBvblVwZGF0ZUZucyA9IG5ldyBTZXQ8KHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikgPT4gdm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBUeXBlPixcclxuICAgICAgICBwdWJsaWMgdmFsdWU6IERhdGFUYWJsZUZpbHRlclZhbHVlPFR5cGU+LFxyXG4gICAgICAgIG9uVXBkYXRlPzogKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikgPT4gdm9pZCxcclxuICAgICkge1xyXG4gICAgICAgIGlmIChvblVwZGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uVXBkYXRlRm5zLmFkZChvblVwZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uVXBkYXRlKGZuOiAodmFsdWU6IERhdGFUYWJsZUZpbHRlclZhbHVlPFR5cGU+KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5vblVwZGF0ZUZucy5hZGQoZm4pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVZhbHVlKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHRoaXMub25VcGRhdGVGbnMpIHtcclxuICAgICAgICAgICAgZm4odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpc0lkKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlcklEVHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdpZCc7XHJcbiAgICB9XHJcblxyXG4gICAgaXNUZXh0KCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlclRleHRUeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ3RleHQnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTnVtYmVyKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlck51bWJlclR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnbnVtYmVyJztcclxuICAgIH1cclxuXHJcbiAgICBpc0Jvb2xlYW4oKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyQm9vbGVhblR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnYm9vbGVhbic7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZWxlY3QoKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyU2VsZWN0VHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdzZWxlY3QnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRGF0ZVJhbmdlKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlckRhdGVSYW5nZVR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnZGF0ZVJhbmdlJztcclxuICAgIH1cclxuXHJcbiAgICBpc0N1c3RvbSgpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJDdXN0b21UeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ2N1c3RvbSc7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcclxuICAgIHJlYWRvbmx5ICNmaWx0ZXJzOiBBcnJheTxEYXRhVGFibGVGaWx0ZXI8RmlsdGVySW5wdXQsIGFueT4+ID0gW107XHJcbiAgICAjYWN0aXZlRmlsdGVyczogRmlsdGVyV2l0aFZhbHVlW10gPSBbXTtcclxuICAgICN2YWx1ZUNoYW5nZXMkID0gbmV3IFN1YmplY3Q8RmlsdGVyV2l0aFZhbHVlW10+KCk7XHJcbiAgICAjY29ubmVjdGVkVG9Sb3V0ZXIgPSBmYWxzZTtcclxuICAgIHZhbHVlQ2hhbmdlcyA9IHRoaXMuI3ZhbHVlQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoMTApKTtcclxuICAgIHJlYWRvbmx5ICNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUgPSAnZmlsdGVycyc7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxyXG5cclxuICAgIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVycy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGFjdGl2ZUZpbHRlcnMoKTogRmlsdGVyV2l0aFZhbHVlW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNhY3RpdmVGaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZpbHRlcjxGaWx0ZXJUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZT4oXHJcbiAgICAgICAgY29uZmlnOiBEYXRhVGFibGVGaWx0ZXJPcHRpb25zPEZpbHRlcklucHV0LCBGaWx0ZXJUeXBlPixcclxuICAgICk6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248RmlsdGVySW5wdXQ+IHtcclxuICAgICAgICBpZiAodGhpcy4jY29ubmVjdGVkVG9Sb3V0ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgJ0Nhbm5vdCBhZGQgZmlsdGVyIGFmdGVyIGNvbm5lY3RpbmcgdG8gcm91dGVyLiBNYWtlIHN1cmUgdG8gY2FsbCBhZGRGaWx0ZXIoKSBiZWZvcmUgY29ubmVjdFRvUm91dGUoKScsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuI2ZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgbmV3IERhdGFUYWJsZUZpbHRlcihjb25maWcsIChmaWx0ZXIsIHZhbHVlKSA9PiB0aGlzLm9uQWN0aXZhdGVGaWx0ZXIoZmlsdGVyLCB2YWx1ZSkpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRmlsdGVyczxGaWx0ZXJUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZT4oXHJcbiAgICAgICAgY29uZmlnczogQXJyYXk8RGF0YVRhYmxlRmlsdGVyT3B0aW9uczxGaWx0ZXJJbnB1dCwgRmlsdGVyVHlwZT4+LFxyXG4gICAgKTogRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dD4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3MpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWx0ZXIoY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSWRGaWx0ZXIoKTogRmlsdGVySW5wdXQgZXh0ZW5kcyB7XHJcbiAgICAgICAgaWQ/OiBJZE9wZXJhdG9ycyB8IG51bGw7XHJcbiAgICB9XHJcbiAgICAgICAgPyBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0PlxyXG4gICAgICAgIDogbmV2ZXIge1xyXG4gICAgICAgIHRoaXMuYWRkRmlsdGVyKHtcclxuICAgICAgICAgICAgbmFtZTogJ2lkJyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnaWQnIH0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uaWQnKSxcclxuICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdpZCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZERhdGVGaWx0ZXJzKCk6IEZpbHRlcklucHV0IGV4dGVuZHMge1xyXG4gICAgICAgIGNyZWF0ZWRBdD86IERhdGVPcGVyYXRvcnMgfCBudWxsO1xyXG4gICAgICAgIHVwZGF0ZWRBdD86IERhdGVPcGVyYXRvcnMgfCBudWxsO1xyXG4gICAgfVxyXG4gICAgICAgID8gRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dD5cclxuICAgICAgICA6IG5ldmVyIHtcclxuICAgICAgICB0aGlzLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgIG5hbWU6ICdjcmVhdGVkQXQnLFxyXG4gICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdkYXRlUmFuZ2UnIH0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uY3JlYXRlZC1hdCcpLFxyXG4gICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ2NyZWF0ZWRBdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXIoe1xyXG4gICAgICAgICAgICBuYW1lOiAndXBkYXRlZEF0JyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnZGF0ZVJhbmdlJyB9LFxyXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLnVwZGF0ZWQtYXQnKSxcclxuICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICd1cGRhdGVkQXQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDdXN0b21GaWVsZEZpbHRlcnMoY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb25maWcgb2YgY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBjb25maWcudHlwZSBhcyBDdXN0b21GaWVsZFR5cGU7XHJcbiAgICAgICAgICAgIGlmIChjb25maWcubGlzdCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGZpbHRlclR5cGU6IERhdGFUYWJsZUZpbHRlclR5cGUgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IHsga2luZDogJ2Jvb2xlYW4nIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbnQnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSB7IGtpbmQ6ICdudW1iZXInIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRldGltZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IHsga2luZDogJ2RhdGVSYW5nZScgfTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdsb2NhbGVTdHJpbmcnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9jYWxlVGV4dCc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0geyBraW5kOiAndGV4dCcgfTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uJzpcclxuICAgICAgICAgICAgICAgICAgICAvLyBDYW5ub3Qgc29ydCByZWxhdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZpbHRlclR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb25maWcubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmaWx0ZXJUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6IGNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVyKG5hbWU6IHN0cmluZyk6IERhdGFUYWJsZUZpbHRlcjxGaWx0ZXJJbnB1dD4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJzLmZpbmQoZiA9PiBmLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlcnMoKTogQXJyYXk8RGF0YVRhYmxlRmlsdGVyPEZpbHRlcklucHV0Pj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUFjdGl2ZUZpbHRlckF0SW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuI2FjdGl2ZUZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQodGhpcy4jYWN0aXZlRmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRmlsdGVySW5wdXQoKTogRmlsdGVySW5wdXQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNhY3RpdmVGaWx0ZXJzLnJlZHVjZSgoYWNjLCB7IGZpbHRlciwgdmFsdWUgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlICE9IG51bGwgPyBmaWx0ZXIudG9GaWx0ZXJJbnB1dCh2YWx1ZSkgOiB7fTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZXh0ZW5kKHRydWUsIGFjYywgbmV3VmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEZpbHRlcklucHV0O1xyXG4gICAgICAgIH0sIHt9IGFzIEZpbHRlcklucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25uZWN0VG9Sb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGaWx0ZXJzID0gcm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy4jZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lKTtcclxuICAgICAgICAgICAgaWYgKHZhbC5sZW5ndGggPT09IDAgJiYgIWN1cnJlbnRGaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBbdGhpcy4jZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lXTogdGhpcy5zZXJpYWxpemUoKSwgcGFnZTogMSB9LFxyXG4gICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogcm91dGUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByb3V0ZS5xdWVyeVBhcmFtTWFwXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuZ2V0KHRoaXMuI2ZpbHRlcnNRdWVyeVBhcmFtTmFtZSkpLFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChyb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCh0aGlzLiNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUpID8/ICcnKSxcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUZpbHRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQodGhpcy4jYWN0aXZlRmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyUXVlcnlQYXJhbXMgPSAodmFsdWUgPz8gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCc7JylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKHZhbHVlID0+IHZhbHVlLnNwbGl0KCc6JykpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUgfSkpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgZmlsdGVyUXVlcnlQYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlcihuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZGVzZXJpYWxpemVWYWx1ZShmaWx0ZXIsIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmFjdGl2YXRlKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy4jY29ubmVjdGVkVG9Sb3V0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBzZXJpYWxpemUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jYWN0aXZlRmlsdGVyc1xyXG4gICAgICAgICAgICAubWFwKFxyXG4gICAgICAgICAgICAgICAgKGZpbHRlcldpdGhWYWx1ZSwgaSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBgJHtmaWx0ZXJXaXRoVmFsdWUuZmlsdGVyLm5hbWV9OiR7dGhpcy5zZXJpYWxpemVWYWx1ZShmaWx0ZXJXaXRoVmFsdWUpfWAsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLmpvaW4oJzsnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNlcmlhbGl6ZVZhbHVlPFR5cGUgZXh0ZW5kcyBEYXRhVGFibGVGaWx0ZXJUeXBlPihcclxuICAgICAgICBmaWx0ZXJXaXRoVmFsdWU6IEZpbHRlcldpdGhWYWx1ZTxUeXBlPixcclxuICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc0lkKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dmFsPy5vcGVyYXRvcn0sJHt2YWw/LnRlcm19YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc1RleHQoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBmaWx0ZXJXaXRoVmFsdWUudmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt2YWw/Lm9wZXJhdG9yfSwke3ZhbD8udGVybX1gO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyV2l0aFZhbHVlLmlzTnVtYmVyKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dmFsLm9wZXJhdG9yfSwke3ZhbC5hbW91bnR9YDtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc1NlbGVjdCgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbC5qb2luKCcsJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNCb29sZWFuKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsID8gJzEnIDogJzAnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyV2l0aFZhbHVlLmlzRGF0ZVJhbmdlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodmFsLm1vZGUgPT09ICdyZWxhdGl2ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt2YWwubW9kZX0sJHt2YWwucmVsYXRpdmVWYWx1ZX0sJHt2YWwucmVsYXRpdmVVbml0fWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHZhbC5zdGFydCA/IG5ldyBEYXRlKHZhbC5zdGFydCkuZ2V0VGltZSgpIDogJyc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSB2YWwuZW5kID8gbmV3IERhdGUodmFsLmVuZCkuZ2V0VGltZSgpIDogJyc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7c3RhcnR9LCR7ZW5kfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc0N1c3RvbSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJXaXRoVmFsdWUuZmlsdGVyLnR5cGUuc2VyaWFsaXplVmFsdWUoZmlsdGVyV2l0aFZhbHVlLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZXNlcmlhbGl6ZVZhbHVlKFxyXG4gICAgICAgIGZpbHRlcjogRGF0YVRhYmxlRmlsdGVyLFxyXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICApOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxEYXRhVGFibGVGaWx0ZXJUeXBlPiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIudHlwZS5raW5kKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2lkJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW29wZXJhdG9yLCB0ZXJtXSA9IHZhbHVlLnNwbGl0KCcsJykgYXMgW2tleW9mIFN0cmluZ09wZXJhdG9ycywgc3RyaW5nXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG9wZXJhdG9yLCB0ZXJtIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAndGV4dCc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtvcGVyYXRvciwgdGVybV0gPSB2YWx1ZS5zcGxpdCgnLCcpIGFzIFtrZXlvZiBTdHJpbmdPcGVyYXRvcnMsIHN0cmluZ107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgdGVybSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtvcGVyYXRvciwgYW1vdW50XSA9IHZhbHVlLnNwbGl0KCcsJykgYXMgW2tleW9mIE51bWJlck9wZXJhdG9ycywgc3RyaW5nXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG9wZXJhdG9yLCBhbW91bnQ6ICthbW91bnQgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSAnMSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVSYW5nZSc6XHJcbiAgICAgICAgICAgICAgICBsZXQgbW9kZSA9ICdyZWxhdGl2ZSc7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVsYXRpdmVWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlVW5pdDogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgncmVsYXRpdmUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPSAncmVsYXRpdmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtfLCByZWxhdGl2ZVZhbHVlU3RyLCByZWxhdGl2ZVVuaXRTdHJdID0gdmFsdWUuc3BsaXQoJywnKTtcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVZhbHVlID0gTnVtYmVyKHJlbGF0aXZlVmFsdWVTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlVW5pdCA9IHJlbGF0aXZlVW5pdFN0ciBhcyAnZGF5JyB8ICdtb250aCcgfCAneWVhcic7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPSAncmFuZ2UnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtzdGFydFRpbWVzdGFtcCwgZW5kVGltZXN0YW1wXSA9IHZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBzdGFydFRpbWVzdGFtcCA/IG5ldyBEYXRlKE51bWJlcihzdGFydFRpbWVzdGFtcCkpLnRvSVNPU3RyaW5nKCkgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICBlbmQgPSBlbmRUaW1lc3RhbXAgPyBuZXcgRGF0ZShOdW1iZXIoZW5kVGltZXN0YW1wKSkudG9JU09TdHJpbmcoKSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbW9kZSwgcmVsYXRpdmVWYWx1ZSwgcmVsYXRpdmVVbml0LCBzdGFydCwgZW5kIH07XHJcbiAgICAgICAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyLnR5cGUuZGVzZXJpYWxpemVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihmaWx0ZXIudHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25BY3RpdmF0ZUZpbHRlcihmaWx0ZXI6IERhdGFUYWJsZUZpbHRlcjxhbnksIGFueT4sIHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxhbnk+KSB7XHJcbiAgICAgICAgdGhpcy4jYWN0aXZlRmlsdGVycy5wdXNoKHRoaXMuY3JlYXRlRmlsdGVyV2l0aFZhbHVlKGZpbHRlciwgdmFsdWUpKTtcclxuICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQodGhpcy4jYWN0aXZlRmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJXaXRoVmFsdWUoXHJcbiAgICAgICAgZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBhbnk+LFxyXG4gICAgICAgIHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxEYXRhVGFibGVGaWx0ZXJUeXBlPixcclxuICAgICkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyV2l0aFZhbHVlKGZpbHRlciwgdmFsdWUsIHYgPT4gdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHYpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvcHJvdmlkZXJzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXItY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRL0YsT0FBTyxFQUNILGVBQWUsR0FXbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUNvQixNQUFrQyxFQUMzQyxLQUFpQyxFQUN4QyxRQUFzRDtRQUZ0QyxXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUMzQyxVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUpwQyxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBT3pFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUErQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLEtBQUssTUFBTSxFQUFF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O1FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8scUJBQXFCLENBQ3pCLE1BQWlDLEVBQ2pDLEtBQWdEO1FBRWhELE9BQU8sSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcclxuaW1wb3J0IHsgQ3VzdG9tRmllbGRUeXBlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IGV4dGVuZCBmcm9tICdqdXN0LWV4dGVuZCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUZpZWxkQ29uZmlnLFxyXG4gICAgRGF0ZU9wZXJhdG9ycyxcclxuICAgIElkT3BlcmF0b3JzLFxyXG4gICAgTnVtYmVyT3BlcmF0b3JzLFxyXG4gICAgU3RyaW5nT3BlcmF0b3JzLFxyXG59IGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gICAgRGF0YVRhYmxlRmlsdGVyLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyQm9vbGVhblR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJDdXN0b21UeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyRGF0ZVJhbmdlVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlcklEVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlck51bWJlclR5cGUsXHJcbiAgICBEYXRhVGFibGVGaWx0ZXJPcHRpb25zLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyU2VsZWN0VHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlclRleHRUeXBlLFxyXG4gICAgRGF0YVRhYmxlRmlsdGVyVHlwZSxcclxuICAgIERhdGFUYWJsZUZpbHRlclZhbHVlLFxyXG59IGZyb20gJy4vZGF0YS10YWJsZS1maWx0ZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlcldpdGhWYWx1ZTxUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZSA9IERhdGFUYWJsZUZpbHRlclR5cGU+IHtcclxuICAgIHByaXZhdGUgb25VcGRhdGVGbnMgPSBuZXcgU2V0PCh2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8VHlwZT4pID0+IHZvaWQ+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGZpbHRlcjogRGF0YVRhYmxlRmlsdGVyPGFueSwgVHlwZT4sXHJcbiAgICAgICAgcHVibGljIHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPixcclxuICAgICAgICBvblVwZGF0ZT86ICh2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8VHlwZT4pID0+IHZvaWQsXHJcbiAgICApIHtcclxuICAgICAgICBpZiAob25VcGRhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5vblVwZGF0ZUZucy5hZGQob25VcGRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblVwZGF0ZShmbjogKHZhbHVlOiBEYXRhVGFibGVGaWx0ZXJWYWx1ZTxUeXBlPikgPT4gdm9pZCkge1xyXG4gICAgICAgIHRoaXMub25VcGRhdGVGbnMuYWRkKGZuKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVWYWx1ZSh2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8VHlwZT4pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiB0aGlzLm9uVXBkYXRlRm5zKSB7XHJcbiAgICAgICAgICAgIGZuKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNJZCgpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJJRFR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnaWQnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVGV4dCgpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJUZXh0VHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICd0ZXh0JztcclxuICAgIH1cclxuXHJcbiAgICBpc051bWJlcigpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJOdW1iZXJUeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ251bWJlcic7XHJcbiAgICB9XHJcblxyXG4gICAgaXNCb29sZWFuKCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlckJvb2xlYW5UeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ2Jvb2xlYW4nO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2VsZWN0KCk6IHRoaXMgaXMgRmlsdGVyV2l0aFZhbHVlPERhdGFUYWJsZUZpbHRlclNlbGVjdFR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIudHlwZS5raW5kID09PSAnc2VsZWN0JztcclxuICAgIH1cclxuXHJcbiAgICBpc0RhdGVSYW5nZSgpOiB0aGlzIGlzIEZpbHRlcldpdGhWYWx1ZTxEYXRhVGFibGVGaWx0ZXJEYXRlUmFuZ2VUeXBlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyLnR5cGUua2luZCA9PT0gJ2RhdGVSYW5nZSc7XHJcbiAgICB9XHJcblxyXG4gICAgaXNDdXN0b20oKTogdGhpcyBpcyBGaWx0ZXJXaXRoVmFsdWU8RGF0YVRhYmxlRmlsdGVyQ3VzdG9tVHlwZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlci50eXBlLmtpbmQgPT09ICdjdXN0b20nO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XHJcbiAgICByZWFkb25seSAjZmlsdGVyczogQXJyYXk8RGF0YVRhYmxlRmlsdGVyPEZpbHRlcklucHV0LCBhbnk+PiA9IFtdO1xyXG4gICAgI2FjdGl2ZUZpbHRlcnM6IEZpbHRlcldpdGhWYWx1ZVtdID0gW107XHJcbiAgICAjdmFsdWVDaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PEZpbHRlcldpdGhWYWx1ZVtdPigpO1xyXG4gICAgI2Nvbm5lY3RlZFRvUm91dGVyID0gZmFsc2U7XHJcbiAgICB2YWx1ZUNoYW5nZXMgPSB0aGlzLiN2YWx1ZUNoYW5nZXMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDEwKSk7XHJcbiAgICByZWFkb25seSAjZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lID0gJ2ZpbHRlcnMnO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZpbHRlcnMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhY3RpdmVGaWx0ZXJzKCk6IEZpbHRlcldpdGhWYWx1ZVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jYWN0aXZlRmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICBkZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRGaWx0ZXI8RmlsdGVyVHlwZSBleHRlbmRzIERhdGFUYWJsZUZpbHRlclR5cGU+KFxyXG4gICAgICAgIGNvbmZpZzogRGF0YVRhYmxlRmlsdGVyT3B0aW9uczxGaWx0ZXJJbnB1dCwgRmlsdGVyVHlwZT4sXHJcbiAgICApOiBEYXRhVGFibGVGaWx0ZXJDb2xsZWN0aW9uPEZpbHRlcklucHV0PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuI2Nvbm5lY3RlZFRvUm91dGVyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICdDYW5ub3QgYWRkIGZpbHRlciBhZnRlciBjb25uZWN0aW5nIHRvIHJvdXRlci4gTWFrZSBzdXJlIHRvIGNhbGwgYWRkRmlsdGVyKCkgYmVmb3JlIGNvbm5lY3RUb1JvdXRlKCknLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiNmaWx0ZXJzLnB1c2goXHJcbiAgICAgICAgICAgIG5ldyBEYXRhVGFibGVGaWx0ZXIoY29uZmlnLCAoZmlsdGVyLCB2YWx1ZSkgPT4gdGhpcy5vbkFjdGl2YXRlRmlsdGVyKGZpbHRlciwgdmFsdWUpKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZpbHRlcnM8RmlsdGVyVHlwZSBleHRlbmRzIERhdGFUYWJsZUZpbHRlclR5cGU+KFxyXG4gICAgICAgIGNvbmZpZ3M6IEFycmF5PERhdGFUYWJsZUZpbHRlck9wdGlvbnM8RmlsdGVySW5wdXQsIEZpbHRlclR5cGU+PixcclxuICAgICk6IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248RmlsdGVySW5wdXQ+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyKGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZElkRmlsdGVyKCk6IEZpbHRlcklucHV0IGV4dGVuZHMge1xyXG4gICAgICAgIGlkPzogSWRPcGVyYXRvcnMgfCBudWxsO1xyXG4gICAgfVxyXG4gICAgICAgID8gRGF0YVRhYmxlRmlsdGVyQ29sbGVjdGlvbjxGaWx0ZXJJbnB1dD5cclxuICAgICAgICA6IG5ldmVyIHtcclxuICAgICAgICB0aGlzLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgIG5hbWU6ICdpZCcsXHJcbiAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2lkJyB9LFxyXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmlkJyksXHJcbiAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnaWQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBhZGREYXRlRmlsdGVycygpOiBGaWx0ZXJJbnB1dCBleHRlbmRzIHtcclxuICAgICAgICBjcmVhdGVkQXQ/OiBEYXRlT3BlcmF0b3JzIHwgbnVsbDtcclxuICAgICAgICB1cGRhdGVkQXQ/OiBEYXRlT3BlcmF0b3JzIHwgbnVsbDtcclxuICAgIH1cclxuICAgICAgICA/IERhdGFUYWJsZUZpbHRlckNvbGxlY3Rpb248RmlsdGVySW5wdXQ+XHJcbiAgICAgICAgOiBuZXZlciB7XHJcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXIoe1xyXG4gICAgICAgICAgICBuYW1lOiAnY3JlYXRlZEF0JyxcclxuICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnZGF0ZVJhbmdlJyB9LFxyXG4gICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmNyZWF0ZWQtYXQnKSxcclxuICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdjcmVhdGVkQXQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsdGVyKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VwZGF0ZWRBdCcsXHJcbiAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2RhdGVSYW5nZScgfSxcclxuICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi51cGRhdGVkLWF0JyksXHJcbiAgICAgICAgICAgIGZpbHRlckZpZWxkOiAndXBkYXRlZEF0JyxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ3VzdG9tRmllbGRGaWx0ZXJzKGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGN1c3RvbUZpZWxkcykge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gY29uZmlnLnR5cGUgYXMgQ3VzdG9tRmllbGRUeXBlO1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLmxpc3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJUeXBlOiBEYXRhVGFibGVGaWx0ZXJUeXBlIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSB7IGtpbmQ6ICdib29sZWFuJyB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaW50JzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0geyBraW5kOiAnbnVtYmVyJyB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSB7IGtpbmQ6ICdkYXRlUmFuZ2UnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9jYWxlU3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2FsZVRleHQnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAndGV4dCc6XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IHsga2luZDogJ3RleHQnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGlvbic6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJ1Y3QnOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbm5vdCBmaWx0ZXIgcmVsYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydE5ldmVyKHR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZmlsdGVyVHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29uZmlnLmxhYmVsID8/IGNvbmZpZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiBjb25maWcubmFtZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlcihuYW1lOiBzdHJpbmcpOiBEYXRhVGFibGVGaWx0ZXI8RmlsdGVySW5wdXQ+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWx0ZXJzKCk6IEFycmF5PERhdGFUYWJsZUZpbHRlcjxGaWx0ZXJJbnB1dD4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBY3RpdmVGaWx0ZXJBdEluZGV4KGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLiNhY3RpdmVGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHRoaXMuI2FjdGl2ZUZpbHRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbHRlcklucHV0KCk6IEZpbHRlcklucHV0IHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jYWN0aXZlRmlsdGVycy5yZWR1Y2UoKGFjYywgeyBmaWx0ZXIsIHZhbHVlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gZmlsdGVyLnRvRmlsdGVySW5wdXQodmFsdWUpIDoge307XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dGVuZCh0cnVlLCBhY2MsIG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBGaWx0ZXJJbnB1dDtcclxuICAgICAgICB9LCB7fSBhcyBGaWx0ZXJJbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29ubmVjdFRvUm91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVycyA9IHJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KHRoaXMuI2ZpbHRlcnNRdWVyeVBhcmFtTmFtZSk7XHJcbiAgICAgICAgICAgIGlmICh2YWwubGVuZ3RoID09PSAwICYmICFjdXJyZW50RmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgW3RoaXMuI2ZpbHRlcnNRdWVyeVBhcmFtTmFtZV06IHRoaXMuc2VyaWFsaXplKCksIHBhZ2U6IDEgfSxcclxuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcm91dGUucXVlcnlQYXJhbU1hcFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmdldCh0aGlzLiNmaWx0ZXJzUXVlcnlQYXJhbU5hbWUpKSxcclxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgocm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy4jZmlsdGVyc1F1ZXJ5UGFyYW1OYW1lKSA/PyAnJyksXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiNhY3RpdmVGaWx0ZXJzID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHRoaXMuI2FjdGl2ZUZpbHRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5UGFyYW1zID0gKHZhbHVlID8/ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnOycpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCh2YWx1ZSA9PiB2YWx1ZS5zcGxpdCgnOicpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+ICh7IG5hbWUsIHZhbHVlIH0pKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGZpbHRlclF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIobmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmRlc2VyaWFsaXplVmFsdWUoZmlsdGVyLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5hY3RpdmF0ZSh2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuI2Nvbm5lY3RlZFRvUm91dGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2VyaWFsaXplKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2FjdGl2ZUZpbHRlcnNcclxuICAgICAgICAgICAgLm1hcChcclxuICAgICAgICAgICAgICAgIChmaWx0ZXJXaXRoVmFsdWUsIGkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgYCR7ZmlsdGVyV2l0aFZhbHVlLmZpbHRlci5uYW1lfToke3RoaXMuc2VyaWFsaXplVmFsdWUoZmlsdGVyV2l0aFZhbHVlKX1gLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5qb2luKCc7Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXJpYWxpemVWYWx1ZTxUeXBlIGV4dGVuZHMgRGF0YVRhYmxlRmlsdGVyVHlwZT4oXHJcbiAgICAgICAgZmlsdGVyV2l0aFZhbHVlOiBGaWx0ZXJXaXRoVmFsdWU8VHlwZT4sXHJcbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNJZCgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3ZhbD8ub3BlcmF0b3J9LCR7dmFsPy50ZXJtfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNUZXh0KCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyV2l0aFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dmFsPy5vcGVyYXRvcn0sJHt2YWw/LnRlcm19YDtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc051bWJlcigpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3ZhbC5vcGVyYXRvcn0sJHt2YWwuYW1vdW50fWA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNTZWxlY3QoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBmaWx0ZXJXaXRoVmFsdWUudmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWwuam9pbignLCcpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyV2l0aFZhbHVlLmlzQm9vbGVhbigpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbCA/ICcxJyA6ICcwJztcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcldpdGhWYWx1ZS5pc0RhdGVSYW5nZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGZpbHRlcldpdGhWYWx1ZS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHZhbC5tb2RlID09PSAncmVsYXRpdmUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dmFsLm1vZGV9LCR7dmFsLnJlbGF0aXZlVmFsdWV9LCR7dmFsLnJlbGF0aXZlVW5pdH1gO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB2YWwuc3RhcnQgPyBuZXcgRGF0ZSh2YWwuc3RhcnQpLmdldFRpbWUoKSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gdmFsLmVuZCA/IG5ldyBEYXRlKHZhbC5lbmQpLmdldFRpbWUoKSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3N0YXJ0fSwke2VuZH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJXaXRoVmFsdWUuaXNDdXN0b20oKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyV2l0aFZhbHVlLmZpbHRlci50eXBlLnNlcmlhbGl6ZVZhbHVlKGZpbHRlcldpdGhWYWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzZXJpYWxpemVWYWx1ZShcclxuICAgICAgICBmaWx0ZXI6IERhdGFUYWJsZUZpbHRlcixcclxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgKTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8RGF0YVRhYmxlRmlsdGVyVHlwZT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUua2luZCkge1xyXG4gICAgICAgICAgICBjYXNlICdpZCc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtvcGVyYXRvciwgdGVybV0gPSB2YWx1ZS5zcGxpdCgnLCcpIGFzIFtrZXlvZiBTdHJpbmdPcGVyYXRvcnMsIHN0cmluZ107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgdGVybSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbb3BlcmF0b3IsIHRlcm1dID0gdmFsdWUuc3BsaXQoJywnKSBhcyBba2V5b2YgU3RyaW5nT3BlcmF0b3JzLCBzdHJpbmddO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgb3BlcmF0b3IsIHRlcm0gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbb3BlcmF0b3IsIGFtb3VudF0gPSB2YWx1ZS5zcGxpdCgnLCcpIGFzIFtrZXlvZiBOdW1iZXJPcGVyYXRvcnMsIHN0cmluZ107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgYW1vdW50OiArYW1vdW50IH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJzEnO1xyXG4gICAgICAgICAgICBjYXNlICdkYXRlUmFuZ2UnOlxyXG4gICAgICAgICAgICAgICAgbGV0IG1vZGUgPSAncmVsYXRpdmUnO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGxldCByZWxhdGl2ZVVuaXQ6ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdGFydDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3JlbGF0aXZlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3JlbGF0aXZlJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbXywgcmVsYXRpdmVWYWx1ZVN0ciwgcmVsYXRpdmVVbml0U3RyXSA9IHZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVWYWx1ZSA9IE51bWJlcihyZWxhdGl2ZVZhbHVlU3RyKTtcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVVuaXQgPSByZWxhdGl2ZVVuaXRTdHIgYXMgJ2RheScgfCAnbW9udGgnIHwgJ3llYXInO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3JhbmdlJztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbc3RhcnRUaW1lc3RhbXAsIGVuZFRpbWVzdGFtcF0gPSB2YWx1ZS5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnRUaW1lc3RhbXAgPyBuZXcgRGF0ZShOdW1iZXIoc3RhcnRUaW1lc3RhbXApKS50b0lTT1N0cmluZygpIDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kVGltZXN0YW1wID8gbmV3IERhdGUoTnVtYmVyKGVuZFRpbWVzdGFtcCkpLnRvSVNPU3RyaW5nKCkgOiAnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG1vZGUsIHJlbGF0aXZlVmFsdWUsIHJlbGF0aXZlVW5pdCwgc3RhcnQsIGVuZCB9O1xyXG4gICAgICAgICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlci50eXBlLmRlc2VyaWFsaXplVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIoZmlsdGVyLnR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uQWN0aXZhdGVGaWx0ZXIoZmlsdGVyOiBEYXRhVGFibGVGaWx0ZXI8YW55LCBhbnk+LCB2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8YW55Pikge1xyXG4gICAgICAgIHRoaXMuI2FjdGl2ZUZpbHRlcnMucHVzaCh0aGlzLmNyZWF0ZUZpbHRlcldpdGhWYWx1ZShmaWx0ZXIsIHZhbHVlKSk7XHJcbiAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KHRoaXMuI2FjdGl2ZUZpbHRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlRmlsdGVyV2l0aFZhbHVlKFxyXG4gICAgICAgIGZpbHRlcjogRGF0YVRhYmxlRmlsdGVyPGFueSwgYW55PixcclxuICAgICAgICB2YWx1ZTogRGF0YVRhYmxlRmlsdGVyVmFsdWU8RGF0YVRhYmxlRmlsdGVyVHlwZT4sXHJcbiAgICApIHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpbHRlcldpdGhWYWx1ZShmaWx0ZXIsIHZhbHVlLCB2ID0+IHRoaXMuI3ZhbHVlQ2hhbmdlcyQubmV4dCh2KSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -55,6 +55,7 @@ export class DataTableSortCollection {
55
55
  this.addSort({ name: config.name });
56
56
  break;
57
57
  case 'relation':
58
+ case 'struct':
58
59
  // Cannot sort relations
59
60
  break;
60
61
  default:
@@ -112,4 +113,4 @@ export class DataTableSortCollection {
112
113
  .map(s => ({ name: s.name, sortOrder: s.sortOrder })));
113
114
  }
114
115
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1zb3J0LWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3Byb3ZpZGVycy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtc29ydC1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUE0QyxNQUFNLG1CQUFtQixDQUFDO0FBRTVGLE1BQU0sT0FBTyx1QkFBdUI7SUFJdkIsTUFBTSxDQUF1QztJQUN0RCxjQUFjLENBQXFGO0lBQ25HLGtCQUFrQixDQUFTO0lBRWxCLG1CQUFtQixDQUFVO0lBQ3RDLFlBQVksQ0FBdUU7SUFHbkYsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSekIsV0FBTSxHQUFvQyxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBc0UsQ0FBQztRQUNuRyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQztRQUVyQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVYLENBQUM7SUFFdEMsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lB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QUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDdkUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBYyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwQixJQUFJLENBQUMsTUFBTTthQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FDbkUsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDdXN0b21GaWVsZFR5cGUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC10eXBlcyc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ3VzdG9tRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcclxuaW1wb3J0IHsgRGF0YVRhYmxlU29ydCwgRGF0YVRhYmxlU29ydE9wdGlvbnMsIERhdGFUYWJsZVNvcnRPcmRlciB9IGZyb20gJy4vZGF0YS10YWJsZS1zb3J0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVTb3J0Q29sbGVjdGlvbjxcclxuICAgIFNvcnRJbnB1dCBleHRlbmRzIFJlY29yZDxzdHJpbmcsICdBU0MnIHwgJ0RFU0MnPixcclxuICAgIE5hbWVzIGV4dGVuZHMgWy4uLkFycmF5PGtleW9mIFNvcnRJbnB1dD5dID0gW10sXHJcbj4ge1xyXG4gICAgcmVhZG9ubHkgI3NvcnRzOiBBcnJheTxEYXRhVGFibGVTb3J0PFNvcnRJbnB1dD4+ID0gW107XHJcbiAgICAjdmFsdWVDaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PEFycmF5PHsgbmFtZTogc3RyaW5nOyBzb3J0T3JkZXI6IERhdGFUYWJsZVNvcnRPcmRlciB8IHVuZGVmaW5lZCB9Pj4oKTtcclxuICAgICNjb25uZWN0ZWRUb1JvdXRlciA9IGZhbHNlO1xyXG4gICAgdmFsdWVDaGFuZ2VzID0gdGhpcy4jdmFsdWVDaGFuZ2VzJC5hc09ic2VydmFibGUoKTtcclxuICAgIHJlYWRvbmx5ICNzb3J0UXVlcnlQYXJhbU5hbWUgPSAnc29ydCc7XHJcbiAgICAjZGVmYXVsdFNvcnQ6IHsgbmFtZToga2V5b2YgU29ydElucHV0OyBzb3J0T3JkZXI6IERhdGFUYWJsZVNvcnRPcmRlciB9IHwgdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI3NvcnRzLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBkZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRTb3J0PE5hbWUgZXh0ZW5kcyBrZXlvZiBTb3J0SW5wdXQ+KFxyXG4gICAgICAgIGNvbmZpZzogRGF0YVRhYmxlU29ydE9wdGlvbnM8U29ydElucHV0LCBOYW1lPixcclxuICAgICk6IERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uPFNvcnRJbnB1dCwgWy4uLk5hbWVzLCBOYW1lXT4ge1xyXG4gICAgICAgIGlmICh0aGlzLiNjb25uZWN0ZWRUb1JvdXRlcikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnQ2Fubm90IGFkZCBzb3J0IGFmdGVyIGNvbm5lY3RpbmcgdG8gcm91dGVyLiBNYWtlIHN1cmUgdG8gY2FsbCBhZGRTb3J0KCkgYmVmb3JlIGNvbm5lY3RUb1JvdXRlKCknLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiNzb3J0cy5wdXNoKG5ldyBEYXRhVGFibGVTb3J0PFNvcnRJbnB1dD4oY29uZmlnLCAoKSA9PiB0aGlzLm9uU2V0VmFsdWUoKSkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgRGF0YVRhYmxlU29ydENvbGxlY3Rpb248U29ydElucHV0LCBbLi4uTmFtZXMsIE5hbWVdPjtcclxuICAgIH1cclxuXHJcbiAgICBhZGRTb3J0czxOYW1lIGV4dGVuZHMga2V5b2YgU29ydElucHV0PihcclxuICAgICAgICBjb25maWdzOiBBcnJheTxEYXRhVGFibGVTb3J0T3B0aW9uczxTb3J0SW5wdXQsIE5hbWU+PixcclxuICAgICk6IERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uPFNvcnRJbnB1dCwgWy4uLk5hbWVzLCBOYW1lXT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3MpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRTb3J0KGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgRGF0YVRhYmxlU29ydENvbGxlY3Rpb248U29ydElucHV0LCBbLi4uTmFtZXMsIE5hbWVdPjtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDdXN0b21GaWVsZFNvcnRzKGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGN1c3RvbUZpZWxkcykge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gY29uZmlnLnR5cGUgYXMgQ3VzdG9tRmllbGRUeXBlO1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLmxpc3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2FsZVN0cmluZyc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2ludCc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdmbG9hdCc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRldGltZSc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdsb2NhbGVUZXh0JzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU29ydCh7IG5hbWU6IGNvbmZpZy5uYW1lIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVsYXRpb24nOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbm5vdCBzb3J0IHJlbGF0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBhc3NlcnROZXZlcih0eXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0U29ydChuYW1lOiBrZXlvZiBTb3J0SW5wdXQsIHNvcnRPcmRlcjogRGF0YVRhYmxlU29ydE9yZGVyKSB7XHJcbiAgICAgICAgdGhpcy4jZGVmYXVsdFNvcnQgPSB7IG5hbWUsIHNvcnRPcmRlciB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldChuYW1lOiBOYW1lc1tudW1iZXJdKTogRGF0YVRhYmxlU29ydDxTb3J0SW5wdXQ+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jc29ydHMuZmluZChzID0+IHMubmFtZSA9PT0gbmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29ubmVjdFRvUm91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgW3RoaXMuI3NvcnRRdWVyeVBhcmFtTmFtZV06IHRoaXMuc2VyaWFsaXplKCkgfSxcclxuICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyUXVlcnlQYXJhbXMgPSAocm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy4jc29ydFF1ZXJ5UGFyYW1OYW1lKSA/PyAnJylcclxuICAgICAgICAgICAgLnNwbGl0KCc7JylcclxuICAgICAgICAgICAgLm1hcCh2YWx1ZSA9PiB2YWx1ZS5zcGxpdCgnOicpKVxyXG4gICAgICAgICAgICAubWFwKChbbmFtZSwgdmFsdWVdKSA9PiAoeyBuYW1lLCB2YWx1ZSB9KSk7XHJcbiAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgZmlsdGVyUXVlcnlQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3Qgc29ydCA9IHRoaXMuZ2V0KG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoc29ydCkge1xyXG4gICAgICAgICAgICAgICAgc29ydC5zZXRTb3J0T3JkZXIodmFsdWUgYXMgYW55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiNjb25uZWN0ZWRUb1JvdXRlciA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlU29ydElucHV0KCk6IFNvcnRJbnB1dCB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlU29ydHMgPSB0aGlzLiNzb3J0cy5maWx0ZXIocyA9PiBzLnNvcnRPcmRlciAhPT0gdW5kZWZpbmVkKTtcclxuICAgICAgICBsZXQgc29ydElucHV0ID0ge30gYXMgU29ydElucHV0O1xyXG4gICAgICAgIGlmIChhY3RpdmVTb3J0cy5sZW5ndGggPT09IDAgJiYgdGhpcy4jZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgW3RoaXMuI2RlZmF1bHRTb3J0Lm5hbWVdOiB0aGlzLiNkZWZhdWx0U29ydC5zb3J0T3JkZXIgfSBhcyBTb3J0SW5wdXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3Qgc29ydCBvZiBhY3RpdmVTb3J0cykge1xyXG4gICAgICAgICAgICBzb3J0SW5wdXQgPSB7IC4uLnNvcnRJbnB1dCwgW3NvcnQubmFtZV06IHNvcnQuc29ydE9yZGVyIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzb3J0SW5wdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXJpYWxpemUoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBhY3RpdmVTb3J0cyA9IHRoaXMuI3NvcnRzLmZpbHRlcihzID0+IHMuc29ydE9yZGVyICE9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgIHJldHVybiBhY3RpdmVTb3J0cy5tYXAocyA9PiBgJHtzLm5hbWUgYXMgc3RyaW5nfToke3Muc29ydE9yZGVyfWApLmpvaW4oJzsnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uU2V0VmFsdWUoKSB7XHJcbiAgICAgICAgdGhpcy4jdmFsdWVDaGFuZ2VzJC5uZXh0KFxyXG4gICAgICAgICAgICB0aGlzLiNzb3J0c1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihmID0+IGYuc29ydE9yZGVyICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAubWFwKHMgPT4gKHsgbmFtZTogcy5uYW1lIGFzIGFueSwgc29ydE9yZGVyOiBzLnNvcnRPcmRlciB9KSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1zb3J0LWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3Byb3ZpZGVycy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtc29ydC1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUE0QyxNQUFNLG1CQUFtQixDQUFDO0FBRTVGLE1BQU0sT0FBTyx1QkFBdUI7SUFJdkIsTUFBTSxDQUF1QztJQUN0RCxjQUFjLENBQXFGO0lBQ25HLGtCQUFrQixDQUFTO0lBRWxCLG1CQUFtQixDQUFVO0lBQ3RDLFlBQVksQ0FBdUU7SUFHbkYsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSekIsV0FBTSxHQUFvQyxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBc0UsQ0FBQztRQUNuRyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQztRQUVyQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVYLENBQUM7SUFFdEMsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lB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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQWMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDcEIsSUFBSSxDQUFDLE1BQU07YUFDTixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQzthQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQ25FLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ3VzdG9tRmllbGRUeXBlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEN1c3RvbUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IERhdGFUYWJsZVNvcnQsIERhdGFUYWJsZVNvcnRPcHRpb25zLCBEYXRhVGFibGVTb3J0T3JkZXIgfSBmcm9tICcuL2RhdGEtdGFibGUtc29ydCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlU29ydENvbGxlY3Rpb248XHJcbiAgICBTb3J0SW5wdXQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCAnQVNDJyB8ICdERVNDJz4sXHJcbiAgICBOYW1lcyBleHRlbmRzIFsuLi5BcnJheTxrZXlvZiBTb3J0SW5wdXQ+XSA9IFtdLFxyXG4+IHtcclxuICAgIHJlYWRvbmx5ICNzb3J0czogQXJyYXk8RGF0YVRhYmxlU29ydDxTb3J0SW5wdXQ+PiA9IFtdO1xyXG4gICAgI3ZhbHVlQ2hhbmdlcyQgPSBuZXcgU3ViamVjdDxBcnJheTx7IG5hbWU6IHN0cmluZzsgc29ydE9yZGVyOiBEYXRhVGFibGVTb3J0T3JkZXIgfCB1bmRlZmluZWQgfT4+KCk7XHJcbiAgICAjY29ubmVjdGVkVG9Sb3V0ZXIgPSBmYWxzZTtcclxuICAgIHZhbHVlQ2hhbmdlcyA9IHRoaXMuI3ZhbHVlQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICByZWFkb25seSAjc29ydFF1ZXJ5UGFyYW1OYW1lID0gJ3NvcnQnO1xyXG4gICAgI2RlZmF1bHRTb3J0OiB7IG5hbWU6IGtleW9mIFNvcnRJbnB1dDsgc29ydE9yZGVyOiBEYXRhVGFibGVTb3J0T3JkZXIgfSB8IHVuZGVmaW5lZDtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XHJcblxyXG4gICAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNzb3J0cy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkU29ydDxOYW1lIGV4dGVuZHMga2V5b2YgU29ydElucHV0PihcclxuICAgICAgICBjb25maWc6IERhdGFUYWJsZVNvcnRPcHRpb25zPFNvcnRJbnB1dCwgTmFtZT4sXHJcbiAgICApOiBEYXRhVGFibGVTb3J0Q29sbGVjdGlvbjxTb3J0SW5wdXQsIFsuLi5OYW1lcywgTmFtZV0+IHtcclxuICAgICAgICBpZiAodGhpcy4jY29ubmVjdGVkVG9Sb3V0ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgJ0Nhbm5vdCBhZGQgc29ydCBhZnRlciBjb25uZWN0aW5nIHRvIHJvdXRlci4gTWFrZSBzdXJlIHRvIGNhbGwgYWRkU29ydCgpIGJlZm9yZSBjb25uZWN0VG9Sb3V0ZSgpJyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy4jc29ydHMucHVzaChuZXcgRGF0YVRhYmxlU29ydDxTb3J0SW5wdXQ+KGNvbmZpZywgKCkgPT4gdGhpcy5vblNldFZhbHVlKCkpKTtcclxuICAgICAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uPFNvcnRJbnB1dCwgWy4uLk5hbWVzLCBOYW1lXT47XHJcbiAgICB9XHJcblxyXG4gICAgYWRkU29ydHM8TmFtZSBleHRlbmRzIGtleW9mIFNvcnRJbnB1dD4oXHJcbiAgICAgICAgY29uZmlnczogQXJyYXk8RGF0YVRhYmxlU29ydE9wdGlvbnM8U29ydElucHV0LCBOYW1lPj4sXHJcbiAgICApOiBEYXRhVGFibGVTb3J0Q29sbGVjdGlvbjxTb3J0SW5wdXQsIFsuLi5OYW1lcywgTmFtZV0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkU29ydChjb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIERhdGFUYWJsZVNvcnRDb2xsZWN0aW9uPFNvcnRJbnB1dCwgWy4uLk5hbWVzLCBOYW1lXT47XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ3VzdG9tRmllbGRTb3J0cyhjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW10pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjdXN0b21GaWVsZHMpIHtcclxuICAgICAgICAgICAgY29uc3QgdHlwZSA9IGNvbmZpZy50eXBlIGFzIEN1c3RvbUZpZWxkVHlwZTtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZy5saXN0KSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdsb2NhbGVTdHJpbmcnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbnQnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxyXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9jYWxlVGV4dCc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFNvcnQoeyBuYW1lOiBjb25maWcubmFtZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cnVjdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2Fubm90IHNvcnQgcmVsYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydE5ldmVyKHR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmF1bHRTb3J0KG5hbWU6IGtleW9mIFNvcnRJbnB1dCwgc29ydE9yZGVyOiBEYXRhVGFibGVTb3J0T3JkZXIpIHtcclxuICAgICAgICB0aGlzLiNkZWZhdWx0U29ydCA9IHsgbmFtZSwgc29ydE9yZGVyIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KG5hbWU6IE5hbWVzW251bWJlcl0pOiBEYXRhVGFibGVTb3J0PFNvcnRJbnB1dD4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiNzb3J0cy5maW5kKHMgPT4gcy5uYW1lID09PSBuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25uZWN0VG9Sb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLyddLCB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBbdGhpcy4jc29ydFF1ZXJ5UGFyYW1OYW1lXTogdGhpcy5zZXJpYWxpemUoKSB9LFxyXG4gICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogcm91dGUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJRdWVyeVBhcmFtcyA9IChyb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCh0aGlzLiNzb3J0UXVlcnlQYXJhbU5hbWUpID8/ICcnKVxyXG4gICAgICAgICAgICAuc3BsaXQoJzsnKVxyXG4gICAgICAgICAgICAubWFwKHZhbHVlID0+IHZhbHVlLnNwbGl0KCc6JykpXHJcbiAgICAgICAgICAgIC5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+ICh7IG5hbWUsIHZhbHVlIH0pKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgdmFsdWUgfSBvZiBmaWx0ZXJRdWVyeVBhcmFtcykge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ID0gdGhpcy5nZXQobmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChzb3J0KSB7XHJcbiAgICAgICAgICAgICAgICBzb3J0LnNldFNvcnRPcmRlcih2YWx1ZSBhcyBhbnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuI2Nvbm5lY3RlZFRvUm91dGVyID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVTb3J0SW5wdXQoKTogU29ydElucHV0IHtcclxuICAgICAgICBjb25zdCBhY3RpdmVTb3J0cyA9IHRoaXMuI3NvcnRzLmZpbHRlcihzID0+IHMuc29ydE9yZGVyICE9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgIGxldCBzb3J0SW5wdXQgPSB7fSBhcyBTb3J0SW5wdXQ7XHJcbiAgICAgICAgaWYgKGFjdGl2ZVNvcnRzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLiNkZWZhdWx0U29ydCkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBbdGhpcy4jZGVmYXVsdFNvcnQubmFtZV06IHRoaXMuI2RlZmF1bHRTb3J0LnNvcnRPcmRlciB9IGFzIFNvcnRJbnB1dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBzb3J0IG9mIGFjdGl2ZVNvcnRzKSB7XHJcbiAgICAgICAgICAgIHNvcnRJbnB1dCA9IHsgLi4uc29ydElucHV0LCBbc29ydC5uYW1lXTogc29ydC5zb3J0T3JkZXIgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNvcnRJbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRzID0gdGhpcy4jc29ydHMuZmlsdGVyKHMgPT4gcy5zb3J0T3JkZXIgIT09IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgcmV0dXJuIGFjdGl2ZVNvcnRzLm1hcChzID0+IGAke3MubmFtZSBhcyBzdHJpbmd9OiR7cy5zb3J0T3JkZXJ9YCkuam9pbignOycpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25TZXRWYWx1ZSgpIHtcclxuICAgICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMkLm5leHQoXHJcbiAgICAgICAgICAgIHRoaXMuI3NvcnRzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGYgPT4gZi5zb3J0T3JkZXIgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIC5tYXAocyA9PiAoeyBuYW1lOiBzLm5hbWUgYXMgYW55LCBzb3J0T3JkZXI6IHMuc29ydE9yZGVyIH0pKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==