carbon-components-angular 5.72.1 → 5.72.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/combobox/combobox.component.d.ts +3 -0
  2. package/docs/documentation/components/ComboBox.html +214 -67
  3. package/docs/documentation/components/Dropdown.html +322 -134
  4. package/docs/documentation/components/DropdownList.html +6 -2
  5. package/docs/documentation/components/RadioGroup.html +166 -77
  6. package/docs/documentation/coverage.html +10 -10
  7. package/docs/documentation/js/search/search_index.js +2 -2
  8. package/docs/documentation/modules/DialogModule/dependencies.svg +34 -34
  9. package/docs/documentation/modules/DialogModule.html +34 -34
  10. package/docs/documentation/modules/DocumentationModule/dependencies.svg +4 -4
  11. package/docs/documentation/modules/DocumentationModule.html +4 -4
  12. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +37 -37
  13. package/docs/documentation/modules/FileUploaderModule.html +37 -37
  14. package/docs/documentation/modules/GridModule/dependencies.svg +63 -63
  15. package/docs/documentation/modules/GridModule.html +63 -63
  16. package/docs/documentation/modules/HeaderModule/dependencies.svg +4 -4
  17. package/docs/documentation/modules/HeaderModule.html +4 -4
  18. package/docs/documentation/modules/I18nModule/dependencies.svg +13 -13
  19. package/docs/documentation/modules/I18nModule.html +13 -13
  20. package/docs/documentation/modules/IconModule/dependencies.svg +4 -4
  21. package/docs/documentation/modules/IconModule.html +4 -4
  22. package/docs/documentation/modules/InlineLoadingModule/dependencies.svg +15 -15
  23. package/docs/documentation/modules/InlineLoadingModule.html +15 -15
  24. package/docs/documentation/modules/InputModule/dependencies.svg +76 -76
  25. package/docs/documentation/modules/InputModule.html +76 -76
  26. package/docs/documentation/modules/ListModule/dependencies.svg +4 -4
  27. package/docs/documentation/modules/ListModule.html +4 -4
  28. package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
  29. package/docs/documentation/modules/LoadingModule.html +4 -4
  30. package/docs/documentation/modules/MenuButtonModule/dependencies.svg +28 -28
  31. package/docs/documentation/modules/MenuButtonModule.html +28 -28
  32. package/docs/documentation/modules/ModalModule/dependencies.svg +113 -113
  33. package/docs/documentation/modules/ModalModule.html +113 -113
  34. package/docs/documentation/modules/NFormsModule/dependencies.svg +4 -4
  35. package/docs/documentation/modules/NFormsModule.html +4 -4
  36. package/docs/documentation/modules/NotificationModule/dependencies.svg +4 -4
  37. package/docs/documentation/modules/NotificationModule.html +4 -4
  38. package/docs/documentation/modules/NumberModule/dependencies.svg +24 -24
  39. package/docs/documentation/modules/NumberModule.html +24 -24
  40. package/docs/documentation/modules/PaginationModule/dependencies.svg +57 -57
  41. package/docs/documentation/modules/PaginationModule.html +57 -57
  42. package/docs/documentation/modules/PanelModule/dependencies.svg +36 -36
  43. package/docs/documentation/modules/PanelModule.html +36 -36
  44. package/docs/documentation/modules/PlaceholderModule/dependencies.svg +4 -4
  45. package/docs/documentation/modules/PlaceholderModule.html +4 -4
  46. package/docs/documentation/modules/PopoverModule/dependencies.svg +4 -4
  47. package/docs/documentation/modules/PopoverModule.html +4 -4
  48. package/docs/documentation/modules/ProgressBarModule/dependencies.svg +4 -4
  49. package/docs/documentation/modules/ProgressBarModule.html +4 -4
  50. package/docs/documentation/modules/ProgressIndicatorModule/dependencies.svg +4 -4
  51. package/docs/documentation/modules/ProgressIndicatorModule.html +4 -4
  52. package/docs/documentation/modules/RadioModule/dependencies.svg +61 -57
  53. package/docs/documentation/modules/RadioModule.html +61 -57
  54. package/docs/documentation/modules/SearchModule/dependencies.svg +48 -44
  55. package/docs/documentation/modules/SearchModule.html +48 -44
  56. package/docs/documentation/modules/SelectModule/dependencies.svg +60 -60
  57. package/docs/documentation/modules/SelectModule.html +60 -60
  58. package/docs/documentation/modules/SideNavModule/dependencies.svg +40 -40
  59. package/docs/documentation/modules/SideNavModule.html +40 -40
  60. package/docs/documentation/modules/SliderModule/dependencies.svg +41 -45
  61. package/docs/documentation/modules/SliderModule.html +41 -45
  62. package/docs/documentation/modules/TabsModule/dependencies.svg +120 -120
  63. package/docs/documentation/modules/TabsModule.html +120 -120
  64. package/docs/documentation/modules/ThemeModule/dependencies.svg +13 -13
  65. package/docs/documentation/modules/ThemeModule.html +13 -13
  66. package/docs/documentation/modules/TilesModule/dependencies.svg +106 -106
  67. package/docs/documentation/modules/TilesModule.html +106 -106
  68. package/docs/documentation/modules/TimePickerModule/dependencies.svg +41 -45
  69. package/docs/documentation/modules/TimePickerModule.html +41 -45
  70. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +46 -42
  71. package/docs/documentation/modules/TimePickerSelectModule.html +46 -42
  72. package/docs/documentation/modules/ToggleModule/dependencies.svg +17 -17
  73. package/docs/documentation/modules/ToggleModule.html +17 -17
  74. package/docs/documentation/modules/ToggletipModule/dependencies.svg +4 -4
  75. package/docs/documentation/modules/ToggletipModule.html +4 -4
  76. package/docs/documentation/modules/TooltipModule/dependencies.svg +28 -28
  77. package/docs/documentation/modules/TooltipModule.html +28 -28
  78. package/docs/documentation/modules/TreeviewModule/dependencies.svg +4 -4
  79. package/docs/documentation/modules/TreeviewModule.html +4 -4
  80. package/docs/documentation/modules/UIShellModule/dependencies.svg +4 -4
  81. package/docs/documentation/modules/UIShellModule.html +4 -4
  82. package/docs/documentation.json +261 -231
  83. package/docs/storybook/3224.14e2c79a.iframe.bundle.js +1 -0
  84. package/docs/storybook/557.d4341469.iframe.bundle.js +1 -0
  85. package/docs/storybook/955.7522f55b.iframe.bundle.js +1 -0
  86. package/docs/storybook/combobox-combobox-stories.e3d08f7d.iframe.bundle.js +1 -0
  87. package/docs/storybook/dropdown-dropdown-stories.cf59b2ab.iframe.bundle.js +1 -0
  88. package/docs/storybook/iframe.html +2 -2
  89. package/docs/storybook/{main.d2b9abb3.iframe.bundle.js → main.a1247bb8.iframe.bundle.js} +1 -1
  90. package/docs/storybook/modal-modal-stories.cc2d04cb.iframe.bundle.js +1 -0
  91. package/docs/storybook/{pagination-pagination-nav-stories.547eede3.iframe.bundle.js → pagination-pagination-nav-stories.01637d11.iframe.bundle.js} +1 -1
  92. package/docs/storybook/{pagination-pagination-stories.fa7c9094.iframe.bundle.js → pagination-pagination-stories.40d17ebd.iframe.bundle.js} +1 -1
  93. package/docs/storybook/{patterns-filtering-single-selection-stories.ec91f833.iframe.bundle.js → patterns-filtering-multi-selection-stories.a46a1d6e.iframe.bundle.js} +1 -1
  94. package/docs/storybook/{patterns-filtering-multiple-categories-stories.531f27d7.iframe.bundle.js → patterns-filtering-multiple-categories-stories.740c719e.iframe.bundle.js} +1 -1
  95. package/docs/storybook/{patterns-filtering-multi-selection-stories.9086f77f.iframe.bundle.js → patterns-filtering-single-selection-stories.cc647b4a.iframe.bundle.js} +1 -1
  96. package/docs/storybook/{patterns-forms-multi-step-form-stories.8696062a.iframe.bundle.js → patterns-forms-multi-step-form-stories.2ea46e56.iframe.bundle.js} +1 -1
  97. package/docs/storybook/{patterns-loading-large-loading-stories.734fb9bc.iframe.bundle.js → patterns-loading-large-loading-stories.e6ae3e31.iframe.bundle.js} +1 -1
  98. package/docs/storybook/{patterns-loading-progressive-loading-stories.10bcf9f2.iframe.bundle.js → patterns-loading-progressive-loading-stories.63165c09.iframe.bundle.js} +1 -1
  99. package/docs/storybook/project.json +1 -1
  100. package/docs/storybook/radio-radio-stories.8ff73370.iframe.bundle.js +1 -0
  101. package/docs/storybook/runtime~main.b11c471e.iframe.bundle.js +1 -0
  102. package/dropdown/dropdown.component.d.ts +8 -1
  103. package/dropdown/list/dropdown-list.component.d.ts +1 -1
  104. package/esm2020/combobox/combobox.component.mjs +19 -9
  105. package/esm2020/dropdown/dropdown.component.mjs +31 -15
  106. package/esm2020/dropdown/list/dropdown-list.component.mjs +1 -1
  107. package/esm2020/radio/radio-group.component.mjs +19 -7
  108. package/fesm2015/carbon-components-angular-combobox.mjs +18 -8
  109. package/fesm2015/carbon-components-angular-combobox.mjs.map +1 -1
  110. package/fesm2015/carbon-components-angular-dropdown.mjs +31 -14
  111. package/fesm2015/carbon-components-angular-dropdown.mjs.map +1 -1
  112. package/fesm2015/carbon-components-angular-radio.mjs +18 -6
  113. package/fesm2015/carbon-components-angular-radio.mjs.map +1 -1
  114. package/fesm2020/carbon-components-angular-combobox.mjs +18 -8
  115. package/fesm2020/carbon-components-angular-combobox.mjs.map +1 -1
  116. package/fesm2020/carbon-components-angular-dropdown.mjs +30 -14
  117. package/fesm2020/carbon-components-angular-dropdown.mjs.map +1 -1
  118. package/fesm2020/carbon-components-angular-radio.mjs +18 -6
  119. package/fesm2020/carbon-components-angular-radio.mjs.map +1 -1
  120. package/package.json +1 -1
  121. package/radio/radio-group.component.d.ts +4 -2
  122. package/docs/storybook/1250.47c381c1.iframe.bundle.js +0 -1
  123. package/docs/storybook/3224.3e279e46.iframe.bundle.js +0 -1
  124. package/docs/storybook/955.99b6ac85.iframe.bundle.js +0 -1
  125. package/docs/storybook/combobox-combobox-stories.e7427226.iframe.bundle.js +0 -1
  126. package/docs/storybook/dropdown-dropdown-stories.a76101be.iframe.bundle.js +0 -1
  127. package/docs/storybook/modal-modal-stories.0a864a6a.iframe.bundle.js +0 -1
  128. package/docs/storybook/radio-radio-stories.444fc044.iframe.bundle.js +0 -1
  129. package/docs/storybook/runtime~main.86875b86.iframe.bundle.js +0 -1
@@ -640,4 +640,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
640
640
  type: ViewChildren,
641
641
  args: ["listItem"]
642
642
  }] } });
643
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZHJvcGRvd24vbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUdaLFNBQVMsRUFFVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUlsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBc0VILE1BQU0sT0FBTyxZQUFZO0lBMEd4Qjs7T0FFRztJQUNILFlBQW1CLFVBQXNCLEVBQVksSUFBVSxFQUFZLE1BQXNCO1FBQTlFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBWSxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUEzR3hGLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUEwQnpEOztXQUVHO1FBQ00sWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDbkQ7O1dBRUc7UUFDTyxXQUFNLEdBQXNFLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekc7O1dBRUc7UUFDTyxXQUFNLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkU7Ozs7Ozs7O1dBUUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLNUQ7OztX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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUEyREg7b0JBQ1AsU0FBUyxFQUFFO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFdBQVcsY0FBYzt5QkFDekI7cUJBQ0Q7aUJBQ0Q7aUpBR1MsU0FBUztzQkFBakIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQXlCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNO2dCQUlHLE1BQU07c0JBQWYsTUFBTTtnQkFVRyxVQUFVO3NCQUFuQixNQUFNO2dCQUk4QixJQUFJO3NCQUF4QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSzFCLElBQUk7c0JBQVosS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQXFCOEIsZUFBZTtzQkFBbEQsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRPbkRlc3Ryb3ksXG5cdEV2ZW50RW1pdHRlcixcblx0VGVtcGxhdGVSZWYsXG5cdEFmdGVyVmlld0luaXQsXG5cdFZpZXdDaGlsZCxcblx0RWxlbWVudFJlZixcblx0Vmlld0NoaWxkcmVuLFxuXHRRdWVyeUxpc3QsXG5cdEFwcGxpY2F0aW9uUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgSTE4biB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2kxOG5cIjtcbmltcG9ydCB7IEFic3RyYWN0RHJvcGRvd25WaWV3IH0gZnJvbSBcIi4uL2Fic3RyYWN0LWRyb3Bkb3duLXZpZXcuY2xhc3NcIjtcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSBcIi4uL2xpc3QtaXRlbS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IHdhdGNoRm9jdXNKdW1wIH0gZnJvbSBcIi4uL2Ryb3Bkb3dudG9vbHNcIjtcbmltcG9ydCB7IFNjcm9sbEN1c3RvbUV2ZW50IH0gZnJvbSBcIi4vc2Nyb2xsLWN1c3RvbS1ldmVudC5pbnRlcmZhY2VcIjtcblxuXG4vKipcbiAqIGBgYGh0bWxcbiAqIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwibGlzdEl0ZW1zXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAqIGBgYFxuICogYGBgdHlwZXNjcmlwdFxuICogbGlzdEl0ZW1zID0gW1xuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIG9uZVwiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZVxuICogXHR9LFxuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIHR3b1wiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZSxcbiAqIFx0fSxcbiAqIFx0e1xuICogXHRcdGNvbnRlbnQ6IFwiaXRlbSB0aHJlZVwiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZVxuICogXHR9LFxuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIGZvdXJcIixcbiAqIFx0XHRzZWxlY3RlZDogZmFsc2VcbiAqIFx0fVxuICogXTtcbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWRyb3Bkb3duLWxpc3QsIGlibS1kcm9wZG93bi1saXN0XCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PHVsXG5cdFx0XHQjbGlzdFxuXHRcdFx0W2lkXT1cImxpc3RJZFwiXG5cdFx0XHRyb2xlPVwibGlzdGJveFwiXG5cdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUgY2RzLS1tdWx0aS1zZWxlY3RcIlxuXHRcdFx0KHNjcm9sbCk9XCJlbWl0U2Nyb2xsKCRldmVudClcIlxuXHRcdFx0KGtleWRvd24pPVwibmF2aWdhdGVMaXN0KCRldmVudClcIlxuXHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcblx0XHRcdFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJoaWdobGlnaHRlZEl0ZW1cIj5cblx0XHRcdDxsaVxuXHRcdFx0XHRyb2xlPVwib3B0aW9uXCJcblx0XHRcdFx0Km5nRm9yPVwibGV0IGl0ZW0gb2YgZGlzcGxheUl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcblx0XHRcdFx0KGNsaWNrKT1cImRvQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG5cdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pdGVtXCJcblx0XHRcdFx0W2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCJcblx0XHRcdFx0W2lkXT1cImdldEl0ZW1JZChpKVwiXG5cdFx0XHRcdFthdHRyLnRhYmluZGV4XT1cImhpZ2hsaWdodGVkSXRlbSA9PT0gZ2V0SXRlbUlkKGkpID8gMCA6IG51bGxcIlxuXHRcdFx0XHRbYXR0ci50aXRsZV09XCIgc2hvd1RpdGxlcyA/IGl0ZW0uY29udGVudCA6IG51bGxcIlxuXHRcdFx0XHRbYXR0ci5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuXHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX21lbnUtaXRlbS0tYWN0aXZlJzogaXRlbS5zZWxlY3RlZCxcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveF9fbWVudS1pdGVtLS1oaWdobGlnaHRlZCc6IGhpZ2hsaWdodGVkSXRlbSA9PT0gZ2V0SXRlbUlkKGkpXG5cdFx0XHRcdH1cIj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdCNsaXN0SXRlbVxuXHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pdGVtX19vcHRpb25cIj5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHQqbmdJZj1cIiFsaXN0VHBsICYmIHR5cGUgPT09ICdtdWx0aSdcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWZvcm0taXRlbSBjZHMtLWNoZWNrYm94LXdyYXBwZXJcIj5cblx0XHRcdFx0XHRcdDxsYWJlbFxuXHRcdFx0XHRcdFx0XHRbYXR0ci5kYXRhLWNvbnRhaW5lZC1jaGVja2JveC1zdGF0ZV09XCJpdGVtLnNlbGVjdGVkXCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWNoZWNrYm94LWxhYmVsXCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1jaGVja2JveFwiXG5cdFx0XHRcdFx0XHRcdFx0dHlwZT1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdFx0XHRbY2hlY2tlZF09XCJpdGVtLnNlbGVjdGVkXCJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHRcdFx0dGFiaW5kZXg9XCItMVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tY2hlY2tib3gtYXBwZWFyYW5jZVwiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWNoZWNrYm94LWxhYmVsLXRleHRcIj57e2l0ZW0uY29udGVudH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWxpc3RUcGwgJiYgdHlwZSA9PT0gJ3NpbmdsZSdcIj57e2l0ZW0uY29udGVudH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdFx0Km5nSWY9XCIhbGlzdFRwbCAmJiB0eXBlID09PSAnc2luZ2xlJ1wiXG5cdFx0XHRcdFx0XHRjZHNJY29uPVwiY2hlY2ttYXJrXCJcblx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUtaXRlbV9fc2VsZWN0ZWQtaWNvblwiPlxuXHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZVxuXHRcdFx0XHRcdFx0Km5nSWY9XCJsaXN0VHBsXCJcblx0XHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIlxuXHRcdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFRwbFwiPlxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9saT5cblx0XHQ8L3VsPmAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IEFic3RyYWN0RHJvcGRvd25WaWV3LFxuXHRcdFx0dXNlRXhpc3Rpbmc6IERyb3Bkb3duTGlzdFxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3QgaW1wbGVtZW50cyBBYnN0cmFjdERyb3Bkb3duVmlldywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblx0c3RhdGljIGxpc3RDb3VudCA9IDA7XG5cdEBJbnB1dCgpIGFyaWFMYWJlbCA9IHRoaXMuaTE4bi5nZXQoKS5EUk9QRE9XTl9MSVNULkxBQkVMO1xuXHQvKipcblx0ICogVGhlIGxpc3QgaXRlbXMgYmVsb25naW5nIHRvIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogQXJyYXk8TGlzdEl0ZW0+IHwgT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbT4+KSB7XG5cdFx0aWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZSkpIHtcblx0XHRcdGlmICh0aGlzLl9pdGVtc1N1YnNjcmlwdGlvbikge1xuXHRcdFx0XHR0aGlzLl9pdGVtc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5faXRlbXNSZWFkeSA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KChvYnNlcnZlcikgPT4ge1xuXHRcdFx0XHR0aGlzLl9pdGVtc1N1YnNjcmlwdGlvbiA9IHZhbHVlLnN1YnNjcmliZSh2ID0+IHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUxpc3Qodik7XG5cdFx0XHRcdFx0b2JzZXJ2ZXIubmV4dCh0cnVlKTtcblx0XHRcdFx0XHRvYnNlcnZlci5jb21wbGV0ZSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5vbkl0ZW1zUmVhZHkobnVsbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudXBkYXRlTGlzdCh2YWx1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuX29yaWdpbmFsSXRlbXMgPSB2YWx1ZTtcblx0fVxuXG5cdGdldCBpdGVtcygpOiBBcnJheTxMaXN0SXRlbT4gfCBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4ge1xuXHRcdHJldHVybiB0aGlzLl9vcmlnaW5hbEl0ZW1zO1xuXHR9XG5cdC8qKlxuXHQgKiBUZW1wbGF0ZSB0byBiaW5kIHRvIGl0ZW1zIGluIHRoZSBgRHJvcGRvd25MaXN0YCAob3B0aW9uYWwpLlxuXHQgKi9cblx0QElucHV0KCkgbGlzdFRwbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cdC8qKlxuXHQgKiBFdmVudCB0byBlbWl0IHNlbGVjdGlvbiBvZiBhIGxpc3QgaXRlbSB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0QE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPHsgaXRlbTogTGlzdEl0ZW0sIGlzVXBkYXRlPzogYm9vbGVhbiB9IHwgTGlzdEl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdC8qKlxuXHQgKiBFdmVudCB0byBlbWl0IHNjcm9sbCBldmVudCBvZiBhIGxpc3Qgd2l0aGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdEBPdXRwdXQoKSBzY3JvbGw6IEV2ZW50RW1pdHRlcjxTY3JvbGxDdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdC8qKlxuXHQgKiBFdmVudCB0byBzdWdnZXN0IGEgYmx1ciBvbiB0aGUgdmlldy5cblx0ICogRW1pdHMgX2FmdGVyXyB0aGUgZmlyc3QvbGFzdCBpdGVtIGhhcyBiZWVuIGZvY3VzZWQuXG5cdCAqIGV4LlxuXHQgKiBBcnJvd1VwIC0+IGZvY3VzIGZpcnN0IGl0ZW1cblx0ICogQXJyb3dVcCAtPiBlbWl0IGV2ZW50XG5cdCAqXG5cdCAqIFdoZW4gdGhpcyBldmVudCBmaXJlcyBmb2N1cyBzaG91bGQgYmUgcGxhY2VkIG9uIHNvbWUgZWxlbWVudCBvdXRzaWRlIG9mIHRoZSBsaXN0IC0gYmx1cnJpbmcgdGhlIGxpc3QgYXMgYSByZXN1bHRcblx0ICovXG5cdEBPdXRwdXQoKSBibHVySW50ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxcInRvcFwiIHwgXCJib3R0b21cIj4oKTtcblx0LyoqXG5cdCAqIE1haW50YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmlldyBET00gZWxlbWVudCBmb3IgdGhlIHVub3JkZXJlZCBsaXN0IG9mIGl0ZW1zIHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRAVmlld0NoaWxkKFwibGlzdFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0OiBFbGVtZW50UmVmO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYERyb3Bkb3duTGlzdGAgc3VwcG9ydHMgc2VsZWN0aW5nIG11bHRpcGxlIGl0ZW1zIGFzIG9wcG9zZWQgdG8gc2luZ2xlXG5cdCAqIGl0ZW0gc2VsZWN0aW9uLlxuXHQgKi9cblx0QElucHV0KCkgdHlwZTogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiA9IFwic2luZ2xlXCI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciB0byBzaG93IHRpdGxlIGF0dHJpYnV0ZSBvciBub3Rcblx0ICovXG5cdEBJbnB1dCgpIHNob3dUaXRsZXMgPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZW5kZXJpbmcgc2l6ZSBvZiB0aGUgYERyb3Bkb3duTGlzdGAgaW5wdXQgY29tcG9uZW50LlxuXHQgKi9cblx0cHVibGljIHNpemU6IFwic21cIiB8IFwibWRcIiB8IFwibGdcIiA9IFwibWRcIjtcblx0cHVibGljIGxpc3RJZCA9IGBsaXN0Ym94LSR7RHJvcGRvd25MaXN0Lmxpc3RDb3VudCsrfWA7XG5cdHB1YmxpYyBoaWdobGlnaHRlZEl0ZW0gPSBudWxsO1xuXHQvKipcblx0ICogSG9sZHMgdGhlIGxpc3Qgb2YgaXRlbXMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqIEl0IGRpZmZlcnMgZnJvbSB0aGUgdGhlIGNvbXBsZXRlIHNldCBvZiBpdGVtcyB3aGVuIGZpbHRlcmluZyBpcyB1c2VkIChidXRcblx0ICogaXQgaXMgYWx3YXlzIGEgc3Vic2V0IG9mIHRoZSB0b3RhbCBpdGVtcyBpbiBgRHJvcGRvd25MaXN0YCkuXG5cdCAqL1xuXHRwdWJsaWMgZGlzcGxheUl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gPSBbXTtcblx0LyoqXG5cdCAqIE1haW50YWlucyB0aGUgaW5kZXggZm9yIHRoZSBzZWxlY3RlZCBpdGVtIHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgaW5kZXggPSAtMTtcblx0LyoqXG5cdCAqIEFuIGFycmF5IGhvbGRpbmcgdGhlIEhUTUwgbGlzdCBlbGVtZW50cyBpbiB0aGUgdmlldy5cblx0ICovXG5cdEBWaWV3Q2hpbGRyZW4oXCJsaXN0SXRlbVwiKSBwcm90ZWN0ZWQgbGlzdEVsZW1lbnRMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cdC8qKlxuXHQgKiBPYnNlcnZhYmxlIGJvdW5kIHRvIGtleWRvd24gZXZlbnRzIHRvIGNvbnRyb2wgZmlsdGVyaW5nLlxuXHQgKi9cblx0cHJvdGVjdGVkIGZvY3VzSnVtcDtcblx0LyoqXG5cdCAqIFRyYWNrcyB0aGUgY3VycmVudCAoaWYgYW55KSBzdWJzY3JpcHRpb24gdG8gdGhlIGl0ZW1zIG9ic2VydmFibGUgc28gd2UgY2FuIGNsZWFuIHVwIHdoZW4gdGhlIGlucHV0IGlzIHVwZGF0ZWQuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgX2l0ZW1zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cdC8qKlxuXHQgKiBVc2VkIHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgaXRlbXMgcGFzc2VkIHRvIHRoZSBzZXR0ZXIuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgX29yaWdpbmFsSXRlbXM6IEFycmF5PExpc3RJdGVtPiB8IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+Pjtcblx0LyoqXG5cdCAqIFVzZWZ1bCByZXByZXNlbnRhdGlvbiBvZiB0aGUgaXRlbXMsIHNob3VsZCBiZSBhY2Nlc3NlZCB2aWEgYGdldExpc3RJdGVtc2AuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgX2l0ZW1zOiBBcnJheTxMaXN0SXRlbT4gPSBbXTtcblx0LyoqXG5cdCAqIFVzZWQgdG8gd2FpdCBmb3IgaXRlbXMgaW4gY2FzZSB0aGV5IGFyZSBwYXNzZWQgdGhyb3VnaCBhbiBvYnNlcnZhYmxlLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9pdGVtc1JlYWR5OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Y29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpMThuOiBJMThuLCBwcm90ZWN0ZWQgYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge31cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGFycmF5IG9mIGxpc3QgaXRlbXMgYW5kIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBpdGVtIGFmdGVyIHZpZXcgaGFzIHJlbmRlcmVkLlxuXHQgKiBBZGRpdGlvbmFsbHksIGFueSBPYnNlcnZhYmxlcyBmb3IgdGhlIGBEcm9wZG93bkxpc3RgIGFyZSBpbml0aWFsaXplZC5cblx0ICovXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLmluZGV4ID0gdGhpcy5nZXRMaXN0SXRlbXMoKS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKTtcblx0XHR0aGlzLnNldHVwRm9jdXNPYnNlcnZhYmxlKCk7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmRvRW1pdFNlbGVjdCh0cnVlKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIGFueSBPYnNlcnZhYmxlcyBvbiBkZXN0cnVjdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKHRoaXMuZm9jdXNKdW1wKSB7XG5cdFx0XHR0aGlzLmZvY3VzSnVtcC51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pIHtcblx0XHRcdHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0ZG9FbWl0U2VsZWN0KGlzVXBkYXRlID0gdHJ1ZSkge1xuXHRcdGlmICh0aGlzLnR5cGUgPT09IFwic2luZ2xlXCIpIHtcblx0XHRcdHRoaXMuc2VsZWN0LmVtaXQoeyBpdGVtOiB0aGlzLl9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCksIGlzVXBkYXRlOiBpc1VwZGF0ZSB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYWJ1c2UgamF2YXNjcmlwdHMgb2JqZWN0IG11dGFiaWxpdHkgdW50aWwgd2UgY2FuIGJyZWFrIHRoZSBBUEkgYW5kIHN3aXRjaCB0b1xuXHRcdFx0Ly8geyBpdGVtczogW10sIGlzVXBkYXRlOiB0cnVlIH1cblx0XHRcdGNvbnN0IHNlbGVjdGVkID0gdGhpcy5nZXRTZWxlY3RlZCgpIHx8IFtdO1xuXHRcdFx0c2VsZWN0ZWRbXCJpc1VwZGF0ZVwiXSA9IGlzVXBkYXRlO1xuXHRcdFx0dGhpcy5zZWxlY3QuZW1pdChzZWxlY3RlZCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0SXRlbUlkKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gYCR7dGhpcy5saXN0SWR9LSR7aW5kZXh9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBkaXNwbGF5ZWQgbGlzdCBvZiBpdGVtcyBhbmQgdGhlbiByZXRyaWV2ZXMgdGhlIG1vc3QgY3VycmVudCBwcm9wZXJ0aWVzIGZvciB0aGUgYERyb3Bkb3duTGlzdGAgZnJvbSB0aGUgRE9NLlxuXHQgKi9cblx0dXBkYXRlTGlzdChpdGVtcykge1xuXHRcdHRoaXMuX2l0ZW1zID0gaXRlbXMubWFwKGl0ZW0gPT4gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSkpO1xuXHRcdHRoaXMuZGlzcGxheUl0ZW1zID0gdGhpcy5faXRlbXM7XG5cdFx0dGhpcy51cGRhdGVJbmRleCgpO1xuXHRcdHRoaXMuc2V0dXBGb2N1c09ic2VydmFibGUoKTtcblx0XHR0aGlzLmRvRW1pdFNlbGVjdCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbHRlcnMgdGhlIGl0ZW1zIGJlaW5nIGRpc3BsYXllZCBpbiB0aGUgRE9NIGxpc3QuXG5cdCAqL1xuXHRmaWx0ZXJCeShxdWVyeSA9IFwiXCIpIHtcblx0XHRpZiAocXVlcnkpIHtcblx0XHRcdHRoaXMuZGlzcGxheUl0ZW1zID0gdGhpcy5nZXRMaXN0SXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmNvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHQvLyBSZXNldCBpbmRleCBpZiBpdGVtcyB3ZXJlIGZvdW5kXG5cdFx0XHQvLyBQcmV2ZW50IHNlbGVjdGluZyBpbmRleCBpbiBsaXN0IHRoYXQgYXJlIHVuZGVmaW5lZC5cblx0XHRcdGlmICh0aGlzLmRpc3BsYXlJdGVtcykge1xuXHRcdFx0XHR0aGlzLmluZGV4ID0gMDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5kaXNwbGF5SXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcygpO1xuXHRcdH1cblxuXHRcdHRoaXMudXBkYXRlSW5kZXgoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyAob3IgcmUtaW5pdGlhbGl6ZXMpIHRoZSBPYnNlcnZhYmxlIHRoYXQgaGFuZGxlcyBzd2l0Y2hpbmcgZm9jdXMgdG8gYW4gZWxlbWVudCBiYXNlZCBvblxuXHQgKiBrZXkgaW5wdXQgbWF0Y2hpbmcgdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgaXRlbSBpbiB0aGUgbGlzdC5cblx0ICovXG5cdHNldHVwRm9jdXNPYnNlcnZhYmxlKCkge1xuXHRcdGlmICghdGhpcy5saXN0KSB7IHJldHVybjsgfVxuXHRcdGlmICh0aGlzLmZvY3VzSnVtcCkge1xuXHRcdFx0dGhpcy5mb2N1c0p1bXAudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdFx0bGV0IGVsTGlzdCA9IEFycmF5LmZyb20odGhpcy5saXN0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcImxpXCIpKTtcblx0XHR0aGlzLmZvY3VzSnVtcCA9IHdhdGNoRm9jdXNKdW1wKHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LCBlbExpc3QpXG5cdFx0XHQuc3Vic2NyaWJlKGVsID0+IHtcblx0XHRcdFx0ZWwuZm9jdXMoKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBMaXN0SXRlbWAgdGhhdCBpcyBzdWJzZXF1ZW50IHRvIHRoZSBzZWxlY3RlZCBpdGVtIGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdGdldE5leHRJdGVtKCk6IExpc3RJdGVtIHtcblx0XHRpZiAodGhpcy5pbmRleCA8IHRoaXMuZGlzcGxheUl0ZW1zLmxlbmd0aCAtIDEpIHtcblx0XHRcdHRoaXMuaW5kZXgrKztcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZGlzcGxheUl0ZW1zW3RoaXMuaW5kZXhdO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBzZWxlY3RlZCBpdGVtIGlzIG5vdCB0aGUgbGFzdCBpdGVtIGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdGhhc05leHRFbGVtZW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmluZGV4IDwgdGhpcy5kaXNwbGF5SXRlbXMubGVuZ3RoIC0gMSAmJlxuXHRcdFx0KCEodGhpcy5pbmRleCA9PT0gdGhpcy5kaXNwbGF5SXRlbXMubGVuZ3RoIC0gMikgfHwgIXRoaXMuZGlzcGxheUl0ZW1zW3RoaXMuaW5kZXggKyAxXS5kaXNhYmxlZCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYEhUTUxFbGVtZW50YCBmb3IgdGhlIGl0ZW0gdGhhdCBpcyBzdWJzZXF1ZW50IHRvIHRoZSBzZWxlY3RlZCBpdGVtLlxuXHQgKi9cblx0Z2V0TmV4dEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuXHRcdC8vIE9ubHkgcmV0dXJuIG5hdGl2ZSBlbGVtZW50cyBpZiB0aGV5IGFyZSByZW5kZXJlZFxuXHRcdGNvbnN0IGVsZW1MaXN0ID0gdGhpcy5saXN0RWxlbWVudExpc3QgPyB0aGlzLmxpc3RFbGVtZW50TGlzdC50b0FycmF5KCkgOiBbXTtcblx0XHRpZiAoIWVsZW1MaXN0Lmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0ICogU3RhcnQgY2hlY2tpbmcgZnJvbSBuZXh0IGluZGV4XG5cdFx0ICogQ29udGludWUgbG9vcGluZyB0aHJvdWdoIHRoZSBsaXN0IHVudGlsIGEgbm9uIGRpc2FiZWxlZCBlbGVtZW50IGlzIGZvdW5kIG9yXG5cdFx0ICogZW5kIG9mIGxpc3QgaXMgcmVhY2hlZFxuXHRcdCAqL1xuXHRcdGZvciAobGV0IGkgPSB0aGlzLmluZGV4ICsgMTsgaSA8IGVsZW1MaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHQvLyBJZiB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBub3QgZGlzYWJsZWRcblx0XHRcdGlmICghdGhpcy5kaXNwbGF5SXRlbXNbaV0uZGlzYWJsZWQpIHtcblx0XHRcdFx0dGhpcy5pbmRleCA9IGk7XG5cdFx0XHRcdHJldHVybiBlbGVtTGlzdFtpXS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtTGlzdFt0aGlzLmluZGV4XT8ubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgTGlzdEl0ZW1gIHRoYXQgcHJlY2VkZXMgdGhlIHNlbGVjdGVkIGl0ZW0gd2l0aGluIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0UHJldkl0ZW0oKTogTGlzdEl0ZW0ge1xuXHRcdGlmICh0aGlzLmluZGV4ID4gMCkge1xuXHRcdFx0dGhpcy5pbmRleC0tO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHRoZSBmaXJzdCBpbiB0aGUgbGlzdC5cblx0ICovXG5cdGhhc1ByZXZFbGVtZW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmluZGV4ID4gMCAmJiAoISh0aGlzLmluZGV4ID09PSAxKSB8fCAhdGhpcy5kaXNwbGF5SXRlbXNbMF0uZGlzYWJsZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBIVE1MRWxlbWVudGAgZm9yIHRoZSBpdGVtIHRoYXQgcHJlY2VkZXMgdGhlIHNlbGVjdGVkIGl0ZW0uXG5cdCAqL1xuXHRnZXRQcmV2RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG5cdFx0Ly8gT25seSByZXR1cm4gbmF0aXZlIGVsZW1lbnRzIGlmIHRoZXkgYXJlIHJlbmRlcmVkXG5cdFx0Y29uc3QgZWxlbUxpc3QgPSB0aGlzLmxpc3RFbGVtZW50TGlzdCA/IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKSA6IFtdO1xuXHRcdGlmICghZWxlbUxpc3QubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBTdGFydCBjaGVja2luZyBmcm9tIG5leHQgaW5kZXhcblx0XHQgKiBDb250aW51ZSBsb29waW5nIHRocm91Z2ggdGhlIGxpc3QgdW50aWwgYSBub24gZGlzYWJlbGVkIGVsZW1lbnQgaXMgZm91bmQgb3Jcblx0XHQgKiBlbmQgb2YgbGlzdCBpcyByZWFjaGVkXG5cdFx0ICovXG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMuaW5kZXggLSAxOyBpIDwgdGhpcy5pbmRleCAmJiBpID49IDA7IGktLSkge1xuXHRcdFx0Ly8gSWYgdGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBhcmUgbm90IGRpc2FibGVkXG5cdFx0XHRpZiAoIXRoaXMuZGlzcGxheUl0ZW1zW2ldLmRpc2FibGVkKSB7XG5cdFx0XHRcdHRoaXMuaW5kZXggPSBpO1xuXHRcdFx0XHRyZXR1cm4gZWxlbUxpc3RbaV0ubmF0aXZlRWxlbWVudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbUxpc3RbdGhpcy5pbmRleF0ubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgTGlzdEl0ZW1gIHRoYXQgaXMgc2VsZWN0ZWQgd2l0aGluIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0Q3VycmVudEl0ZW0oKTogTGlzdEl0ZW0ge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgMCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZGlzcGxheUl0ZW1zWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYEhUTUxFbGVtZW50YCBmb3IgdGhlIGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0Q3VycmVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgMCkge1xuXHRcdFx0cmV0dXJuIHRoaXMubGlzdEVsZW1lbnRMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmxpc3RFbGVtZW50TGlzdC50b0FycmF5KClbdGhpcy5pbmRleF0ubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpdGVtcyBhcyBhbiBBcnJheVxuXHQgKi9cblx0Z2V0TGlzdEl0ZW1zKCk6IEFycmF5PExpc3RJdGVtPiB7XG5cdFx0cmV0dXJuIHRoaXMuX2l0ZW1zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGl0ZW0ocykgaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0U2VsZWN0ZWQoKTogTGlzdEl0ZW1bXSB7XG5cdFx0bGV0IHNlbGVjdGVkID0gdGhpcy5nZXRMaXN0SXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKTtcblx0XHRpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1zIGFycmF5IGlucHV0IGxpc3Qgb2YgaXRlbXMgdG8gdGhlIGNvcnJlY3Qgc3RhdGUgYnkgdXBkYXRpbmcgdGhlIHNlbGVjdGVkIGl0ZW0ocykuXG5cdCAqL1xuXHRwcm9wYWdhdGVTZWxlY3RlZCh2YWx1ZTogQXJyYXk8TGlzdEl0ZW0+KTogdm9pZCB7XG5cdFx0Ly8gaWYgd2UgZ2V0IGEgbm9uLWFycmF5LCBsb2cgb3V0IGFuIGVycm9yIChzaW5jZSBpdCBpcyBvbmUpXG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9LnByb3BhZ2F0ZVNlbGVjdGVkIGV4cGVjdHMgYW4gQXJyYXk8TGlzdEl0ZW0+LCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG5cdFx0fVxuXHRcdHRoaXMub25JdGVtc1JlYWR5KCgpID0+IHtcblx0XHRcdGNvbnN0IHNlbGVjdGVkTmV3SXRlbXMgPSBbXTtcblx0XHRcdGZvciAobGV0IG5ld0l0ZW0gb2YgdmFsdWUpIHtcblx0XHRcdFx0aWYgKG5ld0l0ZW0gJiYgbmV3SXRlbS5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdC8vIGNvcHkgdGhlIGl0ZW1cblx0XHRcdFx0XHRsZXQgdGVtcE5ld0l0ZW06IHN0cmluZyB8IExpc3RJdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgbmV3SXRlbSk7XG5cdFx0XHRcdFx0Ly8gZGVsZXRlZCBzZWxlY3RlZCBiZWNhdXNlIGl0J3Mgd2hhdCB3ZSBfd2FudF8gdG8gY2hhbmdlXG5cdFx0XHRcdFx0ZGVsZXRlIHRlbXBOZXdJdGVtLnNlbGVjdGVkO1xuXHRcdFx0XHRcdC8vIHN0cmluZ2lmeSBmb3IgY29tcGFyZSBsYXRlclxuXHRcdFx0XHRcdHRlbXBOZXdJdGVtID0gSlNPTi5zdHJpbmdpZnkodGVtcE5ld0l0ZW0pO1xuXHRcdFx0XHRcdC8vIGFkZCB0byB0aGUgbGlzdCBvZiBzZWxlY3RlZCBpdGVtc1xuXHRcdFx0XHRcdHNlbGVjdGVkTmV3SXRlbXMucHVzaCh0ZW1wTmV3SXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gbG9vcCB0aHJvdWdoIHRoZSBsaXN0IGl0ZW1zIGFuZCB1cGRhdGUgdGhlIGBzZWxlY3RlZGAgc3RhdGUgZm9yIG1hdGNoaW5nIGl0ZW1zIGluIGB2YWx1ZWBcblx0XHRcdGZvciAobGV0IG9sZEl0ZW0gb2YgdGhpcy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHQvLyBmYXN0IHBhdGggd2hlbiBubyBpdGVtcyBhcmUgc2VsZWN0ZWRcblx0XHRcdFx0aWYgKHNlbGVjdGVkTmV3SXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0b2xkSXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gY29weSB0aGUgaXRlbVxuXHRcdFx0XHRsZXQgdGVtcE9sZEl0ZW06IHN0cmluZyB8IExpc3RJdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgb2xkSXRlbSk7XG5cdFx0XHRcdC8vIGRlbGV0ZWQgc2VsZWN0ZWQgYmVjYXVzZSBpdCdzIHdoYXQgd2UgX3dhbnRfIHRvIGNoYW5nZVxuXHRcdFx0XHRkZWxldGUgdGVtcE9sZEl0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHRcdC8vIHN0cmluZ2lmeSBmb3IgY29tcGFyZVxuXHRcdFx0XHR0ZW1wT2xkSXRlbSA9IEpTT04uc3RyaW5naWZ5KHRlbXBPbGRJdGVtKTtcblx0XHRcdFx0Zm9yIChsZXQgc2VsZWN0ZWROZXdJdGVtIG9mIHNlbGVjdGVkTmV3SXRlbXMpIHtcblx0XHRcdFx0XHQvLyBkbyB0aGUgY29tcGFyZVxuXHRcdFx0XHRcdGlmICh0ZW1wT2xkSXRlbS5pbmNsdWRlcyhzZWxlY3RlZE5ld0l0ZW0pKSB7XG5cdFx0XHRcdFx0XHRvbGRJdGVtLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdC8vIGlmIHdlJ3ZlIGZvdW5kIGEgbWF0Y2hpbmcgaXRlbSwgd2UgY2FuIHN0b3AgbG9vcGluZ1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9sZEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyBmb2N1cyBpbiB0aGUgbGlzdCwgZWZmZWN0aXZlbHkgYSB3cmFwcGVyIGZvciBgZ2V0Q3VycmVudEVsZW1lbnQoKS5mb2N1cygpYFxuXHQgKi9cblx0aW5pdEZvY3VzKCkge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgMCkge1xuXHRcdFx0dGhpcy51cGRhdGVJbmRleCgpO1xuXHRcdH1cblxuXHRcdHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdH0pO1xuXHR9XG5cblx0dXBkYXRlSW5kZXgoKSB7XG5cdFx0Ly8gaW5pdGlhbGl6ZSBpbmRleCBvbiB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbSBvclxuXHRcdC8vIG9uIHRoZSBuZXh0IG5vbiBkaXNhYmxlZCBpdGVtIGlmIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZFxuXHRcdC8vIGluIGNhc2UsIGlmIGFsbCBpdGVtcyBhcmUgZGlzYWJsZWQsIHRoZSBpbmRleCB2YWx1ZSB3aWxsIHJlbWFpbiBzYW1lXG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmdldFNlbGVjdGVkKCk7XG5cdFx0aWYgKHNlbGVjdGVkLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5pbmRleCA9IHRoaXMuZGlzcGxheUl0ZW1zLmluZGV4T2Yoc2VsZWN0ZWRbMF0pO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pbmRleCA8IDAgJiYgdGhpcy5oYXNOZXh0RWxlbWVudCgpKSB7XG5cdFx0XHR0aGlzLmdldE5leHRFbGVtZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIGtleWJvYXJkIGFjY2Vzc2liaWxpdHkgZm9yIG5hdmlnYXRpb24gYW5kIHNlbGVjdGlvbiB3aXRoaW4gYSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdG5hdmlnYXRlTGlzdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmIChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiIFwiKSB7XG5cdFx0XHRpZiAodGhpcy5saXN0RWxlbWVudExpc3Quc29tZShvcHRpb24gPT4gb3B0aW9uLm5hdGl2ZUVsZW1lbnQgPT09IGV2ZW50LnRhcmdldCkpIHtcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdH1cblx0XHRcdGlmIChldmVudC5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHR0aGlzLmRvQ2xpY2soZXZlbnQsIHRoaXMuZ2V0Q3VycmVudEl0ZW0oKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIgfHwgZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcblx0XHRcdFx0aWYgKHRoaXMuaGFzTmV4dEVsZW1lbnQoKSkge1xuXHRcdFx0XHRcdHRoaXMuZ2V0TmV4dEVsZW1lbnQoKT8uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJlbmRcIiB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmJsdXJJbnRlbnQuZW1pdChcImJvdHRvbVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG5cdFx0XHRcdGlmICh0aGlzLmhhc1ByZXZFbGVtZW50KCkpIHtcblx0XHRcdFx0XHR0aGlzLmdldFByZXZFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoeyAgYmxvY2s6IFwibmVhcmVzdFwiIH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuYmx1ckludGVudC5lbWl0KFwidG9wXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5oaWdobGlnaHRlZEl0ZW0gPSB0aGlzLmdldEl0ZW1JZCh0aGlzLmluZGV4KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgaXRlbSBvciBpdGVtcyBhZnRlciBhIG1vdXNlIGNsaWNrIGV2ZW50IGhhcyBvY2N1cnJlZC5cblx0ICovXG5cdGRvQ2xpY2soZXZlbnQsIGl0ZW0pIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGlmIChpdGVtICYmICFpdGVtLmRpc2FibGVkKSB7XG5cdFx0XHR0aGlzLmxpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0XHRpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0Ly8gcmVzZXQgdGhlIHNlbGVjdGlvblxuXHRcdFx0XHRmb3IgKGxldCBvdGhlckl0ZW0gb2YgdGhpcy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHRcdGlmIChpdGVtICE9PSBvdGhlckl0ZW0pIHsgb3RoZXJJdGVtLnNlbGVjdGVkID0gZmFsc2U7IH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbmRleCA9IHRoaXMuZGlzcGxheUl0ZW1zLmluZGV4T2YoaXRlbSk7XG5cdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdFx0dGhpcy5kb0VtaXRTZWxlY3QoZmFsc2UpO1xuXHRcdFx0dGhpcy5hcHBSZWYudGljaygpO1xuXHRcdH1cblx0fVxuXG5cdG9uSXRlbUZvY3VzKGluZGV4KSB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKVtpbmRleF0ubmF0aXZlRWxlbWVudDtcblx0XHRlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW0tLWhpZ2hsaWdodGVkXCIpO1xuXHRcdGVsZW1lbnQudGFiSW5kZXggPSAwO1xuXHR9XG5cblx0b25JdGVtQmx1cihpbmRleCkge1xuXHRcdGNvbnN0IGVsZW1lbnQgPSB0aGlzLmxpc3RFbGVtZW50TGlzdC50b0FycmF5KClbaW5kZXhdLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiY2RzLS1saXN0LWJveF9fbWVudS1pdGVtLS1oaWdobGlnaHRlZFwiKTtcblx0XHRlbGVtZW50LnRhYkluZGV4ID0gLTE7XG5cdH1cblxuXHQvKipcblx0ICogRW1pdHMgdGhlIHNjcm9sbCBldmVudCBvZiB0aGUgb3B0aW9ucyBsaXN0XG5cdCAqL1xuXHRlbWl0U2Nyb2xsKGV2ZW50KSB7XG5cdFx0Y29uc3QgYXRUb3A6IGJvb2xlYW4gPSBldmVudC5zcmNFbGVtZW50LnNjcm9sbFRvcCA9PT0gMDtcblx0XHRjb25zdCBhdEJvdHRvbTogYm9vbGVhbiA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxUb3AgPT09IGV2ZW50LnNyY0VsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXHRcdGNvbnN0IGN1c3RvbVNjcm9sbEV2ZW50ID0geyBhdFRvcCwgYXRCb3R0b20sIGV2ZW50IH07XG5cdFx0dGhpcy5zY3JvbGwuZW1pdChjdXN0b21TY3JvbGxFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU3Vic2NyaWJlIHRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gYW4gaW50ZXJuYWwgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgcmVzb2x2ZSBvbmNlIHRoZSBpdGVtcyBhcmUgcmVhZHlcblx0ICovXG5cdG9uSXRlbXNSZWFkeShzdWJjcmlwdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgc3Vic2NyaXB0aW9uIHdpbGwgYXV0byB1bnN1YnNjcmliZSBiZWNhdXNlIG9mIHRoZSBgZmlyc3QoKWAgcGlwZVxuXHRcdCh0aGlzLl9pdGVtc1JlYWR5IHx8IG9mKHRydWUpKS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZShzdWJjcmlwdGlvbik7XG5cdH1cblxuXHRyZW9yZGVyU2VsZWN0ZWQobW92ZUZvY3VzID0gdHJ1ZSk6IHZvaWQge1xuXHRcdHRoaXMuZGlzcGxheUl0ZW1zID0gWy4uLnRoaXMuZ2V0U2VsZWN0ZWQoKSwgLi4udGhpcy5nZXRMaXN0SXRlbXMoKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCldO1xuXHRcdGlmIChtb3ZlRm9jdXMpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnVwZGF0ZUluZGV4KCk7XG5cdFx0XHRcdHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5nZXRJdGVtSWQodGhpcy5pbmRleCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
643
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZHJvcGRvd24vbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUdaLFNBQVMsRUFFVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUlsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBc0VILE1BQU0sT0FBTyxZQUFZO0lBMEd4Qjs7T0FFRztJQUNILFlBQW1CLFVBQXNCLEVBQVksSUFBVSxFQUFZLE1BQXNCO1FBQTlFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBWSxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUEzR3hGLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUEwQnpEOztXQUVHO1FBQ00sWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDbkQ7O1dBRUc7UUFDTyxXQUFNLEdBQXNFLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekc7O1dBRUc7UUFDTyxXQUFNLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkU7Ozs7Ozs7O1dBUUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLNUQ7OztX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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQTJESDtvQkFDUCxTQUFTLEVBQUU7d0JBQ1Y7NEJBQ0MsT0FBTyxFQUFFLG9CQUFvQjs0QkFDN0IsV0FBVyxjQUFjO3lCQUN6QjtxQkFDRDtpQkFDRDtpSkFHUyxTQUFTO3NCQUFqQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBeUJHLE9BQU87c0JBQWYsS0FBSztnQkFJSSxNQUFNO3NCQUFmLE1BQU07Z0JBSUcsTUFBTTtzQkFBZixNQUFNO2dCQVVHLFVBQVU7c0JBQW5CLE1BQU07Z0JBSThCLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLMUIsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBcUI4QixlQUFlO3NCQUFsRCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdE9uRGVzdHJveSxcblx0RXZlbnRFbWl0dGVyLFxuXHRUZW1wbGF0ZVJlZixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Vmlld0NoaWxkLFxuXHRFbGVtZW50UmVmLFxuXHRWaWV3Q2hpbGRyZW4sXG5cdFF1ZXJ5TGlzdCxcblx0QXBwbGljYXRpb25SZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBJMThuIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgQWJzdHJhY3REcm9wZG93blZpZXcgfSBmcm9tIFwiLi4vYWJzdHJhY3QtZHJvcGRvd24tdmlldy5jbGFzc1wiO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tIFwiLi4vbGlzdC1pdGVtLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgd2F0Y2hGb2N1c0p1bXAgfSBmcm9tIFwiLi4vZHJvcGRvd250b29sc1wiO1xuaW1wb3J0IHsgU2Nyb2xsQ3VzdG9tRXZlbnQgfSBmcm9tIFwiLi9zY3JvbGwtY3VzdG9tLWV2ZW50LmludGVyZmFjZVwiO1xuXG5cbi8qKlxuICogYGBgaHRtbFxuICogPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJsaXN0SXRlbXNcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICogYGBgXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBsaXN0SXRlbXMgPSBbXG4gKiBcdHtcbiAqIFx0XHRjb250ZW50OiBcIml0ZW0gb25lXCIsXG4gKiBcdFx0c2VsZWN0ZWQ6IGZhbHNlXG4gKiBcdH0sXG4gKiBcdHtcbiAqIFx0XHRjb250ZW50OiBcIml0ZW0gdHdvXCIsXG4gKiBcdFx0c2VsZWN0ZWQ6IGZhbHNlLFxuICogXHR9LFxuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIHRocmVlXCIsXG4gKiBcdFx0c2VsZWN0ZWQ6IGZhbHNlXG4gKiBcdH0sXG4gKiBcdHtcbiAqIFx0XHRjb250ZW50OiBcIml0ZW0gZm91clwiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZVxuICogXHR9XG4gKiBdO1xuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJjZHMtZHJvcGRvd24tbGlzdCwgaWJtLWRyb3Bkb3duLWxpc3RcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8dWxcblx0XHRcdCNsaXN0XG5cdFx0XHRbaWRdPVwibGlzdElkXCJcblx0XHRcdHJvbGU9XCJsaXN0Ym94XCJcblx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudSBjZHMtLW11bHRpLXNlbGVjdFwiXG5cdFx0XHQoc2Nyb2xsKT1cImVtaXRTY3JvbGwoJGV2ZW50KVwiXG5cdFx0XHQoa2V5ZG93bik9XCJuYXZpZ2F0ZUxpc3QoJGV2ZW50KVwiXG5cdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0W2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0W2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImhpZ2hsaWdodGVkSXRlbVwiPlxuXHRcdFx0PGxpXG5cdFx0XHRcdHJvbGU9XCJvcHRpb25cIlxuXHRcdFx0XHQqbmdGb3I9XCJsZXQgaXRlbSBvZiBkaXNwbGF5SXRlbXM7IGxldCBpID0gaW5kZXhcIlxuXHRcdFx0XHQoY2xpY2spPVwiZG9DbGljaygkZXZlbnQsIGl0ZW0pXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW1cIlxuXHRcdFx0XHRbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuXHRcdFx0XHRbaWRdPVwiZ2V0SXRlbUlkKGkpXCJcblx0XHRcdFx0W2F0dHIudGFiaW5kZXhdPVwiaGlnaGxpZ2h0ZWRJdGVtID09PSBnZXRJdGVtSWQoaSkgPyAwIDogbnVsbFwiXG5cdFx0XHRcdFthdHRyLnRpdGxlXT1cIiBzaG93VGl0bGVzID8gaXRlbS5jb250ZW50IDogbnVsbFwiXG5cdFx0XHRcdFthdHRyLmRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG5cdFx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveF9fbWVudS1pdGVtLS1hY3RpdmUnOiBpdGVtLnNlbGVjdGVkLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94X19tZW51LWl0ZW0tLWhpZ2hsaWdodGVkJzogaGlnaGxpZ2h0ZWRJdGVtID09PSBnZXRJdGVtSWQoaSlcblx0XHRcdFx0fVwiPlxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0I2xpc3RJdGVtXG5cdFx0XHRcdFx0dGFiaW5kZXg9XCItMVwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW1fX29wdGlvblwiPlxuXHRcdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRcdCpuZ0lmPVwiIWxpc3RUcGwgJiYgdHlwZSA9PT0gJ211bHRpJ1wiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tZm9ybS1pdGVtIGNkcy0tY2hlY2tib3gtd3JhcHBlclwiPlxuXHRcdFx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0XHRcdFthdHRyLmRhdGEtY29udGFpbmVkLWNoZWNrYm94LXN0YXRlXT1cIml0ZW0uc2VsZWN0ZWRcIlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tY2hlY2tib3gtbGFiZWxcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWNoZWNrYm94XCJcblx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0XHRcdFtjaGVja2VkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuXHRcdFx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcblx0XHRcdFx0XHRcdFx0XHR0YWJpbmRleD1cIi0xXCI+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiY2RzLS1jaGVja2JveC1hcHBlYXJhbmNlXCI+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tY2hlY2tib3gtbGFiZWwtdGV4dFwiPnt7aXRlbS5jb250ZW50fX08L3NwYW4+XG5cdFx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGlzdFRwbCAmJiB0eXBlID09PSAnc2luZ2xlJ1wiPnt7aXRlbS5jb250ZW50fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHQqbmdJZj1cIiFsaXN0VHBsICYmIHR5cGUgPT09ICdzaW5nbGUnXCJcblx0XHRcdFx0XHRcdGNkc0ljb249XCJjaGVja21hcmtcIlxuXHRcdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pdGVtX19zZWxlY3RlZC1pY29uXCI+XG5cdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlXG5cdFx0XHRcdFx0XHQqbmdJZj1cImxpc3RUcGxcIlxuXHRcdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtfVwiXG5cdFx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0VHBsXCI+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2xpPlxuXHRcdDwvdWw+YCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogQWJzdHJhY3REcm9wZG93blZpZXcsXG5cdFx0XHR1c2VFeGlzdGluZzogRHJvcGRvd25MaXN0XG5cdFx0fVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duTGlzdCBpbXBsZW1lbnRzIEFic3RyYWN0RHJvcGRvd25WaWV3LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRzdGF0aWMgbGlzdENvdW50ID0gMDtcblx0QElucHV0KCkgYXJpYUxhYmVsID0gdGhpcy5pMThuLmdldCgpLkRST1BET1dOX0xJU1QuTEFCRUw7XG5cdC8qKlxuXHQgKiBUaGUgbGlzdCBpdGVtcyBiZWxvbmdpbmcgdG8gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0QElucHV0KCkgc2V0IGl0ZW1zKHZhbHVlOiBBcnJheTxMaXN0SXRlbT4gfCBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4pIHtcblx0XHRpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSkge1xuXHRcdFx0aWYgKHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHRcdHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9pdGVtc1JlYWR5ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKG9ic2VydmVyKSA9PiB7XG5cdFx0XHRcdHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uID0gdmFsdWUuc3Vic2NyaWJlKHYgPT4ge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlTGlzdCh2KTtcblx0XHRcdFx0XHRvYnNlcnZlci5uZXh0KHRydWUpO1xuXHRcdFx0XHRcdG9ic2VydmVyLmNvbXBsZXRlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLm9uSXRlbXNSZWFkeShudWxsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy51cGRhdGVMaXN0KHZhbHVlKTtcblx0XHR9XG5cdFx0dGhpcy5fb3JpZ2luYWxJdGVtcyA9IHZhbHVlO1xuXHR9XG5cblx0Z2V0IGl0ZW1zKCk6IEFycmF5PExpc3RJdGVtPiB8IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+PiB7XG5cdFx0cmV0dXJuIHRoaXMuX29yaWdpbmFsSXRlbXM7XG5cdH1cblx0LyoqXG5cdCAqIFRlbXBsYXRlIHRvIGJpbmQgdG8gaXRlbXMgaW4gdGhlIGBEcm9wZG93bkxpc3RgIChvcHRpb25hbCkuXG5cdCAqL1xuXHRASW5wdXQoKSBsaXN0VHBsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblx0LyoqXG5cdCAqIEV2ZW50IHRvIGVtaXQgc2VsZWN0aW9uIG9mIGEgbGlzdCBpdGVtIHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0OiBFdmVudEVtaXR0ZXI8eyBpdGVtOiBMaXN0SXRlbSwgaXNVcGRhdGU/OiBib29sZWFuIH0gfCBMaXN0SXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0LyoqXG5cdCAqIEV2ZW50IHRvIGVtaXQgc2Nyb2xsIGV2ZW50IG9mIGEgbGlzdCB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0QE91dHB1dCgpIHNjcm9sbDogRXZlbnRFbWl0dGVyPFNjcm9sbEN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0LyoqXG5cdCAqIEV2ZW50IHRvIHN1Z2dlc3QgYSBibHVyIG9uIHRoZSB2aWV3LlxuXHQgKiBFbWl0cyBfYWZ0ZXJfIHRoZSBmaXJzdC9sYXN0IGl0ZW0gaGFzIGJlZW4gZm9jdXNlZC5cblx0ICogZXguXG5cdCAqIEFycm93VXAgLT4gZm9jdXMgZmlyc3QgaXRlbVxuXHQgKiBBcnJvd1VwIC0+IGVtaXQgZXZlbnRcblx0ICpcblx0ICogV2hlbiB0aGlzIGV2ZW50IGZpcmVzIGZvY3VzIHNob3VsZCBiZSBwbGFjZWQgb24gc29tZSBlbGVtZW50IG91dHNpZGUgb2YgdGhlIGxpc3QgLSBibHVycmluZyB0aGUgbGlzdCBhcyBhIHJlc3VsdFxuXHQgKi9cblx0QE91dHB1dCgpIGJsdXJJbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFwidG9wXCIgfCBcImJvdHRvbVwiPigpO1xuXHQvKipcblx0ICogTWFpbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3IERPTSBlbGVtZW50IGZvciB0aGUgdW5vcmRlcmVkIGxpc3Qgb2YgaXRlbXMgd2l0aGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdEBWaWV3Q2hpbGQoXCJsaXN0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3Q6IEVsZW1lbnRSZWY7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBgRHJvcGRvd25MaXN0YCBzdXBwb3J0cyBzZWxlY3RpbmcgbXVsdGlwbGUgaXRlbXMgYXMgb3Bwb3NlZCB0byBzaW5nbGVcblx0ICogaXRlbSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRASW5wdXQoKSB0eXBlOiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiID0gXCJzaW5nbGVcIjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIHNob3cgdGl0bGUgYXR0cmlidXRlIG9yIG5vdFxuXHQgKi9cblx0QElucHV0KCkgc2hvd1RpdGxlcyA9IHRydWU7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbmRlcmluZyBzaXplIG9mIHRoZSBgRHJvcGRvd25MaXN0YCBpbnB1dCBjb21wb25lbnQuXG5cdCAqL1xuXHRwdWJsaWMgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJtZFwiO1xuXHRwdWJsaWMgbGlzdElkID0gYGxpc3Rib3gtJHtEcm9wZG93bkxpc3QubGlzdENvdW50Kyt9YDtcblx0cHVibGljIGhpZ2hsaWdodGVkSXRlbSA9IG51bGw7XG5cdC8qKlxuXHQgKiBIb2xkcyB0aGUgbGlzdCBvZiBpdGVtcyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICogSXQgZGlmZmVycyBmcm9tIHRoZSB0aGUgY29tcGxldGUgc2V0IG9mIGl0ZW1zIHdoZW4gZmlsdGVyaW5nIGlzIHVzZWQgKGJ1dFxuXHQgKiBpdCBpcyBhbHdheXMgYSBzdWJzZXQgb2YgdGhlIHRvdGFsIGl0ZW1zIGluIGBEcm9wZG93bkxpc3RgKS5cblx0ICovXG5cdHB1YmxpYyBkaXNwbGF5SXRlbXM6IEFycmF5PExpc3RJdGVtPiA9IFtdO1xuXHQvKipcblx0ICogTWFpbnRhaW5zIHRoZSBpbmRleCBmb3IgdGhlIHNlbGVjdGVkIGl0ZW0gd2l0aGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdHByb3RlY3RlZCBpbmRleCA9IC0xO1xuXHQvKipcblx0ICogQW4gYXJyYXkgaG9sZGluZyB0aGUgSFRNTCBsaXN0IGVsZW1lbnRzIGluIHRoZSB2aWV3LlxuXHQgKi9cblx0QFZpZXdDaGlsZHJlbihcImxpc3RJdGVtXCIpIHByb3RlY3RlZCBsaXN0RWxlbWVudExpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblx0LyoqXG5cdCAqIE9ic2VydmFibGUgYm91bmQgdG8ga2V5ZG93biBldmVudHMgdG8gY29udHJvbCBmaWx0ZXJpbmcuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZm9jdXNKdW1wO1xuXHQvKipcblx0ICogVHJhY2tzIHRoZSBjdXJyZW50IChpZiBhbnkpIHN1YnNjcmlwdGlvbiB0byB0aGUgaXRlbXMgb2JzZXJ2YWJsZSBzbyB3ZSBjYW4gY2xlYW4gdXAgd2hlbiB0aGUgaW5wdXQgaXMgdXBkYXRlZC5cblx0ICovXG5cdHByb3RlY3RlZCBfaXRlbXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblx0LyoqXG5cdCAqIFVzZWQgdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBpdGVtcyBwYXNzZWQgdG8gdGhlIHNldHRlci5cblx0ICovXG5cdHByb3RlY3RlZCBfb3JpZ2luYWxJdGVtczogQXJyYXk8TGlzdEl0ZW0+IHwgT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbT4+O1xuXHQvKipcblx0ICogVXNlZnVsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpdGVtcywgc2hvdWxkIGJlIGFjY2Vzc2VkIHZpYSBgZ2V0TGlzdEl0ZW1zYC5cblx0ICovXG5cdHByb3RlY3RlZCBfaXRlbXM6IEFycmF5PExpc3RJdGVtPiA9IFtdO1xuXHQvKipcblx0ICogVXNlZCB0byB3YWl0IGZvciBpdGVtcyBpbiBjYXNlIHRoZXkgYXJlIHBhc3NlZCB0aHJvdWdoIGFuIG9ic2VydmFibGUuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgX2l0ZW1zUmVhZHk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGkxOG46IEkxOG4sIHByb3RlY3RlZCBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYXJyYXkgb2YgbGlzdCBpdGVtcyBhbmQgaW5kZXggb2YgdGhlIHNlbGVjdGVkIGl0ZW0gYWZ0ZXIgdmlldyBoYXMgcmVuZGVyZWQuXG5cdCAqIEFkZGl0aW9uYWxseSwgYW55IE9ic2VydmFibGVzIGZvciB0aGUgYERyb3Bkb3duTGlzdGAgYXJlIGluaXRpYWxpemVkLlxuXHQgKi9cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuaW5kZXggPSB0aGlzLmdldExpc3RJdGVtcygpLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xuXHRcdHRoaXMuc2V0dXBGb2N1c09ic2VydmFibGUoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuZG9FbWl0U2VsZWN0KHRydWUpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYW55IE9ic2VydmFibGVzIG9uIGRlc3RydWN0aW9uIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqL1xuXHRuZ09uRGVzdHJveSgpIHtcblx0XHRpZiAodGhpcy5mb2N1c0p1bXApIHtcblx0XHRcdHRoaXMuZm9jdXNKdW1wLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9pdGVtc1N1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5faXRlbXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRkb0VtaXRTZWxlY3QoaXNVcGRhdGUgPSB0cnVlKSB7XG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0dGhpcy5zZWxlY3QuZW1pdCh7IGl0ZW06IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKSwgaXNVcGRhdGU6IGlzVXBkYXRlIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBhYnVzZSBqYXZhc2NyaXB0cyBvYmplY3QgbXV0YWJpbGl0eSB1bnRpbCB3ZSBjYW4gYnJlYWsgdGhlIEFQSSBhbmQgc3dpdGNoIHRvXG5cdFx0XHQvLyB7IGl0ZW1zOiBbXSwgaXNVcGRhdGU6IHRydWUgfVxuXHRcdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmdldFNlbGVjdGVkKCkgfHwgW107XG5cdFx0XHRzZWxlY3RlZFtcImlzVXBkYXRlXCJdID0gaXNVcGRhdGU7XG5cdFx0XHR0aGlzLnNlbGVjdC5lbWl0KHNlbGVjdGVkKTtcblx0XHR9XG5cdH1cblxuXHRnZXRJdGVtSWQoaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiBgJHt0aGlzLmxpc3RJZH0tJHtpbmRleH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGRpc3BsYXllZCBsaXN0IG9mIGl0ZW1zIGFuZCB0aGVuIHJldHJpZXZlcyB0aGUgbW9zdCBjdXJyZW50IHByb3BlcnRpZXMgZm9yIHRoZSBgRHJvcGRvd25MaXN0YCBmcm9tIHRoZSBET00uXG5cdCAqL1xuXHR1cGRhdGVMaXN0KGl0ZW1zOiBMaXN0SXRlbVtdKSB7XG5cdFx0dGhpcy5faXRlbXMgPSBpdGVtcy5tYXAoaXRlbSA9PiBPYmplY3QuYXNzaWduKHt9LCBpdGVtKSk7XG5cdFx0dGhpcy5kaXNwbGF5SXRlbXMgPSB0aGlzLl9pdGVtcztcblx0XHR0aGlzLnVwZGF0ZUluZGV4KCk7XG5cdFx0dGhpcy5zZXR1cEZvY3VzT2JzZXJ2YWJsZSgpO1xuXHRcdHRoaXMuZG9FbWl0U2VsZWN0KCk7XG5cdH1cblxuXHQvKipcblx0ICogRmlsdGVycyB0aGUgaXRlbXMgYmVpbmcgZGlzcGxheWVkIGluIHRoZSBET00gbGlzdC5cblx0ICovXG5cdGZpbHRlckJ5KHF1ZXJ5ID0gXCJcIikge1xuXHRcdGlmIChxdWVyeSkge1xuXHRcdFx0dGhpcy5kaXNwbGF5SXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcygpLmZpbHRlcihpdGVtID0+IGl0ZW0uY29udGVudC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpKTtcblx0XHRcdC8vIFJlc2V0IGluZGV4IGlmIGl0ZW1zIHdlcmUgZm91bmRcblx0XHRcdC8vIFByZXZlbnQgc2VsZWN0aW5nIGluZGV4IGluIGxpc3QgdGhhdCBhcmUgdW5kZWZpbmVkLlxuXHRcdFx0aWYgKHRoaXMuZGlzcGxheUl0ZW1zKSB7XG5cdFx0XHRcdHRoaXMuaW5kZXggPSAwO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRpc3BsYXlJdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51cGRhdGVJbmRleCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIChvciByZS1pbml0aWFsaXplcykgdGhlIE9ic2VydmFibGUgdGhhdCBoYW5kbGVzIHN3aXRjaGluZyBmb2N1cyB0byBhbiBlbGVtZW50IGJhc2VkIG9uXG5cdCAqIGtleSBpbnB1dCBtYXRjaGluZyB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBpdGVtIGluIHRoZSBsaXN0LlxuXHQgKi9cblx0c2V0dXBGb2N1c09ic2VydmFibGUoKSB7XG5cdFx0aWYgKCF0aGlzLmxpc3QpIHsgcmV0dXJuOyB9XG5cdFx0aWYgKHRoaXMuZm9jdXNKdW1wKSB7XG5cdFx0XHR0aGlzLmZvY3VzSnVtcC51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRsZXQgZWxMaXN0ID0gQXJyYXkuZnJvbSh0aGlzLmxpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwibGlcIikpO1xuXHRcdHRoaXMuZm9jdXNKdW1wID0gd2F0Y2hGb2N1c0p1bXAodGhpcy5saXN0Lm5hdGl2ZUVsZW1lbnQsIGVsTGlzdClcblx0XHRcdC5zdWJzY3JpYmUoZWwgPT4ge1xuXHRcdFx0XHRlbC5mb2N1cygpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYExpc3RJdGVtYCB0aGF0IGlzIHN1YnNlcXVlbnQgdG8gdGhlIHNlbGVjdGVkIGl0ZW0gaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0TmV4dEl0ZW0oKTogTGlzdEl0ZW0ge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgdGhpcy5kaXNwbGF5SXRlbXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0dGhpcy5pbmRleCsrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0aGFzTmV4dEVsZW1lbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW5kZXggPCB0aGlzLmRpc3BsYXlJdGVtcy5sZW5ndGggLSAxICYmXG5cdFx0XHQoISh0aGlzLmluZGV4ID09PSB0aGlzLmRpc3BsYXlJdGVtcy5sZW5ndGggLSAyKSB8fCAhdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleCArIDFdLmRpc2FibGVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgSFRNTEVsZW1lbnRgIGZvciB0aGUgaXRlbSB0aGF0IGlzIHN1YnNlcXVlbnQgdG8gdGhlIHNlbGVjdGVkIGl0ZW0uXG5cdCAqL1xuXHRnZXROZXh0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG5cdFx0Ly8gT25seSByZXR1cm4gbmF0aXZlIGVsZW1lbnRzIGlmIHRoZXkgYXJlIHJlbmRlcmVkXG5cdFx0Y29uc3QgZWxlbUxpc3QgPSB0aGlzLmxpc3RFbGVtZW50TGlzdCA/IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKSA6IFtdO1xuXHRcdGlmICghZWxlbUxpc3QubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBTdGFydCBjaGVja2luZyBmcm9tIG5leHQgaW5kZXhcblx0XHQgKiBDb250aW51ZSBsb29waW5nIHRocm91Z2ggdGhlIGxpc3QgdW50aWwgYSBub24gZGlzYWJlbGVkIGVsZW1lbnQgaXMgZm91bmQgb3Jcblx0XHQgKiBlbmQgb2YgbGlzdCBpcyByZWFjaGVkXG5cdFx0ICovXG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMuaW5kZXggKyAxOyBpIDwgZWxlbUxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdC8vIElmIHRoZSB2YWx1ZXMgaW4gdGhlIGxpc3QgYXJlIG5vdCBkaXNhYmxlZFxuXHRcdFx0aWYgKCF0aGlzLmRpc3BsYXlJdGVtc1tpXS5kaXNhYmxlZCkge1xuXHRcdFx0XHR0aGlzLmluZGV4ID0gaTtcblx0XHRcdFx0cmV0dXJuIGVsZW1MaXN0W2ldLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVsZW1MaXN0W3RoaXMuaW5kZXhdPy5uYXRpdmVFbGVtZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBMaXN0SXRlbWAgdGhhdCBwcmVjZWRlcyB0aGUgc2VsZWN0ZWQgaXRlbSB3aXRoaW4gYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRQcmV2SXRlbSgpOiBMaXN0SXRlbSB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPiAwKSB7XG5cdFx0XHR0aGlzLmluZGV4LS07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmRpc3BsYXlJdGVtc1t0aGlzLmluZGV4XTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2VsZWN0ZWQgaXRlbSBpcyBub3QgdGhlIGZpcnN0IGluIHRoZSBsaXN0LlxuXHQgKi9cblx0aGFzUHJldkVsZW1lbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW5kZXggPiAwICYmICghKHRoaXMuaW5kZXggPT09IDEpIHx8ICF0aGlzLmRpc3BsYXlJdGVtc1swXS5kaXNhYmxlZCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYEhUTUxFbGVtZW50YCBmb3IgdGhlIGl0ZW0gdGhhdCBwcmVjZWRlcyB0aGUgc2VsZWN0ZWQgaXRlbS5cblx0ICovXG5cdGdldFByZXZFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcblx0XHQvLyBPbmx5IHJldHVybiBuYXRpdmUgZWxlbWVudHMgaWYgdGhleSBhcmUgcmVuZGVyZWRcblx0XHRjb25zdCBlbGVtTGlzdCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0ID8gdGhpcy5saXN0RWxlbWVudExpc3QudG9BcnJheSgpIDogW107XG5cdFx0aWYgKCFlbGVtTGlzdC5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIFN0YXJ0IGNoZWNraW5nIGZyb20gbmV4dCBpbmRleFxuXHRcdCAqIENvbnRpbnVlIGxvb3BpbmcgdGhyb3VnaCB0aGUgbGlzdCB1bnRpbCBhIG5vbiBkaXNhYmVsZWQgZWxlbWVudCBpcyBmb3VuZCBvclxuXHRcdCAqIGVuZCBvZiBsaXN0IGlzIHJlYWNoZWRcblx0XHQgKi9cblx0XHRmb3IgKGxldCBpID0gdGhpcy5pbmRleCAtIDE7IGkgPCB0aGlzLmluZGV4ICYmIGkgPj0gMDsgaS0tKSB7XG5cdFx0XHQvLyBJZiB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBub3QgZGlzYWJsZWRcblx0XHRcdGlmICghdGhpcy5kaXNwbGF5SXRlbXNbaV0uZGlzYWJsZWQpIHtcblx0XHRcdFx0dGhpcy5pbmRleCA9IGk7XG5cdFx0XHRcdHJldHVybiBlbGVtTGlzdFtpXS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtTGlzdFt0aGlzLmluZGV4XS5uYXRpdmVFbGVtZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBMaXN0SXRlbWAgdGhhdCBpcyBzZWxlY3RlZCB3aXRoaW4gYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRDdXJyZW50SXRlbSgpOiBMaXN0SXRlbSB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbMF07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmRpc3BsYXlJdGVtc1t0aGlzLmluZGV4XTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgSFRNTEVsZW1lbnRgIGZvciB0aGUgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRDdXJyZW50RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5saXN0RWxlbWVudExpc3QuZmlyc3QubmF0aXZlRWxlbWVudDtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKVt0aGlzLmluZGV4XS5uYXRpdmVFbGVtZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGl0ZW1zIGFzIGFuIEFycmF5XG5cdCAqL1xuXHRnZXRMaXN0SXRlbXMoKTogQXJyYXk8TGlzdEl0ZW0+IHtcblx0XHRyZXR1cm4gdGhpcy5faXRlbXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aGUgc2VsZWN0ZWQgaXRlbShzKSBpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRTZWxlY3RlZCgpOiBMaXN0SXRlbVtdIHtcblx0XHRsZXQgc2VsZWN0ZWQgPSB0aGlzLmdldExpc3RJdGVtcygpLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xuXHRcdGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIHNlbGVjdGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybXMgYXJyYXkgaW5wdXQgbGlzdCBvZiBpdGVtcyB0byB0aGUgY29ycmVjdCBzdGF0ZSBieSB1cGRhdGluZyB0aGUgc2VsZWN0ZWQgaXRlbShzKS5cblx0ICovXG5cdHByb3BhZ2F0ZVNlbGVjdGVkKHZhbHVlOiBBcnJheTxMaXN0SXRlbT4pOiB2b2lkIHtcblx0XHQvLyBpZiB3ZSBnZXQgYSBub24tYXJyYXksIGxvZyBvdXQgYW4gZXJyb3IgKHNpbmNlIGl0IGlzIG9uZSlcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0ucHJvcGFnYXRlU2VsZWN0ZWQgZXhwZWN0cyBhbiBBcnJheTxMaXN0SXRlbT4sIGdvdCAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcblx0XHR9XG5cdFx0dGhpcy5vbkl0ZW1zUmVhZHkoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgc2VsZWN0ZWROZXdJdGVtcyA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgbmV3SXRlbSBvZiB2YWx1ZSkge1xuXHRcdFx0XHRpZiAobmV3SXRlbSAmJiBuZXdJdGVtLnNlbGVjdGVkKSB7XG5cdFx0XHRcdFx0Ly8gY29weSB0aGUgaXRlbVxuXHRcdFx0XHRcdGxldCB0ZW1wTmV3SXRlbTogc3RyaW5nIHwgTGlzdEl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBuZXdJdGVtKTtcblx0XHRcdFx0XHQvLyBkZWxldGVkIHNlbGVjdGVkIGJlY2F1c2UgaXQncyB3aGF0IHdlIF93YW50XyB0byBjaGFuZ2Vcblx0XHRcdFx0XHRkZWxldGUgdGVtcE5ld0l0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHRcdFx0Ly8gc3RyaW5naWZ5IGZvciBjb21wYXJlIGxhdGVyXG5cdFx0XHRcdFx0dGVtcE5ld0l0ZW0gPSBKU09OLnN0cmluZ2lmeSh0ZW1wTmV3SXRlbSk7XG5cdFx0XHRcdFx0Ly8gYWRkIHRvIHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zXG5cdFx0XHRcdFx0c2VsZWN0ZWROZXdJdGVtcy5wdXNoKHRlbXBOZXdJdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBsb29wIHRocm91Z2ggdGhlIGxpc3QgaXRlbXMgYW5kIHVwZGF0ZSB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBmb3IgbWF0Y2hpbmcgaXRlbXMgaW4gYHZhbHVlYFxuXHRcdFx0Zm9yIChsZXQgb2xkSXRlbSBvZiB0aGlzLmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRcdC8vIGZhc3QgcGF0aCB3aGVuIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZFxuXHRcdFx0XHRpZiAoc2VsZWN0ZWROZXdJdGVtcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRvbGRJdGVtLnNlbGVjdGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBjb3B5IHRoZSBpdGVtXG5cdFx0XHRcdGxldCB0ZW1wT2xkSXRlbTogc3RyaW5nIHwgTGlzdEl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBvbGRJdGVtKTtcblx0XHRcdFx0Ly8gZGVsZXRlZCBzZWxlY3RlZCBiZWNhdXNlIGl0J3Mgd2hhdCB3ZSBfd2FudF8gdG8gY2hhbmdlXG5cdFx0XHRcdGRlbGV0ZSB0ZW1wT2xkSXRlbS5zZWxlY3RlZDtcblx0XHRcdFx0Ly8gc3RyaW5naWZ5IGZvciBjb21wYXJlXG5cdFx0XHRcdHRlbXBPbGRJdGVtID0gSlNPTi5zdHJpbmdpZnkodGVtcE9sZEl0ZW0pO1xuXHRcdFx0XHRmb3IgKGxldCBzZWxlY3RlZE5ld0l0ZW0gb2Ygc2VsZWN0ZWROZXdJdGVtcykge1xuXHRcdFx0XHRcdC8vIGRvIHRoZSBjb21wYXJlXG5cdFx0XHRcdFx0aWYgKHRlbXBPbGRJdGVtLmluY2x1ZGVzKHNlbGVjdGVkTmV3SXRlbSkpIHtcblx0XHRcdFx0XHRcdG9sZEl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0Ly8gaWYgd2UndmUgZm91bmQgYSBtYXRjaGluZyBpdGVtLCB3ZSBjYW4gc3RvcCBsb29waW5nXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0b2xkSXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIGZvY3VzIGluIHRoZSBsaXN0LCBlZmZlY3RpdmVseSBhIHdyYXBwZXIgZm9yIGBnZXRDdXJyZW50RWxlbWVudCgpLmZvY3VzKClgXG5cdCAqL1xuXHRpbml0Rm9jdXMoKSB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCAwKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZUluZGV4KCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5saXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5nZXRJdGVtSWQodGhpcy5pbmRleCk7XG5cdFx0fSk7XG5cdH1cblxuXHR1cGRhdGVJbmRleCgpIHtcblx0XHQvLyBpbml0aWFsaXplIGluZGV4IG9uIHRoZSBmaXJzdCBzZWxlY3RlZCBpdGVtIG9yXG5cdFx0Ly8gb24gdGhlIG5leHQgbm9uIGRpc2FibGVkIGl0ZW0gaWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkXG5cdFx0Ly8gaW4gY2FzZSwgaWYgYWxsIGl0ZW1zIGFyZSBkaXNhYmxlZCwgdGhlIGluZGV4IHZhbHVlIHdpbGwgcmVtYWluIHNhbWVcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMuZ2V0U2VsZWN0ZWQoKTtcblx0XHRpZiAoc2VsZWN0ZWQubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLmluZGV4ID0gdGhpcy5kaXNwbGF5SXRlbXMuaW5kZXhPZihzZWxlY3RlZFswXSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmluZGV4IDwgMCAmJiB0aGlzLmhhc05leHRFbGVtZW50KCkpIHtcblx0XHRcdHRoaXMuZ2V0TmV4dEVsZW1lbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWFuYWdlcyB0aGUga2V5Ym9hcmQgYWNjZXNzaWJpbGl0eSBmb3IgbmF2aWdhdGlvbiBhbmQgc2VsZWN0aW9uIHdpdGhpbiBhIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0bmF2aWdhdGVMaXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcblx0XHRcdGlmICh0aGlzLmxpc3RFbGVtZW50TGlzdC5zb21lKG9wdGlvbiA9PiBvcHRpb24ubmF0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0KSkge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XG5cdFx0XHRcdHRoaXMuZG9DbGljayhldmVudCwgdGhpcy5nZXRDdXJyZW50SXRlbSgpKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIiB8fCBldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuXHRcdFx0XHRpZiAodGhpcy5oYXNOZXh0RWxlbWVudCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5nZXROZXh0RWxlbWVudCgpPy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImVuZFwiIH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuYmx1ckludGVudC5lbWl0KFwiYm90dG9tXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcblx0XHRcdFx0aWYgKHRoaXMuaGFzUHJldkVsZW1lbnQoKSkge1xuXHRcdFx0XHRcdHRoaXMuZ2V0UHJldkVsZW1lbnQoKS5zY3JvbGxJbnRvVmlldyh7ICBibG9jazogXCJuZWFyZXN0XCIgfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVySW50ZW50LmVtaXQoXCJ0b3BcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXRzIHRoZSBzZWxlY3RlZCBpdGVtIG9yIGl0ZW1zIGFmdGVyIGEgbW91c2UgY2xpY2sgZXZlbnQgaGFzIG9jY3VycmVkLlxuXHQgKi9cblx0ZG9DbGljayhldmVudCwgaXRlbSkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0aWYgKGl0ZW0gJiYgIWl0ZW0uZGlzYWJsZWQpIHtcblx0XHRcdHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHQvLyByZXNldCB0aGUgc2VsZWN0aW9uXG5cdFx0XHRcdGZvciAobGV0IG90aGVySXRlbSBvZiB0aGlzLmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRcdFx0aWYgKGl0ZW0gIT09IG90aGVySXRlbSkgeyBvdGhlckl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTsgfVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmluZGV4ID0gdGhpcy5kaXNwbGF5SXRlbXMuaW5kZXhPZihpdGVtKTtcblx0XHRcdHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5nZXRJdGVtSWQodGhpcy5pbmRleCk7XG5cdFx0XHR0aGlzLmRvRW1pdFNlbGVjdChmYWxzZSk7XG5cdFx0XHR0aGlzLmFwcFJlZi50aWNrKCk7XG5cdFx0fVxuXHR9XG5cblx0b25JdGVtRm9jdXMoaW5kZXgpIHtcblx0XHRjb25zdCBlbGVtZW50ID0gdGhpcy5saXN0RWxlbWVudExpc3QudG9BcnJheSgpW2luZGV4XS5uYXRpdmVFbGVtZW50O1xuXHRcdGVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNkcy0tbGlzdC1ib3hfX21lbnUtaXRlbS0taGlnaGxpZ2h0ZWRcIik7XG5cdFx0ZWxlbWVudC50YWJJbmRleCA9IDA7XG5cdH1cblxuXHRvbkl0ZW1CbHVyKGluZGV4KSB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKVtpbmRleF0ubmF0aXZlRWxlbWVudDtcblx0XHRlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW0tLWhpZ2hsaWdodGVkXCIpO1xuXHRcdGVsZW1lbnQudGFiSW5kZXggPSAtMTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbWl0cyB0aGUgc2Nyb2xsIGV2ZW50IG9mIHRoZSBvcHRpb25zIGxpc3Rcblx0ICovXG5cdGVtaXRTY3JvbGwoZXZlbnQpIHtcblx0XHRjb25zdCBhdFRvcDogYm9vbGVhbiA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wID09PSAwO1xuXHRcdGNvbnN0IGF0Qm90dG9tOiBib29sZWFuID0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBldmVudC5zcmNFbGVtZW50LnNjcm9sbFRvcCA9PT0gZXZlbnQuc3JjRWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cdFx0Y29uc3QgY3VzdG9tU2Nyb2xsRXZlbnQgPSB7IGF0VG9wLCBhdEJvdHRvbSwgZXZlbnQgfTtcblx0XHR0aGlzLnNjcm9sbC5lbWl0KGN1c3RvbVNjcm9sbEV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdWJzY3JpYmUgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBhbiBpbnRlcm5hbCBvYnNlcnZhYmxlIHRoYXQgd2lsbCByZXNvbHZlIG9uY2UgdGhlIGl0ZW1zIGFyZSByZWFkeVxuXHQgKi9cblx0b25JdGVtc1JlYWR5KHN1YmNyaXB0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0Ly8gdGhpcyBzdWJzY3JpcHRpb24gd2lsbCBhdXRvIHVuc3Vic2NyaWJlIGJlY2F1c2Ugb2YgdGhlIGBmaXJzdCgpYCBwaXBlXG5cdFx0KHRoaXMuX2l0ZW1zUmVhZHkgfHwgb2YodHJ1ZSkpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKHN1YmNyaXB0aW9uKTtcblx0fVxuXG5cdHJlb3JkZXJTZWxlY3RlZChtb3ZlRm9jdXMgPSB0cnVlKTogdm9pZCB7XG5cdFx0dGhpcy5kaXNwbGF5SXRlbXMgPSBbLi4udGhpcy5nZXRTZWxlY3RlZCgpLCAuLi50aGlzLmdldExpc3RJdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLnNlbGVjdGVkKV07XG5cdFx0aWYgKG1vdmVGb2N1cykge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMudXBkYXRlSW5kZXgoKTtcblx0XHRcdFx0dGhpcy5oaWdobGlnaHRlZEl0ZW0gPSB0aGlzLmdldEl0ZW1JZCh0aGlzLmluZGV4KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -1,6 +1,7 @@
1
1
  import { ContentChildren, Component, EventEmitter, forwardRef, Input, Output, HostBinding, HostListener, TemplateRef } from "@angular/core";
2
2
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
3
  import { Radio } from "./radio.component";
4
+ import { Subscription } from "rxjs/internal/Subscription";
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "carbon-components-angular/icon";
@@ -73,6 +74,7 @@ export class RadioGroup {
73
74
  * The name attribute associated with the `RadioGroup`.
74
75
  */
75
76
  this._name = `radio-group-${RadioGroup.radioGroupCount++}`;
77
+ this.subscription = new Subscription();
76
78
  /**
77
79
  * Needed to properly implement ControlValueAccessor.
78
80
  */
@@ -226,22 +228,32 @@ export class RadioGroup {
226
228
  */
227
229
  writeValue(value) {
228
230
  this.value = value;
229
- setTimeout(() => {
230
- this.updateSelectedRadioFromValue();
231
- this.checkSelectedRadio();
232
- });
233
231
  }
234
232
  ngAfterContentInit() {
235
- this.radios.changes.subscribe(() => {
233
+ this.subscription.add(this.radios.changes.subscribe(() => {
234
+ if (this.value) {
235
+ if (this.selected) {
236
+ this._selected = null;
237
+ }
238
+ this.updateSelectedRadioFromValue();
239
+ this.checkSelectedRadio();
240
+ }
236
241
  this.updateRadios();
237
242
  this.updateRadioChangeHandler();
238
- });
243
+ }));
244
+ if (this.value) {
245
+ this.updateSelectedRadioFromValue();
246
+ this.checkSelectedRadio();
247
+ }
239
248
  this.updateChildren();
240
249
  this.updateRadioChangeHandler();
241
250
  }
242
251
  ngAfterViewInit() {
243
252
  this.updateRadios();
244
253
  }
254
+ ngOnDestroy() {
255
+ this.subscription.unsubscribe();
256
+ }
245
257
  /**
246
258
  * Used to set method to propagate changes back to the form.
247
259
  */
@@ -465,4 +477,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
465
477
  type: HostListener,
466
478
  args: ["focusout"]
467
479
  }] } });
468
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sZUFBZSxFQUNmLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUVYLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUcxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBbUVILE1BQU0sT0FBTyxVQUFVO0lBbEV2QjtRQW9LVSxnQkFBVyxHQUE4QixZQUFZLENBQUM7UUFFdEQsbUJBQWMsR0FBc0IsT0FBTyxDQUFDO1FBd0JyRDs7V0FFRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFPekI7O1VBRUU7UUFDTyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBT3RCOztXQUVHO1FBQ08sV0FBTSxHQUE4QixJQUFJLFlBQVksRUFBZSxDQUFDO1FBUTlFOztXQUVHO1FBQ2tDLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUVsRTs7V0FFRztRQUNPLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ2hDOztXQUVHO1FBQ08sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNPLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDNUI7O1dBRUc7UUFDTyxXQUFNLEdBQVEsSUFBSSxDQUFDO1FBQzdCOztXQUVHO1FBQ08sY0FBUyxHQUFVLElBQUksQ0FBQztRQUNsQzs7V0FFRztRQUNPLFVBQUssR0FBRyxlQUFlLFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBa0hoRTs7V0FFRztR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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdURUOzJGQVNXLFVBQVU7a0JBbEV0QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxrQ0FBa0M7b0JBQzVDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVEVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Y7NEJBQ0MsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxZQUFZOzRCQUN2QixLQUFLLEVBQUUsSUFBSTt5QkFDWDtxQkFDRDtpQkFDRDs4QkFPSSxRQUFRO3NCQURYLEtBQUs7Z0JBMkJGLEtBQUs7c0JBRFIsS0FBSztnQkFxQkYsSUFBSTtzQkFEUCxLQUFLO2dCQWdCRixRQUFRO3NCQURYLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSztnQkFpQkcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTTtnQkFNbUMsTUFBTTtzQkFBL0MsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUtILHFCQUFxQjtzQkFBekQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBdUluQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyQ29udGVudEluaXQsXG5cdENvbnRlbnRDaGlsZHJlbixcblx0Q29tcG9uZW50LFxuXHRFdmVudEVtaXR0ZXIsXG5cdGZvcndhcmRSZWYsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdFF1ZXJ5TGlzdCxcblx0SG9zdEJpbmRpbmcsXG5cdEFmdGVyVmlld0luaXQsXG5cdEhvc3RMaXN0ZW5lcixcblx0VGVtcGxhdGVSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgUmFkaW8gfSBmcm9tIFwiLi9yYWRpby5jb21wb25lbnRcIjtcbmltcG9ydCB7IFJhZGlvQ2hhbmdlIH0gZnJvbSBcIi4vcmFkaW8tY2hhbmdlLmNsYXNzXCI7XG5cbi8qKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBSYWRpb01vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogRXg6XG4gKlxuICogYGBgaHRtbFxuICogPGNkcy1yYWRpby1ncm91cCBbKG5nTW9kZWwpXT1cInJhZGlvXCI+XG4gKiBcdDxjZHMtcmFkaW8gKm5nRm9yPVwibGV0IG9uZSBvZiBtYW55UmFkaW9zXCIgW3ZhbHVlXT1cIm9uZVwiPlxuICpcdFx0UmFkaW8ge3tvbmV9fVxuICogXHQ8L2Nkcy1yYWRpbz5cbiAqIDwvY2RzLXJhZGlvLWdyb3VwPlxuICpcbiAqIFJhZGlvIHNlbGVjdGVkOiB7e3JhZGlvfX1cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKlx0Y29uc3QgbWFueVJhZGlvcyA9IFtcIm9uZVwiLCBcInR3b1wiLCBcInRocmVlXCIsIFwiZm91clwiLCBcImZpdmVcIiwgXCJzaXhcIl07XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLXJhZGlvLS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1yYWRpby1ncm91cCwgaWJtLXJhZGlvLWdyb3VwXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGZpZWxkc2V0XG5cdFx0XHRjbGFzcz1cImNkcy0tcmFkaW8tYnV0dG9uLWdyb3VwXCJcblx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcblx0XHRcdFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG5cdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdCdjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cC0tdmVydGljYWwnOiBvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyxcblx0XHRcdFx0J2Nkcy0tcmFkaW8tYnV0dG9uLWdyb3VwLS1sYWJlbC1sZWZ0JzogbGFiZWxQbGFjZW1lbnQgPT09ICdsZWZ0Jyxcblx0XHRcdFx0J2Nkcy0tcmFkaW8tYnV0dG9uLWdyb3VwLS1pbnZhbGlkJzogaW52YWxpZCxcblx0XHRcdFx0J2Nkcy0tcmFkaW8tYnV0dG9uLWdyb3VwLS13YXJuaW5nJzogIWludmFsaWQgJiYgd2Fybixcblx0XHRcdFx0J2Nkcy0tcmFkaW8tYnV0dG9uLWdyb3VwLS1kZWNvcmF0b3InOiAhIWRlY29yYXRvclxuXHRcdFx0fVwiXG5cdFx0XHRbYXR0ci5kYXRhLWludmFsaWRdPVwiaW52YWxpZCA/IHRydWUgOiBudWxsXCI+XG5cdFx0XHQ8bGVnZW5kICpuZ0lmPVwibGVnZW5kXCIgY2xhc3M9XCJjZHMtLWxhYmVsXCI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUobGVnZW5kKTsgZWxzZSBsZWdlbmRMYWJlbDtcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJsZWdlbmRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgI2xlZ2VuZExhYmVsPnt7bGVnZW5kfX08L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGVjb3JhdG9yXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tcmFkaW8tYnV0dG9uLWdyb3VwLWlubmVyLS1kZWNvcmF0b3JcIj5cblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJkZWNvcmF0b3JcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdDwvbGVnZW5kPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdDwvZmllbGRzZXQ+XG5cdFx0PGRpdiBjbGFzcz1cImNkcy0tcmFkaW8tYnV0dG9uX192YWxpZGF0aW9uLW1zZ1wiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImludmFsaWRcIj5cblx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1maWxsZWRcIlxuXHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXJhZGlvLWJ1dHRvbl9faW52YWxpZC1pY29uXCI+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7IGludmFsaWRUZXh0IH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiPlxuXHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWFsdC0tZmlsbGVkXCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tcmFkaW8tYnV0dG9uX19pbnZhbGlkLWljb24gY2RzLS1yYWRpby1idXR0b25fX2ludmFsaWQtaWNvbi0td2FybmluZ1wiXG5cdFx0XHRcdFx0c2l6ZT1cIjE2XCI+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7d2FyblRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXZcblx0XHRcdCpuZ0lmPVwiaGVscGVyVGV4dCAmJiAhaW52YWxpZCAmJiAhd2FyblwiXG5cdFx0XHRjbGFzcz1cImNkcy0tZm9ybV9faGVscGVyLXRleHRcIlxuXHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWZvcm1fX2hlbHBlci10ZXh0LS1kaXNhYmxlZCc6IGRpc2FibGVkfVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWxwZXJUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Rpdj5cblx0YCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogUmFkaW9Hcm91cCxcblx0XHRcdG11bHRpOiB0cnVlXG5cdFx0fVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvR3JvdXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHBhc3NlZCBpbiBgUmFkaW9gIGl0ZW0gYXMgdGhlIHNlbGVjdGVkIGlucHV0IHdpdGhpbiB0aGUgYFJhZGlvR3JvdXBgLlxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IHNlbGVjdGVkKHNlbGVjdGVkOiBSYWRpbyB8IG51bGwpIHtcblx0XHRjb25zdCBhbHJlYWR5U2VsZWN0ZWQgPSAodGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0ZWQudmFsdWUpID09PSAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWQudmFsdWUpO1xuXHRcdGlmIChhbHJlYWR5U2VsZWN0ZWQpIHtcblx0XHRcdC8vIG5vIG5lZWQgdG8gcmVkb1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9zZWxlY3RlZCkge1xuXHRcdFx0dGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuXHRcdHRoaXMudmFsdWUgPSBzZWxlY3RlZCA/IHNlbGVjdGVkLnZhbHVlIDogbnVsbDtcblx0XHR0aGlzLmNoZWNrU2VsZWN0ZWRSYWRpbygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBSYWRpb2AgdGhhdCBpcyBzZWxlY3RlZCB3aXRoaW4gdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGdldCBzZWxlY3RlZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUvc3RhdGUgb2YgdGhlIHNlbGVjdGVkIGBSYWRpb2Agd2l0aGluIHRoZSBgUmFkaW9Hcm91cGAgdG8gdGhlIHBhc3NlZCBpbiB2YWx1ZS5cblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG5cdFx0aWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuXHRcdFx0dGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcblxuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZFJhZGlvRnJvbVZhbHVlKCk7XG5cdFx0XHR0aGlzLmNoZWNrU2VsZWN0ZWRSYWRpbygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB2YWx1ZS9zdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgYFJhZGlvYCB3aXRoaW4gdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGdldCB2YWx1ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fdmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVwbGFjZXMgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBgUmFkaW9Hcm91cGAgd2l0aCB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyLlxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IG5hbWUobmFtZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fbmFtZSA9IG5hbWU7XG5cdFx0dGhpcy51cGRhdGVSYWRpb3MoKTtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYXNzb2NpYXRlZCBuYW1lIG9mIHRoZSBgUmFkaW9Hcm91cGAuXG5cdCAqL1xuXHRnZXQgbmFtZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fbmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHRoZSB3aG9sZSByYWRpbyBncm91cFxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcblx0XHR0aGlzLnVwZGF0ZVJhZGlvcygpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBkaXNhYmxlZCB2YWx1ZSBmb3IgdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2tlbGV0b24gdmFsdWUgaW4gdGhlIGBSYWRpb0dyb3VwYCBpZiB0aGVyZSBpcyBvbmUuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRnZXQgc2tlbGV0b24oKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5fc2tlbGV0b247XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgc2tlbGV0b24gdmFsdWUgZm9yIGFsbCBgUmFkaW9gIHRvIHRoZSBza2VsZXRvbiB2YWx1ZSBvZiBgUmFkaW9Hcm91cGAuXG5cdCAqL1xuXHRzZXQgc2tlbGV0b24odmFsdWU6IGFueSkge1xuXHRcdHRoaXMuX3NrZWxldG9uID0gdmFsdWU7XG5cdFx0dGhpcy51cGRhdGVDaGlsZHJlbigpO1xuXHR9XG5cdC8qKlxuXHQgKiBVc2VkIGZvciBjcmVhdGluZyB0aGUgYFJhZGlvR3JvdXBgICduYW1lJyBwcm9wZXJ0eSBkeW5hbWljYWxseS5cblx0ICovXG5cdHN0YXRpYyByYWRpb0dyb3VwQ291bnQgPSAwO1xuXG5cdEBJbnB1dCgpIG9yaWVudGF0aW9uOiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIiA9IFwiaG9yaXpvbnRhbFwiO1xuXG5cdEBJbnB1dCgpIGxhYmVsUGxhY2VtZW50OiBcInJpZ2h0XCIgfCBcImxlZnRcIiA9ICBcInJpZ2h0XCI7XG5cblx0QElucHV0KCkgbGVnZW5kOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiAqKkV4cGVyaW1lbnRhbCoqOiBPcHRpb25hbCBkZWNvcmF0b3IgKGUuZy4gQUkgbGFiZWwpLlxuXHQgKi9cblx0QElucHV0KCkgZGVjb3JhdG9yOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHNldCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSBvbiB0aGUgcmFkaW8gZ3JvdXAgZWxlbWVudC5cblx0ICovXG5cdEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHNldCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIG9uIHRoZSByYWRpbyBncm91cCBlbGVtZW50LlxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcblxuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgaGVscGVyIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgdGhlIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFZhbHVlIGRpc3BsYXllZCBpZiBjb21ib2JveCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5UZXh0KVxuXHQqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHdhcm5pbmcgdGV4dFxuXHQgKi9cblx0QElucHV0KCkgd2FyblRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCAqIEVtaXRzIGV2ZW50IG5vdGlmeWluZyBvdGhlciBjbGFzc2VzIG9mIGEgY2hhbmdlIHVzaW5nIGEgYFJhZGlvQ2hhbmdlYCBjbGFzcy5cblx0ICovXG5cdEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxSYWRpb0NoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJhZGlvQ2hhbmdlPigpO1xuXG5cdC8qKlxuXHQgKiBUaGUgYFJhZGlvYCBpbnB1dCBpdGVtcyBpbiB0aGUgYFJhZGlvR3JvdXBgLlxuXHQgKi9cblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZvcndhcmQtcmVmXG5cdEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBSYWRpbykpIHJhZGlvczogUXVlcnlMaXN0PFJhZGlvPjtcblxuXHQvKipcblx0ICogQmluZHMgJ2Nkcy0tZm9ybS1pdGVtJyB2YWx1ZSB0byB0aGUgY2xhc3MgZm9yIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tZm9ybS1pdGVtXCIpIHJhZGlvQnV0dG9uR3JvdXBDbGFzcyA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRvIHRyYWNrIHdoZXRoZXIgdGhlIGBSYWRpb0dyb3VwYCBoYXMgYmVlbiBpbml0aWFsaXplZC5cblx0ICovXG5cdHByb3RlY3RlZCBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBSZWZsZWN0cyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgYW5kIGNhbm5vdCBiZSBzZWxlY3RlZC5cblx0ICovXG5cdHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFJlZmxlY3RzIHdoZXRoZXIgb3Igbm90IHRoZSBkcm9wZG93biBpcyBsb2FkaW5nLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9za2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogVGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCBvcHRpb24gd2l0aGluIHRoZSBgUmFkaW9Hcm91cGAuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgX3ZhbHVlOiBhbnkgPSBudWxsO1xuXHQvKipcblx0ICogVGhlIGBSYWRpb2Agd2l0aGluIHRoZSBgUmFkaW9Hcm91cGAgdGhhdCBpcyBzZWxlY3RlZC5cblx0ICovXG5cdHByb3RlY3RlZCBfc2VsZWN0ZWQ6IFJhZGlvID0gbnVsbDtcblx0LyoqXG5cdCAqIFRoZSBuYW1lIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdHByb3RlY3RlZCBfbmFtZSA9IGByYWRpby1ncm91cC0ke1JhZGlvR3JvdXAucmFkaW9Hcm91cENvdW50Kyt9YDtcblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgc2VsZWN0ZWQgYFJhZGlvYCB0byBiZSBjaGVja2VkIChzZWxlY3RlZCkuXG5cdCAqL1xuXHRjaGVja1NlbGVjdGVkUmFkaW8oKSB7XG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuX3NlbGVjdGVkLmNoZWNrZWQpIHtcblx0XHRcdHRoaXMuc2VsZWN0ZWQuY2hlY2tlZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZSB0aGUgdmFsdWUgb2YgdGhlIGBSYWRpb0dyb3VwYCB0byB1cGRhdGUgdGhlIHNlbGVjdGVkIHJhZGlvIHRvIHRoZSByaWdodCBzdGF0ZSAoc2VsZWN0ZWQgc3RhdGUpLlxuXHQgKi9cblx0dXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpIHtcblx0XHRsZXQgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWQgIT0gbnVsbCAmJiB0aGlzLl9zZWxlY3RlZC52YWx1ZSA9PT0gdGhpcy5fdmFsdWU7XG5cdFx0aWYgKHRoaXMucmFkaW9zICYmICFhbHJlYWR5U2VsZWN0ZWQpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkICYmIHRoaXMudmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZC5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9zZWxlY3RlZCA9IG51bGw7XG5cdFx0XHR0aGlzLnJhZGlvcy5mb3JFYWNoKHJhZGlvID0+IHtcblx0XHRcdFx0aWYgKHJhZGlvLmNoZWNrZWQgfHwgcmFkaW8udmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VsZWN0ZWQgPSByYWRpbztcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZCAmJiAhdGhpcy52YWx1ZSkge1xuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IHRoaXMuc2VsZWN0ZWQudmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgbWV0aG9kIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0aGUgYFJhZGlvR3JvdXBgLlxuXHQgKlxuXHQgKiBleDogYHRoaXMuZm9ybUdyb3VwLmdldChcIm15UmFkaW9Hcm91cFwiKS5kaXNhYmxlKCk7YFxuXHQgKlxuXHQgKiBAcGFyYW0gaXNEaXNhYmxlZCBgdHJ1ZWAgdG8gZGlzYWJsZSB0aGUgaW5wdXRzXG5cdCAqL1xuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgY2xhc3Mgb2YgYFJhZGlvQ2hhbmdlYCB0byBlbWl0IHRoZSBjaGFuZ2UgaW4gdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGVtaXRDaGFuZ2VFdmVudChldmVudDogUmFkaW9DaGFuZ2UpIHtcblx0XHR0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShldmVudC52YWx1ZSk7XG5cdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTeW5jaHJvbml6ZXMgcmFkaW8gcHJvcGVydGllcy5cblx0ICovXG5cdHVwZGF0ZVJhZGlvcygpIHtcblx0XHRpZiAodGhpcy5yYWRpb3MpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnJhZGlvcy5mb3JFYWNoKHJhZGlvID0+IHtcblx0XHRcdFx0XHRyYWRpby5uYW1lID0gdGhpcy5uYW1lO1xuXHRcdFx0XHRcdHJhZGlvLnNldERpc2FibGVkRnJvbUdyb3VwKHRoaXMuZGlzYWJsZWQpO1xuXHRcdFx0XHRcdGlmICh0aGlzLmxhYmVsUGxhY2VtZW50ID09PSBcImxlZnRcIikge1xuXHRcdFx0XHRcdFx0cmFkaW8ubGFiZWxQbGFjZW1lbnQgPSBcImxlZnRcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBgUmFkaW9Hcm91cGAgdXNpbmcgdGhlIHByb3ZpZGVkIHBhcmFtZXRlci5cblx0ICovXG5cdHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMudXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpO1xuXHRcdFx0dGhpcy5jaGVja1NlbGVjdGVkUmFkaW8oKTtcblx0XHR9KTtcblx0fVxuXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcblx0XHR0aGlzLnJhZGlvcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLnVwZGF0ZVJhZGlvcygpO1xuXHRcdFx0dGhpcy51cGRhdGVSYWRpb0NoYW5nZUhhbmRsZXIoKTtcblx0XHR9KTtcblxuXHRcdHRoaXMudXBkYXRlQ2hpbGRyZW4oKTtcblx0XHR0aGlzLnVwZGF0ZVJhZGlvQ2hhbmdlSGFuZGxlcigpO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMudXBkYXRlUmFkaW9zKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXNlZCB0byBzZXQgbWV0aG9kIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm0uXG5cdCAqL1xuXHRwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udHJvbCBoYXMgYmVlbiB0b3VjaGVkLlxuXHQgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIHRvdWNoZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuXHRcdHRoaXMub25Ub3VjaGVkID0gZm47XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKFwiZm9jdXNvdXRcIilcblx0Zm9jdXNPdXQoKSB7XG5cdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOZWVkZWQgdG8gcHJvcGVybHkgaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuXHQgKi9cblx0b25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcblxuXHQvKipcblx0ICogTWV0aG9kIHNldCBpbiByZWdpc3Rlck9uQ2hhbmdlIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm0uXG5cdCAqL1xuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuXHRwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuXHR9XG5cblx0cHJvdGVjdGVkIHVwZGF0ZUNoaWxkcmVuKCkge1xuXHRcdGlmICh0aGlzLnJhZGlvcykge1xuXHRcdFx0dGhpcy5yYWRpb3MuZm9yRWFjaChjaGlsZCA9PiBjaGlsZC5za2VsZXRvbiA9IHRoaXMuc2tlbGV0b24pO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCB1cGRhdGVSYWRpb0NoYW5nZUhhbmRsZXIoKSB7XG5cdFx0dGhpcy5yYWRpb3MuZm9yRWFjaChyYWRpbyA9PiB7XG5cdFx0XHRyYWRpby5yZWdpc3RlclJhZGlvQ2hhbmdlSGFuZGxlcigoZXZlbnQ6IFJhZGlvQ2hhbmdlKSA9PiB7XG5cdFx0XHRcdGlmICgodGhpcy5zZWxlY3RlZCAmJiB0aGlzLnNlbGVjdGVkLnZhbHVlKSA9PT0gZXZlbnQudmFsdWUpIHtcblx0XHRcdFx0XHQvLyBubyBuZWVkIHRvIHJlZG9cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gZGVzZWxlY3QgcHJldmlvdXMgcmFkaW9cblx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyB1cGRhdGUgc2VsZWN0ZWQgYW5kIHZhbHVlIGZyb20gdGhlIGV2ZW50XG5cdFx0XHRcdHRoaXMuX3NlbGVjdGVkID0gZXZlbnQuc291cmNlO1xuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IGV2ZW50LnZhbHVlO1xuXHRcdFx0XHQvLyBidWJibGUgdGhlIGV2ZW50XG5cdFx0XHRcdHRoaXMuZW1pdENoYW5nZUV2ZW50KGV2ZW50KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
480
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sZUFBZSxFQUNmLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUVYLFlBQVksRUFDWixXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFFMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQW1FSCxNQUFNLE9BQU8sVUFBVTtJQWxFdkI7UUFvS1UsZ0JBQVcsR0FBOEIsWUFBWSxDQUFDO1FBRXRELG1CQUFjLEdBQXNCLE9BQU8sQ0FBQztRQXdCckQ7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBT3pCOztVQUVFO1FBQ08sU0FBSSxHQUFHLEtBQUssQ0FBQztRQU90Qjs7V0FFRztRQUNPLFdBQU0sR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQVE5RTs7V0FFRztRQUNrQywwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFbEU7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUNoQzs7V0FFRztRQUNPLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDNUI7O1dBRUc7UUFDTyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ08sV0FBTSxHQUFRLElBQUksQ0FBQztRQUM3Qjs7V0FFRztRQUNPLGNBQVMsR0FBVSxJQUFJLENBQUM7UUFDbEM7O1dBRUc7UUFDTyxVQUFLLEdBQUcsZUFBZSxV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SztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTTtnQkFNbUMsTUFBTTtzQkFBL0MsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUtILHFCQUFxQjtzQkFBekQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBdUpuQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyQ29udGVudEluaXQsXG5cdENvbnRlbnRDaGlsZHJlbixcblx0Q29tcG9uZW50LFxuXHRFdmVudEVtaXR0ZXIsXG5cdGZvcndhcmRSZWYsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdFF1ZXJ5TGlzdCxcblx0SG9zdEJpbmRpbmcsXG5cdEFmdGVyVmlld0luaXQsXG5cdEhvc3RMaXN0ZW5lcixcblx0VGVtcGxhdGVSZWYsXG5cdE9uRGVzdHJveVxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBSYWRpbyB9IGZyb20gXCIuL3JhZGlvLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUmFkaW9DaGFuZ2UgfSBmcm9tIFwiLi9yYWRpby1jaGFuZ2UuY2xhc3NcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzL2ludGVybmFsL1N1YnNjcmlwdGlvblwiO1xuXG4vKipcbiAqIEdldCBzdGFydGVkIHdpdGggaW1wb3J0aW5nIHRoZSBtb2R1bGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUmFkaW9Nb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIEV4OlxuICpcbiAqIGBgYGh0bWxcbiAqIDxjZHMtcmFkaW8tZ3JvdXAgWyhuZ01vZGVsKV09XCJyYWRpb1wiPlxuICogXHQ8Y2RzLXJhZGlvICpuZ0Zvcj1cImxldCBvbmUgb2YgbWFueVJhZGlvc1wiIFt2YWx1ZV09XCJvbmVcIj5cbiAqXHRcdFJhZGlvIHt7b25lfX1cbiAqIFx0PC9jZHMtcmFkaW8+XG4gKiA8L2Nkcy1yYWRpby1ncm91cD5cbiAqXG4gKiBSYWRpbyBzZWxlY3RlZDoge3tyYWRpb319XG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuICpcdGNvbnN0IG1hbnlSYWRpb3MgPSBbXCJvbmVcIiwgXCJ0d29cIiwgXCJ0aHJlZVwiLCBcImZvdXJcIiwgXCJmaXZlXCIsIFwic2l4XCJdO1xuICogYGBgXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy1yYWRpby0tYmFzaWMpXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJjZHMtcmFkaW8tZ3JvdXAsIGlibS1yYWRpby1ncm91cFwiLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxmaWVsZHNldFxuXHRcdFx0Y2xhc3M9XCJjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cFwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1yYWRpby1idXR0b24tZ3JvdXAtLXZlcnRpY2FsJzogb3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcsXG5cdFx0XHRcdCdjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cC0tbGFiZWwtbGVmdCc6IGxhYmVsUGxhY2VtZW50ID09PSAnbGVmdCcsXG5cdFx0XHRcdCdjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cC0taW52YWxpZCc6IGludmFsaWQsXG5cdFx0XHRcdCdjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cC0td2FybmluZyc6ICFpbnZhbGlkICYmIHdhcm4sXG5cdFx0XHRcdCdjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cC0tZGVjb3JhdG9yJzogISFkZWNvcmF0b3Jcblx0XHRcdH1cIlxuXHRcdFx0W2F0dHIuZGF0YS1pbnZhbGlkXT1cImludmFsaWQgPyB0cnVlIDogbnVsbFwiPlxuXHRcdFx0PGxlZ2VuZCAqbmdJZj1cImxlZ2VuZFwiIGNsYXNzPVwiY2RzLS1sYWJlbFwiPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGxlZ2VuZCk7IGVsc2UgbGVnZW5kTGFiZWw7XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVnZW5kXCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLXRlbXBsYXRlICNsZWdlbmRMYWJlbD57e2xlZ2VuZH19PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRlY29yYXRvclwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLXJhZGlvLWJ1dHRvbi1ncm91cC1pbm5lci0tZGVjb3JhdG9yXCI+XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVjb3JhdG9yXCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8L2xlZ2VuZD5cblx0XHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0XHQ8L2ZpZWxkc2V0PlxuXHRcdDxkaXYgY2xhc3M9XCJjZHMtLXJhZGlvLWJ1dHRvbl9fdmFsaWRhdGlvbi1tc2dcIj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnZhbGlkXCI+XG5cdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRjZHNJY29uPVwid2FybmluZy0tZmlsbGVkXCJcblx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1yYWRpby1idXR0b25fX2ludmFsaWQtaWNvblwiPlxuXHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIj57eyBpbnZhbGlkVGV4dCB9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW52YWxpZFRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIj5cblx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1hbHQtLWZpbGxlZFwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXJhZGlvLWJ1dHRvbl9faW52YWxpZC1pY29uIGNkcy0tcmFkaW8tYnV0dG9uX19pbnZhbGlkLWljb24tLXdhcm5pbmdcIlxuXHRcdFx0XHRcdHNpemU9XCIxNlwiPlxuXHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZSh3YXJuVGV4dClcIj57e3dhcm5UZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKHdhcm5UZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndhcm5UZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2XG5cdFx0XHQqbmdJZj1cImhlbHBlclRleHQgJiYgIWludmFsaWQgJiYgIXdhcm5cIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWZvcm1fX2hlbHBlci10ZXh0XCJcblx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1mb3JtX19oZWxwZXItdGV4dC0tZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShoZWxwZXJUZXh0KVwiPnt7aGVscGVyVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGhlbHBlclRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0PC9kaXY+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IFJhZGlvR3JvdXAsXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0dyb3VwIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHBhc3NlZCBpbiBgUmFkaW9gIGl0ZW0gYXMgdGhlIHNlbGVjdGVkIGlucHV0IHdpdGhpbiB0aGUgYFJhZGlvR3JvdXBgLlxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IHNlbGVjdGVkKHNlbGVjdGVkOiBSYWRpbyB8IG51bGwpIHtcblx0XHRjb25zdCBhbHJlYWR5U2VsZWN0ZWQgPSAodGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0ZWQudmFsdWUpID09PSAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWQudmFsdWUpO1xuXHRcdGlmIChhbHJlYWR5U2VsZWN0ZWQpIHtcblx0XHRcdC8vIG5vIG5lZWQgdG8gcmVkb1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9zZWxlY3RlZCkge1xuXHRcdFx0dGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuXHRcdHRoaXMudmFsdWUgPSBzZWxlY3RlZCA/IHNlbGVjdGVkLnZhbHVlIDogbnVsbDtcblx0XHR0aGlzLmNoZWNrU2VsZWN0ZWRSYWRpbygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBSYWRpb2AgdGhhdCBpcyBzZWxlY3RlZCB3aXRoaW4gdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGdldCBzZWxlY3RlZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUvc3RhdGUgb2YgdGhlIHNlbGVjdGVkIGBSYWRpb2Agd2l0aGluIHRoZSBgUmFkaW9Hcm91cGAgdG8gdGhlIHBhc3NlZCBpbiB2YWx1ZS5cblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG5cdFx0aWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xuXHRcdFx0dGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcblxuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZFJhZGlvRnJvbVZhbHVlKCk7XG5cdFx0XHR0aGlzLmNoZWNrU2VsZWN0ZWRSYWRpbygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB2YWx1ZS9zdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgYFJhZGlvYCB3aXRoaW4gdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGdldCB2YWx1ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fdmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVwbGFjZXMgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBgUmFkaW9Hcm91cGAgd2l0aCB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyLlxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IG5hbWUobmFtZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fbmFtZSA9IG5hbWU7XG5cdFx0dGhpcy51cGRhdGVSYWRpb3MoKTtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYXNzb2NpYXRlZCBuYW1lIG9mIHRoZSBgUmFkaW9Hcm91cGAuXG5cdCAqL1xuXHRnZXQgbmFtZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fbmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHRoZSB3aG9sZSByYWRpbyBncm91cFxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcblx0XHR0aGlzLnVwZGF0ZVJhZGlvcygpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBkaXNhYmxlZCB2YWx1ZSBmb3IgdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2tlbGV0b24gdmFsdWUgaW4gdGhlIGBSYWRpb0dyb3VwYCBpZiB0aGVyZSBpcyBvbmUuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRnZXQgc2tlbGV0b24oKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5fc2tlbGV0b247XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgc2tlbGV0b24gdmFsdWUgZm9yIGFsbCBgUmFkaW9gIHRvIHRoZSBza2VsZXRvbiB2YWx1ZSBvZiBgUmFkaW9Hcm91cGAuXG5cdCAqL1xuXHRzZXQgc2tlbGV0b24odmFsdWU6IGFueSkge1xuXHRcdHRoaXMuX3NrZWxldG9uID0gdmFsdWU7XG5cdFx0dGhpcy51cGRhdGVDaGlsZHJlbigpO1xuXHR9XG5cdC8qKlxuXHQgKiBVc2VkIGZvciBjcmVhdGluZyB0aGUgYFJhZGlvR3JvdXBgICduYW1lJyBwcm9wZXJ0eSBkeW5hbWljYWxseS5cblx0ICovXG5cdHN0YXRpYyByYWRpb0dyb3VwQ291bnQgPSAwO1xuXG5cdEBJbnB1dCgpIG9yaWVudGF0aW9uOiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIiA9IFwiaG9yaXpvbnRhbFwiO1xuXG5cdEBJbnB1dCgpIGxhYmVsUGxhY2VtZW50OiBcInJpZ2h0XCIgfCBcImxlZnRcIiA9ICBcInJpZ2h0XCI7XG5cblx0QElucHV0KCkgbGVnZW5kOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiAqKkV4cGVyaW1lbnRhbCoqOiBPcHRpb25hbCBkZWNvcmF0b3IgKGUuZy4gQUkgbGFiZWwpLlxuXHQgKi9cblx0QElucHV0KCkgZGVjb3JhdG9yOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHNldCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSBvbiB0aGUgcmFkaW8gZ3JvdXAgZWxlbWVudC5cblx0ICovXG5cdEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHNldCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIG9uIHRoZSByYWRpbyBncm91cCBlbGVtZW50LlxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcblxuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgaGVscGVyIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgdGhlIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFZhbHVlIGRpc3BsYXllZCBpZiBjb21ib2JveCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5UZXh0KVxuXHQqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHdhcm5pbmcgdGV4dFxuXHQgKi9cblx0QElucHV0KCkgd2FyblRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCAqIEVtaXRzIGV2ZW50IG5vdGlmeWluZyBvdGhlciBjbGFzc2VzIG9mIGEgY2hhbmdlIHVzaW5nIGEgYFJhZGlvQ2hhbmdlYCBjbGFzcy5cblx0ICovXG5cdEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxSYWRpb0NoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJhZGlvQ2hhbmdlPigpO1xuXG5cdC8qKlxuXHQgKiBUaGUgYFJhZGlvYCBpbnB1dCBpdGVtcyBpbiB0aGUgYFJhZGlvR3JvdXBgLlxuXHQgKi9cblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZvcndhcmQtcmVmXG5cdEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBSYWRpbykpIHJhZGlvczogUXVlcnlMaXN0PFJhZGlvPjtcblxuXHQvKipcblx0ICogQmluZHMgJ2Nkcy0tZm9ybS1pdGVtJyB2YWx1ZSB0byB0aGUgY2xhc3MgZm9yIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tZm9ybS1pdGVtXCIpIHJhZGlvQnV0dG9uR3JvdXBDbGFzcyA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRvIHRyYWNrIHdoZXRoZXIgdGhlIGBSYWRpb0dyb3VwYCBoYXMgYmVlbiBpbml0aWFsaXplZC5cblx0ICovXG5cdHByb3RlY3RlZCBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBSZWZsZWN0cyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgYW5kIGNhbm5vdCBiZSBzZWxlY3RlZC5cblx0ICovXG5cdHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFJlZmxlY3RzIHdoZXRoZXIgb3Igbm90IHRoZSBkcm9wZG93biBpcyBsb2FkaW5nLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9za2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogVGhlIHZhbHVlIG9mIHRoZSBzZWxlY3RlZCBvcHRpb24gd2l0aGluIHRoZSBgUmFkaW9Hcm91cGAuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgX3ZhbHVlOiBhbnkgPSBudWxsO1xuXHQvKipcblx0ICogVGhlIGBSYWRpb2Agd2l0aGluIHRoZSBgUmFkaW9Hcm91cGAgdGhhdCBpcyBzZWxlY3RlZC5cblx0ICovXG5cdHByb3RlY3RlZCBfc2VsZWN0ZWQ6IFJhZGlvID0gbnVsbDtcblx0LyoqXG5cdCAqIFRoZSBuYW1lIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdHByb3RlY3RlZCBfbmFtZSA9IGByYWRpby1ncm91cC0ke1JhZGlvR3JvdXAucmFkaW9Hcm91cENvdW50Kyt9YDtcblxuXHRwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgc2VsZWN0ZWQgYFJhZGlvYCB0byBiZSBjaGVja2VkIChzZWxlY3RlZCkuXG5cdCAqL1xuXHRjaGVja1NlbGVjdGVkUmFkaW8oKSB7XG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuX3NlbGVjdGVkLmNoZWNrZWQpIHtcblx0XHRcdHRoaXMuc2VsZWN0ZWQuY2hlY2tlZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZSB0aGUgdmFsdWUgb2YgdGhlIGBSYWRpb0dyb3VwYCB0byB1cGRhdGUgdGhlIHNlbGVjdGVkIHJhZGlvIHRvIHRoZSByaWdodCBzdGF0ZSAoc2VsZWN0ZWQgc3RhdGUpLlxuXHQgKi9cblx0dXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpIHtcblx0XHRsZXQgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWQgIT0gbnVsbCAmJiB0aGlzLl9zZWxlY3RlZC52YWx1ZSA9PT0gdGhpcy5fdmFsdWU7XG5cdFx0aWYgKHRoaXMucmFkaW9zICYmICFhbHJlYWR5U2VsZWN0ZWQpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkICYmIHRoaXMudmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZC5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9zZWxlY3RlZCA9IG51bGw7XG5cdFx0XHR0aGlzLnJhZGlvcy5mb3JFYWNoKHJhZGlvID0+IHtcblx0XHRcdFx0aWYgKHJhZGlvLmNoZWNrZWQgfHwgcmFkaW8udmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VsZWN0ZWQgPSByYWRpbztcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZCAmJiAhdGhpcy52YWx1ZSkge1xuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IHRoaXMuc2VsZWN0ZWQudmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgbWV0aG9kIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0aGUgYFJhZGlvR3JvdXBgLlxuXHQgKlxuXHQgKiBleDogYHRoaXMuZm9ybUdyb3VwLmdldChcIm15UmFkaW9Hcm91cFwiKS5kaXNhYmxlKCk7YFxuXHQgKlxuXHQgKiBAcGFyYW0gaXNEaXNhYmxlZCBgdHJ1ZWAgdG8gZGlzYWJsZSB0aGUgaW5wdXRzXG5cdCAqL1xuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgY2xhc3Mgb2YgYFJhZGlvQ2hhbmdlYCB0byBlbWl0IHRoZSBjaGFuZ2UgaW4gdGhlIGBSYWRpb0dyb3VwYC5cblx0ICovXG5cdGVtaXRDaGFuZ2VFdmVudChldmVudDogUmFkaW9DaGFuZ2UpIHtcblx0XHR0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShldmVudC52YWx1ZSk7XG5cdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTeW5jaHJvbml6ZXMgcmFkaW8gcHJvcGVydGllcy5cblx0ICovXG5cdHVwZGF0ZVJhZGlvcygpIHtcblx0XHRpZiAodGhpcy5yYWRpb3MpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnJhZGlvcy5mb3JFYWNoKHJhZGlvID0+IHtcblx0XHRcdFx0XHRyYWRpby5uYW1lID0gdGhpcy5uYW1lO1xuXHRcdFx0XHRcdHJhZGlvLnNldERpc2FibGVkRnJvbUdyb3VwKHRoaXMuZGlzYWJsZWQpO1xuXHRcdFx0XHRcdGlmICh0aGlzLmxhYmVsUGxhY2VtZW50ID09PSBcImxlZnRcIikge1xuXHRcdFx0XHRcdFx0cmFkaW8ubGFiZWxQbGFjZW1lbnQgPSBcImxlZnRcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBgUmFkaW9Hcm91cGAgdXNpbmcgdGhlIHByb3ZpZGVkIHBhcmFtZXRlci5cblx0ICovXG5cdHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0fVxuXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG5cdFx0XHR0aGlzLnJhZGlvcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLnZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuX3NlbGVjdGVkID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZFJhZGlvRnJvbVZhbHVlKCk7XG5cdFx0XHRcdFx0dGhpcy5jaGVja1NlbGVjdGVkUmFkaW8oKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnVwZGF0ZVJhZGlvcygpO1xuXHRcdFx0XHR0aGlzLnVwZGF0ZVJhZGlvQ2hhbmdlSGFuZGxlcigpO1xuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0aWYgKHRoaXMudmFsdWUpIHtcblx0XHRcdHRoaXMudXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpO1xuXHRcdFx0dGhpcy5jaGVja1NlbGVjdGVkUmFkaW8oKTtcblx0XHR9XG5cblx0XHR0aGlzLnVwZGF0ZUNoaWxkcmVuKCk7XG5cdFx0dGhpcy51cGRhdGVSYWRpb0NoYW5nZUhhbmRsZXIoKTtcblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLnVwZGF0ZVJhZGlvcygpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHNldCBtZXRob2QgdG8gcHJvcGFnYXRlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybS5cblx0ICovXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBjb250cm9sIGhhcyBiZWVuIHRvdWNoZWQuXG5cdCAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY2hlY2tib3ggaXMgdG91Y2hlZC5cblx0ICovXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG5cdFx0dGhpcy5vblRvdWNoZWQgPSBmbjtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoXCJmb2N1c291dFwiKVxuXHRmb2N1c091dCgpIHtcblx0XHR0aGlzLm9uVG91Y2hlZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG5cdCAqL1xuXHRvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG5cdC8qKlxuXHQgKiBNZXRob2Qgc2V0IGluIHJlZ2lzdGVyT25DaGFuZ2UgdG8gcHJvcGFnYXRlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybS5cblx0ICovXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG5cdHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHRwcm90ZWN0ZWQgdXBkYXRlQ2hpbGRyZW4oKSB7XG5cdFx0aWYgKHRoaXMucmFkaW9zKSB7XG5cdFx0XHR0aGlzLnJhZGlvcy5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnNrZWxldG9uID0gdGhpcy5za2VsZXRvbik7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIHVwZGF0ZVJhZGlvQ2hhbmdlSGFuZGxlcigpIHtcblx0XHR0aGlzLnJhZGlvcy5mb3JFYWNoKHJhZGlvID0+IHtcblx0XHRcdHJhZGlvLnJlZ2lzdGVyUmFkaW9DaGFuZ2VIYW5kbGVyKChldmVudDogUmFkaW9DaGFuZ2UpID0+IHtcblx0XHRcdFx0aWYgKCh0aGlzLnNlbGVjdGVkICYmIHRoaXMuc2VsZWN0ZWQudmFsdWUpID09PSBldmVudC52YWx1ZSkge1xuXHRcdFx0XHRcdC8vIG5vIG5lZWQgdG8gcmVkb1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBkZXNlbGVjdCBwcmV2aW91cyByYWRpb1xuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWQuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHVwZGF0ZSBzZWxlY3RlZCBhbmQgdmFsdWUgZnJvbSB0aGUgZXZlbnRcblx0XHRcdFx0dGhpcy5fc2VsZWN0ZWQgPSBldmVudC5zb3VyY2U7XG5cdFx0XHRcdHRoaXMuX3ZhbHVlID0gZXZlbnQudmFsdWU7XG5cdFx0XHRcdC8vIGJ1YmJsZSB0aGUgZXZlbnRcblx0XHRcdFx0dGhpcy5lbWl0Q2hhbmdlRXZlbnQoZXZlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -186,6 +186,7 @@ class ComboBox {
186
186
  this._clearSelectionTitle = this.i18n.getOverridable("COMBOBOX.CLEAR_SELECTED");
187
187
  this._clearSelectionAria = this.i18n.getOverridable("COMBOBOX.A11Y.CLEAR_SELECTED");
188
188
  this._isFocused = false;
189
+ this._isUsingNgControl = false;
189
190
  }
190
191
  /**
191
192
  * Text to show when nothing is selected.
@@ -281,11 +282,11 @@ class ComboBox {
281
282
  if (!isUpdate(event)) {
282
283
  if (this.itemValueKey && this.view.getSelected()) {
283
284
  const values = this.view.getSelected().map(item => item[this.itemValueKey]);
284
- this.propagateChangeCallback(values);
285
+ this._propagateChange(values);
285
286
  // otherwise just pass up the values from `getSelected`
286
287
  }
287
288
  else {
288
- this.propagateChangeCallback(this.view.getSelected());
289
+ this._propagateChange(this.view.getSelected());
289
290
  }
290
291
  this.selected.emit(event);
291
292
  }
@@ -297,17 +298,17 @@ class ComboBox {
297
298
  this.selectedValue = event.item.content;
298
299
  if (!isUpdate(event)) {
299
300
  if (this.itemValueKey) {
300
- this.propagateChangeCallback(event.item[this.itemValueKey]);
301
+ this._propagateChange(event.item[this.itemValueKey]);
301
302
  }
302
303
  else {
303
- this.propagateChangeCallback(event.item);
304
+ this._propagateChange(event.item);
304
305
  }
305
306
  }
306
307
  }
307
308
  else {
308
309
  this.selectedValue = "";
309
310
  if (!isUpdate(event)) {
310
- this.propagateChangeCallback(null);
311
+ this._propagateChange(null);
311
312
  }
312
313
  }
313
314
  // not guarding these since the nativeElement has to be loaded
@@ -319,6 +320,9 @@ class ComboBox {
319
320
  this.selected.emit(event.item);
320
321
  this.closeDropdown();
321
322
  }
323
+ else if (this._isUsingNgControl) {
324
+ this.writeValue(this._writtenValue);
325
+ }
322
326
  }
323
327
  });
324
328
  // update the rest of combobox with any pre-selected items
@@ -384,6 +388,7 @@ class ComboBox {
384
388
  * propagates the value provided from ngModel
385
389
  */
386
390
  writeValue(value) {
391
+ this._writtenValue = value;
387
392
  if (this.type === "single") {
388
393
  if (this.itemValueKey) {
389
394
  // clone the specified item and update its state
@@ -417,10 +422,15 @@ class ComboBox {
417
422
  }
418
423
  this.updateSelected();
419
424
  }
425
+ _propagateChange(value) {
426
+ this._writtenValue = value;
427
+ this.propagateChangeCallback(value);
428
+ }
420
429
  onBlur() {
421
430
  this.onTouchedCallback();
422
431
  }
423
432
  registerOnChange(fn) {
433
+ this._isUsingNgControl = true;
424
434
  this.propagateChangeCallback = fn;
425
435
  }
426
436
  registerOnTouched(fn) {
@@ -448,7 +458,7 @@ class ComboBox {
448
458
  }
449
459
  return item;
450
460
  });
451
- this.view.items = this.items;
461
+ this.view.propagateSelected([]);
452
462
  this.updatePills();
453
463
  /**
454
464
  * @todo - In next major version update to the following:
@@ -462,10 +472,10 @@ class ComboBox {
462
472
  // in case there are disabled items they should be mapped according to itemValueKey
463
473
  if (this.itemValueKey && selected) {
464
474
  const values = selected.map((item) => item[this.itemValueKey]);
465
- this.propagateChangeCallback(values);
475
+ this._propagateChange(values);
466
476
  }
467
477
  else {
468
- this.propagateChangeCallback(selected);
478
+ this._propagateChange(selected);
469
479
  }
470
480
  this.selected.emit(selected);
471
481
  this.clear.emit(event);