@vendasta/billing 8.2.0 → 9.2.0

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 (591) hide show
  1. package/esm2020/lib/_generated/host.service.mjs +25 -0
  2. package/esm2020/lib/_generated/index.mjs +2 -0
  3. package/esm2020/lib/_internal/bank-reconciliation.api.service.mjs +46 -0
  4. package/esm2020/lib/_internal/billing.api.service.mjs +216 -0
  5. package/esm2020/lib/_internal/bundle.api.service.mjs +50 -0
  6. package/esm2020/lib/_internal/contract-document.api.service.mjs +45 -0
  7. package/esm2020/lib/_internal/contract.api.service.mjs +55 -0
  8. package/esm2020/lib/_internal/credit.api.service.mjs +45 -0
  9. package/esm2020/lib/_internal/discount.api.service.mjs +53 -0
  10. package/esm2020/lib/_internal/enums/applied-discount.enum.mjs +14 -0
  11. package/esm2020/lib/_internal/enums/card.enum.mjs +17 -0
  12. package/esm2020/lib/_internal/enums/contract.enum.mjs +14 -0
  13. package/esm2020/lib/_internal/enums/currency.enum.mjs +35 -0
  14. package/esm2020/lib/_internal/enums/frequency.enum.mjs +14 -0
  15. package/esm2020/lib/_internal/enums/index.mjs +31 -0
  16. package/esm2020/lib/_internal/enums/invoice.enum.mjs +18 -0
  17. package/esm2020/lib/_internal/enums/merchant-report.enum.mjs +13 -0
  18. package/{esm2015/lib/_internal/enums/merchant.enum.js → esm2020/lib/_internal/enums/merchant.enum.mjs} +1 -1
  19. package/esm2020/lib/_internal/enums/month.enum.mjs +23 -0
  20. package/esm2020/lib/_internal/enums/payment-card.enum.mjs +24 -0
  21. package/esm2020/lib/_internal/enums/payment-processor.enum.mjs +13 -0
  22. package/{esm2015/lib/_internal/enums/payment.enum.js → esm2020/lib/_internal/enums/payment.enum.mjs} +1 -1
  23. package/esm2020/lib/_internal/enums/payout.enum.mjs +22 -0
  24. package/esm2020/lib/_internal/enums/pricing-plan.enum.mjs +22 -0
  25. package/{esm2015/lib/_internal/enums/product-summary.enum.js → esm2020/lib/_internal/enums/product-summary.enum.mjs} +1 -1
  26. package/esm2020/lib/_internal/enums/product.enum.mjs +17 -0
  27. package/esm2020/lib/_internal/enums/purchase.enum.mjs +27 -0
  28. package/esm2020/lib/_internal/enums/recurring-invoice.enum.mjs +29 -0
  29. package/esm2020/lib/_internal/enums/refund.enum.mjs +25 -0
  30. package/esm2020/lib/_internal/enums/sales-credit-note.enum.mjs +14 -0
  31. package/{esm2015/lib/_internal/enums/sales-invoice.enum.js → esm2020/lib/_internal/enums/sales-invoice.enum.mjs} +1 -1
  32. package/esm2020/lib/_internal/enums/sort-direction.enum.mjs +12 -0
  33. package/{esm2015/lib/_internal/enums/subscribe-validation.enum.js → esm2020/lib/_internal/enums/subscribe-validation.enum.mjs} +1 -1
  34. package/esm2020/lib/_internal/enums/subscription.enum.mjs +12 -0
  35. package/esm2020/lib/_internal/index.mjs +33 -0
  36. package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
  37. package/esm2020/lib/_internal/interfaces/applied-bundle.interface.mjs +8 -0
  38. package/esm2020/lib/_internal/interfaces/applied-discount.interface.mjs +8 -0
  39. package/esm2020/lib/_internal/interfaces/applied-tax-rate.interface.mjs +8 -0
  40. package/esm2020/lib/_internal/interfaces/balance.interface.mjs +8 -0
  41. package/esm2020/lib/_internal/interfaces/billable-item.interface.mjs +2 -0
  42. package/esm2020/lib/_internal/interfaces/bundle.interface.mjs +2 -0
  43. package/esm2020/lib/_internal/interfaces/card.interface.mjs +8 -0
  44. package/esm2020/lib/_internal/interfaces/commitment.interface.mjs +8 -0
  45. package/esm2020/lib/_internal/interfaces/common.interface.mjs +8 -0
  46. package/esm2020/lib/_internal/interfaces/contract-document.interface.mjs +2 -0
  47. package/esm2020/lib/_internal/interfaces/contract.interface.mjs +2 -0
  48. package/esm2020/lib/_internal/interfaces/credit.interface.mjs +8 -0
  49. package/esm2020/lib/_internal/interfaces/currency.interface.mjs +8 -0
  50. package/esm2020/lib/_internal/interfaces/customer-summary.interface.mjs +8 -0
  51. package/esm2020/lib/_internal/interfaces/date-range.interface.mjs +8 -0
  52. package/esm2020/lib/_internal/interfaces/discount.interface.mjs +2 -0
  53. package/esm2020/lib/_internal/interfaces/external-account.interface.mjs +8 -0
  54. package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
  55. package/esm2020/lib/_internal/interfaces/frequency.interface.mjs +8 -0
  56. package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
  57. package/esm2020/lib/_internal/interfaces/invoice-template.interface.mjs +2 -0
  58. package/esm2020/lib/_internal/interfaces/invoice.interface.mjs +2 -0
  59. package/esm2020/lib/_internal/interfaces/merchant-report.interface.mjs +2 -0
  60. package/esm2020/lib/_internal/interfaces/merchant.interface.mjs +2 -0
  61. package/esm2020/lib/_internal/interfaces/metered-component.interface.mjs +8 -0
  62. package/esm2020/lib/_internal/interfaces/month.interface.mjs +8 -0
  63. package/esm2020/lib/_internal/interfaces/payment-card.interface.mjs +8 -0
  64. package/esm2020/lib/_internal/interfaces/payment-processor.interface.mjs +8 -0
  65. package/esm2020/lib/_internal/interfaces/payment.interface.mjs +2 -0
  66. package/esm2020/lib/_internal/interfaces/payout.interface.mjs +2 -0
  67. package/esm2020/lib/_internal/interfaces/pricing-plan-product.interface.mjs +2 -0
  68. package/esm2020/lib/_internal/interfaces/pricing-plan.interface.mjs +2 -0
  69. package/esm2020/lib/_internal/interfaces/product-pricing.interface.mjs +2 -0
  70. package/esm2020/lib/_internal/interfaces/product-summary.interface.mjs +2 -0
  71. package/esm2020/lib/_internal/interfaces/product.interface.mjs +2 -0
  72. package/esm2020/lib/_internal/interfaces/purchase.interface.mjs +2 -0
  73. package/esm2020/lib/_internal/interfaces/recurring-invoice.interface.mjs +2 -0
  74. package/esm2020/lib/_internal/interfaces/refund.interface.mjs +8 -0
  75. package/esm2020/lib/_internal/interfaces/retail-customer-configuration.interface.mjs +8 -0
  76. package/esm2020/lib/_internal/interfaces/sales-credit-note.interface.mjs +2 -0
  77. package/esm2020/lib/_internal/interfaces/sales-invoice.interface.mjs +2 -0
  78. package/esm2020/lib/_internal/interfaces/sort-direction.interface.mjs +8 -0
  79. package/esm2020/lib/_internal/interfaces/subscribe-validation.interface.mjs +8 -0
  80. package/esm2020/lib/_internal/interfaces/subscription.interface.mjs +2 -0
  81. package/esm2020/lib/_internal/interfaces/tax-rate.interface.mjs +2 -0
  82. package/esm2020/lib/_internal/invoice-template.api.service.mjs +85 -0
  83. package/esm2020/lib/_internal/invoice.api.service.mjs +116 -0
  84. package/esm2020/lib/_internal/merchant.api.service.mjs +159 -0
  85. package/esm2020/lib/_internal/objects/api.mjs +890 -0
  86. package/esm2020/lib/_internal/objects/applied-bundle.mjs +77 -0
  87. package/esm2020/lib/_internal/objects/applied-discount.mjs +46 -0
  88. package/esm2020/lib/_internal/objects/applied-tax-rate.mjs +39 -0
  89. package/esm2020/lib/_internal/objects/balance.mjs +45 -0
  90. package/esm2020/lib/_internal/objects/billable-item.mjs +562 -0
  91. package/esm2020/lib/_internal/objects/bundle.mjs +390 -0
  92. package/esm2020/lib/_internal/objects/card.mjs +7 -0
  93. package/esm2020/lib/_internal/objects/commitment.mjs +36 -0
  94. package/esm2020/lib/_internal/objects/common.mjs +56 -0
  95. package/esm2020/lib/_internal/objects/contract-document.mjs +141 -0
  96. package/esm2020/lib/_internal/objects/contract.mjs +474 -0
  97. package/esm2020/lib/_internal/objects/credit.mjs +114 -0
  98. package/esm2020/lib/_internal/objects/currency.mjs +7 -0
  99. package/esm2020/lib/_internal/objects/customer-summary.mjs +104 -0
  100. package/esm2020/lib/_internal/objects/date-range.mjs +36 -0
  101. package/esm2020/lib/_internal/objects/discount.mjs +299 -0
  102. package/esm2020/lib/_internal/objects/external-account.mjs +160 -0
  103. package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
  104. package/esm2020/lib/_internal/objects/frequency.mjs +7 -0
  105. package/esm2020/lib/_internal/objects/index.mjs +46 -0
  106. package/esm2020/lib/_internal/objects/invoice-template.mjs +707 -0
  107. package/esm2020/lib/_internal/objects/invoice.mjs +1117 -0
  108. package/esm2020/lib/_internal/objects/merchant-report.mjs +108 -0
  109. package/esm2020/lib/_internal/objects/merchant.mjs +991 -0
  110. package/esm2020/lib/_internal/objects/metered-component.mjs +97 -0
  111. package/esm2020/lib/_internal/objects/month.mjs +7 -0
  112. package/esm2020/lib/_internal/objects/payment-card.mjs +211 -0
  113. package/esm2020/lib/_internal/objects/payment-processor.mjs +7 -0
  114. package/esm2020/lib/_internal/objects/payment.mjs +1219 -0
  115. package/esm2020/lib/_internal/objects/payout.mjs +258 -0
  116. package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +565 -0
  117. package/esm2020/lib/_internal/objects/pricing-plan.mjs +290 -0
  118. package/esm2020/lib/_internal/objects/product-pricing.mjs +139 -0
  119. package/esm2020/lib/_internal/objects/product-summary.mjs +538 -0
  120. package/esm2020/lib/_internal/objects/product.mjs +302 -0
  121. package/esm2020/lib/_internal/objects/purchase.mjs +524 -0
  122. package/esm2020/lib/_internal/objects/recurring-invoice.mjs +324 -0
  123. package/esm2020/lib/_internal/objects/refund.mjs +181 -0
  124. package/esm2020/lib/_internal/objects/retail-customer-configuration.mjs +159 -0
  125. package/esm2020/lib/_internal/objects/sales-credit-note.mjs +211 -0
  126. package/esm2020/lib/_internal/objects/sales-invoice.mjs +300 -0
  127. package/esm2020/lib/_internal/objects/sort-direction.mjs +7 -0
  128. package/esm2020/lib/_internal/objects/subscribe-validation.mjs +31 -0
  129. package/esm2020/lib/_internal/objects/subscription.mjs +555 -0
  130. package/esm2020/lib/_internal/objects/tax-rate.mjs +342 -0
  131. package/esm2020/lib/_internal/payment-method.api.service.mjs +49 -0
  132. package/esm2020/lib/_internal/payment.api.service.mjs +102 -0
  133. package/esm2020/lib/_internal/pricing.api.service.mjs +81 -0
  134. package/esm2020/lib/_internal/product-summary.api.service.mjs +46 -0
  135. package/esm2020/lib/_internal/product.api.service.mjs +47 -0
  136. package/esm2020/lib/_internal/purchase.api.service.mjs +59 -0
  137. package/esm2020/lib/_internal/recurring-invoice.api.service.mjs +60 -0
  138. package/esm2020/lib/_internal/refund.api.service.mjs +45 -0
  139. package/esm2020/lib/_internal/retail-customer-configuration.api.service.mjs +45 -0
  140. package/esm2020/lib/_internal/sales-credit-note.api.service.mjs +45 -0
  141. package/esm2020/lib/_internal/sales-invoice.api.service.mjs +50 -0
  142. package/esm2020/lib/_internal/tax.api.service.mjs +63 -0
  143. package/esm2020/lib/_internal/vendor.api.service.mjs +46 -0
  144. package/esm2020/lib/index.mjs +3 -0
  145. package/esm2020/public_api.mjs +2 -0
  146. package/esm2020/vendasta-billing.mjs +5 -0
  147. package/fesm2015/{vendasta-billing.js → vendasta-billing.mjs} +717 -5236
  148. package/fesm2015/vendasta-billing.mjs.map +1 -0
  149. package/fesm2020/vendasta-billing.mjs +14454 -0
  150. package/fesm2020/vendasta-billing.mjs.map +1 -0
  151. package/lib/_generated/host.service.d.ts +5 -9
  152. package/lib/_internal/bank-reconciliation.api.service.d.ts +4 -0
  153. package/lib/_internal/billing.api.service.d.ts +4 -0
  154. package/lib/_internal/bundle.api.service.d.ts +4 -0
  155. package/lib/_internal/contract-document.api.service.d.ts +4 -0
  156. package/lib/_internal/contract.api.service.d.ts +4 -0
  157. package/lib/_internal/credit.api.service.d.ts +4 -0
  158. package/lib/_internal/discount.api.service.d.ts +4 -0
  159. package/lib/_internal/interfaces/api.interface.d.ts +8 -1
  160. package/lib/_internal/interfaces/index.d.ts +2 -2
  161. package/lib/_internal/interfaces/product-pricing.interface.d.ts +5 -0
  162. package/lib/_internal/interfaces/recurring-invoice.interface.d.ts +2 -1
  163. package/lib/_internal/invoice-template.api.service.d.ts +4 -0
  164. package/lib/_internal/invoice.api.service.d.ts +4 -0
  165. package/lib/_internal/merchant.api.service.d.ts +4 -0
  166. package/lib/_internal/objects/api.d.ts +14 -1
  167. package/lib/_internal/objects/index.d.ts +2 -2
  168. package/lib/_internal/objects/product-pricing.d.ts +8 -0
  169. package/lib/_internal/objects/recurring-invoice.d.ts +2 -1
  170. package/lib/_internal/payment-method.api.service.d.ts +4 -0
  171. package/lib/_internal/payment.api.service.d.ts +4 -0
  172. package/lib/_internal/pricing.api.service.d.ts +7 -2
  173. package/lib/_internal/product-summary.api.service.d.ts +4 -0
  174. package/lib/_internal/product.api.service.d.ts +4 -0
  175. package/lib/_internal/purchase.api.service.d.ts +4 -0
  176. package/lib/_internal/recurring-invoice.api.service.d.ts +4 -0
  177. package/lib/_internal/refund.api.service.d.ts +4 -0
  178. package/lib/_internal/retail-customer-configuration.api.service.d.ts +4 -0
  179. package/lib/_internal/sales-credit-note.api.service.d.ts +4 -0
  180. package/lib/_internal/sales-invoice.api.service.d.ts +4 -0
  181. package/lib/_internal/tax.api.service.d.ts +4 -0
  182. package/lib/_internal/vendor.api.service.d.ts +4 -0
  183. package/lib/index.d.ts +2 -37
  184. package/package.json +26 -15
  185. package/src/README.md +1 -0
  186. package/vendasta-billing.d.ts +1 -0
  187. package/bundles/vendasta-billing.umd.js +0 -19912
  188. package/bundles/vendasta-billing.umd.js.map +0 -1
  189. package/bundles/vendasta-billing.umd.min.js +0 -16
  190. package/bundles/vendasta-billing.umd.min.js.map +0 -1
  191. package/esm2015/lib/_generated/host.service.js +0 -65
  192. package/esm2015/lib/_generated/index.js +0 -2
  193. package/esm2015/lib/_internal/bank-reconciliation.api.service.js +0 -47
  194. package/esm2015/lib/_internal/billing.api.service.js +0 -217
  195. package/esm2015/lib/_internal/bundle.api.service.js +0 -51
  196. package/esm2015/lib/_internal/contract-document.api.service.js +0 -46
  197. package/esm2015/lib/_internal/contract.api.service.js +0 -56
  198. package/esm2015/lib/_internal/credit.api.service.js +0 -46
  199. package/esm2015/lib/_internal/discount.api.service.js +0 -54
  200. package/esm2015/lib/_internal/enums/applied-discount.enum.js +0 -14
  201. package/esm2015/lib/_internal/enums/card.enum.js +0 -17
  202. package/esm2015/lib/_internal/enums/contract.enum.js +0 -14
  203. package/esm2015/lib/_internal/enums/currency.enum.js +0 -35
  204. package/esm2015/lib/_internal/enums/frequency.enum.js +0 -14
  205. package/esm2015/lib/_internal/enums/index.js +0 -31
  206. package/esm2015/lib/_internal/enums/invoice.enum.js +0 -18
  207. package/esm2015/lib/_internal/enums/merchant-report.enum.js +0 -13
  208. package/esm2015/lib/_internal/enums/month.enum.js +0 -23
  209. package/esm2015/lib/_internal/enums/payment-card.enum.js +0 -24
  210. package/esm2015/lib/_internal/enums/payment-processor.enum.js +0 -13
  211. package/esm2015/lib/_internal/enums/payout.enum.js +0 -22
  212. package/esm2015/lib/_internal/enums/pricing-plan.enum.js +0 -22
  213. package/esm2015/lib/_internal/enums/product.enum.js +0 -17
  214. package/esm2015/lib/_internal/enums/purchase.enum.js +0 -27
  215. package/esm2015/lib/_internal/enums/recurring-invoice.enum.js +0 -29
  216. package/esm2015/lib/_internal/enums/refund.enum.js +0 -25
  217. package/esm2015/lib/_internal/enums/sales-credit-note.enum.js +0 -14
  218. package/esm2015/lib/_internal/enums/sort-direction.enum.js +0 -12
  219. package/esm2015/lib/_internal/enums/subscription.enum.js +0 -12
  220. package/esm2015/lib/_internal/index.js +0 -33
  221. package/esm2015/lib/_internal/interfaces/api.interface.js +0 -2
  222. package/esm2015/lib/_internal/interfaces/applied-bundle.interface.js +0 -8
  223. package/esm2015/lib/_internal/interfaces/applied-discount.interface.js +0 -8
  224. package/esm2015/lib/_internal/interfaces/applied-tax-rate.interface.js +0 -8
  225. package/esm2015/lib/_internal/interfaces/balance.interface.js +0 -8
  226. package/esm2015/lib/_internal/interfaces/billable-item.interface.js +0 -2
  227. package/esm2015/lib/_internal/interfaces/bundle.interface.js +0 -2
  228. package/esm2015/lib/_internal/interfaces/card.interface.js +0 -8
  229. package/esm2015/lib/_internal/interfaces/commitment.interface.js +0 -8
  230. package/esm2015/lib/_internal/interfaces/common.interface.js +0 -8
  231. package/esm2015/lib/_internal/interfaces/contract-document.interface.js +0 -2
  232. package/esm2015/lib/_internal/interfaces/contract.interface.js +0 -2
  233. package/esm2015/lib/_internal/interfaces/credit.interface.js +0 -8
  234. package/esm2015/lib/_internal/interfaces/currency.interface.js +0 -8
  235. package/esm2015/lib/_internal/interfaces/customer-summary.interface.js +0 -8
  236. package/esm2015/lib/_internal/interfaces/date-range.interface.js +0 -8
  237. package/esm2015/lib/_internal/interfaces/discount.interface.js +0 -2
  238. package/esm2015/lib/_internal/interfaces/external-account.interface.js +0 -8
  239. package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
  240. package/esm2015/lib/_internal/interfaces/frequency.interface.js +0 -8
  241. package/esm2015/lib/_internal/interfaces/index.js +0 -2
  242. package/esm2015/lib/_internal/interfaces/invoice-template.interface.js +0 -2
  243. package/esm2015/lib/_internal/interfaces/invoice.interface.js +0 -2
  244. package/esm2015/lib/_internal/interfaces/merchant-report.interface.js +0 -2
  245. package/esm2015/lib/_internal/interfaces/merchant.interface.js +0 -2
  246. package/esm2015/lib/_internal/interfaces/metered-component.interface.js +0 -8
  247. package/esm2015/lib/_internal/interfaces/month.interface.js +0 -8
  248. package/esm2015/lib/_internal/interfaces/payment-card.interface.js +0 -8
  249. package/esm2015/lib/_internal/interfaces/payment-processor.interface.js +0 -8
  250. package/esm2015/lib/_internal/interfaces/payment.interface.js +0 -2
  251. package/esm2015/lib/_internal/interfaces/payout.interface.js +0 -2
  252. package/esm2015/lib/_internal/interfaces/pricing-plan-product.interface.js +0 -2
  253. package/esm2015/lib/_internal/interfaces/pricing-plan.interface.js +0 -2
  254. package/esm2015/lib/_internal/interfaces/product-pricing.interface.js +0 -2
  255. package/esm2015/lib/_internal/interfaces/product-summary.interface.js +0 -2
  256. package/esm2015/lib/_internal/interfaces/product.interface.js +0 -2
  257. package/esm2015/lib/_internal/interfaces/purchase.interface.js +0 -2
  258. package/esm2015/lib/_internal/interfaces/recurring-invoice.interface.js +0 -2
  259. package/esm2015/lib/_internal/interfaces/refund.interface.js +0 -8
  260. package/esm2015/lib/_internal/interfaces/retail-customer-configuration.interface.js +0 -8
  261. package/esm2015/lib/_internal/interfaces/sales-credit-note.interface.js +0 -2
  262. package/esm2015/lib/_internal/interfaces/sales-invoice.interface.js +0 -2
  263. package/esm2015/lib/_internal/interfaces/sort-direction.interface.js +0 -8
  264. package/esm2015/lib/_internal/interfaces/subscribe-validation.interface.js +0 -8
  265. package/esm2015/lib/_internal/interfaces/subscription.interface.js +0 -2
  266. package/esm2015/lib/_internal/interfaces/tax-rate.interface.js +0 -2
  267. package/esm2015/lib/_internal/invoice-template.api.service.js +0 -86
  268. package/esm2015/lib/_internal/invoice.api.service.js +0 -117
  269. package/esm2015/lib/_internal/merchant.api.service.js +0 -160
  270. package/esm2015/lib/_internal/objects/api.js +0 -841
  271. package/esm2015/lib/_internal/objects/applied-bundle.js +0 -77
  272. package/esm2015/lib/_internal/objects/applied-discount.js +0 -46
  273. package/esm2015/lib/_internal/objects/applied-tax-rate.js +0 -39
  274. package/esm2015/lib/_internal/objects/balance.js +0 -45
  275. package/esm2015/lib/_internal/objects/billable-item.js +0 -562
  276. package/esm2015/lib/_internal/objects/bundle.js +0 -390
  277. package/esm2015/lib/_internal/objects/card.js +0 -7
  278. package/esm2015/lib/_internal/objects/commitment.js +0 -36
  279. package/esm2015/lib/_internal/objects/common.js +0 -56
  280. package/esm2015/lib/_internal/objects/contract-document.js +0 -141
  281. package/esm2015/lib/_internal/objects/contract.js +0 -474
  282. package/esm2015/lib/_internal/objects/credit.js +0 -114
  283. package/esm2015/lib/_internal/objects/currency.js +0 -7
  284. package/esm2015/lib/_internal/objects/customer-summary.js +0 -104
  285. package/esm2015/lib/_internal/objects/date-range.js +0 -36
  286. package/esm2015/lib/_internal/objects/discount.js +0 -299
  287. package/esm2015/lib/_internal/objects/external-account.js +0 -160
  288. package/esm2015/lib/_internal/objects/field-mask.js +0 -27
  289. package/esm2015/lib/_internal/objects/frequency.js +0 -7
  290. package/esm2015/lib/_internal/objects/index.js +0 -46
  291. package/esm2015/lib/_internal/objects/invoice-template.js +0 -707
  292. package/esm2015/lib/_internal/objects/invoice.js +0 -1117
  293. package/esm2015/lib/_internal/objects/merchant-report.js +0 -108
  294. package/esm2015/lib/_internal/objects/merchant.js +0 -991
  295. package/esm2015/lib/_internal/objects/metered-component.js +0 -97
  296. package/esm2015/lib/_internal/objects/month.js +0 -7
  297. package/esm2015/lib/_internal/objects/payment-card.js +0 -211
  298. package/esm2015/lib/_internal/objects/payment-processor.js +0 -7
  299. package/esm2015/lib/_internal/objects/payment.js +0 -1219
  300. package/esm2015/lib/_internal/objects/payout.js +0 -258
  301. package/esm2015/lib/_internal/objects/pricing-plan-product.js +0 -565
  302. package/esm2015/lib/_internal/objects/pricing-plan.js +0 -290
  303. package/esm2015/lib/_internal/objects/product-pricing.js +0 -107
  304. package/esm2015/lib/_internal/objects/product-summary.js +0 -538
  305. package/esm2015/lib/_internal/objects/product.js +0 -302
  306. package/esm2015/lib/_internal/objects/purchase.js +0 -524
  307. package/esm2015/lib/_internal/objects/recurring-invoice.js +0 -324
  308. package/esm2015/lib/_internal/objects/refund.js +0 -181
  309. package/esm2015/lib/_internal/objects/retail-customer-configuration.js +0 -159
  310. package/esm2015/lib/_internal/objects/sales-credit-note.js +0 -211
  311. package/esm2015/lib/_internal/objects/sales-invoice.js +0 -300
  312. package/esm2015/lib/_internal/objects/sort-direction.js +0 -7
  313. package/esm2015/lib/_internal/objects/subscribe-validation.js +0 -31
  314. package/esm2015/lib/_internal/objects/subscription.js +0 -555
  315. package/esm2015/lib/_internal/objects/tax-rate.js +0 -342
  316. package/esm2015/lib/_internal/payment-method.api.service.js +0 -50
  317. package/esm2015/lib/_internal/payment.api.service.js +0 -103
  318. package/esm2015/lib/_internal/pricing.api.service.js +0 -77
  319. package/esm2015/lib/_internal/product-summary.api.service.js +0 -47
  320. package/esm2015/lib/_internal/product.api.service.js +0 -48
  321. package/esm2015/lib/_internal/purchase.api.service.js +0 -60
  322. package/esm2015/lib/_internal/recurring-invoice.api.service.js +0 -61
  323. package/esm2015/lib/_internal/refund.api.service.js +0 -46
  324. package/esm2015/lib/_internal/retail-customer-configuration.api.service.js +0 -46
  325. package/esm2015/lib/_internal/sales-credit-note.api.service.js +0 -46
  326. package/esm2015/lib/_internal/sales-invoice.api.service.js +0 -51
  327. package/esm2015/lib/_internal/tax.api.service.js +0 -64
  328. package/esm2015/lib/_internal/vendor.api.service.js +0 -47
  329. package/esm2015/lib/applied_bundle/applied_bundle.js +0 -12
  330. package/esm2015/lib/applied_bundle/index.js +0 -2
  331. package/esm2015/lib/applied_discount/applied_discount.js +0 -48
  332. package/esm2015/lib/applied_discount/index.js +0 -2
  333. package/esm2015/lib/bank_account/bank-account.service.js +0 -38
  334. package/esm2015/lib/bank_account/bank_account.js +0 -13
  335. package/esm2015/lib/bank_account/index.js +0 -3
  336. package/esm2015/lib/bank_reconciliation/bank-reconciliation.service.js +0 -54
  337. package/esm2015/lib/bank_reconciliation/index.js +0 -3
  338. package/esm2015/lib/bank_reconciliation/payout.js +0 -53
  339. package/esm2015/lib/billable-item/billable-item.js +0 -40
  340. package/esm2015/lib/billable-item/billable-item.service.js +0 -31
  341. package/esm2015/lib/billable-item/index.js +0 -2
  342. package/esm2015/lib/billing-host.service.js +0 -41
  343. package/esm2015/lib/billing.service.js +0 -376
  344. package/esm2015/lib/bundle/bundle.js +0 -37
  345. package/esm2015/lib/bundle/bundle.service.js +0 -56
  346. package/esm2015/lib/bundle/index.js +0 -2
  347. package/esm2015/lib/contract/contract.js +0 -21
  348. package/esm2015/lib/contract/contract.service.js +0 -39
  349. package/esm2015/lib/contract/dimension.js +0 -21
  350. package/esm2015/lib/contract/index.js +0 -5
  351. package/esm2015/lib/contract/mutations.js +0 -11
  352. package/esm2015/lib/contract-document/contract-document.js +0 -9
  353. package/esm2015/lib/contract-document/contract-document.service.js +0 -68
  354. package/esm2015/lib/contract-document/index.js +0 -2
  355. package/esm2015/lib/contract-document/list-contract-document.js +0 -2
  356. package/esm2015/lib/core/index.js +0 -3
  357. package/esm2015/lib/core/paged-response.js +0 -8
  358. package/esm2015/lib/core/sort-direction.js +0 -6
  359. package/esm2015/lib/credit/credit.js +0 -8
  360. package/esm2015/lib/credit/credit.service.js +0 -33
  361. package/esm2015/lib/credit/index.js +0 -2
  362. package/esm2015/lib/customer_summary/customer-summary.js +0 -15
  363. package/esm2015/lib/discount/discount.js +0 -18
  364. package/esm2015/lib/discount/discount.service.js +0 -73
  365. package/esm2015/lib/discount/discount_type.js +0 -32
  366. package/esm2015/lib/discount/index.js +0 -3
  367. package/esm2015/lib/discount/list-discount.js +0 -2
  368. package/esm2015/lib/http-shared/error-handlers.js +0 -20
  369. package/esm2015/lib/index.js +0 -38
  370. package/esm2015/lib/invoice/index.js +0 -3
  371. package/esm2015/lib/invoice/invoice.js +0 -198
  372. package/esm2015/lib/invoice/invoice.service.js +0 -254
  373. package/esm2015/lib/invoice/list-invoice.js +0 -2
  374. package/esm2015/lib/invoice-template/index.js +0 -2
  375. package/esm2015/lib/invoice-template/invoice-template.js +0 -38
  376. package/esm2015/lib/invoice-template/invoice-template.service.js +0 -78
  377. package/esm2015/lib/merchant/balance.js +0 -2
  378. package/esm2015/lib/merchant/index.js +0 -5
  379. package/esm2015/lib/merchant/merchant.interface.js +0 -2
  380. package/esm2015/lib/merchant/merchant.js +0 -20
  381. package/esm2015/lib/merchant/merchant.service.js +0 -212
  382. package/esm2015/lib/merchant/payout-summary.js +0 -32
  383. package/esm2015/lib/merchant/retail-configuration.js +0 -57
  384. package/esm2015/lib/merchant-report/index.js +0 -2
  385. package/esm2015/lib/merchant-report/merchant-report-status.js +0 -2
  386. package/esm2015/lib/merchant-report/merchant-report.interfaces.js +0 -2
  387. package/esm2015/lib/merchant-report/merchant-report.js +0 -2
  388. package/esm2015/lib/merchant-report/merchant-report.service.js +0 -38
  389. package/esm2015/lib/payment/dispute.js +0 -92
  390. package/esm2015/lib/payment/index.js +0 -10
  391. package/esm2015/lib/payment/payment-allocation-type.js +0 -18
  392. package/esm2015/lib/payment/payment-source.js +0 -18
  393. package/esm2015/lib/payment/payment-status.js +0 -17
  394. package/esm2015/lib/payment/payment.js +0 -292
  395. package/esm2015/lib/payment/payment.service.js +0 -138
  396. package/esm2015/lib/payment/retail-payment.js +0 -70
  397. package/esm2015/lib/payment/retail-status.js +0 -50
  398. package/esm2015/lib/payment-card/index.js +0 -3
  399. package/esm2015/lib/payment-card/payment-card.js +0 -60
  400. package/esm2015/lib/payment-card/payment-card.service.js +0 -45
  401. package/esm2015/lib/payment-method/index.js +0 -2
  402. package/esm2015/lib/payment-method/payment-method.service.js +0 -43
  403. package/esm2015/lib/pricing/billing-strategy.js +0 -39
  404. package/esm2015/lib/pricing/commitment.js +0 -7
  405. package/esm2015/lib/pricing/currency.js +0 -86
  406. package/esm2015/lib/pricing/frequency.js +0 -42
  407. package/esm2015/lib/pricing/index.js +0 -12
  408. package/esm2015/lib/pricing/list-pricing-plan-product-filter.js +0 -2
  409. package/esm2015/lib/pricing/pricing-plan-product.js +0 -53
  410. package/esm2015/lib/pricing/pricing-plan.js +0 -14
  411. package/esm2015/lib/pricing/pricing-plan.service.js +0 -287
  412. package/esm2015/lib/pricing/product-pricing-rules.js +0 -10
  413. package/esm2015/lib/pricing/product-pricing-type.js +0 -31
  414. package/esm2015/lib/pricing/product-pricing.js +0 -44
  415. package/esm2015/lib/pricing/wholesale-pricing.service.js +0 -61
  416. package/esm2015/lib/product/index.js +0 -3
  417. package/esm2015/lib/product/list-products.js +0 -30
  418. package/esm2015/lib/product/product.js +0 -10
  419. package/esm2015/lib/product-summary/index.js +0 -3
  420. package/esm2015/lib/product-summary/product-summary.service.js +0 -42
  421. package/esm2015/lib/product-summary/subscription-retention.js +0 -19
  422. package/esm2015/lib/purchase/index.js +0 -4
  423. package/esm2015/lib/purchase/list-purchases.js +0 -17
  424. package/esm2015/lib/purchase/purchase.js +0 -79
  425. package/esm2015/lib/purchase/purchase.service.js +0 -31
  426. package/esm2015/lib/purchase/purchase_status.js +0 -26
  427. package/esm2015/lib/recurring_invoice/collection-method.js +0 -31
  428. package/esm2015/lib/recurring_invoice/index.js +0 -6
  429. package/esm2015/lib/recurring_invoice/interval.js +0 -42
  430. package/esm2015/lib/recurring_invoice/payment-processor.js +0 -32
  431. package/esm2015/lib/recurring_invoice/recurring-invoice.js +0 -123
  432. package/esm2015/lib/recurring_invoice/recurring-invoice.service.js +0 -64
  433. package/esm2015/lib/recurring_invoice/status.js +0 -37
  434. package/esm2015/lib/refund/index.js +0 -3
  435. package/esm2015/lib/refund/refund.js +0 -81
  436. package/esm2015/lib/refund/refund.service.js +0 -53
  437. package/esm2015/lib/retail-customer-configuration/index.js +0 -3
  438. package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.js +0 -44
  439. package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.service.js +0 -39
  440. package/esm2015/lib/revenue/index.js +0 -2
  441. package/esm2015/lib/revenue/revenue.interfaces.js +0 -2
  442. package/esm2015/lib/revenue/revenue.service.js +0 -34
  443. package/esm2015/lib/sales-credit-note/index.js +0 -3
  444. package/esm2015/lib/sales-credit-note/sales-credit-note.js +0 -53
  445. package/esm2015/lib/sales-credit-note/sales-credit-note.service.js +0 -72
  446. package/esm2015/lib/sales-invoice/index.js +0 -3
  447. package/esm2015/lib/sales-invoice/sales-invoice.js +0 -87
  448. package/esm2015/lib/sales-invoice/sales-invoice.service.js +0 -77
  449. package/esm2015/lib/sku.js +0 -4
  450. package/esm2015/lib/stripe-file/file.js +0 -2
  451. package/esm2015/lib/stripe-file/index.js +0 -3
  452. package/esm2015/lib/stripe-file/purpose.js +0 -13
  453. package/esm2015/lib/stripe-file/stripe-file.service.js +0 -35
  454. package/esm2015/lib/subscription/can-create-subscriptions-item.js +0 -2
  455. package/esm2015/lib/subscription/index.js +0 -2
  456. package/esm2015/lib/tax-rate/index.js +0 -2
  457. package/esm2015/lib/tax-rate/tax-rate.js +0 -13
  458. package/esm2015/lib/tax-rate/tax-rate.service.js +0 -86
  459. package/esm2015/public_api.js +0 -2
  460. package/esm2015/vendasta-billing.js +0 -5
  461. package/fesm2015/vendasta-billing.js.map +0 -1
  462. package/lib/applied_bundle/applied_bundle.d.ts +0 -15
  463. package/lib/applied_bundle/index.d.ts +0 -1
  464. package/lib/applied_discount/applied_discount.d.ts +0 -26
  465. package/lib/applied_discount/index.d.ts +0 -1
  466. package/lib/bank_account/bank-account.service.d.ts +0 -11
  467. package/lib/bank_account/bank_account.d.ts +0 -12
  468. package/lib/bank_account/index.d.ts +0 -3
  469. package/lib/bank_reconciliation/bank-reconciliation.service.d.ts +0 -10
  470. package/lib/bank_reconciliation/index.d.ts +0 -2
  471. package/lib/bank_reconciliation/payout.d.ts +0 -37
  472. package/lib/billable-item/billable-item.d.ts +0 -40
  473. package/lib/billable-item/billable-item.service.d.ts +0 -10
  474. package/lib/billable-item/index.d.ts +0 -2
  475. package/lib/billing-host.service.d.ts +0 -11
  476. package/lib/billing.service.d.ts +0 -88
  477. package/lib/bundle/bundle.d.ts +0 -26
  478. package/lib/bundle/bundle.service.d.ts +0 -14
  479. package/lib/bundle/index.d.ts +0 -2
  480. package/lib/contract/contract.d.ts +0 -20
  481. package/lib/contract/contract.service.d.ts +0 -23
  482. package/lib/contract/dimension.d.ts +0 -11
  483. package/lib/contract/index.d.ts +0 -5
  484. package/lib/contract/mutations.d.ts +0 -11
  485. package/lib/contract-document/contract-document.d.ts +0 -8
  486. package/lib/contract-document/contract-document.service.d.ts +0 -17
  487. package/lib/contract-document/index.d.ts +0 -3
  488. package/lib/contract-document/list-contract-document.d.ts +0 -3
  489. package/lib/core/index.d.ts +0 -2
  490. package/lib/core/paged-response.d.ts +0 -6
  491. package/lib/core/sort-direction.d.ts +0 -4
  492. package/lib/credit/credit.d.ts +0 -7
  493. package/lib/credit/credit.service.d.ts +0 -9
  494. package/lib/credit/index.d.ts +0 -2
  495. package/lib/customer_summary/customer-summary.d.ts +0 -9
  496. package/lib/discount/discount.d.ts +0 -17
  497. package/lib/discount/discount.service.d.ts +0 -15
  498. package/lib/discount/discount_type.d.ts +0 -9
  499. package/lib/discount/index.d.ts +0 -4
  500. package/lib/discount/list-discount.d.ts +0 -5
  501. package/lib/http-shared/error-handlers.d.ts +0 -4
  502. package/lib/invoice/index.d.ts +0 -3
  503. package/lib/invoice/invoice.d.ts +0 -86
  504. package/lib/invoice/invoice.service.d.ts +0 -40
  505. package/lib/invoice/list-invoice.d.ts +0 -15
  506. package/lib/invoice-template/index.d.ts +0 -2
  507. package/lib/invoice-template/invoice-template.d.ts +0 -35
  508. package/lib/invoice-template/invoice-template.service.d.ts +0 -14
  509. package/lib/merchant/balance.d.ts +0 -5
  510. package/lib/merchant/index.d.ts +0 -7
  511. package/lib/merchant/merchant.d.ts +0 -19
  512. package/lib/merchant/merchant.interface.d.ts +0 -3
  513. package/lib/merchant/merchant.service.d.ts +0 -59
  514. package/lib/merchant/payout-summary.d.ts +0 -19
  515. package/lib/merchant/retail-configuration.d.ts +0 -24
  516. package/lib/merchant-report/index.d.ts +0 -4
  517. package/lib/merchant-report/merchant-report-status.d.ts +0 -1
  518. package/lib/merchant-report/merchant-report.d.ts +0 -8
  519. package/lib/merchant-report/merchant-report.interfaces.d.ts +0 -5
  520. package/lib/merchant-report/merchant-report.service.d.ts +0 -12
  521. package/lib/payment/dispute.d.ts +0 -61
  522. package/lib/payment/index.d.ts +0 -9
  523. package/lib/payment/payment-allocation-type.d.ts +0 -7
  524. package/lib/payment/payment-source.d.ts +0 -7
  525. package/lib/payment/payment-status.d.ts +0 -7
  526. package/lib/payment/payment.d.ts +0 -42
  527. package/lib/payment/payment.service.d.ts +0 -24
  528. package/lib/payment/retail-payment.d.ts +0 -33
  529. package/lib/payment/retail-status.d.ts +0 -24
  530. package/lib/payment-card/index.d.ts +0 -2
  531. package/lib/payment-card/payment-card.d.ts +0 -41
  532. package/lib/payment-card/payment-card.service.d.ts +0 -13
  533. package/lib/payment-method/index.d.ts +0 -1
  534. package/lib/payment-method/payment-method.service.d.ts +0 -10
  535. package/lib/pricing/billing-strategy.d.ts +0 -11
  536. package/lib/pricing/commitment.d.ts +0 -6
  537. package/lib/pricing/currency.d.ts +0 -29
  538. package/lib/pricing/frequency.d.ts +0 -10
  539. package/lib/pricing/index.d.ts +0 -11
  540. package/lib/pricing/list-pricing-plan-product-filter.d.ts +0 -4
  541. package/lib/pricing/pricing-plan-product.d.ts +0 -34
  542. package/lib/pricing/pricing-plan.d.ts +0 -13
  543. package/lib/pricing/pricing-plan.service.d.ts +0 -17
  544. package/lib/pricing/product-pricing-rules.d.ts +0 -7
  545. package/lib/pricing/product-pricing-type.d.ts +0 -9
  546. package/lib/pricing/product-pricing.d.ts +0 -37
  547. package/lib/pricing/wholesale-pricing.service.d.ts +0 -19
  548. package/lib/product/index.d.ts +0 -2
  549. package/lib/product/list-products.d.ts +0 -16
  550. package/lib/product/product.d.ts +0 -9
  551. package/lib/product-summary/index.d.ts +0 -2
  552. package/lib/product-summary/product-summary.service.d.ts +0 -10
  553. package/lib/product-summary/subscription-retention.d.ts +0 -20
  554. package/lib/purchase/index.d.ts +0 -4
  555. package/lib/purchase/list-purchases.d.ts +0 -27
  556. package/lib/purchase/purchase.d.ts +0 -56
  557. package/lib/purchase/purchase.service.d.ts +0 -10
  558. package/lib/purchase/purchase_status.d.ts +0 -10
  559. package/lib/recurring_invoice/collection-method.d.ts +0 -4
  560. package/lib/recurring_invoice/index.d.ts +0 -5
  561. package/lib/recurring_invoice/interval.d.ts +0 -10
  562. package/lib/recurring_invoice/payment-processor.d.ts +0 -8
  563. package/lib/recurring_invoice/recurring-invoice.d.ts +0 -62
  564. package/lib/recurring_invoice/recurring-invoice.service.d.ts +0 -14
  565. package/lib/recurring_invoice/status.d.ts +0 -9
  566. package/lib/refund/index.d.ts +0 -2
  567. package/lib/refund/refund.d.ts +0 -36
  568. package/lib/refund/refund.service.d.ts +0 -11
  569. package/lib/retail-customer-configuration/index.d.ts +0 -2
  570. package/lib/retail-customer-configuration/retail-customer-configuration.d.ts +0 -20
  571. package/lib/retail-customer-configuration/retail-customer-configuration.service.d.ts +0 -9
  572. package/lib/revenue/index.d.ts +0 -2
  573. package/lib/revenue/revenue.interfaces.d.ts +0 -3
  574. package/lib/revenue/revenue.service.d.ts +0 -11
  575. package/lib/sales-credit-note/index.d.ts +0 -2
  576. package/lib/sales-credit-note/sales-credit-note.d.ts +0 -30
  577. package/lib/sales-credit-note/sales-credit-note.service.d.ts +0 -16
  578. package/lib/sales-invoice/index.d.ts +0 -2
  579. package/lib/sales-invoice/sales-invoice.d.ts +0 -42
  580. package/lib/sales-invoice/sales-invoice.service.d.ts +0 -16
  581. package/lib/sku.d.ts +0 -3
  582. package/lib/stripe-file/file.d.ts +0 -6
  583. package/lib/stripe-file/index.d.ts +0 -3
  584. package/lib/stripe-file/purpose.d.ts +0 -11
  585. package/lib/stripe-file/stripe-file.service.d.ts +0 -12
  586. package/lib/subscription/can-create-subscriptions-item.d.ts +0 -6
  587. package/lib/subscription/index.d.ts +0 -1
  588. package/lib/tax-rate/index.d.ts +0 -2
  589. package/lib/tax-rate/tax-rate.d.ts +0 -20
  590. package/lib/tax-rate/tax-rate.service.d.ts +0 -15
  591. package/vendasta-billing.metadata.json +0 -1
@@ -0,0 +1,562 @@
1
+ import { PagedRequestOptions, PagedResponseMetadata } from './common';
2
+ import * as e from '../enums';
3
+ export function enumStringToValue(enumRef, value) {
4
+ if (typeof value === 'number') {
5
+ return value;
6
+ }
7
+ return enumRef[value];
8
+ }
9
+ export class BillItemRequest {
10
+ constructor(kwargs) {
11
+ if (!kwargs) {
12
+ return;
13
+ }
14
+ Object.assign(this, kwargs);
15
+ }
16
+ static fromProto(proto) {
17
+ let m = new BillItemRequest();
18
+ m = Object.assign(m, proto);
19
+ if (proto.billingStart) {
20
+ m.billingStart = new Date(proto.billingStart);
21
+ }
22
+ if (proto.proratedTo) {
23
+ m.proratedTo = new Date(proto.proratedTo);
24
+ }
25
+ return m;
26
+ }
27
+ toApiJson() {
28
+ const toReturn = {};
29
+ if (typeof this.merchantId !== 'undefined') {
30
+ toReturn['merchantId'] = this.merchantId;
31
+ }
32
+ if (typeof this.sku !== 'undefined') {
33
+ toReturn['sku'] = this.sku;
34
+ }
35
+ if (typeof this.customerId !== 'undefined') {
36
+ toReturn['customerId'] = this.customerId;
37
+ }
38
+ if (typeof this.orderId !== 'undefined') {
39
+ toReturn['orderId'] = this.orderId;
40
+ }
41
+ if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {
42
+ toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;
43
+ }
44
+ if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {
45
+ toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;
46
+ }
47
+ return toReturn;
48
+ }
49
+ }
50
+ export class BillMultipleItemsRequest {
51
+ constructor(kwargs) {
52
+ if (!kwargs) {
53
+ return;
54
+ }
55
+ Object.assign(this, kwargs);
56
+ }
57
+ static fromProto(proto) {
58
+ let m = new BillMultipleItemsRequest();
59
+ m = Object.assign(m, proto);
60
+ if (proto.items) {
61
+ m.items = proto.items.map(Item.fromProto);
62
+ }
63
+ return m;
64
+ }
65
+ toApiJson() {
66
+ const toReturn = {};
67
+ if (typeof this.merchantId !== 'undefined') {
68
+ toReturn['merchantId'] = this.merchantId;
69
+ }
70
+ if (typeof this.items !== 'undefined' && this.items !== null) {
71
+ toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;
72
+ }
73
+ return toReturn;
74
+ }
75
+ }
76
+ export class BillMultipleItemsResponse {
77
+ constructor(kwargs) {
78
+ if (!kwargs) {
79
+ return;
80
+ }
81
+ Object.assign(this, kwargs);
82
+ }
83
+ static fromProto(proto) {
84
+ let m = new BillMultipleItemsResponse();
85
+ m = Object.assign(m, proto);
86
+ return m;
87
+ }
88
+ toApiJson() {
89
+ const toReturn = {};
90
+ if (typeof this.id !== 'undefined') {
91
+ toReturn['id'] = this.id;
92
+ }
93
+ return toReturn;
94
+ }
95
+ }
96
+ export class BillableItem {
97
+ constructor(kwargs) {
98
+ if (!kwargs) {
99
+ return;
100
+ }
101
+ Object.assign(this, kwargs);
102
+ }
103
+ static fromProto(proto) {
104
+ let m = new BillableItem();
105
+ m = Object.assign(m, proto);
106
+ if (proto.expiry) {
107
+ m.expiry = new Date(proto.expiry);
108
+ }
109
+ if (proto.billingStart) {
110
+ m.billingStart = new Date(proto.billingStart);
111
+ }
112
+ if (proto.created) {
113
+ m.created = new Date(proto.created);
114
+ }
115
+ if (proto.updated) {
116
+ m.updated = new Date(proto.updated);
117
+ }
118
+ if (proto.frequency) {
119
+ m.frequency = enumStringToValue(e.Frequency, proto.frequency);
120
+ }
121
+ if (proto.nextRenewal) {
122
+ m.nextRenewal = new Date(proto.nextRenewal);
123
+ }
124
+ if (proto.customerAddress) {
125
+ m.customerAddress = BillableItemCustomerAddress.fromProto(proto.customerAddress);
126
+ }
127
+ if (proto.customUnitPrice) {
128
+ m.customUnitPrice = parseInt(proto.customUnitPrice, 10);
129
+ }
130
+ if (proto.retailFrequency) {
131
+ m.retailFrequency = enumStringToValue(e.Frequency, proto.retailFrequency);
132
+ }
133
+ if (proto.nextRetailRenewal) {
134
+ m.nextRetailRenewal = new Date(proto.nextRetailRenewal);
135
+ }
136
+ if (proto.retailUnitPrice) {
137
+ m.retailUnitPrice = parseInt(proto.retailUnitPrice, 10);
138
+ }
139
+ return m;
140
+ }
141
+ toApiJson() {
142
+ const toReturn = {};
143
+ if (typeof this.merchantId !== 'undefined') {
144
+ toReturn['merchantId'] = this.merchantId;
145
+ }
146
+ if (typeof this.sku !== 'undefined') {
147
+ toReturn['sku'] = this.sku;
148
+ }
149
+ if (typeof this.customerId !== 'undefined') {
150
+ toReturn['customerId'] = this.customerId;
151
+ }
152
+ if (typeof this.orderId !== 'undefined') {
153
+ toReturn['orderId'] = this.orderId;
154
+ }
155
+ if (typeof this.expiry !== 'undefined' && this.expiry !== null) {
156
+ toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;
157
+ }
158
+ if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {
159
+ toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;
160
+ }
161
+ if (typeof this.created !== 'undefined' && this.created !== null) {
162
+ toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
163
+ }
164
+ if (typeof this.updated !== 'undefined' && this.updated !== null) {
165
+ toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;
166
+ }
167
+ if (typeof this.frequency !== 'undefined') {
168
+ toReturn['frequency'] = this.frequency;
169
+ }
170
+ if (typeof this.nextRenewal !== 'undefined' && this.nextRenewal !== null) {
171
+ toReturn['nextRenewal'] = 'toApiJson' in this.nextRenewal ? this.nextRenewal.toApiJson() : this.nextRenewal;
172
+ }
173
+ if (typeof this.customerName !== 'undefined') {
174
+ toReturn['customerName'] = this.customerName;
175
+ }
176
+ if (typeof this.productName !== 'undefined') {
177
+ toReturn['productName'] = this.productName;
178
+ }
179
+ if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {
180
+ toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;
181
+ }
182
+ if (typeof this.customUnitPrice !== 'undefined') {
183
+ toReturn['customUnitPrice'] = this.customUnitPrice;
184
+ }
185
+ if (typeof this.retailFrequency !== 'undefined') {
186
+ toReturn['retailFrequency'] = this.retailFrequency;
187
+ }
188
+ if (typeof this.nextRetailRenewal !== 'undefined' && this.nextRetailRenewal !== null) {
189
+ toReturn['nextRetailRenewal'] = 'toApiJson' in this.nextRetailRenewal ? this.nextRetailRenewal.toApiJson() : this.nextRetailRenewal;
190
+ }
191
+ if (typeof this.retailUnitPrice !== 'undefined') {
192
+ toReturn['retailUnitPrice'] = this.retailUnitPrice;
193
+ }
194
+ return toReturn;
195
+ }
196
+ }
197
+ export class CanBillItemRequest {
198
+ constructor(kwargs) {
199
+ if (!kwargs) {
200
+ return;
201
+ }
202
+ Object.assign(this, kwargs);
203
+ }
204
+ static fromProto(proto) {
205
+ let m = new CanBillItemRequest();
206
+ m = Object.assign(m, proto);
207
+ return m;
208
+ }
209
+ toApiJson() {
210
+ const toReturn = {};
211
+ if (typeof this.merchantId !== 'undefined') {
212
+ toReturn['merchantId'] = this.merchantId;
213
+ }
214
+ if (typeof this.sku !== 'undefined') {
215
+ toReturn['sku'] = this.sku;
216
+ }
217
+ return toReturn;
218
+ }
219
+ }
220
+ export class BillableItemCustomerAddress {
221
+ constructor(kwargs) {
222
+ if (!kwargs) {
223
+ return;
224
+ }
225
+ Object.assign(this, kwargs);
226
+ }
227
+ static fromProto(proto) {
228
+ let m = new BillableItemCustomerAddress();
229
+ m = Object.assign(m, proto);
230
+ return m;
231
+ }
232
+ toApiJson() {
233
+ const toReturn = {};
234
+ if (typeof this.address !== 'undefined') {
235
+ toReturn['address'] = this.address;
236
+ }
237
+ if (typeof this.city !== 'undefined') {
238
+ toReturn['city'] = this.city;
239
+ }
240
+ if (typeof this.state !== 'undefined') {
241
+ toReturn['state'] = this.state;
242
+ }
243
+ if (typeof this.zip !== 'undefined') {
244
+ toReturn['zip'] = this.zip;
245
+ }
246
+ if (typeof this.country !== 'undefined') {
247
+ toReturn['country'] = this.country;
248
+ }
249
+ return toReturn;
250
+ }
251
+ }
252
+ export class DeleteBillableItemRequest {
253
+ constructor(kwargs) {
254
+ if (!kwargs) {
255
+ return;
256
+ }
257
+ Object.assign(this, kwargs);
258
+ }
259
+ static fromProto(proto) {
260
+ let m = new DeleteBillableItemRequest();
261
+ m = Object.assign(m, proto);
262
+ return m;
263
+ }
264
+ toApiJson() {
265
+ const toReturn = {};
266
+ if (typeof this.merchantId !== 'undefined') {
267
+ toReturn['merchantId'] = this.merchantId;
268
+ }
269
+ if (typeof this.sku !== 'undefined') {
270
+ toReturn['sku'] = this.sku;
271
+ }
272
+ if (typeof this.customerId !== 'undefined') {
273
+ toReturn['customerId'] = this.customerId;
274
+ }
275
+ if (typeof this.orderId !== 'undefined') {
276
+ toReturn['orderId'] = this.orderId;
277
+ }
278
+ return toReturn;
279
+ }
280
+ }
281
+ export class ExpireBillableItemRequest {
282
+ constructor(kwargs) {
283
+ if (!kwargs) {
284
+ return;
285
+ }
286
+ Object.assign(this, kwargs);
287
+ }
288
+ static fromProto(proto) {
289
+ let m = new ExpireBillableItemRequest();
290
+ m = Object.assign(m, proto);
291
+ if (proto.expiry) {
292
+ m.expiry = new Date(proto.expiry);
293
+ }
294
+ return m;
295
+ }
296
+ toApiJson() {
297
+ const toReturn = {};
298
+ if (typeof this.merchantId !== 'undefined') {
299
+ toReturn['merchantId'] = this.merchantId;
300
+ }
301
+ if (typeof this.sku !== 'undefined') {
302
+ toReturn['sku'] = this.sku;
303
+ }
304
+ if (typeof this.customerId !== 'undefined') {
305
+ toReturn['customerId'] = this.customerId;
306
+ }
307
+ if (typeof this.orderId !== 'undefined') {
308
+ toReturn['orderId'] = this.orderId;
309
+ }
310
+ if (typeof this.expiry !== 'undefined' && this.expiry !== null) {
311
+ toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;
312
+ }
313
+ return toReturn;
314
+ }
315
+ }
316
+ export class ListBillableItemsRequestFilters {
317
+ constructor(kwargs) {
318
+ if (!kwargs) {
319
+ return;
320
+ }
321
+ Object.assign(this, kwargs);
322
+ }
323
+ static fromProto(proto) {
324
+ let m = new ListBillableItemsRequestFilters();
325
+ m = Object.assign(m, proto);
326
+ return m;
327
+ }
328
+ toApiJson() {
329
+ const toReturn = {};
330
+ if (typeof this.skus !== 'undefined') {
331
+ toReturn['skus'] = this.skus;
332
+ }
333
+ if (typeof this.merchantId !== 'undefined') {
334
+ toReturn['merchantId'] = this.merchantId;
335
+ }
336
+ if (typeof this.customerId !== 'undefined') {
337
+ toReturn['customerId'] = this.customerId;
338
+ }
339
+ return toReturn;
340
+ }
341
+ }
342
+ export class GetBillableItemRequest {
343
+ constructor(kwargs) {
344
+ if (!kwargs) {
345
+ return;
346
+ }
347
+ Object.assign(this, kwargs);
348
+ }
349
+ static fromProto(proto) {
350
+ let m = new GetBillableItemRequest();
351
+ m = Object.assign(m, proto);
352
+ return m;
353
+ }
354
+ toApiJson() {
355
+ const toReturn = {};
356
+ if (typeof this.merchantId !== 'undefined') {
357
+ toReturn['merchantId'] = this.merchantId;
358
+ }
359
+ if (typeof this.sku !== 'undefined') {
360
+ toReturn['sku'] = this.sku;
361
+ }
362
+ if (typeof this.customerId !== 'undefined') {
363
+ toReturn['customerId'] = this.customerId;
364
+ }
365
+ if (typeof this.orderId !== 'undefined') {
366
+ toReturn['orderId'] = this.orderId;
367
+ }
368
+ return toReturn;
369
+ }
370
+ }
371
+ export class GetBillableItemResponse {
372
+ constructor(kwargs) {
373
+ if (!kwargs) {
374
+ return;
375
+ }
376
+ Object.assign(this, kwargs);
377
+ }
378
+ static fromProto(proto) {
379
+ let m = new GetBillableItemResponse();
380
+ m = Object.assign(m, proto);
381
+ if (proto.item) {
382
+ m.item = BillableItem.fromProto(proto.item);
383
+ }
384
+ return m;
385
+ }
386
+ toApiJson() {
387
+ const toReturn = {};
388
+ if (typeof this.item !== 'undefined' && this.item !== null) {
389
+ toReturn['item'] = 'toApiJson' in this.item ? this.item.toApiJson() : this.item;
390
+ }
391
+ return toReturn;
392
+ }
393
+ }
394
+ export class GetMultiSubscriptionsRequest {
395
+ constructor(kwargs) {
396
+ if (!kwargs) {
397
+ return;
398
+ }
399
+ Object.assign(this, kwargs);
400
+ }
401
+ static fromProto(proto) {
402
+ let m = new GetMultiSubscriptionsRequest();
403
+ m = Object.assign(m, proto);
404
+ if (proto.subscriptionKeys) {
405
+ m.subscriptionKeys = proto.subscriptionKeys.map(GetMultiSubscriptionsRequestKey.fromProto);
406
+ }
407
+ return m;
408
+ }
409
+ toApiJson() {
410
+ const toReturn = {};
411
+ if (typeof this.subscriptionKeys !== 'undefined' && this.subscriptionKeys !== null) {
412
+ toReturn['subscriptionKeys'] = 'toApiJson' in this.subscriptionKeys ? this.subscriptionKeys.toApiJson() : this.subscriptionKeys;
413
+ }
414
+ return toReturn;
415
+ }
416
+ }
417
+ export class GetMultiSubscriptionsResponse {
418
+ constructor(kwargs) {
419
+ if (!kwargs) {
420
+ return;
421
+ }
422
+ Object.assign(this, kwargs);
423
+ }
424
+ static fromProto(proto) {
425
+ let m = new GetMultiSubscriptionsResponse();
426
+ m = Object.assign(m, proto);
427
+ if (proto.subscriptions) {
428
+ m.subscriptions = proto.subscriptions.map(BillableItem.fromProto);
429
+ }
430
+ return m;
431
+ }
432
+ toApiJson() {
433
+ const toReturn = {};
434
+ if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {
435
+ toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;
436
+ }
437
+ return toReturn;
438
+ }
439
+ }
440
+ export class Item {
441
+ constructor(kwargs) {
442
+ if (!kwargs) {
443
+ return;
444
+ }
445
+ Object.assign(this, kwargs);
446
+ }
447
+ static fromProto(proto) {
448
+ let m = new Item();
449
+ m = Object.assign(m, proto);
450
+ if (proto.billingStart) {
451
+ m.billingStart = new Date(proto.billingStart);
452
+ }
453
+ return m;
454
+ }
455
+ toApiJson() {
456
+ const toReturn = {};
457
+ if (typeof this.sku !== 'undefined') {
458
+ toReturn['sku'] = this.sku;
459
+ }
460
+ if (typeof this.customerId !== 'undefined') {
461
+ toReturn['customerId'] = this.customerId;
462
+ }
463
+ if (typeof this.orderId !== 'undefined') {
464
+ toReturn['orderId'] = this.orderId;
465
+ }
466
+ if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {
467
+ toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;
468
+ }
469
+ return toReturn;
470
+ }
471
+ }
472
+ export class GetMultiSubscriptionsRequestKey {
473
+ constructor(kwargs) {
474
+ if (!kwargs) {
475
+ return;
476
+ }
477
+ Object.assign(this, kwargs);
478
+ }
479
+ static fromProto(proto) {
480
+ let m = new GetMultiSubscriptionsRequestKey();
481
+ m = Object.assign(m, proto);
482
+ return m;
483
+ }
484
+ toApiJson() {
485
+ const toReturn = {};
486
+ if (typeof this.merchantId !== 'undefined') {
487
+ toReturn['merchantId'] = this.merchantId;
488
+ }
489
+ if (typeof this.sku !== 'undefined') {
490
+ toReturn['sku'] = this.sku;
491
+ }
492
+ if (typeof this.customerId !== 'undefined') {
493
+ toReturn['customerId'] = this.customerId;
494
+ }
495
+ if (typeof this.orderId !== 'undefined') {
496
+ toReturn['orderId'] = this.orderId;
497
+ }
498
+ return toReturn;
499
+ }
500
+ }
501
+ export class ListBillableItemsRequest {
502
+ constructor(kwargs) {
503
+ if (!kwargs) {
504
+ return;
505
+ }
506
+ Object.assign(this, kwargs);
507
+ }
508
+ static fromProto(proto) {
509
+ let m = new ListBillableItemsRequest();
510
+ m = Object.assign(m, proto);
511
+ if (proto.filters) {
512
+ m.filters = ListBillableItemsRequestFilters.fromProto(proto.filters);
513
+ }
514
+ if (proto.pagingOptions) {
515
+ m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
516
+ }
517
+ return m;
518
+ }
519
+ toApiJson() {
520
+ const toReturn = {};
521
+ if (typeof this.filters !== 'undefined' && this.filters !== null) {
522
+ toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;
523
+ }
524
+ if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
525
+ toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
526
+ }
527
+ if (typeof this.searchTerm !== 'undefined') {
528
+ toReturn['searchTerm'] = this.searchTerm;
529
+ }
530
+ return toReturn;
531
+ }
532
+ }
533
+ export class ListBillableItemsResponse {
534
+ constructor(kwargs) {
535
+ if (!kwargs) {
536
+ return;
537
+ }
538
+ Object.assign(this, kwargs);
539
+ }
540
+ static fromProto(proto) {
541
+ let m = new ListBillableItemsResponse();
542
+ m = Object.assign(m, proto);
543
+ if (proto.items) {
544
+ m.items = proto.items.map(BillableItem.fromProto);
545
+ }
546
+ if (proto.pagingMetadata) {
547
+ m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);
548
+ }
549
+ return m;
550
+ }
551
+ toApiJson() {
552
+ const toReturn = {};
553
+ if (typeof this.items !== 'undefined' && this.items !== null) {
554
+ toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;
555
+ }
556
+ if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {
557
+ toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;
558
+ }
559
+ return toReturn;
560
+ }
561
+ }
562
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGFibGUtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvYmlsbGFibGUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEUsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFnQnhCLFlBQVksTUFBbUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFiRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FBQztRQUN4RSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFBQyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUFDO1FBQ2xFLE9BQU8sQ0FBQyxDQUFD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QUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxjQUFzQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQUM7UUFDbk4sT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQmlsbEl0ZW1SZXF1ZXN0IGltcGxlbWVudHMgaS5CaWxsSXRlbVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBza3U6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIGJpbGxpbmdTdGFydDogRGF0ZTtcbiAgICBwcm9yYXRlZFRvOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQmlsbEl0ZW1SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQmlsbEl0ZW1SZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmJpbGxpbmdTdGFydCkge20uYmlsbGluZ1N0YXJ0ID0gbmV3IERhdGUocHJvdG8uYmlsbGluZ1N0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by5wcm9yYXRlZFRvKSB7bS5wcm9yYXRlZFRvID0gbmV3IERhdGUocHJvdG8ucHJvcmF0ZWRUbyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJpbGxJdGVtUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NrdSddID0gdGhpcy5za3U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9tZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tZXJJZCddID0gdGhpcy5jdXN0b21lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZGVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yZGVySWQnXSA9IHRoaXMub3JkZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5iaWxsaW5nU3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYmlsbGluZ1N0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2JpbGxpbmdTdGFydCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5iaWxsaW5nU3RhcnQgPyAodGhpcy5iaWxsaW5nU3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYmlsbGluZ1N0YXJ0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3JhdGVkVG8gIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHJvcmF0ZWRUbyAhPT0gbnVsbCkge3RvUmV0dXJuWydwcm9yYXRlZFRvJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnByb3JhdGVkVG8gPyAodGhpcy5wcm9yYXRlZFRvIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnByb3JhdGVkVG87fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0IGltcGxlbWVudHMgaS5CaWxsTXVsdGlwbGVJdGVtc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBpdGVtczogSXRlbVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLml0ZW1zKSB7bS5pdGVtcyA9IHByb3RvLml0ZW1zLm1hcChJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJpbGxNdWx0aXBsZUl0ZW1zUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pdGVtcyAhPT0gbnVsbCkge3RvUmV0dXJuWydpdGVtcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5pdGVtcyA/ICh0aGlzLml0ZW1zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLml0ZW1zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbGxNdWx0aXBsZUl0ZW1zUmVzcG9uc2UgaW1wbGVtZW50cyBpLkJpbGxNdWx0aXBsZUl0ZW1zUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCaWxsTXVsdGlwbGVJdGVtc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQmlsbE11bHRpcGxlSXRlbXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQmlsbE11bHRpcGxlSXRlbXNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaWxsYWJsZUl0ZW0gaW1wbGVtZW50cyBpLkJpbGxhYmxlSXRlbUludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG4gICAgZXhwaXJ5OiBEYXRlO1xuICAgIGJpbGxpbmdTdGFydDogRGF0ZTtcbiAgICBjcmVhdGVkOiBEYXRlO1xuICAgIHVwZGF0ZWQ6IERhdGU7XG4gICAgZnJlcXVlbmN5OiBlLkZyZXF1ZW5jeTtcbiAgICBuZXh0UmVuZXdhbDogRGF0ZTtcbiAgICBjdXN0b21lck5hbWU6IHN0cmluZztcbiAgICBwcm9kdWN0TmFtZTogc3RyaW5nO1xuICAgIGN1c3RvbWVyQWRkcmVzczogQmlsbGFibGVJdGVtQ3VzdG9tZXJBZGRyZXNzO1xuICAgIGN1c3RvbVVuaXRQcmljZTogbnVtYmVyO1xuICAgIHJldGFpbEZyZXF1ZW5jeTogZS5GcmVxdWVuY3k7XG4gICAgbmV4dFJldGFpbFJlbmV3YWw6IERhdGU7XG4gICAgcmV0YWlsVW5pdFByaWNlOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCaWxsYWJsZUl0ZW0ge1xuICAgICAgICBsZXQgbSA9IG5ldyBCaWxsYWJsZUl0ZW0oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZXhwaXJ5KSB7bS5leHBpcnkgPSBuZXcgRGF0ZShwcm90by5leHBpcnkpO31cbiAgICAgICAgaWYgKHByb3RvLmJpbGxpbmdTdGFydCkge20uYmlsbGluZ1N0YXJ0ID0gbmV3IERhdGUocHJvdG8uYmlsbGluZ1N0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVkKSB7bS5jcmVhdGVkID0gbmV3IERhdGUocHJvdG8uY3JlYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8udXBkYXRlZCkge20udXBkYXRlZCA9IG5ldyBEYXRlKHByb3RvLnVwZGF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLmZyZXF1ZW5jeSkge20uZnJlcXVlbmN5ID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5GcmVxdWVuY3k+KGUuRnJlcXVlbmN5LCBwcm90by5mcmVxdWVuY3kpO31cbiAgICAgICAgaWYgKHByb3RvLm5leHRSZW5ld2FsKSB7bS5uZXh0UmVuZXdhbCA9IG5ldyBEYXRlKHByb3RvLm5leHRSZW5ld2FsKTt9XG4gICAgICAgIGlmIChwcm90by5jdXN0b21lckFkZHJlc3MpIHttLmN1c3RvbWVyQWRkcmVzcyA9IEJpbGxhYmxlSXRlbUN1c3RvbWVyQWRkcmVzcy5mcm9tUHJvdG8ocHJvdG8uY3VzdG9tZXJBZGRyZXNzKTt9XG4gICAgICAgIGlmIChwcm90by5jdXN0b21Vbml0UHJpY2UpIHttLmN1c3RvbVVuaXRQcmljZSA9IHBhcnNlSW50KHByb3RvLmN1c3RvbVVuaXRQcmljZSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJldGFpbEZyZXF1ZW5jeSkge20ucmV0YWlsRnJlcXVlbmN5ID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5GcmVxdWVuY3k+KGUuRnJlcXVlbmN5LCBwcm90by5yZXRhaWxGcmVxdWVuY3kpO31cbiAgICAgICAgaWYgKHByb3RvLm5leHRSZXRhaWxSZW5ld2FsKSB7bS5uZXh0UmV0YWlsUmVuZXdhbCA9IG5ldyBEYXRlKHByb3RvLm5leHRSZXRhaWxSZW5ld2FsKTt9XG4gICAgICAgIGlmIChwcm90by5yZXRhaWxVbml0UHJpY2UpIHttLnJldGFpbFVuaXRQcmljZSA9IHBhcnNlSW50KHByb3RvLnJldGFpbFVuaXRQcmljZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CaWxsYWJsZUl0ZW1JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2t1ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza3UnXSA9IHRoaXMuc2t1O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmRlcklkJ10gPSB0aGlzLm9yZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXhwaXJ5ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmV4cGlyeSAhPT0gbnVsbCkge3RvUmV0dXJuWydleHBpcnknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXhwaXJ5ID8gKHRoaXMuZXhwaXJ5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmV4cGlyeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5iaWxsaW5nU3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYmlsbGluZ1N0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2JpbGxpbmdTdGFydCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5iaWxsaW5nU3RhcnQgPyAodGhpcy5iaWxsaW5nU3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYmlsbGluZ1N0YXJ0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mcmVxdWVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZyZXF1ZW5jeSddID0gdGhpcy5mcmVxdWVuY3k7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmV4dFJlbmV3YWwgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubmV4dFJlbmV3YWwgIT09IG51bGwpIHt0b1JldHVyblsnbmV4dFJlbmV3YWwnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubmV4dFJlbmV3YWwgPyAodGhpcy5uZXh0UmVuZXdhbCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5uZXh0UmVuZXdhbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lck5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVyTmFtZSddID0gdGhpcy5jdXN0b21lck5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvZHVjdE5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Byb2R1Y3ROYW1lJ10gPSB0aGlzLnByb2R1Y3ROYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVyQWRkcmVzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jdXN0b21lckFkZHJlc3MgIT09IG51bGwpIHt0b1JldHVyblsnY3VzdG9tZXJBZGRyZXNzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmN1c3RvbWVyQWRkcmVzcyA/ICh0aGlzLmN1c3RvbWVyQWRkcmVzcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jdXN0b21lckFkZHJlc3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9tVW5pdFByaWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21Vbml0UHJpY2UnXSA9IHRoaXMuY3VzdG9tVW5pdFByaWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldGFpbEZyZXF1ZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmV0YWlsRnJlcXVlbmN5J10gPSB0aGlzLnJldGFpbEZyZXF1ZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXh0UmV0YWlsUmVuZXdhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5uZXh0UmV0YWlsUmVuZXdhbCAhPT0gbnVsbCkge3RvUmV0dXJuWyduZXh0UmV0YWlsUmVuZXdhbCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5uZXh0UmV0YWlsUmVuZXdhbCA/ICh0aGlzLm5leHRSZXRhaWxSZW5ld2FsIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm5leHRSZXRhaWxSZW5ld2FsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldGFpbFVuaXRQcmljZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmV0YWlsVW5pdFByaWNlJ10gPSB0aGlzLnJldGFpbFVuaXRQcmljZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5CaWxsSXRlbVJlcXVlc3QgaW1wbGVtZW50cyBpLkNhbkJpbGxJdGVtUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2FuQmlsbEl0ZW1SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2FuQmlsbEl0ZW1SZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DYW5CaWxsSXRlbVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2t1ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza3UnXSA9IHRoaXMuc2t1O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbGxhYmxlSXRlbUN1c3RvbWVyQWRkcmVzcyBpbXBsZW1lbnRzIGkuQmlsbGFibGVJdGVtQ3VzdG9tZXJBZGRyZXNzSW50ZXJmYWNlIHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgY2l0eTogc3RyaW5nO1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgemlwOiBzdHJpbmc7XG4gICAgY291bnRyeTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQmlsbGFibGVJdGVtQ3VzdG9tZXJBZGRyZXNzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQmlsbGFibGVJdGVtQ3VzdG9tZXJBZGRyZXNzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CaWxsYWJsZUl0ZW1DdXN0b21lckFkZHJlc3NJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hZGRyZXNzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhZGRyZXNzJ10gPSB0aGlzLmFkZHJlc3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2l0eSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2l0eSddID0gdGhpcy5jaXR5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0ZSddID0gdGhpcy5zdGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy56aXAgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ppcCddID0gdGhpcy56aXA7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY291bnRyeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY291bnRyeSddID0gdGhpcy5jb3VudHJ5O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3QgaW1wbGVtZW50cyBpLkRlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBza3U6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRGVsZXRlQmlsbGFibGVJdGVtUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkRlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2t1ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza3UnXSA9IHRoaXMuc2t1O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmRlcklkJ10gPSB0aGlzLm9yZGVySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdCBpbXBsZW1lbnRzIGkuRXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG4gICAgZXhwaXJ5OiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEV4cGlyZUJpbGxhYmxlSXRlbVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZXhwaXJ5KSB7bS5leHBpcnkgPSBuZXcgRGF0ZShwcm90by5leHBpcnkpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5FeHBpcmVCaWxsYWJsZUl0ZW1SZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV4cGlyeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5leHBpcnkgIT09IG51bGwpIHt0b1JldHVyblsnZXhwaXJ5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmV4cGlyeSA/ICh0aGlzLmV4cGlyeSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5leHBpcnk7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0RmlsdGVycyBpbXBsZW1lbnRzIGkuTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSB7XG4gICAgc2t1czogc3RyaW5nW107XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdEZpbHRlcnMge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0QmlsbGFibGVJdGVtc1JlcXVlc3RGaWx0ZXJzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QmlsbGFibGVJdGVtc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2t1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1cyddID0gdGhpcy5za3VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0QmlsbGFibGVJdGVtUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0QmlsbGFibGVJdGVtUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0QmlsbGFibGVJdGVtUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0QmlsbGFibGVJdGVtUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NrdSddID0gdGhpcy5za3U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9tZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tZXJJZCddID0gdGhpcy5jdXN0b21lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZGVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yZGVySWQnXSA9IHRoaXMub3JkZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRCaWxsYWJsZUl0ZW1SZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0QmlsbGFibGVJdGVtUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGl0ZW06IEJpbGxhYmxlSXRlbTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldEJpbGxhYmxlSXRlbVJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0QmlsbGFibGVJdGVtUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uaXRlbSkge20uaXRlbSA9IEJpbGxhYmxlSXRlbS5mcm9tUHJvdG8ocHJvdG8uaXRlbSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldEJpbGxhYmxlSXRlbVJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pdGVtICE9PSBudWxsKSB7dG9SZXR1cm5bJ2l0ZW0nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaXRlbSA/ICh0aGlzLml0ZW0gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaXRlbTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25LZXlzOiBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0S2V5W107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdWJzY3JpcHRpb25LZXlzKSB7bS5zdWJzY3JpcHRpb25LZXlzID0gcHJvdG8uc3Vic2NyaXB0aW9uS2V5cy5tYXAoR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdEtleS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3Vic2NyaXB0aW9uS2V5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdWJzY3JpcHRpb25LZXlzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YnNjcmlwdGlvbktleXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3Vic2NyaXB0aW9uS2V5cyA/ICh0aGlzLnN1YnNjcmlwdGlvbktleXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3Vic2NyaXB0aW9uS2V5czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHN1YnNjcmlwdGlvbnM6IEJpbGxhYmxlSXRlbVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdWJzY3JpcHRpb25zKSB7bS5zdWJzY3JpcHRpb25zID0gcHJvdG8uc3Vic2NyaXB0aW9ucy5tYXAoQmlsbGFibGVJdGVtLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE11bHRpU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3Vic2NyaXB0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdWJzY3JpcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YnNjcmlwdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3Vic2NyaXB0aW9ucyA/ICh0aGlzLnN1YnNjcmlwdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3Vic2NyaXB0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJdGVtIGltcGxlbWVudHMgaS5JdGVtSW50ZXJmYWNlIHtcbiAgICBza3U6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIGJpbGxpbmdTdGFydDogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEl0ZW0ge1xuICAgICAgICBsZXQgbSA9IG5ldyBJdGVtKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmJpbGxpbmdTdGFydCkge20uYmlsbGluZ1N0YXJ0ID0gbmV3IERhdGUocHJvdG8uYmlsbGluZ1N0YXJ0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuSXRlbUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJpbGxpbmdTdGFydCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5iaWxsaW5nU3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnYmlsbGluZ1N0YXJ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmJpbGxpbmdTdGFydCA/ICh0aGlzLmJpbGxpbmdTdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5iaWxsaW5nU3RhcnQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdEtleSBpbXBsZW1lbnRzIGkuR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdEtleUludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0S2V5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdEtleSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdEtleUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NrdSddID0gdGhpcy5za3U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9tZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tZXJJZCddID0gdGhpcy5jdXN0b21lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZGVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yZGVySWQnXSA9IHRoaXMub3JkZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QmlsbGFibGVJdGVtc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZmlsdGVyczogTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0RmlsdGVycztcbiAgICBwYWdpbmdPcHRpb25zOiBQYWdlZFJlcXVlc3RPcHRpb25zO1xuICAgIHNlYXJjaFRlcm06IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5maWx0ZXJzKSB7bS5maWx0ZXJzID0gTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0RmlsdGVycy5mcm9tUHJvdG8ocHJvdG8uZmlsdGVycyk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnaW5nT3B0aW9ucykge20ucGFnaW5nT3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2luZ09wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QmlsbGFibGVJdGVtc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZpbHRlcnMgIT09IG51bGwpIHt0b1JldHVyblsnZmlsdGVycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5maWx0ZXJzID8gKHRoaXMuZmlsdGVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5maWx0ZXJzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdPcHRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBhZ2luZ09wdGlvbnMgPyAodGhpcy5wYWdpbmdPcHRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ09wdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VhcmNoVGVybSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VhcmNoVGVybSddID0gdGhpcy5zZWFyY2hUZXJtO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCaWxsYWJsZUl0ZW1zUmVzcG9uc2UgaW1wbGVtZW50cyBpLkxpc3RCaWxsYWJsZUl0ZW1zUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGl0ZW1zOiBCaWxsYWJsZUl0ZW1bXTtcbiAgICBwYWdpbmdNZXRhZGF0YTogUGFnZWRSZXNwb25zZU1ldGFkYXRhO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdEJpbGxhYmxlSXRlbXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RCaWxsYWJsZUl0ZW1zUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uaXRlbXMpIHttLml0ZW1zID0gcHJvdG8uaXRlbXMubWFwKEJpbGxhYmxlSXRlbS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0QmlsbGFibGVJdGVtc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuaXRlbXMgIT09IG51bGwpIHt0b1JldHVyblsnaXRlbXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaXRlbXMgPyAodGhpcy5pdGVtcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5pdGVtczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdNZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdNZXRhZGF0YSA/ICh0aGlzLnBhZ2luZ01ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ01ldGFkYXRhO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19