@decaf-ts/for-fabric 0.1.23 → 0.1.25

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 (289) hide show
  1. package/dist/for-fabric.cjs +1726 -2
  2. package/dist/for-fabric.js +1831 -2
  3. package/lib/bin/build-contract.cjs +2 -1
  4. package/lib/bin/build-contracts.cjs +2 -1
  5. package/lib/bin/build-contracts2.cjs +2 -1
  6. package/lib/bin/compile-indexes.cjs +2 -1
  7. package/lib/cli-module.cjs +1 -1
  8. package/lib/client/FabricClientAdapter.cjs +8 -1
  9. package/lib/client/FabricClientDispatch.cjs +1 -1
  10. package/lib/client/FabricClientPaginator.cjs +1 -1
  11. package/lib/client/FabricClientRepository.cjs +2 -2
  12. package/lib/client/FabricClientStatement.cjs +1 -1
  13. package/lib/client/erc20/FabricERC20ClientRepository.cjs +1 -1
  14. package/lib/client/erc20/index.cjs +1 -1
  15. package/lib/client/fabric-fs.cjs +1 -1
  16. package/lib/client/fabric-fs.d.ts +1 -1
  17. package/lib/client/fabric-hsm.cjs +1 -1
  18. package/lib/client/index.cjs +1 -1
  19. package/lib/client/indexes/generation.cjs +1 -1
  20. package/lib/client/indexes/index.cjs +1 -1
  21. package/lib/client/logging.cjs +1 -1
  22. package/lib/client/services/FabricEnrollmentService.cjs +1 -1
  23. package/lib/client/services/constants.cjs +1 -1
  24. package/lib/client/services/index.cjs +1 -1
  25. package/lib/contract/Product.cjs +1 -1
  26. package/lib/contract/ProductContract.cjs +1 -1
  27. package/lib/contract/User.cjs +1 -1
  28. package/lib/contract/UserContract.cjs +1 -1
  29. package/lib/contract/index.cjs +1 -1
  30. package/lib/contracts/ContractAdapter.cjs +1 -1
  31. package/lib/contracts/ContractContext.cjs +1 -1
  32. package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
  33. package/lib/contracts/FabricConstruction.cjs +1 -1
  34. package/lib/contracts/FabricContractRepository.cjs +1 -1
  35. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  36. package/lib/contracts/FabricContractStatement.cjs +1 -1
  37. package/lib/contracts/PrivateSequence.cjs +1 -1
  38. package/lib/contracts/crud/crud-contract.cjs +1 -1
  39. package/lib/contracts/crud/index.cjs +1 -1
  40. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  41. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  42. package/lib/contracts/erc20/index.cjs +1 -1
  43. package/lib/contracts/erc20/models.cjs +1 -1
  44. package/lib/contracts/index.cjs +1 -1
  45. package/lib/contracts/logging.cjs +1 -1
  46. package/lib/contracts/private-data.cjs +1 -1
  47. package/lib/contracts/types.cjs +1 -1
  48. package/lib/esm/bin/build-contract.js +1 -1
  49. package/lib/esm/bin/build-contracts.js +1 -1
  50. package/lib/esm/bin/build-contracts2.js +1 -1
  51. package/lib/esm/bin/compile-indexes.js +1 -1
  52. package/lib/esm/cli-module.js +1 -1
  53. package/lib/esm/client/FabricClientAdapter.js +8 -1
  54. package/lib/esm/client/FabricClientDispatch.js +1 -1
  55. package/lib/esm/client/FabricClientPaginator.js +1 -1
  56. package/lib/esm/client/FabricClientRepository.js +2 -2
  57. package/lib/esm/client/FabricClientStatement.js +1 -1
  58. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  59. package/lib/esm/client/erc20/index.js +1 -1
  60. package/lib/esm/client/fabric-fs.d.ts +1 -1
  61. package/lib/esm/client/fabric-fs.js +1 -1
  62. package/lib/esm/client/fabric-hsm.js +1 -1
  63. package/lib/esm/client/index.js +1 -1
  64. package/lib/esm/client/indexes/generation.js +1 -1
  65. package/lib/esm/client/indexes/index.js +1 -1
  66. package/lib/esm/client/logging.js +1 -1
  67. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  68. package/lib/esm/client/services/constants.js +1 -1
  69. package/lib/esm/client/services/index.js +1 -1
  70. package/lib/esm/contract/Product.js +1 -1
  71. package/lib/esm/contract/ProductContract.js +1 -1
  72. package/lib/esm/contract/User.js +1 -1
  73. package/lib/esm/contract/UserContract.js +1 -1
  74. package/lib/esm/contract/index.js +1 -1
  75. package/lib/esm/contracts/ContractAdapter.js +1 -1
  76. package/lib/esm/contracts/ContractContext.js +1 -1
  77. package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
  78. package/lib/esm/contracts/FabricConstruction.js +1 -1
  79. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  80. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  81. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  82. package/lib/esm/contracts/PrivateSequence.js +1 -1
  83. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  84. package/lib/esm/contracts/crud/index.js +1 -1
  85. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  86. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  87. package/lib/esm/contracts/erc20/index.js +1 -1
  88. package/lib/esm/contracts/erc20/models.js +1 -1
  89. package/lib/esm/contracts/index.js +1 -1
  90. package/lib/esm/contracts/logging.js +1 -1
  91. package/lib/esm/contracts/private-data.js +1 -1
  92. package/lib/esm/contracts/types.js +1 -1
  93. package/lib/esm/index.js +1 -1
  94. package/lib/esm/shared/ClientSerializer.js +1 -1
  95. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  96. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  97. package/lib/esm/shared/constants.js +1 -1
  98. package/lib/esm/shared/crypto.js +1 -1
  99. package/lib/esm/shared/decorators.js +1 -1
  100. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  101. package/lib/esm/shared/errors.d.ts +3 -0
  102. package/lib/esm/shared/errors.js +6 -1
  103. package/lib/esm/shared/events.js +1 -1
  104. package/lib/esm/shared/fabric-types.js +1 -1
  105. package/lib/esm/shared/index.js +1 -1
  106. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  107. package/lib/esm/shared/math.js +1 -1
  108. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  109. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  110. package/lib/esm/shared/model/Identity.js +1 -1
  111. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  112. package/lib/esm/shared/model/index.js +1 -1
  113. package/lib/esm/shared/overrides/Model.js +1 -1
  114. package/lib/esm/shared/overrides/index.js +1 -1
  115. package/lib/esm/shared/overrides/overrides.js +1 -1
  116. package/lib/esm/shared/types.js +1 -1
  117. package/lib/esm/shared/utils.d.ts +1 -1
  118. package/lib/esm/shared/utils.js +1 -1
  119. package/lib/esm/version.d.ts +1 -1
  120. package/lib/esm/version.js +2 -2
  121. package/lib/index.cjs +1 -1
  122. package/lib/shared/ClientSerializer.cjs +1 -1
  123. package/lib/shared/DeterministicSerializer.cjs +1 -1
  124. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  125. package/lib/shared/constants.cjs +1 -1
  126. package/lib/shared/crypto.cjs +1 -1
  127. package/lib/shared/decorators.cjs +1 -1
  128. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  129. package/lib/shared/errors.cjs +8 -2
  130. package/lib/shared/errors.d.ts +3 -0
  131. package/lib/shared/events.cjs +1 -1
  132. package/lib/shared/fabric-types.cjs +1 -1
  133. package/lib/shared/index.cjs +1 -1
  134. package/lib/shared/interfaces/Checkable.cjs +1 -1
  135. package/lib/shared/math.cjs +1 -1
  136. package/lib/shared/model/FabricBaseModel.cjs +1 -1
  137. package/lib/shared/model/FabricIdentifiedBaseModel.cjs +1 -1
  138. package/lib/shared/model/Identity.cjs +1 -1
  139. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  140. package/lib/shared/model/index.cjs +1 -1
  141. package/lib/shared/overrides/Model.cjs +1 -1
  142. package/lib/shared/overrides/index.cjs +1 -1
  143. package/lib/shared/overrides/overrides.cjs +1 -1
  144. package/lib/shared/types.cjs +1 -1
  145. package/lib/shared/utils.cjs +1 -1
  146. package/lib/shared/utils.d.ts +1 -1
  147. package/lib/version.cjs +2 -2
  148. package/lib/version.d.ts +1 -1
  149. package/package.json +1 -1
  150. package/dist/for-fabric.cjs.map +0 -1
  151. package/dist/for-fabric.js.map +0 -1
  152. package/lib/bin/build-contract.js.map +0 -1
  153. package/lib/bin/build-contracts.js.map +0 -1
  154. package/lib/bin/build-contracts2.js.map +0 -1
  155. package/lib/bin/compile-indexes.js.map +0 -1
  156. package/lib/cli-module.js.map +0 -1
  157. package/lib/client/FabricClientAdapter.js.map +0 -1
  158. package/lib/client/FabricClientDispatch.js.map +0 -1
  159. package/lib/client/FabricClientPaginator.js.map +0 -1
  160. package/lib/client/FabricClientRepository.js.map +0 -1
  161. package/lib/client/FabricClientStatement.js.map +0 -1
  162. package/lib/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  163. package/lib/client/erc20/index.js.map +0 -1
  164. package/lib/client/fabric-fs.js.map +0 -1
  165. package/lib/client/fabric-hsm.js.map +0 -1
  166. package/lib/client/index.js.map +0 -1
  167. package/lib/client/indexes/generation.js.map +0 -1
  168. package/lib/client/indexes/index.js.map +0 -1
  169. package/lib/client/logging.js.map +0 -1
  170. package/lib/client/services/FabricEnrollmentService.js.map +0 -1
  171. package/lib/client/services/constants.js.map +0 -1
  172. package/lib/client/services/index.js.map +0 -1
  173. package/lib/contract/Product.js.map +0 -1
  174. package/lib/contract/ProductContract.js.map +0 -1
  175. package/lib/contract/User.js.map +0 -1
  176. package/lib/contract/UserContract.js.map +0 -1
  177. package/lib/contract/index.js.map +0 -1
  178. package/lib/contracts/ContractAdapter.js.map +0 -1
  179. package/lib/contracts/ContractContext.js.map +0 -1
  180. package/lib/contracts/ContractPrivateDataAdapter.js.map +0 -1
  181. package/lib/contracts/FabricConstruction.js.map +0 -1
  182. package/lib/contracts/FabricContractRepository.js.map +0 -1
  183. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  184. package/lib/contracts/FabricContractStatement.js.map +0 -1
  185. package/lib/contracts/PrivateSequence.js.map +0 -1
  186. package/lib/contracts/crud/crud-contract.js.map +0 -1
  187. package/lib/contracts/crud/index.js.map +0 -1
  188. package/lib/contracts/crud/serialized-crud-contract.js.map +0 -1
  189. package/lib/contracts/erc20/erc20contract.js.map +0 -1
  190. package/lib/contracts/erc20/index.js.map +0 -1
  191. package/lib/contracts/erc20/models.js.map +0 -1
  192. package/lib/contracts/index.js.map +0 -1
  193. package/lib/contracts/logging.js.map +0 -1
  194. package/lib/contracts/private-data.js.map +0 -1
  195. package/lib/contracts/types.js.map +0 -1
  196. package/lib/esm/bin/build-contract.js.map +0 -1
  197. package/lib/esm/bin/build-contracts.js.map +0 -1
  198. package/lib/esm/bin/build-contracts2.js.map +0 -1
  199. package/lib/esm/bin/compile-indexes.js.map +0 -1
  200. package/lib/esm/cli-module.js.map +0 -1
  201. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  202. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  203. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  204. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  205. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  206. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  207. package/lib/esm/client/erc20/index.js.map +0 -1
  208. package/lib/esm/client/fabric-fs.js.map +0 -1
  209. package/lib/esm/client/fabric-hsm.js.map +0 -1
  210. package/lib/esm/client/index.js.map +0 -1
  211. package/lib/esm/client/indexes/generation.js.map +0 -1
  212. package/lib/esm/client/indexes/index.js.map +0 -1
  213. package/lib/esm/client/logging.js.map +0 -1
  214. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  215. package/lib/esm/client/services/constants.js.map +0 -1
  216. package/lib/esm/client/services/index.js.map +0 -1
  217. package/lib/esm/contract/Product.js.map +0 -1
  218. package/lib/esm/contract/ProductContract.js.map +0 -1
  219. package/lib/esm/contract/User.js.map +0 -1
  220. package/lib/esm/contract/UserContract.js.map +0 -1
  221. package/lib/esm/contract/index.js.map +0 -1
  222. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  223. package/lib/esm/contracts/ContractContext.js.map +0 -1
  224. package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +0 -1
  225. package/lib/esm/contracts/FabricConstruction.js.map +0 -1
  226. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  227. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  228. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  229. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  230. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  231. package/lib/esm/contracts/crud/index.js.map +0 -1
  232. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  233. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  234. package/lib/esm/contracts/erc20/index.js.map +0 -1
  235. package/lib/esm/contracts/erc20/models.js.map +0 -1
  236. package/lib/esm/contracts/index.js.map +0 -1
  237. package/lib/esm/contracts/logging.js.map +0 -1
  238. package/lib/esm/contracts/private-data.js.map +0 -1
  239. package/lib/esm/contracts/types.js.map +0 -1
  240. package/lib/esm/index.js.map +0 -1
  241. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  242. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  243. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  244. package/lib/esm/shared/constants.js.map +0 -1
  245. package/lib/esm/shared/crypto.js.map +0 -1
  246. package/lib/esm/shared/decorators.js.map +0 -1
  247. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  248. package/lib/esm/shared/errors.js.map +0 -1
  249. package/lib/esm/shared/events.js.map +0 -1
  250. package/lib/esm/shared/fabric-types.js.map +0 -1
  251. package/lib/esm/shared/index.js.map +0 -1
  252. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  253. package/lib/esm/shared/math.js.map +0 -1
  254. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  255. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  256. package/lib/esm/shared/model/Identity.js.map +0 -1
  257. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  258. package/lib/esm/shared/model/index.js.map +0 -1
  259. package/lib/esm/shared/overrides/Model.js.map +0 -1
  260. package/lib/esm/shared/overrides/index.js.map +0 -1
  261. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  262. package/lib/esm/shared/types.js.map +0 -1
  263. package/lib/esm/shared/utils.js.map +0 -1
  264. package/lib/esm/version.js.map +0 -1
  265. package/lib/index.js.map +0 -1
  266. package/lib/shared/ClientSerializer.js.map +0 -1
  267. package/lib/shared/DeterministicSerializer.js.map +0 -1
  268. package/lib/shared/SimpleDeterministicSerializer.js.map +0 -1
  269. package/lib/shared/constants.js.map +0 -1
  270. package/lib/shared/crypto.js.map +0 -1
  271. package/lib/shared/decorators.js.map +0 -1
  272. package/lib/shared/erc20/erc20-constants.js.map +0 -1
  273. package/lib/shared/errors.js.map +0 -1
  274. package/lib/shared/events.js.map +0 -1
  275. package/lib/shared/fabric-types.js.map +0 -1
  276. package/lib/shared/index.js.map +0 -1
  277. package/lib/shared/interfaces/Checkable.js.map +0 -1
  278. package/lib/shared/math.js.map +0 -1
  279. package/lib/shared/model/FabricBaseModel.js.map +0 -1
  280. package/lib/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  281. package/lib/shared/model/Identity.js.map +0 -1
  282. package/lib/shared/model/IdentityCredentials.js.map +0 -1
  283. package/lib/shared/model/index.js.map +0 -1
  284. package/lib/shared/overrides/Model.js.map +0 -1
  285. package/lib/shared/overrides/index.js.map +0 -1
  286. package/lib/shared/overrides/overrides.js.map +0 -1
  287. package/lib/shared/types.js.map +0 -1
  288. package/lib/shared/utils.js.map +0 -1
  289. package/lib/version.js.map +0 -1
@@ -201,4 +201,4 @@
201
201
  // }
202
202
  // return result as { model: M; private?: Record<string, Record<string, any>> };
203
203
  // }
204
- //# sourceMappingURL=private-data.js.map
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9wcml2YXRlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtFQUErRTtBQUMvRSwwREFBMEQ7QUFDMUQseURBQXlEO0FBQ3pELGdFQUFnRTtBQUNoRSxFQUFFO0FBQ0YsNENBQTRDO0FBQzVDLG1GQUFtRjtBQUNuRixFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELHNFQUFzRTtBQUN0RSxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDhDQUE4QztBQUM5QywrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDZDQUE2QztBQUM3QywyQ0FBMkM7QUFDM0Msc0RBQXNEO0FBQ3RELHdEQUF3RDtBQUN4RCwrQ0FBK0M7QUFDL0MsOENBQThDO0FBQzlDLHVCQUF1QjtBQUN2QixhQUFhO0FBQ2IsOENBQThDO0FBQzlDLGdGQUFnRjtBQUNoRixtQ0FBbUM7QUFDbkMsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWCxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUCxFQUFFO0FBQ0YsK0JBQStCO0FBQy9CLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsOENBQThDO0FBQzlDLDJEQUEyRDtBQUMzRCwyQ0FBMkM7QUFDM0MsV0FBVztBQUNYLFFBQVE7QUFDUixNQUFNO0FBQ04sRUFBRTtBQUNGLGFBQWE7QUFDYiw4QkFBOEI7QUFDOUIsc0NBQXNDO0FBQ3RDLHdDQUF3QztBQUN4QywrQ0FBK0M7QUFDL0MsT0FBTztBQUNQLElBQUk7QUFDSixFQUFFO0FBQ0YsOERBQThEO0FBQzlELGlEQUFpRDtBQUNqRCxJQUFJO0FBQ0osRUFBRTtBQUNGLGdFQUFnRTtBQUNoRSxhQUFhO0FBQ2IsdUNBQXVDO0FBQ3ZDLHFEQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsK0RBQStEO0FBQy9ELG9EQUFvRDtBQUNwRCxTQUFTO0FBQ1Qsc0JBQXNCO0FBQ3RCLHFFQUFxRTtBQUNyRSxNQUFNO0FBQ04sNkVBQTZFO0FBQzdFLDhEQUE4RDtBQUM5RCw2Q0FBNkM7QUFDN0MscURBQXFEO0FBQ3JELCtEQUErRDtBQUMvRCxxRUFBcUU7QUFDckUsVUFBVTtBQUNWLHNCQUFzQjtBQUN0QixTQUFTO0FBQ1QsZ0NBQWdDO0FBQ2hDLE9BQU87QUFDUCx5REFBeUQ7QUFDekQsbUNBQW1DO0FBQ25DLHVEQUF1RDtBQUN2RCxPQUFPO0FBQ1AsMEJBQTBCO0FBQzFCLHdDQUF3QztBQUN4QyxxREFBcUQ7QUFDckQsNkNBQTZDO0FBQzdDLHFEQUFxRDtBQUNyRCw4Q0FBOEM7QUFDOUMsZ0NBQWdDO0FBQ2hDLHFCQUFxQjtBQUNyQixxREFBcUQ7QUFDckQsc0NBQXNDO0FBQ3RDLFNBQVM7QUFDVCxnQ0FBZ0M7QUFDaEMsaURBQWlEO0FBQ2pELHdCQUF3QjtBQUN4Qix1REFBdUQ7QUFDdkQsTUFBTTtBQUNOLGdFQUFnRTtBQUNoRSxJQUFJO0FBQ0osRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLHFFQUFxRTtBQUNyRSxPQUFPO0FBQ1AsOENBQThDO0FBQzlDLElBQUk7QUFDSixFQUFFO0FBQ0YsbURBQW1EO0FBQ25ELGFBQWE7QUFDYixtRUFBbUU7QUFDbkUseURBQXlEO0FBQ3pELEVBQUU7QUFDRiw2Q0FBNkM7QUFDN0Msa0RBQWtEO0FBQ2xELDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysa0ZBQWtGO0FBQ2xGLDJDQUEyQztBQUMzQywwQkFBMEI7QUFDMUIsT0FBTztBQUNQLEVBQUU7QUFDRiwyR0FBMkc7QUFDM0cscUJBQXFCO0FBQ3JCLHdEQUF3RDtBQUN4RCxpQkFBaUI7QUFDakIsb0VBQW9FO0FBQ3BFLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsZ0ZBQWdGO0FBQ2hGLFlBQVk7QUFDWixlQUFlO0FBQ2YsNERBQTREO0FBQzVELCtDQUErQztBQUMvQyxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELGtCQUFrQjtBQUNsQiwyRUFBMkU7QUFDM0Usa0VBQWtFO0FBQ2xFLG1DQUFtQztBQUNuQyw0Q0FBNEM7QUFDNUMsa0VBQWtFO0FBQ2xFLGlCQUFpQjtBQUNqQixjQUFjO0FBQ2QsWUFBWTtBQUNaLEVBQUU7QUFDRix3QkFBd0I7QUFDeEIsV0FBVztBQUNYLGlEQUFpRDtBQUNqRCxzQ0FBc0M7QUFDdEMseUNBQXlDO0FBQ3pDLFVBQVU7QUFDVixTQUFTO0FBQ1QsYUFBYTtBQUNiLHdEQUF3RDtBQUN4RCxVQUFVO0FBQ1YsZ0ZBQWdGO0FBQ2hGLG1CQUFtQjtBQUNuQixlQUFlO0FBQ2YsK0VBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCxFQUFFO0FBQ0Ysd0VBQXdFO0FBQ3hFLEVBQUU7QUFDRixxQ0FBcUM7QUFDckMsaURBQWlEO0FBQ2pELEVBQUU7QUFDRixvREFBb0Q7QUFDcEQsb0JBQW9CO0FBQ3BCLDZFQUE2RTtBQUM3RSxvRUFBb0U7QUFDcEUscUNBQXFDO0FBQ3JDLDhDQUE4QztBQUM5QyxvRUFBb0U7QUFDcEUsbUJBQW1CO0FBQ25CLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2QsbUJBQW1CO0FBQ25CLDZDQUE2QztBQUM3QyxnRUFBZ0U7QUFDaEUsWUFBWTtBQUNaLHdCQUF3QjtBQUN4QixXQUFXO0FBQ1gsNEVBQTRFO0FBQzVFLFNBQVM7QUFDVCxNQUFNO0FBQ04sRUFBRTtBQUNGLHVDQUF1QztBQUN2QyxFQUFFO0FBQ0Ysc0VBQXNFO0FBQ3RFLEVBQUU7QUFDRiwwQkFBMEI7QUFDMUIsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw4Q0FBOEM7QUFDOUMsbURBQW1EO0FBQ25ELHVDQUF1QztBQUN2QyxpQ0FBaUM7QUFDakMsV0FBVztBQUNYLFFBQVE7QUFDUixNQUFNO0FBQ04sa0ZBQWtGO0FBQ2xGLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbi8vIGltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuLy8gaW1wb3J0IHsgRmFicmljTW9kZWxLZXlzIH0gZnJvbSBcIi4uL3NoYXJlZC9jb25zdGFudHNcIjtcbi8vIGltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuLy9cbi8vIGV4cG9ydCBjb25zdCBNSVNTSU5HX1BSSVZBVEVfREFUQV9SRUdFWCA9XG4vLyAgIC9wcml2YXRlXFxzK2RhdGFcXHMrbWF0Y2hpbmdcXHMrcHVibGljXFxzK2hhc2hcXHMrdmVyc2lvblxccytpc1xccytub3RcXHMrYXZhaWxhYmxlL2k7XG4vL1xuLy8gZXhwb3J0IGNvbnN0IE1JU1NJTkdfUFJJVkFURV9EQVRBX0VSUk9SX01FU1NBR0UgPVxuLy8gICBcInByaXZhdGUgZGF0YSBtYXRjaGluZyBwdWJsaWMgaGFzaCB2ZXJzaW9uIGlzIG5vdCBhdmFpbGFibGUgLi4uXCI7XG4vL1xuLy8gZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KGFkYXB0ZXI6IGFueSwgbW9kZWw6IE0pIHtcbi8vICAgY29uc3QgdHJhbnNpZW50ID0gTW9kZWwuc2VncmVnYXRlKG1vZGVsKTtcbi8vICAgY29uc3QgcHJpdmF0ZURhdGEgPSBtb2RlbFRvUHJpdmF0ZShtb2RlbCk7XG4vL1xuLy8gICBjb25zdCB0cmFuc2Zvcm1Nb2RlbCA9IChtb2RlbDogYW55KSA9PiB7XG4vLyAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1vZGVsKS5yZWR1Y2UoXG4vLyAgICAgICAoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIFtrZXksIHZhbF0pID0+IHtcbi8vICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBhY2N1bTtcbi8vICAgICAgICAgY29uc3QgbWFwcGVkUHJvcCA9IE1vZGVsLmNvbHVtbk5hbWUoXG4vLyAgICAgICAgICAgbW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3IsXG4vLyAgICAgICAgICAga2V5IGFzIGFueVxuLy8gICAgICAgICApO1xuLy8gICAgICAgICBpZiAoYWRhcHRlci5pc1Jlc2VydmVkKG1hcHBlZFByb3ApKVxuLy8gICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBQcm9wZXJ0eSBuYW1lICR7bWFwcGVkUHJvcH0gaXMgcmVzZXJ2ZWRgKTtcbi8vICAgICAgICAgYWNjdW1bbWFwcGVkUHJvcF0gPSB2YWw7XG4vLyAgICAgICAgIHJldHVybiBhY2N1bTtcbi8vICAgICAgIH0sXG4vLyAgICAgICB7fVxuLy8gICAgICk7XG4vLyAgIH07XG4vL1xuLy8gICBpZiAocHJpdmF0ZURhdGEucHJpdmF0ZSkge1xuLy8gICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gT2JqZWN0LmtleXMocHJpdmF0ZURhdGEucHJpdmF0ZSk7XG4vL1xuLy8gICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBvZiBjb2xsZWN0aW9ucykge1xuLy8gICAgICAgcHJpdmF0ZURhdGEucHJpdmF0ZSFbY29sbGVjdGlvbl0gPSB0cmFuc2Zvcm1Nb2RlbChcbi8vICAgICAgICAgcHJpdmF0ZURhdGEucHJpdmF0ZSFbY29sbGVjdGlvbl1cbi8vICAgICAgICk7XG4vLyAgICAgfVxuLy8gICB9XG4vL1xuLy8gICByZXR1cm4ge1xuLy8gICAgIG1vZGVsOiB0cmFuc2llbnQubW9kZWwsXG4vLyAgICAgdHJhbnNpZW50OiB0cmFuc2llbnQudHJhbnNpZW50LFxuLy8gICAgIHByaXZhdGVEYXRhOiBwcml2YXRlRGF0YS5wcml2YXRlLFxuLy8gICAgIHJlc3VsdDogdHJhbnNmb3JtTW9kZWwodHJhbnNpZW50Lm1vZGVsKSxcbi8vICAgfTtcbi8vIH1cbi8vXG4vLyBleHBvcnQgZnVuY3Rpb24gaGFzUHJpdmF0ZURhdGE8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuLy8gICByZXR1cm4gISFnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpO1xuLy8gfVxuLy9cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGE8TSBleHRlbmRzIE1vZGVsPihcbi8vICAgbW9kZWw6IE1cbi8vICk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuLy8gICBjb25zdCBjb25zdHIgPSBtb2RlbC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3Rvcjtcbi8vICAgY29uc3Qgcm9vdE1ldGFkYXRhID0gTWV0YWRhdGEuZ2V0KGNvbnN0cikgfHwge307XG4vLyAgIGlmIChyb290TWV0YWRhdGEgJiYgcm9vdE1ldGFkYXRhW0ZhYnJpY01vZGVsS2V5cy5QUklWQVRFXSlcbi8vICAgICByZXR1cm4gcm9vdE1ldGFkYXRhW0ZhYnJpY01vZGVsS2V5cy5QUklWQVRFXTtcbi8vICAgaWYgKFxuLy8gICAgIHJvb3RNZXRhZGF0YSAmJlxuLy8gICAgIHJvb3RNZXRhZGF0YVtGYWJyaWNNb2RlbEtleXMuRkFCUklDICsgRmFicmljTW9kZWxLZXlzLlBSSVZBVEVdXG4vLyAgIClcbi8vICAgICByZXR1cm4gcm9vdE1ldGFkYXRhW0ZhYnJpY01vZGVsS2V5cy5GQUJSSUMgKyBGYWJyaWNNb2RlbEtleXMuUFJJVkFURV07XG4vLyAgIGNvbnN0IGZsYXR0ZW5lZCA9IE9iamVjdC5rZXlzKHJvb3RNZXRhZGF0YSB8fCB7fSkucmVkdWNlKFxuLy8gICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55Piwga2V5KSA9PiB7XG4vLyAgICAgICBpZiAoa2V5LmluY2x1ZGVzKEZhYnJpY01vZGVsS2V5cy5QUklWQVRFKSkge1xuLy8gICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGtleS5zcGxpdChNZXRhZGF0YS5zcGxpdHRlcikucG9wKCk7XG4vLyAgICAgICAgIGlmIChwcm9wZXJ0eSkgYWNjdW1bcHJvcGVydHldID0gTWV0YWRhdGEuZ2V0KGNvbnN0ciwga2V5KTtcbi8vICAgICAgIH1cbi8vICAgICAgIHJldHVybiBhY2N1bTtcbi8vICAgICB9LFxuLy8gICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT5cbi8vICAgKTtcbi8vICAgaWYgKE9iamVjdC5rZXlzKGZsYXR0ZW5lZCkubGVuZ3RoKSByZXR1cm4gZmxhdHRlbmVkO1xuLy8gICBjb25zdCBjbGFzc0tleSA9IE1ldGFkYXRhLmtleShcbi8vICAgICBGYWJyaWNNb2RlbEtleXMuRkFCUklDICsgRmFicmljTW9kZWxLZXlzLlBSSVZBVEVcbi8vICAgKTtcbi8vICAgY29uc3QgY2xhc3NNZXRhZGF0YSA9XG4vLyAgICAgTWV0YWRhdGEuZ2V0KGNvbnN0ciwgY2xhc3NLZXkpID8/XG4vLyAgICAgTWV0YWRhdGEuZ2V0KGNvbnN0ciwgRmFicmljTW9kZWxLZXlzLlBSSVZBVEUpO1xuLy8gICBpZiAoY2xhc3NNZXRhZGF0YSkgcmV0dXJuIGNsYXNzTWV0YWRhdGE7XG4vLyAgIGNvbnN0IHByb3BzID0gTWV0YWRhdGEucHJvcGVydGllcyhjb25zdHIpIHx8IFtdO1xuLy8gICBjb25zdCBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuLy8gICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcbi8vICAgICBjb25zdCBrZXlzID0gW1xuLy8gICAgICAgTWV0YWRhdGEua2V5KEZhYnJpY01vZGVsS2V5cy5QUklWQVRFLCBwcm9wKSxcbi8vICAgICAgIE1ldGFkYXRhLmtleShjbGFzc0tleSwgcHJvcCksXG4vLyAgICAgXTtcbi8vICAgICBjb25zdCBwcm9wTWV0YWRhdGEgPSBrZXlzXG4vLyAgICAgICAubWFwKChrZXkpID0+IE1ldGFkYXRhLmdldChjb25zdHIsIGtleSkpXG4vLyAgICAgICAuZmluZChCb29sZWFuKTtcbi8vICAgICBpZiAocHJvcE1ldGFkYXRhKSBtZXRhZGF0YVtwcm9wXSA9IHByb3BNZXRhZGF0YTtcbi8vICAgfVxuLy8gICByZXR1cm4gT2JqZWN0LmtleXMobWV0YWRhdGEpLmxlbmd0aCA/IG1ldGFkYXRhIDogdW5kZWZpbmVkO1xuLy8gfVxuLy9cbi8vIGV4cG9ydCBmdW5jdGlvbiBpc01vZGVsUHJpdmF0ZTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKTogYm9vbGVhbiB7XG4vLyAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBNZXRhZGF0YS5nZXQoXG4vLyAgICAgbW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3IsXG4vLyAgICAgTWV0YWRhdGEua2V5KEZhYnJpY01vZGVsS2V5cy5GQUJSSUMgKyBGYWJyaWNNb2RlbEtleXMuUFJJVkFURSlcbi8vICAgKTtcbi8vICAgcmV0dXJuIEJvb2xlYW4oY2xhc3NNZXRhZGF0YT8uaXNQcml2YXRlKTtcbi8vIH1cbi8vXG4vLyBleHBvcnQgZnVuY3Rpb24gbW9kZWxUb1ByaXZhdGU8TSBleHRlbmRzIE1vZGVsPihcbi8vICAgbW9kZWw6IE1cbi8vICk6IHsgbW9kZWw6IE07IHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB9IHtcbi8vICAgaWYgKCFoYXNQcml2YXRlRGF0YShtb2RlbCkpIHJldHVybiB7IG1vZGVsOiBtb2RlbCB9O1xuLy9cbi8vICAgY29uc3QgaXNQcml2YXRlID0gaXNNb2RlbFByaXZhdGUobW9kZWwpO1xuLy8gICBjb25zdCBtb2RlbENvbGxlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID1cbi8vICAgICBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpO1xuLy9cbi8vICAgbGV0IHJlc3VsdDogeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSA9IHtcbi8vICAgICBtb2RlbDogbW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pixcbi8vICAgICBwcml2YXRlOiB1bmRlZmluZWQsXG4vLyAgIH07XG4vL1xuLy8gICAvLyBUT0RPOiB0aGUgaXMgcHJpdmF0ZSBpcyBub3Qgd29ya2lnbiBjb3JyZWN0bHkuIElmIG5vIHByb3BlcnRpZXMgaXQgZG9lc24ndCBjcmVhdGUgdGhlIHByaXZhdGUgcGFydC5cbi8vICAgaWYgKGlzUHJpdmF0ZSkge1xuLy8gICAgIGNvbnN0IHByaXZhdGVQYXJ0ID0gbW9kZWxDb2xsZWN0aW9ucy5jb2xsZWN0aW9ucztcbi8vICAgICByZXN1bHQgPSAoXG4vLyAgICAgICBNZXRhZGF0YS5wcm9wZXJ0aWVzKG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yKSB8fCBbXVxuLy8gICAgICkucmVkdWNlKFxuLy8gICAgICAgKFxuLy8gICAgICAgICBhY2N1bTogeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSxcbi8vICAgICAgICAga1xuLy8gICAgICAgKSA9PiB7XG4vLyAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gbW9kZWxDb2xsZWN0aW9ucy5jb2xsZWN0aW9ucztcbi8vICAgICAgICAgYWNjdW0ucHJpdmF0ZSA9IGFjY3VtLnByaXZhdGUgfHwge307XG4vL1xuLy8gICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbi8vICAgICAgICAgICB0cnkge1xuLy8gICAgICAgICAgICAgYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXSA9IGFjY3VtLnByaXZhdGVbY29sbGVjdGlvbl0gfHwge307XG4vLyAgICAgICAgICAgICBhY2N1bS5wcml2YXRlW2NvbGxlY3Rpb25dW2tdID0gbW9kZWxbayBhcyBrZXlvZiBNXTtcbi8vICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4vLyAgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKFxuLy8gICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNlcmlhbGl6ZSBwcml2YXRlIHByb3BlcnR5ICR7a306ICR7ZX1gXG4vLyAgICAgICAgICAgICApO1xuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfVxuLy9cbi8vICAgICAgICAgcmV0dXJuIGFjY3VtO1xuLy8gICAgICAgfSxcbi8vICAgICAgIHsgbW9kZWw6IHt9LCBwcml2YXRlOiBwcml2YXRlUGFydCB9IGFzIHtcbi8vICAgICAgICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT47XG4vLyAgICAgICAgIHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuLy8gICAgICAgfVxuLy8gICAgICk7XG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMobW9kZWxDb2xsZWN0aW9ucykucmVkdWNlKFxuLy8gICAgICAgKFxuLy8gICAgICAgICBhY2N1bTogeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSxcbi8vICAgICAgICAgW2ssIHZhbF1cbi8vICAgICAgICkgPT4ge1xuLy8gICAgICAgICBjb25zdCBwcm9wcyA9IE1ldGFkYXRhLnByb3BlcnRpZXMobW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3IpO1xuLy8gICAgICAgICBpZiAoIXByb3BzPy5pbmNsdWRlcyhrKSkgcmV0dXJuIGFjY3VtO1xuLy9cbi8vICAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSAodmFsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLmNvbGxlY3Rpb25zO1xuLy9cbi8vICAgICAgICAgaWYgKGNvbGxlY3Rpb25zPy5sZW5ndGgpIHtcbi8vICAgICAgICAgICBhY2N1bS5wcml2YXRlID0gYWNjdW0ucHJpdmF0ZSB8fCB7fTtcbi8vXG4vLyAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4vLyAgICAgICAgICAgICB0cnkge1xuLy8gICAgICAgICAgICAgICBhY2N1bS5wcml2YXRlW2NvbGxlY3Rpb25dID0gYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXSB8fCB7fTtcbi8vICAgICAgICAgICAgICAgYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXVtrXSA9IG1vZGVsW2sgYXMga2V5b2YgTV07XG4vLyAgICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4vLyAgICAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4vLyAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBzZXJpYWxpemUgcHJpdmF0ZSBwcm9wZXJ0eSAke2t9OiAke2V9YFxuLy8gICAgICAgICAgICAgICApO1xuLy8gICAgICAgICAgICAgfVxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICBhY2N1bS5tb2RlbCA9IGFjY3VtLm1vZGVsIHx8IHt9O1xuLy8gICAgICAgICAgIGFjY3VtLm1vZGVsW2tdID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tdO1xuLy8gICAgICAgICB9XG4vLyAgICAgICAgIHJldHVybiBhY2N1bTtcbi8vICAgICAgIH0sXG4vLyAgICAgICB7fSBhcyB7IG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBwcml2YXRlPzogUmVjb3JkPHN0cmluZywgYW55PiB9XG4vLyAgICAgKTtcbi8vICAgfVxuLy9cbi8vICAgcmVzdWx0Lm1vZGVsID0gcmVzdWx0Lm1vZGVsIHx8IHt9O1xuLy9cbi8vICAgcmVzdWx0Lm1vZGVsID0gTW9kZWwuYnVpbGQocmVzdWx0Lm1vZGVsLCBtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lKTtcbi8vXG4vLyAgIGlmIChyZXN1bHQucHJpdmF0ZSkge1xuLy8gICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gT2JqZWN0LmtleXMocmVzdWx0LnByaXZhdGUpO1xuLy9cbi8vICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbi8vICAgICAgIHJlc3VsdC5wcml2YXRlIVtjb2xsZWN0aW9uXSA9IE1vZGVsLmJ1aWxkKFxuLy8gICAgICAgICByZXN1bHQucHJpdmF0ZSFbY29sbGVjdGlvbl0sXG4vLyAgICAgICAgIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWVcbi8vICAgICAgICk7XG4vLyAgICAgfVxuLy8gICB9XG4vLyAgIHJldHVybiByZXN1bHQgYXMgeyBtb2RlbDogTTsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+IH07XG4vLyB9XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFpbmNvZGVTdHViLCBDbGllbnRJZGVudGl0eSB9IGZyb20gXCJmYWJyaWMtc2hpbS1hcGlcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRmFicmljRmxhZ3MgfSBmcm9tIFwiLi4vc2hhcmVkL2luZGV4XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZsYWdzIGZvciBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgcmVwb3NpdG9yeSBmbGFncyB3aXRoIEZhYnJpYy1zcGVjaWZpYyBjb250ZXh0IGVsZW1lbnRzIGF2YWlsYWJsZSBkdXJpbmcgRmFicmljIGNoYWluY29kZSBleGVjdXRpb24sIHN1Y2ggYXMgdGhlIENoYWluY29kZVN0dWIsIENsaWVudElkZW50aXR5IGFuZCBhIHJlcXVlc3Qtc2NvcGVkIExvZ2dlci5cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1JlcG9zaXRvcnlGbGFnc30gW2Jhc2VdIC0gQmFzZSByZXBvc2l0b3J5IGZsYWdzIHRoYXQgdGhlc2UgRmFicmljLXNwZWNpZmljIGZsYWdzIGV4dGVuZFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBpbnRlcmZhY2UgRmFicmljQ29udHJhY3RGbGFnc1xuICogQG1lbWJlck9mIG1vZHVsZTpmYWJyaWMuY29udHJhY3RzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmFicmljQ29udHJhY3RGbGFncyBleHRlbmRzIEZhYnJpY0ZsYWdzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGFpbmNvZGUgc3R1YiBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGVkZ2VyXG4gICAqL1xuICBzdHViOiBDaGFpbmNvZGVTdHViO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ2xpZW50IGlkZW50aXR5IGZvciB0aGUgdHJhbnNhY3Rpb24gc3VibWl0dGVyXG4gICAqL1xuICBpZGVudGl0eTogQ2xpZW50SWRlbnRpdHk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dnZXIgaW5zdGFuY2UgZm9yIHRoZSBjb250cmFjdFxuICAgKi9cbiAgbG9nZ2VyOiBMb2dnZXI7XG59XG4iXX0=
@@ -63,4 +63,4 @@ program
63
63
  execSync("rm -rf ./global/lib && rm -rf ./global/dist");
64
64
  });
65
65
  program.parse(process.argv);
66
- //# sourceMappingURL=build-contract.js.map
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmluL2J1aWxkLWNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osT0FBTyxDQUFDLHlCQUF5QixDQUFDO0tBQ2xDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztLQUN4QyxNQUFNLENBQUMsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLEtBQUssQ0FBQztLQUNqRSxNQUFNLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssQ0FBQztLQUM3RCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQzdCLE1BQU0sR0FBRyxHQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFakMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDcEIsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUNyRSxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUU1QixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQztRQUMxQixLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLE9BQU8sRUFBRTtZQUNQLE9BQU8sQ0FBQztnQkFDTixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLEVBQUUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFO2FBQ25DLENBQUM7WUFDRixVQUFVLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsZUFBZSxFQUFFO29CQUNmLE1BQU0sRUFBRSxRQUFRO2lCQUNqQjtnQkFDRCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsV0FBVyxFQUFFLEtBQUs7YUFDbkIsQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pCLElBQUksRUFBRSw0QkFBNEI7UUFDbEMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsbUJBQW1CO0tBQzFCLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHO1FBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ2xCLENBQUMsQ0FBQywwRkFBMEY7WUFDNUYsQ0FBQyxDQUFDLDZCQUE2QjtRQUNqQyxXQUFXLEVBQ1Qsd0hBQXdIO1FBQzFILGFBQWEsRUFBRSxvQ0FBb0M7UUFDbkQsS0FBSyxFQUFFLHVDQUF1QztRQUM5QyxJQUFJLEVBQUUsMEJBQTBCO0tBQ2pDLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFFNUIsZUFBZSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUN6QyxlQUFlLENBQUMsV0FBVyxHQUFHLGdDQUFnQyxDQUFDO0lBQy9ELGVBQWUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBRWxDLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztJQUM1QixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDN0IsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBQy9CLGVBQWUsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFFM0MsRUFBRSxDQUFDLGFBQWEsQ0FDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwyQkFBMkIsQ0FBQyxFQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUNoQyxDQUFDO0lBRUYsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDMUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFFL0MsUUFBUSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUM7QUFFTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByb2xsdXAgfSBmcm9tIFwicm9sbHVwXCI7XG5pbXBvcnQgcmVwbGFjZSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tcmVwbGFjZVwiO1xuaW1wb3J0IHR5cGVzY3JpcHQgZnJvbSBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcImNvbXBpbGUtZ2xvYmFsLWNvbnRyYWN0XCIpXG4gIC5kZXNjcmlwdGlvbihcIkNyZWF0ZXMgYSBnbG9iYWwgY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tZGV2XCIsIFwiY29tcGlsZXMgY29udHJhY3RzIHdpdGhvdXQgbWluaWZpY2F0aW9uXCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1kZWJ1Z1wiLCBcIm1ha2VzIGF0dGFjaGluZyBkZWJ1Z2dlciBwb3NzaWJsZVwiLCBmYWxzZSlcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgZGV2OiBib29sZWFuID0gb3B0aW9ucy5kZXY7XG5cbiAgICBleGVjU3luYyhcInJtIC1yZiAuL2dsb2JhbFwiKTtcblxuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9wYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgYnVuZGxlID0gYXdhaXQgcm9sbHVwKHtcbiAgICAgIGlucHV0OiBcIi4vc3JjL2NvbnRyYWN0L2luZGV4LnRzXCIsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIHJlcGxhY2Uoe1xuICAgICAgICAgIHByZXZlbnRBc3NpZ25tZW50OiB0cnVlLFxuICAgICAgICAgIGRlbGltaXRlcnM6IFtcIlwiLCBcIlwiXSxcbiAgICAgICAgICB2YWx1ZXM6IHsgXCIjI1ZFUlNJT04jI1wiOiB2ZXJzaW9uIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB0eXBlc2NyaXB0KHtcbiAgICAgICAgICB0c2NvbmZpZzogXCIuL3RzY29uZmlnLmpzb25cIixcbiAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIG91dERpcjogXCJnbG9iYWxcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vZHVsZTogXCJlc25leHRcIixcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGF3YWl0IGJ1bmRsZS53cml0ZSh7XG4gICAgICBmaWxlOiBcIi4vZ2xvYmFsL0dsb2JhbENvbnRyYWN0LmpzXCIsXG4gICAgICBmb3JtYXQ6IFwidW1kXCIsXG4gICAgICBuYW1lOiBcIkdsb2JhbENvbnRyYWN0LmpzXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY3JpcHRzID0ge1xuICAgICAgc3RhcnQ6IG9wdGlvbnMuZGVidWdcbiAgICAgICAgPyBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAvdXNyL2xvY2FsL3NyYy9ub2RlX21vZHVsZXMvLmJpbi9mYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnRcIlxuICAgICAgICA6IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0XCIsXG4gICAgICBcInN0YXJ0OmRldlwiOlxuICAgICAgICAnZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IC0tcGVlci5hZGRyZXNzIFwiMTI3LjAuMC4xOjg1NDFcIiAtLWNoYWluY29kZS1pZC1uYW1lIFwiY2hhaW5jb2RlMTowLjAuMVwiIC0tdGxzLmVuYWJsZWQgZmFsc2UnLFxuICAgICAgXCJzdGFydDp3YXRjaFwiOiAnbm9kZW1vbiAtLWV4ZWMgXCJucG0gcnVuIHN0YXJ0OmRldlwiJyxcbiAgICAgIGJ1aWxkOiAnZWNobyBcIk5vIG5lZWQgdG8gYnVpbGQgdGhlIGNoYWluY29kZVwiJyxcbiAgICAgIGxpbnQ6IFwiZXNsaW50IC4gLS1maXggLS1leHQgLmpzXCIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnRyYWN0UGFja2FnZSA9IHBrZztcblxuICAgIGNvbnRyYWN0UGFja2FnZS5uYW1lID0gXCJnbG9iYWwtY29udHJhY3RcIjtcbiAgICBjb250cmFjdFBhY2thZ2UuZGVzY3JpcHRpb24gPSBcIkdsb2JhbCBjb250cmFjdCBpbXBsZW1lbnRhdGlvblwiO1xuICAgIGNvbnRyYWN0UGFja2FnZS5zY3JpcHRzID0gc2NyaXB0cztcblxuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZTtcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGVzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UuZXhwb3J0cztcbiAgICBjb250cmFjdFBhY2thZ2UubWFpbiA9IFwiR2xvYmFsQ29udHJhY3QuanNcIjtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2dsb2JhbC9wYWNrYWdlLmpzb25cIiksXG4gICAgICBKU09OLnN0cmluZ2lmeShjb250cmFjdFBhY2thZ2UpXG4gICAgKTtcblxuICAgIGV4ZWNTeW5jKFwiY2QgLi9nbG9iYWwgJiYgbnBtIGluc3RhbGxcIik7XG4gICAgZXhlY1N5bmMoXCJjZCAuL2dsb2JhbCAmJiBucG0gc2hyaW5rd3JhcFwiKTtcbiAgICBleGVjU3luYyhcImNkIC4vZ2xvYmFsICYmIHJtIC1yZiBub2RlX21vZHVsZXNcIik7XG5cbiAgICBleGVjU3luYyhcInJtIC1yZiAuL2dsb2JhbC9saWIgJiYgcm0gLXJmIC4vZ2xvYmFsL2Rpc3RcIik7XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG4iXX0=
@@ -39,4 +39,4 @@ program
39
39
  // );
40
40
  });
41
41
  program.parse(process.argv);
42
- //# sourceMappingURL=build-contracts.js.map
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29udHJhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9idWlsZC1jb250cmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osT0FBTyxDQUFDLGtCQUFrQixDQUFDO0tBQzNCLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztLQUN4QyxNQUFNLENBQUMsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLEtBQUssQ0FBQztLQUNqRSxNQUFNLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLEtBQUssQ0FBQztLQUM3QyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQztLQUN0RCxNQUFNLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztLQUNoRCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQzdCLE1BQU0sR0FBRyxHQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQVksT0FBTyxDQUFDLEtBQUssQ0FBQztJQUVyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNwQixFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQ3JFLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRztRQUNkLEtBQUssRUFBRSxLQUFLO1lBQ1YsQ0FBQyxDQUFDLDBGQUEwRjtZQUM1RixDQUFDLENBQUMsNkJBQTZCO1FBQ2pDLFdBQVcsRUFDVCx3SEFBd0g7UUFDMUgsYUFBYSxFQUFFLG9DQUFvQztRQUNuRCxLQUFLLEVBQUUsdUNBQXVDO1FBQzlDLElBQUksRUFBRSwwQkFBMEI7S0FDakMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUU1QixlQUFlLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDcEMsZUFBZSxDQUFDLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztJQUMvRCxlQUFlLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUVsQyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDNUIsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQzdCLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUMvQixlQUFlLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUVsQyxFQUFFLENBQUMsYUFBYSxDQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUNoQyxDQUFDO0lBRUYsUUFBUSxDQUNOLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQ3RFLENBQUM7SUFDRixRQUFRLENBQ04sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDMUUsQ0FBQztJQUNGLFlBQVk7SUFDWixtRkFBbUY7SUFDbkYsS0FBSztBQUNQLENBQUMsQ0FBQyxDQUFDO0FBRUwsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gIC5jb21tYW5kKFwiY29tcGlsZS1jb250cmFjdFwiKVxuICAuZGVzY3JpcHRpb24oXCJDcmVhdGVzIGEgZ2xvYmFsIGNvbnRyYWN0XCIpXG4gIC5vcHRpb24oXCItLWRldlwiLCBcImNvbXBpbGVzIGNvbnRyYWN0cyB3aXRob3V0IG1pbmlmaWNhdGlvblwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tZGVidWdcIiwgXCJlbmFibGVzIGluc3BlY3RvclwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcImNvbnRyYWN0IG5hbWVcIiwgXCJjb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1vdXRwdXQgPFN0cmluZz5cIiwgXCJvdXRwdXRcIiwgdW5kZWZpbmVkKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBkZXY6IGJvb2xlYW4gPSBvcHRpb25zLmRldjtcbiAgICBjb25zdCBkZWJ1ZzogYm9vbGVhbiA9IG9wdGlvbnMuZGVidWc7XG5cbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vcGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHNjcmlwdHMgPSB7XG4gICAgICBzdGFydDogZGVidWdcbiAgICAgICAgPyBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAvdXNyL2xvY2FsL3NyYy9ub2RlX21vZHVsZXMvLmJpbi9mYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnRcIlxuICAgICAgICA6IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0XCIsXG4gICAgICBcInN0YXJ0OmRldlwiOlxuICAgICAgICAnZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IC0tcGVlci5hZGRyZXNzIFwiMTI3LjAuMC4xOjg1NDFcIiAtLWNoYWluY29kZS1pZC1uYW1lIFwiY2hhaW5jb2RlMTowLjAuMVwiIC0tdGxzLmVuYWJsZWQgZmFsc2UnLFxuICAgICAgXCJzdGFydDp3YXRjaFwiOiAnbm9kZW1vbiAtLWV4ZWMgXCJucG0gcnVuIHN0YXJ0OmRldlwiJyxcbiAgICAgIGJ1aWxkOiAnZWNobyBcIk5vIG5lZWQgdG8gYnVpbGQgdGhlIGNoYWluY29kZVwiJyxcbiAgICAgIGxpbnQ6IFwiZXNsaW50IC4gLS1maXggLS1leHQgLmpzXCIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnRyYWN0UGFja2FnZSA9IHBrZztcblxuICAgIGNvbnRyYWN0UGFja2FnZS5uYW1lID0gb3B0aW9ucy5uYW1lO1xuICAgIGNvbnRyYWN0UGFja2FnZS5kZXNjcmlwdGlvbiA9IFwiR2xvYmFsIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uXCI7XG4gICAgY29udHJhY3RQYWNrYWdlLnNjcmlwdHMgPSBzY3JpcHRzO1xuXG4gICAgZGVsZXRlIGNvbnRyYWN0UGFja2FnZS50eXBlO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZXM7XG4gICAgZGVsZXRlIGNvbnRyYWN0UGFja2FnZS5leHBvcnRzO1xuICAgIGNvbnRyYWN0UGFja2FnZS5tYWluID0gXCJpbmRleC5qc1wiO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vXCIsIG9wdGlvbnMub3V0cHV0LCBcInBhY2thZ2UuanNvblwiKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KGNvbnRyYWN0UGFja2FnZSlcbiAgICApO1xuXG4gICAgZXhlY1N5bmMoXG4gICAgICBgY2QgJHtwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL1wiLCBvcHRpb25zLm91dHB1dCl9ICYmIG5wbSBpbnN0YWxsYFxuICAgICk7XG4gICAgZXhlY1N5bmMoXG4gICAgICBgY2QgJHtwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL1wiLCBvcHRpb25zLm91dHB1dCl9ICAmJiBucG0gc2hyaW5rd3JhcGBcbiAgICApO1xuICAgIC8vIGV4ZWNTeW5jKFxuICAgIC8vICAgYGNkICR7cGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9cIiwgb3B0aW9ucy5vdXRwdXQpfSAgJiYgcm0gLXJmIG5vZGVfbW9kdWxlc2BcbiAgICAvLyApO1xuICB9KTtcblxucHJvZ3JhbS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuIl19
@@ -65,4 +65,4 @@ program
65
65
  execSync("rm -rf ./contracts/lib && rm -rf ./contracts/dist");
66
66
  });
67
67
  program.parse(process.argv);
68
- //# sourceMappingURL=build-contracts2.js.map
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29udHJhY3RzMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vYnVpbGQtY29udHJhY3RzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFOUIsT0FBTztLQUNKLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztLQUMzQixXQUFXLENBQUMsMkJBQTJCLENBQUM7S0FDeEMsTUFBTSxDQUFDLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxLQUFLLENBQUM7S0FDakUsTUFBTSxDQUFDLFNBQVMsRUFBRSxtQ0FBbUMsRUFBRSxLQUFLLENBQUM7S0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUM7S0FDdEQsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7S0FDaEQsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFZLEVBQUUsRUFBRTtJQUM3QixNQUFNLEdBQUcsR0FBWSxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRWpDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRS9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ3BCLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FDckUsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFFNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUM7UUFDMUIsS0FBSyxFQUFFLDBCQUEwQjtRQUNqQyxPQUFPLEVBQUU7WUFDUCxPQUFPLENBQUM7Z0JBQ04saUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxFQUFFLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRTthQUM1RCxDQUFDO1lBQ0YsVUFBVSxDQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLGVBQWUsRUFBRTtvQkFDZixNQUFNLEVBQUUsV0FBVztpQkFDcEI7Z0JBQ0QsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLFdBQVcsRUFBRSxLQUFLO2FBQ25CLENBQUM7U0FDSDtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQixJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLG1CQUFtQjtLQUMxQixDQUFDLENBQUM7SUFFSCxNQUFNLE9BQU8sR0FBRztRQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNsQixDQUFDLENBQUMsMEZBQTBGO1lBQzVGLENBQUMsQ0FBQyw2QkFBNkI7UUFDakMsV0FBVyxFQUNULHdIQUF3SDtRQUMxSCxhQUFhLEVBQUUsb0NBQW9DO1FBQ25ELEtBQUssRUFBRSx1Q0FBdUM7UUFDOUMsSUFBSSxFQUFFLDBCQUEwQjtLQUNqQyxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDO0lBRTVCLGVBQWUsQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDekMsZUFBZSxDQUFDLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztJQUMvRCxlQUFlLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUVsQyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDNUIsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQzdCLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUMvQixlQUFlLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBRTNDLEVBQUUsQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsOEJBQThCLENBQUMsRUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FDaEMsQ0FBQztJQUVGLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBRWxELFFBQVEsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDO0FBRUwsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgcm9sbHVwIH0gZnJvbSBcInJvbGx1cFwiO1xuaW1wb3J0IHJlcGxhY2UgZnJvbSBcIkByb2xsdXAvcGx1Z2luLXJlcGxhY2VcIjtcbmltcG9ydCB0eXBlc2NyaXB0IGZyb20gXCJAcm9sbHVwL3BsdWdpbi10eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoXCJjb21waWxlLWNvbnRyYWN0XCIpXG4gIC5kZXNjcmlwdGlvbihcIkNyZWF0ZXMgYSBnbG9iYWwgY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tZGV2XCIsIFwiY29tcGlsZXMgY29udHJhY3RzIHdpdGhvdXQgbWluaWZpY2F0aW9uXCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1kZWJ1Z1wiLCBcIm1ha2VzIGF0dGFjaGluZyBkZWJ1Z2dlciBwb3NzaWJsZVwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcImNvbnRyYWN0IG5hbWVcIiwgXCJjb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1vdXRwdXQgPFN0cmluZz5cIiwgXCJvdXRwdXRcIiwgdW5kZWZpbmVkKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBkZXY6IGJvb2xlYW4gPSBvcHRpb25zLmRldjtcblxuICAgIGV4ZWNTeW5jKFwicm0gLXJmIC4vY29udHJhY3RzXCIpO1xuXG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL3BhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBidW5kbGUgPSBhd2FpdCByb2xsdXAoe1xuICAgICAgaW5wdXQ6IFwiLi9zcmMvY29udHJhY3RzL2luZGV4LnRzXCIsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIHJlcGxhY2Uoe1xuICAgICAgICAgIHByZXZlbnRBc3NpZ25tZW50OiB0cnVlLFxuICAgICAgICAgIGRlbGltaXRlcnM6IFtcIlwiLCBcIlwiXSxcbiAgICAgICAgICB2YWx1ZXM6IHsgXCIjI1ZFUlNJT04jI1wiOiB2ZXJzaW9uLCBcIiMjUEFDS0FHRSMjXCI6IHBrZy5uYW1lIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB0eXBlc2NyaXB0KHtcbiAgICAgICAgICB0c2NvbmZpZzogXCIuL3RzY29uZmlnLmpzb25cIixcbiAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIG91dERpcjogXCJjb250cmFjdHNcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vZHVsZTogXCJlc25leHRcIixcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGF3YWl0IGJ1bmRsZS53cml0ZSh7XG4gICAgICBmaWxlOiBcIi4vY29udHJhY3RzL0dsb2JhbENvbnRyYWN0LmpzXCIsXG4gICAgICBmb3JtYXQ6IFwidW1kXCIsXG4gICAgICBuYW1lOiBcIkdsb2JhbENvbnRyYWN0LmpzXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY3JpcHRzID0ge1xuICAgICAgc3RhcnQ6IG9wdGlvbnMuZGVidWdcbiAgICAgICAgPyBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAvdXNyL2xvY2FsL3NyYy9ub2RlX21vZHVsZXMvLmJpbi9mYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnRcIlxuICAgICAgICA6IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0XCIsXG4gICAgICBcInN0YXJ0OmRldlwiOlxuICAgICAgICAnZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IC0tcGVlci5hZGRyZXNzIFwiMTI3LjAuMC4xOjg1NDFcIiAtLWNoYWluY29kZS1pZC1uYW1lIFwiY2hhaW5jb2RlMTowLjAuMVwiIC0tdGxzLmVuYWJsZWQgZmFsc2UnLFxuICAgICAgXCJzdGFydDp3YXRjaFwiOiAnbm9kZW1vbiAtLWV4ZWMgXCJucG0gcnVuIHN0YXJ0OmRldlwiJyxcbiAgICAgIGJ1aWxkOiAnZWNobyBcIk5vIG5lZWQgdG8gYnVpbGQgdGhlIGNoYWluY29kZVwiJyxcbiAgICAgIGxpbnQ6IFwiZXNsaW50IC4gLS1maXggLS1leHQgLmpzXCIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnRyYWN0UGFja2FnZSA9IHBrZztcblxuICAgIGNvbnRyYWN0UGFja2FnZS5uYW1lID0gXCJnbG9iYWwtY29udHJhY3RcIjtcbiAgICBjb250cmFjdFBhY2thZ2UuZGVzY3JpcHRpb24gPSBcIkdsb2JhbCBjb250cmFjdCBpbXBsZW1lbnRhdGlvblwiO1xuICAgIGNvbnRyYWN0UGFja2FnZS5zY3JpcHRzID0gc2NyaXB0cztcblxuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZTtcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGVzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UuZXhwb3J0cztcbiAgICBjb250cmFjdFBhY2thZ2UubWFpbiA9IFwiR2xvYmFsQ29udHJhY3QuanNcIjtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2NvbnRyYWN0cy9wYWNrYWdlLmpzb25cIiksXG4gICAgICBKU09OLnN0cmluZ2lmeShjb250cmFjdFBhY2thZ2UpXG4gICAgKTtcblxuICAgIGV4ZWNTeW5jKFwiY2QgLi9jb250cmFjdHMgJiYgbnBtIGluc3RhbGxcIik7XG4gICAgZXhlY1N5bmMoXCJjZCAuL2NvbnRyYWN0cyAmJiBucG0gc2hyaW5rd3JhcFwiKTtcbiAgICBleGVjU3luYyhcImNkIC4vY29udHJhY3RzICYmIHJtIC1yZiBub2RlX21vZHVsZXNcIik7XG5cbiAgICBleGVjU3luYyhcInJtIC1yZiAuL2NvbnRyYWN0cy9saWIgJiYgcm0gLXJmIC4vY29udHJhY3RzL2Rpc3RcIik7XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG4iXX0=
@@ -22,4 +22,4 @@ program
22
22
  await adapter["index"](folder);
23
23
  });
24
24
  program.parse(process.argv);
25
- //# sourceMappingURL=compile-indexes.js.map
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS1pbmRleGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jb21waWxlLWluZGV4ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw2QkFBd0I7QUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osT0FBTyxDQUFDLGlCQUFpQixDQUFDO0tBQzFCLFdBQVcsQ0FDViwyRUFBMkUsQ0FDNUU7S0FDQSxNQUFNLENBQUMsUUFBUSxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQztLQUN2RCxNQUFNLENBQUMsVUFBVSxFQUFFLDJDQUEyQyxFQUFFLEtBQUssQ0FBQztLQUN0RSxNQUFNLENBQUMsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLEtBQUssQ0FBQztLQUNqRSxNQUFNLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssQ0FBQztLQUM3RCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQzdCLHdDQUF3QztJQUN4QyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUUvQixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQ2xCLE1BQU0sSUFBSSxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUUxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFtQixDQUFDLEVBQVMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBRUwsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IEZhYnJpY0NsaWVudEFkYXB0ZXIgfSBmcm9tIFwiLi4vY2xpZW50L2luZGV4XCI7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcImNvbXBpbGUtaW5kZXhlc1wiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAub3B0aW9uKFwiLS1maWxlXCIsIFwicGF0aCB0byB0aGUgTW9kZWwgQ2xhc3MgZmlsZVwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tZm9sZGVyXCIsIFwicGF0aCB0byB0aGUgZm9sZGVyIHdpdGggTW9kZWwgQ2xhc3MgRmlsZXNcIiwgZmFsc2UpXG4gIC5vcHRpb24oXCItLWRldlwiLCBcImNvbXBpbGVzIGNvbnRyYWN0cyB3aXRob3V0IG1pbmlmaWNhdGlvblwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tZGVidWdcIiwgXCJtYWtlcyBhdHRhY2hpbmcgZGVidWdnZXIgcG9zc2libGVcIiwgZmFsc2UpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBmaWxlLCBmb2xkZXIgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgZm9sZGVyID0gcGF0aC5kaXJuYW1lKGZpbGUpO1xuICAgIH1cblxuICAgIGlmICghZmlsZSAmJiAhZm9sZGVyKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE11c3QgcGFzcyBhIGZpbGUgb3IgYSBmb2xkZXJgKTtcblxuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgRmFicmljQ2xpZW50QWRhcHRlcih7fSBhcyBhbnkpO1xuICAgIGF3YWl0IGFkYXB0ZXJbXCJpbmRleFwiXShmb2xkZXIpO1xuICB9KTtcblxucHJvZ3JhbS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuIl19
@@ -130,4 +130,4 @@ export default function fabric() {
130
130
  mainCommand.addCommand(ensureInfra);
131
131
  return mainCommand;
132
132
  }
133
- //# sourceMappingURL=cli-module.js.map
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVyQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRTtLQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7S0FDeEIsV0FBVyxDQUFDLDJCQUEyQixDQUFDO0tBQ3hDLE1BQU0sQ0FBQyxPQUFPLEVBQUUseUNBQXlDLEVBQUUsS0FBSyxDQUFDO0tBQ2pFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDO0tBQzVELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7S0FDN0QsTUFBTSxDQUNMLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsZ0NBQWdDLENBQ2pDO0tBQ0EsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLGVBQWUsQ0FBQztLQUN6RSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUUsYUFB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QUF3QztJQUN4QyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFdEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDL0QsUUFBUSxDQUFDLFVBQVUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVMLE1BQU0sQ0FBQyxPQUFPLFVBQVUsTUFBTTtJQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRTtTQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsV0FBVyxDQUNWLG1FQUFtRSxDQUNwRSxDQUFDO0lBRUosV0FBVyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgcnVuQ29tbWFuZCB9IGZyb20gXCJAZGVjYWYtdHMvdXRpbHNcIjtcbmltcG9ydCB7IExvZ2dpbmcsIHRvUGFzY2FsQ2FzZSB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHJvbGx1cCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCByZXBsYWNlIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1yZXBsYWNlXCI7XG5pbXBvcnQgdHlwZXNjcmlwdCBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBMb2dnaW5nLmZvcihcImZhYnJpY1wiKTtcblxuY29uc3QgY29tcGlsZUNvbW1hbmQgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiY29tcGlsZS1jb250cmFjdFwiKVxuICAuZGVzY3JpcHRpb24oXCJDcmVhdGVzIGEgZ2xvYmFsIGNvbnRyYWN0XCIpXG4gIC5vcHRpb24oXCItLWRldlwiLCBcImNvbXBpbGVzIGNvbnRyYWN0cyB3aXRob3V0IG1pbmlmaWNhdGlvblwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tZGVidWdcIiwgXCJtYWtlcyBhdHRhY2hpbmcgZGVidWdnZXIgcG9zc2libGVcIiwgdHJ1ZSlcbiAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcImNvbnRyYWN0IG5hbWVcIiwgXCJnbG9iYWwtY29udHJhY3RcIilcbiAgLm9wdGlvbihcbiAgICBcIi0tZGVzY3JpcHRpb24gPFN0cmluZz5cIixcbiAgICBcImNvbnRyYWN0IGRlc2NyaXB0aW9uXCIsXG4gICAgXCJHbG9iYWwgY29udHJhY3QgaW1wbGVtZW50YXRpb25cIlxuICApXG4gIC5vcHRpb24oXCItLWlucHV0IDxTdHJpbmc+XCIsIFwiaW5wdXQgZm9sZGVyIGZvciBjb250cmFjdHNcIiwgXCJzcmMvY29udHJhY3RzXCIpXG4gIC5vcHRpb24oXCItLW91dHB1dCA8U3RyaW5nPlwiLCBcIm91dHB1dCBmb2xkZXIgZm9yIGNvbnRyYWN0c1wiLCBcIi4vY29udHJhY3RzXCIpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcblxuICAgIGNvbnN0IHsgZGV2LCBkZWJ1ZywgbmFtZSwgZGVzY3JpcHRpb24sIG91dHB1dCwgaW5wdXQgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImNvbXBpbGUtY29udHJhY3RcIik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG5cbiAgICBsb2cuaW5mbyhgRGVsZXRpbmcgZXhpc3Rpbmcgb3V0cHV0IGZvbGRlciAoaWYgZXhpc3RzKSB1bmRlciAke291dHB1dH1gKTtcbiAgICBleGVjU3luYyhgcm0gLXJmICR7b3V0cHV0fWApO1xuICAgIGxvZy5pbmZvKGBidW5kbGluZyBjb250cmFjdCBmcm9tICR7aW5wdXR9YCk7XG4gICAgY29uc3QgYnVuZGxlID0gYXdhaXQgcm9sbHVwKHtcbiAgICAgIGlucHV0OiBgJHtpbnB1dH0vaW5kZXgudHNgLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICByZXBsYWNlKHtcbiAgICAgICAgICBwcmV2ZW50QXNzaWdubWVudDogdHJ1ZSxcbiAgICAgICAgICBkZWxpbWl0ZXJzOiBbXCJcIiwgXCJcIl0sXG4gICAgICAgICAgdmFsdWVzOiB7IFwiIyNWRVJTSU9OIyNcIjogdmVyc2lvbiwgXCIjI1BBQ0tBR0UjI1wiOiBwa2cubmFtZSB9LFxuICAgICAgICB9KSxcbiAgICAgICAgdHlwZXNjcmlwdCh7XG4gICAgICAgICAgdHNjb25maWc6IFwiLi90c2NvbmZpZy5qc29uXCIsXG4gICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBvdXREaXI6IG91dHB1dCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vZHVsZTogXCJlc25leHRcIixcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGB3aXRoaW5nIGNvbnRyYWN0IHRvICR7b3V0cHV0fSB3aXRoIG5hbWUgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYFxuICAgICk7XG4gICAgYXdhaXQgYnVuZGxlLndyaXRlKHtcbiAgICAgIGZpbGU6IGAke291dHB1dH0vJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCxcbiAgICAgIGZvcm1hdDogXCJ1bWRcIixcbiAgICAgIG5hbWU6IGAke3RvUGFzY2FsQ2FzZShuYW1lKX0uanNgLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2NyaXB0cyA9IHtcbiAgICAgIHN0YXJ0OiBkZWJ1Z1xuICAgICAgICA/IFwibm9kZSAtLWluc3BlY3Q9MC4wLjAuMDo5MjI5IC91c3IvbG9jYWwvc3JjL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydFwiXG4gICAgICAgIDogXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnRcIixcbiAgICAgIFwic3RhcnQ6ZGV2XCI6XG4gICAgICAgICdmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnQgLS1wZWVyLmFkZHJlc3MgXCIxMjcuMC4wLjE6ODU0MVwiIC0tY2hhaW5jb2RlLWlkLW5hbWUgXCJjaGFpbmNvZGUxOjAuMC4xXCIgLS10bHMuZW5hYmxlZCBmYWxzZScsXG4gICAgICBcInN0YXJ0OndhdGNoXCI6ICdub2RlbW9uIC0tZXhlYyBcIm5wbSBydW4gc3RhcnQ6ZGV2XCInLFxuICAgICAgYnVpbGQ6ICdlY2hvIFwiTm8gbmVlZCB0byBidWlsZCB0aGUgY2hhaW5jb2RlXCInLFxuICAgICAgbGludDogXCJlc2xpbnQgLiAtLWZpeCAtLWV4dCAuanNcIixcbiAgICB9O1xuXG4gICAgY29uc3QgY29udHJhY3RQYWNrYWdlID0gcGtnO1xuXG4gICAgY29udHJhY3RQYWNrYWdlLm5hbWUgPSBuYW1lO1xuICAgIGNvbnRyYWN0UGFja2FnZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIGNvbnRyYWN0UGFja2FnZS5zY3JpcHRzID0gc2NyaXB0cztcblxuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZTtcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGVzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UuZXhwb3J0cztcbiAgICBjb250cmFjdFBhY2thZ2UubWFpbiA9IGAke3RvUGFzY2FsQ2FzZShuYW1lKX0uanNgO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihvdXRwdXQsIFwicGFja2FnZS5qc29uXCIpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoY29udHJhY3RQYWNrYWdlKVxuICAgICk7XG5cbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBhbmQgc2hyaW5rd3JhcHBpbmcgZGVwZW5kZW5jaWVzYCk7XG4gICAgZXhlY1N5bmMoYGNkICR7b3V0cHV0fSAmJiBucG0gaW5zdGFsbGApO1xuICAgIGV4ZWNTeW5jKGBjZCAke291dHB1dH0gJiYgbnBtIHNocmlua3dyYXBgKTtcbiAgICBleGVjU3luYyhcImNkICR7b3V0cHV0fSAmJiBybSAtcmYgbm9kZV9tb2R1bGVzXCIpO1xuXG4gICAgbG9nLmluZm8oYGRlbGV0aW5nIHRlbXAgZm9sZGVyc2ApO1xuICAgIGV4ZWNTeW5jKGBybSAtcmYgJHtvdXRwdXR9L2xpYiAmJiBybSAtcmYgJHtvdXRwdXR9L2Rpc3RgKTtcbiAgfSk7XG5cbmNvbnN0IGVuc3VyZUluZnJhID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImF3YWl0LWluZnJhXCIpXG4gIC5kZXNjcmlwdGlvbihcIndhaXRzIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gYmUgdXAgYW5kIHJ1bm5pbmdcIilcbiAgLm9wdGlvbihcbiAgICBcIi0tY29udGFpbmVyIDxTdHJpbmc+XCIsXG4gICAgXCJkb2NrZXIgY29udGFpbmVyIG5hbWUgdG8gdGVzdCAodXN1YWxseSBsYXN0IHBlZXIpXCIsXG4gICAgXCJib290LW9yZy1jLXBlZXItMFwiXG4gIClcbiAgLm9wdGlvbihcIi0tdGltZW91dCA8U3RyaW5nPlwiLCBcInRpbWVvdXQgYmV0d2VlbiB0ZXN0cyBpbiBtaWxsaXNlY29uZHNcIiwgXCI1MDAwXCIpXG4gIC5vcHRpb24oXCItLWF0dGVtcHRzIDxTdHJpbmc+XCIsIFwibnVtYmVyIG9mIGF0dGVtcHRzIGJlZm9yZSBnaXZpbmcgdXBcIiwgXCIxMFwiKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgY29udGFpbmVyLCB0aW1lb3V0LCBhdHRlbXB0cyB9ID0gb3B0aW9ucztcbiAgICB0aW1lb3V0ID0gcGFyc2VJbnQodGltZW91dCkgfHwgNTAwMDtcbiAgICBhdHRlbXB0cyA9IHBhcnNlSW50KGF0dGVtcHRzKSB8fCAxMDtcbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiYXdhaXQtaW5mcmFcIik7XG4gICAgZnVuY3Rpb24gZGlkSW5mcmFzdHJ1Y3R1cmVCb290KCk6IGJvb2xlYW4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoXG4gICAgICAgICAgYGRvY2tlciBpbnNwZWN0ICR7Y29udGFpbmVyfSAtLWZvcm1hdD0ne3suU3RhdGUuRXhpdENvZGV9fSdgXG4gICAgICAgIClcbiAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgIC50cmltKCk7XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dCA9PT0gXCIwXCI7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgaW5zcGVjdGluZyBjb250YWluZXI6XCIsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHdoaWxlICghZGlkSW5mcmFzdHJ1Y3R1cmVCb290KCkpIHtcbiAgICAgIGlmICgtLWF0dGVtcHRzIDw9IDApIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiZXhjZWVkZWQgYWxsb3dlZCBhdHRlbXB0c1wiKTtcbiAgICAgIGxvZy5pbmZvKFwiV2FpdGluZyBmb3IgaW5mcmFzdHJ1Y3R1cmUgdG8gYm9vdC4uLlwiKTtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIHRpbWVvdXQpKTsgLy8gV2FpdCBmb3IgNSBzZWNvbmRzIGJlZm9yZSByZXRyeWluZ1xuICAgIH1cblxuICAgIGxvZy5pbmZvKFxuICAgICAgYEluZnJhc3RydWN0dXJlIGJvb3RlZCBzdWNjZXNzZnVsbHkgKGFjY29yZGluZyB0byBjb250YWluZXIgJHtjb250YWluZXJ9KSFgXG4gICAgKTtcbiAgfSk7XG5cbmNvbnN0IGNvcHlDb250cmFjdHMgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiY29weS1jb250cmFjdHNcIilcbiAgLmRlc2NyaXB0aW9uKFxuICAgIFwiY29waWVzIHRoZSBjb250cmFjdHMgdG8gdGhlIGZvbGRlciB0aGV5J2xsIGJlIGNvbnN1bWVkIGJ5IGZhYnJpY1wiXG4gIClcbiAgLm9wdGlvbihcIi0taW5wdXQgPFN0cmluZz5cIiwgXCJpbnB1dCBmb2xkZXJcIiwgXCIuL2NvbnRyYWN0c1wiKVxuICAub3B0aW9uKFxuICAgIFwiLS1uYW1lIDxTdHJpbmc+XCIsXG4gICAgXCJjb250cmFjdCBuYW1lIChhbmQgZm9sZGVyIG5hbWUgd2l0aGluIGlucHV0IGZvbGRlcilcIixcbiAgICBcImdsb2JhbC1jb250cmFjdFwiXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tb3V0cHV0IDxTdHJpbmc+XCIsXG4gICAgXCJvdXRwdXQgZm9sZGVyXCIsXG4gICAgXCIuL2RvY2tlci9pbmZyYXN0cnVjdHVyZS9jaGFpbmNvZGVcIlxuICApXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBpbnB1dCwgb3V0cHV0LCBuYW1lIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImNvcHktY29udHJhY3RzXCIpO1xuICAgIGNvbnN0IGlucHV0UGF0aCA9IHBhdGguam9pbihpbnB1dCwgbmFtZSk7XG4gICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGguam9pbihvdXRwdXQsIG5hbWUpO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyBwcmV2aW91cyBjb250cmFjdCBmb2xkZXIgYXQgJHtvdXRwdXRQYXRofWApO1xuICAgIGV4ZWNTeW5jKGBybSAtcmYgJHtvdXRwdXRQYXRofWApO1xuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmFicmljKCkge1xuICBjb25zdCBtYWluQ29tbWFuZCA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImZhYnJpY1wiKVxuICAgIC5kZXNjcmlwdGlvbihcbiAgICAgIFwiZXhwb3NlcyBzZXZlcmFsIGNvbW1hbmRzIHRvIGhlbHAgbWFuYWdlIHRoZSBmYWJyaWMgaW5mcmFzdHJ1Y3R1cmVcIlxuICAgICk7XG5cbiAgbWFpbkNvbW1hbmQuYWRkQ29tbWFuZChjb21waWxlQ29tbWFuZCk7XG4gIG1haW5Db21tYW5kLmFkZENvbW1hbmQoZW5zdXJlSW5mcmEpO1xuXG4gIHJldHVybiBtYWluQ29tbWFuZDtcbn1cbiJdfQ==
@@ -25,6 +25,7 @@ import { generateModelIndexes, readModelFolders, writeIndexes, } from "./indexes
25
25
  import { FabricClientStatement } from "./FabricClientStatement.js";
26
26
  import { FabricClientPaginator } from "./FabricClientPaginator.js";
27
27
  import { FabricClientRepository } from "./FabricClientRepository.js";
28
+ import { EndorsementError } from "./../shared/errors.js";
28
29
  /**
29
30
  * @description Adapter for interacting with Hyperledger Fabric networks
30
31
  * @summary The FabricAdapter extends CouchDBAdapter to provide a seamless interface for interacting with Hyperledger Fabric networks.
@@ -745,6 +746,12 @@ export class FabricClientAdapter extends Adapter {
745
746
  // )
746
747
  // )
747
748
  // return new UnauthorizedPrivateDataAccess(err) as E;
749
+ if (err instanceof Error && err.code) {
750
+ switch (err.code) {
751
+ case 9:
752
+ return new EndorsementError(err);
753
+ }
754
+ }
748
755
  const msg = typeof err === "string" ? err : err.message;
749
756
  if (msg.includes(NotFoundError.name))
750
757
  return new NotFoundError(err);
@@ -815,4 +822,4 @@ __decorate([
815
822
  ], FabricClientAdapter.prototype, "raw", null);
816
823
  FabricClientAdapter.decoration();
817
824
  Adapter.setCurrent(FabricFlavour);
818
- //# sourceMappingURL=FabricClientAdapter.js.map
825
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50QWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvRmFicmljQ2xpZW50QWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsd0NBQTZCO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsS0FBSyxHQUdOLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFNMUQsT0FBTyxFQUNMLE9BQU8sR0FPUixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLHVCQUFvQjtBQUNyRCxPQUFPLEVBRUwsYUFBYSxFQUNiLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixhQUFhLEVBQ2IsZUFBZSxHQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUVQLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGVBQWUsRUFDZixVQUFVLEVBRVYsZ0JBQWdCLEdBT2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQ0FBNEI7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdDQUFtQztBQUU5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXFCO0FBRXRELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDYiwyQkFBd0I7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFnQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUNBQWdDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQ0FBaUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDhCQUF5QjtBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsT0FLeEM7SUFDQzs7T0FFRzthQUNZLFlBQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQUFBMUIsQ0FBMkI7YUFFbEMsZUFBVSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQUFBekIsQ0FBMEI7YUFFbEMsUUFBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQUFBbkMsQ0FBb0M7SUFLeEQ7Ozs7O09BS0c7SUFDSCxZQUFZLE1BQWtCLEVBQUUsS0FBYztRQUM1QyxLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVZuQixlQUFVLEdBQzNCLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztJQVVqQyxDQUFDO0lBRVEsU0FBUyxDQUNoQixTQUFpQztRQUVqQyxPQUFPLElBQUkscUJBQXFCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxTQUFTLENBQ1AsS0FBMEMsRUFDMUMsSUFBWSxFQUNaLEtBQXFCO1FBRXJCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRVEsS0FBSyxDQUFDLE9BQU8sQ0FDcEIsU0FLVSxFQUNWLFNBQStCLEVBQy9CLEtBQXdDLEVBQ3hDLEdBQUcsSUFBVztRQUVkLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsS0FBSyxDQUNQLDRCQUE0QixTQUFTLGlCQUFpQixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLCtCQUErQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQzdLLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFnQjtRQUNyQixPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVRLFVBQVU7UUFNakIsT0FBTyxzQkFBbUQsQ0FBQztJQUM3RCxDQUFDO0lBRVMsWUFBWSxDQUNwQixLQUFxQixFQUNyQixFQUFrQixFQUNsQixLQUEwQixFQUMxQixHQUFHLElBQThDO1FBRWpELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLGVBQWUsQ0FDdkIsS0FBcUIsRUFDckIsR0FBd0IsRUFDeEIsTUFBNkIsRUFDN0IsR0FBRyxJQUE4QztRQUVqRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTTtZQUM5QixNQUFNLElBQUksYUFBYSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BDLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDckMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVMsZUFBZSxDQUN2QixLQUFxQixFQUNyQixHQUFxQixFQUNyQixNQUE2QixFQUM3QixHQUFHLElBQThDO1FBRWpELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNO1lBQzlCLE1BQU0sSUFBSSxhQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUN0RSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTSxLQUFLLENBQUMsU0FBUyxDQUN0QixLQUFxQixFQUNyQixHQUFxQixFQUNyQixNQUE2QixFQUM3QixHQUFHLElBQTBDO1FBRTdDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTTtZQUM5QixNQUFNLElBQUksYUFBYSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFJLElBQXlCLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUF5QixDQUFDO1FBQ3pELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUN6QixPQUErQyxFQUMvQyxJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxlQUFlLFNBQVMsUUFBUSxDQUFDLENBQUM7UUFDL0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ3pDLHFCQUFxQixDQUFDLFVBQVUsRUFDaEMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ2xFLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUNWLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxDQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNNLEtBQUssQ0FBQyxPQUFPLENBQ3BCLEtBQXFCLEVBQ3JCLEdBQXFCLEVBQ3JCLEdBQUcsSUFBMEM7UUFFN0MsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxlQUFlLFNBQVMsUUFBUSxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQzNDLHFCQUFxQixDQUFDLFFBQVEsRUFDOUIsQ0FBQyxHQUFHLENBQUMsRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsQ0FDVixDQUFDO1FBQ0YsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksa0JBQWtCLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNNLEtBQUssQ0FBQyxTQUFTLENBQ3RCLEtBQXFCLEVBQ3JCLEdBQXFCLEVBQ3JCLE1BQTZCLEVBQzdCLEdBQUcsSUFBMEM7UUFFN0MsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNO1lBQzlCLE1BQU0sSUFBSSxhQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUN0RSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUksSUFBeUIsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQXlCLENBQUM7UUFDekQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQ3pCLE9BQStDLEVBQy9DLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLGVBQWUsU0FBUyxRQUFRLENBQUMsQ0FBQztRQUNqRSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUUzQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FDekMscUJBQXFCLENBQUMsVUFBVSxFQUNoQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDbEUsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLENBQUMsSUFBSSxDQUNYLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxDQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTSxLQUFLLENBQUMsU0FBUyxDQUN0QixLQUFxQixFQUNyQixHQUFxQixFQUNyQixHQUFHLElBQTBDO1FBRTdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLE1BQU0sZUFBZSxTQUFTLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUN6QyxxQkFBcUIsQ0FBQyxVQUFVLEVBQ2hDLENBQUMsR0FBRyxDQUFDLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLENBQUMsSUFBSSxDQUNYLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxDQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ00sT0FBTyxDQUNkLEtBQVEsRUFDUixHQUFHLElBQTBDO1FBRTdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFLLEtBQWEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxHQUFHLENBQUMsS0FBSyxDQUNQLDBDQUEyQyxLQUFhLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ3JGLENBQUM7WUFDRixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRTtnQkFDM0QsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFlBQVksRUFBRSxJQUFJO2dCQUNsQixLQUFLLEVBQUcsS0FBYSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7YUFDaEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBNkIsQ0FBQyxDQUFXO1lBQ2xFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBRWEsQUFBTixLQUFLLENBQUMsS0FBSyxDQUNuQixHQUFHLElBR0Y7UUFFRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBNEIsQ0FDdEMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25CLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztZQUN2QyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLEdBQUcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVCxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEUsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixDQUFDLENBQUM7UUFDckUsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUdZLEFBQU4sS0FBSyxDQUFDLE1BQU0sQ0FDbkIsS0FBcUIsRUFDckIsRUFBa0IsRUFDbEIsS0FBMEIsRUFDMUIsWUFBaUMsRUFBRSxFQUNuQyxHQUFHLElBQTBDO1FBRTdDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBSSxJQUF5QixDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQ3pCLE9BQStDLEVBQy9DLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsU0FBUyxRQUFRLENBQUMsQ0FBQztRQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FDekMsYUFBYSxDQUFDLE1BQU0sRUFDcEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzlDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxDQUFDLElBQUksQ0FDWCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUdHLEFBQU4sS0FBSyxDQUFDLElBQUksQ0FDUixLQUFxQixFQUNyQixFQUFrQixFQUNsQixHQUFHLElBQTBDO1FBRTdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxHQUFHLENBQUMsT0FBTyxDQUFDLHNCQUFzQixTQUFTLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUMzQyxhQUFhLENBQUMsSUFBSSxFQUNsQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUNmLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxDQUFDLElBQUksQ0FDWCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFlBQVksQ0FDVixLQUFxQixFQUNyQixFQUFrQixFQUNsQixLQUEwQixFQUMxQixHQUFHLElBQThDO1FBRWpELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RCxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLDJEQUEyRDtRQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFHRyxBQUFOLEtBQUssQ0FBQyxNQUFNLENBQ1YsS0FBcUIsRUFDckIsRUFBa0IsRUFDbEIsS0FBMEIsRUFDMUIsWUFBaUMsRUFBRSxFQUNuQyxHQUFHLElBQTBDO1FBRTdDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBSSxJQUF5QixDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQ3pCLE9BQStDLEVBQy9DLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztRQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLFNBQVMsUUFBUSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ3pDLGFBQWEsQ0FBQyxNQUFNLEVBQ3BCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSx3REFBd0Q7UUFDakgsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLENBQUMsSUFBSSxDQUNYLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBR1ksQUFBTixLQUFLLENBQUMsTUFBTSxDQUNuQixLQUFxQixFQUNyQixFQUFrQixFQUNsQixHQUFHLElBQTBDO1FBRTdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxHQUFHLENBQUMsT0FBTyxDQUFDLHVCQUF1QixTQUFTLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUN6QyxhQUFhLENBQUMsTUFBTSxFQUNwQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUNmLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxDQUFDLElBQUksQ0FDWCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFFRyxBQUFOLEtBQUssQ0FBQyxHQUFHLENBQ1AsUUFBb0IsRUFDcEIsV0FBYyxJQUFTLEVBQ3ZCLEtBQTRCLEVBQzVCLEdBQUcsSUFBMEM7UUFFN0MsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUNBQXFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksaUJBQXNCLENBQUM7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQ2hELEtBQUssRUFDTCxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQ3BDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUNWLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksTUFBVyxDQUFDO1FBQ2hCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUF3QixFQUFFLEVBQUU7WUFDL0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUFFLE9BQU8sTUFBVyxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNuQiw4Q0FBOEM7Z0JBQzlDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBTSxDQUFDO1lBQ2xELE9BQU8sTUFBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxNQUFhLENBQU0sQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNNLFNBQVM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLEtBQUssQ0FBQyxPQUFPO1FBQ3JCLE9BQU8sbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBa0I7UUFDeEMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsU0FBUyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQXFCO1FBQzVDLE9BQU8sbUJBQW1CLENBQUMsV0FBVyxDQUNwQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ08sS0FBSyxDQUFDLFdBQVcsQ0FDekIsR0FBVyxFQUNYLE1BQU0sR0FBRyxJQUFJLEVBQ2IsSUFBWSxFQUNaLGFBQXNDLEVBQ3RDLHNCQUFzQyxFQUN0QyxTQUFrQjtRQUVsQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN0RSxHQUFHLENBQUMsT0FBTyxDQUNULEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsb0JBQW9CLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksR0FBRyxFQUFFLENBQzFILENBQUM7WUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBRTVELHNCQUFzQixHQUFHLHNCQUFzQixFQUFFLE1BQU07Z0JBQ3JELENBQUMsQ0FBQyxzQkFBc0I7Z0JBQ3hCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDZCxNQUFNLGVBQWUsR0FBb0I7Z0JBQ3ZDLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDckIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLDBFQUEwRTthQUMzRSxDQUFDO1lBRUYsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNNLFVBQVUsQ0FBc0IsR0FBbUI7UUFDMUQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUksR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUNyQixHQUFXLEVBQ1gsSUFBWSxFQUNaLGFBQXNDLEVBQ3RDLHNCQUFzQyxFQUN0QyxTQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQ3JCLEdBQUcsRUFDSCxJQUFJLEVBQ0osSUFBSSxFQUNKLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsU0FBUyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLEdBQVcsRUFDWCxJQUFZLEVBQ1osYUFBc0MsRUFDdEMsc0JBQXNDLEVBQ3RDLFNBQWtCO1FBRWxCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDckIsR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osYUFBYSxFQUNiLHNCQUFzQixFQUN0QixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUNoQixPQUFnQixFQUNoQixNQUFrQixFQUNsQixZQUFxQjtRQUVyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELElBQUksUUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxHQUFHLENBQUMsS0FBSyxDQUNQLHdCQUF3QixNQUFNLENBQUMsYUFBYSxhQUFhLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxpQkFBaUIsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUM5SCxDQUFDO1lBQ0YsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQ2pFLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFnQixFQUFFLFdBQW1CO1FBQ3JELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBZ0IsQ0FBQztRQUNyQixJQUFJLENBQUM7WUFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLHlCQUF5QixXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQWtCLEVBQUUsTUFBZTtRQUN6RCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUM5QixNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDeEMsTUFBTSxDQUNQLENBQVksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWtCO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxHQUFHLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDL0MsT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFDaEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztRQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMscUNBQXFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdUJHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBYyxFQUFFLE1BQWtCO1FBQzNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxLQUFLLENBQ1AsZ0NBQWdDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQ3ZGLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FDaEMsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsdUJBQThCLENBQ3RDLENBQUM7UUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLDhCQUE4QixNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksTUFBYyxFQUNoQixLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEIsTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxzQkFBNkIsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyx5QkFBeUIsQ0FDOUMsTUFBTSxDQUFDLHVCQUE4QixDQUN0QyxDQUFDO1lBQ0YsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztnQkFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBb0I7Z0JBQ3RDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQVc7Z0JBQ3JDLFVBQVUsRUFBRSxVQUFVO2dCQUN0Qiw2QkFBNkI7YUFDOUIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFFN0IsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTTtZQUNOLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsNENBQTRDO1lBQzVDLGVBQWUsRUFBRSxHQUFHLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWTtZQUN0RCxDQUFDO1lBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDbkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFhO1lBQ3hELENBQUM7WUFDRCxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVk7WUFDdEQsQ0FBQztZQUNELG1CQUFtQixFQUFFLEdBQUcsRUFBRTtnQkFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXO1lBQ3RELENBQUM7U0FDZ0IsQ0FBQztRQUVwQixHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakMsaUJBQWlCO1FBQ2pCLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUN2QyxLQUFLLENBQUMsTUFBa0IsRUFBRSxPQUFZLEVBQUUsUUFBZTtvQkFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUN6QyxLQUFLLEVBQUUsQ0FBQztnQkFDVixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNNLFFBQVE7UUFDZixPQUFPLElBQUksbUJBQW1CLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sTUFBTSxDQUFDLFVBQVUsQ0FBc0IsR0FBbUI7UUFDbEUsT0FBTztRQUNQLHFDQUFxQztRQUNyQyxrREFBa0Q7UUFDbEQsTUFBTTtRQUNOLElBQUk7UUFDSix3REFBd0Q7UUFFeEQsSUFBSSxHQUFHLFlBQVksS0FBSyxJQUFLLEdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxRQUFTLEdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDMUIsS0FBSyxDQUFDO29CQUNKLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQU0sQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3hELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQU0sQ0FBQztRQUN6RSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDekUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDcEMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQU0sQ0FBQztRQUN2QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDbkUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ3JFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDckMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQ3hDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQU0sQ0FBQztRQUMzRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDekUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUN2QyxPQUFPLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDMUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQzNFLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDdkMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUN2QyxPQUFPLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFNLENBQUM7UUFDMUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQU0sQ0FBQztJQUNyQyxDQUFDOztBQXpvQmU7SUFEZixLQUFLLEVBQUU7Ozs7Z0RBNkJQO0FBYWM7SUFGZCxLQUFLLEVBQUU7SUFDUCxLQUFLLEVBQUU7O3FFQU1rQixPQUFPOztpREFrQmhDO0FBV0s7SUFGTCxLQUFLLEVBQUU7SUFDUCxLQUFLLEVBQUU7O3FEQUlrQixPQUFPOzsrQ0FlaEM7QUE0Qks7SUFGTCxLQUFLLEVBQUU7SUFDUCxLQUFLLEVBQUU7O3FFQU1rQixPQUFPOztpREFtQmhDO0FBV2M7SUFGZCxLQUFLLEVBQUU7SUFDUCxLQUFLLEVBQUU7O3FEQUlrQixPQUFPOztpREFjaEM7QUE0Qks7SUFETCxLQUFLLEVBQUU7O2lFQUdJLENBQUMsb0JBQUQsQ0FBQyx3Q0FFYSxPQUFPOzs4Q0F1Q2hDO0FBd1pILG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9zaGFyZWQvb3ZlcnJpZGVzXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cywgdHlwZSBNYW5nb1F1ZXJ5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSBcIkBncnBjL2dycGMtanNcIjtcbmltcG9ydCAqIGFzIGdycGMgZnJvbSBcIkBncnBjL2dycGMtanNcIjtcbmltcG9ydCB7XG4gIE1vZGVsLFxuICB0eXBlIE1vZGVsQ29uc3RydWN0b3IsXG4gIHR5cGUgU2VyaWFsaXplcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgZGVidWcsIGZpbmFsLCBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQge1xuICB0eXBlIEZhYnJpY0ZsYWdzLFxuICB0eXBlIFBlZXJDb25maWcsXG4gIHR5cGUgU2VncmVnYXRlZE1vZGVsLFxufSBmcm9tIFwiLi4vc2hhcmVkL3R5cGVzXCI7XG5pbXBvcnQge1xuICBjb25uZWN0LFxuICB0eXBlIENvbm5lY3RPcHRpb25zLFxuICBHYXRld2F5LFxuICBOZXR3b3JrLFxuICBQcm9wb3NhbE9wdGlvbnMsXG4gIENvbnRyYWN0IGFzIENvbnRyYWt0LFxuICB0eXBlIFNpZ25lcixcbn0gZnJvbSBcIkBoeXBlcmxlZGdlci9mYWJyaWMtZ2F0ZXdheVwiO1xuaW1wb3J0IHsgZ2V0SWRlbnRpdHksIGdldFNpZ25lciB9IGZyb20gXCIuL2ZhYnJpYy1mc1wiO1xuaW1wb3J0IHtcbiAgQmFzZUVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxuICBTZXJpYWxpemF0aW9uRXJyb3IsXG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgTm90Rm91bmRFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgQmFkUmVxdWVzdEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IHR5cGUgUHJpbWFyeUtleVR5cGUgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIENvbnRleHQsXG4gIEFkYXB0ZXIsXG4gIHR5cGUgQWRhcHRlckZsYWdzLFxuICBBdXRob3JpemF0aW9uRXJyb3IsXG4gIENvbm5lY3Rpb25FcnJvcixcbiAgRm9yYmlkZGVuRXJyb3IsXG4gIE1pZ3JhdGlvbkVycm9yLFxuICBPYnNlcnZlckVycm9yLFxuICBQYWdpbmdFcnJvcixcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBRdWVyeUVycm9yLFxuICBSZXBvc2l0b3J5LFxuICBVbnN1cHBvcnRlZEVycm9yLFxuICBTdGF0ZW1lbnQsXG4gIHR5cGUgUHJlcGFyZWRTdGF0ZW1lbnQsXG4gIFBhZ2luYXRvcixcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxuICBDb250ZXh0dWFsQXJncyxcbiAgdHlwZSBQcmVwYXJlZE1vZGVsLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0ZsYXZvdXIgfSBmcm9tIFwiLi4vc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ2xpZW50U2VyaWFsaXplciB9IGZyb20gXCIuLi9zaGFyZWQvQ2xpZW50U2VyaWFsaXplclwiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50RGlzcGF0Y2ggfSBmcm9tIFwiLi9GYWJyaWNDbGllbnREaXNwYXRjaFwiO1xuaW1wb3J0IHsgSFNNU2lnbmVyRmFjdG9yeUN1c3RvbSB9IGZyb20gXCIuL2ZhYnJpYy1oc21cIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7XG4gIGdlbmVyYXRlTW9kZWxJbmRleGVzLFxuICByZWFkTW9kZWxGb2xkZXJzLFxuICB3cml0ZUluZGV4ZXMsXG59IGZyb20gXCIuL2luZGV4ZXMvaW5kZXhcIjtcbmltcG9ydCB7IEZhYnJpY0NsaWVudFN0YXRlbWVudCB9IGZyb20gXCIuL0ZhYnJpY0NsaWVudFN0YXRlbWVudFwiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50UGFnaW5hdG9yIH0gZnJvbSBcIi4vRmFicmljQ2xpZW50UGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IH0gZnJvbSBcIi4vRmFicmljQ2xpZW50UmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgRW5kb3JzZW1lbnRFcnJvciB9IGZyb20gXCIuLi9zaGFyZWQvZXJyb3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFkYXB0ZXIgZm9yIGludGVyYWN0aW5nIHdpdGggSHlwZXJsZWRnZXIgRmFicmljIG5ldHdvcmtzXG4gKiBAc3VtbWFyeSBUaGUgRmFicmljQWRhcHRlciBleHRlbmRzIENvdWNoREJBZGFwdGVyIHRvIHByb3ZpZGUgYSBzZWFtbGVzcyBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggSHlwZXJsZWRnZXIgRmFicmljIG5ldHdvcmtzLlxuICogSXQgaGFuZGxlcyBjb25uZWN0aW9uIG1hbmFnZW1lbnQsIHRyYW5zYWN0aW9uIHN1Ym1pc3Npb24sIGFuZCBDUlVEIG9wZXJhdGlvbnMgYWdhaW5zdCBGYWJyaWMgY2hhaW5jb2RlLlxuICogQHRlbXBsYXRlIFBlZXJDb25maWcgLSBDb25maWd1cmF0aW9uIHR5cGUgZm9yIGNvbm5lY3RpbmcgdG8gYSBGYWJyaWMgcGVlclxuICogQHRlbXBsYXRlIEZhYnJpY0ZsYWdzIC0gRmxhZ3Mgc3BlY2lmaWMgdG8gRmFicmljIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBDb250ZXh0PEZhYnJpY0ZsYWdzPiAtIENvbnRleHQgdHlwZSBjb250YWluaW5nIEZhYnJpYy1zcGVjaWZpYyBmbGFnc1xuICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gZm9yIGNvbm5lY3RpbmcgdG8gYSBGYWJyaWMgcGVlclxuICogQHBhcmFtIGFsaWFzIC0gT3B0aW9uYWwgYWxpYXMgZm9yIHRoZSBhZGFwdGVyIGluc3RhbmNlXG4gKiBAY2xhc3MgRmFicmljQ2xpZW50QWRhcHRlclxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIG5ldyBGYWJyaWNBZGFwdGVyIGluc3RhbmNlXG4gKiBjb25zdCBjb25maWc6IFBlZXJDb25maWcgPSB7XG4gKiAgIG1zcElkOiAnT3JnMU1TUCcsXG4gKiAgIHBlZXJFbmRwb2ludDogJ2xvY2FsaG9zdDo3MDUxJyxcbiAqICAgY2hhbm5lbE5hbWU6ICdteWNoYW5uZWwnLFxuICogICBjaGFpbmNvZGVOYW1lOiAnbXljYycsXG4gKiAgIGNvbnRyYWN0TmFtZTogJ215Y29udHJhY3QnLFxuICogICB0bHNDZXJ0UGF0aDogJy9wYXRoL3RvL3Rscy9jZXJ0JyxcbiAqICAgY2VydERpcmVjdG9yeVBhdGg6ICcvcGF0aC90by9jZXJ0L2RpcicsXG4gKiAgIGtleURpcmVjdG9yeVBhdGg6ICcvcGF0aC90by9rZXkvZGlyJ1xuICogfTtcbiAqXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IEZhYnJpY0FkYXB0ZXIoY29uZmlnLCAnb3JnMS1hZGFwdGVyJyk7XG4gKlxuICogLy8gVXNlIHRoZSBhZGFwdGVyIHRvIGludGVyYWN0IHdpdGggdGhlIEZhYnJpYyBuZXR3b3JrXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBhZGFwdGVyLnJlYWQoJ3VzZXJzJywgJ3VzZXIxJywgbXlTZXJpYWxpemVyKTtcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgRmFicmljQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBHYXRld2F5XG4gKiAgIHBhcnRpY2lwYW50IE5ldHdvcmtcbiAqICAgcGFydGljaXBhbnQgQ29udHJhY3RcbiAqICAgcGFydGljaXBhbnQgQ2hhaW5jb2RlXG4gKlxuICogICBDbGllbnQtPj5GYWJyaWNBZGFwdGVyOiBjcmVhdGUodGFibGVOYW1lLCBpZCwgbW9kZWwsIHRyYW5zaWVudCwgc2VyaWFsaXplcilcbiAqICAgRmFicmljQWRhcHRlci0+PkZhYnJpY0FkYXB0ZXI6IHN1Ym1pdFRyYW5zYWN0aW9uKE9wZXJhdGlvbktleXMuQ1JFQVRFLCBbc2VyaWFsaXplZE1vZGVsXSwgdHJhbnNpZW50KVxuICogICBGYWJyaWNBZGFwdGVyLT4+R2F0ZXdheTogY29ubmVjdCgpXG4gKiAgIEdhdGV3YXktPj5OZXR3b3JrOiBnZXROZXR3b3JrKGNoYW5uZWxOYW1lKVxuICogICBOZXR3b3JrLT4+Q29udHJhY3Q6IGdldENvbnRyYWN0KGNoYWluY29kZU5hbWUsIGNvbnRyYWN0TmFtZSlcbiAqICAgRmFicmljQWRhcHRlci0+PkNvbnRyYWN0OiBzdWJtaXQoYXBpLCBwcm9wb3NhbE9wdGlvbnMpXG4gKiAgIENvbnRyYWN0LT4+Q2hhaW5jb2RlOiBpbnZva2VcbiAqICAgQ2hhaW5jb2RlLS0+PkNvbnRyYWN0OiByZXNwb25zZVxuICogICBDb250cmFjdC0tPj5GYWJyaWNBZGFwdGVyOiByZXN1bHRcbiAqICAgRmFicmljQWRhcHRlci0+PkZhYnJpY0FkYXB0ZXI6IGRlY29kZShyZXN1bHQpXG4gKiAgIEZhYnJpY0FkYXB0ZXItPj5GYWJyaWNBZGFwdGVyOiBzZXJpYWxpemVyLmRlc2VyaWFsaXplKGRlY29kZWRSZXN1bHQpXG4gKiAgIEZhYnJpY0FkYXB0ZXItLT4+Q2xpZW50OiBkZXNlcmlhbGl6ZWRSZXN1bHRcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0NsaWVudEFkYXB0ZXIgZXh0ZW5kcyBBZGFwdGVyPFxuICBQZWVyQ29uZmlnLFxuICBDbGllbnQsXG4gIE1hbmdvUXVlcnksXG4gIENvbnRleHQ8RmFicmljRmxhZ3M+XG4+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdGF0aWMgdGV4dCBkZWNvZGVyIGZvciBjb252ZXJ0aW5nIFVpbnQ4QXJyYXkgdG8gc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKFwidXRmOFwiKTtcblxuICBwcml2YXRlIHN0YXRpYyBzZXJpYWxpemVyID0gbmV3IENsaWVudFNlcmlhbGl6ZXIoKTtcblxuICBwcm90ZWN0ZWQgc3RhdGljIGxvZyA9IExvZ2dpbmcuZm9yKEZhYnJpY0NsaWVudEFkYXB0ZXIpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZXJpYWxpemVyOiBTZXJpYWxpemVyPGFueT4gPVxuICAgIEZhYnJpY0NsaWVudEFkYXB0ZXIuc2VyaWFsaXplcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgRmFicmljQWRhcHRlciBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIG5ldyBhZGFwdGVyIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgSHlwZXJsZWRnZXIgRmFicmljIG5ldHdvcmtcbiAgICogQHBhcmFtIHtQZWVyQ29uZmlnfSBjb25maWcgLSBDb25maWd1cmF0aW9uIGZvciBjb25uZWN0aW5nIHRvIGEgRmFicmljIHBlZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFthbGlhc10gLSBPcHRpb25hbCBhbGlhcyBmb3IgdGhlIGFkYXB0ZXIgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUGVlckNvbmZpZywgYWxpYXM/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihjb25maWcsIEZhYnJpY0ZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIFN0YXRlbWVudDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG92ZXJyaWRlcz86IFBhcnRpYWw8QWRhcHRlckZsYWdzPlxuICApOiBTdGF0ZW1lbnQ8TSwgRmFicmljQ2xpZW50QWRhcHRlciwgYW55LCBNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyBGYWJyaWNDbGllbnRTdGF0ZW1lbnQodGhpcywgb3ZlcnJpZGVzKTtcbiAgfVxuXG4gIFBhZ2luYXRvcjxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHF1ZXJ5OiBQcmVwYXJlZFN0YXRlbWVudDxhbnk+IHwgTWFuZ29RdWVyeSxcbiAgICBzaXplOiBudW1iZXIsXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+XG4gICk6IFBhZ2luYXRvcjxNLCBhbnksIE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IEZhYnJpY0NsaWVudFBhZ2luYXRvcih0aGlzLCBxdWVyeSwgc2l6ZSwgY2xhenopO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgY29udGV4dDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9wZXJhdGlvbjpcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5DUkVBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5SRUFEXG4gICAgICB8IE9wZXJhdGlvbktleXMuVVBEQVRFXG4gICAgICB8IE9wZXJhdGlvbktleXMuREVMRVRFXG4gICAgICB8IHN0cmluZyxcbiAgICBvdmVycmlkZXM6IFBhcnRpYWw8RmFicmljRmxhZ3M+LFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPiB8IENvbnN0cnVjdG9yPE0+W10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxDb250ZXh0PEZhYnJpY0ZsYWdzPj4ge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmNvbnRleHQpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBDcmVhdGluZyBuZXcgY29udGV4dCBmb3IgJHtvcGVyYXRpb259IG9wZXJhdGlvbiBvbiAke0FycmF5LmlzQXJyYXkobW9kZWwpID8gbW9kZWwubWFwKChtKSA9PiBtLm5hbWUpIDogbW9kZWwubmFtZX0gbW9kZWwgd2l0aCBmbGFnIG92ZXJyaWRlczogJHtKU09OLnN0cmluZ2lmeShvdmVycmlkZXMpfWBcbiAgICApO1xuICAgIGNvbnN0IGZsYWdzID0gYXdhaXQgdGhpcy5mbGFncyhvcGVyYXRpb24sIG1vZGVsLCBvdmVycmlkZXMsIC4uLmFyZ3MpO1xuICAgIHJldHVybiBuZXcgQ29udGV4dCgpLmFjY3VtdWxhdGUoZmxhZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWNvZGVzIGEgVWludDhBcnJheSB0byBhIHN0cmluZ1xuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBiaW5hcnkgZGF0YSByZWNlaXZlZCBmcm9tIEZhYnJpYyB0byBhIHN0cmluZyB1c2luZyBVVEYtOCBlbmNvZGluZ1xuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGEgLSBUaGUgYmluYXJ5IGRhdGEgdG8gZGVjb2RlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGRlY29kZWQgc3RyaW5nXG4gICAqL1xuICBkZWNvZGUoZGF0YTogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZhYnJpY0NsaWVudEFkYXB0ZXIuZGVjb2Rlci5kZWNvZGUoZGF0YSk7XG4gIH1cblxuICBvdmVycmlkZSByZXBvc2l0b3J5PFxuICAgIFIgZXh0ZW5kcyBSZXBvc2l0b3J5PFxuICAgICAgYW55LFxuICAgICAgQWRhcHRlcjxQZWVyQ29uZmlnLCBDbGllbnQsIE1hbmdvUXVlcnksIENvbnRleHQ8RmFicmljRmxhZ3M+PlxuICAgID4sXG4gID4oKTogQ29uc3RydWN0b3I8Uj4ge1xuICAgIHJldHVybiBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IGFzIHVua25vd24gYXMgQ29uc3RydWN0b3I8Uj47XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlUHJlZml4PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFtDb25zdHJ1Y3RvcjxNPiwgUHJpbWFyeUtleVR5cGUsIFJlY29yZDxzdHJpbmcsIGFueT4sIC4uLmFueVtdLCBDb250ZXh0XSB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmNyZWF0ZVByZWZpeCk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICByZWNvcmRbQ291Y2hEQktleXMuVEFCTEVdID0gdGFibGVOYW1lO1xuICAgIE9iamVjdC5hc3NpZ24ocmVjb3JkLCBtb2RlbCk7XG4gICAgcmV0dXJuIFtjbGF6eiwgaWQsIHJlY29yZCwgLi4uY3R4QXJnc107XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIG11bHRpcGxlIHJlY29yZHMgZm9yIGNyZWF0aW9uXG4gICAqIEBzdW1tYXJ5IEFkZHMgbmVjZXNzYXJ5IENvdWNoREIgZmllbGRzIHRvIG11bHRpcGxlIHJlY29yZHMgYmVmb3JlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmdbXXxudW1iZXJbXX0gaWRzIC0gVGhlIElEcyBvZiB0aGUgcmVjb3Jkc1xuICAgKiBAcGFyYW0gbW9kZWxzIC0gVGhlIG1vZGVscyB0byBwcmVwYXJlXG4gICAqIEByZXR1cm4gQSB0dXBsZSBjb250YWluaW5nIHRoZSB0YWJsZU5hbWUsIGlkcywgYW5kIHByZXBhcmVkIHJlY29yZHNcbiAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgaWRzIGFuZCBtb2RlbHMgYXJyYXlzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHNcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVBbGxQcmVmaXg8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWRzOiBzdHJpbmdbXSB8IG51bWJlcltdLFxuICAgIG1vZGVsczogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0PEZhYnJpY0ZsYWdzPj5cbiAgKSB7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBpZiAoaWRzLmxlbmd0aCAhPT0gbW9kZWxzLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuY3JlYXRlQWxsUHJlZml4KTtcbiAgICBjb25zdCByZWNvcmRzID0gaWRzLm1hcCgoaWQsIGNvdW50KSA9PiB7XG4gICAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSB0YWJsZU5hbWU7XG4gICAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWxzW2NvdW50XSk7XG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH0pO1xuICAgIHJldHVybiBbY2xhenosIGlkcywgcmVjb3JkcywgLi4uY3R4QXJnc107XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlQWxsUHJlZml4PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkczogUHJpbWFyeUtleVR5cGVbXSxcbiAgICBtb2RlbHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgaWYgKGlkcy5sZW5ndGggIT09IG1vZGVscy5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnVwZGF0ZUFsbFByZWZpeCk7XG4gICAgY29uc3QgcmVjb3JkcyA9IGlkcy5tYXAoKCkgPT4ge1xuICAgICAgY29uc3QgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICByZWNvcmRbQ291Y2hEQktleXMuVEFCTEVdID0gdGFibGVOYW1lO1xuICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NsYXp6LCBpZHMsIHJlY29yZHMsIC4uLmN0eEFyZ3NdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG11bHRpcGxlIHJlY29yZHMgaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb25cbiAgICogQHN1bW1hcnkgU3VibWl0cyBhIHRyYW5zYWN0aW9uIHRvIGNyZWF0ZSBtdWx0aXBsZSByZWNvcmRzIGluIHRoZSBGYWJyaWMgbGVkZ2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ1tdIHwgbnVtYmVyW119IGlkcyAtIEFycmF5IG9mIHJlY29yZCBpZGVudGlmaWVyc1xuICAgKiBAcGFyYW0ge0FycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+fSBtb2RlbHMgLSBBcnJheSBvZiByZWNvcmQgZGF0YVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHRyYW5zaWVudCAtIFRyYW5zaWVudCBkYXRhIGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIHJlY29yZHNcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZUFsbDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZHM6IFByaW1hcnlLZXlUeXBlW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgaWYgKGlkcy5sZW5ndGggIT09IG1vZGVscy5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG4gICAgY29uc3QgY3R4QXJncyA9IFsuLi4oYXJncyBhcyB1bmtub3duIGFzIGFueVtdKV07XG4gICAgY29uc3QgdHJhbnNpZW50ID0gY3R4QXJncy5zaGlmdCgpIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KFxuICAgICAgY3R4QXJncyBhcyBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0ZsYWdzPj4sXG4gICAgICB0aGlzLmNyZWF0ZUFsbFxuICAgICk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcblxuICAgIGxvZy5pbmZvKGBhZGRpbmcgJHtpZHMubGVuZ3RofSBlbnRyaWVzIHRvICR7dGFibGVOYW1lfSB0YWJsZWApO1xuICAgIGxvZy52ZXJib3NlKGBwa3M6ICR7aWRzfWApO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc3VibWl0VHJhbnNhY3Rpb24oXG4gICAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuQ1JFQVRFX0FMTCxcbiAgICAgIFtpZHMsIG1vZGVscy5tYXAoKG0pID0+IHRoaXMuc2VyaWFsaXplci5zZXJpYWxpemUobSwgY2xhenoubmFtZSkpXSxcbiAgICAgIHRyYW5zaWVudCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRhYmxlTmFtZVxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHRoaXMuZGVjb2RlKHJlc3VsdCkpLm1hcCgocjogYW55KSA9PiBKU09OLnBhcnNlKHIpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVhZHMgbXVsdGlwbGUgcmVjb3JkcyBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvblxuICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgdHJhbnNhY3Rpb24gdG8gcmVhZCBtdWx0aXBsZSByZWNvcmRzIGZyb20gdGhlIEZhYnJpYyBsZWRnZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nW10gfCBudW1iZXJbXX0gaWRzIC0gQXJyYXkgb2YgcmVjb3JkIGlkZW50aWZpZXJzIHRvIHJlYWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXRyaWV2ZWQgcmVjb3Jkc1xuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZEFsbDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZHM6IFByaW1hcnlLZXlUeXBlW10sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZEFsbCk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsb2cuaW5mbyhgcmVhZGluZyAke2lkcy5sZW5ndGh9IGVudHJpZXMgdG8gJHt0YWJsZU5hbWV9IHRhYmxlYCk7XG4gICAgbG9nLnZlcmJvc2UoYHBrczogJHtpZHN9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZVRyYW5zYWN0aW9uKFxuICAgICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLlJFQURfQUxMLFxuICAgICAgW2lkc10sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0YWJsZU5hbWVcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRlY29kZShyZXN1bHQpKS5tYXAoKHI6IGFueSkgPT4gSlNPTi5wYXJzZShyKSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgbXVsdGlwbGUgcmVjb3JkcyBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvblxuICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgdHJhbnNhY3Rpb24gdG8gdXBkYXRlIG11bHRpcGxlIHJlY29yZHMgaW4gdGhlIEZhYnJpYyBsZWRnZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nW10gfCBudW1iZXJbXX0gaWRzIC0gQXJyYXkgb2YgcmVjb3JkIGlkZW50aWZpZXJzXG4gICAqIEBwYXJhbSB7QXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj59IG1vZGVscyAtIEFycmF5IG9mIHVwZGF0ZWQgcmVjb3JkIGRhdGFcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0cmFuc2llbnQgLSBUcmFuc2llbnQgZGF0YSBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8QXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgdXBkYXRlZCByZWNvcmRzXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyB1cGRhdGVBbGw8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWRzOiBQcmltYXJ5S2V5VHlwZVtdLFxuICAgIG1vZGVsczogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHQ8RmFicmljRmxhZ3M+PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZHMubGVuZ3RoICE9PSBtb2RlbHMubGVuZ3RoKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJJZHMgYW5kIG1vZGVscyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCIpO1xuICAgIGNvbnN0IGN0eEFyZ3MgPSBbLi4uKGFyZ3MgYXMgdW5rbm93biBhcyBhbnlbXSldO1xuICAgIGNvbnN0IHRyYW5zaWVudCA9IGN0eEFyZ3Muc2hpZnQoKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChcbiAgICAgIGN0eEFyZ3MgYXMgQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+LFxuICAgICAgdGhpcy51cGRhdGVBbGxcbiAgICApO1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgbG9nLmluZm8oYHVwZGF0aW5nICR7aWRzLmxlbmd0aH0gZW50cmllcyB0byAke3RhYmxlTmFtZX0gdGFibGVgKTtcbiAgICBsb2cudmVyYm9zZShgcGtzOiAke2lkc31gKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc3VibWl0VHJhbnNhY3Rpb24oXG4gICAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTCxcbiAgICAgIFtpZHMsIG1vZGVscy5tYXAoKG0pID0+IHRoaXMuc2VyaWFsaXplci5zZXJpYWxpemUobSwgY2xhenoubmFtZSkpXSxcbiAgICAgIHRyYW5zaWVudCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGNsYXp6Lm5hbWVcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRlY29kZShyZXN1bHQpKS5tYXAoKHI6IGFueSkgPT4gSlNPTi5wYXJzZShyKSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgbXVsdGlwbGUgcmVjb3JkcyBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvblxuICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgdHJhbnNhY3Rpb24gdG8gZGVsZXRlIG11bHRpcGxlIHJlY29yZHMgZnJvbSB0aGUgRmFicmljIGxlZGdlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+fSBpZHMgLSBBcnJheSBvZiByZWNvcmQgaWRlbnRpZmllcnMgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7U2VyaWFsaXplcjxhbnk+fSBzZXJpYWxpemVyIC0gU2VyaWFsaXplciBmb3IgdGhlIG1vZGVsIGRhdGFcbiAgICogQHJldHVybiB7UHJvbWlzZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBkZWxldGVkIHJlY29yZHNcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGRlbGV0ZUFsbDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZHM6IFByaW1hcnlLZXlUeXBlW10sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IEFkYXB0ZXIubG9nQ3R4KGFyZ3MsIHRoaXMuZGVsZXRlQWxsKTtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyAke2lkcy5sZW5ndGh9IGVudHJpZXMgdG8gJHt0YWJsZU5hbWV9IHRhYmxlYCk7XG4gICAgbG9nLnZlcmJvc2UoYHBrczogJHtpZHN9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJtaXRUcmFuc2FjdGlvbihcbiAgICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5ERUxFVEVfQUxMLFxuICAgICAgW2lkc10sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBjbGF6ei5uYW1lXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5kZWNvZGUocmVzdWx0KSkubWFwKChyOiBhbnkpID0+IEpTT04ucGFyc2UocikpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmVwYXJlcyBhIG1vZGVsIGZvciBwZXJzaXN0ZW5jZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIG1vZGVsIGluc3RhbmNlIGludG8gYSBmb3JtYXQgc3VpdGFibGUgZm9yIGRhdGFiYXNlIHN0b3JhZ2UsXG4gICAqIGhhbmRsaW5nIGNvbHVtbiBtYXBwaW5nIGFuZCBzZXBhcmF0aW5nIHRyYW5zaWVudCBwcm9wZXJ0aWVzXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byBwcmVwYXJlXG4gICAqIEBwYXJhbSBwayAtIFRoZSBwcmltYXJ5IGtleSBwcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm4gVGhlIHByZXBhcmVkIGRhdGFcbiAgICovXG4gIG92ZXJyaWRlIHByZXBhcmU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBtb2RlbDogTSxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0ZsYWdzPj5cbiAgKTogU2VncmVnYXRlZE1vZGVsPE0+ICYgUHJlcGFyZWRNb2RlbCB7XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucHJlcGFyZSk7XG4gICAgY29uc3Qgc3BsaXQgPSBNb2RlbC5zZWdyZWdhdGUobW9kZWwpO1xuICAgIGlmICgobW9kZWwgYXMgYW55KVtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdKSB7XG4gICAgICBsb2cuc2lsbHkoXG4gICAgICAgIGBQYXNzaW5nIGFsb25nIHBlcnNpc3RlbmNlIG1ldGFkYXRhIGZvciAkeyhtb2RlbCBhcyBhbnkpW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV19YFxuICAgICAgKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzcGxpdC5tb2RlbCwgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IChtb2RlbCBhcyBhbnkpW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVjb3JkOiBzcGxpdC5tb2RlbCxcbiAgICAgIG1vZGVsOiBzcGxpdC5tb2RlbCxcbiAgICAgIGlkOiBtb2RlbFtNb2RlbC5wayhtb2RlbC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3RvcjxNPildIGFzIHN0cmluZyxcbiAgICAgIHRyYW5zaWVudDogc3BsaXQudHJhbnNpZW50LFxuICAgICAgcHJpdmF0ZTogc3BsaXQucHJpdmF0ZSxcbiAgICAgIHNoYXJlZDogc3BsaXQuc2hhcmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgaW5kZXhlcyBmb3IgdGhlIGdpdmVuIG1vZGVsc1xuICAgKiBAc3VtbWFyeSBBYnN0cmFjdCBtZXRob2QgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIHRvIGNyZWF0ZSBkYXRhYmFzZSBpbmRleGVzIGZvciB0aGUgc3BlY2lmaWVkIG1vZGVsc1xuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7Li4uQ29uc3RydWN0b3I8TT59IG1vZGVscyAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvcnMgdG8gY3JlYXRlIGluZGV4ZXMgZm9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGluZGV4ZXMgYXJlIGNyZWF0ZWRcbiAgICovXG4gIEBkZWJ1ZygpXG4gIHByb3RlY3RlZCBhc3luYyBpbmRleDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxcbiAgICAgIENvbnRleHQ8RmFicmljRmxhZ3M+LFxuICAgICAgW3N0cmluZywgLi4uKENvbnN0cnVjdG9yPE0+IHwgc3RyaW5nKVtdXVxuICAgID5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuaW5kZXgpO1xuICAgIGNvbnN0IG91dERpcjogc3RyaW5nID0gYXJncy5zaGlmdCgpO1xuICAgIGNvbnN0IG1vZGVsczogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+W10gPSAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgYXJncy5tYXAoYXN5bmMgKG0pID0+IHtcbiAgICAgICAgICBjb25zdCBpc0ZvbGRlciA9IHR5cGVvZiBtID09PSBcInN0cmluZ1wiO1xuICAgICAgICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgICAgICAgbG9nLnZlcmJvc2UoYExvYWRpbmcgbW9kZWxzIGZyb20gJHttfS4uLmApO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRNb2RlbEZvbGRlcnMobSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuZmxhdCgpO1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGZvciAoY29uc3QgbSBvZiBtb2RlbHMpIHtcbiAgICAgIGxvZy52ZXJib3NlKGBFeHRyYWN0aW5nIGluZGV4ZXMgZm9yIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKG0pfWApO1xuICAgICAgZ2VuZXJhdGVNb2RlbEluZGV4ZXMobSwgcmVzdWx0KTtcbiAgICB9XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7T2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGh9IGluZGV4ZXMgdG8gY3JlYXRlYCk7XG4gICAgbG9nLmRlYnVnKGBJbmRleGVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gICAgd3JpdGVJbmRleGVzKE9iamVjdC52YWx1ZXMocmVzdWx0KSwgb3V0RGlyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNpbmdsZSByZWNvcmRcbiAgICogQHN1bW1hcnkgU3VibWl0cyBhIHRyYW5zYWN0aW9uIHRvIGNyZWF0ZSBhIHJlY29yZCBpbiB0aGUgRmFicmljIGxlZGdlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IGlkIC0gVGhlIHJlY29yZCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgcmVjb3JkIGRhdGFcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0cmFuc2llbnQgLSBUcmFuc2llbnQgZGF0YSBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIHJlY29yZFxuICAgKi9cbiAgQGRlYnVnKClcbiAgQGZpbmFsKClcbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICB0cmFuc2llbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0ZsYWdzPj5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgY3R4QXJncyA9IFsuLi4oYXJncyBhcyB1bmtub3duIGFzIGFueVtdKV07XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KFxuICAgICAgY3R4QXJncyBhcyBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0ZsYWdzPj4sXG4gICAgICB0aGlzLmNyZWF0ZVxuICAgICk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsb2cudmVyYm9zZShgYWRkaW5nIGVudHJ5IHRvICR7dGFibGVOYW1lfSB0YWJsZWApO1xuICAgIGxvZy5kZWJ1ZyhgcGs6ICR7aWR9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJtaXRUcmFuc2FjdGlvbihcbiAgICAgIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICAgICAgW3RoaXMuc2VyaWFsaXplci5zZXJpYWxpemUobW9kZWwsIGNsYXp6Lm5hbWUpXSxcbiAgICAgIHRyYW5zaWVudCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGNsYXp6Lm5hbWVcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUodGhpcy5kZWNvZGUocmVzdWx0KSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlYWRzIGEgc2luZ2xlIHJlY29yZFxuICAgKiBAc3VtbWFyeSBFdmFsdWF0ZXMgYSB0cmFuc2FjdGlvbiB0byByZWFkIGEgcmVjb3JkIGZyb20gdGhlIEZhYnJpYyBsZWRnZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSByZWNvcmQgaWRlbnRpZmllclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0cmlldmVkIHJlY29yZFxuICAgKi9cbiAgQGRlYnVnKClcbiAgQGZpbmFsKClcbiAgYXN5bmMgcmVhZDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnJlYWRBbGwpO1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG5cbiAgICBsb2cudmVyYm9zZShgcmVhZGluZyBlbnRyeSBmcm9tICR7dGFibGVOYW1lfSB0YWJsZWApO1xuICAgIGxvZy5kZWJ1ZyhgcGs6ICR7aWR9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZVRyYW5zYWN0aW9uKFxuICAgICAgT3BlcmF0aW9uS2V5cy5SRUFELFxuICAgICAgW2lkLnRvU3RyaW5nKCldLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgY2xhenoubmFtZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZSh0aGlzLmRlY29kZShyZXN1bHQpKTtcbiAgfVxuXG4gIHVwZGF0ZVByZWZpeDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHQ8RmFicmljRmxhZ3M+PlxuICApIHtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIGNvbnN0IHsgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGVQcmVmaXgpO1xuICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSB0YWJsZU5hbWU7XG4gICAgLy8gcmVjb3JkW0NvdWNoREJLZXlzLklEXSA9IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKTtcbiAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWwpO1xuICAgIHJldHVybiBbY2xhenosIGlkLCByZWNvcmQsIC4uLmN0eEFyZ3NdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIGEgc2luZ2xlIHJlY29yZFxuICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgdHJhbnNhY3Rpb24gdG8gdXBkYXRlIGEgcmVjb3JkIGluIHRoZSBGYWJyaWMgbGVkZ2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBtb2RlbCAtIFRoZSB1cGRhdGVkIHJlY29yZCBkYXRhXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gdHJhbnNpZW50IC0gVHJhbnNpZW50IGRhdGEgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgdXBkYXRlZCByZWNvcmRcbiAgICovXG4gIEBkZWJ1ZygpXG4gIEBmaW5hbCgpXG4gIGFzeW5jIHVwZGF0ZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgdHJhbnNpZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IGN0eEFyZ3MgPSBbLi4uKGFyZ3MgYXMgdW5rbm93biBhcyBhbnlbXSldO1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChcbiAgICAgIGN0eEFyZ3MgYXMgQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+LFxuICAgICAgdGhpcy51cGRhdGVBbGxcbiAgICApO1xuICAgIGxvZy5pbmZvKGBDTElFTlQgVVBEQVRFIGNsYXNzIDogJHt0eXBlb2YgY2xhenp9YCk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsb2cudmVyYm9zZShgdXBkYXRpbmcgZW50cnkgdG8gJHt0YWJsZU5hbWV9IHRhYmxlYCk7XG4gICAgbG9nLmRlYnVnKGBwazogJHtpZH1gKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnN1Ym1pdFRyYW5zYWN0aW9uKFxuICAgICAgT3BlcmF0aW9uS2V5cy5VUERBVEUsXG4gICAgICBbdGhpcy5zZXJpYWxpemVyLnNlcmlhbGl6ZShtb2RlbCwgY2xhenoubmFtZSB8fCBjbGF6eildLCAvLyBUT0RPIHNob3VsZCBiZSByZWNldmluZyBjbGFzcyBidXQgaXMgcmVjZWl2aW5nIHN0cmluZ1xuICAgICAgdHJhbnNpZW50LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgY2xhenoubmFtZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZSh0aGlzLmRlY29kZShyZXN1bHQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIHNpbmdsZSByZWNvcmRcbiAgICogQHN1bW1hcnkgU3VibWl0cyBhIHRyYW5zYWN0aW9uIHRvIGRlbGV0ZSBhIHJlY29yZCBmcm9tIHRoZSBGYWJyaWMgbGVkZ2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgcmVjb3JkIGlkZW50aWZpZXIgdG8gZGVsZXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBkZWxldGVkIHJlY29yZFxuICAgKi9cbiAgQGRlYnVnKClcbiAgQGZpbmFsKClcbiAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0ZsYWdzPj5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuZGVsZXRlKTtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIGxvZy52ZXJib3NlKGBkZWxldGluZyBlbnRyeSBmcm9tICR7dGFibGVOYW1lfSB0YWJsZWApO1xuICAgIGxvZy5kZWJ1ZyhgcGs6ICR7aWR9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdWJtaXRUcmFuc2FjdGlvbihcbiAgICAgIE9wZXJhdGlvbktleXMuREVMRVRFLFxuICAgICAgW2lkLnRvU3RyaW5nKCldLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgY2xhenoubmFtZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZSh0aGlzLmRlY29kZShyZXN1bHQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSByYXcgcXVlcnkgYWdhaW5zdCB0aGUgRmFicmljIGxlZGdlclxuICAgKiBAc3VtbWFyeSBFdmFsdWF0ZXMgYSB0cmFuc2FjdGlvbiB0byBwZXJmb3JtIGEgcXVlcnkgdXNpbmcgTWFuZ28gUXVlcnkgc3ludGF4XG4gICAqIEB0ZW1wbGF0ZSBWIC0gVGhlIHJldHVybiB0eXBlXG4gICAqIEBwYXJhbSB7TWFuZ29RdWVyeX0gcmF3SW5wdXQgLSBUaGUgTWFuZ28gUXVlcnkgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByb2Nlc3MgLSBXaGV0aGVyIHRvIHByb2Nlc3MgdGhlIHJlc3VsdFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFY+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcXVlcnkgcmVzdWx0XG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IEZhYnJpY0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBDb250cmFjdFxuICAgKiAgIHBhcnRpY2lwYW50IENoYWluY29kZVxuICAgKlxuICAgKiAgIENsaWVudC0+PkZhYnJpY0FkYXB0ZXI6IHJhdyhyYXdJbnB1dCwgcHJvY2VzcylcbiAgICogICBGYWJyaWNBZGFwdGVyLT4+RmFicmljQWRhcHRlcjogSlNPTi5zdHJpbmdpZnkocmF3SW5wdXQpXG4gICAqICAgRmFicmljQWRhcHRlci0+PkZhYnJpY0FkYXB0ZXI6IGV2YWx1YXRlVHJhbnNhY3Rpb24oXCJxdWVyeVwiLCBbaW5wdXRdKVxuICAgKiAgIEZhYnJpY0FkYXB0ZXItPj5Db250cmFjdDogZXZhbHVhdGUoXCJxdWVyeVwiLCBwcm9wb3NhbE9wdGlvbnMpXG4gICAqICAgQ29udHJhY3QtPj5DaGFpbmNvZGU6IGludm9rZVxuICAgKiAgIENoYWluY29kZS0tPj5Db250cmFjdDogcmVzcG9uc2VcbiAgICogICBDb250cmFjdC0tPj5GYWJyaWNBZGFwdGVyOiByZXN1bHRcbiAgICogICBGYWJyaWNBZGFwdGVyLT4+RmFicmljQWRhcHRlcjogSlNPTi5wYXJzZShkZWNvZGUocmVzdWx0KSlcbiAgICogICBGYWJyaWNBZGFwdGVyLT4+RmFicmljQWRhcHRlcjogUHJvY2VzcyByZXN1bHQgYmFzZWQgb24gdHlwZVxuICAgKiAgIEZhYnJpY0FkYXB0ZXItLT4+Q2xpZW50OiBwcm9jZXNzZWQgcmVzdWx0XG4gICAqL1xuICBAZGVidWcoKVxuICBhc3luYyByYXc8ViwgRCBleHRlbmRzIGJvb2xlYW4+KFxuICAgIHJhd0lucHV0OiBNYW5nb1F1ZXJ5LFxuICAgIGRvY3NPbmx5OiBEID0gdHJ1ZSBhcyBELFxuICAgIGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNGbGFncz4+XG4gICk6IFByb21pc2U8Vj4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnJhdyk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gY2xhenoubmFtZTtcbiAgICBsb2cuaW5mbyhgUGVyZm9ybWluZyByYXcgc3RhdGVtZW50IG9uIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKGNsYXp6KX1gKTtcbiAgICBsZXQgdHJhbnNhY3Rpb25SZXN1bHQ6IGFueTtcbiAgICB0cnkge1xuICAgICAgdHJhbnNhY3Rpb25SZXN1bHQgPSBhd2FpdCB0aGlzLmV2YWx1YXRlVHJhbnNhY3Rpb24oXG4gICAgICAgIFwicmF3XCIsXG4gICAgICAgIFtKU09OLnN0cmluZ2lmeShyYXdJbnB1dCksIGRvY3NPbmx5XSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHRhYmxlTmFtZVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gSlNPTi5wYXJzZSh0aGlzLmRlY29kZSh0cmFuc2FjdGlvblJlc3VsdCkpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgRmFpbGVkIHRvIHByb2Nlc3MgcmVzdWx0OiAke2V9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VSZWNvcmQgPSAocmVjb3JkOiBSZWNvcmQ8YW55LCBhbnk+KSA9PiB7XG4gICAgICBpZiAoTW9kZWwuaXNNb2RlbChyZWNvcmQpKSByZXR1cm4gTW9kZWwuYnVpbGQocmVjb3JkKTtcbiAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgIGlmICghcmVzdWx0Lmxlbmd0aCkgcmV0dXJuIHJlc3VsdCBhcyBWO1xuICAgICAgY29uc3QgZWwgPSByZXN1bHRbMF07XG4gICAgICBpZiAoTW9kZWwuaXNNb2RlbChlbCkpXG4gICAgICAgIC8vIGlmIHRoZSBmaXJzdCBvbmUgaXMgYSBtb2RlbCwgYWxsIGFyZSBtb2RlbHNcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoKGVsKSA9PiBNb2RlbC5idWlsZChlbCkpIGFzIFY7XG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlUmVjb3JkKHJlc3VsdCBhcyBhbnkpIGFzIFY7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgb3IgY3JlYXRlcyBhIGdSUEMgY2xpZW50IGZvciB0aGUgRmFicmljIHBlZXJcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhIGNhY2hlZCBjbGllbnQgb3IgY3JlYXRlcyBhIG5ldyBvbmUgaWYgbm9uZSBleGlzdHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxDbGllbnQ+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgZ1JQQyBjbGllbnRcbiAgICovXG4gIG92ZXJyaWRlIGdldENsaWVudCgpOiBDbGllbnQge1xuICAgIGlmICghdGhpcy5fY2xpZW50KVxuICAgICAgdGhpcy5fY2xpZW50ID0gRmFicmljQ2xpZW50QWRhcHRlci5nZXRDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB0aGlzLl9jbGllbnQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYSBHYXRld2F5IGluc3RhbmNlIGZvciB0aGUgRmFicmljIG5ldHdvcmtcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIG5ldyBHYXRld2F5IGluc3RhbmNlIHVzaW5nIHRoZSBjdXJyZW50IGNsaWVudFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEdhdGV3YXk+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgR2F0ZXdheSBpbnN0YW5jZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIEdhdGV3YXkoKTogUHJvbWlzZTxHYXRld2F5PiB7XG4gICAgcmV0dXJuIEZhYnJpY0NsaWVudEFkYXB0ZXIuZ2V0R2F0ZXdheSh0aGlzLmNvbmZpZywgdGhpcy5jbGllbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cmFjdE5hbWUoY2xhc3NOYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKCFjbGFzc05hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGAke2NsYXNzTmFtZX1Db250cmFjdGA7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYSBDb250cmFjdCBpbnN0YW5jZSBmb3IgdGhlIEZhYnJpYyBjaGFpbmNvZGVcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIG5ldyBDb250cmFjdCBpbnN0YW5jZSB1c2luZyB0aGUgY3VycmVudCBHYXRld2F5XG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q29udHJha3Q+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgQ29udHJhY3QgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBDb250cmFjdChjb250cmFjdE5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPENvbnRyYWt0PiB7XG4gICAgcmV0dXJuIEZhYnJpY0NsaWVudEFkYXB0ZXIuZ2V0Q29udHJhY3QoXG4gICAgICBhd2FpdCB0aGlzLkdhdGV3YXkoKSxcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgY29udHJhY3ROYW1lXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSB0cmFuc2FjdGlvbiBvbiB0aGUgRmFicmljIG5ldHdvcmtcbiAgICogQHN1bW1hcnkgU3VibWl0cyBvciBldmFsdWF0ZXMgYSB0cmFuc2FjdGlvbiBvbiB0aGUgRmFicmljIGNoYWluY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpIC0gVGhlIGNoYWluY29kZSBmdW5jdGlvbiB0byBjYWxsXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VibWl0IC0gV2hldGhlciB0byBzdWJtaXQgKHRydWUpIG9yIGV2YWx1YXRlIChmYWxzZSkgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7YW55W119IFthcmdzXSAtIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBjaGFpbmNvZGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBbdHJhbnNpZW50RGF0YV0gLSBUcmFuc2llbnQgZGF0YSBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gW2VuZG9yc2luZ09yZ2FuaXphdGlvbnNdIC0gT3JnYW5pemF0aW9ucyB0aGF0IG11c3QgZW5kb3JzZSB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxVaW50OEFycmF5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHRyYW5zYWN0aW9uIHJlc3VsdFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBGYWJyaWNBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgR2F0ZXdheVxuICAgKiAgIHBhcnRpY2lwYW50IENvbnRyYWN0XG4gICAqICAgcGFydGljaXBhbnQgQ2hhaW5jb2RlXG4gICAqXG4gICAqICAgRmFicmljQWRhcHRlci0+PkdhdGV3YXk6IGNvbm5lY3QoKVxuICAgKiAgIEZhYnJpY0FkYXB0ZXItPj5Db250cmFjdDogZ2V0Q29udHJhY3QoKVxuICAgKiAgIGFsdCBzdWJtaXQgdHJhbnNhY3Rpb25cbiAgICogICAgIEZhYnJpY0FkYXB0ZXItPj5Db250cmFjdDogc3VibWl0KGFwaSwgcHJvcG9zYWxPcHRpb25zKVxuICAgKiAgIGVsc2UgZXZhbHVhdGUgdHJhbnNhY3Rpb25cbiAgICogICAgIEZhYnJpY0FkYXB0ZXItPj5Db250cmFjdDogZXZhbHVhdGUoYXBpLCBwcm9wb3NhbE9wdGlvbnMpXG4gICAqICAgZW5kXG4gICAqICAgQ29udHJhY3QtPj5DaGFpbmNvZGU6IGludm9rZVxuICAgKiAgIENoYWluY29kZS0tPj5Db250cmFjdDogcmVzcG9uc2VcbiAgICogICBDb250cmFjdC0tPj5GYWJyaWNBZGFwdGVyOiByZXN1bHRcbiAgICogICBGYWJyaWNBZGFwdGVyLT4+R2F0ZXdheTogY2xvc2UoKVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHRyYW5zYWN0aW9uKFxuICAgIGFwaTogc3RyaW5nLFxuICAgIHN1Ym1pdCA9IHRydWUsXG4gICAgYXJncz86IGFueVtdLFxuICAgIHRyYW5zaWVudERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGVuZG9yc2luZ09yZ2FuaXphdGlvbnM/OiBBcnJheTxzdHJpbmc+LFxuICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICApOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy50cmFuc2FjdGlvbik7XG4gICAgY29uc3QgZ2F0ZXdheSA9IGF3YWl0IHRoaXMuR2F0ZXdheSgpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb250cmFjdCA9IGF3YWl0IHRoaXMuQ29udHJhY3QodGhpcy5nZXRDb250cmFjdE5hbWUoY2xhc3NOYW1lKSk7XG4gICAgICBsb2cudmVyYm9zZShcbiAgICAgICAgYCR7c3VibWl0ID8gXCJTdWJtaXRcIiA6IFwiRXZhbHVhdGVcIn10aW5nIHRyYW5zYWN0aW9uICR7dGhpcy5nZXRDb250cmFjdE5hbWUoY2xhc3NOYW1lKSB8fCB0aGlzLmNvbmZpZy5jb250cmFjdE5hbWV9LiR7YXBpfWBcbiAgICAgICk7XG4gICAgICBsb2cuZGVidWcoYGFyZ3M6ICR7YXJncz8ubWFwKChhKSA9PiBhLnRvU3RyaW5nKCkpLmpvaW4oXCJcXG5cIikgfHwgXCJub25lXCJ9YCk7XG4gICAgICBjb25zdCBtZXRob2QgPSBzdWJtaXQgPyBjb250cmFjdC5zdWJtaXQgOiBjb250cmFjdC5ldmFsdWF0ZTtcblxuICAgICAgZW5kb3JzaW5nT3JnYW5pemF0aW9ucyA9IGVuZG9yc2luZ09yZ2FuaXphdGlvbnM/Lmxlbmd0aFxuICAgICAgICA/IGVuZG9yc2luZ09yZ2FuaXphdGlvbnNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBwcm9wb3NhbE9wdGlvbnM6IFByb3Bvc2FsT3B0aW9ucyA9IHtcbiAgICAgICAgYXJndW1lbnRzOiBhcmdzIHx8IFtdLFxuICAgICAgICB0cmFuc2llbnREYXRhOiB0cmFuc2llbnREYXRhLFxuICAgICAgICAvLyAuLi4oZW5kb3JzaW5nT3JnYW5pemF0aW9ucyAmJiB7IGVuZG9yc2luZ09yZ2FuaXphdGlvbnMgfSkgLy8gbXNwSWQgbGlzdFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IG1ldGhvZC5jYWxsKGNvbnRyYWN0LCBhcGksIHByb3Bvc2FsT3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5jb2RlID09PSAxMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZS5kZXRhaWxzWzBdLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBDbG9zaW5nICR7dGhpcy5jb25maWcubXNwSWR9IGdhdGV3YXkgY29ubmVjdGlvbmApO1xuICAgICAgZ2F0ZXdheS5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGFuIGVycm9yIGludG8gYSBCYXNlRXJyb3JcbiAgICogQHN1bW1hcnkgQ29udmVydHMgYW55IGVycm9yIGludG8gYSBzdGFuZGFyZGl6ZWQgQmFzZUVycm9yXG4gICAqIEBwYXJhbSB7RXJyb3IgfCBzdHJpbmd9IGVyciAtIFRoZSBlcnJvciB0byBwYXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBPcHRpb25hbCByZWFzb24gZm9yIHRoZSBlcnJvclxuICAgKiBAcmV0dXJuIHtCYXNlRXJyb3J9IFRoZSBwYXJzZWQgZXJyb3JcbiAgICovXG4gIG92ZXJyaWRlIHBhcnNlRXJyb3I8RSBleHRlbmRzIEJhc2VFcnJvcj4oZXJyOiBFcnJvciB8IHN0cmluZyk6IEUge1xuICAgIHJldHVybiBGYWJyaWNDbGllbnRBZGFwdGVyLnBhcnNlRXJyb3I8RT4oZXJyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3VibWl0cyBhIHRyYW5zYWN0aW9uIHRvIHRoZSBGYWJyaWMgbmV0d29ya1xuICAgKiBAc3VtbWFyeSBFeGVjdXRlcyBhIHRyYW5zYWN0aW9uIHRoYXQgbW9kaWZpZXMgdGhlIGxlZGdlciBzdGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpIC0gVGhlIGNoYWluY29kZSBmdW5jdGlvbiB0byBjYWxsXG4gICAqIEBwYXJhbSB7YW55W119IFthcmdzXSAtIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBjaGFpbmNvZGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBbdHJhbnNpZW50RGF0YV0gLSBUcmFuc2llbnQgZGF0YSBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gW2VuZG9yc2luZ09yZ2FuaXphdGlvbnNdIC0gT3JnYW5pemF0aW9ucyB0aGF0IG11c3QgZW5kb3JzZSB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxVaW50OEFycmF5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHRyYW5zYWN0aW9uIHJlc3VsdFxuICAgKi9cbiAgYXN5bmMgc3VibWl0VHJhbnNhY3Rpb24oXG4gICAgYXBpOiBzdHJpbmcsXG4gICAgYXJncz86IGFueVtdLFxuICAgIHRyYW5zaWVudERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIGVuZG9yc2luZ09yZ2FuaXphdGlvbnM/OiBBcnJheTxzdHJpbmc+LFxuICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICApOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbihcbiAgICAgIGFwaSxcbiAgICAgIHRydWUsXG4gICAgICBhcmdzLFxuICAgICAgdHJhbnNpZW50RGF0YSxcbiAgICAgIGVuZG9yc2luZ09yZ2FuaXphdGlvbnMsXG4gICAgICBjbGFzc05hbWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmFsdWF0ZXMgYSB0cmFuc2FjdGlvbiBvbiB0aGUgRmFicmljIG5ldHdvcmtcbiAgICogQHN1bW1hcnkgRXhlY3V0ZXMgYSB0cmFuc2FjdGlvbiB0aGF0IGRvZXMgbm90IG1vZGlmeSB0aGUgbGVkZ2VyIHN0YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGkgLSBUaGUgY2hhaW5jb2RlIGZ1bmN0aW9uIHRvIGNhbGxcbiAgICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdIC0gQXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGNoYWluY29kZSBmdW5jdGlvblxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IFt0cmFuc2llbnREYXRhXSAtIFRyYW5zaWVudCBkYXRhIGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbZW5kb3JzaW5nT3JnYW5pemF0aW9uc10gLSBPcmdhbml6YXRpb25zIHRoYXQgbXVzdCBlbmRvcnNlIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVpbnQ4QXJyYXk+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgdHJhbnNhY3Rpb24gcmVzdWx0XG4gICAqL1xuICBhc3luYyBldmFsdWF0ZVRyYW5zYWN0aW9uKFxuICAgIGFwaTogc3RyaW5nLFxuICAgIGFyZ3M/OiBhbnlbXSxcbiAgICB0cmFuc2llbnREYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBlbmRvcnNpbmdPcmdhbml6YXRpb25zPzogQXJyYXk8c3RyaW5nPixcbiAgICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24oXG4gICAgICBhcGksXG4gICAgICBmYWxzZSxcbiAgICAgIGFyZ3MsXG4gICAgICB0cmFuc2llbnREYXRhLFxuICAgICAgZW5kb3JzaW5nT3JnYW5pemF0aW9ucyxcbiAgICAgIGNsYXNzTmFtZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENsb3NlcyB0aGUgY29ubmVjdGlvbiB0byB0aGUgRmFicmljIG5ldHdvcmtcbiAgICogQHN1bW1hcnkgQ2xvc2VzIHRoZSBnUlBDIGNsaWVudCBpZiBpdCBleGlzdHNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNsaWVudCBpcyBjbG9zZWRcbiAgICovXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsaWVudCkge1xuICAgICAgdGhpcy5sb2cudmVyYm9zZShgQ2xvc2luZyAke3RoaXMuY29uZmlnLm1zcElkfSBnYXRld2F5IGNsaWVudGApO1xuICAgICAgdGhpcy5jbGllbnQuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYSBDb250cmFjdCBpbnN0YW5jZSBmcm9tIGEgR2F0ZXdheVxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSBjaGFpbmNvZGUgY29udHJhY3QgZnJvbSB0aGUgc3BlY2lmaWVkIG5ldHdvcmtcbiAgICogQHBhcmFtIHtHYXRld2F5fSBnYXRld2F5IC0gVGhlIEdhdGV3YXkgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtQZWVyQ29uZmlnfSBjb25maWcgLSBUaGUgcGVlciBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm4ge0NvbnRyYWt0fSBUaGUgQ29udHJhY3QgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBnZXRDb250cmFjdChcbiAgICBnYXRld2F5OiBHYXRld2F5LFxuICAgIGNvbmZpZzogUGVlckNvbmZpZyxcbiAgICBjb250cmFjdE5hbWU/OiBzdHJpbmdcbiAgKTogQ29udHJha3Qge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmdldENvbnRyYWN0KTtcbiAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5nZXROZXR3b3JrKGdhdGV3YXksIGNvbmZpZy5jaGFubmVsKTtcbiAgICBsZXQgY29udHJhY3Q6IENvbnRyYWt0O1xuICAgIHRyeSB7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBSZXRyaWV2aW5nIGNoYWluY29kZSAke2NvbmZpZy5jaGFpbmNvZGVOYW1lfSBjb250cmFjdCAke2NvbnRyYWN0TmFtZSB8fCBjb25maWcuY29udHJhY3ROYW1lfSBmcm9tIG5ldHdvcmsgJHtjb25maWcuY2hhbm5lbH1gXG4gICAgICApO1xuICAgICAgY29udHJhY3ROYW1lID0gY29udHJhY3ROYW1lID8gY29udHJhY3ROYW1lIDogY29uZmlnLmNvbnRyYWN0TmFtZTtcbiAgICAgIGNvbnRyYWN0ID0gbmV0d29yay5nZXRDb250cmFjdChjb25maWcuY2hhaW5jb2RlTmFtZSwgY29udHJhY3ROYW1lKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRyYWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIGEgTmV0d29yayBpbnN0YW5jZSBmcm9tIGEgR2F0ZXdheVxuICAgKiBAc3VtbWFyeSBDb25uZWN0cyB0byBhIHNwZWNpZmljIGNoYW5uZWwgb24gdGhlIEZhYnJpYyBuZXR3b3JrXG4gICAqIEBwYXJhbSB7R2F0ZXdheX0gZ2F0ZXdheSAtIFRoZSBHYXRld2F5IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjaGFubmVsIHRvIGNvbm5lY3QgdG9cbiAgICogQHJldHVybiB7TmV0d29ya30gVGhlIE5ldHdvcmsgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBnZXROZXR3b3JrKGdhdGV3YXk6IEdhdGV3YXksIGNoYW5uZWxOYW1lOiBzdHJpbmcpOiBOZXR3b3JrIHtcbiAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcih0aGlzLmdldE5ldHdvcmspO1xuICAgIGxldCBuZXR3b3JrOiBOZXR3b3JrO1xuICAgIHRyeSB7XG4gICAgICBsb2cuZGVidWcoYENvbm5lY3RpbmcgdG8gY2hhbm5lbCAke2NoYW5uZWxOYW1lfWApO1xuICAgICAgbmV0d29yayA9IGdhdGV3YXkuZ2V0TmV0d29yayhjaGFubmVsTmFtZSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldHdvcms7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYSBHYXRld2F5IGluc3RhbmNlIGZvciBjb25uZWN0aW5nIHRvIHRoZSBGYWJyaWMgbmV0d29ya1xuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgR2F0ZXdheSB1c2luZyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBhbmQgY2xpZW50XG4gICAqIEBwYXJhbSB7UGVlckNvbmZpZ30gY29uZmlnIC0gVGhlIHBlZXIgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0ge0NsaWVudH0gW2NsaWVudF0gLSBPcHRpb25hbCBnUlBDIGNsaWVudCwgd2lsbCBiZSBjcmVhdGVkIGlmIG5vdCBwcm92aWRlZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEdhdGV3YXk+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgR2F0ZXdheSBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGdldEdhdGV3YXkoY29uZmlnOiBQZWVyQ29uZmlnLCBjbGllbnQ/OiBDbGllbnQpIHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGlvbihcbiAgICAgIGNsaWVudCB8fCAoYXdhaXQgdGhpcy5nZXRDbGllbnQoY29uZmlnKSksXG4gICAgICBjb25maWdcbiAgICApKSBhcyBHYXRld2F5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZ1JQQyBjbGllbnQgZm9yIGNvbm5lY3RpbmcgdG8gYSBGYWJyaWMgcGVlclxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIGNsaWVudCB3aXRoIFRMUyBjcmVkZW50aWFscyBmb3Igc2VjdXJlIGNvbW11bmljYXRpb25cbiAgICogQHBhcmFtIHtQZWVyQ29uZmlnfSBjb25maWcgLSBUaGUgcGVlciBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm4ge0NsaWVudH0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGdSUEMgY2xpZW50XG4gICAqL1xuICBzdGF0aWMgZ2V0Q2xpZW50KGNvbmZpZzogUGVlckNvbmZpZyk6IENsaWVudCB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0Q2xpZW50KTtcbiAgICBsb2cuZGVidWcoYGdlbmVyYXRpbmcgVExTIGNyZWRlbnRpYWxzIGZvciBtc3AgJHtjb25maWcubXNwSWR9YCk7XG4gICAgY29uc3QgdGxzQ3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZVNzbChcbiAgICAgIHR5cGVvZiBjb25maWcudGxzQ2VydCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbmZpZy50bHNDZXJ0KVxuICAgICAgICA6IGNvbmZpZy50bHNDZXJ0XG4gICAgKTtcbiAgICBsb2cuZGVidWcoYGdlbmVyYXRpbmcgR2F0ZXdheSBDbGllbnQgZm9yIHVybCAke2NvbmZpZy5wZWVyRW5kcG9pbnR9YCk7XG4gICAgcmV0dXJuIG5ldyBDbGllbnQoY29uZmlnLnBlZXJFbmRwb2ludCwgdGxzQ3JlZGVudGlhbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIEZhYnJpYyBuZXR3b3JrXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBHYXRld2F5IGNvbm5lY3Rpb24gd2l0aCBpZGVudGl0eSBhbmQgc2lnbmVyXG4gICAqIEBwYXJhbSB7Q2xpZW50fSBjbGllbnQgLSBUaGUgZ1JQQyBjbGllbnRcbiAgICogQHBhcmFtIHtQZWVyQ29uZmlnfSBjb25maWcgLSBUaGUgcGVlciBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8R2F0ZXdheT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjb25uZWN0ZWQgR2F0ZXdheVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBGYWJyaWNBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgSWRlbnRpdHlcbiAgICogICBwYXJ0aWNpcGFudCBTaWduZXJcbiAgICogICBwYXJ0aWNpcGFudCBHYXRld2F5XG4gICAqXG4gICAqICAgQ2FsbGVyLT4+RmFicmljQWRhcHRlcjogZ2V0Q29ubmVjdGlvbihjbGllbnQsIGNvbmZpZylcbiAgICogICBGYWJyaWNBZGFwdGVyLT4+SWRlbnRpdHk6IGdldElkZW50aXR5KG1zcElkLCBjZXJ0RGlyZWN0b3J5UGF0aClcbiAgICogICBJZGVudGl0eS0tPj5GYWJyaWNBZGFwdGVyOiBpZGVudGl0eVxuICAgKiAgIEZhYnJpY0FkYXB0ZXItPj5TaWduZXI6IGdldFNpZ25lcihrZXlEaXJlY3RvcnlQYXRoKVxuICAgKiAgIFNpZ25lci0tPj5GYWJyaWNBZGFwdGVyOiBzaWduZXJcbiAgICogICBGYWJyaWNBZGFwdGVyLT4+RmFicmljQWRhcHRlcjogQ3JlYXRlIENvbm5lY3RPcHRpb25zXG4gICAqICAgRmFicmljQWRhcHRlci0+PkdhdGV3YXk6IGNvbm5lY3Qob3B0aW9ucylcbiAgICogICBHYXRld2F5LS0+PkZhYnJpY0FkYXB0ZXI6IGdhdGV3YXlcbiAgICogICBGYWJyaWNBZGFwdGVyLS0+PkNhbGxlcjogZ2F0ZXdheVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGdldENvbm5lY3Rpb24oY2xpZW50OiBDbGllbnQsIGNvbmZpZzogUGVlckNvbmZpZykge1xuICAgIGNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKHRoaXMuZ2V0Q29ubmVjdGlvbik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYFJldHJpZXZpbmcgUGVlciBJZGVudGl0eSBmb3IgJHtjb25maWcubXNwSWR9IHVuZGVyICR7Y29uZmlnLmNlcnRDZXJ0T3JEaXJlY3RvcnlQYXRofWBcbiAgICApO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgZ2V0SWRlbnRpdHkoXG4gICAgICBjb25maWcubXNwSWQsXG4gICAgICBjb25maWcuY2VydENlcnRPckRpcmVjdG9yeVBhdGggYXMgYW55XG4gICAgKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgc2lnbmVyIGtleSBmcm9tICR7Y29uZmlnLmtleUNlcnRPckRpcmVjdG9yeVBhdGh9YCk7XG5cbiAgICBsZXQgc2lnbmVyOiBTaWduZXIsXG4gICAgICBjbG9zZSA9ICgpID0+IHt9O1xuICAgIGlmICghY29uZmlnLmhzbSkge1xuICAgICAgc2lnbmVyID0gYXdhaXQgZ2V0U2lnbmVyKGNvbmZpZy5rZXlDZXJ0T3JEaXJlY3RvcnlQYXRoIGFzIGFueSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhzbSA9IG5ldyBIU01TaWduZXJGYWN0b3J5Q3VzdG9tKGNvbmZpZy5oc20ubGlicmFyeSk7XG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gaHNtLmdldFNLSUZyb21DZXJ0aWZpY2F0ZVBhdGgoXG4gICAgICAgIGNvbmZpZy5jZXJ0Q2VydE9yRGlyZWN0b3J5UGF0aCBhcyBhbnlcbiAgICAgICk7XG4gICAgICBjb25zdCBwa2NzMTFTaWduZXIgPSBoc20ubmV3U2lnbmVyKHtcbiAgICAgICAgbGFiZWw6IGNvbmZpZy5oc20udG9rZW5MYWJlbCBhcyBzdHJpbmcsXG4gICAgICAgIHBpbjogU3RyaW5nKGNvbmZpZy5oc20ucGluKSBhcyBzdHJpbmcsXG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIC8vIHVzZXJUeXBlOiAxIC8qQ0tVX1VTRVIgKi8sXG4gICAgICB9KTtcbiAgICAgIHNpZ25lciA9IHBrY3MxMVNpZ25lci5zaWduZXI7XG5cbiAgICAgIGNsb3NlID0gcGtjczExU2lnbmVyLmNsb3NlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBjbGllbnQsXG4gICAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgICBzaWduZXI6IHNpZ25lcixcbiAgICAgIC8vIERlZmF1bHQgdGltZW91dHMgZm9yIGRpZmZlcmVudCBnUlBDIGNhbGxzXG4gICAgICBldmFsdWF0ZU9wdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgZGVhZGxpbmU6IERhdGUubm93KCkgKyA1MDAwIH07IC8vIDUgc2Vjb25kc1xuICAgICAgfSxcbiAgICAgIGVuZG9yc2VPcHRpb25zOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7IGRlYWRsaW5lOiBEYXRlLm5vdygpICsgMTUwMDAgfTsgLy8gMTUgc2Vjb25kc1xuICAgICAgfSxcbiAgICAgIHN1Ym1pdE9wdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgZGVhZGxpbmU6IERhdGUubm93KCkgKyA1MDAwIH07IC8vIDUgc2Vjb25kc1xuICAgICAgfSxcbiAgICAgIGNvbW1pdFN0YXR1c09wdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgZGVhZGxpbmU6IERhdGUubm93KCkgKyA2MDAwMCB9OyAvLyAxIG1pbnV0ZVxuICAgICAgfSxcbiAgICB9IGFzIENvbm5lY3RPcHRpb25zO1xuXG4gICAgbG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvICR7Y29uZmlnLm1zcElkfWApO1xuICAgIGNvbnN0IGdhdGV3YXkgPSBjb25uZWN0KG9wdGlvbnMpO1xuXG4gICAgLy8gVE9ETzogcmVwbGFjZT9cbiAgICBpZiAoY29uZmlnLmhzbSkge1xuICAgICAgZ2F0ZXdheS5jbG9zZSA9IG5ldyBQcm94eShnYXRld2F5LmNsb3NlLCB7XG4gICAgICAgIGFwcGx5KHRhcmdldDogKCkgPT4gdm9pZCwgdGhpc0FyZzogYW55LCBhcmdBcnJheTogYW55W10pOiBhbnkge1xuICAgICAgICAgIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdBcnJheSk7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBnYXRld2F5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IERpc3BhdGNoIGluc3RhbmNlIGZvciB0aGUgRmFicmljIGNsaWVudC5cbiAgICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYSBuZXcgRmFicmljQ2xpZW50RGlzcGF0Y2ggaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBGYWJyaWMgbmV0d29yay5cbiAgICogQHJldHVybnMge0Rpc3BhdGNofSBBIG5ldyBEaXNwYXRjaCBpbnN0YW5jZSBjb25maWd1cmVkIGZvciB0aGUgRmFicmljIGNsaWVudC5cbiAgICogQHJlbWFya3MgVGhlIERpc3BhdGNoIGluc3RhbmNlIGlzIHVzZWQgdG8gZW5jYXBzdWxhdGUgdGhlIGxvZ2ljIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBGYWJyaWMgbmV0d29yaywgc3VjaCBhcyBzdWJtaXR0aW5nIHRyYW5zYWN0aW9ucyBvciBxdWVyeWluZyBkYXRhLlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBmYWJyaWNEaXNwYXRjaCA9IGZhYnJpY0NsaWVudEFkYXB0ZXIuRGlzcGF0Y2goKTtcbiAgICogZmFicmljRGlzcGF0Y2guc3VibWl0VHJhbnNhY3Rpb24oJ2NyZWF0ZVByb2R1Y3QnLCB7IG5hbWU6ICdQcm9kdWN0IEEnLCBwcmljZTogMTAwIH0pO1xuICAgKi9cbiAgb3ZlcnJpZGUgRGlzcGF0Y2goKTogRmFicmljQ2xpZW50RGlzcGF0Y2gge1xuICAgIHJldHVybiBuZXcgRmFicmljQ2xpZW50QWRhcHRlcltcIl9iYXNlRGlzcGF0Y2hcIl0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGFuIGVycm9yIGludG8gYSBCYXNlRXJyb3JcbiAgICogQHN1bW1hcnkgQ29udmVydHMgYW55IGVycm9yIGludG8gYSBzdGFuZGFyZGl6ZWQgQmFzZUVycm9yIHVzaW5nIHRoZSBwYXJlbnQgY2xhc3MgaW1wbGVtZW50YXRpb25cbiAgICogQHBhcmFtIHtFcnJvciB8IHN0cmluZ30gZXJyIC0gVGhlIGVycm9yIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIE9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGVycm9yXG4gICAqIEByZXR1cm4ge0Jhc2VFcnJvcn0gVGhlIHBhcnNlZCBlcnJvclxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBwYXJzZUVycm9yPEUgZXh0ZW5kcyBCYXNlRXJyb3I+KGVycjogRXJyb3IgfCBzdHJpbmcpOiBFIHtcbiAgICAvLyBpZiAoXG4gICAgLy8gICBNSVNTSU5HX1BSSVZBVEVfREFUQV9SRUdFWC50ZXN0KFxuICAgIC8vICAgICB0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiID8gZXJyIDogZXJyLm1lc3NhZ2VcbiAgICAvLyAgIClcbiAgICAvLyApXG4gICAgLy8gICByZXR1cm4gbmV3IFVuYXV0aG9yaXplZFByaXZhdGVEYXRhQWNjZXNzKGVycikgYXMgRTtcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiAoZXJyIGFzIGFueSkuY29kZSkge1xuICAgICAgc3dpdGNoICgoZXJyIGFzIGFueSkuY29kZSkge1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgcmV0dXJuIG5ldyBFbmRvcnNlbWVudEVycm9yKGVycikgYXMgRTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtc2cgPSB0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiID8gZXJyIDogZXJyLm1lc3NhZ2U7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhOb3RGb3VuZEVycm9yLm5hbWUpKSByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoQ29uZmxpY3RFcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKEJhZFJlcXVlc3RFcnJvci5uYW1lKSlcbiAgICAgIHJldHVybiBuZXcgQmFkUmVxdWVzdEVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKFF1ZXJ5RXJyb3IubmFtZSkpIHJldHVybiBuZXcgUXVlcnlFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhQYWdpbmdFcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBQYWdpbmdFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhVbnN1cHBvcnRlZEVycm9yLm5hbWUpKVxuICAgICAgcmV0dXJuIG5ldyBVbnN1cHBvcnRlZEVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKE1pZ3JhdGlvbkVycm9yLm5hbWUpKSByZXR1cm4gbmV3IE1pZ3JhdGlvbkVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKE9ic2VydmVyRXJyb3IubmFtZSkpIHJldHVybiBuZXcgT2JzZXJ2ZXJFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhBdXRob3JpemF0aW9uRXJyb3IubmFtZSkpXG4gICAgICByZXR1cm4gbmV3IEF1dGhvcml6YXRpb25FcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhGb3JiaWRkZW5FcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBGb3JiaWRkZW5FcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhDb25uZWN0aW9uRXJyb3IubmFtZSkpXG4gICAgICByZXR1cm4gbmV3IENvbm5lY3Rpb25FcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhTZXJpYWxpemF0aW9uRXJyb3IubmFtZSkpXG4gICAgICByZXR1cm4gbmV3IFNlcmlhbGl6YXRpb25FcnJvcihlcnIpIGFzIEU7XG4gICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKGVycikgYXMgRTtcbiAgfVxufVxuXG5GYWJyaWNDbGllbnRBZGFwdGVyLmRlY29yYXRpb24oKTtcbkFkYXB0ZXIuc2V0Q3VycmVudChGYWJyaWNGbGF2b3VyKTtcbiJdfQ==
@@ -189,4 +189,4 @@ export class FabricClientDispatch extends Dispatch {
189
189
  }
190
190
  if (FabricClientAdapter)
191
191
  FabricClientAdapter["_baseDispatch"] = FabricClientDispatch;
192
- //# sourceMappingURL=FabricClientDispatch.js.map
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50RGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L0ZhYnJpY0NsaWVudERpc3BhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxRQUFRLEVBRVIsZ0JBQWdCLEdBRWpCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlDQUE4QjtBQUM1RCxPQUFPLEVBRUwsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsOEJBQXlCO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsUUFBNkI7SUFXckU7Ozs7T0FJRztJQUNILFlBQXNCLE1BQWM7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEWSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVnBDOztXQUVHO1FBQ0ssWUFBTyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBUzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ00sS0FBSyxDQUFDLEtBQUs7UUFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssWUFBWSxDQUFDLFNBQXFCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTSxPQUFPLENBQUMsUUFBZ0M7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QUNGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2YsTUFBTSxJQUFJLGFBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FDbEMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUFFRCxJQUFJLG1CQUFtQjtJQUNyQixtQkFBbUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIENvbnRleHR1YWxBcmdzLFxuICBEaXNwYXRjaCxcbiAgRXZlbnRJZHMsXG4gIFVuc3VwcG9ydGVkRXJyb3IsXG4gIENvbnRleHQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRmFicmljRmxhZ3MsIFBlZXJDb25maWcgfSBmcm9tIFwiLi4vc2hhcmVkL3R5cGVzXCI7XG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwiQGdycGMvZ3JwYy1qc1wiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50QWRhcHRlciB9IGZyb20gXCIuL0ZhYnJpY0NsaWVudEFkYXB0ZXJcIjtcbmltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgSW50ZXJuYWxFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBDaGFpbmNvZGVFdmVudCxcbiAgQ2xvc2VhYmxlQXN5bmNJdGVyYWJsZSxcbn0gZnJvbSBcIkBoeXBlcmxlZGdlci9mYWJyaWMtZ2F0ZXdheVwiO1xuaW1wb3J0IHsgcGFyc2VFdmVudE5hbWUgfSBmcm9tIFwiLi4vc2hhcmVkL2V2ZW50c1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFdmVudCBkaXNwYXRjaGVyIGZvciBIeXBlcmxlZGdlciBGYWJyaWMgY2hhaW5jb2RlIGV2ZW50c1xuICogQHN1bW1hcnkgTGlzdGVucyBmb3IgYW5kIHByb2Nlc3NlcyBldmVudHMgZW1pdHRlZCBieSBGYWJyaWMgY2hhaW5jb2RlLCBkaXNwYXRjaGluZyB0aGVtIHRvIHJlZ2lzdGVyZWQgb2JzZXJ2ZXJzXG4gKiBAdGVtcGxhdGUgUGVlckNvbmZpZyAtIENvbmZpZ3VyYXRpb24gdHlwZSBmb3IgY29ubmVjdGluZyB0byBhIEZhYnJpYyBwZWVyXG4gKiBAcGFyYW0gY2xpZW50IC0gZ1JQQyBjbGllbnQgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIEZhYnJpYyBuZXR3b3JrXG4gKiBAY2xhc3MgRmFicmljQ2xpZW50RGlzcGF0Y2hcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSBuZXcgRmFicmljRGlzcGF0Y2ggaW5zdGFuY2VcbiAqIGNvbnN0IGNsaWVudCA9IGF3YWl0IEZhYnJpY0FkYXB0ZXIuZ2V0Q2xpZW50KHBlZXJDb25maWcpO1xuICogY29uc3QgZGlzcGF0Y2ggPSBuZXcgRmFicmljRGlzcGF0Y2goY2xpZW50KTtcbiAqXG4gKiAvLyBDb25maWd1cmUgdGhlIGRpc3BhdGNoIHdpdGggcGVlciBjb25maWd1cmF0aW9uXG4gKiBkaXNwYXRjaC5jb25maWd1cmUocGVlckNvbmZpZyk7XG4gKlxuICogLy8gUmVnaXN0ZXIgYW4gb2JzZXJ2ZXIgZm9yIGEgc3BlY2lmaWMgdGFibGUgYW5kIGV2ZW50XG4gKiBkaXNwYXRjaC5vYnNlcnZlKCd1c2VycycsICdjcmVhdGUnLCAoaWQpID0+IHtcbiAqICAgY29uc29sZS5sb2coYFVzZXIgY3JlYXRlZDogJHtpZH1gKTtcbiAqIH0pO1xuICpcbiAqIC8vIFN0YXJ0IGxpc3RlbmluZyBmb3IgZXZlbnRzXG4gKiBhd2FpdCBkaXNwYXRjaC5zdGFydCgpO1xuICogYGBgXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBGYWJyaWNEaXNwYXRjaFxuICogICBwYXJ0aWNpcGFudCBHYXRld2F5XG4gKiAgIHBhcnRpY2lwYW50IE5ldHdvcmtcbiAqICAgcGFydGljaXBhbnQgQ2hhaW5jb2RlXG4gKlxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogbmV3IEZhYnJpY0Rpc3BhdGNoKGNsaWVudClcbiAqICAgQ2xpZW50LT4+RmFicmljRGlzcGF0Y2g6IGNvbmZpZ3VyZShwZWVyQ29uZmlnKVxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogb2JzZXJ2ZSh0YWJsZSwgZXZlbnQsIGNhbGxiYWNrKVxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogc3RhcnQoKVxuICogICBGYWJyaWNEaXNwYXRjaC0+PkZhYnJpY0Rpc3BhdGNoOiBpbml0aWFsaXplKClcbiAqICAgRmFicmljRGlzcGF0Y2gtPj5HYXRld2F5OiBnZXRHYXRld2F5KGNvbmZpZywgY2xpZW50KVxuICogICBHYXRld2F5LT4+TmV0d29yazogZ2V0TmV0d29yayhjaGFubmVsKVxuICogICBOZXR3b3JrLT4+TmV0d29yazogZ2V0Q2hhaW5jb2RlRXZlbnRzKGNoYWluY29kZU5hbWUpXG4gKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IGhhbmRsZUV2ZW50cygpXG4gKiAgIGxvb3AgRm9yIGVhY2ggZXZlbnRcbiAqICAgICBDaGFpbmNvZGUtLT4+RmFicmljRGlzcGF0Y2g6IENoYWluY29kZUV2ZW50XG4gKiAgICAgRmFicmljRGlzcGF0Y2gtPj5GYWJyaWNEaXNwYXRjaDogcGFyc2VFdmVudE5hbWUoZXZlbnROYW1lKVxuICogICAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IHBhcnNlUGF5bG9hZChwYXlsb2FkKVxuICogICAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IHVwZGF0ZU9ic2VydmVycyh0YWJsZSwgZXZlbnQsIGlkKVxuICogICAgIEZhYnJpY0Rpc3BhdGNoLS0+PkNsaWVudDogY2FsbGJhY2soaWQpXG4gKiAgIGVuZFxuICovXG5leHBvcnQgY2xhc3MgRmFicmljQ2xpZW50RGlzcGF0Y2ggZXh0ZW5kcyBEaXNwYXRjaDxGYWJyaWNDbGllbnRBZGFwdGVyPiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnQgbGlzdGVuaW5nIHN0YWNrIGZvciBjaGFpbmNvZGUgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbmluZ1N0YWNrPzogQ2xvc2VhYmxlQXN5bmNJdGVyYWJsZTxDaGFpbmNvZGVFdmVudD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0IGRlY29kZXIgZm9yIGNvbnZlcnRpbmcgZXZlbnQgcGF5bG9hZHMgZnJvbSBieXRlcyB0byBzdHJpbmdzXG4gICAqL1xuICBwcml2YXRlIGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBGYWJyaWNEaXNwYXRjaCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIGRpc3BhdGNoZXIgZm9yIEZhYnJpYyBjaGFpbmNvZGUgZXZlbnRzXG4gICAqIEBwYXJhbSB7Q2xpZW50fSBjbGllbnQgLSBnUlBDIGNsaWVudCBmb3IgY29ubmVjdGluZyB0byB0aGUgRmFicmljIG5ldHdvcmtcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjbGllbnQ6IENsaWVudCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENsb3NlcyB0aGUgZXZlbnQgbGlzdGVuaW5nIGNvbm5lY3Rpb25cbiAgICogQHN1bW1hcnkgU3RvcHMgbGlzdGVuaW5nIGZvciBjaGFpbmNvZGUgZXZlbnRzIGFuZCByZWxlYXNlcyByZXNvdXJjZXNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5pbmdTdGFjaykgdGhpcy5saXN0ZW5pbmdTdGFjay5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgZXZlbnQgcGF5bG9hZCBmcm9tIGJpbmFyeSBmb3JtYXRcbiAgICogQHN1bW1hcnkgQ29udmVydHMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgSlNPTiB0byBhbiBvYmplY3Qgd2l0aCBhbiBpZCBwcm9wZXJ0eVxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGpzb25CeXRlcyAtIFRoZSBiaW5hcnkgcGF5bG9hZCBmcm9tIHRoZSBjaGFpbmNvZGUgZXZlbnRcbiAgICogQHJldHVybiB7eyBpZDogc3RyaW5nIH19IFRoZSBwYXJzZWQgcGF5bG9hZCBjb250YWluaW5nIHRoZSByZWNvcmQgSURcbiAgICovXG4gIHByaXZhdGUgcGFyc2VQYXlsb2FkKGpzb25CeXRlczogVWludDhBcnJheSk6IHsgaWQ6IHN0cmluZyB9IHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5kZWNvZGVyLmRlY29kZShqc29uQnl0ZXMpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdGFydHMgb2JzZXJ2aW5nIGFuIGFkYXB0ZXJcbiAgICogQHN1bW1hcnkgQ29ubmVjdHMgdGhpcyBkaXNwYXRjaCB0byBhbiBhZGFwdGVyIHRvIG1vbml0b3IgaXRzIG9wZXJhdGlvbnNcbiAgICogQHBhcmFtIHtBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT59IG9ic2VydmVyIC0gVGhlIGFkYXB0ZXIgdG8gb2JzZXJ2ZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgb3ZlcnJpZGUgb2JzZXJ2ZShvYnNlcnZlcjogQWRhcHRlcjxhbnksIGFueSwgYW55Pik6IHZvaWQge1xuICAgIGlmICghKG9ic2VydmVyIGluc3RhbmNlb2YgRmFicmljQ2xpZW50QWRhcHRlcikpXG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgXCJPbmx5IEZhYnJpY0NsaWVudEFkYXB0ZXIgY2FuIGJlIG9ic2VydmVkIGJ5IGRpc3BhdGNoXCJcbiAgICAgICk7XG4gICAgc3VwZXIub2JzZXJ2ZShvYnNlcnZlciBhcyBGYWJyaWNDbGllbnRBZGFwdGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBvYnNlcnZlcnMgYWJvdXQgYSBkYXRhYmFzZSBldmVudFxuICAgKiBAc3VtbWFyeSBOb3RpZmllcyBvYnNlcnZlcnMgYWJvdXQgYSBjaGFuZ2UgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB3aGVyZSB0aGUgY2hhbmdlIG9jY3VycmVkXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c3xCdWxrQ3J1ZE9wZXJhdGlvbktleXN8c3RyaW5nfSBldmVudCAtIFRoZSB0eXBlIG9mIG9wZXJhdGlvbiB0aGF0IG9jY3VycmVkXG4gICAqIEBwYXJhbSB7YW55fSBwYXlsb2FkIC0gVGhlIGV2ZW50IHBheWxvYWRcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgb2JzZXJ2ZXJzIGhhdmUgYmVlbiBub3RpZmllZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlT2JzZXJ2ZXJzKFxuICAgIG1vZGVsOiBDb25zdHJ1Y3Rvcjxhbnk+IHwgc3RyaW5nLFxuICAgIGV2ZW50OiBPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nLFxuICAgIGlkOiBFdmVudElkcyxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0ZsYWdzPj5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMudXBkYXRlT2JzZXJ2ZXJzKTtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgbG9nLnZlcmJvc2UoXG4gICAgICAgIGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaDsgc2tpcHBpbmcgb2JzZXJ2ZXIgdXBkYXRlIGZvciAke3R5cGVvZiBtb2RlbCA9PT0gXCJzdHJpbmdcIiA/IG1vZGVsIDogTW9kZWwudGFibGVOYW1lKG1vZGVsKX06JHtldmVudH1gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLnJlZnJlc2gobW9kZWwsIGV2ZW50LCBpZCwgLi4uY3R4QXJncyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byByZWZyZXNoIGRpc3BhdGNoOiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcm9jZXNzZXMgaW5jb21pbmcgY2hhaW5jb2RlIGV2ZW50c1xuICAgKiBAc3VtbWFyeSBMaXN0ZW5zIGZvciBldmVudHMgZnJvbSB0aGUgY2hhaW5jb2RlIGFuZCBkaXNwYXRjaGVzIHRoZW0gdG8gcmVnaXN0ZXJlZCBvYnNlcnZlcnNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXZlbnQgaGFuZGxpbmcgc3RvcHNcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgRmFicmljRGlzcGF0Y2hcbiAgICogICBwYXJ0aWNpcGFudCBFdmVudFN0YWNrXG4gICAqICAgcGFydGljaXBhbnQgRXZlbnRQYXJzZXJcbiAgICogICBwYXJ0aWNpcGFudCBPYnNlcnZlcnNcbiAgICpcbiAgICogICBGYWJyaWNEaXNwYXRjaC0+PkZhYnJpY0Rpc3BhdGNoOiBoYW5kbGVFdmVudHMoKVxuICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RXZlbnRTdGFjazogZm9yIGF3YWl0IChjb25zdCBldnQgb2YgbGlzdGVuaW5nU3RhY2spXG4gICAqICAgRXZlbnRTdGFjay0tPj5GYWJyaWNEaXNwYXRjaDogQ2hhaW5jb2RlRXZlbnRcbiAgICogICBGYWJyaWNEaXNwYXRjaC0+PkV2ZW50UGFyc2VyOiBwYXJzZUV2ZW50TmFtZShldnQuZXZlbnROYW1lKVxuICAgKiAgIEV2ZW50UGFyc2VyLS0+PkZhYnJpY0Rpc3BhdGNoOiB7IHRhYmxlLCBldmVudCwgb3duZXIgfVxuICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IENoZWNrIGlmIGV2ZW50IGlzIGZvciB0aGlzIE1TUFxuICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IHBhcnNlUGF5bG9hZChldnQucGF5bG9hZClcbiAgICogICBGYWJyaWNEaXNwYXRjaC0+Pk9ic2VydmVyczogdXBkYXRlT2JzZXJ2ZXJzKHRhYmxlLCBldmVudCwgcGF5bG9hZC5pZClcbiAgICogICBPYnNlcnZlcnMtLT4+RmFicmljRGlzcGF0Y2g6IENhbGxiYWNrcyBleGVjdXRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV2ZW50cyhjdHhBcmc/OiBDb250ZXh0PEZhYnJpY0ZsYWdzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5saXN0ZW5pbmdTdGFjaylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgRXZlbnQgc3RhY2sgbm90IGluaXRpYWxpemVkLiBFbnN1cmUgdGhhdCBcInN0YXJ0TGlzdGVuaW5nXCIgaXMgY2FsbGVkIGJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgb3BlcmF0aW9uLmBcbiAgICAgICk7XG5cbiAgICBpZiAoIXRoaXMuYWRhcHRlciB8fCAhdGhpcy5hZGFwdGVyLmNvbmZpZylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIGZvdW5kLiBzaG91bGQgYmUgaW1wb3NzaWJsZWApO1xuXG4gICAgY29uc3QgY3R4ID1cbiAgICAgIGN0eEFyZyB8fFxuICAgICAgKGF3YWl0IHRoaXMuYWRhcHRlci5jb250ZXh0KFxuICAgICAgICBPcGVyYXRpb25LZXlzLlJFQUQsXG4gICAgICAgIHtcbiAgICAgICAgICBjb3JyZWxhdGlvbklkOiB0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYWluY29kZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgICh0aGlzLm1vZGVscyAmJiB0aGlzLm1vZGVsc1swXSkgfHwgKE1vZGVsIGFzIHVua25vd24gYXMgQ29uc3RydWN0b3IpXG4gICAgICApKTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5oYW5kbGVFdmVudHMpO1xuXG4gICAgbG9nLmluZm8oXG4gICAgICBgTGlzdGVuaW5nIGZvciBpbmNvbWluZyBldmVudHMgb24gY2hhaW5jb2RlIFwiJHt0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYWluY29kZU5hbWV9XCIgb24gY2hhbm5lbCBcIiR7dGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFubmVsfVwiLi4uYFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBldnQgb2YgdGhpcy5saXN0ZW5pbmdTdGFjaykge1xuICAgICAgICBjb25zdCB7IHRhYmxlLCBldmVudCwgb3duZXIgfSA9IHBhcnNlRXZlbnROYW1lKGV2dC5ldmVudE5hbWUpO1xuICAgICAgICBpZiAob3duZXIgJiYgb3duZXIgIT09IHRoaXMuYWRhcHRlci5jb25maWc/Lm1zcElkKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogeyBpZDogc3RyaW5nIH0gPSB0aGlzLnBhcnNlUGF5bG9hZChldnQucGF5bG9hZCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSB0YWJsZVxuICAgICAgICAgICAgPyBNb2RlbC5nZXQodGFibGUpXG4gICAgICAgICAgICA6IE1vZGVsLmdldCh0aGlzLm1vZGVsc1swXS5uYW1lKTtcbiAgICAgICAgICBjb25zdCBtb2RlbFJlZiA9IHRhcmdldE1vZGVsID8/ICh0YWJsZSB8fCB0aGlzLm1vZGVsc1swXT8ubmFtZSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVPYnNlcnZlcnMoXG4gICAgICAgICAgICBtb2RlbFJlZiBhcyBDb25zdHJ1Y3RvciB8IHN0cmluZyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcGF5bG9hZC5pZCBhcyBzdHJpbmcsXG4gICAgICAgICAgICBjdHhcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB1cGRhdGUgb2JzZXJ2YWJsZXMgZm9yIHRhYmxlICR7dGFibGV9IGV2ZW50ICR7ZXZlbnR9IGlkOiAke3BheWxvYWQuaWR9OiAke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZWFkIGV2ZW50IGZvciBjaGFpbmNvZGUgXCIke3RoaXMuYWRhcHRlci5jb25maWcuY2hhaW5jb2RlTmFtZX1cIiBvbiBjaGFubmVsIFwiJHt0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYW5uZWx9XCI6ICR7ZX1gXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3RlbmVyXG4gICAqIEBzdW1tYXJ5IFNldHMgdXAgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIEZhYnJpYyBuZXR3b3JrIGFuZCBzdGFydHMgbGlzdGVuaW5nIGZvciBjaGFpbmNvZGUgZXZlbnRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIG9yIGNvbmZpZyBvYnNlcnZlZCBmb3IgZGlzcGF0Y2hgKTtcbiAgICBjb25zdCBnYXRld2F5ID0gYXdhaXQgRmFicmljQ2xpZW50QWRhcHRlci5nZXRHYXRld2F5KFxuICAgICAgdGhpcy5hZGFwdGVyLmNvbmZpZyBhcyBQZWVyQ29uZmlnLFxuICAgICAgdGhpcy5jbGllbnRcbiAgICApO1xuICAgIGNvbnN0IG5ldHdvcmsgPSBnYXRld2F5LmdldE5ldHdvcmsodGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFubmVsKTtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaGApO1xuICAgIHRoaXMubGlzdGVuaW5nU3RhY2sgPSBhd2FpdCBuZXR3b3JrLmdldENoYWluY29kZUV2ZW50cyhcbiAgICAgIHRoaXMuYWRhcHRlci5jb25maWcuY2hhaW5jb2RlTmFtZVxuICAgICk7XG4gICAgdGhpcy5oYW5kbGVFdmVudHMoKTtcbiAgfVxufVxuXG5pZiAoRmFicmljQ2xpZW50QWRhcHRlcilcbiAgRmFicmljQ2xpZW50QWRhcHRlcltcIl9iYXNlRGlzcGF0Y2hcIl0gPSBGYWJyaWNDbGllbnREaXNwYXRjaDtcbiJdfQ==
@@ -11,4 +11,4 @@ export class FabricClientPaginator extends Paginator {
11
11
  return super.page(page, ...args); // this will fail for non-prepared statements
12
12
  }
13
13
  }
14
- //# sourceMappingURL=FabricClientPaginator.js.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50UGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9GYWJyaWNDbGllbnRQYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQU14QixNQUFNLE9BQU8scUJBQXVDLFNBQVEsU0FJM0Q7SUFDQyxZQUNFLE9BQTRCLEVBQzVCLEtBQTBDLEVBQzFDLElBQVksRUFDWixLQUFxQjtRQUVyQixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxPQUFPLENBQUMsWUFBd0I7UUFDeEMsTUFBTSxJQUFJLGdCQUFnQixDQUN4QixxR0FBcUcsQ0FDdEcsQ0FBQztJQUNKLENBQUM7SUFFUSxJQUFJLENBQ1gsT0FBZSxDQUFDLEVBQ2hCLEdBQUcsSUFBNkI7UUFFaEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsNkNBQTZDO0lBQ2pGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgUGFnaW5hdG9yLFxuICBQcmVwYXJlZFN0YXRlbWVudCxcbiAgVW5zdXBwb3J0ZWRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBGYWJyaWNDbGllbnRBZGFwdGVyIH0gZnJvbSBcIi4vRmFicmljQ2xpZW50QWRhcHRlclwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuZXhwb3J0IGNsYXNzIEZhYnJpY0NsaWVudFBhZ2luYXRvcjxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFnaW5hdG9yPFxuICBNLFxuICBNLFxuICBNYW5nb1F1ZXJ5XG4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlcjogRmFicmljQ2xpZW50QWRhcHRlcixcbiAgICBxdWVyeTogTWFuZ29RdWVyeSB8IFByZXBhcmVkU3RhdGVtZW50PGFueT4sXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPlxuICApIHtcbiAgICBzdXBlcihhZGFwdGVyLCBxdWVyeSwgc2l6ZSwgY2xhenopO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwcm90ZWN0ZWQgcHJlcGFyZShyYXdTdGF0ZW1lbnQ6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIGBSYXcgcXVlcnkgYWNjZXNzIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJjbGFzcy4gb25seSBwcmVwYXJlZCBzdGF0ZW1lbnRzIGFyZSBuYXRpdmVseSBhdmFpbGFibGVgXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHBhZ2UoXG4gICAgcGFnZTogbnVtYmVyID0gMSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIHJldHVybiBzdXBlci5wYWdlKHBhZ2UsIC4uLmFyZ3MpOyAvLyB0aGlzIHdpbGwgZmFpbCBmb3Igbm9uLXByZXBhcmVkIHN0YXRlbWVudHNcbiAgfVxufVxuIl19
@@ -32,7 +32,7 @@ export class FabricClientRepository extends Repository {
32
32
  constructor(adapter, clazz) {
33
33
  super(adapter, clazz);
34
34
  this._overrides = Object.assign({}, super["_overrides"], {
35
- ignoreValidation: false,
35
+ ignoreValidation: true,
36
36
  ignoreHandlers: true,
37
37
  allowRawStatements: false,
38
38
  forcePrepareSimpleQueries: true,
@@ -107,4 +107,4 @@ export class FabricClientRepository extends Repository {
107
107
  return updated.map((u, i) => this.adapter.revert(u, this.class, records[i].id, ctx.get("rebuildWithTransient") ? records[i].transient : undefined, ctx));
108
108
  }
109
109
  }
110
- //# sourceMappingURL=FabricClientRepository.js.map
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50UmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvRmFicmljQ2xpZW50UmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsZUFBZSxFQUNmLFVBQVUsRUFDVixPQUFPLEVBRVAscUJBQXFCLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS3ZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLE9BQU8sc0JBR1gsU0FBUSxVQUFnQjtJQVN4QixZQUFZLE9BQVcsRUFBRSxLQUFzQjtRQUM3QyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBVEwsZUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNyRSxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQiwwQkFBMEIsRUFBRSxJQUFJO1NBQ2pDLENBQUMsQ0FBQztJQUlILENBQUM7SUFFUSxLQUFLLENBQUMsVUFBVSxDQUN2QixHQUFZLEVBQ1osS0FBcUIsRUFDckIsSUFBWSxFQUNaLEdBQUcsSUFBc0M7UUFFekMsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUNwQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQzdCLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxFQUNKLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQ3RCLENBQUM7UUFDRixNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FB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Q0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQy9CLEdBQUcsT0FBTyxDQUNYLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLENBQUMsRUFDRCxJQUFJLENBQUMsS0FBSyxFQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQ2xFLEdBQUcsQ0FDSixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPcmRlckRpcmVjdGlvbixcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSZXBvc2l0b3J5LFxuICBDb250ZXh0LFxuICBDb250ZXh0T2YsXG4gIFByZXBhcmVkU3RhdGVtZW50S2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IE1heWJlQ29udGV4dHVhbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgdHlwZSBGYWJyaWNDbGllbnRBZGFwdGVyIH0gZnJvbSBcIi4vRmFicmljQ2xpZW50QWRhcHRlclwiO1xuaW1wb3J0IHsgUHJpbWFyeUtleVR5cGUgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwb3NpdG9yeSBpbXBsZW1lbnRhdGlvbiBmb3IgRmFicmljIGNsaWVudCBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBnZW5lcmljIFJlcG9zaXRvcnkgdG8gcHJlcGFyZSBjb250ZXh0IGFuZCBhcmd1bWVudHMgZm9yIENSVUQgb3BlcmF0aW9ucyBleGVjdXRlZCB2aWEgYSBGYWJyaWMgY2xpZW50IEFkYXB0ZXIsIHdpcmluZyBSZXBvc2l0b3J5RmxhZ3MgYW5kIEZhYnJpYy1zcGVjaWZpYyBvdmVycmlkZXMuXG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsIC0gVGhlIG1vZGVsIHR5cGUgaGFuZGxlZCBieSB0aGlzIHJlcG9zaXRvcnlcbiAqIEBwYXJhbSB7QWRhcHRlcjxhbnksIE1hbmdvUXVlcnksIEZhYnJpY0ZsYWdzLCBDb250ZXh0PEZhYnJpY0ZsYWdzPj59IFthZGFwdGVyXSAtIE9wdGlvbmFsIGFkYXB0ZXIgaW5zdGFuY2UgdXNlZCB0byBleGVjdXRlIG9wZXJhdGlvbnNcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IFtjbGF6el0gLSBPcHRpb25hbCBtb2RlbCBjb25zdHJ1Y3RvciB1c2VkIGJ5IHRoZSByZXBvc2l0b3J5XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnlcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG4gKiBpbXBvcnQgeyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItZmFicmljXCI7XG4gKlxuICogY2xhc3MgVXNlciBleHRlbmRzIE1vZGVsIHsgaWQhOiBzdHJpbmc7IG5hbWUhOiBzdHJpbmc7IH1cbiAqIGNvbnN0IHJlcG8gPSBuZXcgRmFicmljQ2xpZW50UmVwb3NpdG9yeTxVc2VyPigpO1xuICogY29uc3QgY3JlYXRlZCA9IGF3YWl0IHJlcG8uY3JlYXRlKG5ldyBVc2VyKHsgaWQ6IFwiMVwiLCBuYW1lOiBcIkFsaWNlXCIgfSkpO1xuICogY29uc3QgbG9hZGVkID0gYXdhaXQgcmVwby5yZWFkKFwiMVwiKTtcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBSZXBvIGFzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnlcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBBcHAtPj5SZXBvOiBjcmVhdGUobW9kZWwpXG4gKiAgIFJlcG8tPj5SZXBvOiBjcmVhdGVQcmVmaXgobW9kZWwsIC4uLmFyZ3MpXG4gKiAgIFJlcG8tPj5BZGFwdGVyOiBjcmVhdGUodGFibGUsIGlkLCBtb2RlbCwgZmxhZ3MpXG4gKiAgIEFkYXB0ZXItLT4+UmVwbzogcmVzdWx0XG4gKiAgIFJlcG8tLT4+QXBwOiBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgRmFicmljQ2xpZW50UmVwb3NpdG9yeTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBBIGV4dGVuZHMgRmFicmljQ2xpZW50QWRhcHRlcixcbj4gZXh0ZW5kcyBSZXBvc2l0b3J5PE0sIEE+IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9vdmVycmlkZXMgPSBPYmplY3QuYXNzaWduKHt9LCBzdXBlcltcIl9vdmVycmlkZXNcIl0sIHtcbiAgICBpZ25vcmVWYWxpZGF0aW9uOiB0cnVlLFxuICAgIGlnbm9yZUhhbmRsZXJzOiB0cnVlLFxuICAgIGFsbG93UmF3U3RhdGVtZW50czogZmFsc2UsXG4gICAgZm9yY2VQcmVwYXJlU2ltcGxlUXVlcmllczogdHJ1ZSxcbiAgICBmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllczogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IEEsIGNsYXp6PzogQ29uc3RydWN0b3I8TT4pIHtcbiAgICBzdXBlcihhZGFwdGVyLCBjbGF6eik7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBwYWdpbmF0ZUJ5KFxuICAgIGtleToga2V5b2YgTSxcbiAgICBvcmRlcjogT3JkZXJEaXJlY3Rpb24sXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICkge1xuICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFxuICAgICAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0VfQlksXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgYXJncyxcbiAgICAgIHRoaXMuYWRhcHRlcixcbiAgICAgIHRoaXMuX292ZXJyaWRlcyB8fCB7fVxuICAgICk7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGNvbnRleHRBcmdzLmFyZ3MsIHRoaXMucGFnaW5hdGVCeSk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgcGFnaW5hdGluZyAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gd2l0aCBwYWdlIHNpemUgJHtzaXplfWBcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgpXG4gICAgICAub3JkZXJCeShba2V5LCBvcmRlcl0pXG4gICAgICAucGFnaW5hdGUoc2l6ZSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBsaXN0QnkoXG4gICAga2V5OiBrZXlvZiBNLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApIHtcbiAgICBjb25zdCBjb250ZXh0QXJncyA9IGF3YWl0IENvbnRleHQuYXJncyhcbiAgICAgIFwibGlzdFwiLFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIGFyZ3MsXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmxpc3RCeSk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgbGlzdGluZyAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gYnkgJHtrZXkgYXMgc3RyaW5nfSAke29yZGVyfWBcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQoXG4gICAgICB0aGlzLmxpc3RCeS5uYW1lLFxuICAgICAga2V5LFxuICAgICAgeyBkaXJlY3Rpb246IG9yZGVyIH0sXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKSkgYXMgYW55O1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZmluZEJ5KFxuICAgIGtleToga2V5b2YgTSxcbiAgICB2YWx1ZTogYW55LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8TVtdPiB7XG4gICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXG4gICAgICBQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORF9CWSxcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBhcmdzLFxuICAgICAgdGhpcy5hZGFwdGVyLFxuICAgICAgdGhpcy5fb3ZlcnJpZGVzIHx8IHt9XG4gICAgKTtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoY29udGV4dEFyZ3MuYXJncywgdGhpcy5maW5kQnkpO1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYGZpbmRpbmcgYWxsICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSB3aXRoICR7a2V5IGFzIHN0cmluZ30gJHt2YWx1ZX1gXG4gICAgKTtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuc3RhdGVtZW50KFxuICAgICAgdGhpcy5maW5kQnkubmFtZSxcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlLFxuICAgICAge30sXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKSkgYXMgYW55O1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZmluZE9uZUJ5KFxuICAgIGtleToga2V5b2YgTSxcbiAgICB2YWx1ZTogYW55LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8TT4ge1xuICAgIGNvbnN0IGNvbnRleHRBcmdzID0gYXdhaXQgQ29udGV4dC5hcmdzKFxuICAgICAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkRfT05FX0JZLFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIGFyZ3MsXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLmZpbmRPbmVCeSk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgZmluZGluZyBPbmUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IHdpdGggJHtrZXkgYXMgc3RyaW5nfSAke3ZhbHVlfWBcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQoXG4gICAgICB0aGlzLmZpbmRPbmVCeS5uYW1lLFxuICAgICAga2V5LFxuICAgICAgdmFsdWUsXG4gICAgICB7fSxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApKSBhcyBhbnk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBzdGF0ZW1lbnQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgY29udGV4dEFyZ3MgPSBhd2FpdCBDb250ZXh0LmFyZ3MoXG4gICAgICBQZXJzaXN0ZW5jZUtleXMuU1RBVEVNRU5ULFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIGFyZ3MsXG4gICAgICB0aGlzLmFkYXB0ZXIsXG4gICAgICB0aGlzLl9vdmVycmlkZXMgfHwge31cbiAgICApO1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChjb250ZXh0QXJncy5hcmdzLCB0aGlzLnN0YXRlbWVudCk7XG4gICAgbG9nLnZlcmJvc2UoYEV4ZWN1dGluZyBwcmVwYXJlZCBzdGF0ZW1lbnQgJHtuYW1lfWApO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihcbiAgICAgIFBlcnNpc3RlbmNlS2V5cy5TVEFURU1FTlQsXG4gICAgICBjb250ZXh0QXJncy5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZShcbiAgICBtb2RlbDogTSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE0+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmNyZWF0ZSk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIG5ldyAke3RoaXMuY2xhc3MubmFtZX0gaW4gdGFibGUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IHJlY29yZCwgaWQsIHRyYW5zaWVudCB9ID0gdGhpcy5hZGFwdGVyLnByZXBhcmUobW9kZWwsIGN0eCk7XG4gICAgcmVjb3JkID0gYXdhaXQgdGhpcy5hZGFwdGVyLmNyZWF0ZShcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBpZCxcbiAgICAgIHJlY29yZCxcbiAgICAgIHRyYW5zaWVudCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0PE0+KHJlY29yZCwgdGhpcy5jbGFzcywgaWQsIHRyYW5zaWVudCwgY3R4KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZShcbiAgICBtb2RlbDogTSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE0+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MsIGxvZywgY3R4IH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnVwZGF0ZSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IHJlY29yZCwgaWQsIHRyYW5zaWVudCB9ID0gdGhpcy5hZGFwdGVyLnByZXBhcmUobW9kZWwsIGN0eCk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHVwZGF0aW5nICR7dGhpcy5jbGFzcy5uYW1lfSBpbiB0YWJsZSAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gd2l0aCBpZCAke2lkfWBcbiAgICApO1xuICAgIHJlY29yZCA9IGF3YWl0IHRoaXMuYWRhcHRlci51cGRhdGUoXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgaWQsXG4gICAgICByZWNvcmQsXG4gICAgICB0cmFuc2llbnQsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydDxNPihyZWNvcmQsIHRoaXMuY2xhc3MsIGlkLCB0cmFuc2llbnQsIGN0eCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBjcmVhdGVBbGwoXG4gICAgbW9kZWxzOiBNW10sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxNW10+IHtcbiAgICBpZiAoIW1vZGVscy5sZW5ndGgpIHJldHVybiBtb2RlbHM7XG4gICAgY29uc3QgeyBjdHgsIGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGVBbGwpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBDcmVhdGluZyAke21vZGVscy5sZW5ndGh9IG5ldyAke3RoaXMuY2xhc3MubmFtZX0gaW4gdGFibGUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG5cbiAgICBjb25zdCBwcmVwYXJlZCA9IG1vZGVscy5tYXAoKG0pID0+IHRoaXMuYWRhcHRlci5wcmVwYXJlKG0sIGN0eCkpO1xuICAgIGNvbnN0IGlkcyA9IHByZXBhcmVkLm1hcCgocCkgPT4gcC5pZCk7XG4gICAgbGV0IHJlY29yZHMgPSBwcmVwYXJlZC5tYXAoKHApID0+IHAucmVjb3JkKTtcbiAgICBjb25zdCB0cmFuc2llbnQgPSBwcmVwYXJlZC5tYXAoKHApID0+IHAudHJhbnNpZW50KTtcbiAgICByZWNvcmRzID0gYXdhaXQgdGhpcy5hZGFwdGVyLmNyZWF0ZUFsbChcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBpZHMgYXMgUHJpbWFyeUtleVR5cGVbXSxcbiAgICAgIHJlY29yZHMsXG4gICAgICB0cmFuc2llbnQsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICByZXR1cm4gcmVjb3Jkcy5tYXAoKHIsIGkpID0+XG4gICAgICB0aGlzLmFkYXB0ZXIucmV2ZXJ0KFxuICAgICAgICByLFxuICAgICAgICB0aGlzLmNsYXNzLFxuICAgICAgICBpZHNbaV0sXG4gICAgICAgIGN0eC5nZXQoXCJyZWJ1aWxkV2l0aFRyYW5zaWVudFwiKSA/IHByZXBhcmVkW2ldLnRyYW5zaWVudCA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3R4XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZUFsbChcbiAgICBtb2RlbHM6IE1bXSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMudXBkYXRlQWxsKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgVXBkYXRpbmcgJHttb2RlbHMubGVuZ3RofSBuZXcgJHt0aGlzLmNsYXNzLm5hbWV9IGluIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfWBcbiAgICApO1xuXG4gICAgY29uc3QgcmVjb3JkcyA9IG1vZGVscy5tYXAoKG0pID0+IHRoaXMuYWRhcHRlci5wcmVwYXJlKG0sIGN0eCkpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIudXBkYXRlQWxsKFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIHJlY29yZHMubWFwKChyKSA9PiByLmlkKSxcbiAgICAgIHJlY29yZHMubWFwKChyKSA9PiByLnJlY29yZCksXG4gICAgICByZWNvcmRzLm1hcCgocikgPT4gci50cmFuc2llbnQpLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gICAgcmV0dXJuIHVwZGF0ZWQubWFwKCh1LCBpKSA9PlxuICAgICAgdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgICAgdSxcbiAgICAgICAgdGhpcy5jbGFzcyxcbiAgICAgICAgcmVjb3Jkc1tpXS5pZCxcbiAgICAgICAgY3R4LmdldChcInJlYnVpbGRXaXRoVHJhbnNpZW50XCIpID8gcmVjb3Jkc1tpXS50cmFuc2llbnQgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0eFxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -14,4 +14,4 @@ export class FabricClientStatement extends Statement {
14
14
  throw new UnsupportedError(`This method is only called is prepared statements are not used. Is so, a dedicated implementation for the native queries used is required`);
15
15
  }
16
16
  }
17
- //# sourceMappingURL=FabricClientStatement.js.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50U3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9GYWJyaWNDbGllbnRTdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUt4QixNQUFNLE9BQU8scUJBQTBDLFNBQVEsU0FLOUQ7SUFDQyxZQUFZLE9BQTRCLEVBQUUsU0FBaUM7UUFDekUsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRWtCLEtBQUs7UUFDdEIsTUFBTSxJQUFJLGdCQUFnQixDQUN4QiwySUFBMkksQ0FDNUksQ0FBQztJQUNKLENBQUM7SUFFa0IsY0FBYztJQUMvQiw2REFBNkQ7SUFDN0QsU0FBdUI7SUFDdkIsNkRBQTZEO0lBQzdELEdBQUcsSUFBVztRQUVkLE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIsMklBQTJJLENBQzVJLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZGFwdGVyRmxhZ3MsXG4gIENvbmRpdGlvbixcbiAgU3RhdGVtZW50LFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50QWRhcHRlciB9IGZyb20gXCIuL0ZhYnJpY0NsaWVudEFkYXB0ZXJcIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5cbmV4cG9ydCBjbGFzcyBGYWJyaWNDbGllbnRTdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIFN0YXRlbWVudDxcbiAgTSxcbiAgRmFicmljQ2xpZW50QWRhcHRlcixcbiAgUixcbiAgTWFuZ29RdWVyeVxuPiB7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI6IEZhYnJpY0NsaWVudEFkYXB0ZXIsIG92ZXJyaWRlcz86IFBhcnRpYWw8QWRhcHRlckZsYWdzPikge1xuICAgIHN1cGVyKGFkYXB0ZXIsIG92ZXJyaWRlcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYnVpbGQoKTogTWFuZ29RdWVyeSB7XG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICBgVGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgaXMgcHJlcGFyZWQgc3RhdGVtZW50cyBhcmUgbm90IHVzZWQuIElmIHNvLCBhIGRlZGljYXRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG5hdGl2ZSBxdWVyaWVzIHVzZWQgaXMgcmVxdWlyZWRgXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwYXJzZUNvbmRpdGlvbihcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uZGl0aW9uOiBDb25kaXRpb248TT4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IE1hbmdvUXVlcnkge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgYFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGlzIHByZXBhcmVkIHN0YXRlbWVudHMgYXJlIG5vdCB1c2VkLiBJcyBzbywgYSBkZWRpY2F0ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBuYXRpdmUgcXVlcmllcyB1c2VkIGlzIHJlcXVpcmVkYFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -336,4 +336,4 @@ export class FabricERC20ClientRepository extends FabricClientRepository {
336
336
  return this.decode(clientAccountID);
337
337
  }
338
338
  }
339
- //# sourceMappingURL=FabricERC20ClientRepository.js.map
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9lcmMyMC9GYWJyaWNFUkMyMENsaWVudFJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVDQUFrQztBQUNuRSxPQUFPLEVBQWMsV0FBVyxFQUFFLDBDQUFxQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDJDQUFzQztBQUNqRSxPQUFPLEVBQXVDLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFFTCxhQUFhLEdBRWQsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMkJBRVgsU0FBUSxzQkFBc0M7YUFDL0IsZUFBVSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQUFBekIsQ0FBMEI7YUFLcEMsWUFBTyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxBQUExQixDQUEyQjtJQUVqRDs7Ozs7Ozs7O09BU0c7SUFDTSxLQUFLLENBQUMsZUFBZSxDQUM1QixLQUE4QixFQUM5QixLQUFxRCxFQUNyRCxFQUFZLEVBQ1osR0FBRyxJQUFrQztRQUVyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdkIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsb0VBQW9FLENBQ3JFLENBQUM7UUFDSixNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxHQUFHLENBQUMsT0FBTyxDQUNULFlBQVksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUNqRSxDQUFDO1FBRUYsS0FB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Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBZSxFQUFFLE1BQWM7UUFDNUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtZQUMvQyxPQUFPO1lBQ1AsTUFBTSxDQUFDLFFBQVEsRUFBRTtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxvQkFBb0I7UUFDeEIsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQ3JFLHNCQUFzQixDQUN2QixDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLGVBQWUsR0FDbkIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL0ZhYnJpY0NsaWVudFJlcG9zaXRvcnlcIjtcbmltcG9ydCB7IEVSQzIwVG9rZW4sIEVSQzIwV2FsbGV0IH0gZnJvbSBcIi4uLy4uL2NvbnRyYWN0cy9lcmMyMC9tb2RlbHNcIjtcbmltcG9ydCB7IE1vZGVsLCBTZXJpYWxpemVyIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50QWRhcHRlciB9IGZyb20gXCIuLi9GYWJyaWNDbGllbnRBZGFwdGVyXCI7XG5pbXBvcnQgeyBDbGllbnRTZXJpYWxpemVyIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9DbGllbnRTZXJpYWxpemVyXCI7XG5pbXBvcnQgeyBDb250ZXh0T2YsIENvbnRleHR1YWxBcmdzLCBFdmVudElkcywgU2VxdWVuY2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgSW50ZXJuYWxFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuLyoqXG4gKiBSZXBvc2l0b3J5IGZvciBpbnRlcmFjdGluZyB3aXRoIEVSQzIwIGNvbnRyYWN0cyBvbiBhIEh5cGVybGVkZ2VyIEZhYnJpYyBuZXR3b3JrLlxuICogRXh0ZW5kcyB0aGUgYmFzZSBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IGNsYXNzIGFuZCB1dGlsaXplcyB0aGUgQ2xpZW50U2VyaWFsaXplciBmb3IgZGF0YSBzZXJpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5PFxuICBBIGV4dGVuZHMgRmFicmljQ2xpZW50QWRhcHRlcixcbj4gZXh0ZW5kcyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5PEVSQzIwV2FsbGV0LCBBPiB7XG4gIHByaXZhdGUgc3RhdGljIHNlcmlhbGl6ZXIgPSBuZXcgQ2xpZW50U2VyaWFsaXplcigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZXJpYWxpemVyOiBTZXJpYWxpemVyPGFueT4gPVxuICAgIEZhYnJpY0VSQzIwQ2xpZW50UmVwb3NpdG9yeS5zZXJpYWxpemVyO1xuXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm90aWZpZXMgYWxsIG9ic2VydmVycyBvZiBhbiBldmVudC5cbiAgICogQHN1bW1hcnkgVXBkYXRlcyBhbGwgcmVnaXN0ZXJlZCBvYnNlcnZlcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhIGRhdGFiYXNlIGV2ZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgdGFibGUgbmFtZSB3aGVyZSB0aGUgZXZlbnQgb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c3xCdWxrQ3J1ZE9wZXJhdGlvbktleXN8c3RyaW5nfSBldmVudCAtIFRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7RXZlbnRJZHN9IGlkIC0gVGhlIElEIG9yIElEcyBvZiB0aGUgYWZmZWN0ZWQgcmVjb3Jkcy5cbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBvYnNlcnZlcnMgaGF2ZSBiZWVuIG5vdGlmaWVkLlxuICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiB0aGUgb2JzZXJ2ZXIgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyB1cGRhdGVPYnNlcnZlcnM8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YWJsZTogQ29uc3RydWN0b3I8TT4gfCBzdHJpbmcsXG4gICAgZXZlbnQ6IE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gICAgaWQ6IEV2ZW50SWRzLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm9ic2VydmVySGFuZGxlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIk9ic2VydmVySGFuZGxlciBub3QgaW5pdGlhbGl6ZWQuIERpZCB5b3UgcmVnaXN0ZXIgYW55IG9ic2VydmFibGVzP1wiXG4gICAgICApO1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnVwZGF0ZU9ic2VydmVycyk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgVXBkYXRpbmcgJHt0aGlzLm9ic2VydmVySGFuZGxlci5jb3VudCgpfSBvYnNlcnZlcnMgZm9yICR7dGhpc31gXG4gICAgKTtcblxuICAgIHRhYmxlID0gKFxuICAgICAgdHlwZW9mIHRhYmxlID09PSBcInN0cmluZ1wiID8gTW9kZWwuZ2V0KHRhYmxlKSA6IHRhYmxlXG4gICAgKSBhcyBDb25zdHJ1Y3RvcjxNPjtcbiAgICBsZXQgcGFyc2VkSWQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnNlZElkID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICAgIHBhcnNlZElkID0gaWQubWFwKFxuICAgICAgICAoaSkgPT4gU2VxdWVuY2UucGFyc2VWYWx1ZShNb2RlbC5zZXF1ZW5jZUZvcih0YWJsZSkudHlwZSwgaSkgYXMgc3RyaW5nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRJZCA9IFNlcXVlbmNlLnBhcnNlVmFsdWUoXG4gICAgICAgIE1vZGVsLnNlcXVlbmNlRm9yKHRhYmxlKS50eXBlLFxuICAgICAgICBpZFxuICAgICAgKSBhcyBzdHJpbmc7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMub2JzZXJ2ZXJIYW5kbGVyLnVwZGF0ZU9ic2VydmVycyhcbiAgICAgIHRhYmxlLFxuICAgICAgZXZlbnQsXG4gICAgICBwYXJzZWRJZCEsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgVWludDhBcnJheSBpbnRvIGEgc3RyaW5nIHVzaW5nIHRoZSBUZXh0RGVjb2Rlci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgVWludDhBcnJheSB0byBkZWNvZGUuXG4gICAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIHN0cmluZy5cbiAgICovXG4gIGRlY29kZShkYXRhOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gRmFicmljRVJDMjBDbGllbnRSZXBvc2l0b3J5LmRlY29kZXIuZGVjb2RlKGRhdGEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IEEpIHtcbiAgICBzdXBlcihhZGFwdGVyLCBFUkMyMFdhbGxldCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqIEl0IGNhbGxzIHRoZSBcIlRva2VuTmFtZVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCBhbmQgZGVjb2RlcyB0aGUgcmV0dXJuZWQgZGF0YS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyB0b2tlbk5hbWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBuYW1lID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oXCJUb2tlbk5hbWVcIik7XG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlKG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgc3ltYm9sIG9mIHRoZSBFUkMyMCB0b2tlbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBzeW1ib2wgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgKiBJdCBjYWxscyB0aGUgXCJTeW1ib2xcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3QgYW5kIGRlY29kZXMgdGhlIHJldHVybmVkIGRhdGEuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHN5bWJvbCBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBzeW1ib2woKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzeW1ib2wgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihcIlN5bWJvbFwiKTtcbiAgICByZXR1cm4gdGhpcy5kZWNvZGUoc3ltYm9sKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmb3IgdGhlIEVSQzIwIHRva2VuLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gZmV0Y2ggdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmb3IgdGhlIEVSQzIwIHRva2VuLlxuICAgKiBJdCBjYWxscyB0aGUgXCJEZWNpbWFsc1wiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCBhbmQgZGVjb2RlcyB0aGUgcmV0dXJuZWQgZGF0YS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciB0aGUgRVJDMjAgdG9rZW4uXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBkZWNpbWFscygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGRlY2ltYWxzID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oXCJEZWNpbWFsc1wiKTtcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGVjb2RlKGRlY2ltYWxzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSB0b3RhbCBzdXBwbHkgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gZmV0Y2ggdGhlIHRvdGFsIHN1cHBseSBvZiB0aGUgRVJDMjAgdG9rZW4uXG4gICAqIEl0IGNhbGxzIHRoZSBcIlRvdGFsU3VwcGx5XCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IGFuZCBkZWNvZGVzIHRoZSByZXR1cm5lZCBkYXRhLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b3RhbCBzdXBwbHkgb2YgdGhlIEVSQzIwIHRva2VuLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGZhaWxzIG9yIHRoZSBkZWNvZGluZyBwcm9jZXNzIGZhaWxzLlxuICAgKi9cbiAgYXN5bmMgdG90YWxTdXBwbHkoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB0b3RhbCA9IGF3YWl0IHRoaXMuYWRhcHRlci5ldmFsdWF0ZVRyYW5zYWN0aW9uKFwiVG90YWxTdXBwbHlcIik7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmRlY29kZSh0b3RhbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYmFsYW5jZSBvZiB0aGUgRVJDMjAgdG9rZW4gZm9yIGEgc3BlY2lmaWVkIG93bmVyLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBiYWxhbmNlIG9mIHRoZSBFUkMyMCB0b2tlbiBmb3IgYSBnaXZlbiBvd25lci5cbiAgICogSXQgY2FsbHMgdGhlIFwiQmFsYW5jZU9mXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHByb3ZpZGVkIG93bmVyJ3MgYWRkcmVzcyBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBvd25lciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBFUkMyMCB0b2tlbiBvd25lci5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYmFsYW5jZSBvZiB0aGUgRVJDMjAgdG9rZW4gZm9yIHRoZSBzcGVjaWZpZWQgb3duZXIuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBiYWxhbmNlT2Yob3duZXI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgYmFsYW5jZSA9IGF3YWl0IHRoaXMuYWRhcHRlci5ldmFsdWF0ZVRyYW5zYWN0aW9uKFwiQmFsYW5jZU9mXCIsIFtcbiAgICAgIG93bmVyLFxuICAgIF0pO1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoYmFsYW5jZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZmVycyBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGEgcmVjaXBpZW50LlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIHRyYW5zZmVyIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgdG8gYSByZWNpcGllbnQuXG4gICAqIEl0IGNhbGxzIHRoZSBcIlRyYW5zZmVyXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHJlY2lwaWVudCdzIGFkZHJlc3MgYW5kIHRoZSB0cmFuc2ZlciBhbW91bnQgYXMgcGFyYW1ldGVycy5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjaGVja2VkIHRvIGRldGVybWluZSBpZiB0aGUgdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWwuXG4gICAqXG4gICAqIEBwYXJhbSB0byAtIFRoZSBhZGRyZXNzIG9mIHRoZSByZWNpcGllbnQuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIHRyYW5zZmVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyB0cmFuc2Zlcih0bzogc3RyaW5nLCB2YWx1ZTogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdHJhbnNmZXJyZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXCJUcmFuc2ZlclwiLCBbXG4gICAgICB0byxcbiAgICAgIHZhbHVlLnRvU3RyaW5nKCksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlKHRyYW5zZmVycmVkKSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmZXJzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIHRyYW5zZmVyIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLlxuICAgKiBGb3IgdGhpcyB0cmFuc2ZlciB0byB3b3JrIHRoZSBzcGVuZGVyICggYWNjb3VudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGlzIGZ1bmN0aW9uICkgbmVlZCB0byBoYXZlIHRoZSB2YWx1ZSBhcHByb3ZlZCBhcyBhbiBhbGxvd2FuY2UgYnkgdGhlIHNlbmRlci5cbiAgICogSXQgY2FsbHMgdGhlIFwiVHJhbnNmZXJGcm9tXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHNlbmRlcidzIGFkZHJlc3MsIHJlY2lwaWVudCdzIGFkZHJlc3MsIGFuZCB0aGUgdHJhbnNmZXIgYW1vdW50IGFzIHBhcmFtZXRlcnMuXG4gICAqIFRoZSByZXR1cm5lZCBkYXRhIGlzIHRoZW4gZGVjb2RlZCBhbmQgY2hlY2tlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIuXG4gICAqIEBwYXJhbSB0byAtIFRoZSBhZGRyZXNzIG9mIHRoZSByZWNpcGllbnQuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIHRyYW5zZmVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHRyYW5zZmVyIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyB0cmFuc2ZlckZyb20oXG4gICAgZnJvbTogc3RyaW5nLFxuICAgIHRvOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlclxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0cmFuc2ZlcnJlZCA9IGF3YWl0IHRoaXMuYWRhcHRlci5zdWJtaXRUcmFuc2FjdGlvbihcIlRyYW5zZmVyRnJvbVwiLCBbXG4gICAgICBmcm9tLFxuICAgICAgdG8sXG4gICAgICB2YWx1ZS50b1N0cmluZygpLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlKHRyYW5zZmVycmVkKSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBiZSBzcGVudCBieSBhIHNwZWNpZmllZCBzcGVuZGVyLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gYXBwcm92ZSBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGJlIHNwZW50IGJ5IGEgc3BlY2lmaWVkIHNwZW5kZXIuXG4gICAqIEl0IGNhbGxzIHRoZSBcIkFwcHJvdmVcIiB0cmFuc2FjdGlvbiBvbiB0aGUgc21hcnQgY29udHJhY3Qgd2l0aCB0aGUgc3BlbmRlcidzIGFkZHJlc3MgYW5kIHRoZSBhcHByb3ZhbCBhbW91bnQgYXMgcGFyYW1ldGVycy5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjaGVja2VkIHRvIGRldGVybWluZSBpZiB0aGUgYXBwcm92YWwgd2FzIHN1Y2Nlc3NmdWwuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVuZGVyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHNwZW5kZXIuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIHRvIGFwcHJvdmUgZm9yIHRoZSBzcGVuZGVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIGFwcHJvdmFsIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBhcHByb3ZlKHNwZW5kZXI6IHN0cmluZywgdmFsdWU6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFwcHJvdmVkID0gYXdhaXQgdGhpcy5hZGFwdGVyLnN1Ym1pdFRyYW5zYWN0aW9uKFwiQXBwcm92ZVwiLCBbXG4gICAgICBzcGVuZGVyLFxuICAgICAgdmFsdWUudG9TdHJpbmcoKSxcbiAgICBdKTtcbiAgICByZXR1cm4gdGhpcy5kZWNvZGUoYXBwcm92ZWQpID09PSBcInRydWVcIiA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGFsbG93YW5jZSBvZiBFUkMyMCB0b2tlbnMgdGhhdCB0aGUgc3BlY2lmaWVkIG93bmVyIGhhcyBhcHByb3ZlZCBmb3IgYSBzcGVuZGVyLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGZldGNoIHRoZSBhbGxvd2FuY2Ugb2YgRVJDMjAgdG9rZW5zIHRoYXQgdGhlIHNwZWNpZmllZCBvd25lciBoYXMgYXBwcm92ZWQgZm9yIGEgc3BlbmRlci5cbiAgICogSXQgY2FsbHMgdGhlIFwiQWxsb3dhbmNlXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIG93bmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHNwZW5kZXIncyBhZGRyZXNzIGFzIHBhcmFtZXRlcnMuXG4gICAqIFRoZSByZXR1cm5lZCBkYXRhIGlzIHRoZW4gZGVjb2RlZCBhbmQgY29udmVydGVkIHRvIGEgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0gb3duZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgRVJDMjAgdG9rZW4gb3duZXIuXG4gICAqIEBwYXJhbSBzcGVuZGVyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHNwZW5kZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGFsbG93YW5jZSBvZiBFUkMyMCB0b2tlbnMgdGhhdCB0aGUgc3BlY2lmaWVkIG93bmVyIGhhcyBhcHByb3ZlZCBmb3IgdGhlIHNwZW5kZXIuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBhbGxvd2FuY2Uob3duZXI6IHN0cmluZywgc3BlbmRlcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBhbGxvd2FuY2UgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXCJBbGxvd2FuY2VcIiwgW1xuICAgICAgb3duZXIsXG4gICAgICBzcGVuZGVyLFxuICAgIF0pO1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5kZWNvZGUoYWxsb3dhbmNlKSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIEVSQzIwIGNvbnRyYWN0IHdpdGggdGhlIHByb3ZpZGVkIHRva2VuIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGluaXRpYWxpemUgdGhlIEVSQzIwIGNvbnRyYWN0IHdpdGggdGhlIGdpdmVuIHRva2VuIGluZm9ybWF0aW9uLlxuICAgKiBJdCBjYWxscyB0aGUgXCJJbml0aWFsaXplXCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIHNlcmlhbGl6ZWQgdG9rZW4gZGF0YSBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjaGVja2VkIHRvIGRldGVybWluZSBpZiB0aGUgaW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwuXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBFUkMyMCB0b2tlbiBpbmZvcm1hdGlvbiB0byBpbml0aWFsaXplIHRoZSBjb250cmFjdCB3aXRoLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdHJhbnNhY3Rpb24gZmFpbHMgb3IgdGhlIGRlY29kaW5nIHByb2Nlc3MgZmFpbHMuXG4gICAqL1xuICBhc3luYyBpbml0aWFsaXplKHRva2VuOiBFUkMyMFRva2VuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaW5pdGlsaWF6ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXCJJbml0aWFsaXplXCIsIFtcbiAgICAgIEZhYnJpY0VSQzIwQ2xpZW50UmVwb3NpdG9yeS5zZXJpYWxpemVyLnNlcmlhbGl6ZSh0b2tlbiksXG4gICAgXSk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWNvZGUoaW5pdGlsaWF6ZWQpID09PSBcInRydWVcIiA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIEVSQzIwIGNvbnRyYWN0IGhhcyBiZWVuIGluaXRpYWxpemVkLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gdmVyaWZ5IGlmIHRoZSBFUkMyMCBjb250cmFjdCBoYXMgYmVlbiBpbml0aWFsaXplZC5cbiAgICogSXQgY2FsbHMgdGhlIFwiQ2hlY2tJbml0aWFsaXplZFwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCwgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBhbnkgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGluaXRpYWxpemF0aW9uIGNoZWNrIGlzIGNvbXBsZXRlZC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscy5cbiAgICovXG4gIGFzeW5jIGNoZWNrSW5pdGlhbGl6ZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oXCJDaGVja0luaXRpYWxpemVkXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbnRzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMuXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gbWludCBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zLlxuICAgKiBJdCBjYWxscyB0aGUgXCJNaW50XCIgdHJhbnNhY3Rpb24gb24gdGhlIHNtYXJ0IGNvbnRyYWN0IHdpdGggdGhlIG1pbnRpbmcgYW1vdW50IGFzIGEgcGFyYW1ldGVyLlxuICAgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFueSB2YWx1ZSwgYnV0IGl0IHVwZGF0ZXMgdGhlIG1pbnRlcidzIG51bWJlciBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBtaW50LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWludGluZyBwcm9jZXNzIGlzIGNvbXBsZXRlZC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscy5cbiAgICovXG4gIGFzeW5jIG1pbnQoYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXCJNaW50XCIsIFthbW91bnQudG9TdHJpbmcoKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1cm5zIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSB0aGUgbWludGVyJ3MgYWNjb3VudC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrIHRvIGJ1cm4gYSBzcGVjaWZpZWQgYW1vdW50IG9mIEVSQzIwIHRva2Vucy5cbiAgICogSXQgY2FsbHMgdGhlIFwiQnVyblwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBidXJuaW5nIGFtb3VudCBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhbnkgdmFsdWUsIGJ1dCBpdCBkZWNyZWFzZXMgdGhlIG1pbnRlcidzIG51bWJlciBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBidXJuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVybmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlZC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscy5cbiAgICovXG4gIGFzeW5jIGJ1cm4oYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXCJCdXJuXCIsIFthbW91bnQudG9TdHJpbmcoKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1cm5zIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBFUkMyMCB0b2tlbnMgZnJvbSBhIHNwZWNpZmllZCBhY2NvdW50LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gYnVybiBhIHNwZWNpZmllZCBhbW91bnQgb2YgRVJDMjAgdG9rZW5zIGZyb20gYSBnaXZlbiBhY2NvdW50LlxuICAgKiBJdCBjYWxscyB0aGUgXCJCdXJuRnJvbVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCB3aXRoIHRoZSBhY2NvdW50J3MgYWRkcmVzcyBhbmQgdGhlIGJ1cm5pbmcgYW1vdW50IGFzIHBhcmFtZXRlcnMuXG4gICAqIFRoZSBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYW55IHZhbHVlLCBidXQgaXQgZGVjcmVhc2VzIHRoZSBzcGVjaWZpZWQgYWNjb3VudCdzIG51bWJlciBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgZnJvbSB3aGljaCB0byBidXJuIHRoZSBFUkMyMCB0b2tlbnMuXG4gICAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIEVSQzIwIHRva2VucyB0byBidXJuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVybmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlZC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscy5cbiAgICovXG4gIGFzeW5jIGJ1cm5Gcm9tKGFjY291bnQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuc3VibWl0VHJhbnNhY3Rpb24oXCJCdXJuRnJvbVwiLCBbXG4gICAgICBhY2NvdW50LFxuICAgICAgYW1vdW50LnRvU3RyaW5nKCksXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBiYWxhbmNlIG9mIEVSQzIwIHRva2VucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNsaWVudCdzIGFjY291bnQuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJsb2NrY2hhaW4gbmV0d29yayB0byBmZXRjaCB0aGUgYmFsYW5jZSBvZiBFUkMyMCB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGllbnQncyBhY2NvdW50LlxuICAgKiBJdCBjYWxscyB0aGUgXCJDbGllbnRBY2NvdW50QmFsYW5jZVwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCwgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBhbnkgcGFyYW1ldGVycy5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCBjb252ZXJ0ZWQgdG8gYSBudW1iZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGJhbGFuY2Ugb2YgRVJDMjAgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xpZW50J3MgYWNjb3VudC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIGNsaWVudEFjY291bnRCYWxhbmNlKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgc2VyaWFsaXplZEFjY291bnRCYWxhbmNlID0gYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oXG4gICAgICBcIkNsaWVudEFjY291bnRCYWxhbmNlXCJcbiAgICApO1xuXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmRlY29kZShzZXJpYWxpemVkQWNjb3VudEJhbGFuY2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGNsaWVudCdzIGFjY291bnQgSUQgZnJvbSB0aGUgYmxvY2tjaGFpbiBuZXR3b3JrLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBibG9ja2NoYWluIG5ldHdvcmsgdG8gZmV0Y2ggdGhlIGNsaWVudCdzIGFjY291bnQgSUQuXG4gICAqIEl0IGNhbGxzIHRoZSBcIkNsaWVudEFjY291bnRJRFwiIHRyYW5zYWN0aW9uIG9uIHRoZSBzbWFydCBjb250cmFjdCwgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBhbnkgcGFyYW1ldGVycy5cbiAgICogVGhlIHJldHVybmVkIGRhdGEgaXMgdGhlbiBkZWNvZGVkIGFuZCByZXR1cm5lZCBhcyBhIHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY2xpZW50J3MgYWNjb3VudCBJRC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBmYWlscyBvciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIGNsaWVudEFjY291bnRJRCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNsaWVudEFjY291bnRJRCA9XG4gICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuZXZhbHVhdGVUcmFuc2FjdGlvbihcIkNsaWVudEFjY291bnRJRFwiKTtcblxuICAgIHJldHVybiB0aGlzLmRlY29kZShjbGllbnRBY2NvdW50SUQpO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export * from "./FabricERC20ClientRepository.js";
2
- //# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2VyYzIwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlEQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0ZhYnJpY0VSQzIwQ2xpZW50UmVwb3NpdG9yeVwiO1xuIl19