ng-easycommerce-v18 0.0.7 → 0.0.9

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 (110) hide show
  1. package/assets/ec-i18n/es.json +6 -0
  2. package/esm2022/lib/api/connection.service.mjs +4 -4
  3. package/esm2022/lib/classes/component-helper.mjs +14 -0
  4. package/esm2022/lib/classes/filters/filter-factory.mjs +2 -1
  5. package/esm2022/lib/constants/api.constants.service.mjs +4 -4
  6. package/esm2022/lib/constants/core.constants.service.mjs +4 -4
  7. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +4 -4
  8. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +4 -4
  9. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +4 -4
  10. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +4 -4
  11. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +4 -4
  12. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +4 -4
  13. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +4 -4
  14. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +5 -5
  15. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +4 -4
  16. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +27 -22
  17. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +4 -4
  18. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +10 -9
  19. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +4 -4
  20. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +4 -4
  21. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +4 -4
  22. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +13 -12
  23. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +6 -6
  24. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +4 -4
  25. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +4 -4
  26. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +4 -4
  27. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +5 -5
  28. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +4 -4
  29. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +4 -4
  30. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +4 -4
  31. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +4 -4
  32. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +4 -4
  33. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +4 -4
  34. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +4 -4
  35. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +4 -4
  36. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +4 -4
  37. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +4 -4
  38. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +4 -4
  39. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +5 -4
  40. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +8 -5
  41. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +35 -18
  42. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +4 -4
  43. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +4 -4
  44. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +159 -12
  45. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +4 -4
  46. package/esm2022/lib/ec-components/index.mjs +2 -1
  47. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +11 -5
  48. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +5 -5
  49. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +125 -0
  50. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +5 -5
  51. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +5 -5
  52. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +4 -4
  53. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +4 -4
  54. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +4 -4
  55. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -4
  56. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +4 -4
  57. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +4 -4
  58. package/esm2022/lib/ec-directive/product-off.directive.mjs +4 -4
  59. package/esm2022/lib/ec-directive/product-stock.directive.mjs +4 -4
  60. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +4 -4
  61. package/esm2022/lib/ec-services/addressing.service.mjs +4 -4
  62. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +4 -4
  63. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +4 -4
  64. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +4 -4
  65. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  66. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +4 -4
  67. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +4 -4
  68. package/esm2022/lib/ec-services/auth.service.mjs +4 -4
  69. package/esm2022/lib/ec-services/auth.storage.service.mjs +4 -4
  70. package/esm2022/lib/ec-services/blocks-repository.service.mjs +4 -4
  71. package/esm2022/lib/ec-services/blocks.service.mjs +4 -4
  72. package/esm2022/lib/ec-services/cart.service.mjs +4 -4
  73. package/esm2022/lib/ec-services/channel.service.mjs +4 -4
  74. package/esm2022/lib/ec-services/checkout.service.mjs +4 -4
  75. package/esm2022/lib/ec-services/currency.service.mjs +4 -4
  76. package/esm2022/lib/ec-services/filters.service.mjs +17 -29
  77. package/esm2022/lib/ec-services/form.service.mjs +4 -4
  78. package/esm2022/lib/ec-services/local-storage.service.mjs +4 -4
  79. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +4 -4
  80. package/esm2022/lib/ec-services/options.service.mjs +22 -15
  81. package/esm2022/lib/ec-services/order-utility.service.mjs +4 -4
  82. package/esm2022/lib/ec-services/orders.service.mjs +4 -4
  83. package/esm2022/lib/ec-services/pagination.service.mjs +4 -4
  84. package/esm2022/lib/ec-services/parameters.service.mjs +4 -4
  85. package/esm2022/lib/ec-services/payment.service.mjs +4 -4
  86. package/esm2022/lib/ec-services/product-detail.service.mjs +4 -4
  87. package/esm2022/lib/ec-services/products.service.mjs +15 -17
  88. package/esm2022/lib/ec-services/re-captcha.service.mjs +4 -4
  89. package/esm2022/lib/ec-services/shipment.service.mjs +4 -4
  90. package/esm2022/lib/ec-services/stores.service.mjs +4 -4
  91. package/esm2022/lib/ec-services/test.service.mjs +4 -4
  92. package/esm2022/lib/ec-services/toast.service.mjs +4 -4
  93. package/esm2022/lib/interfaces/filter.mjs +1 -1
  94. package/fesm2022/ng-easycommerce-v18.mjs +671 -415
  95. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  96. package/lib/classes/component-helper.d.ts +9 -0
  97. package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +4 -1
  98. package/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.d.ts +1 -0
  99. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +1 -3
  100. package/lib/ec-components/header-ec/header-ec.component.d.ts +22 -6
  101. package/lib/ec-components/index.d.ts +1 -0
  102. package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +3 -1
  103. package/lib/ec-components/related-products-ec/related-products-ec.component.d.ts +34 -0
  104. package/lib/ec-services/filters.service.d.ts +0 -18
  105. package/lib/ec-services/options.service.d.ts +6 -7
  106. package/lib/ec-services/products.service.d.ts +0 -1
  107. package/lib/interfaces/filter.d.ts +2 -1
  108. package/package.json +1 -1
  109. package/esm2022/lib/classes/filters/PriceRangeFilter.mjs +0 -48
  110. package/lib/classes/filters/PriceRangeFilter.d.ts +0 -23
@@ -271,13 +271,13 @@ export class GoogleAnalyticsService {
271
271
  ...data
272
272
  };
273
273
  }
274
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GoogleAnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
275
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GoogleAnalyticsService, providedIn: 'root' });
274
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GoogleAnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
275
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GoogleAnalyticsService, providedIn: 'root' });
276
276
  }
277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GoogleAnalyticsService, decorators: [{
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GoogleAnalyticsService, decorators: [{
278
278
  type: Injectable,
279
279
  args: [{
280
280
  providedIn: 'root'
281
281
  }]
282
282
  }], ctorParameters: () => [] });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2FuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTzlCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDO1FBQ0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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SUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxjQUFjO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1NBQzlCLENBQUE7SUFDRixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVM7UUFDekIsT0FBTztZQUNOLEdBQUcsSUFBSTtTQUNQLENBQUE7SUFDRixDQUFDO3VHQTdRVyxzQkFBc0I7MkdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzsyRkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBGdW5jaW9uIHF1ZSBzZXJhIGRhZGEgcG9yIGVsIHNjcmlwdCBxdWUgc2UgaW5zZXJ0YSBlbiBlbCBpbmljaWFsaXphZG9yIGRlIEdvb2dsZSBBbmFseXRpY3MuXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBndGFnOiBGdW5jdGlvbjtcclxuZGVjbGFyZSB2YXIgZGF0YUxheWVyOiBhbnlbXTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgZ29vZ2xlLlxyXG4gKiBAY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB7XHJcblx0LyoqXHJcblx0ICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcblx0ICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHQvKipcclxuXHQgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuXHQgKi9cclxuXHRwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTsgLy8gU29sbyBzZSBpbnllY3RhIGVuIGVsIG5hdmVnYWRvclxyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cclxuXHQgKiBAcGFyYW0gZ3RtX2lkIGlkIHByb3Zpc3RvIHBvciBHb29nbGUgVGFnIE1hbmFnZXIuXHJcblx0ICovXHJcblx0aW5pdGlhbGl6ZShndG1faWQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlX3RhZ19tYW5hZ2VyJykpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ2hheSBlbGVtZW50bycpXHJcblx0XHRcdGNvbnN0IGRlY2xhcmF0aW9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHRcdFx0ZGVjbGFyYXRpb24uYXN5bmMgPSB0cnVlO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5pZCA9ICdnb29nbGVfdGFnX21hbmFnZXInO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5zcmMgPSBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke2d0bV9pZH1gO1xyXG5cdFx0XHRjb25zdCBpbml0aWFsaXphdGlvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblx0XHRcdGluaXRpYWxpemF0aW9uLnRleHQgPSBgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107IGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30gZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJyR7Z3RtX2lkfScpYDtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5oZWFkLCBpbml0aWFsaXphdGlvbik7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudD8uaGVhZCwgZGVjbGFyYXRpb24pO1xyXG5cdFx0XHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnN0YXJ0TGlzdGVuaW5nUGFnZVZpZXdzKGd0bV9pZCksIDEwMDApO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZ3RtX2lkIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdQYWdlVmlld3MoZ3RtX2lkOiBhbnkpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG5cdFx0XHRmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG5cdFx0KS5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcblx0XHRcdGd0YWcoJ2NvbmZpZycsIGd0bV9pZCwge1xyXG5cdFx0XHRcdCdwYWdlX3BhdGgnOiBldmVudC51cmxBZnRlclJlZGlyZWN0c1xyXG5cdFx0XHR9KVxyXG5cdFx0fSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRWplY3V0YSBlbCBldmVudG8gcGFzYWRvIHBvciBwYXJhbWV0cm8uIFxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG5cdCAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjYWxsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YSA9IHt9KSB7XHJcblx0XHRpZiAoIXRoaXMuZW5hYmxlZCkgcmV0dXJuO1xyXG5cdFx0bGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XHJcblx0XHRldmVudCAmJiBndGFnKCdldmVudCcsIHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpLCB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRyYWR1Y2UgZWwgZXZlbnRvIHJlY2liaWRvIHkgZGV2dWVsdmUgZWwgbm9tYnJlIGRlIGxhIGZ1bmNpw7NuIHF1ZSBsbyB2YSBhIHRyYXRhci5cclxuXHQgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHR0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiAndmlld19pdGVtJztcclxuXHRcdFx0Y2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcclxuXHRcdFx0Y2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiAnYmVnaW5fY2hlY2tvdXQnO1xyXG5cdFx0XHRjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuICdhZGRfc2hpcHBpbmdfaW5mbyc7XHJcblx0XHRcdGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xyXG5cdFx0XHRjYXNlICdwdXJjaGFzZSc6IHJldHVybiAncHVyY2hhc2UnO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiAnYWRkX3RvX2NhcnQnO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcclxuXHRcdFx0Y2FzZSAnc2lnbl91cCc6IHJldHVybiAnc2lnbl91cCc7XHJcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG5cdFx0XHQvL2RlZmF1bHQ6IHJldHVybiBldmVudF9uYW1lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXHJcblx0ICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZXZhbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGE6IGFueSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW0oZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbUxpc3QoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcclxuXHRcdFx0Y2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiB0aGlzLnRvU2hpcHBpbmdJbmZvKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuIHRoaXMudG9QYXltZW50SW5mbyhkYXRhKTtcclxuXHRcdFx0Y2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuIHRoaXMudG9SZW1vdmVUb0NhcnQoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcclxuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIGRhdGE7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuXHRcdFx0c2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG5cdFx0XHR0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcblx0XHRcdHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcclxuXHRcdGxldCBzdHJEaXNjb3VudCA9ICcnXHJcblx0XHRzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG5cdFx0cmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG5cdFx0bGV0IGxhc3RQcm9kdWN0ID0gZGF0YS5pdGVtcz8ubGVuZ3RoICYmIGRhdGEuaXRlbXNbZGF0YS5pdGVtcy5sZW5ndGggLSAxXVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXHJcblx0XHRcdHZhbHVlOiBsYXN0UHJvZHVjdC50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2U7IH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdG9WaWV3SXRlbShwcm9kdWN0OiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG5cdFx0XHRpdGVtczogW3RoaXMudG9JdGVtKHByb2R1Y3QpXSxcclxuXHRcdFx0dmFsdWU6IHByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBlbCBsaXN0YWRvIGRlIHByb2R1Y3Rvcy5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvVmlld0l0ZW1MaXN0KGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0aXRlbXM6IGRhdGEucHJvZHVjdHMubWFwKChwcm9kdWN0OiBhbnkpID0+IHRoaXMudG9JdGVtKHByb2R1Y3QpKSxcclxuXHRcdFx0aXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxyXG5cdFx0XHRpdGVtX2xpc3RfaWQ6IGRhdGEuaXRlbV9saXN0X2lkIHx8ICdjb2xsZWN0aW9uJ1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1JlbW92ZVRvQ2FydChwcm9kdWN0OiBhbnkpIHtcclxuXHRcdGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0oeyBxdWFudGl0eTogcHJvZHVjdC5xdWFudGl0eSwgLi4ucHJvZHVjdFBhcmFtIH0pXSxcclxuXHRcdFx0dmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuXHRcdGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG5cdFx0aXRlbV9pZDogcHJvZHVjdC5pZCxcclxuXHRcdGl0ZW1fYnJhbmQ6IHByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gcHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuXHRcdGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRwcmljZTogcHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG5cdFx0cXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHR9KVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG5cdFx0XHRpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxyXG5cdFx0XHRcdG5hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG5cdFx0XHRcdGNhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXHJcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHlcclxuXHRcdFx0fSkpLFxyXG5cdFx0XHRwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1NoaXBwaW5nSW5mbyhkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0c2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB0b1NpZ25VcChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdC4uLmRhdGFcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2FuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTzlCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDO1FBQ0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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SUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxjQUFjO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1NBQzlCLENBQUE7SUFDRixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVM7UUFDekIsT0FBTztZQUNOLEdBQUcsSUFBSTtTQUNQLENBQUE7SUFDRixDQUFDO3dHQTdRVyxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzs0RkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBGdW5jaW9uIHF1ZSBzZXJhIGRhZGEgcG9yIGVsIHNjcmlwdCBxdWUgc2UgaW5zZXJ0YSBlbiBlbCBpbmljaWFsaXphZG9yIGRlIEdvb2dsZSBBbmFseXRpY3MuXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBndGFnOiBGdW5jdGlvbjtcclxuZGVjbGFyZSB2YXIgZGF0YUxheWVyOiBhbnlbXTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgZ29vZ2xlLlxyXG4gKiBAY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB7XHJcblx0LyoqXHJcblx0ICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcblx0ICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHQvKipcclxuXHQgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuXHQgKi9cclxuXHRwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTsgLy8gU29sbyBzZSBpbnllY3RhIGVuIGVsIG5hdmVnYWRvclxyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cclxuXHQgKiBAcGFyYW0gZ3RtX2lkIGlkIHByb3Zpc3RvIHBvciBHb29nbGUgVGFnIE1hbmFnZXIuXHJcblx0ICovXHJcblx0aW5pdGlhbGl6ZShndG1faWQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlX3RhZ19tYW5hZ2VyJykpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ2hheSBlbGVtZW50bycpXHJcblx0XHRcdGNvbnN0IGRlY2xhcmF0aW9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHRcdFx0ZGVjbGFyYXRpb24uYXN5bmMgPSB0cnVlO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5pZCA9ICdnb29nbGVfdGFnX21hbmFnZXInO1xyXG5cdFx0XHRkZWNsYXJhdGlvbi5zcmMgPSBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke2d0bV9pZH1gO1xyXG5cdFx0XHRjb25zdCBpbml0aWFsaXphdGlvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblx0XHRcdGluaXRpYWxpemF0aW9uLnRleHQgPSBgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107IGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30gZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJyR7Z3RtX2lkfScpYDtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5oZWFkLCBpbml0aWFsaXphdGlvbik7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudD8uaGVhZCwgZGVjbGFyYXRpb24pO1xyXG5cdFx0XHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnN0YXJ0TGlzdGVuaW5nUGFnZVZpZXdzKGd0bV9pZCksIDEwMDApO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZ3RtX2lkIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdQYWdlVmlld3MoZ3RtX2lkOiBhbnkpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG5cdFx0XHRmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG5cdFx0KS5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcblx0XHRcdGd0YWcoJ2NvbmZpZycsIGd0bV9pZCwge1xyXG5cdFx0XHRcdCdwYWdlX3BhdGgnOiBldmVudC51cmxBZnRlclJlZGlyZWN0c1xyXG5cdFx0XHR9KVxyXG5cdFx0fSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRWplY3V0YSBlbCBldmVudG8gcGFzYWRvIHBvciBwYXJhbWV0cm8uIFxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG5cdCAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjYWxsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YSA9IHt9KSB7XHJcblx0XHRpZiAoIXRoaXMuZW5hYmxlZCkgcmV0dXJuO1xyXG5cdFx0bGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XHJcblx0XHRldmVudCAmJiBndGFnKCdldmVudCcsIHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpLCB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRyYWR1Y2UgZWwgZXZlbnRvIHJlY2liaWRvIHkgZGV2dWVsdmUgZWwgbm9tYnJlIGRlIGxhIGZ1bmNpw7NuIHF1ZSBsbyB2YSBhIHRyYXRhci5cclxuXHQgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHR0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiAndmlld19pdGVtJztcclxuXHRcdFx0Y2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcclxuXHRcdFx0Y2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiAnYmVnaW5fY2hlY2tvdXQnO1xyXG5cdFx0XHRjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuICdhZGRfc2hpcHBpbmdfaW5mbyc7XHJcblx0XHRcdGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xyXG5cdFx0XHRjYXNlICdwdXJjaGFzZSc6IHJldHVybiAncHVyY2hhc2UnO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiAnYWRkX3RvX2NhcnQnO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcclxuXHRcdFx0Y2FzZSAnc2lnbl91cCc6IHJldHVybiAnc2lnbl91cCc7XHJcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG5cdFx0XHQvL2RlZmF1bHQ6IHJldHVybiBldmVudF9uYW1lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXHJcblx0ICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZXZhbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGE6IGFueSkge1xyXG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW0oZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbUxpc3QoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcclxuXHRcdFx0Y2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiB0aGlzLnRvU2hpcHBpbmdJbmZvKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuIHRoaXMudG9QYXltZW50SW5mbyhkYXRhKTtcclxuXHRcdFx0Y2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xyXG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xyXG5cdFx0XHRjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuIHRoaXMudG9SZW1vdmVUb0NhcnQoZGF0YSk7XHJcblx0XHRcdGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcclxuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIGRhdGE7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuXHRcdFx0c2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG5cdFx0XHR0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcblx0XHRcdHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKVxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcclxuXHRcdGxldCBzdHJEaXNjb3VudCA9ICcnXHJcblx0XHRzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG5cdFx0cmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG5cdFx0bGV0IGxhc3RQcm9kdWN0ID0gZGF0YS5pdGVtcz8ubGVuZ3RoICYmIGRhdGEuaXRlbXNbZGF0YS5pdGVtcy5sZW5ndGggLSAxXVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXHJcblx0XHRcdHZhbHVlOiBsYXN0UHJvZHVjdC50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2U7IH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgdG9WaWV3SXRlbShwcm9kdWN0OiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG5cdFx0XHRpdGVtczogW3RoaXMudG9JdGVtKHByb2R1Y3QpXSxcclxuXHRcdFx0dmFsdWU6IHByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBlbCBsaXN0YWRvIGRlIHByb2R1Y3Rvcy5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvVmlld0l0ZW1MaXN0KGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0aXRlbXM6IGRhdGEucHJvZHVjdHMubWFwKChwcm9kdWN0OiBhbnkpID0+IHRoaXMudG9JdGVtKHByb2R1Y3QpKSxcclxuXHRcdFx0aXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxyXG5cdFx0XHRpdGVtX2xpc3RfaWQ6IGRhdGEuaXRlbV9saXN0X2lkIHx8ICdjb2xsZWN0aW9uJ1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1JlbW92ZVRvQ2FydChwcm9kdWN0OiBhbnkpIHtcclxuXHRcdGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0oeyBxdWFudGl0eTogcHJvZHVjdC5xdWFudGl0eSwgLi4ucHJvZHVjdFBhcmFtIH0pXSxcclxuXHRcdFx0dmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuXHRcdGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG5cdFx0aXRlbV9pZDogcHJvZHVjdC5pZCxcclxuXHRcdGl0ZW1fYnJhbmQ6IHByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gcHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuXHRcdGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRwcmljZTogcHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG5cdFx0cXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuXHR9KVxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG5cdFx0XHRpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxyXG5cdFx0XHRcdG5hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG5cdFx0XHRcdGNhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXHJcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHlcclxuXHRcdFx0fSkpLFxyXG5cdFx0XHRwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0b1NoaXBwaW5nSW5mbyhkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XHJcblx0XHRcdH0pKSxcclxuXHRcdFx0c2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB0b1NpZ25VcChkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdC4uLmRhdGFcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
@@ -402,13 +402,13 @@ export class GTMService {
402
402
  items: this.toItem(data)
403
403
  };
404
404
  }
405
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GTMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
406
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GTMService, providedIn: 'root' });
405
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GTMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
406
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GTMService, providedIn: 'root' });
407
407
  }
408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GTMService, decorators: [{
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GTMService, decorators: [{
409
409
  type: Injectable,
410
410
  args: [{
411
411
  providedIn: 'root'
412
412
  }]
413
413
  }], ctorParameters: () => [] });
414
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssTUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4Qzs7T0FFRztJQUNLLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0MsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3QztRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFD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O0lBQ0Q7Ozs7T0FJRztJQUNLLFlBQVksQ0FBQyxJQUFTO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFBO0lBQ0wsQ0FBQzt1R0F0WlEsVUFBVTsyR0FBVixVQUFVLGNBRlAsTUFBTTs7MkZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlclJlbmRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXksIEdvb2dsZVRhZ01hbmFnZXJDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIEdUTS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR1RNU2VydmljZSB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzaSBzZSBlc3RhIGNhcmdhbmRvIGVsIHNlcnZpY2lvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBjdWFuZG8gZWwgc2VydmljaW8gZXN0YSBoYWJpbGl0YWRvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuICAgIC8qKlxyXG4gICAgICogQWxtYWNlbmEgZWwgb2JqZWN0byB3aW5kb3cgZGVsIG5hdmVnYWRvci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB3aW5kb3c/OiBXaW5kb3c7XHJcblxyXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICAvKipcclxuICAgICAqIENvbmZpZ3VyYWNpw7NuIGRlIEdvb2dsZSBUYWcgTWFuYWdlci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb25maWc6IEdvb2dsZVRhZ01hbmFnZXJDb25maWcgPSB7IGlkOiBudWxsIH1cclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93ID0gd2luZG93XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBlbCBkYXRhTGF5ZXIgZGVsIG9iamVjdG8gd2luZG93XHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldERhdGFMYXllcigpOiBhbnlbXSB7XHJcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy53aW5kb3c7XHJcbiAgICAgICAgLyogaWYod2luZG93KVxyXG4gICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdO1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuZGF0YUxheWVyOyAqL1xyXG4gICAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZ3JlZ2EgZGF0b3MgYWwgZGF0YUxheWVyLlxyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwdXNoT25EYXRhTGF5ZXIob2JqOiBvYmplY3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhTGF5ZXIgPSB0aGlzLmdldERhdGFMYXllcigpO1xyXG4gICAgICAgIGRhdGFMYXllci5wdXNoKG9iaik7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFncmVnYSBlbCBzY3JpcHQgZGUgR1RNIHBhcmEgcXVlIGVtcGllY2UgYSBjYXB0dXJhciBldmVudG9zLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRHdG1Ub0RvbSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoXHJcbiAgICAgICAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGRvYyA9IHRoaXMuYnJvd3Nlckdsb2JhbHMuZG9jdW1lbnRSZWYoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKHsgJ2d0bS5zdGFydCc6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLCBldmVudDogJ2d0bS5qcycgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3RtU2NyaXB0ID0gdGhpcy5kb2N1bWVudD8uY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgLy9kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICAgICAgICBpZihndG1TY3JpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5pZCA9ICdHVE1zY3JpcHQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3RtU2NyaXB0LnNyYyA9IHRoaXMuYXBwbHlHdG1RdWVyeVBhcmFtcyh0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdID8gdGhpcy5jb25maWdbXCJndG1fcmVzb3VyY2VfcGF0aFwiXSA6ICdodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanMnKTtcclxuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudD8uaGVhZC5pbnNlcnRCZWZvcmUoZ3RtU2NyaXB0LCB0aGlzLmRvY3VtZW50LmhlYWQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwbHlHdG1RdWVyeVBhcmFtcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHVybCArPSAnPyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAodXJsICsgT2JqZWN0LmtleXModGhpcy5jb25maWcpLmZpbHRlcigoaykgPT4gdGhpcy5jb25maWdba10pLm1hcCgoaykgPT4gYCR7a309JHt0aGlzLmNvbmZpZ1trXVxyXG4gICAgICAgICAgICB9YCkuam9pbignJicpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpb25lcyBkZSBHb29nbGUgVGFnIE1hbmFnZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRpYWxpemUoY29uZmlnOiBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgdGhpcy5jb25maWc7XHJcbiAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGd0bVRhZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdwYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWU6IGl0ZW0udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hUYWcoZ3RtVGFnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHVzaFRhZyhpdGVtOiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkR3RtVG9Eb20oKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hPbkRhdGFMYXllcihpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4gcmVqZWN0KCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoT25EYXRhTGF5ZXIoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgZXZlbnRvIHBhc2FkbyBwb3IgcGFyYW1ldHJvLiBcclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHJldHVybjtcclxuICAgICAgICBsZXQgZXZlbnQgPSB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKTtcclxuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyBlY29tbWVyY2U6IG51bGwgfSlcclxuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyAnZXZlbnQnOiB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKSwgZWNvbW1lcmNlOiB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSB9KVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFkdWNlIGVsIGV2ZW50byByZWNpYmlkbyB5IGRldnVlbHZlIGVsIG5vbWJyZSBkZSBsYSBmdW5jacOzbiBxdWUgbG8gdmEgYSB0cmF0YXIuXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICB0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gJ3ZpZXdfaXRlbSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuICd2aWV3X2l0ZW1fbGlzdCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ2JlZ2luX2NoZWNrb3V0JztcclxuICAgICAgICAgICAgY2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiAnYWRkX3NoaXBwaW5nX2luZm8nO1xyXG4gICAgICAgICAgICBjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuICdhZGRfcGF5bWVudF9pbmZvJztcclxuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ3B1cmNoYXNlJztcclxuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gJ2FkZF90b19jYXJ0JztcclxuICAgICAgICAgICAgY2FzZSAncmVtb3ZlX2Zyb21fY2FydCc6IHJldHVybiAncmVtb3ZlX2Zyb21fY2FydCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gJ3NpZ25fdXAnO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfcHJvbW90aW9uJzogcmV0dXJuICdzZWxlY3RfcHJvbW90aW9uJztcclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2l0ZW0nOiByZXR1cm4gJ3NlbGVjdF9pdGVtJztcclxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG9cclxuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBzd2l0Y2ggKGV2ZW50X25hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbShkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiB0aGlzLnRvQ2hlY2tvdXRJbml0KGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuIHRoaXMudG9TaGlwcGluZ0luZm8oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdwdXJjaGFzZSc6IHJldHVybiB0aGlzLnRvUHVyY2hhc2UoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuIHRoaXMudG9BZGRUb0NhcnQoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnc2lnbl91cCc6IHJldHVybiB0aGlzLnRvU2lnblVwKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfcHJvbW90aW9uJzogcmV0dXJuIHRoaXMudG9TZWxlY3RQcm9tb3Rpb24oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuIHRoaXMudG9TZWxlY3RJdGVtKGRhdGEpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuICAgICAgICAgICAgc2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG4gICAgICAgICAgICB0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuICAgICAgICAgICAgY291bnRJdGVtczogZGF0YS5pdGVtcz8ubGVuZ3RoIHx8IDAsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaXRlbV9pZDogaXRlbS5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxyXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0ucHJvZHVjdC5kaXNjb3VudCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2NhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW5pY2lhbGl6YSBlbiBjaGVja291dC5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DaGVja291dEluaXQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjb24gbG9zIGRlc2N1ZW50b3MgZW4gZWwgY2Fycml0by5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DYXJ0RGlzY291bnQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgbGV0IHN0ckRpc2NvdW50ID0gJydcclxuICAgICAgICBzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG4gICAgICAgIHJldHVybiBzdHJEaXNjb3VudCA9PSAnJyA/ICdub3QtZGlzY291bnQnIDogc3RyRGlzY291bnRcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBhZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0by4gXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG4gICAgICAgIGxldCBsYXN0UHJvZHVjdCA9IGRhdGEuaXRlbXM/Lmxlbmd0aCAmJiBkYXRhLml0ZW1zW2RhdGEuaXRlbXMubGVuZ3RoIC0gMV1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IGxhc3RQcm9kdWN0LnF1YW50aXR5LCAuLi5sYXN0UHJvZHVjdC5wcm9kdWN0IH0pXSxcclxuICAgICAgICAgICAgdmFsdWU6IGxhc3RQcm9kdWN0LnRvdGFsIHx8IDAsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG4gICAgICAgICAgICB2YWx1ZTogcHJvZHVjdC5wcmljZSxcclxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbShwcm9kdWN0KV1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtTGlzdChkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxyXG4gICAgICAgICAgICBpdGVtX2xpc3RfbmFtZTogZGF0YS5pdGVtX2xpc3RfbmFtZSB8fCAnQ29sbGVjdGlvbicsXHJcbiAgICAgICAgICAgIGl0ZW1fbGlzdF9pZDogZGF0YS5pdGVtX2xpc3RfaWQgfHwgMFxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xyXG4gICAgICAgIGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHksIC4uLnByb2R1Y3RQYXJhbSB9KV0sXHJcbiAgICAgICAgICAgIHZhbHVlOiAocHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5wcmljZSkgKiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuICAgICAgICBpdGVtX2lkOiBwcm9kdWN0LmlkLFxyXG4gICAgICAgIGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG4gICAgICAgIC8vY291cG9uOicnLFxyXG4gICAgICAgIGRpc2NvdW50OiBwcm9kdWN0LmRpc2NvdW50IHx8IDAsXHJcbiAgICAgICAgLy9pbmRleDonJyxcclxuICAgICAgICBpdGVtX2JyYW5kOiBwcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IHByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXHJcbiAgICAgICAgaXRlbV9jYXRlZ29yeTogcHJvZHVjdC5jYXRlZ29yeSxcclxuICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXHJcbiAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgaXRlbV92YXJpYW50OiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlIHx8ICcnLFxyXG4gICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgIHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuICAgIH0pXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUGF5bWVudEluZm8oZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgc2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZGF0YVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiB1bmEgcHJvbW9jacOzbi5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9TZWxlY3RQcm9tb3Rpb24oZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvbW90aW9uX2lkOiBkYXRhLmlkIHx8ICcnLFxyXG4gICAgICAgICAgICBwcm9tb3Rpb25fbmFtZTogZGF0YS5jb2RlIHx8IGRhdGEubmFtZSxcclxuICAgICAgICAgICAgcHJvbW90aW9uX3RpdGxlOiBkYXRhLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBsb2NhdGlvbl9pZDogZGF0YS5wcmlvcml0eSB8fCAwXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc2FwcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYWwgc2VsZWNjaW9uYXIgdW4gaXRlbS5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9TZWxlY3RJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvSXRlbShkYXRhKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssTUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4Qzs7T0FFRztJQUNLLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0MsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3QztRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFDRDs7O09BR0c7SUFDSSxZQUFZO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQjs7bUNBRTJCO1FBQzNCLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUNEOzs7T0FHRztJQUNLLGVBQWUsQ0FBQyxHQUFXO1FBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLE9BQU8sQ0FDZCxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBRTdFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUMsOEJBQThCO1lBQ3ZGLElBQUcsU0FBUyxFQUFDLENBQUM7Z0JBQ1YsU0FBUyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7Z0JBQzNCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixTQUFTLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUMsQ0FBQztnQkFDMUosU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ3BDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO2dCQUNILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNyQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBVztRQUNuQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQixHQUFHLElBQUksR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDakcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxNQUE4QjtRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxJQUFJLFlBQVksYUFBYSxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sTUFBTSxHQUFHO3dCQUNYLEtBQUssRUFBRSxNQUFNO3dCQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRztxQkFDckIsQ0FBQztvQkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBWTtRQUN2QixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQixPQUFPLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxPQUFPLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsVUFBNEIsRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzNCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3hILENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsVUFBNEI7UUFDM0MsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNqQixLQUFLLFdBQVcsQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ3JDLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLGdCQUFnQixDQUFDO1lBQy9DLEtBQUssZUFBZSxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQztZQUM5QyxLQUFLLGVBQWUsQ0FBQyxDQUFDLE9BQU8sbUJBQW1CLENBQUM7WUFDakQsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sa0JBQWtCLENBQUM7WUFDbkQsS0FBSyxVQUFVLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQztZQUNuQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLE9BQU8sYUFBYSxDQUFDO1lBQ3pDLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxPQUFPLGtCQUFrQixDQUFDO1lBQ25ELEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUM7WUFDakMsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sa0JBQWtCLENBQUM7WUFDbkQsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLGFBQWEsQ0FBQztZQUN6QyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLFVBQTRCLEVBQUUsSUFBUztRQUM3QyxRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssV0FBVyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsS0FBSyxlQUFlLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsS0FBSyxlQUFlLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxLQUFLLFVBQVUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxLQUFLLGFBQWEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxLQUFLLGtCQUFrQixDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3RCxLQUFLLGFBQWEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxVQUFVLENBQUMsSUFBUztRQUN4QixPQUFPO1lBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzlCLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN4QixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUM1QixZQUFZO2dCQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDO2dCQUNwQyxXQUFXO2dCQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEYsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNsRCxrQkFBa0I7Z0JBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSztnQkFDN0UsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQzthQUMvQixDQUFDLENBQUM7U0FDTixDQUFBO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsSUFBUztRQUM1QixPQUFPO1lBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUs7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN4QixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUM1QixZQUFZO2dCQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDO2dCQUNwQyxXQUFXO2dCQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEYsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDcEMsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDbEQsa0JBQWtCO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUs7Z0JBQzdFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUM7U0FDakMsQ0FBQTtJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssY0FBYyxDQUFDLElBQVM7UUFDNUIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN0RixPQUFPLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFBO0lBQzNELENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssV0FBVyxDQUFDLElBQVM7UUFDekIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN6RSxPQUFPO1lBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSztZQUNoQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNoRixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDO1NBQ2hDLENBQUE7SUFDTCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUNsQzs7OztPQUlHO0lBQ0ssVUFBVSxDQUFDLE9BQVk7UUFDM0IsT0FBTztZQUNILFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUVoQyxDQUFBO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsSUFBUztRQUM1QixPQUFPO1lBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLFlBQVk7WUFDbkQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQztTQUN2QyxDQUFBO0lBR0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsT0FBWTtRQUMvQixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQ2xDLE9BQU87WUFDSCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ25DLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDckUsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUM7U0FDMUcsQ0FBQTtJQUNMLENBQUM7SUFFTyxNQUFNLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ25CLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSTtRQUN2QixZQUFZO1FBQ1osUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQztRQUMvQixXQUFXO1FBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN4RSxhQUFhLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDL0IsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixZQUFZLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRTtRQUM3QyxrQkFBa0I7UUFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSztRQUNuRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDO0tBQ2xDLENBQUMsQ0FBQTtJQUNGOzs7O09BSUc7SUFDSyxhQUFhLENBQUMsSUFBUztRQUMzQixPQUFPO1lBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUs7WUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxjQUFjO1lBQzlELEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1lBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDNUIsWUFBWTtnQkFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQztnQkFDcEMsV0FBVztnQkFDWCxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xGLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ3BDLG1CQUFtQjtnQkFDbkIscUJBQXFCO2dCQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ2xELGtCQUFrQjtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO2dCQUM3RSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDO2FBQy9CLENBQUMsQ0FBQztTQUNOLENBQUE7SUFDTCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLGNBQWMsQ0FBQyxJQUFTO1FBQzVCLE9BQU87WUFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSztZQUNoQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLGNBQWM7WUFDaEUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUM7WUFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN4QixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUM1QixZQUFZO2dCQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDO2dCQUNwQyxXQUFXO2dCQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEYsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDcEMsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDbEQsa0JBQWtCO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUs7Z0JBQzdFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ04sQ0FBQTtJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBUztRQUN0QixPQUFPO1lBQ0gsR0FBRyxJQUFJO1NBQ1YsQ0FBQTtJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssaUJBQWlCLENBQUMsSUFBUztRQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE9BQU87WUFDSCxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQzNCLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJO1lBQ3RDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDO1NBQ2xDLENBQUE7SUFDTCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLFlBQVksQ0FBQyxJQUFTO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFBO0lBQ0wsQ0FBQzt3R0F0WlEsVUFBVTs0R0FBVixVQUFVLGNBRlAsTUFBTTs7NEZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlclJlbmRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXksIEdvb2dsZVRhZ01hbmFnZXJDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIEdUTS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR1RNU2VydmljZSB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzaSBzZSBlc3RhIGNhcmdhbmRvIGVsIHNlcnZpY2lvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBjdWFuZG8gZWwgc2VydmljaW8gZXN0YSBoYWJpbGl0YWRvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuICAgIC8qKlxyXG4gICAgICogQWxtYWNlbmEgZWwgb2JqZWN0byB3aW5kb3cgZGVsIG5hdmVnYWRvci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB3aW5kb3c/OiBXaW5kb3c7XHJcblxyXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICAvKipcclxuICAgICAqIENvbmZpZ3VyYWNpw7NuIGRlIEdvb2dsZSBUYWcgTWFuYWdlci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb25maWc6IEdvb2dsZVRhZ01hbmFnZXJDb25maWcgPSB7IGlkOiBudWxsIH1cclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93ID0gd2luZG93XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBlbCBkYXRhTGF5ZXIgZGVsIG9iamVjdG8gd2luZG93XHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldERhdGFMYXllcigpOiBhbnlbXSB7XHJcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy53aW5kb3c7XHJcbiAgICAgICAgLyogaWYod2luZG93KVxyXG4gICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdO1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuZGF0YUxheWVyOyAqL1xyXG4gICAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZ3JlZ2EgZGF0b3MgYWwgZGF0YUxheWVyLlxyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwdXNoT25EYXRhTGF5ZXIob2JqOiBvYmplY3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhTGF5ZXIgPSB0aGlzLmdldERhdGFMYXllcigpO1xyXG4gICAgICAgIGRhdGFMYXllci5wdXNoKG9iaik7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFncmVnYSBlbCBzY3JpcHQgZGUgR1RNIHBhcmEgcXVlIGVtcGllY2UgYSBjYXB0dXJhciBldmVudG9zLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRHdG1Ub0RvbSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoXHJcbiAgICAgICAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGRvYyA9IHRoaXMuYnJvd3Nlckdsb2JhbHMuZG9jdW1lbnRSZWYoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKHsgJ2d0bS5zdGFydCc6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLCBldmVudDogJ2d0bS5qcycgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3RtU2NyaXB0ID0gdGhpcy5kb2N1bWVudD8uY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgLy9kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICAgICAgICBpZihndG1TY3JpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5pZCA9ICdHVE1zY3JpcHQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3RtU2NyaXB0LnNyYyA9IHRoaXMuYXBwbHlHdG1RdWVyeVBhcmFtcyh0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdID8gdGhpcy5jb25maWdbXCJndG1fcmVzb3VyY2VfcGF0aFwiXSA6ICdodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanMnKTtcclxuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudD8uaGVhZC5pbnNlcnRCZWZvcmUoZ3RtU2NyaXB0LCB0aGlzLmRvY3VtZW50LmhlYWQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwbHlHdG1RdWVyeVBhcmFtcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHVybCArPSAnPyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAodXJsICsgT2JqZWN0LmtleXModGhpcy5jb25maWcpLmZpbHRlcigoaykgPT4gdGhpcy5jb25maWdba10pLm1hcCgoaykgPT4gYCR7a309JHt0aGlzLmNvbmZpZ1trXVxyXG4gICAgICAgICAgICB9YCkuam9pbignJicpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpb25lcyBkZSBHb29nbGUgVGFnIE1hbmFnZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRpYWxpemUoY29uZmlnOiBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgdGhpcy5jb25maWc7XHJcbiAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGd0bVRhZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdwYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWU6IGl0ZW0udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hUYWcoZ3RtVGFnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHVzaFRhZyhpdGVtOiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkR3RtVG9Eb20oKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hPbkRhdGFMYXllcihpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4gcmVqZWN0KCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoT25EYXRhTGF5ZXIoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgZXZlbnRvIHBhc2FkbyBwb3IgcGFyYW1ldHJvLiBcclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHJldHVybjtcclxuICAgICAgICBsZXQgZXZlbnQgPSB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKTtcclxuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyBlY29tbWVyY2U6IG51bGwgfSlcclxuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyAnZXZlbnQnOiB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKSwgZWNvbW1lcmNlOiB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSB9KVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFkdWNlIGVsIGV2ZW50byByZWNpYmlkbyB5IGRldnVlbHZlIGVsIG5vbWJyZSBkZSBsYSBmdW5jacOzbiBxdWUgbG8gdmEgYSB0cmF0YXIuXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICB0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gJ3ZpZXdfaXRlbSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuICd2aWV3X2l0ZW1fbGlzdCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ2JlZ2luX2NoZWNrb3V0JztcclxuICAgICAgICAgICAgY2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiAnYWRkX3NoaXBwaW5nX2luZm8nO1xyXG4gICAgICAgICAgICBjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuICdhZGRfcGF5bWVudF9pbmZvJztcclxuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ3B1cmNoYXNlJztcclxuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gJ2FkZF90b19jYXJ0JztcclxuICAgICAgICAgICAgY2FzZSAncmVtb3ZlX2Zyb21fY2FydCc6IHJldHVybiAncmVtb3ZlX2Zyb21fY2FydCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gJ3NpZ25fdXAnO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfcHJvbW90aW9uJzogcmV0dXJuICdzZWxlY3RfcHJvbW90aW9uJztcclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2l0ZW0nOiByZXR1cm4gJ3NlbGVjdF9pdGVtJztcclxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG9cclxuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBzd2l0Y2ggKGV2ZW50X25hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbShkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiB0aGlzLnRvQ2hlY2tvdXRJbml0KGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuIHRoaXMudG9TaGlwcGluZ0luZm8oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdwdXJjaGFzZSc6IHJldHVybiB0aGlzLnRvUHVyY2hhc2UoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuIHRoaXMudG9BZGRUb0NhcnQoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnc2lnbl91cCc6IHJldHVybiB0aGlzLnRvU2lnblVwKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfcHJvbW90aW9uJzogcmV0dXJuIHRoaXMudG9TZWxlY3RQcm9tb3Rpb24oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuIHRoaXMudG9TZWxlY3RJdGVtKGRhdGEpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuICAgICAgICAgICAgc2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG4gICAgICAgICAgICB0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuICAgICAgICAgICAgY291bnRJdGVtczogZGF0YS5pdGVtcz8ubGVuZ3RoIHx8IDAsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaXRlbV9pZDogaXRlbS5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxyXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0ucHJvZHVjdC5kaXNjb3VudCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2NhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW5pY2lhbGl6YSBlbiBjaGVja291dC5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DaGVja291dEluaXQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjb24gbG9zIGRlc2N1ZW50b3MgZW4gZWwgY2Fycml0by5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DYXJ0RGlzY291bnQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgbGV0IHN0ckRpc2NvdW50ID0gJydcclxuICAgICAgICBzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG4gICAgICAgIHJldHVybiBzdHJEaXNjb3VudCA9PSAnJyA/ICdub3QtZGlzY291bnQnIDogc3RyRGlzY291bnRcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBhZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0by4gXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG4gICAgICAgIGxldCBsYXN0UHJvZHVjdCA9IGRhdGEuaXRlbXM/Lmxlbmd0aCAmJiBkYXRhLml0ZW1zW2RhdGEuaXRlbXMubGVuZ3RoIC0gMV1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IGxhc3RQcm9kdWN0LnF1YW50aXR5LCAuLi5sYXN0UHJvZHVjdC5wcm9kdWN0IH0pXSxcclxuICAgICAgICAgICAgdmFsdWU6IGxhc3RQcm9kdWN0LnRvdGFsIHx8IDAsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG4gICAgICAgICAgICB2YWx1ZTogcHJvZHVjdC5wcmljZSxcclxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbShwcm9kdWN0KV1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtTGlzdChkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxyXG4gICAgICAgICAgICBpdGVtX2xpc3RfbmFtZTogZGF0YS5pdGVtX2xpc3RfbmFtZSB8fCAnQ29sbGVjdGlvbicsXHJcbiAgICAgICAgICAgIGl0ZW1fbGlzdF9pZDogZGF0YS5pdGVtX2xpc3RfaWQgfHwgMFxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xyXG4gICAgICAgIGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHksIC4uLnByb2R1Y3RQYXJhbSB9KV0sXHJcbiAgICAgICAgICAgIHZhbHVlOiAocHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5wcmljZSkgKiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuICAgICAgICBpdGVtX2lkOiBwcm9kdWN0LmlkLFxyXG4gICAgICAgIGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG4gICAgICAgIC8vY291cG9uOicnLFxyXG4gICAgICAgIGRpc2NvdW50OiBwcm9kdWN0LmRpc2NvdW50IHx8IDAsXHJcbiAgICAgICAgLy9pbmRleDonJyxcclxuICAgICAgICBpdGVtX2JyYW5kOiBwcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IHByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXHJcbiAgICAgICAgaXRlbV9jYXRlZ29yeTogcHJvZHVjdC5jYXRlZ29yeSxcclxuICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXHJcbiAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgaXRlbV92YXJpYW50OiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlIHx8ICcnLFxyXG4gICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgIHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuICAgIH0pXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUGF5bWVudEluZm8oZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgc2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZGF0YVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiB1bmEgcHJvbW9jacOzbi5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9TZWxlY3RQcm9tb3Rpb24oZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvbW90aW9uX2lkOiBkYXRhLmlkIHx8ICcnLFxyXG4gICAgICAgICAgICBwcm9tb3Rpb25fbmFtZTogZGF0YS5jb2RlIHx8IGRhdGEubmFtZSxcclxuICAgICAgICAgICAgcHJvbW90aW9uX3RpdGxlOiBkYXRhLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBsb2NhdGlvbl9pZDogZGF0YS5wcmlvcml0eSB8fCAwXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc2FwcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYWwgc2VsZWNjaW9uYXIgdW4gaXRlbS5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9TZWxlY3RJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvSXRlbShkYXRhKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -43,13 +43,13 @@ export class MetricoolPixelService {
43
43
  `;
44
44
  this.renderer.appendChild(this.document?.body, new_analityc_script);
45
45
  };
46
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MetricoolPixelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
47
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MetricoolPixelService, providedIn: 'root' });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
47
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, providedIn: 'root' });
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MetricoolPixelService, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, decorators: [{
50
50
  type: Injectable,
51
51
  args: [{
52
52
  providedIn: 'root'
53
53
  }]
54
54
  }], ctorParameters: () => [] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljb29sLXBpeGVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL21ldHJpY29vbC1waXhlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBQzdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsZUFBZSxHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxRQUFRLEdBQW9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUU1QjtRQUNJLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUM3QixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLG1CQUFtQixDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM3QyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUc7Ozs7Ozs7O21DQVFBLFVBQVU7O1NBRXBDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQTt1R0F4Q1EscUJBQXFCOzJHQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vKipcclxuICogU2VydmljaW8gZW5jYXJnYWRvIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIE1ldHJpY29vbCBQaXhlbFxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXRyaWNvb2xQaXhlbFNlcnZpY2Uge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2kgc2UgZXN0YSBjYXJnYW5kbyBlbCBTZXJ2aWNpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpXHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBpbmplY3QoRE9DVU1FTlQpXHJcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuICAgIC8qKlxyXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cclxuICAgICAqIEBwYXJhbSBwaXhlbF9oYXNoIGhhc2ggcHJvdmlzdG8gcG9yIE1ldHJpY29vbCBQaXhlbC5cclxuICAgICAqL1xyXG4gICAgaW5pdGlhbGl6ZSA9IChwaXhlbF9oYXNoOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgbmV3X2FuYWxpdHljX3NjcmlwdCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XHJcbiAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYFxyXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRTY3JpcHQoYSkge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSwgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XHJcbiAgICAgICAgICAgIGMudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIsXHJcbiAgICAgICAgICAgICAgICBjLnNyYyA9IFwiaHR0cHM6Ly90cmFja2VyLm1ldHJpY29vbC5jb20vcmVzb3VyY2VzL2JlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGEsXHJcbiAgICAgICAgICAgICAgICBjLm9ubG9hZCA9IGEsIGIuYXBwZW5kQ2hpbGQoYylcclxuICAgICAgICB9IGxvYWRTY3JpcHQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBiZVRyYWNrZXIudCh7IGhhc2g6IFwiJHtwaXhlbF9oYXNofVwiIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYDtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQ/LmJvZHksIG5ld19hbmFsaXR5Y19zY3JpcHQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljb29sLXBpeGVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL21ldHJpY29vbC1waXhlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBQzdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsZUFBZSxHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxRQUFRLEdBQW9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUU1QjtRQUNJLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUM3QixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLG1CQUFtQixDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM3QyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUc7Ozs7Ozs7O21DQVFBLFVBQVU7O1NBRXBDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQTt3R0F4Q1EscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7NEZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vKipcclxuICogU2VydmljaW8gZW5jYXJnYWRvIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIE1ldHJpY29vbCBQaXhlbFxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXRyaWNvb2xQaXhlbFNlcnZpY2Uge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2kgc2UgZXN0YSBjYXJnYW5kbyBlbCBTZXJ2aWNpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpXHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBpbmplY3QoRE9DVU1FTlQpXHJcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuICAgIC8qKlxyXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cclxuICAgICAqIEBwYXJhbSBwaXhlbF9oYXNoIGhhc2ggcHJvdmlzdG8gcG9yIE1ldHJpY29vbCBQaXhlbC5cclxuICAgICAqL1xyXG4gICAgaW5pdGlhbGl6ZSA9IChwaXhlbF9oYXNoOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgbmV3X2FuYWxpdHljX3NjcmlwdCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XHJcbiAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYFxyXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRTY3JpcHQoYSkge1xyXG4gICAgICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSwgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XHJcbiAgICAgICAgICAgIGMudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIsXHJcbiAgICAgICAgICAgICAgICBjLnNyYyA9IFwiaHR0cHM6Ly90cmFja2VyLm1ldHJpY29vbC5jb20vcmVzb3VyY2VzL2JlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGEsXHJcbiAgICAgICAgICAgICAgICBjLm9ubG9hZCA9IGEsIGIuYXBwZW5kQ2hpbGQoYylcclxuICAgICAgICB9IGxvYWRTY3JpcHQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBiZVRyYWNrZXIudCh7IGhhc2g6IFwiJHtwaXhlbF9oYXNofVwiIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYDtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQ/LmJvZHksIG5ld19hbmFsaXR5Y19zY3JpcHQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -439,13 +439,13 @@ export class AuthService {
439
439
  }
440
440
  return of(this._user);
441
441
  }
442
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
443
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthService, providedIn: 'root' });
442
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
443
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, providedIn: 'root' });
444
444
  }
445
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthService, decorators: [{
445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, decorators: [{
446
446
  type: Injectable,
447
447
  args: [{
448
448
  providedIn: 'root'
449
449
  }]
450
450
  }], ctorParameters: () => [] });
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBQ3BEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFDZixhQUFhLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2hFLFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsVUFBVSxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNoRSxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIs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QVcsY0FGWCxNQUFNOzsyRkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVc2VyUm9sZVR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vYXV0aC5zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG4vKipcclxuICogU2VydmljaW8gZGUgYXV0ZW50aWZpY2FjacOzbiBkZWwgdXN1YXJpbyBlbiBsYSBwbGF0YWZvcm1hLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKVxyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hdXRoU3RvcmFnZTogQXV0aFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KEF1dGhTdG9yYWdlU2VydmljZSk7XHJcblxyXG5cdC8vIENvbnRhbnRlcyBwYXJhIGVsIHN0b3JhZ2UuXHJcblx0cHJpdmF0ZSByZWFkb25seSBKV1RfVE9LRU4gPSAnSldUX1RPS0VOJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgUkVGUkVTSF9UT0tFTiA9ICdSRUZSRVNIX1RPS0VOJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgRVhQSVJBVEVTX0lOID0gJ0VYUElSQVRFU19JTidcclxuXHRwcml2YXRlIHJlYWRvbmx5IFVTRVIgPSAnVVNFUidcclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BSUwgPSAnbWFpbCdcclxuXHRwcml2YXRlIHJlYWRvbmx5IExPQ0FMRSA9ICdMT0NBTEUnXHJcblx0cHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnXHJcblx0cHJpdmF0ZSByZWFkb25seSBDVVNUT01FUiA9ICdDVVNUT01FUidcclxuXHRwcml2YXRlIHJlYWRvbmx5IENIQU5ORUxTRUxMRVIgPSAnQ0hBTk5FTFNFTExFUidcclxuXHJcblx0cHJpdmF0ZSBjaGFubmVsc1VzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pXHJcblx0cHVibGljIGNoYW5uZWxzJCA9IHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cdHByaXZhdGUgX2NoYW5uZWwkID0gdGhpcy5fY2hhbm5lbFNlcnZpY2UuZ2V0Q2hhbm5lbCgpXHJcblx0cHJpdmF0ZSBfdXNlckluU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlciB8IG51bGw+KG51bGwpXHJcblx0cHJpdmF0ZSBfbG9nZ2VkSW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwdWJsaWMgbG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9nZ2VkSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHByaXZhdGUgX2xvZ2dpbmdJblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHB1YmxpYyBsb2dnaW5nSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9nZ2luZ0luU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0LyoqXHJcblx0ICogUGFyYSBpbmRpY2FyIHNpIHVuIGNhbmFsIGNhbWJpby5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9hY3RpdmVDaGFubmVsQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIGxvcyBkYXRvcyBkZWwgdXN1YXJpb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3VzZXI6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIF9jdXN0b21lciA9IG51bGw7XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIGxvcyBkYXRvcyBkZWwgY2FuYWxcclxuXHQgKi9cclxuXHRwdWJsaWMgY2hhbm5lbDogYW55ID0gW11cclxuXHRwdWJsaWMgY2hhbm5lbHM6IGFueVtdID0gW11cclxuXHQvKipcclxuXHQgKiBVdGlsaXphZG8gcGFyYSByZXNvbHZlciBoYWNpYSBkb25kZSBzZSB0aWVuZSBxdWUgcmVkaXJlY2Npb25hclxyXG5cdCAqIGxhIHBhZ2luYSB0cmFzIHVuIGV2ZW50by5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9ob21lUmVzb2x2ZXI6IGFueTtcclxuXHQvKipcclxuXHQgKiBTaWduYWwgcGFyYSBndWFyZGFyIGVsIHRva2VuIGRlIHVzdWFyaW8gdW5hIHZleiBsb2d1ZWFkb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3Rva2VuU2lnbmFsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG5cdC8qKlxyXG5cdCAqIFNpZ25hbCBwYXJhIGd1YXJkYXIgZWwgdXN1YXJpb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3VzZXJTaWduYWwgPSBzaWduYWw8VXNlciB8IG51bGw+KG51bGwpO1xyXG5cdC8vQVBJc1xyXG5cdHByaXZhdGUgc2hvcEFwaTogc3RyaW5nID0gdGhpcy5fYXBpQ29uc3RzLlNIT1BfQVBJX1VSTFxyXG5cdHByaXZhdGUgY2hhbm5lbEFwaTogc3RyaW5nID0gdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUxcclxuXHRwcml2YXRlIHRva2VuQXBpKCkgeyByZXR1cm4gdGhpcy5zaG9wQXBpICsgJ2xvZ2luX2NoZWNrJyB9XHJcblx0cHJpdmF0ZSByZWNvdmVyUGFzc3dvcmRBcGkoKSB7IHJldHVybiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3JlcXVlc3QtcGFzc3dvcmQtcmVzZXRgIH1cclxuXHRwcml2YXRlIGNvbmZpcm1BY2NvdW50QXBpKHRva2VuOiBzdHJpbmcpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vdmVyaWZ5LWFjY291bnQ/dG9rZW49JHt0b2tlbn1gIH1cclxuXHRwcml2YXRlIHJlZ2lzdGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3RlcmAgfVxyXG5cdHByaXZhdGUgcmVnaXN0ZXJXaG9sZXNhbGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3Rlci13aG9sZXNhbGVyYH1cclxuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuXHRcclxuXHRwdWJsaWMgd2luZG93PzpXaW5kb3c7XHJcblx0cHVibGljIGxvY2FsU3RvcmFnZT86U3RvcmFnZTtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdHRoaXMud2luZG93ID0gd2luZG93XHJcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlID0gbG9jYWxTdG9yYWdlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sb2FkVG9rZW5Gcm9tU3RvcmFnZSgpO1xyXG5cdFx0dGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSAmJiB0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dCh0cnVlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTG9ndWVhIGFsIHVzdWFyaW8gZW4gbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIHVzZXIgZGF0b3MgZGVsIHVzdWFyaW9cclxuXHQgKiBAcGFyYW0gd2l0aFJvbGVzIHJvbGVzIGRlbCB1c3VhcmlvXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0bG9naW4odXNlcjogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH0sIHdpdGhSb2xlczogVXNlclJvbGVUeXBlW10gPSBbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHR0aGlzLl9jaGFubmVsJC5zdWJzY3JpYmUoY2ggPT4gdGhpcy5jaGFubmVsID0gY2gpO1xyXG5cdFx0dGhpcy5jaGFubmVscyQuc3Vic2NyaWJlKGNoID0+IHRoaXMuY2hhbm5lbHMgPSBjaCk7XHJcblx0XHR0aGlzLl9sb2dnaW5nSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblx0XHR1c2VyID0gey4uLnVzZXIsIC4uLnRoaXMubG9naW5FeHRyYURhdGEoKSB9XHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMudG9rZW5BcGkoKSwgdXNlcikucGlwZShcclxuXHRcdFx0bWFwKChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmNoYW5uZWxBY2Nlc3NQZXJtaXNzaW9uKHsgLi4udXNlciwgLi4ucmVzIH0pICYmIHRoaXMuaXNBbGxvd2VkUm9sZSh3aXRoUm9sZXMsIHJlcy50eXBlKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5kb0xvZ2luVXNlcih7IC4uLnVzZXIsIC4uLnJlcyB9KTtcclxuXHRcdFx0XHRcdHJldHVybiAnb2snO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gJ2Vycm9yJztcclxuXHRcdFx0fSksXHJcblx0XHRcdGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9sb2dnaW5nSW5TdWJqZWN0Lm5leHQoZmFsc2UpO1xyXG5cdFx0XHRcdHJldHVybiBvZihlcnJvci50b1N0cmluZygpKTtcclxuXHRcdFx0fSlcclxuXHRcdClcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29udHJvbGEgcXVlIGVsIHVzdWFyaW8gbG9ndWVhZG8gdGVuZ2EgcGVybWlzb3MgXHJcblx0ICogcGFyYSBlbCBjYW5hbCBhY3R1YWwgZGUgbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIHJlcyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGNoYW5uZWxBY2Nlc3NQZXJtaXNzaW9uKHJlczogYW55KSB7XHJcblx0XHQvL2NvbnNvbGUubG9nKCdjaGFubmVsQWNjZXNzJywgcmVzKTtcclxuXHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KFtdKTtcclxuXHJcblx0XHQvKiBObyBhdXRob3JpemVkIGNoYW5uZWxzICovXHJcblx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdH1cclxuXHRcdC8qIFNvbWUgYXV0aG9yaXplZCBjaGFubmVsKHMpIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cclxuXHRcdGlmIChyZXMuY2hhbm5lbHMuZmluZCgodXNlcmNoYW5uZWw6IGFueSkgPT4gdXNlcmNoYW5uZWwuY29kZSA9PT0gdGhpcy5jaGFubmVsLmNvZGUpKSB7XHJcblx0XHRcdC8qIE11bHRpcGxlIGF1dGhvcml6ZWQgY2hhbm5lbHMgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xyXG5cdFx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPiAxICYmIHRoaXMuX2FjdGl2ZUNoYW5uZWxDaGFuZ2UpXHJcblx0XHRcdFx0dGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQocmVzLmNoYW5uZWxzKVxyXG5cdFx0XHRyZXR1cm4gdHJ1ZVxyXG5cdFx0fVxyXG5cdFx0LyogT25lIGF1dGhvcml6ZWQgY2hhbm5lbCBub3QgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xyXG5cdFx0aWYgKHJlcy5jaGFubmVscz8ubGVuZ3RoID09IDEgJiYgdGhpcy5fYWN0aXZlQ2hhbm5lbENoYW5nZSkge1xyXG5cdFx0XHRkZWxldGUgcmVzLnBhc3N3b3JkXHJcblx0XHRcdHRoaXMuY2hhbm5lbEFjY2VzcyhyZXMuY2hhbm5lbHNbMF0sIHJlcylcclxuXHRcdFx0cmV0dXJuIHRydWVcclxuXHRcdH1cclxuXHRcdC8qIE11bHRpcGxlIGF1dGhvcml6ZWQgY2hhbm5lbHMgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cclxuXHRcdGlmICh0aGlzLl9hY3RpdmVDaGFubmVsQ2hhbmdlKSB7XHJcblx0XHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KHJlcy5jaGFubmVscylcclxuXHRcdFx0cmV0dXJuIHRydWVcclxuXHRcdH1cclxuXHRcdHJldHVybiBmYWxzZVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb250cm9sYSBlbCBhY2Nlc28gYWwgY2FuYWwsIGRlIHNlciBvdHJvIG51ZXZvIGNhbWJpYSBsb3MgdmFsb3Jlcy5cclxuXHQgKiBAcGFyYW0gY2hhbm5lbCBcclxuXHQgKiBAcGFyYW0gdXNlciBcclxuXHQgKi9cclxuXHRjaGFubmVsQWNjZXNzKGNoYW5uZWw6IGFueSwgdXNlciA9IG51bGwpIHtcclxuXHRcdGlmICh0aGlzLndpbmRvdz8ubG9jYXRpb24uaG9zdG5hbWUgIT0gY2hhbm5lbC5ob3N0bmFtZSkge1xyXG5cdFx0XHRsZXQgZW5jb2RlZCA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkodXNlciAhPSBudWxsID8gdXNlciA6IHRoaXMuX3VzZXIpKVxyXG5cdFx0XHR0aGlzLndpbmRvdz8ubG9jYXRpb24ucmVwbGFjZShgJHt0aGlzLndpbmRvdz8ubG9jYXRpb24ucHJvdG9jb2x9Ly8ke2NoYW5uZWwuaG9zdG5hbWV9L2F1dGgvcmVkaXJlY3QvJHtlbmNvZGVkfWApXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLl9jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyhjaGFubmVsKVxyXG5cdFx0XHR0aGlzLndpbmRvdz8ubG9jYXRpb24ucmVsb2FkKClcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29udHJvbGEgcXVlIGVsIHJvbCBkZWwgdXN1YXJpbyBzZWEgdW4gcm9sIHBlcm1pdGlkbyBwb3IgbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIGFsbG93ZWRSb2xlcyByb2xlcyBxdWUgcGVybWl0ZSBsYSBhcGxpY2FjacOzbi5cclxuXHQgKiBAcGFyYW0gcm9sZSByb2wgZGVsIHVzdWFyaW9zXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpc0FsbG93ZWRSb2xlKGFsbG93ZWRSb2xlczogVXNlclJvbGVUeXBlW10sIHJvbGU6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIGFsbG93ZWRSb2xlcy5sZW5ndGhcclxuXHRcdFx0PyBhbGxvd2VkUm9sZXMuaW5jbHVkZXMocm9sZSBhcyBVc2VyUm9sZVR5cGUpXHJcblx0XHRcdDogdHJ1ZVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBUcmFzIHVuIGxvZ3VlbyBleGl0b3NvLCBndWFyZGEgbG9zIGRhdG9zIG5lY2VzYXJpb3MgZW4gZWwgc3RvcmFnZSB5IGRlbcOhc1xyXG5cdCAqIGNvbmZpZ3VyYWNpb25lcyBuZWNlc2FyaWFzLlxyXG5cdCAqIEBwYXJhbSB0b2tlbnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBkb0xvZ2luVXNlcih0b2tlbnM6IGFueSkge1xyXG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKClcclxuXHRcdHRoaXMuX3VzZXIuaW5pdGlsaXplZCh0b2tlbnMpXHJcblx0XHRcclxuXHRcdHRoaXMuZm9yY2VDaGFubmVsc0ZvclNlbGxlcih0b2tlbnMpXHJcblx0XHQvL0NoYW5uZWxcclxuXHRcdGNvbnN0IHVzZXJKc29uaWZ5ID0gdGhpcy5fdXNlci5qc29uaWZ5KClcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVVNFUiwgSlNPTi5zdHJpbmdpZnkodXNlckpzb25pZnkpKVxyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkpXVF9UT0tFTiwgdG9rZW5zLnRva2VuKTtcclxuXHRcdHRoaXMuX2F1dGhTdG9yYWdlLnNldEF1dGhUb2tlbih0b2tlbnMudG9rZW4pXHJcblx0XHR0aGlzLl90b2tlblNpZ25hbC5zZXQodG9rZW5zLnRva2VuKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTUFJTCwgdG9rZW5zLnVzZXJuYW1lKTtcclxuXHRcdC8vT2JzZXJ2YWJsZXNcclxuXHRcdHRoaXMuX3VzZXJJblN1YmplY3QubmV4dCh0aGlzLl91c2VyKTtcclxuXHRcdHRoaXMuX2xvZ2dlZEluU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdFx0dGhpcy5fbG9nZ2luZ0luU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2FtYmlhIGxhIGZ1bmNpb24gcXVlIHNlIGVuY2FyZ2EgZGUgcmVzb2x2ZXIgaGFjaWEgZG9uZGUgc2UgcmVkaXJpZ2UgZWwgZnJvbnRlbmRcclxuXHQgKiB0cmFzIHVuYSBhY2Npw7NuXHJcblx0ICogQHBhcmFtIHJlc29sdmVyRnVuY3Rpb24gXHJcblx0ICovXHJcblx0cHVibGljIHNldEhvbWVSZXNvbHZlcihyZXNvbHZlckZ1bmN0aW9uOiBhbnkpIHsgdGhpcy5faG9tZVJlc29sdmVyID0gcmVzb2x2ZXJGdW5jdGlvbiB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBsYSBmdW5jaW9uIHF1ZSBzZSBlbmNhcmdhIGRlIHJlc29sdmVyIGhhY2lhIGRvbmRlIHNlIHJlZGlyaWdlIGVsIGZyb250ZW5kLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRIb21lUmVzb2x2ZXIoKSB7IHJldHVybiB0aGlzLl9ob21lUmVzb2x2ZXIgfVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgdG9rZW4gZGVsIHN0b3JhZ2UgeSBsbyBndWFyZGEgZW4gbGEgc2lnbmFsLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkVG9rZW5Gcm9tU3RvcmFnZSgpIHtcclxuXHRcdGNvbnN0IHRva2VuID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pO1xyXG5cdFx0aWYgKHRva2VuKSB7XHJcblx0XHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldCh0b2tlbik7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERlc2xvZ3VlYSBhbCB1c3VhcmlvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2dvdXQoKSB7XHJcblx0XHR0aGlzLmRvTG9nb3V0VXNlcigpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHNpIGhheSB1biB1c3VhcmlvIGxvZ3VlYWRvIG8gbm8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuXHRcdC8vY29uc29sZS5sb2coXCJpc0F1dGhlbnRpY2F0ZWRcIix0aGlzLmlzVG9rZW5FeHBpcmVkKCksIHRoaXMuX3Rva2VuU2lnbmFsKCkgKTtcclxuXHRcdGlmICh0aGlzLmlzVG9rZW5FeHBpcmVkKCkpIHtcclxuXHRcdFx0dGhpcy5kb0xvZ291dFVzZXIoKVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpXHJcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XHJcblx0XHQvL2NvbnNvbGUubG9nKHRoaXMuZ2V0VG9rZW4oKSwgIXRoaXMuaXNUb2tlbkV4cGlyZWQoKSAsIHRoaXMuX3VzZXIgIT0gbnVsbCk7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRUb2tlbigpICYmICF0aGlzLmlzVG9rZW5FeHBpcmVkKCkgJiYgdGhpcy5fdXNlciAhPSBudWxsO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGVsIHRva2VuIGRlIHVzdWFyaW9cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VG9rZW4oKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLl90b2tlblNpZ25hbCgpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBMaW1waWEgZWwgc3RvcmFnZSB5IGxhcyBjb25maWd1cmFjaW9uZXMgaW50ZXJuYXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZG9Mb2dvdXRVc2VyKCkge1xyXG5cdFx0dGhpcy5fdXNlciA9IG51bGxcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVVNFUik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkVYUElSQVRFU19JTik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XHJcblx0XHR0aGlzLl9hdXRoU3RvcmFnZS5zZXRBdXRoVG9rZW4obnVsbCk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4pO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfdG9rZW4nKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTUFJTCk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUwpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTE9DQUxFKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ1VTVE9NRVIpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ01BU1RFUl9DSEFOTkVMJyk7XHJcblx0XHR0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XHJcblx0XHR0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChbXSlcclxuXHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldChudWxsKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBgdHJ1ZWBzaSBlbCB0b2tlbiBleHBpcm8sIGBmYWxzZWAgY2FzbyBjb250cmFyaW8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpc1Rva2VuRXhwaXJlZCgpIHtcclxuXHRcdGNvbnN0IGZlY2hhX2V4cGlyYWNpb24gPSB0aGlzLmdldEV4cGlyYXRlc0F0KCk7XHJcblx0XHRjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxhIGZlY2hhIGRlIGV4cGlyYWNpw7NuIGRlbCB0b2tlbi5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGdldEV4cGlyYXRlc0F0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuRVhQSVJBVEVTX0lOKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBhbCB1c3VhcmlvIGFjdHVhbCB5IGxvIGNvbnZpZXJ0ZSBlbiB1bmEgaW5zdGFuY2lhIGRlIGBVc2VyYFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTogVXNlciB8IG51bGwge1xyXG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKCk7XHJcblx0XHRpZiAoIXRoaXMubG9hZFVzZXJGcm9tU3RvcmFnZSgpKSB7XHJcblx0XHRcdHRoaXMuX3VzZXIgPSBudWxsXHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLl91c2VyPy5jaGFubmVscy5maW5kKCh1c2VyY2hhbm5lbDogYW55KSA9PiB1c2VyY2hhbm5lbD8uY29kZSA9PT0gdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwpKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl91c2VyO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sb2dvdXQoKVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuX3VzZXI7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgdXN1YXJpbyBkZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbG9hZFVzZXJGcm9tU3RvcmFnZShrZXkgPSB0aGlzLlVTRVIpIHtcclxuXHRcdGlmICh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XHJcblx0XHRcdHRoaXMuX3VzZXIgPSBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEVudmlhIGxhIHNvbGljaXR1ZCBwYXJhIGNhbWJpYXIgbGEgY29udHJhc2XDsWEuXHJcblx0ICogQHBhcmFtIGVtYWlsIGVtYWlsIGRlbCBzb2xpY2l0YW50ZS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRyZWNvdmVyUGFzc3dvcmQoZW1haWw6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24ucHV0KHRoaXMucmVjb3ZlclBhc3N3b3JkQXBpKCksIHsgZW1haWwgfSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgY29uZmlybWFyIGVsIHJlZ2lzdHJvIGRlIHVzdWFyaW8uXHJcblx0ICogQHBhcmFtIHRva2VuIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNvbmZpcm1BY2NvdW50KHRva2VuOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmNvbmZpcm1BY2NvdW50QXBpKHRva2VuKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBjb23Dum5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRzaW5nVXAoZGF0YTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMucmVnaXN0ZXJBcGkoKSwgZGF0YSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBtYXlvcmlzdGEuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0c2lnblVwV2hvbGVzYWxlcihkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5yZWdpc3Rlcldob2xlc2FsZXJBcGkoKSxkYXRhKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2hlcXVlYSBzaSB1biB1c3VhcmlvIGVzdGEgaGFiaWxpdGFkbyBhIGNvbXByYXIgbyBuby5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHQvLyBpc0FibGVUb0J1eSgpOmJvb2xlYW4ge1xyXG5cdC8vIFx0Y29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCkgYXMgVXNlcjtcclxuXHQvLyBcdGNvbnN0IGlzU2VsbGVyID0gY3VycmVudFVzZXIudHlwZVVzZXIgJiYgY3VycmVudFVzZXIudHlwZVVzZXIgPT0gJ3NlbGxlcicgfHwgZmFsc2VcclxuXHQvLyBcdHJldHVybiAhaXNTZWxsZXIgfHwgIXRoaXMuZ2V0Q3VzdG9tZXIoKTtcclxuXHQvLyB9XHJcblx0cHVibGljIGlzQWJsZVRvQnV5ID0gKCk6IGJvb2xlYW4gPT4gIXRoaXMuZ2V0VXNlclByb2ZpbGVBc1VzZXIoKT8uaXNTZWxsZXIoKSB8fCAhIXRoaXMuZ2V0Q3VzdG9tZXIoKVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIHVzdWFyaW8gZGUgdGlwbyBjbGllbnRlLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldEN1c3RvbWVyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2N1c3RvbWVyIHx8IEpTT04ucGFyc2UodGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DVVNUT01FUikpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGVsIHVzdWFyaW8gYWN0dWFsIGxvZ3VlYWRvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFVzZXJQcm9maWxlQXNVc2VyKCk6IFVzZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyISBhcyBVc2VyIHx8IHRoaXMuZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTtcclxuICAgIH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgZGF0YSBleHRyYSBhbCBvYmplY3RvIGRlIFVzdWFyaW8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0bG9naW5FeHRyYURhdGEgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY2xpZW50X2lkOiAnZGVtb19jbGllbnQnLFxyXG4gICAgICAgICAgICBjbGllbnRfc2VjcmV0OiAnc2VjcmV0X2RlbW9fY2xpZW50JyxcclxuICAgICAgICAgICAgZ3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHQvKiBQbGVhc2UgcmVtb3ZlIHRoaXMgQVNBUCAtIE5lZWRzICpjaGFubmVscyogYXJyYXkgaW4gdXNlciBvYmplY3QgQUxXQVlTICovXHJcbiAgICBwcml2YXRlIGZvcmNlQ2hhbm5lbHNGb3JTZWxsZXIodG9rZW5zOmFueSl7XHJcbiAgICAgICAgaWYgKFVzZXJSb2xlVHlwZS5TRUxMRVIgPT0gdG9rZW5zLnR5cGUgYXMgVXNlclJvbGVUeXBlKVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzPy5sZW5ndGhcclxuICAgICAgICAgICAgICAgID8gdGhpcy5fdXNlciEuc2V0Q2hhbm5lbHMoLi4udGhpcy5jaGFubmVscylcclxuICAgICAgICAgICAgICAgIDogdGhpcy5fdXNlciEuc2V0Q2hhbm5lbHModGhpcy5jaGFubmVsKVxyXG4gICAgfVxyXG5cclxuXHQgLyoqXHJcbiAgICAgKiBDYXJnYSBlbCBjbGllbnRlIGNvbiBlbCBxdWUgc2UgcmVhbGl6YXJhbiBwZWRpZG9zLiBTaSByZWNpYmUgZWwgdmFsb3IgbnVsbFxyXG4gICAgICogc2UgdnVlbHZlIGEgY2FyZ2FyIGVsIHZlbmRlZG9yIHBhcmEgc3UgdXNvLiAgXHJcbiAgICAgKiBAcGFyYW0gY3VzdG9tZXIgXHJcbiAgICAgKi9cclxuXHQgcHVibGljIHNldEN1c3RvbWVyKGN1c3RvbWVyOmFueSl7XHJcbiAgICAgICAgbGV0IHJlZnJlc2hQYWdlID0gZmFsc2VcclxuICAgICAgICB0aGlzLl9jdXN0b21lciA9IGN1c3RvbWVyXHJcbiAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DVVNUT01FUiwgSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXIpKVxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBzYW1lQ2hhbm5lbCA9IGN1c3RvbWVyID8gdGhpcy5zYW1lQ2hhbm5lbChjdXN0b21lci5jaGFubmVsc1swXS5jb2RlLCBjdXN0b21lci5jaGFubmVsc1swXS5sb2NhbGVzLmNvZGUpIDogbnVsbFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChjdXN0b21lcikge1xyXG4gICAgICAgICAgICBpZighc2FtZUNoYW5uZWwpe1xyXG4gICAgICAgICAgICAgICAgIXRoaXMubG9jYWxTdG9yYWdlPy5nZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUikgP1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlPy5zZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUiwgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9hcGlDb25zdHMuTE9DQUxFXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hhbm5lbCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogY3VzdG9tZXIuY2hhbm5lbHNbMF0uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGN1c3RvbWVyLmNoYW5uZWxzWzBdLmxvY2FsZXMuY29kZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UodGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKSlcclxuICAgICAgICAgICAgaWYocmVzKXtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnNhbWVDaGFubmVsKHJlcy5jaGFubmVsLCByZXMubG9jYWxlKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGFubmVsKHJlcylcclxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSA9IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlPy5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy90aGlzLl9jYXJ0U2VydmljZS5jbGVhckFuZFJlc2V0Q3VzdG9tZXJDYXJ0KClcclxuICAgICAgICByZWZyZXNoUGFnZSA/IGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmIDogbnVsbFxyXG4gICAgfVxyXG5cclxuXHQvKipcclxuICAgICAqIENvbXBydWViYSBzaSBsb3MgdmFsb3JlcyBkZWwgY2FuYWwgYWN0dWFsIHNvbiBpZ3VhbGVzIGEgbG9zIGluZ3Jlc2FkbyBwb3IgcGFyYW1ldHJvcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIE5vbWJyZSBkZWwgY2FuYWxcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgIExvY2FsZSBkZWwgY2FuYWxcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHNpIGVzIGVsIG1pc21vIGNhbmFsLCBGYWxzZSBjYXNvIGNvbnRyYXJpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzYW1lQ2hhbm5lbCA9IChjaGFubmVsOnN0cmluZywgbG9jYWxlOnN0cmluZyk6Ym9vbGVhbiA9PiAoY2hhbm5lbCA9PSB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCkgJiYgKGxvY2FsZSA9PSB0aGlzLl9hcGlDb25zdHMuTE9DQUxFKVxyXG5cclxuXHQvKipcclxuICAgICAqIENhbWJpYSBkZSBjYW5hbFxyXG4gICAgICogQHBhcmFtIGNoYW5uZWxDb25maWcgZGViZSBzZXIgdW4gb2JqZXRvIHF1ZSBjb250ZW5nYSBhbCBtZW5vcyBsYXMga2V5cyBjaGFubmVsIHkgbG9jYWxlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNoYW5nZUNoYW5uZWwgPSAoY2hhbm5lbENvbmZpZzphbnkpID0+IHtcclxuICAgICAgICB0aGlzLl9jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyh7XHJcbiAgICAgICAgICAgIGNoYW5uZWw6IGNoYW5uZWxDb25maWcuY2hhbm5lbCxcclxuICAgICAgICAgICAgbG9jYWxlOiBjaGFubmVsQ29uZmlnLmxvY2FsZVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblx0Z2V0VXNlclByb2ZpbGUoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5fdXNlciAmJiBvZih0aGlzLl91c2VyKSkgfHwgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgfVxyXG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xyXG4gICAgICAgIHRoaXMuX3VzZXIgPSBuZXcgVXNlcigpO1xyXG4gICAgICAgIGlmICghdGhpcy5sb2FkVXNlckZyb21TdG9yYWdlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlciA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX3VzZXIpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBQ3BEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFDZixhQUFhLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2hFLFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsVUFBVSxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNoRSxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIs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QVcsY0FGWCxNQUFNOzs0RkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVc2VyUm9sZVR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vYXV0aC5zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG4vKipcclxuICogU2VydmljaW8gZGUgYXV0ZW50aWZpY2FjacOzbiBkZWwgdXN1YXJpbyBlbiBsYSBwbGF0YWZvcm1hLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKVxyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hdXRoU3RvcmFnZTogQXV0aFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KEF1dGhTdG9yYWdlU2VydmljZSk7XHJcblxyXG5cdC8vIENvbnRhbnRlcyBwYXJhIGVsIHN0b3JhZ2UuXHJcblx0cHJpdmF0ZSByZWFkb25seSBKV1RfVE9LRU4gPSAnSldUX1RPS0VOJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgUkVGUkVTSF9UT0tFTiA9ICdSRUZSRVNIX1RPS0VOJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgRVhQSVJBVEVTX0lOID0gJ0VYUElSQVRFU19JTidcclxuXHRwcml2YXRlIHJlYWRvbmx5IFVTRVIgPSAnVVNFUidcclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BSUwgPSAnbWFpbCdcclxuXHRwcml2YXRlIHJlYWRvbmx5IExPQ0FMRSA9ICdMT0NBTEUnXHJcblx0cHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnXHJcblx0cHJpdmF0ZSByZWFkb25seSBDVVNUT01FUiA9ICdDVVNUT01FUidcclxuXHRwcml2YXRlIHJlYWRvbmx5IENIQU5ORUxTRUxMRVIgPSAnQ0hBTk5FTFNFTExFUidcclxuXHJcblx0cHJpdmF0ZSBjaGFubmVsc1VzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pXHJcblx0cHVibGljIGNoYW5uZWxzJCA9IHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cdHByaXZhdGUgX2NoYW5uZWwkID0gdGhpcy5fY2hhbm5lbFNlcnZpY2UuZ2V0Q2hhbm5lbCgpXHJcblx0cHJpdmF0ZSBfdXNlckluU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlciB8IG51bGw+KG51bGwpXHJcblx0cHJpdmF0ZSBfbG9nZ2VkSW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwdWJsaWMgbG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9nZ2VkSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHByaXZhdGUgX2xvZ2dpbmdJblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHB1YmxpYyBsb2dnaW5nSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9nZ2luZ0luU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0LyoqXHJcblx0ICogUGFyYSBpbmRpY2FyIHNpIHVuIGNhbmFsIGNhbWJpby5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9hY3RpdmVDaGFubmVsQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIGxvcyBkYXRvcyBkZWwgdXN1YXJpb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3VzZXI6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIF9jdXN0b21lciA9IG51bGw7XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIGxvcyBkYXRvcyBkZWwgY2FuYWxcclxuXHQgKi9cclxuXHRwdWJsaWMgY2hhbm5lbDogYW55ID0gW11cclxuXHRwdWJsaWMgY2hhbm5lbHM6IGFueVtdID0gW11cclxuXHQvKipcclxuXHQgKiBVdGlsaXphZG8gcGFyYSByZXNvbHZlciBoYWNpYSBkb25kZSBzZSB0aWVuZSBxdWUgcmVkaXJlY2Npb25hclxyXG5cdCAqIGxhIHBhZ2luYSB0cmFzIHVuIGV2ZW50by5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9ob21lUmVzb2x2ZXI6IGFueTtcclxuXHQvKipcclxuXHQgKiBTaWduYWwgcGFyYSBndWFyZGFyIGVsIHRva2VuIGRlIHVzdWFyaW8gdW5hIHZleiBsb2d1ZWFkb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3Rva2VuU2lnbmFsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG5cdC8qKlxyXG5cdCAqIFNpZ25hbCBwYXJhIGd1YXJkYXIgZWwgdXN1YXJpb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3VzZXJTaWduYWwgPSBzaWduYWw8VXNlciB8IG51bGw+KG51bGwpO1xyXG5cdC8vQVBJc1xyXG5cdHByaXZhdGUgc2hvcEFwaTogc3RyaW5nID0gdGhpcy5fYXBpQ29uc3RzLlNIT1BfQVBJX1VSTFxyXG5cdHByaXZhdGUgY2hhbm5lbEFwaTogc3RyaW5nID0gdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUxcclxuXHRwcml2YXRlIHRva2VuQXBpKCkgeyByZXR1cm4gdGhpcy5zaG9wQXBpICsgJ2xvZ2luX2NoZWNrJyB9XHJcblx0cHJpdmF0ZSByZWNvdmVyUGFzc3dvcmRBcGkoKSB7IHJldHVybiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3JlcXVlc3QtcGFzc3dvcmQtcmVzZXRgIH1cclxuXHRwcml2YXRlIGNvbmZpcm1BY2NvdW50QXBpKHRva2VuOiBzdHJpbmcpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vdmVyaWZ5LWFjY291bnQ/dG9rZW49JHt0b2tlbn1gIH1cclxuXHRwcml2YXRlIHJlZ2lzdGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3RlcmAgfVxyXG5cdHByaXZhdGUgcmVnaXN0ZXJXaG9sZXNhbGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3Rlci13aG9sZXNhbGVyYH1cclxuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuXHRcclxuXHRwdWJsaWMgd2luZG93PzpXaW5kb3c7XHJcblx0cHVibGljIGxvY2FsU3RvcmFnZT86U3RvcmFnZTtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdHRoaXMud2luZG93ID0gd2luZG93XHJcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlID0gbG9jYWxTdG9yYWdlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sb2FkVG9rZW5Gcm9tU3RvcmFnZSgpO1xyXG5cdFx0dGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSAmJiB0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dCh0cnVlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTG9ndWVhIGFsIHVzdWFyaW8gZW4gbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIHVzZXIgZGF0b3MgZGVsIHVzdWFyaW9cclxuXHQgKiBAcGFyYW0gd2l0aFJvbGVzIHJvbGVzIGRlbCB1c3VhcmlvXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0bG9naW4odXNlcjogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH0sIHdpdGhSb2xlczogVXNlclJvbGVUeXBlW10gPSBbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHR0aGlzLl9jaGFubmVsJC5zdWJzY3JpYmUoY2ggPT4gdGhpcy5jaGFubmVsID0gY2gpO1xyXG5cdFx0dGhpcy5jaGFubmVscyQuc3Vic2NyaWJlKGNoID0+IHRoaXMuY2hhbm5lbHMgPSBjaCk7XHJcblx0XHR0aGlzLl9sb2dnaW5nSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblx0XHR1c2VyID0gey4uLnVzZXIsIC4uLnRoaXMubG9naW5FeHRyYURhdGEoKSB9XHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMudG9rZW5BcGkoKSwgdXNlcikucGlwZShcclxuXHRcdFx0bWFwKChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmNoYW5uZWxBY2Nlc3NQZXJtaXNzaW9uKHsgLi4udXNlciwgLi4ucmVzIH0pICYmIHRoaXMuaXNBbGxvd2VkUm9sZSh3aXRoUm9sZXMsIHJlcy50eXBlKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5kb0xvZ2luVXNlcih7IC4uLnVzZXIsIC4uLnJlcyB9KTtcclxuXHRcdFx0XHRcdHJldHVybiAnb2snO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gJ2Vycm9yJztcclxuXHRcdFx0fSksXHJcblx0XHRcdGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9sb2dnaW5nSW5TdWJqZWN0Lm5leHQoZmFsc2UpO1xyXG5cdFx0XHRcdHJldHVybiBvZihlcnJvci50b1N0cmluZygpKTtcclxuXHRcdFx0fSlcclxuXHRcdClcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29udHJvbGEgcXVlIGVsIHVzdWFyaW8gbG9ndWVhZG8gdGVuZ2EgcGVybWlzb3MgXHJcblx0ICogcGFyYSBlbCBjYW5hbCBhY3R1YWwgZGUgbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIHJlcyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGNoYW5uZWxBY2Nlc3NQZXJtaXNzaW9uKHJlczogYW55KSB7XHJcblx0XHQvL2NvbnNvbGUubG9nKCdjaGFubmVsQWNjZXNzJywgcmVzKTtcclxuXHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KFtdKTtcclxuXHJcblx0XHQvKiBObyBhdXRob3JpemVkIGNoYW5uZWxzICovXHJcblx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdH1cclxuXHRcdC8qIFNvbWUgYXV0aG9yaXplZCBjaGFubmVsKHMpIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cclxuXHRcdGlmIChyZXMuY2hhbm5lbHMuZmluZCgodXNlcmNoYW5uZWw6IGFueSkgPT4gdXNlcmNoYW5uZWwuY29kZSA9PT0gdGhpcy5jaGFubmVsLmNvZGUpKSB7XHJcblx0XHRcdC8qIE11bHRpcGxlIGF1dGhvcml6ZWQgY2hhbm5lbHMgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xyXG5cdFx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPiAxICYmIHRoaXMuX2FjdGl2ZUNoYW5uZWxDaGFuZ2UpXHJcblx0XHRcdFx0dGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQocmVzLmNoYW5uZWxzKVxyXG5cdFx0XHRyZXR1cm4gdHJ1ZVxyXG5cdFx0fVxyXG5cdFx0LyogT25lIGF1dGhvcml6ZWQgY2hhbm5lbCBub3QgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xyXG5cdFx0aWYgKHJlcy5jaGFubmVscz8ubGVuZ3RoID09IDEgJiYgdGhpcy5fYWN0aXZlQ2hhbm5lbENoYW5nZSkge1xyXG5cdFx0XHRkZWxldGUgcmVzLnBhc3N3b3JkXHJcblx0XHRcdHRoaXMuY2hhbm5lbEFjY2VzcyhyZXMuY2hhbm5lbHNbMF0sIHJlcylcclxuXHRcdFx0cmV0dXJuIHRydWVcclxuXHRcdH1cclxuXHRcdC8qIE11bHRpcGxlIGF1dGhvcml6ZWQgY2hhbm5lbHMgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cclxuXHRcdGlmICh0aGlzLl9hY3RpdmVDaGFubmVsQ2hhbmdlKSB7XHJcblx0XHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KHJlcy5jaGFubmVscylcclxuXHRcdFx0cmV0dXJuIHRydWVcclxuXHRcdH1cclxuXHRcdHJldHVybiBmYWxzZVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb250cm9sYSBlbCBhY2Nlc28gYWwgY2FuYWwsIGRlIHNlciBvdHJvIG51ZXZvIGNhbWJpYSBsb3MgdmFsb3Jlcy5cclxuXHQgKiBAcGFyYW0gY2hhbm5lbCBcclxuXHQgKiBAcGFyYW0gdXNlciBcclxuXHQgKi9cclxuXHRjaGFubmVsQWNjZXNzKGNoYW5uZWw6IGFueSwgdXNlciA9IG51bGwpIHtcclxuXHRcdGlmICh0aGlzLndpbmRvdz8ubG9jYXRpb24uaG9zdG5hbWUgIT0gY2hhbm5lbC5ob3N0bmFtZSkge1xyXG5cdFx0XHRsZXQgZW5jb2RlZCA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkodXNlciAhPSBudWxsID8gdXNlciA6IHRoaXMuX3VzZXIpKVxyXG5cdFx0XHR0aGlzLndpbmRvdz8ubG9jYXRpb24ucmVwbGFjZShgJHt0aGlzLndpbmRvdz8ubG9jYXRpb24ucHJvdG9jb2x9Ly8ke2NoYW5uZWwuaG9zdG5hbWV9L2F1dGgvcmVkaXJlY3QvJHtlbmNvZGVkfWApXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLl9jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyhjaGFubmVsKVxyXG5cdFx0XHR0aGlzLndpbmRvdz8ubG9jYXRpb24ucmVsb2FkKClcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29udHJvbGEgcXVlIGVsIHJvbCBkZWwgdXN1YXJpbyBzZWEgdW4gcm9sIHBlcm1pdGlkbyBwb3IgbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIGFsbG93ZWRSb2xlcyByb2xlcyBxdWUgcGVybWl0ZSBsYSBhcGxpY2FjacOzbi5cclxuXHQgKiBAcGFyYW0gcm9sZSByb2wgZGVsIHVzdWFyaW9zXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpc0FsbG93ZWRSb2xlKGFsbG93ZWRSb2xlczogVXNlclJvbGVUeXBlW10sIHJvbGU6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIGFsbG93ZWRSb2xlcy5sZW5ndGhcclxuXHRcdFx0PyBhbGxvd2VkUm9sZXMuaW5jbHVkZXMocm9sZSBhcyBVc2VyUm9sZVR5cGUpXHJcblx0XHRcdDogdHJ1ZVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBUcmFzIHVuIGxvZ3VlbyBleGl0b3NvLCBndWFyZGEgbG9zIGRhdG9zIG5lY2VzYXJpb3MgZW4gZWwgc3RvcmFnZSB5IGRlbcOhc1xyXG5cdCAqIGNvbmZpZ3VyYWNpb25lcyBuZWNlc2FyaWFzLlxyXG5cdCAqIEBwYXJhbSB0b2tlbnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBkb0xvZ2luVXNlcih0b2tlbnM6IGFueSkge1xyXG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKClcclxuXHRcdHRoaXMuX3VzZXIuaW5pdGlsaXplZCh0b2tlbnMpXHJcblx0XHRcclxuXHRcdHRoaXMuZm9yY2VDaGFubmVsc0ZvclNlbGxlcih0b2tlbnMpXHJcblx0XHQvL0NoYW5uZWxcclxuXHRcdGNvbnN0IHVzZXJKc29uaWZ5ID0gdGhpcy5fdXNlci5qc29uaWZ5KClcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVVNFUiwgSlNPTi5zdHJpbmdpZnkodXNlckpzb25pZnkpKVxyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkpXVF9UT0tFTiwgdG9rZW5zLnRva2VuKTtcclxuXHRcdHRoaXMuX2F1dGhTdG9yYWdlLnNldEF1dGhUb2tlbih0b2tlbnMudG9rZW4pXHJcblx0XHR0aGlzLl90b2tlblNpZ25hbC5zZXQodG9rZW5zLnRva2VuKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTUFJTCwgdG9rZW5zLnVzZXJuYW1lKTtcclxuXHRcdC8vT2JzZXJ2YWJsZXNcclxuXHRcdHRoaXMuX3VzZXJJblN1YmplY3QubmV4dCh0aGlzLl91c2VyKTtcclxuXHRcdHRoaXMuX2xvZ2dlZEluU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdFx0dGhpcy5fbG9nZ2luZ0luU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2FtYmlhIGxhIGZ1bmNpb24gcXVlIHNlIGVuY2FyZ2EgZGUgcmVzb2x2ZXIgaGFjaWEgZG9uZGUgc2UgcmVkaXJpZ2UgZWwgZnJvbnRlbmRcclxuXHQgKiB0cmFzIHVuYSBhY2Npw7NuXHJcblx0ICogQHBhcmFtIHJlc29sdmVyRnVuY3Rpb24gXHJcblx0ICovXHJcblx0cHVibGljIHNldEhvbWVSZXNvbHZlcihyZXNvbHZlckZ1bmN0aW9uOiBhbnkpIHsgdGhpcy5faG9tZVJlc29sdmVyID0gcmVzb2x2ZXJGdW5jdGlvbiB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBsYSBmdW5jaW9uIHF1ZSBzZSBlbmNhcmdhIGRlIHJlc29sdmVyIGhhY2lhIGRvbmRlIHNlIHJlZGlyaWdlIGVsIGZyb250ZW5kLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRIb21lUmVzb2x2ZXIoKSB7IHJldHVybiB0aGlzLl9ob21lUmVzb2x2ZXIgfVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgdG9rZW4gZGVsIHN0b3JhZ2UgeSBsbyBndWFyZGEgZW4gbGEgc2lnbmFsLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkVG9rZW5Gcm9tU3RvcmFnZSgpIHtcclxuXHRcdGNvbnN0IHRva2VuID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pO1xyXG5cdFx0aWYgKHRva2VuKSB7XHJcblx0XHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldCh0b2tlbik7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERlc2xvZ3VlYSBhbCB1c3VhcmlvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2dvdXQoKSB7XHJcblx0XHR0aGlzLmRvTG9nb3V0VXNlcigpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHNpIGhheSB1biB1c3VhcmlvIGxvZ3VlYWRvIG8gbm8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuXHRcdC8vY29uc29sZS5sb2coXCJpc0F1dGhlbnRpY2F0ZWRcIix0aGlzLmlzVG9rZW5FeHBpcmVkKCksIHRoaXMuX3Rva2VuU2lnbmFsKCkgKTtcclxuXHRcdGlmICh0aGlzLmlzVG9rZW5FeHBpcmVkKCkpIHtcclxuXHRcdFx0dGhpcy5kb0xvZ291dFVzZXIoKVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpXHJcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XHJcblx0XHQvL2NvbnNvbGUubG9nKHRoaXMuZ2V0VG9rZW4oKSwgIXRoaXMuaXNUb2tlbkV4cGlyZWQoKSAsIHRoaXMuX3VzZXIgIT0gbnVsbCk7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRUb2tlbigpICYmICF0aGlzLmlzVG9rZW5FeHBpcmVkKCkgJiYgdGhpcy5fdXNlciAhPSBudWxsO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGVsIHRva2VuIGRlIHVzdWFyaW9cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VG9rZW4oKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLl90b2tlblNpZ25hbCgpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBMaW1waWEgZWwgc3RvcmFnZSB5IGxhcyBjb25maWd1cmFjaW9uZXMgaW50ZXJuYXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZG9Mb2dvdXRVc2VyKCkge1xyXG5cdFx0dGhpcy5fdXNlciA9IG51bGxcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVVNFUik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkVYUElSQVRFU19JTik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XHJcblx0XHR0aGlzLl9hdXRoU3RvcmFnZS5zZXRBdXRoVG9rZW4obnVsbCk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4pO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfdG9rZW4nKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTUFJTCk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUwpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTE9DQUxFKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ1VTVE9NRVIpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ01BU1RFUl9DSEFOTkVMJyk7XHJcblx0XHR0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XHJcblx0XHR0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChbXSlcclxuXHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldChudWxsKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBgdHJ1ZWBzaSBlbCB0b2tlbiBleHBpcm8sIGBmYWxzZWAgY2FzbyBjb250cmFyaW8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpc1Rva2VuRXhwaXJlZCgpIHtcclxuXHRcdGNvbnN0IGZlY2hhX2V4cGlyYWNpb24gPSB0aGlzLmdldEV4cGlyYXRlc0F0KCk7XHJcblx0XHRjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxhIGZlY2hhIGRlIGV4cGlyYWNpw7NuIGRlbCB0b2tlbi5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGdldEV4cGlyYXRlc0F0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuRVhQSVJBVEVTX0lOKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBhbCB1c3VhcmlvIGFjdHVhbCB5IGxvIGNvbnZpZXJ0ZSBlbiB1bmEgaW5zdGFuY2lhIGRlIGBVc2VyYFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTogVXNlciB8IG51bGwge1xyXG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKCk7XHJcblx0XHRpZiAoIXRoaXMubG9hZFVzZXJGcm9tU3RvcmFnZSgpKSB7XHJcblx0XHRcdHRoaXMuX3VzZXIgPSBudWxsXHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLl91c2VyPy5jaGFubmVscy5maW5kKCh1c2VyY2hhbm5lbDogYW55KSA9PiB1c2VyY2hhbm5lbD8uY29kZSA9PT0gdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwpKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl91c2VyO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sb2dvdXQoKVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuX3VzZXI7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgdXN1YXJpbyBkZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbG9hZFVzZXJGcm9tU3RvcmFnZShrZXkgPSB0aGlzLlVTRVIpIHtcclxuXHRcdGlmICh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XHJcblx0XHRcdHRoaXMuX3VzZXIgPSBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEVudmlhIGxhIHNvbGljaXR1ZCBwYXJhIGNhbWJpYXIgbGEgY29udHJhc2XDsWEuXHJcblx0ICogQHBhcmFtIGVtYWlsIGVtYWlsIGRlbCBzb2xpY2l0YW50ZS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRyZWNvdmVyUGFzc3dvcmQoZW1haWw6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24ucHV0KHRoaXMucmVjb3ZlclBhc3N3b3JkQXBpKCksIHsgZW1haWwgfSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgY29uZmlybWFyIGVsIHJlZ2lzdHJvIGRlIHVzdWFyaW8uXHJcblx0ICogQHBhcmFtIHRva2VuIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNvbmZpcm1BY2NvdW50KHRva2VuOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmNvbmZpcm1BY2NvdW50QXBpKHRva2VuKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBjb23Dum5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRzaW5nVXAoZGF0YTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMucmVnaXN0ZXJBcGkoKSwgZGF0YSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBtYXlvcmlzdGEuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0c2lnblVwV2hvbGVzYWxlcihkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5yZWdpc3Rlcldob2xlc2FsZXJBcGkoKSxkYXRhKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2hlcXVlYSBzaSB1biB1c3VhcmlvIGVzdGEgaGFiaWxpdGFkbyBhIGNvbXByYXIgbyBuby5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHQvLyBpc0FibGVUb0J1eSgpOmJvb2xlYW4ge1xyXG5cdC8vIFx0Y29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCkgYXMgVXNlcjtcclxuXHQvLyBcdGNvbnN0IGlzU2VsbGVyID0gY3VycmVudFVzZXIudHlwZVVzZXIgJiYgY3VycmVudFVzZXIudHlwZVVzZXIgPT0gJ3NlbGxlcicgfHwgZmFsc2VcclxuXHQvLyBcdHJldHVybiAhaXNTZWxsZXIgfHwgIXRoaXMuZ2V0Q3VzdG9tZXIoKTtcclxuXHQvLyB9XHJcblx0cHVibGljIGlzQWJsZVRvQnV5ID0gKCk6IGJvb2xlYW4gPT4gIXRoaXMuZ2V0VXNlclByb2ZpbGVBc1VzZXIoKT8uaXNTZWxsZXIoKSB8fCAhIXRoaXMuZ2V0Q3VzdG9tZXIoKVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIHVzdWFyaW8gZGUgdGlwbyBjbGllbnRlLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldEN1c3RvbWVyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2N1c3RvbWVyIHx8IEpTT04ucGFyc2UodGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DVVNUT01FUikpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGVsIHVzdWFyaW8gYWN0dWFsIGxvZ3VlYWRvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFVzZXJQcm9maWxlQXNVc2VyKCk6IFVzZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyISBhcyBVc2VyIHx8IHRoaXMuZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTtcclxuICAgIH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgZGF0YSBleHRyYSBhbCBvYmplY3RvIGRlIFVzdWFyaW8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0bG9naW5FeHRyYURhdGEgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY2xpZW50X2lkOiAnZGVtb19jbGllbnQnLFxyXG4gICAgICAgICAgICBjbGllbnRfc2VjcmV0OiAnc2VjcmV0X2RlbW9fY2xpZW50JyxcclxuICAgICAgICAgICAgZ3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHQvKiBQbGVhc2UgcmVtb3ZlIHRoaXMgQVNBUCAtIE5lZWRzICpjaGFubmVscyogYXJyYXkgaW4gdXNlciBvYmplY3QgQUxXQVlTICovXHJcbiAgICBwcml2YXRlIGZvcmNlQ2hhbm5lbHNGb3JTZWxsZXIodG9rZW5zOmFueSl7XHJcbiAgICAgICAgaWYgKFVzZXJSb2xlVHlwZS5TRUxMRVIgPT0gdG9rZW5zLnR5cGUgYXMgVXNlclJvbGVUeXBlKVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzPy5sZW5ndGhcclxuICAgICAgICAgICAgICAgID8gdGhpcy5fdXNlciEuc2V0Q2hhbm5lbHMoLi4udGhpcy5jaGFubmVscylcclxuICAgICAgICAgICAgICAgIDogdGhpcy5fdXNlciEuc2V0Q2hhbm5lbHModGhpcy5jaGFubmVsKVxyXG4gICAgfVxyXG5cclxuXHQgLyoqXHJcbiAgICAgKiBDYXJnYSBlbCBjbGllbnRlIGNvbiBlbCBxdWUgc2UgcmVhbGl6YXJhbiBwZWRpZG9zLiBTaSByZWNpYmUgZWwgdmFsb3IgbnVsbFxyXG4gICAgICogc2UgdnVlbHZlIGEgY2FyZ2FyIGVsIHZlbmRlZG9yIHBhcmEgc3UgdXNvLiAgXHJcbiAgICAgKiBAcGFyYW0gY3VzdG9tZXIgXHJcbiAgICAgKi9cclxuXHQgcHVibGljIHNldEN1c3RvbWVyKGN1c3RvbWVyOmFueSl7XHJcbiAgICAgICAgbGV0IHJlZnJlc2hQYWdlID0gZmFsc2VcclxuICAgICAgICB0aGlzLl9jdXN0b21lciA9IGN1c3RvbWVyXHJcbiAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DVVNUT01FUiwgSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXIpKVxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBzYW1lQ2hhbm5lbCA9IGN1c3RvbWVyID8gdGhpcy5zYW1lQ2hhbm5lbChjdXN0b21lci5jaGFubmVsc1swXS5jb2RlLCBjdXN0b21lci5jaGFubmVsc1swXS5sb2NhbGVzLmNvZGUpIDogbnVsbFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChjdXN0b21lcikge1xyXG4gICAgICAgICAgICBpZighc2FtZUNoYW5uZWwpe1xyXG4gICAgICAgICAgICAgICAgIXRoaXMubG9jYWxTdG9yYWdlPy5nZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUikgP1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlPy5zZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUiwgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9hcGlDb25zdHMuTE9DQUxFXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hhbm5lbCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogY3VzdG9tZXIuY2hhbm5lbHNbMF0uY29kZSxcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGN1c3RvbWVyLmNoYW5uZWxzWzBdLmxvY2FsZXMuY29kZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UodGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKSlcclxuICAgICAgICAgICAgaWYocmVzKXtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnNhbWVDaGFubmVsKHJlcy5jaGFubmVsLCByZXMubG9jYWxlKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGFubmVsKHJlcylcclxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSA9IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlPy5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy90aGlzLl9jYXJ0U2VydmljZS5jbGVhckFuZFJlc2V0Q3VzdG9tZXJDYXJ0KClcclxuICAgICAgICByZWZyZXNoUGFnZSA/IGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmIDogbnVsbFxyXG4gICAgfVxyXG5cclxuXHQvKipcclxuICAgICAqIENvbXBydWViYSBzaSBsb3MgdmFsb3JlcyBkZWwgY2FuYWwgYWN0dWFsIHNvbiBpZ3VhbGVzIGEgbG9zIGluZ3Jlc2FkbyBwb3IgcGFyYW1ldHJvcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIE5vbWJyZSBkZWwgY2FuYWxcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgIExvY2FsZSBkZWwgY2FuYWxcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHNpIGVzIGVsIG1pc21vIGNhbmFsLCBGYWxzZSBjYXNvIGNvbnRyYXJpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzYW1lQ2hhbm5lbCA9IChjaGFubmVsOnN0cmluZywgbG9jYWxlOnN0cmluZyk6Ym9vbGVhbiA9PiAoY2hhbm5lbCA9PSB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCkgJiYgKGxvY2FsZSA9PSB0aGlzLl9hcGlDb25zdHMuTE9DQUxFKVxyXG5cclxuXHQvKipcclxuICAgICAqIENhbWJpYSBkZSBjYW5hbFxyXG4gICAgICogQHBhcmFtIGNoYW5uZWxDb25maWcgZGViZSBzZXIgdW4gb2JqZXRvIHF1ZSBjb250ZW5nYSBhbCBtZW5vcyBsYXMga2V5cyBjaGFubmVsIHkgbG9jYWxlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNoYW5nZUNoYW5uZWwgPSAoY2hhbm5lbENvbmZpZzphbnkpID0+IHtcclxuICAgICAgICB0aGlzLl9jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyh7XHJcbiAgICAgICAgICAgIGNoYW5uZWw6IGNoYW5uZWxDb25maWcuY2hhbm5lbCxcclxuICAgICAgICAgICAgbG9jYWxlOiBjaGFubmVsQ29uZmlnLmxvY2FsZVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblx0Z2V0VXNlclByb2ZpbGUoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5fdXNlciAmJiBvZih0aGlzLl91c2VyKSkgfHwgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgfVxyXG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xyXG4gICAgICAgIHRoaXMuX3VzZXIgPSBuZXcgVXNlcigpO1xyXG4gICAgICAgIGlmICghdGhpcy5sb2FkVXNlckZyb21TdG9yYWdlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlciA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX3VzZXIpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==