@colijnit/transaction 12.0.3 → 12.1.1

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 (87) hide show
  1. package/app/component/core/base/default-ok-cancel-buttons.component.d.ts +13 -0
  2. package/app/component/core/base/transaction-base.component.d.ts +38 -0
  3. package/app/component/core/directive/template-wrapper.directive.d.ts +13 -0
  4. package/app/component/{shopping-cart → core}/stock-status-indicator/stock-status-indicator.component.d.ts +0 -0
  5. package/app/component/service-order/ione-service-order-module.d.ts +2 -0
  6. package/app/component/service-order/ione-service-order.component.d.ts +25 -0
  7. package/app/component/service-order/service-order.component.d.ts +48 -0
  8. package/app/component/service-order/summary/transaction-article-summary.component.d.ts +17 -0
  9. package/app/component/service-order/summary/transaction-delivery-summary.component.d.ts +20 -0
  10. package/app/component/service-order/summary/transaction-order-summary.component.d.ts +16 -0
  11. package/app/component/service-order/summary/transaction-payment-info.component.d.ts +14 -0
  12. package/app/component/service-order/summary/transaction-product-contract-summary.component.d.ts +7 -0
  13. package/app/component/service-order/summary/transaction-product-summary.component.d.ts +15 -0
  14. package/app/component/service-order/summary/transaction-service-status.component.d.ts +15 -0
  15. package/app/component/service-order/summary/transaction-service-summary.component.d.ts +15 -0
  16. package/app/component/service-order/summary/transaction-summary-block.component.d.ts +16 -0
  17. package/app/component/service-order/transaction-article-text/transaction-article-text.component.d.ts +24 -0
  18. package/app/component/service-order/transaction-header-block/transaction-header-block.component.d.ts +15 -0
  19. package/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.d.ts +16 -0
  20. package/app/component/service-order/transaction-order-lines/transaction-order-lines.component.d.ts +25 -0
  21. package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.d.ts +7 -0
  22. package/app/component/service-order/transaction-relation/transaction-relation-address.component.d.ts +22 -0
  23. package/app/component/service-order/transaction-relation/transaction-relation-edit.component.d.ts +29 -0
  24. package/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.d.ts +11 -0
  25. package/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.d.ts +26 -0
  26. package/app/component/shopping-cart/ione-shopping-cart.component.d.ts +20 -0
  27. package/app/component/shopping-cart/shopping-cart/shopping-cart.component.d.ts +2 -5
  28. package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +7 -0
  29. package/app/service/ione-connector-adapter.service.d.ts +5 -1
  30. package/app/service/transaction-event.service.d.ts +20 -0
  31. package/app/service/transaction.service.d.ts +9 -2
  32. package/bundles/colijnit-transaction.umd.js +1911 -89
  33. package/bundles/colijnit-transaction.umd.js.map +1 -1
  34. package/colijnit-transaction.d.ts +23 -1
  35. package/colijnit-transaction.metadata.json +1 -1
  36. package/css/styles.css +38 -0
  37. package/esm2015/app/component/checkout/checkout/checkout.component.js +1 -1
  38. package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +1 -1
  39. package/esm2015/app/component/checkout/checkout-overview-block/checkout-overview-block.component.js +1 -1
  40. package/esm2015/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +1 -1
  41. package/esm2015/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +4 -4
  42. package/esm2015/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.js +1 -1
  43. package/esm2015/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +1 -1
  44. package/esm2015/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +1 -1
  45. package/esm2015/app/component/checkout/ione-checkout.module.js +1 -3
  46. package/esm2015/app/component/common/icon/icon.component.js +3 -2
  47. package/esm2015/app/component/common/image-display/image-display.component.js +1 -1
  48. package/esm2015/app/component/core/base/default-ok-cancel-buttons.component.js +39 -0
  49. package/esm2015/app/component/core/base/transaction-base.component.js +121 -0
  50. package/esm2015/app/component/core/directive/template-wrapper.directive.js +69 -0
  51. package/esm2015/app/component/{shopping-cart → core}/stock-status-indicator/stock-status-indicator.component.js +2 -2
  52. package/esm2015/app/component/service-order/ione-service-order-module.js +103 -0
  53. package/esm2015/app/component/service-order/ione-service-order.component.js +98 -0
  54. package/esm2015/app/component/service-order/service-order.component.js +167 -0
  55. package/esm2015/app/component/service-order/summary/transaction-article-summary.component.js +55 -0
  56. package/esm2015/app/component/service-order/summary/transaction-delivery-summary.component.js +59 -0
  57. package/esm2015/app/component/service-order/summary/transaction-order-summary.component.js +43 -0
  58. package/esm2015/app/component/service-order/summary/transaction-payment-info.component.js +35 -0
  59. package/esm2015/app/component/service-order/summary/transaction-product-contract-summary.component.js +38 -0
  60. package/esm2015/app/component/service-order/summary/transaction-product-summary.component.js +41 -0
  61. package/esm2015/app/component/service-order/summary/transaction-service-status.component.js +37 -0
  62. package/esm2015/app/component/service-order/summary/transaction-service-summary.component.js +38 -0
  63. package/esm2015/app/component/service-order/summary/transaction-summary-block.component.js +53 -0
  64. package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +183 -0
  65. package/esm2015/app/component/service-order/transaction-header-block/transaction-header-block.component.js +83 -0
  66. package/esm2015/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.js +76 -0
  67. package/esm2015/app/component/service-order/transaction-order-lines/transaction-order-lines.component.js +71 -0
  68. package/esm2015/app/component/service-order/transaction-order-totals/transaction-order-totals.component.js +37 -0
  69. package/esm2015/app/component/service-order/transaction-relation/transaction-relation-address.component.js +116 -0
  70. package/esm2015/app/component/service-order/transaction-relation/transaction-relation-edit.component.js +225 -0
  71. package/esm2015/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.js +172 -0
  72. package/esm2015/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.js +120 -0
  73. package/esm2015/app/component/shopping-cart/ione-shopping-cart.component.js +52 -7
  74. package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +4 -6
  75. package/esm2015/app/component/shopping-cart/shopping-cart/shopping-cart.component.js +16 -19
  76. package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +1 -1
  77. package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +64 -4
  78. package/esm2015/app/service/ione-connector-adapter.service.js +60 -8
  79. package/esm2015/app/service/transaction-event.service.js +7 -1
  80. package/esm2015/app/service/transaction.service.js +87 -19
  81. package/esm2015/assets/dictionary/text.properties.js +33 -1
  82. package/esm2015/colijnit-transaction.js +24 -2
  83. package/esm2015/public_api.js +3 -1
  84. package/fesm2015/colijnit-transaction.js +2284 -76
  85. package/fesm2015/colijnit-transaction.js.map +1 -1
  86. package/package.json +17 -17
  87. package/public_api.d.ts +2 -0
@@ -4,10 +4,8 @@ import { TransactionService } from "../../../service/transaction.service";
4
4
  import { OrderDiscountType } from "../../../enum/order-discount-type.enum";
5
5
  import { SortDirection } from "@colijnit/transactionapi/build/enum/sort-direction";
6
6
  import { SortType } from "@colijnit/transactionapi/build/enum/sort-type.enum";
7
- import { SortUtils } from "@colijnit/transactionapi/build/utils/sort-utils";
8
- import { CoreComponentsIcon, IconCacheService } from "@colijnit/corecomponents_v12";
7
+ import { CoreComponentsIcon, CoSidebarComponent, IconCacheService } from "@colijnit/corecomponents_v12";
9
8
  import { TransactionEventService } from "../../../service/transaction-event.service";
10
- import { CoSidebarComponent } from "@colijnit/corecomponents_v12";
11
9
  import { ContentViewMode } from "../../../enum/content-view-mode.enum";
12
10
  import { PositionGridRow } from "../../../../enum/position-grid-row.enum";
13
11
  export class ShoppingCartComponent {
@@ -36,7 +34,7 @@ export class ShoppingCartComponent {
36
34
  });
37
35
  this.setFilteredCollection(this.service.currentLines);
38
36
  const mediaQuery = "(min-width: 500px)";
39
- this.columns.push({ field: "lineNr", headerText: this._dictionary.get("NR"), allowFiltering: false }, { field: "articleNumber", headerText: this._dictionary.get("ARTICLE_NR") }, { field: "goodDescription", headerText: this._dictionary.get("GOOD_DESCRIPTION"), hideAtMedia: mediaQuery }, { field: "amount", headerText: this._dictionary.get("NUMBER"), textAlign: "Right" }, { field: "price", headerText: this._dictionary.get("PRICE"), format: "C2", textAlign: "Right" }, { field: "priceListCode", headerText: this._dictionary.get("PRICE_LIST"), hideAtMedia: mediaQuery }, { field: "lineDiscount", headerText: this._dictionary.get("DISCOUNT_PERCENTAGE"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "specialDiscount", headerText: this._dictionary.get("SPECIAL_DISCOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "discountAmount", headerText: this._dictionary.get("DISCOUNT_AMOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "surchargeAmount", headerText: this._dictionary.get("SURCHARGE_AMOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "assemblyCost", headerText: this._dictionary.get("ASSEMBLY_COSTS"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "grossLineTotal", headerText: this._dictionary.get("TOTAL_GROSS"), format: "C2", visible: true, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "lineTotalDiscountAmount", headerText: this._dictionary.get("DISCOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "netLineTotal", headerText: this._dictionary.get("SUBTOTAL"), format: "C2", visible: false, textAlign: "Right" }, { field: "vatId", headerText: this._dictionary.get("VAT"), hideAtMedia: mediaQuery, visible: false, textAlign: "Right" }, { field: "priceDeclaration", headerText: this._dictionary.get("TRANSACTION_PRICE_DECLARATION"), visible: false, hideAtMedia: mediaQuery }, { field: "netto", headerText: this._dictionary.get("NETT"), format: "C2", hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "warehouseNumber", headerText: this._dictionary.get("WAREHOUSE"), hideAtMedia: mediaQuery, textAlign: "Right" });
37
+ this.columns.push({ field: "lineNr", headerText: this._dictionary.get("NR"), allowFiltering: false, allowSorting: false }, { field: "text", headerText: this._dictionary.get("TEXT") }, { field: "articleNumber", headerText: this._dictionary.get("ARTICLE_NR") }, { field: "goodDescription", headerText: this._dictionary.get("GOOD_DESCRIPTION"), hideAtMedia: mediaQuery }, { field: "amount", headerText: this._dictionary.get("NUMBER"), textAlign: "Right" }, { field: "price", headerText: this._dictionary.get("PRICE"), format: "C2", textAlign: "Right" }, { field: "priceListCode", headerText: this._dictionary.get("PRICE_LIST"), hideAtMedia: mediaQuery }, { field: "lineDiscount", headerText: this._dictionary.get("DISCOUNT_PERCENTAGE"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "specialDiscount", headerText: this._dictionary.get("SPECIAL_DISCOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "discountAmount", headerText: this._dictionary.get("DISCOUNT_AMOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "surchargeAmount", headerText: this._dictionary.get("SURCHARGE_AMOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "assemblyCost", headerText: this._dictionary.get("ASSEMBLY_COSTS"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "grossLineTotal", headerText: this._dictionary.get("TOTAL_GROSS"), format: "C2", visible: true, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "lineTotalDiscountAmount", headerText: this._dictionary.get("DISCOUNT"), format: "C2", visible: false, hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "netLineTotal", headerText: this._dictionary.get("SUBTOTAL"), format: "C2", visible: false, textAlign: "Right" }, { field: "vatId", headerText: this._dictionary.get("VAT"), hideAtMedia: mediaQuery, visible: false, textAlign: "Right" }, { field: "priceDeclaration", headerText: this._dictionary.get("TRANSACTION_PRICE_DECLARATION"), visible: false, hideAtMedia: mediaQuery }, { field: "netto", headerText: this._dictionary.get("NETT"), format: "C2", hideAtMedia: mediaQuery, textAlign: "Right" }, { field: "warehouseNumber", headerText: this._dictionary.get("WAREHOUSE"), hideAtMedia: mediaQuery, textAlign: "Right" });
40
38
  this.contextMenuItems.push({ text: this._dictionary.get("ADD_ARTICLE_LINE_UP"), target: ".e-content", id: "articleLineUp" }, { text: this._dictionary.get("ADD_ARTICLE_LINE_DOWN"), target: ".e-content", id: "articleLineDown" }, { text: this._dictionary.get("ADD_ARTICLE_TEXT_LINE_UP"), target: ".e-content", id: "articleTextLineUp" }, { text: this._dictionary.get("ADD_ARTICLE_TEXT_LINE_DOWN"), target: ".e-content", id: "articleTextLineDown" });
41
39
  }
42
40
  get filteredCollection() {
@@ -50,7 +48,7 @@ export class ShoppingCartComponent {
50
48
  property: "lineNr",
51
49
  type: SortType.Number
52
50
  };
53
- SortUtils.SortObjectArray(this._filteredCollection, [sortByLineNr]);
51
+ // SortUtils.SortObjectArray(this._filteredCollection, [sortByLineNr]);
54
52
  }
55
53
  ngAfterViewInit() {
56
54
  this.hideSidebar();
@@ -131,28 +129,27 @@ export class ShoppingCartComponent {
131
129
  const lineNr = this._selectedRow.lineNr;
132
130
  switch (args.item.id) {
133
131
  case "articleLineUp":
134
- this._transactionEvents.addArticleLine.next({ lineNr: lineNr, beforeOrAfter: PositionGridRow.Before });
132
+ // this._transactionEvents.addArticleLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});
133
+ this._transactionEvents.addArticleLineAt.next({ sku: "iPod", amount: 1, lineNr: lineNr, beforeOrAfter: PositionGridRow.Before });
135
134
  break;
136
135
  case "articleLineDown":
137
- this._transactionEvents.addArticleLine.next({ lineNr: lineNr, beforeOrAfter: PositionGridRow.After });
136
+ // this._transactionEvents.addArticleLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.After});
137
+ this._transactionEvents.addArticleLineAt.next({ sku: "iPod", amount: 1, lineNr: lineNr, beforeOrAfter: PositionGridRow.After });
138
138
  break;
139
139
  case "articleTextLineUp":
140
- this._transactionEvents.addTextLine.next({ lineNr: lineNr, beforeOrAfter: PositionGridRow.Before });
140
+ // this._transactionEvents.addTextLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.Before});
141
+ this._transactionEvents.addTextLineAt.next({ text: "textregel before", lineNr: lineNr, beforeOrAfter: PositionGridRow.Before });
141
142
  break;
142
143
  case "articleTextLineDown":
143
- this._transactionEvents.addTextLine.next({ lineNr: lineNr, beforeOrAfter: PositionGridRow.After });
144
+ // this._transactionEvents.addTextLine.next({lineNr: lineNr, beforeOrAfter: PositionGridRow.After});
145
+ this._transactionEvents.addTextLineAt.next({ text: "textregel after", lineNr: lineNr, beforeOrAfter: PositionGridRow.After });
144
146
  break;
145
147
  }
146
148
  }
147
- rowDragStart(args) {
148
- // @ts-ignore
149
- // tslint:disable-next-line:no-console
150
- console.log("Drag start -> Nummer: " + args.data[0].Nummer + ", Index: " + args.fromIndex);
151
- }
152
149
  rowDrop(args) {
153
- // @ts-ignore
154
- // tslint:disable-next-line:no-console
155
- console.log("Drop -> Nummer: " + args.data[0].Nummer + ", drag Index: " + args.fromIndex + ", drop Index: " + args.dropIndex);
150
+ this._transactionEvents.changeLineSequence.next({ fromIndex: args.fromIndex, toIndex: args.dropIndex });
151
+ // Transaction lines will be reloaded by previous action on success, not by failure. So, cancel the drop in all cases.
152
+ args.cancel = true;
156
153
  }
157
154
  }
158
155
  ShoppingCartComponent.decorators = [
@@ -187,12 +184,12 @@ ShoppingCartComponent.decorators = [
187
184
  [data]="filteredCollection"
188
185
  [rowDragAndDropEnabled]="true"
189
186
  [contextMenuItems]="contextMenuItems"
187
+ [sortingEnabled]="false"
190
188
  [columns]="columns"
191
189
  [pagingEnabled]="'true'"
192
190
  [maxNumberOfRows]="'20'"
193
191
  (rowsSelected)="handleRowsSelected($event)"
194
192
  (contextMenuItemClick)="menuItemClick($event)"
195
- (rowDragStartEvent)="rowDragStart($event)"
196
193
  (rowDropEvent)="rowDrop($event)"
197
194
  ></co-grid>
198
195
  </div>
@@ -294,4 +291,4 @@ ShoppingCartComponent.propDecorators = {
294
291
  checkout: [{ type: Output }],
295
292
  overview: [{ type: Output }]
296
293
  };
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudC9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixpQkFBaUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBVSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFHekUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM1RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFFMUUsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDbEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBSXJFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQTZIeEUsTUFBTSxPQUFPLHFCQUFxQjtJQW1FaEMsWUFDUyxnQkFBa0MsRUFDakMsV0FBOEIsRUFDL0IsT0FBMkIsRUFDMUIsa0JBQTJDLEVBQzNDLGVBQWtDO1FBSm5DLHFCQUFnQixH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QUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7OztZQWpXRixTQUFTLFNBQUM7Z0JBQ1QsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlIVDs7YUFLRjs7O1lBbkkyQixnQkFBZ0I7WUFUcEMsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQVNsQix1QkFBdUI7WUFYUixpQkFBaUI7OzsrQkFxSnJDLFNBQVMsU0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7MEJBRy9DLEtBQUssWUFDTCxXQUFXLFNBQUMsaUJBQWlCOzJCQUc3QixLQUFLLFlBQ0wsV0FBVyxTQUFDLGdCQUFnQjtpQ0FHNUIsS0FBSztpQ0FHTCxLQUFLO2tDQUdMLEtBQUs7d0JBR0wsTUFBTTt1QkFHTixNQUFNO3VCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7T3JkZXJEaXNjb3VudFR5cGV9IGZyb20gXCIuLi8uLi8uLi9lbnVtL29yZGVyLWRpc2NvdW50LXR5cGUuZW51bVwiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3RcIjtcbmltcG9ydCB7U29ydFByb3BlcnR5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2ludGVyZmFjZS9zb3J0LXByb3BlcnR5XCI7XG5pbXBvcnQge1NvcnREaXJlY3Rpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zb3J0LWRpcmVjdGlvblwiO1xuaW1wb3J0IHtTb3J0VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NvcnQtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1NvcnRVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9zb3J0LXV0aWxzXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29uLCBJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtDb1NpZGViYXJDb21wb25lbnR9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5pbXBvcnQge0NvbnRlbnRWaWV3TW9kZX0gZnJvbSBcIi4uLy4uLy4uL2VudW0vY29udGVudC12aWV3LW1vZGUuZW51bVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ib1wiO1xuaW1wb3J0IHtDb250ZXh0TWVudUl0ZW1Nb2RlbH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XG5pbXBvcnQge01lbnVFdmVudEFyZ3N9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1uYXZpZ2F0aW9uc1wiO1xuaW1wb3J0IHtQb3NpdGlvbkdyaWRSb3d9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL3Bvc2l0aW9uLWdyaWQtcm93LmVudW1cIjtcbmltcG9ydCB7Um93RHJhZ0V2ZW50QXJnc30gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJzaG9wcGluZy1jYXJ0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNhcnQtaGVhZGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNhcnQtaGVhZGVyLWxhYmVsXCIgW3RleHRDb250ZW50XT1cImdldENhcnRMYWJlbCgpXCI+PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cInZpZXctbW9kZS1idXR0b25zXCI+XG4gICAgICAgIDxjby1idXR0b24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29uVGhpY2tMaW5lcylcIlxuICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInTElTVF9WSUVXJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGhpcy5hY3RpdmVWaWV3TW9kZSA9IHZpZXdNb2Rlcy5MaXN0XCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWFuZ2xlIHdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M9XCJtZWRpdW0gbGlnaHRcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgPGNvLWJ1dHRvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25UaGluTGluZXMpXCJcbiAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0dSSURfVklFVycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMuYWN0aXZlVmlld01vZGUgPSB2aWV3TW9kZXMuR3JpZFwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlhbmdsZSB3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwibWVkaXVtIGxpZ2h0XCI+PC9jby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FydC1saW5lc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtbGlzdC13cmFwcGVyXCIgKm5nSWY9XCJhY3RpdmVWaWV3TW9kZSA9PT0gdmlld01vZGVzLkxpc3RcIiBmeEZsZXg9XCJjb2x1bW5cIj5cbiAgICAgICAgPHNob3BwaW5nLWNhcnQtbGluZSBbb3ZlcmxheU1vZGVdPVwib3ZlcmxheU1vZGVcIiBbb3ZlcnZpZXdNb2RlXT1cIm92ZXJ2aWV3TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxpbmUgb2YgZmlsdGVyZWRDb2xsZWN0aW9uOyB0cmFja0J5OnRyYWNrQnlGbjtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lXT1cImxpbmVcIlxuICAgICAgICA+PC9zaG9wcGluZy1jYXJ0LWxpbmU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWxpc3Qtd3JhcHBlclwiICpuZ0lmPVwiYWN0aXZlVmlld01vZGUgPT09IHZpZXdNb2Rlcy5HcmlkXCIgZnhGbGV4PVwiY29sdW1uXCI+XG4gICAgICAgIDxjby1ncmlkXG4gICAgICAgICAgW2RhdGFdPVwiZmlsdGVyZWRDb2xsZWN0aW9uXCJcbiAgICAgICAgICBbcm93RHJhZ0FuZERyb3BFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgIFtwYWdpbmdFbmFibGVkXT1cIid0cnVlJ1wiXG4gICAgICAgICAgW21heE51bWJlck9mUm93c109XCInMjAnXCJcbiAgICAgICAgICAocm93c1NlbGVjdGVkKT1cImhhbmRsZVJvd3NTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoY29udGV4dE1lbnVJdGVtQ2xpY2spPVwibWVudUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAocm93RHJhZ1N0YXJ0RXZlbnQpPVwicm93RHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICAgICAgIChyb3dEcm9wRXZlbnQpPVwicm93RHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPjwvY28tZ3JpZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzaG9wcGluZy1jYXJ0LXRvdGFsc1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInT1JERVJfR1JPU1MnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJzZXJ2aWNlLmN1cnJlbnRUb3RhbHM/Lmdyb3NzQW1vdW50IHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiICpuZ0lmPVwic2VydmljZS5jdXJyZW50VG90YWxzPy5kaXNjb3VudEFtb3VudFwiPlxuICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ0RJU0NPVU5UX0FNT1VOVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNlcnZpY2UuY3VycmVudFRvdGFscz8uZGlzY291bnRBbW91bnQgfCBjb0N1cnJlbmN5OiB0cnVlXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgKm5nSWY9XCJzZXJ2aWNlLmN1cnJlbnRUb3RhbHM/LnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnRcIj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNlcnZpY2UuY3VycmVudFRvdGFscz8udHJhbnNhY3Rpb25EaXNjb3VudEFtb3VudCB8IGNvQ3VycmVuY3k6IHRydWVcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiAqbmdJZj1cInNlcnZpY2UuY3VycmVudFRvdGFscz8udHJhbnNhY3Rpb25EaXNjb3VudFBlcmNlbnRhZ2VcIj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVF9QRVJDJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwic2VydmljZS5jdXJyZW50VG90YWxzPy50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZS50b1N0cmluZygpIHwgYXBwZW5kOicgJSdcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidPUkRFUl9ORVQnfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNlcnZpY2UuY3VycmVudFRvdGFscz8ubmV0QW1vdW50IHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGEgKGNsaWNrKT1cImFkZERpc2NvdW50KClcIiBbdGV4dENvbnRlbnRdPVwiJ0FERF9ESVNDT1VOVFMnIHwgbG9jYWxpemVcIj48L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNob3BwaW5nLWNhcnQtcm93LWVuZFwiPlxuICAgICAgPGNvLWJ1dHRvbiAqbmdJZj1cIiFoaWRlT3ZlcnZpZXdCdXR0b25cIiBbbGFiZWxdPVwiJ09WRVJWSUVXJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJ2aWV3LmVtaXQoKVwiXG4gICAgICA+PC9jby1idXR0b24+XG4gICAgICA8Y28tYnV0dG9uICpuZ0lmPVwiIWhpZGVDbG9zZUNhcnRCdXR0b25cIltsYWJlbF09XCInU0hPUFBJTkdfQ0FSVF9SRVNVTUUnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VDYXJ0LmVtaXQoKVwiXG4gICAgICA+PC9jby1idXR0b24+XG4gICAgICA8Y28tYnV0dG9uICpuZ0lmPVwiIWhpZGVDaGVja291dEJ1dHRvblwiIFtsYWJlbF09XCInU0hPUFBJTkdfQ0FSVF9DSEVDS09VVCcgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VydmljZS5hcnRpY2xlQW1vdW50XCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrb3V0LmVtaXQoKVwiPjwvY28tYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGNvLXNpZGViYXIgI2Rpc2NvdW50c1NpZGViYXIgaXNPcGVuPVwiZmFsc2VcIiAqbmdJZj1cInNob3dEaXNjb3VudHNTaWRlYmFyXCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjEwcHhcIj5cbiAgICAgICAgICA8Y28tYnV0dG9uICBjbGFzcz1cInJlY3Rhbmd1bGFyXCIgW2xhYmVsXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVF9QRVJDJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlLCAnVFJBTlNBQ1RJT05fRElTQ09VTlRfUEVSQycpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInJlY3Rhbmd1bGFyXCIgW2xhYmVsXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCd8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRBbW91bnQsICdUUkFOU0FDVElPTl9ESVNDT1VOVCcpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInJlY3Rhbmd1bGFyXCIgW2xhYmVsXT1cIidUUkFOU0FDVElPTl9UT1RBTCd8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbCwgJ1RSQU5TQUNUSU9OX1RPVEFMJylcIj48L2NvLWJ1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2NvLXNpZGViYXI+XG5cbiAgICA8Y28tZGlhbG9nIFt2aXNpYmxlXT1cImlucHV0RGlzY291bnRzXCI+XG4gICAgICA8bmctY29udGFpbmVyIGhlYWRlcj57eyBkaXNjb3VudEhlYWRlciB8IGxvY2FsaXplIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxjby1mb3JtPlxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cImRpc2NvdW50VHlwZSA9PT0gb3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVFJBTlNBQ1RJT05fRElTQ09VTlRfUEVSQycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJkaXNjb3VudFR5cGUgPT09IG9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50XCJcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInRyYW5zYWN0aW9uRGlzY291bnRBbW91bnRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCcgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJkaXNjb3VudFR5cGUgPT09IG9yZGVyRGlzY291bnRUeXBlLk9yZGVyVG90YWxcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgWyhtb2RlbCldPVwidHJhbnNhY3Rpb25Ub3RhbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RSQU5TQUNUSU9OX1RPVEFMJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cbiAgICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidDQU5DRUwnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiaW5wdXREaXNjb3VudHMgPSBmYWxzZVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ09LJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uSW5wdXREaXNjb3VudHNPa0NsaWNrKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jby1mb3JtPlxuICAgIDwvY28tZGlhbG9nPlxuICBgLFxuICBzdHlsZVVybHM6IFtcbiAgICBcIi4vc2hvcHBpbmctY2FydC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIFwiLi4vc2hvcHBpbmctY2FydC1vdmVydmlldy9zaG9wcGluZy1jYXJ0LW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzXCIsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hvcHBpbmdDYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHJlYWRvbmx5IG9yZGVyRGlzY291bnRUeXBlOiB0eXBlb2YgT3JkZXJEaXNjb3VudFR5cGUgPSBPcmRlckRpc2NvdW50VHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IGljb25UaGlja0xpbmVzOiBDb3JlQ29tcG9uZW50c0ljb24gPSBDb3JlQ29tcG9uZW50c0ljb24uVGhpY2tMaW5lcztcbiAgcHVibGljIHJlYWRvbmx5IGljb25UaGluTGluZXM6IENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbi5UaGluTGluZXM7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3TW9kZXM6IHR5cGVvZiBDb250ZW50Vmlld01vZGUgPSBDb250ZW50Vmlld01vZGU7XG5cblxuICBAVmlld0NoaWxkKENvU2lkZWJhckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBkaXNjb3VudHNTaWRlYmFyOiBDb1NpZGViYXJDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3Mub3ZlcmxheWVkXCIpXG4gIHB1YmxpYyBvdmVybGF5TW9kZTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5vdmVydmlld1wiKVxuICBwdWJsaWMgb3ZlcnZpZXdNb2RlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRlT3ZlcnZpZXdCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZUNoZWNrb3V0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGVDbG9zZUNhcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNsb3NlQ2FydDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2hlY2tvdXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG92ZXJ2aWV3OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCBmaWx0ZXJlZENvbGxlY3Rpb24oKTogVHJhbnNhY3Rpb25MaW5lSW5mb1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHNldEZpbHRlcmVkQ29sbGVjdGlvbih2YWx1ZTogQnVzaW5lc3NPYmplY3RbXSk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlcmVkQ29sbGVjdGlvbiA9ICh2YWx1ZSBhcyBUcmFuc2FjdGlvbkxpbmVJbmZvW10pO1xuICAgIGNvbnN0IHNvcnRCeUxpbmVOcjogU29ydFByb3BlcnR5ID0ge1xuICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uLkFzY2VuZGluZyxcbiAgICAgIHByb3BlcnR5OiBcImxpbmVOclwiLFxuICAgICAgdHlwZTogU29ydFR5cGUuTnVtYmVyfTtcbiAgICBTb3J0VXRpbHMuU29ydE9iamVjdEFycmF5KHRoaXMuX2ZpbHRlcmVkQ29sbGVjdGlvbiwgW3NvcnRCeUxpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGRpc2NvdW50SGVhZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBpbnB1dERpc2NvdW50czogYm9vbGVhbjtcbiAgcHVibGljIHRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQ6IG51bWJlcjtcbiAgcHVibGljIHRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlOiBudW1iZXI7XG4gIHB1YmxpYyB0cmFuc2FjdGlvblRvdGFsOiBudW1iZXI7XG4gIHB1YmxpYyBkaXNjb3VudFR5cGU6IE9yZGVyRGlzY291bnRUeXBlO1xuXG4gIHB1YmxpYyBhY3RpdmVWaWV3TW9kZTogQ29udGVudFZpZXdNb2RlID0gQ29udGVudFZpZXdNb2RlLkxpc3Q7XG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb250ZXh0TWVudUl0ZW1zOiBDb250ZXh0TWVudUl0ZW1Nb2RlbFtdID0gW107XG5cbiAgcHVibGljIHNob3dEaXNjb3VudHNTaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpbHRlcmVkQ29sbGVjdGlvbjogVHJhbnNhY3Rpb25MaW5lSW5mb1tdO1xuICBwcml2YXRlIF90cmFuc2FjdGlvblVwZGF0ZWQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3c6IFRyYW5zYWN0aW9uTGluZUluZm87XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZGljdGlvbmFyeTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgcHVibGljIHNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkV2ZW50czogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uVXBkYXRlZCA9IHRoaXMuc2VydmljZS50cmFuc2FjdGlvblVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0RmlsdGVyZWRDb2xsZWN0aW9uKHRoaXMuc2VydmljZS5jdXJyZW50TGluZXMpO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0RmlsdGVyZWRDb2xsZWN0aW9uKHRoaXMuc2VydmljZS5jdXJyZW50TGluZXMpO1xuXG4gICAgY29uc3QgbWVkaWFRdWVyeTogc3RyaW5nID0gXCIobWluLXdpZHRoOiA1MDBweClcIjtcblxuICAgIHRoaXMuY29sdW1ucy5wdXNoKFxuICAgICAge2ZpZWxkOiBcImxpbmVOclwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIk5SXCIpLCBhbGxvd0ZpbHRlcmluZzogZmFsc2V9LFxuICAgICAge2ZpZWxkOiBcImFydGljbGVOdW1iZXJcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJBUlRJQ0xFX05SXCIpfSxcbiAgICAgIHtmaWVsZDogXCJnb29kRGVzY3JpcHRpb25cIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJHT09EX0RFU0NSSVBUSU9OXCIpLCBoaWRlQXRNZWRpYTogbWVkaWFRdWVyeX0sXG4gICAgICB7ZmllbGQ6IFwiYW1vdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiTlVNQkVSXCIpLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwicHJpY2VcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJQUklDRVwiKSwgIGZvcm1hdDogXCJDMlwiLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwicHJpY2VMaXN0Q29kZVwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIlBSSUNFX0xJU1RcIiksIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5fSxcbiAgICAgIHtmaWVsZDogXCJsaW5lRGlzY291bnRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJESVNDT1VOVF9QRVJDRU5UQUdFXCIpLCBmb3JtYXQ6IFwiQzJcIiwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwic3BlY2lhbERpc2NvdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiU1BFQ0lBTF9ESVNDT1VOVFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCBoaWRlQXRNZWRpYTogbWVkaWFRdWVyeSwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxuICAgICAge2ZpZWxkOiBcImRpc2NvdW50QW1vdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiRElTQ09VTlRfQU1PVU5UXCIpLCBmb3JtYXQ6IFwiQzJcIiwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwic3VyY2hhcmdlQW1vdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiU1VSQ0hBUkdFX0FNT1VOVFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCBoaWRlQXRNZWRpYTogbWVkaWFRdWVyeSwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxuICAgICAge2ZpZWxkOiBcImFzc2VtYmx5Q29zdFwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkFTU0VNQkxZX0NPU1RTXCIpLCBmb3JtYXQ6IFwiQzJcIiwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwiZ3Jvc3NMaW5lVG90YWxcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJUT1RBTF9HUk9TU1wiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IHRydWUsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwibGluZVRvdGFsRGlzY291bnRBbW91bnRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJESVNDT1VOVFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCAgaGlkZUF0TWVkaWE6IG1lZGlhUXVlcnksIHRleHRBbGlnbjogXCJSaWdodFwifSxcbiAgICAgIHtmaWVsZDogXCJuZXRMaW5lVG90YWxcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJTVUJUT1RBTFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwidmF0SWRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJWQVRcIiksIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB2aXNpYmxlOiBmYWxzZSwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxuICAgICAge2ZpZWxkOiBcInByaWNlRGVjbGFyYXRpb25cIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJUUkFOU0FDVElPTl9QUklDRV9ERUNMQVJBVElPTlwiKSwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5fSxcbiAgICAgIHtmaWVsZDogXCJuZXR0b1wiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIk5FVFRcIiksIGZvcm1hdDogXCJDMlwiLCAgaGlkZUF0TWVkaWE6IG1lZGlhUXVlcnksIHRleHRBbGlnbjogXCJSaWdodFwifSxcbiAgICAgIHtmaWVsZDogXCJ3YXJlaG91c2VOdW1iZXJcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJXQVJFSE9VU0VcIiksIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgKTtcblxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5wdXNoKFxuICAgICAgeyB0ZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkFERF9BUlRJQ0xFX0xJTkVfVVBcIiksIHRhcmdldDogXCIuZS1jb250ZW50XCIsIGlkOiBcImFydGljbGVMaW5lVXBcIiB9LFxuICAgICAgeyB0ZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkFERF9BUlRJQ0xFX0xJTkVfRE9XTlwiKSwgdGFyZ2V0OiBcIi5lLWNvbnRlbnRcIiwgaWQ6IFwiYXJ0aWNsZUxpbmVEb3duXCIgfSxcbiAgICAgIHsgdGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJBRERfQVJUSUNMRV9URVhUX0xJTkVfVVBcIiksIHRhcmdldDogXCIuZS1jb250ZW50XCIsIGlkOiBcImFydGljbGVUZXh0TGluZVVwXCIgfSxcbiAgICAgIHsgdGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJBRERfQVJUSUNMRV9URVhUX0xJTkVfRE9XTlwiKSwgdGFyZ2V0OiBcIi5lLWNvbnRlbnRcIiwgaWQ6IFwiYXJ0aWNsZVRleHRMaW5lRG93blwiIH1cbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVNpZGViYXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uVXBkYXRlZC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldENhcnRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIlNIT1BQSU5HX0NBUlRfT1ZFUlZJRVdcIiwgdHJ1ZSkgKyBcIihcIiArIHRoaXMuc2VydmljZS5hcnRpY2xlQW1vdW50LnRvU3RyaW5nKCkgKyBcIilcIjtcblxuICB9XG5cbiAgcHVibGljIGFkZERpc2NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1NpZGViYXIoKTtcblxuICAgIC8vIFRPRE9cbiAgICAvLyB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlID0gdGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZTtcbiAgICAvLyB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQgPSB0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQ7XG4gICAgLy8gdGhpcy50cmFuc2FjdGlvblRvdGFsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uU3RhcnREaXNjb3VudElucHV0KGRpc2NvdW50VHlwZTogT3JkZXJEaXNjb3VudFR5cGUsIGhlYWRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuXG4gICAgdGhpcy5kaXNjb3VudFR5cGUgPSBkaXNjb3VudFR5cGU7XG4gICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IGhlYWRlcjtcbiAgICB0aGlzLmlucHV0RGlzY291bnRzID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuU2hvcHBpbmdDYXJ0TW9kdWxlKCk6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLm9wZW5TaG9wcGluZ0NhcnRNb2R1bGUubmV4dCgpO1xuICAgIHRoaXMuY2xvc2VDYXJ0LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNjb3VudEhlYWRlcihkaXNjb3VudFR5cGU6IE9yZGVyRGlzY291bnRUeXBlKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLmRpc2NvdW50VHlwZSkge1xuICAgICAgY2FzZSBPcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudFBlcmNlbnRhZ2U6XG4gICAgICAgIHRoaXMuZGlzY291bnRIZWFkZXIgPSB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkRJU0NPVU5UX1BFUkNFTlRBR0VcIiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudEFtb3VudDpcbiAgICAgICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiRElTQ09VTlRfQU1PVU5UXCIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbDpcbiAgICAgICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiT1JERVJfVE9UQUxcIiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0RGlzY291bnRzT2tDbGljaygpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVUb1VzZTogbnVtYmVyO1xuICAgIHN3aXRjaCAodGhpcy5kaXNjb3VudFR5cGUpIHtcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlOlxuICAgICAgICB2YWx1ZVRvVXNlID0gdGhpcy50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50OlxuICAgICAgICB2YWx1ZVRvVXNlID0gdGhpcy50cmFuc2FjdGlvbkRpc2NvdW50QW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbDpcbiAgICAgICAgdmFsdWVUb1VzZSA9IHRoaXMudHJhbnNhY3Rpb25Ub3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vVE9ETyB0aGlzLnNlcnZpY2Uuc2V0VHJhbnNhY3Rpb25EaXNjb3VudHModGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi51dWlkLCB0aGlzLmRpc2NvdW50VHlwZSwgdmFsdWVUb1VzZSk7XG4gICAgdGhpcy5pbnB1dERpc2NvdW50cyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogYW55IHtcbiAgICByZXR1cm4gbGluZS5saW5lTnI7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUm93c1NlbGVjdGVkKHJvd3M6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93ID0gcm93cy5maW5kKHggPT4geCAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93U2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEaXNjb3VudHNTaWRlYmFyID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAodGhpcy5kaXNjb3VudHNTaWRlYmFyKSB7XG4gICAgICB0aGlzLmRpc2NvdW50c1NpZGViYXIuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlU2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEaXNjb3VudHNTaWRlYmFyID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKHRoaXMuZGlzY291bnRzU2lkZWJhcikge1xuICAgICAgdGhpcy5kaXNjb3VudHNTaWRlYmFyLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWVudUl0ZW1DbGljayhhcmdzOiBNZW51RXZlbnRBcmdzKTogdm9pZCB7XG4gICAgY29uc3QgbGluZU5yOiBudW1iZXIgPSB0aGlzLl9zZWxlY3RlZFJvdy5saW5lTnI7XG4gICAgc3dpdGNoIChhcmdzLml0ZW0uaWQpIHtcbiAgICAgIGNhc2UgXCJhcnRpY2xlTGluZVVwXCI6XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLmFkZEFydGljbGVMaW5lLm5leHQoe2xpbmVOcjogbGluZU5yLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFydGljbGVMaW5lRG93blwiOlxuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50cy5hZGRBcnRpY2xlTGluZS5uZXh0KHtsaW5lTnI6IGxpbmVOciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93LkFmdGVyfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFydGljbGVUZXh0TGluZVVwXCI6XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLmFkZFRleHRMaW5lLm5leHQoe2xpbmVOcjogbGluZU5yLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFydGljbGVUZXh0TGluZURvd25cIjpcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudHMuYWRkVGV4dExpbmUubmV4dCh7bGluZU5yOiBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdy5BZnRlcn0pO1xuICAgICAgICBicmVhaztcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByb3dEcmFnU3RhcnQoYXJnczogUm93RHJhZ0V2ZW50QXJncyk6IHZvaWQge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKFwiRHJhZyBzdGFydCAtPiBOdW1tZXI6IFwiICsgYXJncy5kYXRhWzBdLk51bW1lciArIFwiLCBJbmRleDogXCIgKyBhcmdzLmZyb21JbmRleCk7XG4gIH1cblxuICBwdWJsaWMgcm93RHJvcChhcmdzOiBSb3dEcmFnRXZlbnRBcmdzKTogdm9pZCB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coXCJEcm9wIC0+IE51bW1lcjogXCIgKyBhcmdzLmRhdGFbMF0uTnVtbWVyICsgXCIsIGRyYWcgSW5kZXg6IFwiICsgYXJncy5mcm9tSW5kZXggKyBcIiwgZHJvcCBJbmRleDogXCIgKyBhcmdzLmRyb3BJbmRleCk7XG4gIH1cbn1cbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudC9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUd6RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDakYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBRTVFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUlyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUE0SHhFLE1BQU0sT0FBTyxxQkFBcUI7SUFtRWhDLFlBQ1MsZ0JBQWtDLEVBQ2pDLFdBQThCLEVBQy9CLE9BQTJCLEVBQzFCLGtCQUEyQyxFQUMzQyxlQUFrQztRQUpuQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMx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RUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFFdEcsc0hBQXNIO1FBQ3RILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7OztZQWpXRixTQUFTLFNBQUM7Z0JBQ1QsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlIVDs7YUFLRjs7O1lBakkrQyxnQkFBZ0I7WUFSeEQsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQVFsQix1QkFBdUI7WUFsQjdCLGlCQUFpQjs7OytCQTBKaEIsU0FBUyxTQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTswQkFHL0MsS0FBSyxZQUNMLFdBQVcsU0FBQyxpQkFBaUI7MkJBRzdCLEtBQUssWUFDTCxXQUFXLFNBQUMsZ0JBQWdCO2lDQUc1QixLQUFLO2lDQUdMLEtBQUs7a0NBR0wsS0FBSzt3QkFHTCxNQUFNO3VCQUdOLE1BQU07dUJBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge09yZGVyRGlzY291bnRUeXBlfSBmcm9tIFwiLi4vLi4vLi4vZW51bS9vcmRlci1kaXNjb3VudC10eXBlLmVudW1cIjtcbmltcG9ydCB7QnVzaW5lc3NPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYnVzaW5lc3Mtb2JqZWN0XCI7XG5pbXBvcnQge1NvcnRQcm9wZXJ0eX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9pbnRlcmZhY2Uvc29ydC1wcm9wZXJ0eVwiO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vc29ydC1kaXJlY3Rpb25cIjtcbmltcG9ydCB7U29ydFR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zb3J0LXR5cGUuZW51bVwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbiwgQ29TaWRlYmFyQ29tcG9uZW50LCBJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtDb250ZW50Vmlld01vZGV9IGZyb20gXCIuLi8uLi8uLi9lbnVtL2NvbnRlbnQtdmlldy1tb2RlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7Q29udGV4dE1lbnVJdGVtTW9kZWwsIFJvd0RyYWdFdmVudEFyZ3N9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xuaW1wb3J0IHtNZW51RXZlbnRBcmdzfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItbmF2aWdhdGlvbnNcIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJzaG9wcGluZy1jYXJ0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNhcnQtaGVhZGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNhcnQtaGVhZGVyLWxhYmVsXCIgW3RleHRDb250ZW50XT1cImdldENhcnRMYWJlbCgpXCI+PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cInZpZXctbW9kZS1idXR0b25zXCI+XG4gICAgICAgIDxjby1idXR0b24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29uVGhpY2tMaW5lcylcIlxuICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInTElTVF9WSUVXJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGhpcy5hY3RpdmVWaWV3TW9kZSA9IHZpZXdNb2Rlcy5MaXN0XCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWFuZ2xlIHdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M9XCJtZWRpdW0gbGlnaHRcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgPGNvLWJ1dHRvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25UaGluTGluZXMpXCJcbiAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0dSSURfVklFVycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMuYWN0aXZlVmlld01vZGUgPSB2aWV3TW9kZXMuR3JpZFwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlhbmdsZSB3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwibWVkaXVtIGxpZ2h0XCI+PC9jby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FydC1saW5lc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtbGlzdC13cmFwcGVyXCIgKm5nSWY9XCJhY3RpdmVWaWV3TW9kZSA9PT0gdmlld01vZGVzLkxpc3RcIiBmeEZsZXg9XCJjb2x1bW5cIj5cbiAgICAgICAgPHNob3BwaW5nLWNhcnQtbGluZSBbb3ZlcmxheU1vZGVdPVwib3ZlcmxheU1vZGVcIiBbb3ZlcnZpZXdNb2RlXT1cIm92ZXJ2aWV3TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxpbmUgb2YgZmlsdGVyZWRDb2xsZWN0aW9uOyB0cmFja0J5OnRyYWNrQnlGbjtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lXT1cImxpbmVcIlxuICAgICAgICA+PC9zaG9wcGluZy1jYXJ0LWxpbmU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWxpc3Qtd3JhcHBlclwiICpuZ0lmPVwiYWN0aXZlVmlld01vZGUgPT09IHZpZXdNb2Rlcy5HcmlkXCIgZnhGbGV4PVwiY29sdW1uXCI+XG4gICAgICAgIDxjby1ncmlkXG4gICAgICAgICAgW2RhdGFdPVwiZmlsdGVyZWRDb2xsZWN0aW9uXCJcbiAgICAgICAgICBbcm93RHJhZ0FuZERyb3BFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICAgIFtzb3J0aW5nRW5hYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgW3BhZ2luZ0VuYWJsZWRdPVwiJ3RydWUnXCJcbiAgICAgICAgICBbbWF4TnVtYmVyT2ZSb3dzXT1cIicyMCdcIlxuICAgICAgICAgIChyb3dzU2VsZWN0ZWQpPVwiaGFuZGxlUm93c1NlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIChjb250ZXh0TWVudUl0ZW1DbGljayk9XCJtZW51SXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChyb3dEcm9wRXZlbnQpPVwicm93RHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPjwvY28tZ3JpZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzaG9wcGluZy1jYXJ0LXRvdGFsc1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInT1JERVJfR1JPU1MnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJzZXJ2aWNlLmN1cnJlbnRUb3RhbHM/Lmdyb3NzQW1vdW50IHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiICpuZ0lmPVwic2VydmljZS5jdXJyZW50VG90YWxzPy5kaXNjb3VudEFtb3VudFwiPlxuICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ0RJU0NPVU5UX0FNT1VOVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNlcnZpY2UuY3VycmVudFRvdGFscz8uZGlzY291bnRBbW91bnQgfCBjb0N1cnJlbmN5OiB0cnVlXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgKm5nSWY9XCJzZXJ2aWNlLmN1cnJlbnRUb3RhbHM/LnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnRcIj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNlcnZpY2UuY3VycmVudFRvdGFscz8udHJhbnNhY3Rpb25EaXNjb3VudEFtb3VudCB8IGNvQ3VycmVuY3k6IHRydWVcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiAqbmdJZj1cInNlcnZpY2UuY3VycmVudFRvdGFscz8udHJhbnNhY3Rpb25EaXNjb3VudFBlcmNlbnRhZ2VcIj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVF9QRVJDJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwic2VydmljZS5jdXJyZW50VG90YWxzPy50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZS50b1N0cmluZygpIHwgYXBwZW5kOicgJSdcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidPUkRFUl9ORVQnfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInNlcnZpY2UuY3VycmVudFRvdGFscz8ubmV0QW1vdW50IHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGEgKGNsaWNrKT1cImFkZERpc2NvdW50KClcIiBbdGV4dENvbnRlbnRdPVwiJ0FERF9ESVNDT1VOVFMnIHwgbG9jYWxpemVcIj48L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNob3BwaW5nLWNhcnQtcm93LWVuZFwiPlxuICAgICAgPGNvLWJ1dHRvbiAqbmdJZj1cIiFoaWRlT3ZlcnZpZXdCdXR0b25cIiBbbGFiZWxdPVwiJ09WRVJWSUVXJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJ2aWV3LmVtaXQoKVwiXG4gICAgICA+PC9jby1idXR0b24+XG4gICAgICA8Y28tYnV0dG9uICpuZ0lmPVwiIWhpZGVDbG9zZUNhcnRCdXR0b25cIltsYWJlbF09XCInU0hPUFBJTkdfQ0FSVF9SRVNVTUUnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VDYXJ0LmVtaXQoKVwiXG4gICAgICA+PC9jby1idXR0b24+XG4gICAgICA8Y28tYnV0dG9uICpuZ0lmPVwiIWhpZGVDaGVja291dEJ1dHRvblwiIFtsYWJlbF09XCInU0hPUFBJTkdfQ0FSVF9DSEVDS09VVCcgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VydmljZS5hcnRpY2xlQW1vdW50XCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrb3V0LmVtaXQoKVwiPjwvY28tYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGNvLXNpZGViYXIgI2Rpc2NvdW50c1NpZGViYXIgaXNPcGVuPVwiZmFsc2VcIiAqbmdJZj1cInNob3dEaXNjb3VudHNTaWRlYmFyXCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjEwcHhcIj5cbiAgICAgICAgICA8Y28tYnV0dG9uICBjbGFzcz1cInJlY3Rhbmd1bGFyXCIgW2xhYmVsXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVF9QRVJDJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlLCAnVFJBTlNBQ1RJT05fRElTQ09VTlRfUEVSQycpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInJlY3Rhbmd1bGFyXCIgW2xhYmVsXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCd8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRBbW91bnQsICdUUkFOU0FDVElPTl9ESVNDT1VOVCcpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInJlY3Rhbmd1bGFyXCIgW2xhYmVsXT1cIidUUkFOU0FDVElPTl9UT1RBTCd8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbCwgJ1RSQU5TQUNUSU9OX1RPVEFMJylcIj48L2NvLWJ1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2NvLXNpZGViYXI+XG5cbiAgICA8Y28tZGlhbG9nIFt2aXNpYmxlXT1cImlucHV0RGlzY291bnRzXCI+XG4gICAgICA8bmctY29udGFpbmVyIGhlYWRlcj57eyBkaXNjb3VudEhlYWRlciB8IGxvY2FsaXplIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxjby1mb3JtPlxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cImRpc2NvdW50VHlwZSA9PT0gb3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVFJBTlNBQ1RJT05fRElTQ09VTlRfUEVSQycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJkaXNjb3VudFR5cGUgPT09IG9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50XCJcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInRyYW5zYWN0aW9uRGlzY291bnRBbW91bnRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCcgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJkaXNjb3VudFR5cGUgPT09IG9yZGVyRGlzY291bnRUeXBlLk9yZGVyVG90YWxcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgWyhtb2RlbCldPVwidHJhbnNhY3Rpb25Ub3RhbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RSQU5TQUNUSU9OX1RPVEFMJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cbiAgICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidDQU5DRUwnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiaW5wdXREaXNjb3VudHMgPSBmYWxzZVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ09LJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uSW5wdXREaXNjb3VudHNPa0NsaWNrKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jby1mb3JtPlxuICAgIDwvY28tZGlhbG9nPlxuICBgLFxuICBzdHlsZVVybHM6IFtcbiAgICBcIi4vc2hvcHBpbmctY2FydC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIFwiLi4vc2hvcHBpbmctY2FydC1vdmVydmlldy9zaG9wcGluZy1jYXJ0LW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzXCIsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hvcHBpbmdDYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHJlYWRvbmx5IG9yZGVyRGlzY291bnRUeXBlOiB0eXBlb2YgT3JkZXJEaXNjb3VudFR5cGUgPSBPcmRlckRpc2NvdW50VHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IGljb25UaGlja0xpbmVzOiBDb3JlQ29tcG9uZW50c0ljb24gPSBDb3JlQ29tcG9uZW50c0ljb24uVGhpY2tMaW5lcztcbiAgcHVibGljIHJlYWRvbmx5IGljb25UaGluTGluZXM6IENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbi5UaGluTGluZXM7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3TW9kZXM6IHR5cGVvZiBDb250ZW50Vmlld01vZGUgPSBDb250ZW50Vmlld01vZGU7XG5cblxuICBAVmlld0NoaWxkKENvU2lkZWJhckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBkaXNjb3VudHNTaWRlYmFyOiBDb1NpZGViYXJDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3Mub3ZlcmxheWVkXCIpXG4gIHB1YmxpYyBvdmVybGF5TW9kZTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5vdmVydmlld1wiKVxuICBwdWJsaWMgb3ZlcnZpZXdNb2RlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRlT3ZlcnZpZXdCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZUNoZWNrb3V0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGVDbG9zZUNhcnRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNsb3NlQ2FydDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2hlY2tvdXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG92ZXJ2aWV3OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCBmaWx0ZXJlZENvbGxlY3Rpb24oKTogVHJhbnNhY3Rpb25MaW5lSW5mb1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHNldEZpbHRlcmVkQ29sbGVjdGlvbih2YWx1ZTogQnVzaW5lc3NPYmplY3RbXSk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlcmVkQ29sbGVjdGlvbiA9ICh2YWx1ZSBhcyBUcmFuc2FjdGlvbkxpbmVJbmZvW10pO1xuICAgIGNvbnN0IHNvcnRCeUxpbmVOcjogU29ydFByb3BlcnR5ID0ge1xuICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uLkFzY2VuZGluZyxcbiAgICAgIHByb3BlcnR5OiBcImxpbmVOclwiLFxuICAgICAgdHlwZTogU29ydFR5cGUuTnVtYmVyfTtcbi8vICAgIFNvcnRVdGlscy5Tb3J0T2JqZWN0QXJyYXkodGhpcy5fZmlsdGVyZWRDb2xsZWN0aW9uLCBbc29ydEJ5TGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY291bnRIZWFkZXI6IHN0cmluZztcbiAgcHVibGljIGlucHV0RGlzY291bnRzOiBib29sZWFuO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25EaXNjb3VudEFtb3VudDogbnVtYmVyO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25EaXNjb3VudFBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgcHVibGljIHRyYW5zYWN0aW9uVG90YWw6IG51bWJlcjtcbiAgcHVibGljIGRpc2NvdW50VHlwZTogT3JkZXJEaXNjb3VudFR5cGU7XG5cbiAgcHVibGljIGFjdGl2ZVZpZXdNb2RlOiBDb250ZW50Vmlld01vZGUgPSBDb250ZW50Vmlld01vZGUuTGlzdDtcbiAgcHVibGljIGNvbHVtbnM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGNvbnRleHRNZW51SXRlbXM6IENvbnRleHRNZW51SXRlbU1vZGVsW10gPSBbXTtcblxuICBwdWJsaWMgc2hvd0Rpc2NvdW50c1NpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmlsdGVyZWRDb2xsZWN0aW9uOiBUcmFuc2FjdGlvbkxpbmVJbmZvW107XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uVXBkYXRlZDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9zZWxlY3RlZFJvdzogVHJhbnNhY3Rpb25MaW5lSW5mbztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uRXZlbnRzOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25VcGRhdGVkID0gdGhpcy5zZXJ2aWNlLnRyYW5zYWN0aW9uVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRGaWx0ZXJlZENvbGxlY3Rpb24odGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lcyk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRGaWx0ZXJlZENvbGxlY3Rpb24odGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lcyk7XG5cbiAgICBjb25zdCBtZWRpYVF1ZXJ5OiBzdHJpbmcgPSBcIihtaW4td2lkdGg6IDUwMHB4KVwiO1xuXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goXG4gICAgICB7ZmllbGQ6IFwibGluZU5yXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiTlJcIiksIGFsbG93RmlsdGVyaW5nOiBmYWxzZSwgYWxsb3dTb3J0aW5nOiBmYWxzZX0sXG4gICAgICB7ZmllbGQ6IFwidGV4dFwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIlRFWFRcIil9LFxuICAgICAge2ZpZWxkOiBcImFydGljbGVOdW1iZXJcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJBUlRJQ0xFX05SXCIpfSxcbiAgICAgIHtmaWVsZDogXCJnb29kRGVzY3JpcHRpb25cIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJHT09EX0RFU0NSSVBUSU9OXCIpLCBoaWRlQXRNZWRpYTogbWVkaWFRdWVyeX0sXG4gICAgICB7ZmllbGQ6IFwiYW1vdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiTlVNQkVSXCIpLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwicHJpY2VcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJQUklDRVwiKSwgIGZvcm1hdDogXCJDMlwiLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwicHJpY2VMaXN0Q29kZVwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIlBSSUNFX0xJU1RcIiksIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5fSxcbiAgICAgIHtmaWVsZDogXCJsaW5lRGlzY291bnRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJESVNDT1VOVF9QRVJDRU5UQUdFXCIpLCBmb3JtYXQ6IFwiQzJcIiwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwic3BlY2lhbERpc2NvdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiU1BFQ0lBTF9ESVNDT1VOVFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCBoaWRlQXRNZWRpYTogbWVkaWFRdWVyeSwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxuICAgICAge2ZpZWxkOiBcImRpc2NvdW50QW1vdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiRElTQ09VTlRfQU1PVU5UXCIpLCBmb3JtYXQ6IFwiQzJcIiwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwic3VyY2hhcmdlQW1vdW50XCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiU1VSQ0hBUkdFX0FNT1VOVFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCBoaWRlQXRNZWRpYTogbWVkaWFRdWVyeSwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxuICAgICAge2ZpZWxkOiBcImFzc2VtYmx5Q29zdFwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkFTU0VNQkxZX0NPU1RTXCIpLCBmb3JtYXQ6IFwiQzJcIiwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwiZ3Jvc3NMaW5lVG90YWxcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJUT1RBTF9HUk9TU1wiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IHRydWUsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwibGluZVRvdGFsRGlzY291bnRBbW91bnRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJESVNDT1VOVFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCAgaGlkZUF0TWVkaWE6IG1lZGlhUXVlcnksIHRleHRBbGlnbjogXCJSaWdodFwifSxcbiAgICAgIHtmaWVsZDogXCJuZXRMaW5lVG90YWxcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJTVUJUT1RBTFwiKSwgZm9ybWF0OiBcIkMyXCIsIHZpc2libGU6IGZhbHNlLCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgICB7ZmllbGQ6IFwidmF0SWRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJWQVRcIiksIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB2aXNpYmxlOiBmYWxzZSwgdGV4dEFsaWduOiBcIlJpZ2h0XCJ9LFxuICAgICAge2ZpZWxkOiBcInByaWNlRGVjbGFyYXRpb25cIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJUUkFOU0FDVElPTl9QUklDRV9ERUNMQVJBVElPTlwiKSwgdmlzaWJsZTogZmFsc2UsIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5fSxcbiAgICAgIHtmaWVsZDogXCJuZXR0b1wiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIk5FVFRcIiksIGZvcm1hdDogXCJDMlwiLCAgaGlkZUF0TWVkaWE6IG1lZGlhUXVlcnksIHRleHRBbGlnbjogXCJSaWdodFwifSxcbiAgICAgIHtmaWVsZDogXCJ3YXJlaG91c2VOdW1iZXJcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJXQVJFSE9VU0VcIiksIGhpZGVBdE1lZGlhOiBtZWRpYVF1ZXJ5LCB0ZXh0QWxpZ246IFwiUmlnaHRcIn0sXG4gICAgKTtcblxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5wdXNoKFxuICAgICAgeyB0ZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkFERF9BUlRJQ0xFX0xJTkVfVVBcIiksIHRhcmdldDogXCIuZS1jb250ZW50XCIsIGlkOiBcImFydGljbGVMaW5lVXBcIiB9LFxuICAgICAgeyB0ZXh0OiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkFERF9BUlRJQ0xFX0xJTkVfRE9XTlwiKSwgdGFyZ2V0OiBcIi5lLWNvbnRlbnRcIiwgaWQ6IFwiYXJ0aWNsZUxpbmVEb3duXCIgfSxcbiAgICAgIHsgdGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJBRERfQVJUSUNMRV9URVhUX0xJTkVfVVBcIiksIHRhcmdldDogXCIuZS1jb250ZW50XCIsIGlkOiBcImFydGljbGVUZXh0TGluZVVwXCIgfSxcbiAgICAgIHsgdGV4dDogdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJBRERfQVJUSUNMRV9URVhUX0xJTkVfRE9XTlwiKSwgdGFyZ2V0OiBcIi5lLWNvbnRlbnRcIiwgaWQ6IFwiYXJ0aWNsZVRleHRMaW5lRG93blwiIH1cbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVNpZGViYXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uVXBkYXRlZC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldENhcnRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIlNIT1BQSU5HX0NBUlRfT1ZFUlZJRVdcIiwgdHJ1ZSkgKyBcIihcIiArIHRoaXMuc2VydmljZS5hcnRpY2xlQW1vdW50LnRvU3RyaW5nKCkgKyBcIilcIjtcblxuICB9XG5cbiAgcHVibGljIGFkZERpc2NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1NpZGViYXIoKTtcblxuICAgIC8vIFRPRE9cbiAgICAvLyB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlID0gdGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZTtcbiAgICAvLyB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQgPSB0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQ7XG4gICAgLy8gdGhpcy50cmFuc2FjdGlvblRvdGFsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uU3RhcnREaXNjb3VudElucHV0KGRpc2NvdW50VHlwZTogT3JkZXJEaXNjb3VudFR5cGUsIGhlYWRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuXG4gICAgdGhpcy5kaXNjb3VudFR5cGUgPSBkaXNjb3VudFR5cGU7XG4gICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IGhlYWRlcjtcbiAgICB0aGlzLmlucHV0RGlzY291bnRzID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuU2hvcHBpbmdDYXJ0TW9kdWxlKCk6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLm9wZW5TaG9wcGluZ0NhcnRNb2R1bGUubmV4dCgpO1xuICAgIHRoaXMuY2xvc2VDYXJ0LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNjb3VudEhlYWRlcihkaXNjb3VudFR5cGU6IE9yZGVyRGlzY291bnRUeXBlKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLmRpc2NvdW50VHlwZSkge1xuICAgICAgY2FzZSBPcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudFBlcmNlbnRhZ2U6XG4gICAgICAgIHRoaXMuZGlzY291bnRIZWFkZXIgPSB0aGlzLl9kaWN0aW9uYXJ5LmdldChcIkRJU0NPVU5UX1BFUkNFTlRBR0VcIiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudEFtb3VudDpcbiAgICAgICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiRElTQ09VTlRfQU1PVU5UXCIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbDpcbiAgICAgICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiT1JERVJfVE9UQUxcIiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0RGlzY291bnRzT2tDbGljaygpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVUb1VzZTogbnVtYmVyO1xuICAgIHN3aXRjaCAodGhpcy5kaXNjb3VudFR5cGUpIHtcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlOlxuICAgICAgICB2YWx1ZVRvVXNlID0gdGhpcy50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50OlxuICAgICAgICB2YWx1ZVRvVXNlID0gdGhpcy50cmFuc2FjdGlvbkRpc2NvdW50QW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbDpcbiAgICAgICAgdmFsdWVUb1VzZSA9IHRoaXMudHJhbnNhY3Rpb25Ub3RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vVE9ETyB0aGlzLnNlcnZpY2Uuc2V0VHJhbnNhY3Rpb25EaXNjb3VudHModGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi51dWlkLCB0aGlzLmRpc2NvdW50VHlwZSwgdmFsdWVUb1VzZSk7XG4gICAgdGhpcy5pbnB1dERpc2NvdW50cyA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogYW55IHtcbiAgICByZXR1cm4gbGluZS5saW5lTnI7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUm93c1NlbGVjdGVkKHJvd3M6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93ID0gcm93cy5maW5kKHggPT4geCAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93U2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEaXNjb3VudHNTaWRlYmFyID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAodGhpcy5kaXNjb3VudHNTaWRlYmFyKSB7XG4gICAgICB0aGlzLmRpc2NvdW50c1NpZGViYXIuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlU2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEaXNjb3VudHNTaWRlYmFyID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKHRoaXMuZGlzY291bnRzU2lkZWJhcikge1xuICAgICAgdGhpcy5kaXNjb3VudHNTaWRlYmFyLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWVudUl0ZW1DbGljayhhcmdzOiBNZW51RXZlbnRBcmdzKTogdm9pZCB7XG4gICAgY29uc3QgbGluZU5yOiBudW1iZXIgPSB0aGlzLl9zZWxlY3RlZFJvdy5saW5lTnI7XG4gICAgc3dpdGNoIChhcmdzLml0ZW0uaWQpIHtcbiAgICAgIGNhc2UgXCJhcnRpY2xlTGluZVVwXCI6XG4vLyAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudHMuYWRkQXJ0aWNsZUxpbmUubmV4dCh7bGluZU5yOiBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdy5CZWZvcmV9KTtcbiAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50cy5hZGRBcnRpY2xlTGluZUF0Lm5leHQoe3NrdTogXCJpUG9kXCIsIGFtb3VudDogMSwgbGluZU5yOiBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdy5CZWZvcmV9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYXJ0aWNsZUxpbmVEb3duXCI6XG4vLyAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudHMuYWRkQXJ0aWNsZUxpbmUubmV4dCh7bGluZU5yOiBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdy5BZnRlcn0pO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50cy5hZGRBcnRpY2xlTGluZUF0Lm5leHQoe3NrdTogXCJpUG9kXCIsIGFtb3VudDogMSwgbGluZU5yOiBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdy5BZnRlcn0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhcnRpY2xlVGV4dExpbmVVcFwiOlxuLy8gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLmFkZFRleHRMaW5lLm5leHQoe2xpbmVOcjogbGluZU5yLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlfSk7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLmFkZFRleHRMaW5lQXQubmV4dCh7dGV4dDogXCJ0ZXh0cmVnZWwgYmVmb3JlXCIsIGxpbmVOcjogbGluZU5yLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFydGljbGVUZXh0TGluZURvd25cIjpcbi8vICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50cy5hZGRUZXh0TGluZS5uZXh0KHtsaW5lTnI6IGxpbmVOciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93LkFmdGVyfSk7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRzLmFkZFRleHRMaW5lQXQubmV4dCh7dGV4dDogXCJ0ZXh0cmVnZWwgYWZ0ZXJcIiwgbGluZU5yOiBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdy5BZnRlcn0pO1xuICAgICAgICBicmVhaztcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByb3dEcm9wKGFyZ3M6IFJvd0RyYWdFdmVudEFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50cy5jaGFuZ2VMaW5lU2VxdWVuY2UubmV4dCh7ZnJvbUluZGV4OiBhcmdzLmZyb21JbmRleCwgdG9JbmRleDogYXJncy5kcm9wSW5kZXh9KTtcblxuICAgIC8vIFRyYW5zYWN0aW9uIGxpbmVzIHdpbGwgYmUgcmVsb2FkZWQgYnkgcHJldmlvdXMgYWN0aW9uIG9uIHN1Y2Nlc3MsIG5vdCBieSBmYWlsdXJlLiBTbywgY2FuY2VsIHRoZSBkcm9wIGluIGFsbCBjYXNlcy5cbiAgICBhcmdzLmNhbmNlbCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -152,7 +152,7 @@ ShoppingCartLineComponent.decorators = [
152
152
  [textContent]="line.text">
153
153
  </div>
154
154
  `,
155
- styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.cart-line-r .cart-line-description .cart-line-description-artnr{font-size:10px}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}:host{padding-bottom:20px}:host{padding-top:20px}.cart-line-r .cart-line-right .cart-line-totals,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-description{margin-top:20px}.cart-line-r .cart-line-right .cart-line-totals,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-description{margin-bottom:20px}.cart-line-r .cart-line-right .cart-line-totals,.cart-line-t,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-description{margin-left:20px}.cart-line-t,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-description{margin-right:20px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host{display:flex;flex-wrap:wrap;border-bottom:1px solid #DBE3E8;width:100%}:host.overlayed.is-text{display:none!important}:host.overlayed.is-selected{background-color:#add8e6}:host.overview.is-text{display:none!important}:host.overview.is-selected{background-color:#add8e6}.cart-line-r{display:flex;justify-content:stretch;flex-direction:row}@media (max-width: 800px){.cart-line-r{flex-direction:column}}.cart-line-r co-button{border:0;padding:0}.cart-line-r .cart-line-image{display:flex;flex:1 0 auto!important;flex-direction:column;align-items:center;justify-content:center}.cart-line-r .cart-line-image image-display{width:6em;height:6em}.cart-line-r .cart-line-description{display:flex;flex-direction:column;width:100%}.cart-line-r .cart-line-description .cart-line-description-main{font-weight:bold}.cart-line-r .cart-line-right{justify-content:flex-end}.cart-line-r .cart-line-right .cart-line-stock{width:10em}.cart-line-r .cart-line-right .cart-line-amount{width:10em}.cart-line-r .cart-line-right .cart-line-totals{display:flex;justify-content:flex-end;min-width:100px;font-weight:bold}.cart-line-r .cart-line-right .cart-line-totals span{text-align:right}.cart-line-t.article-text{padding-left:10em}\n"]
155
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.cart-line-r .cart-line-description .cart-line-description-artnr{font-size:10px}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}:host{padding-bottom:20px}:host{padding-top:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-right .cart-line-totals{margin-top:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-right .cart-line-totals{margin-bottom:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-t,.cart-line-r .cart-line-right .cart-line-totals{margin-left:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-t{margin-right:20px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host{display:flex;flex-wrap:wrap;border-bottom:1px solid #DBE3E8;width:100%}:host.overlayed.is-text{display:none!important}:host.overlayed.is-selected{background-color:#add8e6}:host.overview.is-text{display:none!important}:host.overview.is-selected{background-color:#add8e6}.horizontal{display:flex;flex-direction:row-reverse}.cart-line-r{display:flex;justify-content:stretch;flex-direction:row}@media (max-width: 800px){.cart-line-r{flex-direction:column}}.cart-line-r co-button{border:0;padding:0}.cart-line-r .cart-line-image{display:flex;flex:1 0 auto!important;flex-direction:column;align-items:center;justify-content:center}.cart-line-r .cart-line-image image-display{width:6em;height:6em}.cart-line-r .cart-line-description{display:flex;flex-direction:column;width:100%}.cart-line-r .cart-line-description .cart-line-description-main{font-weight:bold}.cart-line-r .cart-line-right{justify-content:flex-end}.cart-line-r .cart-line-right .cart-line-stock{width:10em}.cart-line-r .cart-line-right .cart-line-amount{width:10em}.cart-line-r .cart-line-right .cart-line-totals{display:flex;justify-content:flex-end;min-width:100px;font-weight:bold}.cart-line-r .cart-line-right .cart-line-totals span{text-align:right}.cart-line-t.article-text{padding-left:10em}\n"]
156
156
  },] }
157
157
  ];
158
158
  ShoppingCartLineComponent.ctorParameters = () => [