@colijnit/transaction 12.1.57 → 12.1.59

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 (234) hide show
  1. package/bundles/colijnit-transaction.umd.js +1778 -747
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +251 -235
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +252 -236
  6. package/esm2015/lib/assets/dictionary/text.properties.js +9 -1
  7. package/esm2015/lib/component/animated-checkbox/animated-checkbox.component.js +27 -0
  8. package/esm2015/lib/component/animated-checkbox/animated-checkbox.module.js +21 -0
  9. package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +84 -90
  10. package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +51 -46
  11. package/esm2015/lib/component/checkout/checkout.component.js +1 -3
  12. package/esm2015/lib/component/confirmation-dialog/confirmation-dialog.component.js +2 -2
  13. package/esm2015/lib/component/core/base/components/characteristic-answer/characteristic-answer.component.js +2 -2
  14. package/esm2015/lib/component/core/base/components/warehouse/warehouse.component.js +2 -2
  15. package/esm2015/lib/component/core/base/dialog-transaction-line-base.component.js +6 -2
  16. package/esm2015/lib/component/core/base/transaction-filter-popup-base.component.js +8 -7
  17. package/esm2015/lib/component/core/base/transaction-header-base.component.js +3 -3
  18. package/esm2015/lib/component/core/base/transaction-header-filter-popup-base.component.js +111 -0
  19. package/esm2015/lib/component/core/base/transaction-line-base.component.js +2 -4
  20. package/esm2015/lib/component/core/base/transaction-lines-line-base.component.js +5 -3
  21. package/esm2015/lib/component/core/core.module.js +1 -4
  22. package/esm2015/lib/component/core/relation/customer-groups.component.js +4 -1
  23. package/esm2015/lib/component/dialog/transaction-header/dialog-transaction-header-delivery-method/dialog-transaction-header-delivery-method.component.js +2 -2
  24. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-commission-code/dialog-transaction-line-commission-code.component.js +2 -2
  25. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-delivery-method/dialog-transaction-line-delivery-method.component.js +2 -2
  26. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-discount/dialog-transaction-line-discount.component.js +3 -7
  27. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-price-list/dialog-transaction-line-price-list.component.js +2 -2
  28. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/dialog-transaction-line-supplier.component.js +37 -0
  29. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/dialog-transaction-line-supplier.module.js +28 -0
  30. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-vat/dialog-transaction-line-vat.component.js +2 -2
  31. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse/dialog-transaction-line-warehouse.component.js +2 -2
  32. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.js +2 -2
  33. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/dialog-transaction-line-warehouse-location.component.js +2 -2
  34. package/esm2015/lib/component/down-payment/down-payment.component.js +2 -2
  35. package/esm2015/lib/component/down-payment/down-payment.module.js +4 -2
  36. package/esm2015/lib/component/loader/loader.component.js +51 -0
  37. package/esm2015/lib/component/loader/loader.module.js +19 -0
  38. package/esm2015/lib/component/payment/payment.component.js +14 -11
  39. package/esm2015/lib/component/payment/payment.module.js +4 -2
  40. package/esm2015/lib/component/payment-qr-code/payment-qr-code.component.js +2 -2
  41. package/esm2015/lib/component/payment-qr-code/payment-qr-code.module.js +4 -2
  42. package/esm2015/lib/component/relation/relation-address-tile/relation-address-tile.component.js +6 -2
  43. package/esm2015/lib/component/relation/relation-addresses/relation-addresses.component.js +29 -27
  44. package/esm2015/lib/component/relation/relation-addresses/relation-addresses.module.js +5 -3
  45. package/esm2015/lib/component/relation/relation-contact-details/relation-contact-details.component.js +7 -5
  46. package/esm2015/lib/component/relation/relation-general/relation-general.component.js +32 -11
  47. package/esm2015/lib/component/relation/relation-preferences/relation-preferences.component.js +5 -2
  48. package/esm2015/lib/component/relation/relation-type/relation-type.component.js +5 -1
  49. package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +1 -1
  50. package/esm2015/lib/component/tile/tile.component.js +2 -2
  51. package/esm2015/lib/component/transaction/transaction.component.js +2 -2
  52. package/esm2015/lib/component/transaction/transaction.module.js +4 -2
  53. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button-base.component.js +37 -0
  54. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button.component.js +55 -11
  55. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-purchase-button-bar-button.component.js +40 -0
  56. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +4 -1
  57. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.module.js +10 -3
  58. package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +4 -9
  59. package/esm2015/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.js +35 -11
  60. package/esm2015/lib/component/transaction-header-fields/transaction-header-delivery-method.component.js +16 -6
  61. package/esm2015/lib/component/transaction-header-fields/transaction-header-delivery-method.module.js +4 -3
  62. package/esm2015/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.js +5 -5
  63. package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.js +6 -31
  64. package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.module.js +4 -2
  65. package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.js +87 -0
  66. package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.module.js +45 -0
  67. package/esm2015/lib/component/transaction-line-checkbox-list/transaction-line-checkbox-list.component.js +2 -2
  68. package/esm2015/lib/component/transaction-line-fields/transaction-line-amount.component.js +47 -0
  69. package/esm2015/lib/component/transaction-line-fields/transaction-line-amount.module.js +21 -0
  70. package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.component.js +3 -3
  71. package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.component.js +3 -3
  72. package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.component.js +3 -3
  73. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +47 -0
  74. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.module.js +28 -0
  75. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier.component.js +19 -21
  76. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier.module.js +4 -2
  77. package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.component.js +3 -3
  78. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.js +3 -3
  79. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.component.js +3 -3
  80. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.component.js +10 -7
  81. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.module.js +4 -2
  82. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +5 -19
  83. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.module.js +4 -2
  84. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.js +52 -0
  85. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.module.js +28 -0
  86. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.js +29 -29
  87. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.js +6 -6
  88. package/esm2015/lib/component/transaction-search/transaction-filter-historic-state/transaction-filter-historic-state.component.js +14 -16
  89. package/esm2015/lib/component/transaction-send-button-dialog/transaction-send-button-dialog.component.js +75 -0
  90. package/esm2015/lib/component/transaction-send-button-dialog/transaction-send-button-dialog.module.js +25 -0
  91. package/esm2015/lib/enum/icon.enum.js +2 -1
  92. package/esm2015/lib/model/icon-svg.js +2 -1
  93. package/esm2015/lib/model/transaction-bar-button.js +2 -3
  94. package/esm2015/lib/service/pending-reason.service.js +12 -4
  95. package/esm2015/lib/service/transaction-connector-adapter.service.js +87 -1
  96. package/esm2015/lib/service/transaction-connector.service.js +30 -1
  97. package/esm2015/lib/service/transaction-event.service.js +3 -1
  98. package/esm2015/lib/service/transaction-mapping.service.js +7 -2
  99. package/esm2015/lib/service/transaction.service.js +91 -44
  100. package/esm2015/public_api.js +3 -1
  101. package/fesm2015/colijnit-transaction.js +1581 -625
  102. package/fesm2015/colijnit-transaction.js.map +1 -1
  103. package/lib/component/animated-checkbox/animated-checkbox.component.d.ts +5 -0
  104. package/lib/component/animated-checkbox/animated-checkbox.module.d.ts +2 -0
  105. package/lib/component/animated-checkbox/style/_layout.scss +78 -0
  106. package/lib/component/animated-checkbox/style/_material-definition.scss +13 -0
  107. package/lib/component/animated-checkbox/style/_theme.scss +4 -0
  108. package/lib/component/animated-checkbox/style/material.scss +4 -0
  109. package/lib/component/checkout/checkout-overview-delivery-edit/style/_layout.scss +95 -90
  110. package/lib/component/checkout/checkout-overview-delivery-edit/style/_material-definition.scss +0 -10
  111. package/lib/component/checkout/checkout-overview-delivery-edit/style/_theme.scss +0 -8
  112. package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +2 -6
  113. package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +0 -84
  114. package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +0 -16
  115. package/lib/component/checkout/style/_layout.scss +86 -1
  116. package/lib/component/checkout/style/_material-definition.scss +7 -0
  117. package/lib/component/core/base/components/characteristic-answer/style/_layout.scss +0 -4
  118. package/lib/component/core/base/components/warehouse/style/_layout.scss +0 -4
  119. package/lib/component/core/base/dialog-transaction-line-base.component.d.ts +3 -0
  120. package/lib/component/core/base/transaction-filter-popup-base.component.d.ts +2 -4
  121. package/lib/component/core/base/transaction-header-base.component.d.ts +3 -4
  122. package/lib/component/core/base/transaction-header-filter-popup-base.component.d.ts +38 -0
  123. package/lib/component/core/base/transaction-line-base.component.d.ts +1 -2
  124. package/lib/component/core/base/transaction-lines-line-base.component.d.ts +1 -1
  125. package/lib/component/core/relation/customer-groups.component.d.ts +1 -0
  126. package/lib/component/dialog/transaction-header/dialog-transaction-header-delivery-method/style/_layout.scss +0 -4
  127. package/lib/component/dialog/transaction-header/dialog-transaction-header-discount/style/_layout.scss +4 -5
  128. package/lib/component/dialog/transaction-header/dialog-transaction-header-discount/style/_material-definition.scss +5 -3
  129. package/lib/component/dialog/transaction-line/dialog-transaction-line-commission-code/style/_layout.scss +0 -4
  130. package/lib/component/dialog/transaction-line/dialog-transaction-line-delivery-method/style/_layout.scss +0 -4
  131. package/lib/component/dialog/transaction-line/dialog-transaction-line-discount/style/_layout.scss +4 -5
  132. package/lib/component/dialog/transaction-line/dialog-transaction-line-discount/style/_material-definition.scss +5 -3
  133. package/lib/component/dialog/transaction-line/dialog-transaction-line-price-list/style/_layout.scss +0 -4
  134. package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/dialog-transaction-line-supplier.component.d.ts +4 -0
  135. package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/dialog-transaction-line-supplier.module.d.ts +2 -0
  136. package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/style/_layout.scss +11 -0
  137. package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/style/_material-definition.scss +2 -0
  138. package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/style/_theme.scss +4 -0
  139. package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/style/material.scss +4 -0
  140. package/lib/component/dialog/transaction-line/dialog-transaction-line-vat/style/_layout.scss +0 -4
  141. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse/style/_layout.scss +0 -4
  142. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/style/_layout.scss +0 -4
  143. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/style/_layout.scss +0 -4
  144. package/lib/component/{core → loader}/loader.component.d.ts +1 -0
  145. package/lib/component/loader/loader.module.d.ts +2 -0
  146. package/lib/component/loader/style/_layout.scss +8 -0
  147. package/lib/component/loader/style/_material-definition.scss +1 -0
  148. package/lib/component/loader/style/_theme.scss +10 -0
  149. package/lib/component/loader/style/material.scss +4 -0
  150. package/lib/component/relation/relation-address/style/_layout.scss +3 -0
  151. package/lib/component/relation/relation-address-tile/relation-address-tile.component.d.ts +2 -1
  152. package/lib/component/relation/relation-addresses/relation-addresses.component.d.ts +5 -4
  153. package/lib/component/relation/relation-addresses/style/_layout.scss +2 -6
  154. package/lib/component/relation/relation-contact-details/relation-contact-details.component.d.ts +1 -0
  155. package/lib/component/relation/relation-general/relation-general.component.d.ts +6 -1
  156. package/lib/component/relation/relation-preferences/relation-preferences.component.d.ts +1 -0
  157. package/lib/component/relation/relation-type/relation-type.component.d.ts +1 -0
  158. package/lib/component/tile/style/_layout.scss +10 -7
  159. package/lib/component/tile/style/_material-definition.scss +2 -1
  160. package/lib/component/transaction-button-bar/style/_layout.scss +25 -0
  161. package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button-base.component.d.ts +16 -0
  162. package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button.component.d.ts +14 -5
  163. package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-purchase-button-bar-button.component.d.ts +12 -0
  164. package/lib/component/transaction-button-bar/transaction-button-bar.component.d.ts +2 -0
  165. package/lib/component/transaction-header/transaction-header-payment/style/_material-definition.scss +2 -1
  166. package/lib/component/transaction-header/transaction-header-payment/style/_theme.scss +5 -2
  167. package/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.d.ts +5 -1
  168. package/lib/component/transaction-header-fields/transaction-header-delivery-method.component.d.ts +1 -0
  169. package/lib/component/transaction-line/transaction-base-line/style/_layout.scss +0 -94
  170. package/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.d.ts +2 -1
  171. package/lib/component/transaction-line/transaction-line/style/_layout.scss +164 -0
  172. package/lib/component/transaction-line/transaction-line/style/_material-definition.scss +24 -0
  173. package/lib/component/transaction-line/transaction-line/style/_theme.scss +4 -0
  174. package/lib/component/transaction-line/transaction-line/style/material.scss +13 -0
  175. package/lib/component/transaction-line/transaction-overview-line/style/_layout.scss +0 -97
  176. package/lib/component/transaction-line/transaction-overview-line/style/_material-definition.scss +0 -36
  177. package/lib/component/transaction-line/transaction-overview-line/style/_theme.scss +0 -27
  178. package/lib/component/transaction-line/transaction-overview-line/style/material.scss +0 -11
  179. package/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.d.ts +4 -11
  180. package/lib/component/transaction-line/transaction-purchase-line/style/_layout.scss +7 -0
  181. package/lib/component/transaction-line/transaction-purchase-line/style/_material-definition.scss +0 -0
  182. package/lib/component/transaction-line/transaction-purchase-line/style/_theme.scss +4 -0
  183. package/lib/component/transaction-line/transaction-purchase-line/style/material.scss +4 -0
  184. package/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.d.ts +19 -0
  185. package/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.module.d.ts +2 -0
  186. package/lib/component/transaction-line-checkbox-list/style/_layout.scss +8 -4
  187. package/lib/component/transaction-line-checkbox-list/style/_material-definition.scss +1 -0
  188. package/lib/component/transaction-line-fields/transaction-line-amount.component.d.ts +10 -0
  189. package/lib/component/transaction-line-fields/transaction-line-amount.module.d.ts +2 -0
  190. package/lib/component/transaction-line-fields/transaction-line-commission-code.component.d.ts +2 -2
  191. package/lib/component/transaction-line-fields/transaction-line-delivery-method.component.d.ts +2 -2
  192. package/lib/component/transaction-line-fields/transaction-line-price-list.component.d.ts +2 -2
  193. package/lib/component/transaction-line-fields/transaction-line-supplier-button.component.d.ts +9 -0
  194. package/lib/component/transaction-line-fields/transaction-line-supplier-button.module.d.ts +2 -0
  195. package/lib/component/transaction-line-fields/transaction-line-supplier.component.d.ts +6 -5
  196. package/lib/component/transaction-line-fields/transaction-line-vat.component.d.ts +2 -2
  197. package/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.d.ts +2 -2
  198. package/lib/component/transaction-line-fields/transaction-line-warehouse.component.d.ts +2 -2
  199. package/lib/component/transaction-line-image-and-description/style/_layout.scss +16 -13
  200. package/lib/component/transaction-line-image-and-description/style/_material-definition.scss +21 -1
  201. package/lib/component/transaction-line-image-and-description/style/_theme.scss +18 -1
  202. package/lib/component/transaction-line-statusbar/style/_layout.scss +4 -0
  203. package/lib/component/transaction-lines/style/material.scss +1 -0
  204. package/lib/component/transaction-quick-access/transaction-quick-access/style/_layout.scss +5 -1
  205. package/lib/component/transaction-quick-access/transaction-quick-access/style/_material-definition.scss +2 -1
  206. package/lib/component/transaction-quick-access/transaction-quick-access/style/material.scss +1 -0
  207. package/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.component.d.ts +5 -3
  208. package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/style/_layout.scss +2 -49
  209. package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.d.ts +0 -4
  210. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/style/_layout.scss +8 -0
  211. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/style/_material-definition.scss +0 -0
  212. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/style/_theme.scss +4 -0
  213. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/style/material.scss +5 -0
  214. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.d.ts +13 -0
  215. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.module.d.ts +2 -0
  216. package/lib/component/transaction-search/transaction-filter-historic-state/transaction-filter-historic-state.component.d.ts +6 -4
  217. package/lib/component/transaction-send-button-dialog/style/_layout.scss +47 -0
  218. package/lib/component/transaction-send-button-dialog/style/_material-definition.scss +13 -0
  219. package/lib/component/transaction-send-button-dialog/style/_theme.scss +24 -0
  220. package/lib/component/transaction-send-button-dialog/style/material.scss +4 -0
  221. package/lib/component/transaction-send-button-dialog/transaction-send-button-dialog.component.d.ts +16 -0
  222. package/lib/component/transaction-send-button-dialog/transaction-send-button-dialog.module.d.ts +2 -0
  223. package/lib/enum/icon.enum.d.ts +1 -0
  224. package/lib/model/transaction-bar-button.d.ts +4 -1
  225. package/lib/service/pending-reason.service.d.ts +5 -1
  226. package/lib/service/transaction-connector-adapter.service.d.ts +11 -0
  227. package/lib/service/transaction-connector.service.d.ts +11 -0
  228. package/lib/service/transaction-event.service.d.ts +2 -0
  229. package/lib/service/transaction.service.d.ts +14 -0
  230. package/lib/style/_variables.scss +5 -2
  231. package/lib/style/transaction-globals.scss +12 -1
  232. package/package.json +1 -1
  233. package/public_api.d.ts +2 -0
  234. package/esm2015/lib/component/core/loader.component.js +0 -44
@@ -140,102 +140,96 @@ CheckoutOverviewDeliveryEditComponent.decorators = [
140
140
  <div class="delivery-edit-content">
141
141
  <co-form>
142
142
  <div class="checkout-form-wrapper">
143
- <div class="checkout-section-wrapper">
144
- <div class="checkout-label-column">
145
- <span>01</span>
146
- <span class="label" [textContent]="'DELIVERY_DATA' | localize"></span>
143
+ <div class="checkout-label-column">
144
+ <span>01</span>
145
+ <span class="label" [textContent]="'DELIVERY_DATA' | localize"></span>
146
+ </div>
147
+ <div class="checkout-data-column">
148
+ <div class="checkout-data-row">
149
+ <co-transaction-header-delivery-method
150
+ [transactionInfo]="transaction.transactionInfo"
151
+ [filterOnWizard]="true"
152
+ (deliveryMethodChange)="currentDeliveryMethod = $event"
153
+ ></co-transaction-header-delivery-method>
154
+ </div>
155
+ <div class="checkout-data-row">
156
+ <co-transaction-header-delivery-date class="header-delivery-deliverydate"
157
+ [transactionInfo]="transaction.transactionInfo"
158
+ ></co-transaction-header-delivery-date>
159
+ <co-transaction-header-preferred-delivery-date class="header-delivery-deliverydate"
160
+ [transactionInfo]="transaction.transactionInfo"
161
+ ></co-transaction-header-preferred-delivery-date>
162
+ </div>
163
+ <div class="checkout-data-row">
164
+ <co-transaction-header-partial-delivery [transactionInfo]="transaction.transactionInfo"></co-transaction-header-partial-delivery>
165
+ </div>
166
+ <div class="checkout-data-row">
167
+ <co-collapsible [headerTitle]="'ADD_DELIVERY_OPTION' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
168
+ <div class="checkout-data-row">
169
+ <co-transaction-header-delivery-options
170
+ [transactionInfo]="transaction.transactionInfo"
171
+ [deliveryMethod]="currentDeliveryMethod"
172
+ ></co-transaction-header-delivery-options>
173
+ </div>
174
+ </co-collapsible>
175
+ </div>
176
+ <div class="checkout-data-row">
177
+ <co-collapsible [headerTitle]="'ADD_REMARK' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
178
+ <div class="checkout-data-row">
179
+ <co-transaction-header-remarks [transactionInfo]="transaction.transactionInfo"></co-transaction-header-remarks>
180
+ </div>
181
+ </co-collapsible>
182
+ </div>
183
+ <div class="checkout-data-row">
184
+ <co-collapsible [headerTitle]="'ADD_REFERENCE' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
185
+ <div class="checkout-data-row">
186
+ <co-transaction-header-reference [transactionInfo]="transaction.transactionInfo"></co-transaction-header-reference>
187
+ </div>
188
+ <div class="checkout-data-row">
189
+ <co-transaction-header-relation-reference [transactionInfo]="transaction.transactionInfo"></co-transaction-header-relation-reference>
190
+ </div>
191
+ </co-collapsible>
147
192
  </div>
148
- <div class="checkout-data-column">
149
- <div class="checkout-data-row">
150
- <co-transaction-header-delivery-method
151
- [transactionInfo]="transaction.transactionInfo"
152
- [filterOnWizard]="true"
153
- (deliveryMethodChange)="currentDeliveryMethod = $event"
154
- ></co-transaction-header-delivery-method>
155
- </div>
156
- <div class="checkout-data-row">
157
- <co-transaction-header-delivery-date class="header-delivery-deliverydate"
158
- [transactionInfo]="transaction.transactionInfo"
159
- ></co-transaction-header-delivery-date>
160
- <co-transaction-header-preferred-delivery-date class="header-delivery-deliverydate"
161
- [transactionInfo]="transaction.transactionInfo"
162
- ></co-transaction-header-preferred-delivery-date>
163
- </div>
164
- <div class="checkout-data-row">
165
- <co-transaction-header-partial-delivery [transactionInfo]="transaction.transactionInfo"></co-transaction-header-partial-delivery>
166
- </div>
167
- <div class="checkout-data-row">
168
- <co-collapsible [headerTitle]="'ADD_DELIVERY_OPTION' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
169
- <div class="checkout-data-row">
170
- <co-transaction-header-delivery-options
171
- [transactionInfo]="transaction.transactionInfo"
172
- [deliveryMethod]="currentDeliveryMethod"
173
- ></co-transaction-header-delivery-options>
174
- </div>
175
- </co-collapsible>
176
- </div>
177
- <div class="checkout-data-row">
178
- <co-collapsible [headerTitle]="'ADD_REMARK' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
179
- <div class="checkout-data-row">
180
- <co-transaction-header-remarks [transactionInfo]="transaction.transactionInfo"></co-transaction-header-remarks>
181
- </div>
182
- </co-collapsible>
183
- </div>
184
- <div class="checkout-data-row">
185
- <co-collapsible [headerTitle]="'ADD_REFERENCE' | localize" [iconData]="iconService.getIcon(icons.TriangleDown)">
186
- <div class="checkout-data-row">
187
- <co-transaction-header-reference [transactionInfo]="transaction.transactionInfo"></co-transaction-header-reference>
188
- </div>
189
- <div class="checkout-data-row">
190
- <co-transaction-header-relation-reference [transactionInfo]="transaction.transactionInfo"></co-transaction-header-relation-reference>
191
- </div>
192
- </co-collapsible>
193
- </div>
194
- <div class="checkout-data-row">
195
- <co-input-date [model]="'NOG_NIET_GEIMPLEMENTEERD'" [placeholder]="'ASSEMBLY_DATE' | localize"></co-input-date>
196
- </div>
193
+ <div class="checkout-data-row">
194
+ <co-input-date [model]="'NOG_NIET_GEIMPLEMENTEERD'" [placeholder]="'ASSEMBLY_DATE' | localize"></co-input-date>
197
195
  </div>
198
196
  </div>
199
- <div class="checkout-section-wrapper">
200
- <div class="checkout-label-column">
201
- <span>02</span>
202
- <span class="label" [textContent]="'DOWNPAYMENT' | localize"></span>
197
+ <div class="checkout-label-column">
198
+ <span>02</span>
199
+ <span class="label" [textContent]="'DOWNPAYMENT' | localize"></span>
200
+ </div>
201
+ <div class="checkout-data-column">
202
+ <div class="checkout-data-row">
203
+ <co-transaction-header-downpayment-percentage [transactionInfo]="transaction.transactionInfo"></co-transaction-header-downpayment-percentage>
204
+ <co-transaction-header-downpayment-amount [transactionInfo]="transaction.transactionInfo"></co-transaction-header-downpayment-amount>
205
+ </div>
206
+ <div class="checkout-data-row">
207
+ <co-input-text [model]="'NOG_NIET_GEIMPLEMENTEERD'" [placeholder]="'DOWNPAYMENT_BY_BR' | localize"></co-input-text>
203
208
  </div>
204
- <div class="checkout-data-column">
205
- <div class="checkout-data-row">
206
- <co-transaction-header-downpayment-percentage [transactionInfo]="transaction.transactionInfo"></co-transaction-header-downpayment-percentage>
207
- <co-transaction-header-downpayment-amount [transactionInfo]="transaction.transactionInfo"></co-transaction-header-downpayment-amount>
208
- </div>
209
- <div class="checkout-data-row">
210
- <co-input-text [model]="'NOG_NIET_GEIMPLEMENTEERD'" [placeholder]="'DOWNPAYMENT_BY_BR' | localize"></co-input-text>
211
- </div>
212
- <div class="checkout-data-row">
213
- <co-input-text [model]="'NOG_NIET_GEIMPLEMENTEERD'" [placeholder]="'DOWNPAYMENT_ON_DELIVERY' | localize"></co-input-text>
214
- </div>
209
+ <div class="checkout-data-row">
210
+ <co-input-text [model]="'NOG_NIET_GEIMPLEMENTEERD'" [placeholder]="'DOWNPAYMENT_ON_DELIVERY' | localize"></co-input-text>
215
211
  </div>
216
212
  </div>
217
- <div class="checkout-section-wrapper">
218
- <div class="checkout-label-column">
219
- <span>03</span>
220
- <span class="label" [textContent]="'ORDER_DATA' | localize"></span>
213
+ <div class="checkout-label-column">
214
+ <span>03</span>
215
+ <span class="label" [textContent]="'ORDER_DATA' | localize"></span>
216
+ </div>
217
+ <div class="checkout-data-column">
218
+ <div class="checkout-data-row">
219
+ <co-transaction-header-branch [simple]="true" [transactionInfo]="transaction.transactionInfo"></co-transaction-header-branch>
220
+ <co-transaction-header-administrative-relation [transactionInfo]="transaction.transactionInfo"></co-transaction-header-administrative-relation>
221
+ </div>
222
+ <div class="checkout-data-row">
223
+ <span class="label" [textContent]="'MARKETING_CODE' | localize"></span>
224
+ </div>
225
+ <div class="checkout-data-row">
226
+ <co-transaction-header-marketing [transactionInfo]="transaction.transactionInfo"></co-transaction-header-marketing>
227
+ </div>
228
+ <div class="checkout-data-row">
229
+ <span class="label" [textContent]="'ORDER_PARAMETERS' | localize"></span>
221
230
  </div>
222
- <div class="checkout-data-column">
223
- <div class="checkout-data-row">
224
- <co-transaction-header-branch [simple]="true" [transactionInfo]="transaction.transactionInfo"></co-transaction-header-branch>
225
- <co-transaction-header-administrative-relation [transactionInfo]="transaction.transactionInfo"></co-transaction-header-administrative-relation>
226
- </div>
227
- <div class="checkout-data-row">
228
- <span class="label" [textContent]="'MARKETING_CODE' | localize"></span>
229
- </div>
230
- <div class="checkout-data-row">
231
- <co-transaction-header-marketing [transactionInfo]="transaction.transactionInfo"></co-transaction-header-marketing>
232
- </div>
233
- <div class="checkout-data-row">
234
- <span class="label" [textContent]="'ORDER_PARAMETERS' | localize"></span>
235
- </div>
236
- <div class="checkout-data-row">
237
- <co-transaction-header-definitive [transactionInfo]="transaction.transactionInfo"></co-transaction-header-definitive>
238
- </div>
231
+ <div class="checkout-data-row">
232
+ <co-transaction-header-definitive [transactionInfo]="transaction.transactionInfo"></co-transaction-header-definitive>
239
233
  </div>
240
234
  </div>
241
235
  </div>
@@ -269,4 +263,4 @@ CheckoutOverviewDeliveryEditComponent.propDecorators = {
269
263
  invalidSubmit: [{ type: Output }],
270
264
  showClass: [{ type: HostBinding, args: ["class.co-checkout-overview-delivery-edit",] }]
271
265
  };
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU0vRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQTJIckUsTUFBTSxPQUFPLHFDQUFxQztJQWdGaEQsWUFDVSxrQkFBcUMsRUFDckMsa0JBQXFDLEVBQ3JDLFVBQWlDLEVBQ2xDLE9BQTJCLEVBQzNCLFdBQTZCO1FBSjVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNsQyxZ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QVUsQ0FBQzthQUMxQztRQUNILENBQUM7S0FBQTtJQUVPLHNCQUFzQjtRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOzs7WUExUkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUdUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxpQkFBaUI7aUJBQ2xCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsd0JBQXdCLEVBQUU7d0JBQ2hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDN0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM1QyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEvSE8saUJBQWlCO1lBUmpCLGlCQUFpQjtZQVlqQixxQkFBcUI7WUFOckIsa0JBQWtCO1lBT2xCLGdCQUFnQjs7OzBCQWlJckIsS0FBSzswQkFHTCxNQUFNOzRCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7QWRkcmVzc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvXCI7XG5pbXBvcnQge0dlbmRlclR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9nZW5kZXItdHlwZS5lbnVtXCI7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvXCI7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9wdGlvbi5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7VGV4dFZhbHVlQ29udGFpbmVyfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWwvdGV4dC12YWx1ZS1jb250YWluZXJcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIi4uLy4uLy4uL2ZhY3RvcnkvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjby1jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWVkaXQtY29udGVudFwiPlxuICAgICAgPGNvLWZvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1mb3JtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtc2VjdGlvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxzcGFuPjAxPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidERUxJVkVSWV9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS1tZXRob2RcbiAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCJcbiAgICAgICAgICAgICAgICAgIFtmaWx0ZXJPbldpemFyZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChkZWxpdmVyeU1ldGhvZENoYW5nZSk9XCJjdXJyZW50RGVsaXZlcnlNZXRob2QgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS1tZXRob2Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWRlbGl2ZXJ5LWRhdGUgY2xhc3M9XCJoZWFkZXItZGVsaXZlcnktZGVsaXZlcnlkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIlxuICAgICAgICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS1kYXRlPlxuICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItcHJlZmVycmVkLWRlbGl2ZXJ5LWRhdGUgY2xhc3M9XCJoZWFkZXItZGVsaXZlcnktZGVsaXZlcnlkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIlxuICAgICAgICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1wcmVmZXJyZWQtZGVsaXZlcnktZGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItcGFydGlhbC1kZWxpdmVyeSBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLXBhcnRpYWwtZGVsaXZlcnk+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2hlYWRlclRpdGxlXT1cIidBRERfREVMSVZFUllfT1BUSU9OJyB8IGxvY2FsaXplXCIgW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuVHJpYW5nbGVEb3duKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItZGVsaXZlcnktb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGVsaXZlcnlNZXRob2RdPVwiY3VycmVudERlbGl2ZXJ5TWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRlbGl2ZXJ5LW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlIFtoZWFkZXJUaXRsZV09XCInQUREX1JFTUFSSycgfCBsb2NhbGl6ZVwiIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLlRyaWFuZ2xlRG93bilcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXJlbWFya3MgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1yZW1hcmtzPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1jb2xsYXBzaWJsZSBbaGVhZGVyVGl0bGVdPVwiJ0FERF9SRUZFUkVOQ0UnIHwgbG9jYWxpemVcIiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5UcmlhbmdsZURvd24pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1yZWZlcmVuY2UgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1yZWZlcmVuY2U+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXJlbGF0aW9uLXJlZmVyZW5jZSBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLXJlbGF0aW9uLXJlZmVyZW5jZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvY28tY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtZGF0ZSBbbW9kZWxdPVwiJ05PR19OSUVUX0dFSU1QTEVNRU5URUVSRCdcIiBbcGxhY2Vob2xkZXJdPVwiJ0FTU0VNQkxZX0RBVEUnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LWRhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LXNlY3Rpb24td3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInRE9XTlBBWU1FTlQnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWRvd25wYXltZW50LXBlcmNlbnRhZ2UgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kb3ducGF5bWVudC1wZXJjZW50YWdlPlxuICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItZG93bnBheW1lbnQtYW1vdW50IFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItZG93bnBheW1lbnQtYW1vdW50PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidET1dOUEFZTUVOVF9CWV9CUicgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCInTk9HX05JRVRfR0VJTVBMRU1FTlRFRVJEJ1wiIFtwbGFjZWhvbGRlcl09XCInRE9XTlBBWU1FTlRfT05fREVMSVZFUlknIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LXNlY3Rpb24td3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInT1JERVJfREFUQScgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItYnJhbmNoIFtzaW1wbGVdPVwidHJ1ZVwiIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItYnJhbmNoPlxuICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItYWRtaW5pc3RyYXRpdmUtcmVsYXRpb24gW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1hZG1pbmlzdHJhdGl2ZS1yZWxhdGlvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ01BUktFVElOR19DT0RFJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1tYXJrZXRpbmcgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1tYXJrZXRpbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidPUkRFUl9QQVJBTUVURVJTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWZpbml0aXZlIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItZGVmaW5pdGl2ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvLWZvcm0+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIEZvcm1NYXN0ZXJTZXJ2aWNlXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFwic2hvd0hpZGVJbnZvaWNlQWRkcmVzc1wiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe2hlaWdodDogMCwgb3BhY2l0eTogMH0pKSxcbiAgICAgIHN0YXRlKFwiKlwiLCBzdHlsZSh7aGVpZ2h0OiBcIipcIiwgb3BhY2l0eTogMX0pKSxcbiAgICAgIHRyYW5zaXRpb24oXCJ2b2lkID0+ICpcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKSxcbiAgICAgIHRyYW5zaXRpb24oXCIqID0+IHZvaWRcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIpKVxuICAgIF0pXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRPdmVydmlld0RlbGl2ZXJ5RWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3Q7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdFwiKVxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gcHVibGljIGRlbGl2ZXJ5VHlwZXM6IERlbGl2ZXJ5VHlwZVtdID0gW1xuICAvLyAgIHtjb2RlOiAnMScsIGRlc2NyaXB0aW9uOiAnQmV6b3JnZW4nLCBpY29uOiB0aGlzLmljb25zLkRlbGl2ZXJ5VHJ1Y2ssIHByaWNlOiA4OX0sXG4gIC8vICAge2NvZGU6ICcyJywgZGVzY3JpcHRpb246ICdCZXpvcmdlbiAmIG1vbnRlcmVuJywgaWNvbjogdGhpcy5pY29ucy5DYWxlbmRhckRheSwgcHJpY2U6IDExOX0sXG4gIC8vICAge2NvZGU6ICczJywgZGVzY3JpcHRpb246ICdNZWVuZW1lbicsIGljb246IHRoaXMuaWNvbnMuVHJ1Y2t9LFxuICAvLyBdO1xuICBwdWJsaWMgZGVsaXZlcnlPcHRpb25MaXN0OiBEZWxpdmVyeU9wdGlvbltdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnM6IERlbGl2ZXJ5T3B0aW9uW10gPSBbXTtcbiAgcHVibGljIGRlbGl2ZXJ5T3B0aW9uRmllbGRzOiBUZXh0VmFsdWVDb250YWluZXIgPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJjb2RlXCJ9O1xuICBwdWJsaWMgZGVsaXZlcnlNZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZEZpZWxkczogVGV4dFZhbHVlQ29udGFpbmVyID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIGRlbGl2ZXJ5VHlwZUlkeDogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgY3VycmVudERlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZDtcblxuICBwdWJsaWMgY2hhbmdlTG9jYXRpb25Qb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25EZWZpbml0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG5ld0FkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlT3B0aW9uczogVGV4dFZhbHVlQ29udGFpbmVyW10gPSBbXG4gICAge3RleHQ6IFwiTk9UX0FGVEVSXCIsIHZhbHVlOiBcIj5cIn0sXG4gICAge3RleHQ6IFwiTk9UX0JFRk9SRVwiLCB2YWx1ZTogXCI8XCJ9LFxuICAgIHt0ZXh0OiBcIk9OX0RBVEVcIiwgdmFsdWU6IFwiPVwifSxcbiAgXTtcbiAgcHVibGljIGFkZHJlc3NUb0VkaXQ6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIGdlbmRlcjogR2VuZGVyVHlwZTtcbiAgcHVibGljIG1hcmtldGluZzogTWFya2V0aW5nW10gPSBbXTtcbiAgcHVibGljIG1hcmtldGluZ0ZpZWxkczogT2JqZWN0ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIG1hcmtldGluZ0NvZGU6IHN0cmluZztcbiAgcHVibGljIGFzc2VtYmx5Q29zdHM6IG51bWJlcjtcbiAgcHVibGljIGRlbGl2ZXJ5Q29zdHM6IG51bWJlcjtcblxuICAvLyBUT0RPOiBEZXplIHZlbGRlbiBub2cgb3BuZW1lbiBpbiBUcmFuc2FjdGlvbiEhXG4gIHB1YmxpYyBkZWxpdmVyeURhdGVGaW5hbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgYXNzZW1ibHlEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIHRvdGFsQXNzZW1ibHlUaW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgZHJvcHNoaXBtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBkZWxpdmVyeURhdGUoKTogRGF0ZSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uZGVsaXZlcnlEYXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkZWxpdmVyeURhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlclNlcnZpY2U6IEZvcm1NYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGVsaXZlcnlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlRGVsaXZlcnlDb3N0cygpO1xuICAgIHRoaXMuYXNzZW1ibHlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlQXNzZW1ibHlDb3N0cygpO1xuICAgIHRoaXMuc2VydmljZS5nZXREZWxpdmVyeU1ldGhvZHMoKS50aGVuKChtZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdKSA9PiB7XG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG1ldGhvZHMuZmlsdGVyKG0gPT4gbS53ZWJzaG9wKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0RGVsaXZlcnlPcHRpb25zKCkudGhlbigob3B0aW9uczogRGVsaXZlcnlPcHRpb25bXSkgPT4ge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbkxpc3QgPSBvcHRpb25zO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpLnRoZW4oKG1hcmtldGluZ0NvZGVzOiBNYXJrZXRpbmdbXSkgPT4ge1xuICAgICAgdGhpcy5tYXJrZXRpbmcgPSBtYXJrZXRpbmdDb2RlcztcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1NYXN0ZXJTZXJ2aWNlLnN1Ym1pdFNsYXZlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZURlbGl2ZXJ5TWV0aG9kQ2hhbmdlKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGRlbGl2ZXJ5TWV0aG9kLmNvZGUpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5T3B0aW9uc0J5RGVsaXZlcnlNZXRob2QoZGVsaXZlcnlNZXRob2QpO1xuICAgIH0pO1xuICAgIC8vIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5mb3JFYWNoKCh0bDogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4ge1xuICAgIC8vICAgdGwuZGVsaXZlcnlNZXRob2RDb2RlID0gZGVsaXZlcnlNZXRob2QuY29kZTtcbiAgICAvLyB9KVxuICAgIC8vIGlmIChkZWxpdmVyeU1ldGhvZCkge1xuICAgIC8vICAgdGhpcy5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5T3B0aW9uc0J5RGVsaXZlcnlNZXRob2QoZGVsaXZlcnlNZXRob2QpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleERlbGl2ZXJ5VHlwZShpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZGVsaXZlcnlUeXBlSWR4ID0gaWR4O1xuICAgIC8vIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU9wdGlvbnNCeURlbGl2ZXJ5TWV0aG9kKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IERlbGl2ZXJ5T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5T3B0aW9uTGlzdC5maWx0ZXIoZGVsaXZlcnlPcHRpb24gPT4gZGVsaXZlcnlNZXRob2QuZGVsaXZlcnlPcHRpb25zLmluZGV4T2YoZGVsaXZlcnlPcHRpb24uY29kZSkgIT09IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU1ldGhvZEJ5SWQoZGVsaXZlcnlNZXRob2RJZDogc3RyaW5nKTogRGVsaXZlcnlNZXRob2Qge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKGRlbGl2ZXJ5ID0+IGRlbGl2ZXJ5LmNvZGUgPT09IGRlbGl2ZXJ5TWV0aG9kSWQpO1xuICB9XG5cbiAgcHVibGljIGlzRGVsaXZlcnlPcHRpb25DaGVja2VkKGRlbGl2ZXJ5T3B0aW9uSXRlbTogRGVsaXZlcnlPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5T3B0aW9ucy5pbmRleE9mKGRlbGl2ZXJ5T3B0aW9uSXRlbS5jb2RlLCAwKSA9PT0gMCk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUHJlZmVycmVkRGVsaXZlcnlEYXRlMihwcmVmZXJyZWREYXRlT3B0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUyID0gcHJlZmVycmVkRGF0ZU9wdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcmtldGluZ0NvZGVDaGFuZ2UobWFya2V0aW5nQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ubWFya2V0aW5nQ29kZSA9IG1hcmtldGluZ0NvZGU7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTG9jYXRpb25Qb3B1cCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZVRyYW5zYWN0aW9uRGVmaW5pdGl2ZShkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgZGVmaW5pdGl2ZSk7XG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRGVmaW5pdGl2ZSA9ICFkZWZpbml0aXZlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRGVsaXZlcnlDb3N0cygpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBc3NlbWJseUNvc3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LWRlbGl2ZXJ5LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU0vRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQXFIckUsTUFBTSxPQUFPLHFDQUFxQztJQWdGaEQsWUFDVSxrQkFBcUMsRUFDckMsa0JBQXFDLEVBQ3JDLFVBQWlDLEVBQ2xDLE9BQTJCLEVBQzNCLFdBQTZCO1FBSjVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNsQyxZ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QVUsQ0FBQzthQUMxQztRQUNILENBQUM7S0FBQTtJQUVPLHNCQUFzQjtRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOzs7WUFwUkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUdUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxpQkFBaUI7aUJBQ2xCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixPQUFPLENBQUMsd0JBQXdCLEVBQUU7d0JBQ2hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDN0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM1QyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF6SE8saUJBQWlCO1lBUmpCLGlCQUFpQjtZQVlqQixxQkFBcUI7WUFOckIsa0JBQWtCO1lBT2xCLGdCQUFnQjs7OzBCQTJIckIsS0FBSzswQkFHTCxNQUFNOzRCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7QWRkcmVzc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvXCI7XG5pbXBvcnQge0dlbmRlclR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9nZW5kZXItdHlwZS5lbnVtXCI7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvXCI7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9wdGlvbi5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7VGV4dFZhbHVlQ29udGFpbmVyfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWwvdGV4dC12YWx1ZS1jb250YWluZXJcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIi4uLy4uLy4uL2ZhY3RvcnkvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjby1jaGVja291dC1vdmVydmlldy1kZWxpdmVyeS1lZGl0XCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWVkaXQtY29udGVudFwiPlxuICAgICAgPGNvLWZvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1mb3JtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0RFTElWRVJZX0RBVEEnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS1tZXRob2RcbiAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiXG4gICAgICAgICAgICAgICAgW2ZpbHRlck9uV2l6YXJkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChkZWxpdmVyeU1ldGhvZENoYW5nZSk9XCJjdXJyZW50RGVsaXZlcnlNZXRob2QgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItZGVsaXZlcnktbWV0aG9kPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS1kYXRlIGNsYXNzPVwiaGVhZGVyLWRlbGl2ZXJ5LWRlbGl2ZXJ5ZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiXG4gICAgICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kZWxpdmVyeS1kYXRlPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXByZWZlcnJlZC1kZWxpdmVyeS1kYXRlIGNsYXNzPVwiaGVhZGVyLWRlbGl2ZXJ5LWRlbGl2ZXJ5ZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIlxuICAgICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItcHJlZmVycmVkLWRlbGl2ZXJ5LWRhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXBhcnRpYWwtZGVsaXZlcnkgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1wYXJ0aWFsLWRlbGl2ZXJ5PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlIFtoZWFkZXJUaXRsZV09XCInQUREX0RFTElWRVJZX09QVElPTicgfCBsb2NhbGl6ZVwiIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLlRyaWFuZ2xlRG93bilcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItZGVsaXZlcnktb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiXG4gICAgICAgICAgICAgICAgICAgIFtkZWxpdmVyeU1ldGhvZF09XCJjdXJyZW50RGVsaXZlcnlNZXRob2RcIlxuICAgICAgICAgICAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRlbGl2ZXJ5LW9wdGlvbnM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvY28tY29sbGFwc2libGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgW2hlYWRlclRpdGxlXT1cIidBRERfUkVNQVJLJyB8IGxvY2FsaXplXCIgW2ljb25EYXRhXT1cImljb25TZXJ2aWNlLmdldEljb24oaWNvbnMuVHJpYW5nbGVEb3duKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1yZW1hcmtzIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItcmVtYXJrcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby1jb2xsYXBzaWJsZSBbaGVhZGVyVGl0bGVdPVwiJ0FERF9SRUZFUkVOQ0UnIHwgbG9jYWxpemVcIiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5UcmlhbmdsZURvd24pXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXJlZmVyZW5jZSBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLXJlZmVyZW5jZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItcmVsYXRpb24tcmVmZXJlbmNlIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItcmVsYXRpb24tcmVmZXJlbmNlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgW21vZGVsXT1cIidOT0dfTklFVF9HRUlNUExFTUVOVEVFUkQnXCIgW3BsYWNlaG9sZGVyXT1cIidBU1NFTUJMWV9EQVRFJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1kYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDI8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidET1dOUEFZTUVOVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWRvd25wYXltZW50LXBlcmNlbnRhZ2UgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kb3ducGF5bWVudC1wZXJjZW50YWdlPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWRvd25wYXltZW50LWFtb3VudCBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRvd25wYXltZW50LWFtb3VudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFttb2RlbF09XCInTk9HX05JRVRfR0VJTVBMRU1FTlRFRVJEJ1wiIFtwbGFjZWhvbGRlcl09XCInRE9XTlBBWU1FTlRfQllfQlInIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbbW9kZWxdPVwiJ05PR19OSUVUX0dFSU1QTEVNRU5URUVSRCdcIiBbcGxhY2Vob2xkZXJdPVwiJ0RPV05QQVlNRU5UX09OX0RFTElWRVJZJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDM8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidPUkRFUl9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItYnJhbmNoIFtzaW1wbGVdPVwidHJ1ZVwiIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItYnJhbmNoPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWFkbWluaXN0cmF0aXZlLXJlbGF0aW9uIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItYWRtaW5pc3RyYXRpdmUtcmVsYXRpb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidNQVJLRVRJTkdfQ09ERScgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItbWFya2V0aW5nIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1oZWFkZXItbWFya2V0aW5nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInT1JERVJfUEFSQU1FVEVSUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItZGVmaW5pdGl2ZSBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRlZmluaXRpdmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvLWZvcm0+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIEZvcm1NYXN0ZXJTZXJ2aWNlXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFwic2hvd0hpZGVJbnZvaWNlQWRkcmVzc1wiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe2hlaWdodDogMCwgb3BhY2l0eTogMH0pKSxcbiAgICAgIHN0YXRlKFwiKlwiLCBzdHlsZSh7aGVpZ2h0OiBcIipcIiwgb3BhY2l0eTogMX0pKSxcbiAgICAgIHRyYW5zaXRpb24oXCJ2b2lkID0+ICpcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW4tb3V0XCIpKSxcbiAgICAgIHRyYW5zaXRpb24oXCIqID0+IHZvaWRcIiwgYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIpKVxuICAgIF0pXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRPdmVydmlld0RlbGl2ZXJ5RWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3Q7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tY2hlY2tvdXQtb3ZlcnZpZXctZGVsaXZlcnktZWRpdFwiKVxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gcHVibGljIGRlbGl2ZXJ5VHlwZXM6IERlbGl2ZXJ5VHlwZVtdID0gW1xuICAvLyAgIHtjb2RlOiAnMScsIGRlc2NyaXB0aW9uOiAnQmV6b3JnZW4nLCBpY29uOiB0aGlzLmljb25zLkRlbGl2ZXJ5VHJ1Y2ssIHByaWNlOiA4OX0sXG4gIC8vICAge2NvZGU6ICcyJywgZGVzY3JpcHRpb246ICdCZXpvcmdlbiAmIG1vbnRlcmVuJywgaWNvbjogdGhpcy5pY29ucy5DYWxlbmRhckRheSwgcHJpY2U6IDExOX0sXG4gIC8vICAge2NvZGU6ICczJywgZGVzY3JpcHRpb246ICdNZWVuZW1lbicsIGljb246IHRoaXMuaWNvbnMuVHJ1Y2t9LFxuICAvLyBdO1xuICBwdWJsaWMgZGVsaXZlcnlPcHRpb25MaXN0OiBEZWxpdmVyeU9wdGlvbltdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU9wdGlvbnM6IERlbGl2ZXJ5T3B0aW9uW10gPSBbXTtcbiAgcHVibGljIGRlbGl2ZXJ5T3B0aW9uRmllbGRzOiBUZXh0VmFsdWVDb250YWluZXIgPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJjb2RlXCJ9O1xuICBwdWJsaWMgZGVsaXZlcnlNZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdID0gW107XG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZEZpZWxkczogVGV4dFZhbHVlQ29udGFpbmVyID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIGRlbGl2ZXJ5VHlwZUlkeDogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgY3VycmVudERlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZDtcblxuICBwdWJsaWMgY2hhbmdlTG9jYXRpb25Qb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25EZWZpbml0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG5ld0FkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlT3B0aW9uczogVGV4dFZhbHVlQ29udGFpbmVyW10gPSBbXG4gICAge3RleHQ6IFwiTk9UX0FGVEVSXCIsIHZhbHVlOiBcIj5cIn0sXG4gICAge3RleHQ6IFwiTk9UX0JFRk9SRVwiLCB2YWx1ZTogXCI8XCJ9LFxuICAgIHt0ZXh0OiBcIk9OX0RBVEVcIiwgdmFsdWU6IFwiPVwifSxcbiAgXTtcbiAgcHVibGljIGFkZHJlc3NUb0VkaXQ6IEFkZHJlc3M7XG4gIHB1YmxpYyBwcmVmZXJyZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIGdlbmRlcjogR2VuZGVyVHlwZTtcbiAgcHVibGljIG1hcmtldGluZzogTWFya2V0aW5nW10gPSBbXTtcbiAgcHVibGljIG1hcmtldGluZ0ZpZWxkczogT2JqZWN0ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIG1hcmtldGluZ0NvZGU6IHN0cmluZztcbiAgcHVibGljIGFzc2VtYmx5Q29zdHM6IG51bWJlcjtcbiAgcHVibGljIGRlbGl2ZXJ5Q29zdHM6IG51bWJlcjtcblxuICAvLyBUT0RPOiBEZXplIHZlbGRlbiBub2cgb3BuZW1lbiBpbiBUcmFuc2FjdGlvbiEhXG4gIHB1YmxpYyBkZWxpdmVyeURhdGVGaW5hbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgYXNzZW1ibHlEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIHRvdGFsQXNzZW1ibHlUaW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgZHJvcHNoaXBtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBkZWxpdmVyeURhdGUoKTogRGF0ZSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uZGVsaXZlcnlEYXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkZWxpdmVyeURhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5kZWxpdmVyeURhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgcHJlZmVycmVkRGVsaXZlcnlEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlID0gdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlclNlcnZpY2U6IEZvcm1NYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGVsaXZlcnlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlRGVsaXZlcnlDb3N0cygpO1xuICAgIHRoaXMuYXNzZW1ibHlDb3N0cyA9IHRoaXMuY2FsY3VsYXRlQXNzZW1ibHlDb3N0cygpO1xuICAgIHRoaXMuc2VydmljZS5nZXREZWxpdmVyeU1ldGhvZHMoKS50aGVuKChtZXRob2RzOiBEZWxpdmVyeU1ldGhvZFtdKSA9PiB7XG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG1ldGhvZHMuZmlsdGVyKG0gPT4gbS53ZWJzaG9wKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0RGVsaXZlcnlPcHRpb25zKCkudGhlbigob3B0aW9uczogRGVsaXZlcnlPcHRpb25bXSkgPT4ge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbkxpc3QgPSBvcHRpb25zO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpLnRoZW4oKG1hcmtldGluZ0NvZGVzOiBNYXJrZXRpbmdbXSkgPT4ge1xuICAgICAgdGhpcy5tYXJrZXRpbmcgPSBtYXJrZXRpbmdDb2RlcztcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1NYXN0ZXJTZXJ2aWNlLnN1Ym1pdFNsYXZlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZURlbGl2ZXJ5TWV0aG9kQ2hhbmdlKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQsIGRlbGl2ZXJ5TWV0aG9kLmNvZGUpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5T3B0aW9uc0J5RGVsaXZlcnlNZXRob2QoZGVsaXZlcnlNZXRob2QpO1xuICAgIH0pO1xuICAgIC8vIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5mb3JFYWNoKCh0bDogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4ge1xuICAgIC8vICAgdGwuZGVsaXZlcnlNZXRob2RDb2RlID0gZGVsaXZlcnlNZXRob2QuY29kZTtcbiAgICAvLyB9KVxuICAgIC8vIGlmIChkZWxpdmVyeU1ldGhvZCkge1xuICAgIC8vICAgdGhpcy5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLnNlbGVjdERlbGl2ZXJ5T3B0aW9uc0J5RGVsaXZlcnlNZXRob2QoZGVsaXZlcnlNZXRob2QpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleERlbGl2ZXJ5VHlwZShpZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZGVsaXZlcnlUeXBlSWR4ID0gaWR4O1xuICAgIC8vIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU9wdGlvbnNCeURlbGl2ZXJ5TWV0aG9kKGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZCk6IERlbGl2ZXJ5T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5T3B0aW9uTGlzdC5maWx0ZXIoZGVsaXZlcnlPcHRpb24gPT4gZGVsaXZlcnlNZXRob2QuZGVsaXZlcnlPcHRpb25zLmluZGV4T2YoZGVsaXZlcnlPcHRpb24uY29kZSkgIT09IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3REZWxpdmVyeU1ldGhvZEJ5SWQoZGVsaXZlcnlNZXRob2RJZDogc3RyaW5nKTogRGVsaXZlcnlNZXRob2Qge1xuICAgIHJldHVybiB0aGlzLmRlbGl2ZXJ5TWV0aG9kcy5maW5kKGRlbGl2ZXJ5ID0+IGRlbGl2ZXJ5LmNvZGUgPT09IGRlbGl2ZXJ5TWV0aG9kSWQpO1xuICB9XG5cbiAgcHVibGljIGlzRGVsaXZlcnlPcHRpb25DaGVja2VkKGRlbGl2ZXJ5T3B0aW9uSXRlbTogRGVsaXZlcnlPcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmRlbGl2ZXJ5T3B0aW9ucy5pbmRleE9mKGRlbGl2ZXJ5T3B0aW9uSXRlbS5jb2RlLCAwKSA9PT0gMCk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUHJlZmVycmVkRGVsaXZlcnlEYXRlMihwcmVmZXJyZWREYXRlT3B0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5wcmVmZXJyZWREZWxpdmVyeURhdGUyID0gcHJlZmVycmVkRGF0ZU9wdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcmtldGluZ0NvZGVDaGFuZ2UobWFya2V0aW5nQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ubWFya2V0aW5nQ29kZSA9IG1hcmtldGluZ0NvZGU7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VMb2NhdGlvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTG9jYXRpb25Qb3B1cCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZVRyYW5zYWN0aW9uRGVmaW5pdGl2ZShkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuc2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgZGVmaW5pdGl2ZSk7XG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRGVmaW5pdGl2ZSA9ICFkZWZpbml0aXZlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRGVsaXZlcnlDb3N0cygpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBc3NlbWJseUNvc3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbiJdfQ==
@@ -28,8 +28,8 @@ export class CheckoutOverviewRelationEditComponent {
28
28
  // public privacySettings: RelationPrivacySetting[];
29
29
  // public addresses: Address[] = [];
30
30
  this._relation = new CustomerFullObject();
31
- this.deliveryAddressIdx = 0;
32
- this.invoiceAddressIdx = 0;
31
+ // public deliveryAddressIdx: number = 0;
32
+ // public invoiceAddressIdx: number = 0;
33
33
  this.editAddressType = AddressType.DeliveryAddress;
34
34
  }
35
35
  // @ViewChild(FormComponent, {static: true})
@@ -38,21 +38,14 @@ export class CheckoutOverviewRelationEditComponent {
38
38
  this._relation = value;
39
39
  if (this._relation) {
40
40
  this.address = this._relation.getFirstAddressOrCreateNew();
41
+ const firstActiveAddress = this._relation.activeAddresses.length > 0 ? this._relation.activeAddresses[0] : undefined;
42
+ this.deliveryAddressNawNr = firstActiveAddress ? firstActiveAddress.nawNr : 0;
43
+ this.invoiceAddressNawNr = firstActiveAddress ? firstActiveAddress.nawNr : 0;
41
44
  }
42
45
  }
43
46
  get relation() {
44
47
  return this._relation;
45
48
  }
46
- set deliveryAddressNawNr(value) {
47
- if (value && this.relation && this.relation.addresses) {
48
- this.deliveryAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === value);
49
- }
50
- }
51
- set invoiceAddressNawNr(value) {
52
- if (value && this.relation && this.relation.addresses) {
53
- this.invoiceAddressIdx = this.relation.addresses.findIndex(a => a.nawNr === value);
54
- }
55
- }
56
49
  showClass() {
57
50
  return true;
58
51
  }
@@ -104,15 +97,16 @@ export class CheckoutOverviewRelationEditComponent {
104
97
  // this.editAddressType = deliveryAddress ? AddressType.DeliveryAddress : AddressType.BillingAddress;
105
98
  // this.showSelectAddressDialog = true;
106
99
  // }
107
- setIndexDeliveryAddress(idx) {
108
- this.deliveryAddressIdx = idx;
109
- this.editAddressType = AddressType.DeliveryAddress;
110
- }
111
- setIndexInvoiceAddress(idx) {
112
- this.invoiceAddressIdx = idx;
113
- this.editAddressType = AddressType.BillingAddress;
114
- // this.selectAddress(this.relation.addresses[idx]);
115
- }
100
+ // public setIndexDeliveryAddress(idx: number): void {
101
+ // this.deliveryAddressIdx = idx;
102
+ // this.editAddressType = AddressType.DeliveryAddress;
103
+ // }
104
+ //
105
+ // public setIndexInvoiceAddress(idx: number): void {
106
+ // this.invoiceAddressIdx = idx;
107
+ // this.editAddressType = AddressType.BillingAddress;
108
+ // // this.selectAddress(this.relation.addresses[idx]);
109
+ // }
116
110
  // public editAddress(addr: Address): void {
117
111
  // this.addressToEdit = <Address><unknown>this._boFactory.makeWithRawBackendData(Address, addr);
118
112
  // this.showEditAddressDialog()
@@ -209,23 +203,31 @@ CheckoutOverviewRelationEditComponent.decorators = [
209
203
  <span class="label" [textContent]="'PERSONAL_DATA' | localize"></span>
210
204
  </div>
211
205
  <div class="checkout-data-column">
212
- <co-relation-type
213
- [relation]="relation"
214
- ></co-relation-type>
215
- <div class="default-data-row">
206
+ <div class="checkout-data-row">
207
+ <co-relation-type
208
+ [relation]="relation"
209
+ ></co-relation-type>
210
+ </div>
211
+ <div class="checkout-data-row">
216
212
  <relation-customer-groups [(model)]="relation.customerGroup" required></relation-customer-groups>
217
213
  </div>
218
- <co-relation-general [relation]="relation" (relationChange)="updateRelation($event)"></co-relation-general>
219
- <co-relation-address [address]="address"></co-relation-address>
214
+ <div class="checkout-data-row">
215
+ <co-relation-general [relation]="relation" (relationChange)="updateRelation($event)"></co-relation-general>
216
+ </div>
217
+ <div class="checkout-data-row">
218
+ <co-relation-address [address]="address"></co-relation-address>
219
+ </div>
220
220
  </div>
221
221
  <div class="checkout-data-column">
222
- <co-relation-addresses
223
- [addresses]="relation.activeAddresses"
224
- [type]="addressType.DeliveryAddress"
225
- [selectedAddressIdx]="deliveryAddressIdx"
226
- (selectedAddressChange)="setIndexDeliveryAddress($event)"
227
- (selectedAddressNawNrChange)="deliveryAddressChange.emit($event)"
228
- ></co-relation-addresses>
222
+ <div class="checkout-data-row">
223
+ <co-relation-addresses
224
+ [relation]="relation"
225
+ [addresses]="relation.addresses"
226
+ [type]="addressType.DeliveryAddress"
227
+ [selectedNawNr]="deliveryAddressNawNr"
228
+ (selectedNawNrChange)="deliveryAddressChange.emit($event)"
229
+ ></co-relation-addresses>
230
+ </div>
229
231
  </div>
230
232
  <div class="checkout-label-column">
231
233
  <span>02</span>
@@ -236,13 +238,14 @@ CheckoutOverviewRelationEditComponent.decorators = [
236
238
  <co-input-checkbox [(model)]="service.invoiceAddressSameAsDelivery" (modelChange)="checkSameAddress($event)" [label]="'SAME_AS_DELIVERY' | localize"></co-input-checkbox>
237
239
  </div>
238
240
  <div class="overview-delivery-invoice-address" *ngIf="!service.invoiceAddressSameAsDelivery" @showHideInvoiceAddress>
239
- <co-relation-addresses
240
- [addresses]="relation.activeAddresses"
241
- [type]="addressType.BillingAddress"
242
- [selectedAddressIdx]="invoiceAddressIdx"
243
- (selectedAddressChange)="setIndexInvoiceAddress($event)"
244
- (selectedAddressNawNrChange)="invoiceAddressChange.emit($event)"
245
- ></co-relation-addresses>
241
+ <div class="checkout-data-row">
242
+ <co-relation-addresses
243
+ [addresses]="relation.activeAddresses"
244
+ [type]="addressType.BillingAddress"
245
+ [selectedNawNr]="invoiceAddressNawNr"
246
+ (selectedNawNrChange)="invoiceAddressChange.emit($event)"
247
+ ></co-relation-addresses>
248
+ </div>
246
249
  </div>
247
250
  </div>
248
251
  <div class="checkout-label-column">
@@ -250,14 +253,18 @@ CheckoutOverviewRelationEditComponent.decorators = [
250
253
  <span class="label" [textContent]="'CONTACT_DETAILS' | localize"></span>
251
254
  </div>
252
255
  <div class="checkout-data-column">
253
- <co-relation-contact-details [relation]="relation"></co-relation-contact-details>
256
+ <div class="checkout-data-row">
257
+ <co-relation-contact-details [relation]="relation"></co-relation-contact-details>
258
+ </div>
254
259
  </div>
255
260
  <div class="checkout-label-column">
256
261
  <span>04</span>
257
262
  <span class="label" [textContent]="'PRIVACY_PREFERENCES' | localize"></span>
258
263
  </div>
259
264
  <div class="checkout-data-column">
260
- <co-relation-preferences [relation]="relation"></co-relation-preferences>
265
+ <div class="checkout-data-row">
266
+ <co-relation-preferences [relation]="relation"></co-relation-preferences>
267
+ </div>
261
268
  </div>
262
269
  </div>
263
270
  </co-form>
@@ -301,8 +308,6 @@ CheckoutOverviewRelationEditComponent.ctorParameters = () => [
301
308
  ];
302
309
  CheckoutOverviewRelationEditComponent.propDecorators = {
303
310
  relation: [{ type: Input }],
304
- deliveryAddressNawNr: [{ type: Input }],
305
- invoiceAddressNawNr: [{ type: Input }],
306
311
  validSubmit: [{ type: Output }],
307
312
  invalidSubmit: [{ type: Output }],
308
313
  deliveryAddressChange: [{ type: Output }],
@@ -310,4 +315,4 @@ CheckoutOverviewRelationEditComponent.propDecorators = {
310
315
  relationChange: [{ type: Output }],
311
316
  showClass: [{ type: HostBinding, args: ["class.co-checkout-overview-relation-edit",] }]
312
317
  };
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFL0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUUvRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBaUdoRyxNQUFNLE9BQU8scUNBQXFDO0lBZ0doRCxZQUNVLFdBQThCLEVBQzlCLFVBQWlDLEVBQ2xDLE9BQTJCO1FBRjFCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtR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d0JBQXdCLEVBQUU7d0JBQ2hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDN0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM1QyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF2R08saUJBQWlCO1lBR2pCLHFCQUFxQjtZQUpyQixrQkFBa0I7Ozt1QkFpSHZCLEtBQUs7bUNBWUwsS0FBSztrQ0FPTCxLQUFLOzBCQU9MLE1BQU07NEJBR04sTUFBTTtvQ0FHTixNQUFNO21DQUdOLE1BQU07NkJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZVwiO1xuaW1wb3J0IHtBZGRyZXNzVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7QWRkcmVzc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvXCI7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7QnVzaW5lc3NPYmplY3RGYWN0b3J5fSBmcm9tIFwiLi4vLi4vLi4vZmFjdG9yeS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeVwiO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm9cIjtcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLWtpbmQuZW51bVwiO1xuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZnVsbC1vYmplY3QuYm9cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvLWNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXRcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tZWRpdC1jb250ZW50XCI+XG4gICAgICA8Y28tZm9ybT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWZvcm0td3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxzcGFuPjAxPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIFt0ZXh0Q29udGVudF09XCInUEVSU09OQUxfREFUQScgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxjby1yZWxhdGlvbi10eXBlXG4gICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXG4gICAgICAgICAgICA+PC9jby1yZWxhdGlvbi10eXBlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPHJlbGF0aW9uLWN1c3RvbWVyLWdyb3VwcyBbKG1vZGVsKV09XCJyZWxhdGlvbi5jdXN0b21lckdyb3VwXCIgcmVxdWlyZWQ+PC9yZWxhdGlvbi1jdXN0b21lci1ncm91cHM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjby1yZWxhdGlvbi1nZW5lcmFsIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiIChyZWxhdGlvbkNoYW5nZSk9XCJ1cGRhdGVSZWxhdGlvbigkZXZlbnQpXCI+PC9jby1yZWxhdGlvbi1nZW5lcmFsPlxuICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3MgW2FkZHJlc3NdPVwiYWRkcmVzc1wiPjwvY28tcmVsYXRpb24tYWRkcmVzcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzZXNcbiAgICAgICAgICAgICAgW2FkZHJlc3Nlc109XCJyZWxhdGlvbi5hY3RpdmVBZGRyZXNzZXNcIlxuICAgICAgICAgICAgICBbdHlwZV09XCJhZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3NcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRBZGRyZXNzSWR4XT1cImRlbGl2ZXJ5QWRkcmVzc0lkeFwiXG4gICAgICAgICAgICAgIChzZWxlY3RlZEFkZHJlc3NDaGFuZ2UpPVwic2V0SW5kZXhEZWxpdmVyeUFkZHJlc3MoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChzZWxlY3RlZEFkZHJlc3NOYXdOckNoYW5nZSk9XCJkZWxpdmVyeUFkZHJlc3NDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3Nlcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0VfQUREUkVTUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggWyhtb2RlbCldPVwic2VydmljZS5pbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5XCIgKG1vZGVsQ2hhbmdlKT1cImNoZWNrU2FtZUFkZHJlc3MoJGV2ZW50KVwiIFtsYWJlbF09XCInU0FNRV9BU19ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVydmlldy1kZWxpdmVyeS1pbnZvaWNlLWFkZHJlc3NcIiAqbmdJZj1cIiFzZXJ2aWNlLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlcIiBAc2hvd0hpZGVJbnZvaWNlQWRkcmVzcz5cbiAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3Nlc1xuICAgICAgICAgICAgICAgIFthZGRyZXNzZXNdPVwicmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJhZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkQWRkcmVzc0lkeF09XCJpbnZvaWNlQWRkcmVzc0lkeFwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkQWRkcmVzc0NoYW5nZSk9XCJzZXRJbmRleEludm9pY2VBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZEFkZHJlc3NOYXdOckNoYW5nZSk9XCJpbnZvaWNlQWRkcmVzc0NoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzZXM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0NPTlRBQ1RfREVUQUlMUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxjby1yZWxhdGlvbi1jb250YWN0LWRldGFpbHMgW3JlbGF0aW9uXT1cInJlbGF0aW9uXCI+PC9jby1yZWxhdGlvbi1jb250YWN0LWRldGFpbHM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQUklWQUNZX1BSRUZFUkVOQ0VTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGNvLXJlbGF0aW9uLXByZWZlcmVuY2VzIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiPjwvY28tcmVsYXRpb24tcHJlZmVyZW5jZXM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jby1mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlUHJpdmF0ZVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlU2lkZWJhclwiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCJ9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA8PT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlSW52b2ljZUFkZHJlc3NcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe2hlaWdodDogXCIqXCIsIG9wYWNpdHk6IDF9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA9PiAqXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiKiA9PiB2b2lkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdSZWxhdGlvbkVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgcmVsYXRpb25LaW5kOiB0eXBlb2YgUmVsYXRpb25LaW5kID0gUmVsYXRpb25LaW5kO1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcbiAgcHVibGljIHJlYWRvbmx5IGFkZHJlc3NUeXBlOiB0eXBlb2YgQWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZTtcblxuICAvLyBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQsIHtzdGF0aWM6IHRydWV9KVxuICAvLyBwdWJsaWMgcmVsYXRpb25Gb3JtOiBGb3JtQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IEN1c3RvbWVyRnVsbE9iamVjdCkge1xuICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLl9yZWxhdGlvbi5nZXRGaXJzdEFkZHJlc3NPckNyZWF0ZU5ldygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVsYXRpb24oKTogQ3VzdG9tZXJGdWxsT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb247XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlbGl2ZXJ5QWRkcmVzc05hd05yKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5yZWxhdGlvbiAmJiB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcykge1xuICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbnZvaWNlQWRkcmVzc05hd05yKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5yZWxhdGlvbiAmJiB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcykge1xuICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzc0lkeCA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBkZWxpdmVyeUFkZHJlc3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlbGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVsYXRpb25BbnlUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25BbnlUeXBlPigpO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXRcIilcbiAgcHVibGljIHNob3dDbGFzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBmb3JtUmVsYXRpb246IEZvcm1Hcm91cDtcblxuICAvLyBwdWJsaWMgYWNjb3VudFBhc3N3b3JkOiBzdHJpbmcgPSBcIlwiO1xuICAvLyBwdWJsaWMgaGlkZTogYm9vbGVhbiA9IHRydWU7XG4gIC8vIHB1YmxpYyBnZW5kZXI6IEdlbmRlclR5cGUgPSBHZW5kZXJUeXBlLlVuc3BlY2lmaWVkO1xuICAvLyBwdWJsaWMgcHJpdmFjeVNldHRpbmdzOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nW107XG5cbiAgLy8gcHVibGljIGFkZHJlc3NlczogQWRkcmVzc1tdID0gW107XG4gIHByaXZhdGUgX3JlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QgPSBuZXcgQ3VzdG9tZXJGdWxsT2JqZWN0KCk7XG5cbiAgcHVibGljIGFkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBzZWxlY3RlZEFkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBkZWxpdmVyeUFkZHJlc3M6IEFkZHJlc3M7XG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzc0lkeDogbnVtYmVyID0gMDtcbiAgcHVibGljIGludm9pY2VBZGRyZXNzSWR4OiBudW1iZXIgPSAwO1xuICBwdWJsaWMgZWRpdEFkZHJlc3NUeXBlOiBBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgLy8gcHVibGljIGFkZHJlc3NUb0VkaXQ6IEFkZHJlc3M7XG4gIC8vIHB1YmxpYyBzaG93U2VsZWN0QWRkcmVzc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBwdWJsaWMgc2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBwdWJsaWMgcmVhZG9ubHkgcmVsVHlwZTogdHlwZW9mIFJlbGF0aW9uTmFtZUtpbmQgPSBSZWxhdGlvbk5hbWVLaW5kO1xuICAvLyBwdWJsaWMgcmVhZG9ubHkgZ2VuZGVyVHlwZTogdHlwZW9mIEdlbmRlclR5cGUgPSBHZW5kZXJUeXBlO1xuXG4gIC8vIHB1YmxpYyBnZXQgZWRpdEZpcnN0QWRkcmVzcygpOiBBZGRyZXNzIHtcbiAgLy8gICBjb25zdCBmaXJzdEFkZHJlc3M6IEFkZHJlc3MgPSB0aGlzLnNlcnZpY2UuZ2V0Rmlyc3RBZGRyZXNzKHRoaXMucmVsYXRpb24pO1xuICAvLyAgIGlmIChmaXJzdEFkZHJlc3MpIHtcbiAgLy8gICAgIHJldHVybiBmaXJzdEFkZHJlc3M7XG4gIC8vICAgfSBlbHNlIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAvLyAgICAgY29uc3QgYWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKCk7XG4gIC8vICAgICBhZGRyZXNzLmFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICAvLyAgICAgYWRkcmVzcy5zdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAvLyAgICAgYWRkcmVzcy5zZXF1ZW5jZSA9IHRoaXMuX3JlbGF0aW9uLmdldE5leHRBZGRyZXNzU2VxdWVuY2UoKTtcbiAgLy8gICAgIHRoaXMuX3JlbGF0aW9uLmFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICAvLyAgICAgcmV0dXJuIGFkZHJlc3M7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHVibGljIGdldCBhcHBsaWNhdGlvblVzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcHBsaWNhdGlvblVzZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSxcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLl9yZWxhdGlvbi5nZXRGaXJzdEFkZHJlc3NPckNyZWF0ZU5ldygpO1xuICAgIH1cbiAgICAvLyB0aGlzLl9pbml0Rm9ybSgpO1xuICAgIC8vIHRoaXMuX3JlbGF0aW9uLnR5cGUgPSB0aGlzLnJlbFR5cGUuUHJpdmF0ZTtcbiAgICAvLyB0aGlzLl9yZWxhdGlvbi5nZW5kZXIgPSB0aGlzLmdlbmRlcjtcbiAgICAvLyBhd2FpdCB0aGlzLmxvYWRQcml2YWN5U2V0dGluZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSZWxhdGlvbihyZWw6IEN1c3RvbWVyRnVsbE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbGF0aW9uID0gcmVsO1xuICAgIHRoaXMucmVsYXRpb25DaGFuZ2UuZW1pdCh0aGlzLl9yZWxhdGlvbik7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIC8vIHJldHVybiB0aGlzLnJlbGF0aW9uRm9ybS5zdWJtaXQoKTtcbiAgICByZXR1cm4gdGhpcy5fZm9ybU1hc3Rlci5zdWJtaXRTbGF2ZXMoKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBzaG93TmV3QWRkcmVzc0RpYWxvZyhkZWxpdmVyeUFkZHJlc3M6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gIC8vICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBkZWxpdmVyeUFkZHJlc3MgPyBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MgOiBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcztcbiAgLy8gICB0aGlzLnNob3dDcmVhdGVBZGRyZXNzRGlhbG9nID0gdHJ1ZTtcbiAgLy8gfVxuXG4gIC8vIHB1YmxpYyBzaG93RWRpdEFkZHJlc3NEaWFsb2coZGVsaXZlcnlBZGRyZXNzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAvLyAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gZGVsaXZlcnlBZGRyZXNzID8gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzIDogQWRkcmVzc1R5cGUuQmlsbGluZ0FkZHJlc3M7XG4gIC8vICAgdGhpcy5zaG93U2VsZWN0QWRkcmVzc0RpYWxvZyA9IHRydWU7XG4gIC8vIH1cblxuICBwdWJsaWMgc2V0SW5kZXhEZWxpdmVyeUFkZHJlc3MoaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0lkeCA9IGlkeDtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmRleEludm9pY2VBZGRyZXNzKGlkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pbnZvaWNlQWRkcmVzc0lkeCA9IGlkeDtcbiAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkJpbGxpbmdBZGRyZXNzO1xuICAgIC8vIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1tpZHhdKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBlZGl0QWRkcmVzcyhhZGRyOiBBZGRyZXNzKTogdm9pZCB7XG4gIC8vICAgdGhpcy5hZGRyZXNzVG9FZGl0ID0gPEFkZHJlc3M+PHVua25vd24+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQWRkcmVzcywgYWRkcik7XG4gIC8vICAgdGhpcy5zaG93RWRpdEFkZHJlc3NEaWFsb2coKVxuICAvLyB9XG5cbiAgcHVibGljIGNoZWNrU2FtZUFkZHJlc3MoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgICAgIC8vIHRoaXMuc2VsZWN0QWRkcmVzcyh0aGlzLmRlbGl2ZXJ5QWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHVibGljIHNhdmVOZXdBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgLy8gICBhZGRyZXNzLmFkZHJlc3NUeXBlID0gdGhpcy5lZGl0QWRkcmVzc1R5cGU7XG4gIC8vICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgLy8gICB0aGlzLnNlbGVjdEFkZHJlc3MoYWRkcmVzcyk7XG4gIC8vICAgdGhpcy5zaG93Q3JlYXRlQWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIHNhdmVBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgLy8gICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IGFkZHJlc3MubmF3TnIpO1xuICAvLyAgIGlmIChpZHggPiAtMSkge1xuICAvLyAgICAgdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXNbaWR4XSA9IDxBZGRyZXNzPjx1bmtub3duPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFkZHJlc3MsIGFkZHJlc3MpO1xuICAvLyAgIH1cbiAgLy8gICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gZmFsc2U7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgc2VsZWN0QWRkcmVzcyhhZGRyZXNzPzogQWRkcmVzcyk6IHZvaWQge1xuICAvLyAgIC8vIGlmICghdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0KSB7XG4gIC8vICAgLy8gICByZXR1cm47XG4gIC8vICAgLy8gfVxuICAvLyAgIC8vIGlmICghYWRkcmVzcykge1xuICAvLyAgIC8vICAgYWRkcmVzcyA9IHRoaXMuc2VydmljZS5nZXRGaXJzdEFkZHJlc3ModGhpcy5yZWxhdGlvbik7XG4gIC8vICAgLy8gfVxuICAvLyAgIC8vIGlmICghYWRkcmVzcykge1xuICAvLyAgIC8vICAgcmV0dXJuO1xuICAvLyAgIC8vIH1cbiAgLy8gICAvLyB0aGlzLl9zZXRDb3VudHJ5TmFtZVRvQWRkcmVzcyhhZGRyZXNzKTtcbiAgLy8gICAvLyBpZiAodGhpcy5lZGl0QWRkcmVzc1R5cGUgPT09IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcykge1xuICAvLyAgIC8vICAgdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LnRyYW5zYWN0aW9uQWRkcmVzcyA9IGFkZHJlc3MubmF3TnI7XG4gIC8vICAgLy8gICB0aGlzLmRlbGl2ZXJ5QWRkcmVzcyA9IGFkZHJlc3M7XG4gIC8vICAgLy8gICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0lkeCA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IHRoaXMuZGVsaXZlcnlBZGRyZXNzLm5hd05yKTtcbiAgLy8gICAvLyB9XG4gIC8vICAgLy8gaWYgKHRoaXMuaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeUFkZHJlc3MgfHwgdGhpcy5lZGl0QWRkcmVzc1R5cGUgIT09IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcykge1xuICAvLyAgIC8vICAgdGhpcy5kZWxpdmVyeU9wdGlvbnNSZXF1ZXN0Lmludm9pY2VBZGRyZXNzID0gYWRkcmVzcy5uYXdOcjtcbiAgLy8gICAvLyAgIHRoaXMuaW52b2ljZUFkZHJlc3MgPSBhZGRyZXNzO1xuICAvLyAgIC8vICAgdGhpcy5pbnZvaWNlQWRkcmVzc0lkeCA9IHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLmZpbmRJbmRleChhID0+IGEubmF3TnIgPT09IHRoaXMuaW52b2ljZUFkZHJlc3MubmF3TnIpO1xuICAvLyAgIC8vIH1cbiAgLy8gICB0aGlzLnNob3dTZWxlY3RBZGRyZXNzRGlhbG9nID0gZmFsc2U7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgYXN5bmMgbG9hZFByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gICB0aGlzLnByaXZhY3lTZXR0aW5ncyA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIGFzeW5jIGxvYWRNYXJrZXRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmdldE1hcmtldGluZ0NvZGVzKCk7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgaXNTaGFyZWQocmVsYXRpb25Qcml2YWN5U2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZyk6IGJvb2xlYW4ge1xuICAvLyAgIGNvbnN0IG93blNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcgPSBCdXNpbmVzc09iamVjdFV0aWxzLkZpbmRJdGVtQnlJZCh0aGlzLnJlbGF0aW9uQXNDdXN0b21lci5yZWxhdGlvblByaXZhY3lTZXR0aW5ncywgcmVsYXRpb25Qcml2YWN5U2V0dGluZy5nZXRJZCgpKTtcbiAgLy8gICBpZiAob3duU2V0dGluZykge1xuICAvLyAgICAgcmV0dXJuIG93blNldHRpbmcuYWxsb3dUb1NoYXJlO1xuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gZmFsc2U7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgY2hhbmdlUmVsYXRpb25UeXBlKHZhbHVlOiBSZWxhdGlvbk5hbWVLaW5kKTogdm9pZCB7XG4gIC8vICAgdGhpcy5yZWxhdGlvbi50eXBlID0gdmFsdWU7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgY2hhbmdlUHJpdmFjeVNldHRpbmcocmVsYXRpb25Qcml2YWN5U2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgLy8gICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gIC8vICAgaWYgKG93blNldHRpbmcpIHtcbiAgLy8gICAgIG93blNldHRpbmcuYWxsb3dUb1NoYXJlID0gdmFsdWU7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMucmVsYXRpb25Bc0N1c3RvbWVyLnJlbGF0aW9uUHJpdmFjeVNldHRpbmdzLnB1c2gocmVsYXRpb25Qcml2YWN5U2V0dGluZyk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gcHJpdmF0ZSBfaW5pdEZvcm0oKTogdm9pZCB7XG4gIC8vICAgaWYgKHRoaXMucmVsYXRpb25Gb3JtKSB7XG4gIC8vICAgICB0aGlzLmZvcm1SZWxhdGlvbiA9IHRoaXMucmVsYXRpb25Gb3JtLmZvcm1Hcm91cDtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBwcml2YXRlIGFzeW5jIF9zZXRDb3VudHJ5TmFtZVRvQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGFkZHJlc3MuY291bnRyeUlkICYmICFhZGRyZXNzLmNvdW50cnlOYW1lKSB7XG4gICAgICBjb25zdCBjb3VudHJ5OiBDb3VudHJ5ID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldENvdW50cnkoYWRkcmVzcy5jb3VudHJ5SWQpO1xuICAgICAgYWRkcmVzcy5jb3VudHJ5TmFtZSA9IGNvdW50cnkuZGVzY3JpcHRpb247XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFL0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUUvRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBOEdoRyxNQUFNLE9BQU8scUNBQXFDO0lBdUZoRCxZQUNVLFdBQThCLEVBQzlCLFVBQWlDLEVBQ2xDLE9BQTJCO1FBRjFCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQXpGcEIsaUJBQVksR0FBd0IsWUFBWSxDQUFDO1FBQ2pELFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXVCLFdBQVcsQ0FBQztRQXFCdkQsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUczRCxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdELDBCQUFxQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3pFLHlCQUFvQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3hFLG1CQUFjLEdBQWtDLElBQUksWUFBWSxFQUFtQixDQUFDO1FBTzNGLGtDQUFrQztRQUVsQyx1Q0FBdUM7UUFDdkMsK0JBQStCO1FBQy9CLHNEQUFzRDtRQUN0RCxvREFBb0Q7UUFFcEQsb0NBQW9DO1FBQzVCLGNBQVMsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBUWpFLHlDQUF5QztRQUN6Qyx3Q0FBd0M7UUFDakMsb0JBQWUsR0FBZ0IsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQStCbEUsQ0FBQztJQXZGRCw0Q0FBNEM7SUFDNUMsc0NBQXNDO0lBRXRDLElBQ1csUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUMzRCxNQUFNLGtCQUFrQixHQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUgsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQWtCTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBcUJELGlDQUFpQztJQUNqQyxtREFBbUQ7SUFDbkQsbURBQW1EO0lBRW5ELHVFQUF1RTtJQUN2RSw4REFBOEQ7SUFFOUQsMkNBQTJDO0lBQzNDLCtFQUErRTtJQUMvRSx3QkFBd0I7SUFDeEIsMkJBQTJCO0lBQzNCLGlDQUFpQztJQUNqQyw4Q0FBOEM7SUFDOUMseURBQXlEO0lBQ3pELHNDQUFzQztJQUN0QyxrRUFBa0U7SUFDbEUsOENBQThDO0lBQzlDLHNCQUFzQjtJQUN0QixNQUFNO0lBQ04sSUFBSTtJQUVKLElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ3RDLENBQUM7SUFTSyxRQUFROztZQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDBCQUEwQixFQUFFLENBQUM7YUFDNUQ7WUFDRCxvQkFBb0I7WUFDcEIsOENBQThDO1lBQzlDLHVDQUF1QztZQUN2QyxvQ0FBb0M7UUFDdEMsQ0FBQztLQUFBO0lBRU0sY0FBYyxDQUFDLEdBQXVCO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTTtRQUNYLHFDQUFxQztRQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELHVFQUF1RTtJQUN2RSx1R0FBdUc7SUFDdkcseUNBQXlDO0lBQ3pDLElBQUk7SUFFSix3RUFBd0U7SUFDeEUsdUdBQXVHO0lBQ3ZHLHlDQUF5QztJQUN6QyxJQUFJO0lBRUosc0RBQXNEO0lBQ3RELG1DQUFtQztJQUNuQyx3REFBd0Q7SUFDeEQsSUFBSTtJQUNKLEVBQUU7SUFDRixxREFBcUQ7SUFDckQsa0NBQWtDO0lBQ2xDLHVEQUF1RDtJQUN2RCx5REFBeUQ7SUFDekQsSUFBSTtJQUVKLDRDQUE0QztJQUM1QyxrR0FBa0c7SUFDbEcsaUNBQWlDO0lBQ2pDLElBQUk7SUFFRyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUNuRCw0Q0FBNEM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELGdEQUFnRDtJQUNoRCwyQ0FBMkM7SUFDM0MsaUNBQWlDO0lBQ2pDLDBDQUEwQztJQUMxQyxJQUFJO0lBRUosK0NBQStDO0lBQy9DLDJGQUEyRjtJQUMzRixvQkFBb0I7SUFDcEIsaUhBQWlIO0lBQ2pILE1BQU07SUFDTiwwQ0FBMEM7SUFDMUMsSUFBSTtJQUVKLGtEQUFrRDtJQUNsRCwyQ0FBMkM7SUFDM0MsaUJBQWlCO0lBQ2pCLFNBQVM7SUFDVCx1QkFBdUI7SUFDdkIsZ0VBQWdFO0lBQ2hFLFNBQVM7SUFDVCx1QkFBdUI7SUFDdkIsaUJBQWlCO0lBQ2pCLFNBQVM7SUFDVCwrQ0FBK0M7SUFDL0MsbUVBQW1FO0lBQ25FLHlFQUF5RTtJQUN6RSx5Q0FBeUM7SUFDekMsbUhBQW1IO0lBQ25ILFNBQVM7SUFDVCwrR0FBK0c7SUFDL0cscUVBQXFFO0lBQ3JFLHdDQUF3QztJQUN4QyxpSEFBaUg7SUFDakgsU0FBUztJQUNULDBDQUEwQztJQUMxQyxJQUFJO0lBRUosc0RBQXNEO0lBQ3RELDRFQUE0RTtJQUM1RSxJQUFJO0lBRUosZ0RBQWdEO0lBQ2hELDRDQUE0QztJQUM1QyxJQUFJO0lBRUosNkVBQTZFO0lBQzdFLGtLQUFrSztJQUNsSyxzQkFBc0I7SUFDdEIsc0NBQXNDO0lBQ3RDLE1BQU07SUFDTixrQkFBa0I7SUFDbEIsSUFBSTtJQUVKLDZEQUE2RDtJQUM3RCxnQ0FBZ0M7SUFDaEMsSUFBSTtJQUVKLHNHQUFzRztJQUN0RyxrS0FBa0s7SUFDbEssc0JBQXNCO0lBQ3RCLHVDQUF1QztJQUN2QyxhQUFhO0lBQ2Isb0ZBQW9GO0lBQ3BGLE1BQU07SUFDTixJQUFJO0lBRUosOEJBQThCO0lBQzlCLDZCQUE2QjtJQUM3Qix1REFBdUQ7SUFDdkQsTUFBTTtJQUNOLElBQUk7SUFFVSx3QkFBd0IsQ0FBQyxPQUFnQjs7WUFDckQsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDN0MsTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUMzQztRQUNILENBQUM7S0FBQTs7O1lBOVVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0NBQW9DO2dCQUM5QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJFVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO2lCQUNsQjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLCtCQUErQixFQUFFO3dCQUN2QyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUNqQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3dCQUNoQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO29CQUNGLE9BQU8sQ0FBQywrQkFBK0IsRUFBRTt3QkFDdkMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDakMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzt3QkFDaEMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt3QkFDckQsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztxQkFDbkQsQ0FBQztvQkFDRixPQUFPLENBQUMsaUJBQWlCLEVBQUU7d0JBQ3pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQzt3QkFDckQsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQzt3QkFDL0MsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDdkQsQ0FBQztvQkFDRixPQUFPLENBQUMsd0JBQXdCLEVBQUU7d0JBQ2hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDN0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO3dCQUM1QyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO2lCQUNIO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFwSE8saUJBQWlCO1lBR2pCLHFCQUFxQjtZQUpyQixrQkFBa0I7Ozt1QkE4SHZCLEtBQUs7MEJBZUwsTUFBTTs0QkFHTixNQUFNO29DQUdOLE1BQU07bUNBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWFueS10eXBlXCI7XG5pbXBvcnQge0FkZHJlc3NUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vYWRkcmVzcy10eXBlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge0Zvcm1NYXN0ZXJTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtBZGRyZXNzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FkZHJlc3MuYm9cIjtcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gXCIuLi8uLi8uLi9mYWN0b3J5L2J1c2luZXNzLW9iamVjdC1mYWN0b3J5XCI7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY291bnRyeS5ib1wiO1xuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcbmltcG9ydCB7UmVsYXRpb25LaW5kfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtXCI7XG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ib1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdFwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1lZGl0LWNvbnRlbnRcIj5cbiAgICAgIDxjby1mb3JtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZm9ybS13cmFwcGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDE8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQRVJTT05BTF9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby1yZWxhdGlvbi10eXBlXG4gICAgICAgICAgICAgICAgW3JlbGF0aW9uXT1cInJlbGF0aW9uXCJcbiAgICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tdHlwZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxyZWxhdGlvbi1jdXN0b21lci1ncm91cHMgWyhtb2RlbCldPVwicmVsYXRpb24uY3VzdG9tZXJHcm91cFwiIHJlcXVpcmVkPjwvcmVsYXRpb24tY3VzdG9tZXItZ3JvdXBzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWdlbmVyYWwgW3JlbGF0aW9uXT1cInJlbGF0aW9uXCIgKHJlbGF0aW9uQ2hhbmdlKT1cInVwZGF0ZVJlbGF0aW9uKCRldmVudClcIj48L2NvLXJlbGF0aW9uLWdlbmVyYWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tYWRkcmVzcyBbYWRkcmVzc109XCJhZGRyZXNzXCI+PC9jby1yZWxhdGlvbi1hZGRyZXNzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3Nlc1xuICAgICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXG4gICAgICAgICAgICAgICAgW2FkZHJlc3Nlc109XCJyZWxhdGlvbi5hZGRyZXNzZXNcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkTmF3TnJdPVwiZGVsaXZlcnlBZGRyZXNzTmF3TnJcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZE5hd05yQ2hhbmdlKT1cImRlbGl2ZXJ5QWRkcmVzc0NoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzZXM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0VfQUREUkVTUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggWyhtb2RlbCldPVwic2VydmljZS5pbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5XCIgKG1vZGVsQ2hhbmdlKT1cImNoZWNrU2FtZUFkZHJlc3MoJGV2ZW50KVwiIFtsYWJlbF09XCInU0FNRV9BU19ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVydmlldy1kZWxpdmVyeS1pbnZvaWNlLWFkZHJlc3NcIiAqbmdJZj1cIiFzZXJ2aWNlLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlcIiBAc2hvd0hpZGVJbnZvaWNlQWRkcmVzcz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWFkZHJlc3Nlc1xuICAgICAgICAgICAgICAgICAgW2FkZHJlc3Nlc109XCJyZWxhdGlvbi5hY3RpdmVBZGRyZXNzZXNcIlxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiYWRkcmVzc1R5cGUuQmlsbGluZ0FkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkTmF3TnJdPVwiaW52b2ljZUFkZHJlc3NOYXdOclwiXG4gICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYXdOckNoYW5nZSk9XCJpbnZvaWNlQWRkcmVzc0NoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3Nlcz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICA8c3Bhbj4wMzwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0NPTlRBQ1RfREVUQUlMUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tY29udGFjdC1kZXRhaWxzIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiPjwvY28tcmVsYXRpb24tY29udGFjdC1kZXRhaWxzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgPHNwYW4+MDQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW3RleHRDb250ZW50XT1cIidQUklWQUNZX1BSRUZFUkVOQ0VTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1wcmVmZXJlbmNlcyBbcmVsYXRpb25dPVwicmVsYXRpb25cIj48L2NvLXJlbGF0aW9uLXByZWZlcmVuY2VzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jby1mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb3JtTWFzdGVyU2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNob3dIaWRlUHJpdmF0ZVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlQ29tcGFueVJlbGF0aW9uRmllbGRzXCIsIFtcbiAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7aGVpZ2h0OiAwfSkpLFxuICAgICAgc3RhdGUoXCIqXCIsIHN0eWxlKHtoZWlnaHQ6IFwiKlwifSkpLFxuICAgICAgdHJhbnNpdGlvbihcInZvaWQgPT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcIiogPT4gdm9pZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlU2lkZWJhclwiLCBbXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCJ9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA8PT4gKlwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pbi1vdXRcIikpXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInNob3dIaWRlSW52b2ljZUFkZHJlc3NcIiwgW1xuICAgICAgc3RhdGUoXCJ2b2lkXCIsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe2hlaWdodDogXCIqXCIsIG9wYWNpdHk6IDF9KSksXG4gICAgICB0cmFuc2l0aW9uKFwidm9pZCA9PiAqXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiKiA9PiB2b2lkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiKSlcbiAgICBdKVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0T3ZlcnZpZXdSZWxhdGlvbkVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgcmVsYXRpb25LaW5kOiB0eXBlb2YgUmVsYXRpb25LaW5kID0gUmVsYXRpb25LaW5kO1xuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcbiAgcHVibGljIHJlYWRvbmx5IGFkZHJlc3NUeXBlOiB0eXBlb2YgQWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZTtcblxuICAvLyBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQsIHtzdGF0aWM6IHRydWV9KVxuICAvLyBwdWJsaWMgcmVsYXRpb25Gb3JtOiBGb3JtQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IEN1c3RvbWVyRnVsbE9iamVjdCkge1xuICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLl9yZWxhdGlvbi5nZXRGaXJzdEFkZHJlc3NPckNyZWF0ZU5ldygpO1xuICAgICAgY29uc3QgZmlyc3RBY3RpdmVBZGRyZXNzOiBBZGRyZXNzID0gdGhpcy5fcmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzLmxlbmd0aCA+IDAgPyB0aGlzLl9yZWxhdGlvbi5hY3RpdmVBZGRyZXNzZXNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc05hd05yID0gZmlyc3RBY3RpdmVBZGRyZXNzID8gZmlyc3RBY3RpdmVBZGRyZXNzLm5hd05yIDogMDtcbiAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOciA9IGZpcnN0QWN0aXZlQWRkcmVzcyA/IGZpcnN0QWN0aXZlQWRkcmVzcy5uYXdOciA6IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBDdXN0b21lckZ1bGxPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsaWRTdWJtaXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGludmFsaWRTdWJtaXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGludm9pY2VBZGRyZXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVsYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdFwiKVxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gcHVibGljIGZvcm1SZWxhdGlvbjogRm9ybUdyb3VwO1xuXG4gIC8vIHB1YmxpYyBhY2NvdW50UGFzc3dvcmQ6IHN0cmluZyA9IFwiXCI7XG4gIC8vIHB1YmxpYyBoaWRlOiBib29sZWFuID0gdHJ1ZTtcbiAgLy8gcHVibGljIGdlbmRlcjogR2VuZGVyVHlwZSA9IEdlbmRlclR5cGUuVW5zcGVjaWZpZWQ7XG4gIC8vIHB1YmxpYyBwcml2YWN5U2V0dGluZ3M6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXTtcblxuICAvLyBwdWJsaWMgYWRkcmVzc2VzOiBBZGRyZXNzW10gPSBbXTtcbiAgcHJpdmF0ZSBfcmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCA9IG5ldyBDdXN0b21lckZ1bGxPYmplY3QoKTtcblxuICBwdWJsaWMgYWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIHNlbGVjdGVkQWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzczogQWRkcmVzcztcbiAgcHVibGljIGludm9pY2VBZGRyZXNzOiBBZGRyZXNzO1xuICBwdWJsaWMgZGVsaXZlcnlBZGRyZXNzTmF3TnI6IG51bWJlcjtcbiAgcHVibGljIGludm9pY2VBZGRyZXNzTmF3TnI6IG51bWJlcjtcbiAgLy8gcHVibGljIGRlbGl2ZXJ5QWRkcmVzc0lkeDogbnVtYmVyID0gMDtcbiAgLy8gcHVibGljIGludm9pY2VBZGRyZXNzSWR4OiBudW1iZXIgPSAwO1xuICBwdWJsaWMgZWRpdEFkZHJlc3NUeXBlOiBBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgLy8gcHVibGljIGFkZHJlc3NUb0VkaXQ6IEFkZHJlc3M7XG4gIC8vIHB1YmxpYyBzaG93U2VsZWN0QWRkcmVzc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBwdWJsaWMgc2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBwdWJsaWMgcmVhZG9ubHkgcmVsVHlwZTogdHlwZW9mIFJlbGF0aW9uTmFtZUtpbmQgPSBSZWxhdGlvbk5hbWVLaW5kO1xuICAvLyBwdWJsaWMgcmVhZG9ubHkgZ2VuZGVyVHlwZTogdHlwZW9mIEdlbmRlclR5cGUgPSBHZW5kZXJUeXBlO1xuXG4gIC8vIHB1YmxpYyBnZXQgZWRpdEZpcnN0QWRkcmVzcygpOiBBZGRyZXNzIHtcbiAgLy8gICBjb25zdCBmaXJzdEFkZHJlc3M6IEFkZHJlc3MgPSB0aGlzLnNlcnZpY2UuZ2V0Rmlyc3RBZGRyZXNzKHRoaXMucmVsYXRpb24pO1xuICAvLyAgIGlmIChmaXJzdEFkZHJlc3MpIHtcbiAgLy8gICAgIHJldHVybiBmaXJzdEFkZHJlc3M7XG4gIC8vICAgfSBlbHNlIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAvLyAgICAgY29uc3QgYWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKCk7XG4gIC8vICAgICBhZGRyZXNzLmFkZHJlc3NUeXBlID0gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzO1xuICAvLyAgICAgYWRkcmVzcy5zdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAvLyAgICAgYWRkcmVzcy5zZXF1ZW5jZSA9IHRoaXMuX3JlbGF0aW9uLmdldE5leHRBZGRyZXNzU2VxdWVuY2UoKTtcbiAgLy8gICAgIHRoaXMuX3JlbGF0aW9uLmFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICAvLyAgICAgcmV0dXJuIGFkZHJlc3M7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHVibGljIGdldCBhcHBsaWNhdGlvblVzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcHBsaWNhdGlvblVzZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSxcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XG4gICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLl9yZWxhdGlvbi5nZXRGaXJzdEFkZHJlc3NPckNyZWF0ZU5ldygpO1xuICAgIH1cbiAgICAvLyB0aGlzLl9pbml0Rm9ybSgpO1xuICAgIC8vIHRoaXMuX3JlbGF0aW9uLnR5cGUgPSB0aGlzLnJlbFR5cGUuUHJpdmF0ZTtcbiAgICAvLyB0aGlzLl9yZWxhdGlvbi5nZW5kZXIgPSB0aGlzLmdlbmRlcjtcbiAgICAvLyBhd2FpdCB0aGlzLmxvYWRQcml2YWN5U2V0dGluZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSZWxhdGlvbihyZWw6IEN1c3RvbWVyRnVsbE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbGF0aW9uID0gcmVsO1xuICAgIHRoaXMucmVsYXRpb25DaGFuZ2UuZW1pdCh0aGlzLl9yZWxhdGlvbik7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIC8vIHJldHVybiB0aGlzLnJlbGF0aW9uRm9ybS5zdWJtaXQoKTtcbiAgICByZXR1cm4gdGhpcy5fZm9ybU1hc3Rlci5zdWJtaXRTbGF2ZXMoKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBzaG93TmV3QWRkcmVzc0RpYWxvZyhkZWxpdmVyeUFkZHJlc3M6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gIC8vICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBkZWxpdmVyeUFkZHJlc3MgPyBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MgOiBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcztcbiAgLy8gICB0aGlzLnNob3dDcmVhdGVBZGRyZXNzRGlhbG9nID0gdHJ1ZTtcbiAgLy8gfVxuXG4gIC8vIHB1YmxpYyBzaG93RWRpdEFkZHJlc3NEaWFsb2coZGVsaXZlcnlBZGRyZXNzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAvLyAgIHRoaXMuZWRpdEFkZHJlc3NUeXBlID0gZGVsaXZlcnlBZGRyZXNzID8gQWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzIDogQWRkcmVzc1R5cGUuQmlsbGluZ0FkZHJlc3M7XG4gIC8vICAgdGhpcy5zaG93U2VsZWN0QWRkcmVzc0RpYWxvZyA9IHRydWU7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgc2V0SW5kZXhEZWxpdmVyeUFkZHJlc3MoaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgLy8gICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0lkeCA9IGlkeDtcbiAgLy8gICB0aGlzLmVkaXRBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlLkRlbGl2ZXJ5QWRkcmVzcztcbiAgLy8gfVxuICAvL1xuICAvLyBwdWJsaWMgc2V0SW5kZXhJbnZvaWNlQWRkcmVzcyhpZHg6IG51bWJlcik6IHZvaWQge1xuICAvLyAgIHRoaXMuaW52b2ljZUFkZHJlc3NJZHggPSBpZHg7XG4gIC8vICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzcztcbiAgLy8gICAvLyB0aGlzLnNlbGVjdEFkZHJlc3ModGhpcy5yZWxhdGlvbi5hZGRyZXNzZXNbaWR4XSk7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgZWRpdEFkZHJlc3MoYWRkcjogQWRkcmVzcyk6IHZvaWQge1xuICAvLyAgIHRoaXMuYWRkcmVzc1RvRWRpdCA9IDxBZGRyZXNzPjx1bmtub3duPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFkZHJlc3MsIGFkZHIpO1xuICAvLyAgIHRoaXMuc2hvd0VkaXRBZGRyZXNzRGlhbG9nKClcbiAgLy8gfVxuXG4gIHB1YmxpYyBjaGVja1NhbWVBZGRyZXNzKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5lZGl0QWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3M7XG4gICAgICAvLyB0aGlzLnNlbGVjdEFkZHJlc3ModGhpcy5kZWxpdmVyeUFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHB1YmxpYyBzYXZlTmV3QWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogdm9pZCB7XG4gIC8vICAgYWRkcmVzcy5hZGRyZXNzVHlwZSA9IHRoaXMuZWRpdEFkZHJlc3NUeXBlO1xuICAvLyAgIHRoaXMucmVsYXRpb24uYWRkcmVzc2VzLnB1c2goYWRkcmVzcyk7XG4gIC8vICAgdGhpcy5zZWxlY3RBZGRyZXNzKGFkZHJlc3MpO1xuICAvLyAgIHRoaXMuc2hvd0NyZWF0ZUFkZHJlc3NEaWFsb2cgPSBmYWxzZTtcbiAgLy8gfVxuXG4gIC8vIHB1YmxpYyBzYXZlQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogdm9pZCB7XG4gIC8vICAgY29uc3QgaWR4OiBudW1iZXIgPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSBhZGRyZXNzLm5hd05yKTtcbiAgLy8gICBpZiAoaWR4ID4gLTEpIHtcbiAgLy8gICAgIHRoaXMucmVsYXRpb24uYWRkcmVzc2VzW2lkeF0gPSA8QWRkcmVzcz48dW5rbm93bj50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShBZGRyZXNzLCBhZGRyZXNzKTtcbiAgLy8gICB9XG4gIC8vICAgdGhpcy5zaG93U2VsZWN0QWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIHNlbGVjdEFkZHJlc3MoYWRkcmVzcz86IEFkZHJlc3MpOiB2b2lkIHtcbiAgLy8gICAvLyBpZiAoIXRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdCkge1xuICAvLyAgIC8vICAgcmV0dXJuO1xuICAvLyAgIC8vIH1cbiAgLy8gICAvLyBpZiAoIWFkZHJlc3MpIHtcbiAgLy8gICAvLyAgIGFkZHJlc3MgPSB0aGlzLnNlcnZpY2UuZ2V0Rmlyc3RBZGRyZXNzKHRoaXMucmVsYXRpb24pO1xuICAvLyAgIC8vIH1cbiAgLy8gICAvLyBpZiAoIWFkZHJlc3MpIHtcbiAgLy8gICAvLyAgIHJldHVybjtcbiAgLy8gICAvLyB9XG4gIC8vICAgLy8gdGhpcy5fc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzcyk7XG4gIC8vICAgLy8gaWYgKHRoaXMuZWRpdEFkZHJlc3NUeXBlID09PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgLy8gICAvLyAgIHRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdC50cmFuc2FjdGlvbkFkZHJlc3MgPSBhZGRyZXNzLm5hd05yO1xuICAvLyAgIC8vICAgdGhpcy5kZWxpdmVyeUFkZHJlc3MgPSBhZGRyZXNzO1xuICAvLyAgIC8vICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB0aGlzLmRlbGl2ZXJ5QWRkcmVzcy5uYXdOcik7XG4gIC8vICAgLy8gfVxuICAvLyAgIC8vIGlmICh0aGlzLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlBZGRyZXNzIHx8IHRoaXMuZWRpdEFkZHJlc3NUeXBlICE9PSBBZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3MpIHtcbiAgLy8gICAvLyAgIHRoaXMuZGVsaXZlcnlPcHRpb25zUmVxdWVzdC5pbnZvaWNlQWRkcmVzcyA9IGFkZHJlc3MubmF3TnI7XG4gIC8vICAgLy8gICB0aGlzLmludm9pY2VBZGRyZXNzID0gYWRkcmVzcztcbiAgLy8gICAvLyAgIHRoaXMuaW52b2ljZUFkZHJlc3NJZHggPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlcy5maW5kSW5kZXgoYSA9PiBhLm5hd05yID09PSB0aGlzLmludm9pY2VBZGRyZXNzLm5hd05yKTtcbiAgLy8gICAvLyB9XG4gIC8vICAgdGhpcy5zaG93U2VsZWN0QWRkcmVzc0RpYWxvZyA9IGZhbHNlO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIGFzeW5jIGxvYWRQcml2YWN5U2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vICAgdGhpcy5wcml2YWN5U2V0dGluZ3MgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0UmVsYXRpb25Qcml2YWN5U2V0dGluZ3MoKTtcbiAgLy8gfVxuXG4gIC8vIHB1YmxpYyBhc3luYyBsb2FkTWFya2V0aW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAvLyAgIGF3YWl0IHRoaXMuc2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIGlzU2hhcmVkKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcpOiBib29sZWFuIHtcbiAgLy8gICBjb25zdCBvd25TZXR0aW5nOiBSZWxhdGlvblByaXZhY3lTZXR0aW5nID0gQnVzaW5lc3NPYmplY3RVdGlscy5GaW5kSXRlbUJ5SWQodGhpcy5yZWxhdGlvbkFzQ3VzdG9tZXIucmVsYXRpb25Qcml2YWN5U2V0dGluZ3MsIHJlbGF0aW9uUHJpdmFjeVNldHRpbmcuZ2V0SWQoKSk7XG4gIC8vICAgaWYgKG93blNldHRpbmcpIHtcbiAgLy8gICAgIHJldHVybiBvd25TZXR0aW5nLmFsbG93VG9TaGFyZTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIGZhbHNlO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIGNoYW5nZVJlbGF0aW9uVHlwZSh2YWx1ZTogUmVsYXRpb25OYW1lS2luZCk6IHZvaWQge1xuICAvLyAgIHRoaXMucmVsYXRpb24udHlwZSA9IHZhbHVlO1xuICAvLyB9XG5cbiAgLy8gcHVibGljIGNoYW5nZVByaXZhY3lTZXR0aW5nKHJlbGF0aW9uUHJpdmFjeVNldHRpbmc6IFJlbGF0aW9uUHJpdmFjeVNldHRpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gIC8vICAgY29uc3Qgb3duU2V0dGluZzogUmVsYXRpb25Qcml2YWN5U2V0dGluZyA9IEJ1c2luZXNzT2JqZWN0VXRpbHMuRmluZEl0ZW1CeUlkKHRoaXMucmVsYXRpb25Bc0N1c3RvbWVyLnJlbGF0aW9uUHJpdmFjeVNldHRpbmdzLCByZWxhdGlvblByaXZhY3lTZXR0aW5nLmdldElkKCkpO1xuICAvLyAgIGlmIChvd25TZXR0aW5nKSB7XG4gIC8vICAgICBvd25TZXR0aW5nLmFsbG93VG9TaGFyZSA9IHZhbHVlO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLnJlbGF0aW9uQXNDdXN0b21lci5yZWxhdGlvblByaXZhY3lTZXR0aW5ncy5wdXNoKHJlbGF0aW9uUHJpdmFjeVNldHRpbmcpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vIHByaXZhdGUgX2luaXRGb3JtKCk6IHZvaWQge1xuICAvLyAgIGlmICh0aGlzLnJlbGF0aW9uRm9ybSkge1xuICAvLyAgICAgdGhpcy5mb3JtUmVsYXRpb24gPSB0aGlzLnJlbGF0aW9uRm9ybS5mb3JtR3JvdXA7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2V0Q291bnRyeU5hbWVUb0FkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhZGRyZXNzLmNvdW50cnlJZCAmJiAhYWRkcmVzcy5jb3VudHJ5TmFtZSkge1xuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRDb3VudHJ5KGFkZHJlc3MuY291bnRyeUlkKTtcbiAgICAgIGFkZHJlc3MuY291bnRyeU5hbWUgPSBjb3VudHJ5LmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=