@decaf-ts/core 0.8.85 → 0.9.1-9.tasks

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 (554) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +6705 -2
  3. package/dist/core.js +6932 -2
  4. package/lib/auth/constants.cjs +1 -1
  5. package/lib/auth/decorators.cjs +1 -1
  6. package/lib/auth/index.cjs +1 -1
  7. package/lib/esm/auth/constants.js +1 -1
  8. package/lib/esm/auth/decorators.js +1 -1
  9. package/lib/esm/auth/index.js +1 -1
  10. package/lib/esm/fs/FilesystemAdapter.d.ts +1 -0
  11. package/lib/esm/fs/FilesystemAdapter.js +3 -2
  12. package/lib/esm/fs/FsDispatch.js +1 -1
  13. package/lib/esm/fs/helpers.js +1 -1
  14. package/lib/esm/fs/index.js +1 -1
  15. package/lib/esm/fs/indexStore.js +1 -1
  16. package/lib/esm/fs/locks/FilesystemLock.js +1 -1
  17. package/lib/esm/fs/locks/FilesystemMultiLock.js +1 -1
  18. package/lib/esm/fs/types.d.ts +6 -0
  19. package/lib/esm/fs/types.js +1 -1
  20. package/lib/esm/identity/decorators.js +1 -1
  21. package/lib/esm/identity/index.js +1 -1
  22. package/lib/esm/index.d.ts +1 -1
  23. package/lib/esm/index.js +2 -2
  24. package/lib/esm/interfaces/ContextuallyLogged.js +1 -1
  25. package/lib/esm/interfaces/ErrorParser.js +1 -1
  26. package/lib/esm/interfaces/Executor.js +1 -1
  27. package/lib/esm/interfaces/Observable.js +1 -1
  28. package/lib/esm/interfaces/Observer.js +1 -1
  29. package/lib/esm/interfaces/Paginatable.js +1 -1
  30. package/lib/esm/interfaces/Queriable.js +1 -1
  31. package/lib/esm/interfaces/RawExecutor.js +1 -1
  32. package/lib/esm/interfaces/SequenceOptions.js +1 -1
  33. package/lib/esm/interfaces/index.js +1 -1
  34. package/lib/esm/migrations/Migration.js +1 -1
  35. package/lib/esm/migrations/MigrationService.js +1 -1
  36. package/lib/esm/migrations/MigrationTasks.js +1 -1
  37. package/lib/esm/migrations/constants.js +1 -1
  38. package/lib/esm/migrations/decorators.js +1 -1
  39. package/lib/esm/migrations/index.js +1 -1
  40. package/lib/esm/migrations/types.js +1 -1
  41. package/lib/esm/model/BaseModel.js +1 -1
  42. package/lib/esm/model/SequenceModel.js +1 -1
  43. package/lib/esm/model/construction.d.ts +1 -1
  44. package/lib/esm/model/construction.js +25 -3
  45. package/lib/esm/model/decorators.js +1 -1
  46. package/lib/esm/model/index.js +1 -1
  47. package/lib/esm/model/indexing.js +1 -1
  48. package/lib/esm/model/types.js +1 -1
  49. package/lib/esm/overrides/Metadata.js +1 -1
  50. package/lib/esm/overrides/Model.js +1 -1
  51. package/lib/esm/overrides/ModelBuilder.js +1 -1
  52. package/lib/esm/overrides/index.js +1 -1
  53. package/lib/esm/overrides/injectables.js +1 -1
  54. package/lib/esm/overrides/overrides.js +29 -1
  55. package/lib/esm/persistence/Adapter.js +14 -2
  56. package/lib/esm/persistence/Context.js +1 -1
  57. package/lib/esm/persistence/ContextLock.js +1 -1
  58. package/lib/esm/persistence/Dispatch.d.ts +7 -0
  59. package/lib/esm/persistence/Dispatch.js +20 -3
  60. package/lib/esm/persistence/ObserverHandler.js +1 -1
  61. package/lib/esm/persistence/Sequence.js +1 -1
  62. package/lib/esm/persistence/constants.js +2 -1
  63. package/lib/esm/persistence/decorators.js +1 -1
  64. package/lib/esm/persistence/errors.js +1 -1
  65. package/lib/esm/persistence/event-filters.js +1 -1
  66. package/lib/esm/persistence/generators.js +1 -1
  67. package/lib/esm/persistence/index.js +1 -1
  68. package/lib/esm/persistence/transactions.js +1 -1
  69. package/lib/esm/persistence/types.d.ts +1 -0
  70. package/lib/esm/persistence/types.js +1 -1
  71. package/lib/esm/query/Condition.js +1 -1
  72. package/lib/esm/query/MethodQueryBuilder.js +1 -1
  73. package/lib/esm/query/Paginator.js +1 -1
  74. package/lib/esm/query/Statement.js +1 -1
  75. package/lib/esm/query/constants.js +1 -1
  76. package/lib/esm/query/decorators.js +1 -1
  77. package/lib/esm/query/errors.js +1 -1
  78. package/lib/esm/query/index.js +1 -1
  79. package/lib/esm/query/options.js +1 -1
  80. package/lib/esm/query/selectors.js +1 -1
  81. package/lib/esm/query/types.js +1 -1
  82. package/lib/esm/query/utils.js +1 -1
  83. package/lib/esm/ram/RamAdapter.js +1 -1
  84. package/lib/esm/ram/RamPaginator.js +1 -1
  85. package/lib/esm/ram/RamStatement.js +1 -1
  86. package/lib/esm/ram/constants.js +1 -1
  87. package/lib/esm/ram/handlers.js +1 -1
  88. package/lib/esm/ram/index.js +1 -1
  89. package/lib/esm/ram/types.js +1 -1
  90. package/lib/esm/repository/Repository.d.ts +2 -2
  91. package/lib/esm/repository/Repository.js +19 -16
  92. package/lib/esm/repository/constants.js +1 -1
  93. package/lib/esm/repository/decorators.js +2 -2
  94. package/lib/esm/repository/errors.js +1 -1
  95. package/lib/esm/repository/index.js +1 -1
  96. package/lib/esm/repository/injectables.js +4 -2
  97. package/lib/esm/repository/types.js +1 -1
  98. package/lib/esm/repository/utils.js +1 -1
  99. package/lib/esm/services/ModelService.d.ts +4 -5
  100. package/lib/esm/services/ModelService.js +4 -2
  101. package/lib/esm/services/PersistenceService.js +1 -1
  102. package/lib/esm/services/index.js +1 -1
  103. package/lib/esm/services/services.js +1 -1
  104. package/lib/esm/tasks/CleanUpTask.js +1 -1
  105. package/lib/esm/tasks/TaskContext.d.ts +3 -1
  106. package/lib/esm/tasks/TaskContext.js +9 -2
  107. package/lib/esm/tasks/TaskEngine.d.ts +2 -0
  108. package/lib/esm/tasks/TaskEngine.js +84 -20
  109. package/lib/esm/tasks/TaskErrors.js +1 -1
  110. package/lib/esm/tasks/TaskEventBus.js +1 -1
  111. package/lib/esm/tasks/TaskEventService.d.ts +7 -0
  112. package/lib/esm/tasks/TaskEventService.js +16 -0
  113. package/lib/esm/tasks/TaskHandler.js +1 -1
  114. package/lib/esm/tasks/TaskHandlerRegistry.js +1 -1
  115. package/lib/esm/tasks/TaskService.d.ts +5 -1
  116. package/lib/esm/tasks/TaskService.js +11 -37
  117. package/lib/esm/tasks/TaskStateChangeError.js +1 -1
  118. package/lib/esm/tasks/TaskTracker.js +1 -1
  119. package/lib/esm/tasks/builder.js +1 -1
  120. package/lib/esm/tasks/constants.js +1 -1
  121. package/lib/esm/tasks/decorators.js +1 -1
  122. package/lib/esm/tasks/index.d.ts +1 -0
  123. package/lib/esm/tasks/index.js +2 -1
  124. package/lib/esm/tasks/logging.js +4 -7
  125. package/lib/esm/tasks/models/TaskBackoffModel.js +1 -1
  126. package/lib/esm/tasks/models/TaskErrorModel.js +1 -1
  127. package/lib/esm/tasks/models/TaskEventModel.js +1 -1
  128. package/lib/esm/tasks/models/TaskIOSerializer.js +1 -1
  129. package/lib/esm/tasks/models/TaskLogEntryModel.d.ts +1 -0
  130. package/lib/esm/tasks/models/TaskLogEntryModel.js +6 -2
  131. package/lib/esm/tasks/models/TaskModel.js +1 -1
  132. package/lib/esm/tasks/models/TaskStepResultModel.js +1 -1
  133. package/lib/esm/tasks/models/TaskStepSpecModel.d.ts +1 -0
  134. package/lib/esm/tasks/models/TaskStepSpecModel.js +7 -3
  135. package/lib/esm/tasks/models/index.js +1 -1
  136. package/lib/esm/tasks/types.d.ts +8 -3
  137. package/lib/esm/tasks/types.js +1 -1
  138. package/lib/esm/tasks/utils.js +1 -1
  139. package/lib/esm/utils/ContextualLoggedClass.js +1 -1
  140. package/lib/esm/utils/decorators.js +1 -1
  141. package/lib/esm/utils/errors.js +1 -1
  142. package/lib/esm/utils/index.js +1 -1
  143. package/lib/esm/utils/throttling.js +1 -1
  144. package/lib/esm/utils/types.js +1 -1
  145. package/lib/esm/utils/utils.d.ts +2 -1
  146. package/lib/esm/utils/utils.js +23 -6
  147. package/lib/esm/workers/TaskEngine.js +15 -4
  148. package/lib/esm/workers/WorkThreadEnvironment.js +1 -1
  149. package/lib/esm/workers/index.js +1 -1
  150. package/lib/esm/workers/messages.js +1 -1
  151. package/lib/esm/workers/types.js +1 -1
  152. package/lib/esm/workers/workerThread.js +36 -8
  153. package/lib/fs/FilesystemAdapter.cjs +3 -2
  154. package/lib/fs/FilesystemAdapter.d.ts +1 -0
  155. package/lib/fs/FsDispatch.cjs +1 -1
  156. package/lib/fs/helpers.cjs +1 -1
  157. package/lib/fs/index.cjs +1 -1
  158. package/lib/fs/indexStore.cjs +1 -1
  159. package/lib/fs/locks/FilesystemLock.cjs +1 -1
  160. package/lib/fs/locks/FilesystemMultiLock.cjs +1 -1
  161. package/lib/fs/types.cjs +1 -1
  162. package/lib/fs/types.d.ts +6 -0
  163. package/lib/identity/decorators.cjs +1 -1
  164. package/lib/identity/index.cjs +1 -1
  165. package/lib/index.cjs +2 -2
  166. package/lib/index.d.ts +1 -1
  167. package/lib/interfaces/ContextuallyLogged.cjs +1 -1
  168. package/lib/interfaces/ErrorParser.cjs +1 -1
  169. package/lib/interfaces/Executor.cjs +1 -1
  170. package/lib/interfaces/Observable.cjs +1 -1
  171. package/lib/interfaces/Observer.cjs +1 -1
  172. package/lib/interfaces/Paginatable.cjs +1 -1
  173. package/lib/interfaces/Queriable.cjs +1 -1
  174. package/lib/interfaces/RawExecutor.cjs +1 -1
  175. package/lib/interfaces/SequenceOptions.cjs +1 -1
  176. package/lib/interfaces/index.cjs +1 -1
  177. package/lib/migrations/Migration.cjs +1 -1
  178. package/lib/migrations/MigrationService.cjs +1 -1
  179. package/lib/migrations/MigrationTasks.cjs +1 -1
  180. package/lib/migrations/constants.cjs +1 -1
  181. package/lib/migrations/decorators.cjs +1 -1
  182. package/lib/migrations/index.cjs +1 -1
  183. package/lib/migrations/types.cjs +1 -1
  184. package/lib/model/BaseModel.cjs +1 -1
  185. package/lib/model/SequenceModel.cjs +1 -1
  186. package/lib/model/construction.cjs +25 -3
  187. package/lib/model/construction.d.ts +1 -1
  188. package/lib/model/decorators.cjs +1 -1
  189. package/lib/model/index.cjs +1 -1
  190. package/lib/model/indexing.cjs +1 -1
  191. package/lib/model/types.cjs +1 -1
  192. package/lib/overrides/Metadata.cjs +1 -1
  193. package/lib/overrides/Model.cjs +1 -1
  194. package/lib/overrides/ModelBuilder.cjs +1 -1
  195. package/lib/overrides/index.cjs +1 -1
  196. package/lib/overrides/injectables.cjs +1 -1
  197. package/lib/overrides/overrides.cjs +29 -1
  198. package/lib/persistence/Adapter.cjs +14 -2
  199. package/lib/persistence/Context.cjs +1 -1
  200. package/lib/persistence/ContextLock.cjs +1 -1
  201. package/lib/persistence/Dispatch.cjs +20 -3
  202. package/lib/persistence/Dispatch.d.ts +7 -0
  203. package/lib/persistence/ObserverHandler.cjs +1 -1
  204. package/lib/persistence/Sequence.cjs +1 -1
  205. package/lib/persistence/constants.cjs +2 -1
  206. package/lib/persistence/decorators.cjs +1 -1
  207. package/lib/persistence/errors.cjs +1 -1
  208. package/lib/persistence/event-filters.cjs +1 -1
  209. package/lib/persistence/generators.cjs +1 -1
  210. package/lib/persistence/index.cjs +1 -1
  211. package/lib/persistence/transactions.cjs +1 -1
  212. package/lib/persistence/types.cjs +1 -1
  213. package/lib/persistence/types.d.ts +1 -0
  214. package/lib/query/Condition.cjs +1 -1
  215. package/lib/query/MethodQueryBuilder.cjs +1 -1
  216. package/lib/query/Paginator.cjs +1 -1
  217. package/lib/query/Statement.cjs +1 -1
  218. package/lib/query/constants.cjs +1 -1
  219. package/lib/query/decorators.cjs +1 -1
  220. package/lib/query/errors.cjs +1 -1
  221. package/lib/query/index.cjs +1 -1
  222. package/lib/query/options.cjs +1 -1
  223. package/lib/query/selectors.cjs +1 -1
  224. package/lib/query/types.cjs +1 -1
  225. package/lib/query/utils.cjs +1 -1
  226. package/lib/ram/RamAdapter.cjs +1 -1
  227. package/lib/ram/RamPaginator.cjs +1 -1
  228. package/lib/ram/RamStatement.cjs +1 -1
  229. package/lib/ram/constants.cjs +1 -1
  230. package/lib/ram/handlers.cjs +1 -1
  231. package/lib/ram/index.cjs +1 -1
  232. package/lib/ram/types.cjs +1 -1
  233. package/lib/repository/Repository.cjs +19 -16
  234. package/lib/repository/Repository.d.ts +2 -2
  235. package/lib/repository/constants.cjs +1 -1
  236. package/lib/repository/decorators.cjs +2 -2
  237. package/lib/repository/errors.cjs +1 -1
  238. package/lib/repository/index.cjs +1 -1
  239. package/lib/repository/injectables.cjs +4 -2
  240. package/lib/repository/types.cjs +1 -1
  241. package/lib/repository/utils.cjs +1 -1
  242. package/lib/services/ModelService.cjs +4 -2
  243. package/lib/services/ModelService.d.ts +4 -5
  244. package/lib/services/PersistenceService.cjs +1 -1
  245. package/lib/services/index.cjs +1 -1
  246. package/lib/services/services.cjs +1 -1
  247. package/lib/tasks/CleanUpTask.cjs +1 -1
  248. package/lib/tasks/TaskContext.cjs +9 -2
  249. package/lib/tasks/TaskContext.d.ts +3 -1
  250. package/lib/tasks/TaskEngine.cjs +84 -20
  251. package/lib/tasks/TaskEngine.d.ts +2 -0
  252. package/lib/tasks/TaskErrors.cjs +1 -1
  253. package/lib/tasks/TaskEventBus.cjs +1 -1
  254. package/lib/tasks/TaskEventService.cjs +20 -0
  255. package/lib/tasks/TaskEventService.d.ts +7 -0
  256. package/lib/tasks/TaskHandler.cjs +1 -1
  257. package/lib/tasks/TaskHandlerRegistry.cjs +1 -1
  258. package/lib/tasks/TaskService.cjs +10 -36
  259. package/lib/tasks/TaskService.d.ts +5 -1
  260. package/lib/tasks/TaskStateChangeError.cjs +1 -1
  261. package/lib/tasks/TaskTracker.cjs +1 -1
  262. package/lib/tasks/builder.cjs +1 -1
  263. package/lib/tasks/constants.cjs +1 -1
  264. package/lib/tasks/decorators.cjs +1 -1
  265. package/lib/tasks/index.cjs +2 -1
  266. package/lib/tasks/index.d.ts +1 -0
  267. package/lib/tasks/logging.cjs +4 -7
  268. package/lib/tasks/models/TaskBackoffModel.cjs +1 -1
  269. package/lib/tasks/models/TaskErrorModel.cjs +1 -1
  270. package/lib/tasks/models/TaskEventModel.cjs +1 -1
  271. package/lib/tasks/models/TaskIOSerializer.cjs +1 -1
  272. package/lib/tasks/models/TaskLogEntryModel.cjs +5 -1
  273. package/lib/tasks/models/TaskLogEntryModel.d.ts +1 -0
  274. package/lib/tasks/models/TaskModel.cjs +1 -1
  275. package/lib/tasks/models/TaskStepResultModel.cjs +1 -1
  276. package/lib/tasks/models/TaskStepSpecModel.cjs +6 -2
  277. package/lib/tasks/models/TaskStepSpecModel.d.ts +1 -0
  278. package/lib/tasks/models/index.cjs +1 -1
  279. package/lib/tasks/types.cjs +1 -1
  280. package/lib/tasks/types.d.ts +8 -3
  281. package/lib/tasks/utils.cjs +1 -1
  282. package/lib/utils/ContextualLoggedClass.cjs +1 -1
  283. package/lib/utils/decorators.cjs +1 -1
  284. package/lib/utils/errors.cjs +1 -1
  285. package/lib/utils/index.cjs +1 -1
  286. package/lib/utils/throttling.cjs +1 -1
  287. package/lib/utils/types.cjs +1 -1
  288. package/lib/utils/utils.cjs +22 -5
  289. package/lib/utils/utils.d.ts +2 -1
  290. package/lib/workers/TaskEngine.cjs +15 -4
  291. package/lib/workers/WorkThreadEnvironment.cjs +1 -1
  292. package/lib/workers/index.cjs +1 -1
  293. package/lib/workers/messages.cjs +1 -1
  294. package/lib/workers/types.cjs +1 -1
  295. package/lib/workers/workerThread.cjs +35 -7
  296. package/package.json +1 -1
  297. package/dist/core.cjs.map +0 -1
  298. package/dist/core.js.map +0 -1
  299. package/lib/auth/constants.js.map +0 -1
  300. package/lib/auth/decorators.js.map +0 -1
  301. package/lib/auth/index.js.map +0 -1
  302. package/lib/esm/auth/constants.js.map +0 -1
  303. package/lib/esm/auth/decorators.js.map +0 -1
  304. package/lib/esm/auth/index.js.map +0 -1
  305. package/lib/esm/fs/FilesystemAdapter.js.map +0 -1
  306. package/lib/esm/fs/FsDispatch.js.map +0 -1
  307. package/lib/esm/fs/helpers.js.map +0 -1
  308. package/lib/esm/fs/index.js.map +0 -1
  309. package/lib/esm/fs/indexStore.js.map +0 -1
  310. package/lib/esm/fs/locks/FilesystemLock.js.map +0 -1
  311. package/lib/esm/fs/locks/FilesystemMultiLock.js.map +0 -1
  312. package/lib/esm/fs/types.js.map +0 -1
  313. package/lib/esm/identity/decorators.js.map +0 -1
  314. package/lib/esm/identity/index.js.map +0 -1
  315. package/lib/esm/index.js.map +0 -1
  316. package/lib/esm/interfaces/ContextuallyLogged.js.map +0 -1
  317. package/lib/esm/interfaces/ErrorParser.js.map +0 -1
  318. package/lib/esm/interfaces/Executor.js.map +0 -1
  319. package/lib/esm/interfaces/Observable.js.map +0 -1
  320. package/lib/esm/interfaces/Observer.js.map +0 -1
  321. package/lib/esm/interfaces/Paginatable.js.map +0 -1
  322. package/lib/esm/interfaces/Queriable.js.map +0 -1
  323. package/lib/esm/interfaces/RawExecutor.js.map +0 -1
  324. package/lib/esm/interfaces/SequenceOptions.js.map +0 -1
  325. package/lib/esm/interfaces/index.js.map +0 -1
  326. package/lib/esm/migrations/Migration.js.map +0 -1
  327. package/lib/esm/migrations/MigrationService.js.map +0 -1
  328. package/lib/esm/migrations/MigrationTasks.js.map +0 -1
  329. package/lib/esm/migrations/constants.js.map +0 -1
  330. package/lib/esm/migrations/decorators.js.map +0 -1
  331. package/lib/esm/migrations/index.js.map +0 -1
  332. package/lib/esm/migrations/types.js.map +0 -1
  333. package/lib/esm/model/BaseModel.js.map +0 -1
  334. package/lib/esm/model/SequenceModel.js.map +0 -1
  335. package/lib/esm/model/construction.js.map +0 -1
  336. package/lib/esm/model/decorators.js.map +0 -1
  337. package/lib/esm/model/index.js.map +0 -1
  338. package/lib/esm/model/indexing.js.map +0 -1
  339. package/lib/esm/model/types.js.map +0 -1
  340. package/lib/esm/overrides/Metadata.js.map +0 -1
  341. package/lib/esm/overrides/Model.js.map +0 -1
  342. package/lib/esm/overrides/ModelBuilder.js.map +0 -1
  343. package/lib/esm/overrides/index.js.map +0 -1
  344. package/lib/esm/overrides/injectables.js.map +0 -1
  345. package/lib/esm/overrides/overrides.js.map +0 -1
  346. package/lib/esm/persistence/Adapter.js.map +0 -1
  347. package/lib/esm/persistence/Context.js.map +0 -1
  348. package/lib/esm/persistence/ContextLock.js.map +0 -1
  349. package/lib/esm/persistence/Dispatch.js.map +0 -1
  350. package/lib/esm/persistence/ObserverHandler.js.map +0 -1
  351. package/lib/esm/persistence/Sequence.js.map +0 -1
  352. package/lib/esm/persistence/constants.js.map +0 -1
  353. package/lib/esm/persistence/decorators.js.map +0 -1
  354. package/lib/esm/persistence/errors.js.map +0 -1
  355. package/lib/esm/persistence/event-filters.js.map +0 -1
  356. package/lib/esm/persistence/generators.js.map +0 -1
  357. package/lib/esm/persistence/index.js.map +0 -1
  358. package/lib/esm/persistence/transactions.js.map +0 -1
  359. package/lib/esm/persistence/types.js.map +0 -1
  360. package/lib/esm/query/Condition.js.map +0 -1
  361. package/lib/esm/query/MethodQueryBuilder.js.map +0 -1
  362. package/lib/esm/query/Paginator.js.map +0 -1
  363. package/lib/esm/query/Statement.js.map +0 -1
  364. package/lib/esm/query/constants.js.map +0 -1
  365. package/lib/esm/query/decorators.js.map +0 -1
  366. package/lib/esm/query/errors.js.map +0 -1
  367. package/lib/esm/query/index.js.map +0 -1
  368. package/lib/esm/query/options.js.map +0 -1
  369. package/lib/esm/query/selectors.js.map +0 -1
  370. package/lib/esm/query/types.js.map +0 -1
  371. package/lib/esm/query/utils.js.map +0 -1
  372. package/lib/esm/ram/RamAdapter.js.map +0 -1
  373. package/lib/esm/ram/RamPaginator.js.map +0 -1
  374. package/lib/esm/ram/RamStatement.js.map +0 -1
  375. package/lib/esm/ram/constants.js.map +0 -1
  376. package/lib/esm/ram/handlers.js.map +0 -1
  377. package/lib/esm/ram/index.js.map +0 -1
  378. package/lib/esm/ram/types.js.map +0 -1
  379. package/lib/esm/repository/Repository.js.map +0 -1
  380. package/lib/esm/repository/constants.js.map +0 -1
  381. package/lib/esm/repository/decorators.js.map +0 -1
  382. package/lib/esm/repository/errors.js.map +0 -1
  383. package/lib/esm/repository/index.js.map +0 -1
  384. package/lib/esm/repository/injectables.js.map +0 -1
  385. package/lib/esm/repository/types.js.map +0 -1
  386. package/lib/esm/repository/utils.js.map +0 -1
  387. package/lib/esm/services/ModelService.js.map +0 -1
  388. package/lib/esm/services/PersistenceService.js.map +0 -1
  389. package/lib/esm/services/index.js.map +0 -1
  390. package/lib/esm/services/services.js.map +0 -1
  391. package/lib/esm/tasks/CleanUpTask.js.map +0 -1
  392. package/lib/esm/tasks/TaskContext.js.map +0 -1
  393. package/lib/esm/tasks/TaskEngine.js.map +0 -1
  394. package/lib/esm/tasks/TaskErrors.js.map +0 -1
  395. package/lib/esm/tasks/TaskEventBus.js.map +0 -1
  396. package/lib/esm/tasks/TaskHandler.js.map +0 -1
  397. package/lib/esm/tasks/TaskHandlerRegistry.js.map +0 -1
  398. package/lib/esm/tasks/TaskService.js.map +0 -1
  399. package/lib/esm/tasks/TaskStateChangeError.js.map +0 -1
  400. package/lib/esm/tasks/TaskTracker.js.map +0 -1
  401. package/lib/esm/tasks/builder.js.map +0 -1
  402. package/lib/esm/tasks/constants.js.map +0 -1
  403. package/lib/esm/tasks/decorators.js.map +0 -1
  404. package/lib/esm/tasks/index.js.map +0 -1
  405. package/lib/esm/tasks/logging.js.map +0 -1
  406. package/lib/esm/tasks/models/TaskBackoffModel.js.map +0 -1
  407. package/lib/esm/tasks/models/TaskErrorModel.js.map +0 -1
  408. package/lib/esm/tasks/models/TaskEventModel.js.map +0 -1
  409. package/lib/esm/tasks/models/TaskIOSerializer.js.map +0 -1
  410. package/lib/esm/tasks/models/TaskLogEntryModel.js.map +0 -1
  411. package/lib/esm/tasks/models/TaskModel.js.map +0 -1
  412. package/lib/esm/tasks/models/TaskStepResultModel.js.map +0 -1
  413. package/lib/esm/tasks/models/TaskStepSpecModel.js.map +0 -1
  414. package/lib/esm/tasks/models/index.js.map +0 -1
  415. package/lib/esm/tasks/types.js.map +0 -1
  416. package/lib/esm/tasks/utils.js.map +0 -1
  417. package/lib/esm/utils/ContextualLoggedClass.js.map +0 -1
  418. package/lib/esm/utils/decorators.js.map +0 -1
  419. package/lib/esm/utils/errors.js.map +0 -1
  420. package/lib/esm/utils/index.js.map +0 -1
  421. package/lib/esm/utils/throttling.js.map +0 -1
  422. package/lib/esm/utils/types.js.map +0 -1
  423. package/lib/esm/utils/utils.js.map +0 -1
  424. package/lib/esm/workers/TaskEngine.js.map +0 -1
  425. package/lib/esm/workers/WorkThreadEnvironment.js.map +0 -1
  426. package/lib/esm/workers/index.js.map +0 -1
  427. package/lib/esm/workers/messages.js.map +0 -1
  428. package/lib/esm/workers/types.js.map +0 -1
  429. package/lib/esm/workers/workerThread.js.map +0 -1
  430. package/lib/fs/FilesystemAdapter.js.map +0 -1
  431. package/lib/fs/FsDispatch.js.map +0 -1
  432. package/lib/fs/helpers.js.map +0 -1
  433. package/lib/fs/index.js.map +0 -1
  434. package/lib/fs/indexStore.js.map +0 -1
  435. package/lib/fs/locks/FilesystemLock.js.map +0 -1
  436. package/lib/fs/locks/FilesystemMultiLock.js.map +0 -1
  437. package/lib/fs/types.js.map +0 -1
  438. package/lib/identity/decorators.js.map +0 -1
  439. package/lib/identity/index.js.map +0 -1
  440. package/lib/index.js.map +0 -1
  441. package/lib/interfaces/ContextuallyLogged.js.map +0 -1
  442. package/lib/interfaces/ErrorParser.js.map +0 -1
  443. package/lib/interfaces/Executor.js.map +0 -1
  444. package/lib/interfaces/Observable.js.map +0 -1
  445. package/lib/interfaces/Observer.js.map +0 -1
  446. package/lib/interfaces/Paginatable.js.map +0 -1
  447. package/lib/interfaces/Queriable.js.map +0 -1
  448. package/lib/interfaces/RawExecutor.js.map +0 -1
  449. package/lib/interfaces/SequenceOptions.js.map +0 -1
  450. package/lib/interfaces/index.js.map +0 -1
  451. package/lib/migrations/Migration.js.map +0 -1
  452. package/lib/migrations/MigrationService.js.map +0 -1
  453. package/lib/migrations/MigrationTasks.js.map +0 -1
  454. package/lib/migrations/constants.js.map +0 -1
  455. package/lib/migrations/decorators.js.map +0 -1
  456. package/lib/migrations/index.js.map +0 -1
  457. package/lib/migrations/types.js.map +0 -1
  458. package/lib/model/BaseModel.js.map +0 -1
  459. package/lib/model/SequenceModel.js.map +0 -1
  460. package/lib/model/construction.js.map +0 -1
  461. package/lib/model/decorators.js.map +0 -1
  462. package/lib/model/index.js.map +0 -1
  463. package/lib/model/indexing.js.map +0 -1
  464. package/lib/model/types.js.map +0 -1
  465. package/lib/overrides/Metadata.js.map +0 -1
  466. package/lib/overrides/Model.js.map +0 -1
  467. package/lib/overrides/ModelBuilder.js.map +0 -1
  468. package/lib/overrides/index.js.map +0 -1
  469. package/lib/overrides/injectables.js.map +0 -1
  470. package/lib/overrides/overrides.js.map +0 -1
  471. package/lib/persistence/Adapter.js.map +0 -1
  472. package/lib/persistence/Context.js.map +0 -1
  473. package/lib/persistence/ContextLock.js.map +0 -1
  474. package/lib/persistence/Dispatch.js.map +0 -1
  475. package/lib/persistence/ObserverHandler.js.map +0 -1
  476. package/lib/persistence/Sequence.js.map +0 -1
  477. package/lib/persistence/constants.js.map +0 -1
  478. package/lib/persistence/decorators.js.map +0 -1
  479. package/lib/persistence/errors.js.map +0 -1
  480. package/lib/persistence/event-filters.js.map +0 -1
  481. package/lib/persistence/generators.js.map +0 -1
  482. package/lib/persistence/index.js.map +0 -1
  483. package/lib/persistence/transactions.js.map +0 -1
  484. package/lib/persistence/types.js.map +0 -1
  485. package/lib/query/Condition.js.map +0 -1
  486. package/lib/query/MethodQueryBuilder.js.map +0 -1
  487. package/lib/query/Paginator.js.map +0 -1
  488. package/lib/query/Statement.js.map +0 -1
  489. package/lib/query/constants.js.map +0 -1
  490. package/lib/query/decorators.js.map +0 -1
  491. package/lib/query/errors.js.map +0 -1
  492. package/lib/query/index.js.map +0 -1
  493. package/lib/query/options.js.map +0 -1
  494. package/lib/query/selectors.js.map +0 -1
  495. package/lib/query/types.js.map +0 -1
  496. package/lib/query/utils.js.map +0 -1
  497. package/lib/ram/RamAdapter.js.map +0 -1
  498. package/lib/ram/RamPaginator.js.map +0 -1
  499. package/lib/ram/RamStatement.js.map +0 -1
  500. package/lib/ram/constants.js.map +0 -1
  501. package/lib/ram/handlers.js.map +0 -1
  502. package/lib/ram/index.js.map +0 -1
  503. package/lib/ram/types.js.map +0 -1
  504. package/lib/repository/Repository.js.map +0 -1
  505. package/lib/repository/constants.js.map +0 -1
  506. package/lib/repository/decorators.js.map +0 -1
  507. package/lib/repository/errors.js.map +0 -1
  508. package/lib/repository/index.js.map +0 -1
  509. package/lib/repository/injectables.js.map +0 -1
  510. package/lib/repository/types.js.map +0 -1
  511. package/lib/repository/utils.js.map +0 -1
  512. package/lib/services/ModelService.js.map +0 -1
  513. package/lib/services/PersistenceService.js.map +0 -1
  514. package/lib/services/index.js.map +0 -1
  515. package/lib/services/services.js.map +0 -1
  516. package/lib/tasks/CleanUpTask.js.map +0 -1
  517. package/lib/tasks/TaskContext.js.map +0 -1
  518. package/lib/tasks/TaskEngine.js.map +0 -1
  519. package/lib/tasks/TaskErrors.js.map +0 -1
  520. package/lib/tasks/TaskEventBus.js.map +0 -1
  521. package/lib/tasks/TaskHandler.js.map +0 -1
  522. package/lib/tasks/TaskHandlerRegistry.js.map +0 -1
  523. package/lib/tasks/TaskService.js.map +0 -1
  524. package/lib/tasks/TaskStateChangeError.js.map +0 -1
  525. package/lib/tasks/TaskTracker.js.map +0 -1
  526. package/lib/tasks/builder.js.map +0 -1
  527. package/lib/tasks/constants.js.map +0 -1
  528. package/lib/tasks/decorators.js.map +0 -1
  529. package/lib/tasks/index.js.map +0 -1
  530. package/lib/tasks/logging.js.map +0 -1
  531. package/lib/tasks/models/TaskBackoffModel.js.map +0 -1
  532. package/lib/tasks/models/TaskErrorModel.js.map +0 -1
  533. package/lib/tasks/models/TaskEventModel.js.map +0 -1
  534. package/lib/tasks/models/TaskIOSerializer.js.map +0 -1
  535. package/lib/tasks/models/TaskLogEntryModel.js.map +0 -1
  536. package/lib/tasks/models/TaskModel.js.map +0 -1
  537. package/lib/tasks/models/TaskStepResultModel.js.map +0 -1
  538. package/lib/tasks/models/TaskStepSpecModel.js.map +0 -1
  539. package/lib/tasks/models/index.js.map +0 -1
  540. package/lib/tasks/types.js.map +0 -1
  541. package/lib/tasks/utils.js.map +0 -1
  542. package/lib/utils/ContextualLoggedClass.js.map +0 -1
  543. package/lib/utils/decorators.js.map +0 -1
  544. package/lib/utils/errors.js.map +0 -1
  545. package/lib/utils/index.js.map +0 -1
  546. package/lib/utils/throttling.js.map +0 -1
  547. package/lib/utils/types.js.map +0 -1
  548. package/lib/utils/utils.js.map +0 -1
  549. package/lib/workers/TaskEngine.js.map +0 -1
  550. package/lib/workers/WorkThreadEnvironment.js.map +0 -1
  551. package/lib/workers/index.js.map +0 -1
  552. package/lib/workers/messages.js.map +0 -1
  553. package/lib/workers/types.js.map +0 -1
  554. package/lib/workers/workerThread.js.map +0 -1
@@ -826,4 +826,4 @@ __decorate([
826
826
  __metadata("design:paramtypes", [void 0]),
827
827
  __metadata("design:returntype", Promise)
828
828
  ], Statement.prototype, "execute", null);
829
- //# sourceMappingURL=Statement.js.map
829
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1N0YXRlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDJEQUdpQztBQVNqQywrQ0FBd0M7QUFDeEMsMkRBQXVEO0FBQ3ZELCtDQUErRDtBQXVCL0QsOERBQTJEO0FBQzNELHdEQUF5RDtBQUN6RCx5Q0FBc0M7QUFFdEMsZ0ZBSXdDO0FBQ3hDLHVDQUErRTtBQUMvRSwrQ0FBNkU7QUFDN0UsNkRBQXlEO0FBQ3pELCtEQUFzRDtBQUV0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFzQixTQU1wQixTQUFRLDZDQUFtQztJQXFCM0MsWUFDWSxPQUFrQyxFQUNsQyxTQUFpQztRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUhFLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBWm5DLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBZXRDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsSUFBQSw0QkFBWSxFQUNWLElBQUksRUFDSixDQUFDLEVBQ0QsQ0FBQyxHQUFHLElBQXNDLEVBQUUsRUFBRTtnQkFDNUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzFDLENBQUMsRUFDRCxDQUFDLENBQUMsSUFBSSxDQUNQLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxLQUFLLENBQUMsZUFBZSxDQUM3QixNQUFXLEVBQ1gsR0FBRyxJQUFzQztRQUV6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUs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WSxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXA1QkQsOEJBbzVCQztBQS95QkM7SUFEQyxJQUFBLGVBQUssR0FBRTs7Ozt1Q0FTUDtBQVFEO0lBREMsSUFBQSxlQUFLLEdBQUU7O3lEQUVLLENBQUMsb0JBQUQsQ0FBQzs7eUNBa0JiO0FBR0Q7SUFEQyxJQUFBLGVBQUssR0FBRTs7eURBQ21DLENBQUMsb0JBQUQsQ0FBQzs7b0NBRzNDO0FBR0Q7SUFEQyxJQUFBLGVBQUssR0FBRTs7eURBQ21DLENBQUMsb0JBQUQsQ0FBQzs7b0NBRzNDO0FBR0Q7SUFEQyxJQUFBLGVBQUssR0FBRTs7eURBQ21DLENBQUMsb0JBQUQsQ0FBQzs7b0NBRzNDO0FBR0Q7SUFEQyxJQUFBLGVBQUssR0FBRTs7eURBQ21DLENBQUMsb0JBQUQsQ0FBQzs7b0NBRzNDO0FBR0Q7SUFEQyxJQUFBLGVBQUssR0FBRTs7eURBQ3NDLENBQUMsb0JBQUQsQ0FBQzs7c0NBSTlDO0FBR007SUFETixJQUFBLGVBQUssR0FBRTs7OztxQ0FRUDtBQUdNO0lBRE4sSUFBQSxlQUFLLEdBQUU7O3FDQUNnQixxQkFBUzs7c0NBR2hDO0FBU007SUFETixJQUFBLGVBQUssR0FBRTs7Ozt3Q0FTUDtBQVVNO0lBRE4sSUFBQSxlQUFLLEdBQUU7Ozs7dUNBcUJQO0FBOEJNO0lBRE4sSUFBQSxlQUFLLEdBQUU7O3lEQUVJLEdBQUcsb0JBQUgsR0FBRzs7d0NBT2Q7QUFHTTtJQUROLElBQUEsZUFBSyxHQUFFOzs7O3NDQUlQO0FBR007SUFETixJQUFBLGVBQUssR0FBRTs7Ozt1Q0FJUDtBQUdLO0lBREwsSUFBQSxlQUFLLEdBQUU7Ozs7d0NBaUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBlbmZvcmNlREJEZWNvcmF0b3JzLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB0eXBlIHsgRXhlY3V0b3IsIFJhd0V4ZWN1dG9yIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgT3JkZXJEaXJlY3Rpb25JbnB1dCxcbiAgU2VsZWN0U2VsZWN0b3IsXG59IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5pbXBvcnQgeyBwcmVmaXhNZXRob2QgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGZpbmFsLCBMb2dnZXIsIHRvQ2FtZWxDYXNlIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgdHlwZSB7XG4gIENvdW50RGlzdGluY3RPcHRpb24sXG4gIENvdW50T3B0aW9uLFxuICBEaXN0aW5jdE9wdGlvbixcbiAgR3JvdXBCeVJlc3VsdCxcbiAgTWF4T3B0aW9uLFxuICBNaW5PcHRpb24sXG4gIE9mZnNldE9wdGlvbixcbiAgT3JkZXJBbmRHcm91cE9wdGlvbixcbiAgT3JkZXJCeVJlc3VsdCxcbiAgT3JkZXJCeVRoZW5CeU9wdGlvbixcbiAgUHJlcGFyYWJsZVN0YXRlbWVudEV4ZWN1dG9yLFxuICBTZWxlY3RPcHRpb24sXG4gIFN0YXRlbWVudEV4ZWN1dG9yLFxuICBTdW1PcHRpb24sXG4gIEF2Z09wdGlvbixcbiAgV2hlcmVPcHRpb24sXG59IGZyb20gXCIuL29wdGlvbnNcIjtcbmltcG9ydCB7IFBhZ2luYXRhYmxlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvUGFnaW5hdGFibGVcIjtcbmltcG9ydCB7IFBhZ2luYXRvciB9IGZyb20gXCIuL1BhZ2luYXRvclwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJGbGFncywgQ29udGV4dE9mIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL3R5cGVzXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2Vycm9yc1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29udGV4dHVhbEFyZ3MsXG4gIENvbnRleHR1YWxMb2dnZWRDbGFzcyxcbiAgdHlwZSBNYXliZUNvbnRleHR1YWxBcmcsXG59IGZyb20gXCIuLi91dGlscy9Db250ZXh0dWFsTG9nZ2VkQ2xhc3NcIjtcbmltcG9ydCB7IERpcmVjdGlvbkxpbWl0T2Zmc2V0LCBQcmVwYXJlZFN0YXRlbWVudCwgUXVlcnlDbGF1c2UgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgR3JvdXBPcGVyYXRvciwgT3BlcmF0b3IsIFByZXBhcmVkU3RhdGVtZW50S2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9jb25zdGFudHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY2xhc3MgZm9yIGRhdGFiYXNlIHF1ZXJ5IHN0YXRlbWVudHNcbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IgYnVpbGRpbmcgYW5kIGV4ZWN1dGluZyBkYXRhYmFzZSBxdWVyaWVzXG4gKlxuICogVGhpcyBhYnN0cmFjdCBjbGFzcyBpbXBsZW1lbnRzIHRoZSBxdWVyeSBidWlsZGVyIHBhdHRlcm4gZm9yIGNvbnN0cnVjdGluZ1xuICogZGF0YWJhc2UgcXVlcmllcy4gSXQgc3VwcG9ydHMgdmFyaW91cyBxdWVyeSBvcGVyYXRpb25zIGxpa2Ugc2VsZWN0LCBmcm9tLFxuICogd2hlcmUsIG9yZGVyQnksIGdyb3VwQnksIGxpbWl0LCBhbmQgb2Zmc2V0LiBJdCBhbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBleGVjdXRpbmcgcXVlcmllcyBhbmQgaGFuZGxpbmcgcGFnaW5hdGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgUSAtIFRoZSBxdWVyeSB0eXBlIHNwZWNpZmljIHRvIHRoZSBkYXRhYmFzZSBhZGFwdGVyXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoaXMgc3RhdGVtZW50IG9wZXJhdGVzIG9uXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgcXVlcnlcbiAqIEBwYXJhbSB7QWRhcHRlcjxhbnksIFEsIGFueSwgYW55Pn0gYWRhcHRlciAtIFRoZSBkYXRhYmFzZSBhZGFwdGVyIHRvIHVzZSBmb3IgZXhlY3V0aW5nIHF1ZXJpZXNcbiAqIEBjbGFzcyBTdGF0ZW1lbnRcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYSBzdGF0ZW1lbnQgdG8gcXVlcnkgdXNlcnNcbiAqIGNvbnN0IHN0YXRlbWVudCA9IG5ldyBTUUxTdGF0ZW1lbnQoYWRhcHRlcik7XG4gKiBjb25zdCB1c2VycyA9IGF3YWl0IHN0YXRlbWVudFxuICogICAuc2VsZWN0KClcbiAqICAgLmZyb20oVXNlcilcbiAqICAgLndoZXJlKENvbmRpdGlvbi5hdHRyaWJ1dGUoXCJzdGF0dXNcIikuZXEoXCJhY3RpdmVcIikpXG4gKiAgIC5vcmRlckJ5KFtcImNyZWF0ZWRBdFwiLCBcIkRFU0NcIl0pXG4gKiAgIC5saW1pdCgxMClcbiAqICAgLmV4ZWN1dGUoKTtcbiAqXG4gKiAvLyBVc2UgcGFnaW5hdGlvblxuICogY29uc3QgcGFnaW5hdG9yID0gYXdhaXQgc3RhdGVtZW50XG4gKiAgIC5zZWxlY3QoKVxuICogICAuZnJvbShVc2VyKVxuICogICAucGFnaW5hdGUoMjApOyAvLyAyMCB1c2VycyBwZXIgcGFnZVxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IFN0YXRlbWVudFxuICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IERhdGFiYXNlXG4gKlxuICogICBDbGllbnQtPj5TdGF0ZW1lbnQ6IHNlbGVjdCgpXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogZnJvbShNb2RlbClcbiAqICAgQ2xpZW50LT4+U3RhdGVtZW50OiB3aGVyZShjb25kaXRpb24pXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogb3JkZXJCeShbZmllbGQsIGRpcmVjdGlvbl0pXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogbGltaXQodmFsdWUpXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogZXhlY3V0ZSgpXG4gKiAgIFN0YXRlbWVudC0+PlN0YXRlbWVudDogYnVpbGQoKVxuICogICBTdGF0ZW1lbnQtPj5BZGFwdGVyOiByYXcocXVlcnkpXG4gKiAgIEFkYXB0ZXItPj5EYXRhYmFzZTogZXhlY3V0ZSBxdWVyeVxuICogICBEYXRhYmFzZS0tPj5BZGFwdGVyOiByZXR1cm4gcmVzdWx0c1xuICogICBBZGFwdGVyLS0+PlN0YXRlbWVudDogcmV0dXJuIHByb2Nlc3NlZCByZXN1bHRzXG4gKiAgIFN0YXRlbWVudC0tPj5DbGllbnQ6IHJldHVybiBmaW5hbCByZXN1bHRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQ8XG4gICAgTSBleHRlbmRzIE1vZGVsLFxuICAgIEEgZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4sXG4gICAgUixcbiAgICBRID0gQSBleHRlbmRzIEFkYXB0ZXI8YW55LCBhbnksIGluZmVyIFEsIGFueT4gPyBRIDogbmV2ZXIsXG4gID5cbiAgZXh0ZW5kcyBDb250ZXh0dWFsTG9nZ2VkQ2xhc3M8Q29udGV4dE9mPEE+PlxuICBpbXBsZW1lbnRzIEV4ZWN1dG9yPFI+LCBSYXdFeGVjdXRvcjxRPiwgUGFnaW5hdGFibGU8TSwgUiwgUT5cbntcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdFNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT5bXTtcbiAgcHJvdGVjdGVkIGRpc3RpbmN0U2VsZWN0b3I/OiBTZWxlY3RTZWxlY3RvcjxNPjtcbiAgcHJvdGVjdGVkIG1heFNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT47XG4gIHByb3RlY3RlZCBtaW5TZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgY291bnRTZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+IHwgbnVsbDtcbiAgcHJvdGVjdGVkIGNvdW50RGlzdGluY3RTZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+IHwgbnVsbDtcbiAgcHJvdGVjdGVkIHN1bVNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT47XG4gIHByb3RlY3RlZCBhdmdTZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgX2luQ291bnRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBmcm9tU2VsZWN0b3IhOiBDb25zdHJ1Y3RvcjxNPjtcbiAgcHJvdGVjdGVkIHdoZXJlQ29uZGl0aW9uPzogQ29uZGl0aW9uPE0+O1xuICBwcm90ZWN0ZWQgb3JkZXJCeVNlbGVjdG9ycz86IE9yZGVyQnlTZWxlY3RvcjxNPltdO1xuICBwcm90ZWN0ZWQgZ3JvdXBCeVNlbGVjdG9ycz86IEdyb3VwQnlTZWxlY3RvcjxNPltdO1xuICBwcm90ZWN0ZWQgbGltaXRTZWxlY3Rvcj86IG51bWJlcjtcbiAgcHJvdGVjdGVkIG9mZnNldFNlbGVjdG9yPzogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBwcmVwYXJlZD86IFByZXBhcmVkU3RhdGVtZW50PE0+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYWRhcHRlcjogQWRhcHRlcjxhbnksIGFueSwgUSwgYW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGVzPzogUGFydGlhbDxBZGFwdGVyRmxhZ3M+XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgW3RoaXMuZXhlY3V0ZSwgdGhpcy5wYWdpbmF0ZV0uZm9yRWFjaCgobSkgPT4ge1xuICAgICAgcHJlZml4TWV0aG9kKFxuICAgICAgICB0aGlzLFxuICAgICAgICBtLFxuICAgICAgICAoLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj4pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRpb25QcmVmaXgobSwgLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIG0ubmFtZVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBleGVjdXRpb25QcmVmaXgoXG4gICAgbWV0aG9kOiBhbnksXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKSB7XG4gICAgY29uc3QgeyBjdHgsIGN0eEFyZ3MsIGxvZyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyW1wibG9nQ3R4XCJdKFxuICAgICAgICBbdGhpcy5mcm9tU2VsZWN0b3IsIC4uLmFyZ3NdLFxuICAgICAgICBtZXRob2QubmFtZSA9PT0gdGhpcy5wYWdpbmF0ZS5uYW1lXG4gICAgICAgICAgPyBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV9CWVxuICAgICAgICAgIDogUGVyc2lzdGVuY2VLZXlzLlFVRVJZLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0aGlzLm92ZXJyaWRlcyB8fCB7fVxuICAgICAgKVxuICAgICkuZm9yKG1ldGhvZCk7XG5cbiAgICBjdHhBcmdzLnNoaWZ0KCk7XG5cbiAgICBjb25zdCBmb3JjZVNpbXBsZSA9IGN0eC5nZXQoXCJmb3JjZVByZXBhcmVTaW1wbGVRdWVyaWVzXCIpO1xuICAgIGNvbnN0IGZvcmNlQ29tcGxleCA9IGN0eC5nZXQoXCJmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllc1wiKTtcbiAgICBsb2cuc2lsbHkoXG4gICAgICBgc3RhdGVtZW50IGZvcmNlIHNpbXBsZSAke2ZvcmNlU2ltcGxlfSwgZm9yY2VDb21wbGV4OiAke2ZvcmNlQ29tcGxleH1gXG4gICAgKTtcbiAgICAvLyBTaW1wbGUgcXVlcmllcyBvciBzaW1wbGUgYWdncmVnYXRpb24gcXVlcmllcyAoYWdncmVnYXRpb25zIHdpdGhvdXQgd2hlcmUgY29uZGl0aW9ucylcbiAgICAvLyBBbHNvIGV4Y2x1ZGUgbXVsdGktbGV2ZWwgZ3JvdXBCeSBmcm9tIHNpbXBsZSBhZ2dyZWdhdGlvbiBzcXVhc2hpbmdcbiAgICBjb25zdCBpc1NpbXBsZUFnZ3JlZ2F0aW9uID1cbiAgICAgIHRoaXMuaGFzQWdncmVnYXRpb24oKSAmJlxuICAgICAgIXRoaXMud2hlcmVDb25kaXRpb24gJiZcbiAgICAgICF0aGlzLnNlbGVjdFNlbGVjdG9yPy5sZW5ndGggJiZcbiAgICAgICh0aGlzLmdyb3VwQnlTZWxlY3RvcnM/Lmxlbmd0aCB8fCAwKSA8PSAxO1xuICAgIGlmIChcbiAgICAgIChmb3JjZVNpbXBsZSAmJiAodGhpcy5pc1NpbXBsZVF1ZXJ5KCkgfHwgaXNTaW1wbGVBZ2dyZWdhdGlvbikpIHx8XG4gICAgICBmb3JjZUNvbXBsZXhcbiAgICApIHtcbiAgICAgIGxvZy5zaWxseShcbiAgICAgICAgYHNxdWFzaGluZyAkeyFmb3JjZUNvbXBsZXggPyBcInNpbXBsZVwiIDogXCJjb21wbGV4XCJ9IHF1ZXJ5IHRvIHByZXBhcmVkIHN0YXRlbWVudGBcbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLnByZXBhcmUoY3R4KTtcbiAgICAgIGxvZy5zaWxseShcbiAgICAgICAgYHNxdWFzaGVkICR7IWZvcmNlQ29tcGxleCA/IFwic2ltcGxlXCIgOiBcImNvbXBsZXhcIn0gcXVlcnkgdG8gJHtKU09OLnN0cmluZ2lmeSh0aGlzLnByZXBhcmVkLCBudWxsLCAyKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY3R4QXJncztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgcmV0dXJuICh0aGlzLmFkYXB0ZXIgYXMgYW55KS5sb2cuZm9yKFN0YXRlbWVudCk7XG4gIH1cblxuICBzZWxlY3Q8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIFMgZXh0ZW5kcyByZWFkb25seSBTZWxlY3RTZWxlY3RvcjxNPltdLFxuICA+KCk6IFNlbGVjdE9wdGlvbjxNLCBNW10+O1xuICBzZWxlY3Q8UyBleHRlbmRzIHJlYWRvbmx5IFNlbGVjdFNlbGVjdG9yPE0+W10+KFxuICAgIHNlbGVjdG9yOiByZWFkb25seSBbLi4uU11cbiAgKTogU2VsZWN0T3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPjtcblxuICBAZmluYWwoKVxuICBzZWxlY3Q8UyBleHRlbmRzIHJlYWRvbmx5IFNlbGVjdFNlbGVjdG9yPE0+W10+KFxuICAgIHNlbGVjdG9yPzogcmVhZG9ubHkgWy4uLlNdXG4gICk6IFNlbGVjdE9wdGlvbjxNLCBNW10+IHwgU2VsZWN0T3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwic2VsZWN0U2VsZWN0b3JcIiwge1xuICAgICAgdmFsdWU6IHNlbGVjdG9yLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzIGFzIFNlbGVjdE9wdGlvbjxNLCBNW10+IHwgU2VsZWN0T3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPjtcbiAgfVxuXG4gIC8vIE92ZXJsb2FkIGZvciBzdGFuZGFsb25lIGRpc3RpbmN0IC0gcmVxdWlyZXMgYSBzZWxlY3RvclxuICBkaXN0aW5jdDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogRGlzdGluY3RPcHRpb248TSwgTVtTXVtdPjtcbiAgLy8gT3ZlcmxvYWQgZm9yIGNvdW50KCkuZGlzdGluY3QoKSAtIG5vIHNlbGVjdG9yIG5lZWRlZFxuICBkaXN0aW5jdCgpOiBDb3VudERpc3RpbmN0T3B0aW9uPE0+O1xuXG4gIEBmaW5hbCgpXG4gIGRpc3RpbmN0PFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oXG4gICAgc2VsZWN0b3I/OiBTXG4gICk6IERpc3RpbmN0T3B0aW9uPE0sIE1bU11bXT4gfCBDb3VudERpc3RpbmN0T3B0aW9uPE0+IHtcbiAgICAvLyBXaGVuIGNoYWluZWQgYWZ0ZXIgY291bnQoKSwgbWFrZSBpdCBhIGNvdW50IGRpc3RpbmN0XG4gICAgaWYgKHRoaXMuX2luQ291bnRNb2RlKSB7XG4gICAgICAvLyBVc2UgdGhlIGNvdW50IHNlbGVjdG9yIGFzIHRoZSBmaWVsZCB0byBjb3VudCBkaXN0aW5jdCBvblxuICAgICAgdGhpcy5jb3VudERpc3RpbmN0U2VsZWN0b3IgPSB0aGlzLmNvdW50U2VsZWN0b3I7XG4gICAgICB0aGlzLmNvdW50U2VsZWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9pbkNvdW50TW9kZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBDb3VudERpc3RpbmN0T3B0aW9uPE0+O1xuICAgIH1cbiAgICAvLyBTdGFuZGFsb25lIGRpc3RpbmN0IHJlcXVpcmVzIGEgc2VsZWN0b3JcbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgXCJkaXN0aW5jdCgpIHJlcXVpcmVzIGEgc2VsZWN0b3Igd2hlbiBub3QgY2hhaW5lZCBhZnRlciBjb3VudCgpXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGlzdGluY3RTZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgRGlzdGluY3RPcHRpb248TSwgTVtTXVtdPjtcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIG1heDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogTWF4T3B0aW9uPE0sIE1bU10+IHtcbiAgICB0aGlzLm1heFNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXMgYXMgTWF4T3B0aW9uPE0sIE1bU10+O1xuICB9XG5cbiAgQGZpbmFsKClcbiAgbWluPFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I6IFMpOiBNaW5PcHRpb248TSwgTVtTXT4ge1xuICAgIHRoaXMubWluU2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICByZXR1cm4gdGhpcyBhcyBNaW5PcHRpb248TSwgTVtTXT47XG4gIH1cblxuICBAZmluYWwoKVxuICBzdW08UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IFN1bU9wdGlvbjxNLCBudW1iZXI+IHtcbiAgICB0aGlzLnN1bVNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXMgYXMgU3VtT3B0aW9uPE0sIG51bWJlcj47XG4gIH1cblxuICBAZmluYWwoKVxuICBhdmc8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IEF2Z09wdGlvbjxNLCBudW1iZXI+IHtcbiAgICB0aGlzLmF2Z1NlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXMgYXMgQXZnT3B0aW9uPE0sIG51bWJlcj47XG4gIH1cblxuICBAZmluYWwoKVxuICBjb3VudDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yPzogUyk6IENvdW50T3B0aW9uPE0+IHtcbiAgICB0aGlzLmNvdW50U2VsZWN0b3IgPSBzZWxlY3RvciA/PyBudWxsO1xuICAgIHRoaXMuX2luQ291bnRNb2RlID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIENvdW50T3B0aW9uPE0+O1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIGZyb20oc2VsZWN0b3I6IEZyb21TZWxlY3RvcjxNPik6IFdoZXJlT3B0aW9uPE0sIFI+IHtcbiAgICB0aGlzLmZyb21TZWxlY3RvciA9IChcbiAgICAgIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiA/IE1vZGVsLmdldChzZWxlY3RvcikgOiBzZWxlY3RvclxuICAgICkgYXMgQ29uc3RydWN0b3I8TT47XG4gICAgaWYgKCF0aGlzLmZyb21TZWxlY3RvcilcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBDb3VsZCBub3QgZmluZCBzZWxlY3RvciBtb2RlbDogJHtzZWxlY3Rvcn1gKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIHB1YmxpYyB3aGVyZShjb25kaXRpb246IENvbmRpdGlvbjxNPik6IE9yZGVyQW5kR3JvdXBPcHRpb248TSwgUj4ge1xuICAgIHRoaXMud2hlcmVDb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgb3JkZXJCeShzZWxlY3RvcjogT3JkZXJCeVNlbGVjdG9yPE0+KTogT3JkZXJCeVJlc3VsdDxNLCBSPjtcbiAgcHVibGljIG9yZGVyQnkoXG4gICAgYXR0cmlidXRlOiBrZXlvZiBNLFxuICAgIGRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb25JbnB1dFxuICApOiBPcmRlckJ5UmVzdWx0PE0sIFI+O1xuXG4gIEBmaW5hbCgpXG4gIHB1YmxpYyBvcmRlckJ5KFxuICAgIHNlbGVjdG9yT3JBdHRyaWJ1dGU6IE9yZGVyQnlTZWxlY3RvcjxNPiB8IGtleW9mIE0sXG4gICAgZGlyZWN0aW9uPzogT3JkZXJEaXJlY3Rpb25JbnB1dFxuICApOiBPcmRlckJ5UmVzdWx0PE0sIFI+IHtcbiAgICB0aGlzLm9yZGVyQnlTZWxlY3RvcnMgPSBbXG4gICAgICB0aGlzLm5vcm1hbGl6ZU9yZGVyQ3JpdGVyaW9uKHNlbGVjdG9yT3JBdHRyaWJ1dGUsIGRpcmVjdGlvbiksXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcyBhcyBPcmRlckJ5UmVzdWx0PE0sIFI+O1xuICB9XG5cbiAgcHVibGljIHRoZW5CeShzZWxlY3RvcjogR3JvdXBCeVNlbGVjdG9yPE0+KTogR3JvdXBCeVJlc3VsdDxNPjtcbiAgcHVibGljIHRoZW5CeShzZWxlY3RvcjogT3JkZXJCeVNlbGVjdG9yPE0+KTogT3JkZXJCeVRoZW5CeU9wdGlvbjxNLCBSPjtcbiAgcHVibGljIHRoZW5CeShcbiAgICBhdHRyaWJ1dGU6IGtleW9mIE0sXG4gICAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbklucHV0XG4gICk6IE9yZGVyQnlUaGVuQnlPcHRpb248TSwgUj47XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIHRoZW5CeShcbiAgICBzZWxlY3Rvck9yQXR0cmlidXRlOiBPcmRlckJ5U2VsZWN0b3I8TT4gfCBrZXlvZiBNLFxuICAgIGRpcmVjdGlvbj86IE9yZGVyRGlyZWN0aW9uSW5wdXRcbiAgKTogT3JkZXJCeVRoZW5CeU9wdGlvbjxNLCBSPiB8IEdyb3VwQnlSZXN1bHQ8TT4ge1xuICAgIGNvbnN0IGlzT3JkZXJpbmdDcml0ZXJpb24gPVxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3Rvck9yQXR0cmlidXRlKSB8fCB0eXBlb2YgZGlyZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiO1xuICAgIGlmIChpc09yZGVyaW5nQ3JpdGVyaW9uKSB7XG4gICAgICBpZiAoIXRoaXMub3JkZXJCeVNlbGVjdG9ycyB8fCAhdGhpcy5vcmRlckJ5U2VsZWN0b3JzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXCJ0aGVuQnkgcmVxdWlyZXMgb3JkZXJCeSB0byBiZSBjYWxsZWQgZmlyc3RcIik7XG4gICAgICB0aGlzLm9yZGVyQnlTZWxlY3RvcnMucHVzaChcbiAgICAgICAgdGhpcy5ub3JtYWxpemVPcmRlckNyaXRlcmlvbihzZWxlY3Rvck9yQXR0cmlidXRlLCBkaXJlY3Rpb24pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBPcmRlckJ5VGhlbkJ5T3B0aW9uPE0sIFI+O1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZ3JvdXBCeVNlbGVjdG9ycyB8fCAhdGhpcy5ncm91cEJ5U2VsZWN0b3JzLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBcImdyb3VwQnkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGNoYWluaW5nIGdyb3VwIHNlbGVjdG9yc1wiXG4gICAgICApO1xuICAgIHRoaXMuZ3JvdXBCeVNlbGVjdG9ycy5wdXNoKHNlbGVjdG9yT3JBdHRyaWJ1dGUgYXMgR3JvdXBCeVNlbGVjdG9yPE0+KTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIEdyb3VwQnlSZXN1bHQ8TT47XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU9yZGVyQ3JpdGVyaW9uKFxuICAgIHNlbGVjdG9yT3JBdHRyaWJ1dGU6IE9yZGVyQnlTZWxlY3RvcjxNPiB8IGtleW9mIE0sXG4gICAgZGlyZWN0aW9uPzogT3JkZXJEaXJlY3Rpb25JbnB1dFxuICApOiBPcmRlckJ5U2VsZWN0b3I8TT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdG9yT3JBdHRyaWJ1dGUpKSB7XG4gICAgICBjb25zdCBbYXR0cmlidXRlLCBkaXJdID0gc2VsZWN0b3JPckF0dHJpYnV0ZTtcbiAgICAgIHJldHVybiBbYXR0cmlidXRlLCB0aGlzLm5vcm1hbGl6ZU9yZGVyRGlyZWN0aW9uKGRpcildO1xuICAgIH1cbiAgICByZXR1cm4gW3NlbGVjdG9yT3JBdHRyaWJ1dGUsIHRoaXMubm9ybWFsaXplT3JkZXJEaXJlY3Rpb24oZGlyZWN0aW9uKV07XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU9yZGVyRGlyZWN0aW9uKFxuICAgIGRpcmVjdGlvbj86IE9yZGVyRGlyZWN0aW9uSW5wdXRcbiAgKTogT3JkZXJEaXJlY3Rpb24ge1xuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgXCJvcmRlckJ5IGRpcmVjdGlvbiBpcyByZXF1aXJlZCB3aGVuIHNwZWNpZnlpbmcgdGhlIGF0dHJpYnV0ZSBzZXBhcmF0ZWx5LlwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKGRpcmVjdGlvbikudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobm9ybWFsaXplZCA9PT0gT3JkZXJEaXJlY3Rpb24uQVNDKSByZXR1cm4gT3JkZXJEaXJlY3Rpb24uQVNDO1xuICAgIGlmIChub3JtYWxpemVkID09PSBPcmRlckRpcmVjdGlvbi5EU0MpIHJldHVybiBPcmRlckRpcmVjdGlvbi5EU0M7XG4gICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICBgSW52YWxpZCBPcmRlckJ5IGRpcmVjdGlvbiAke2RpcmVjdGlvbn0uIEV4cGVjdGVkIG9uZSBvZjogJHtPYmplY3QudmFsdWVzKE9yZGVyRGlyZWN0aW9uKS5qb2luKFwiLCBcIil9LmBcbiAgICApO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIGdyb3VwQnk8S2V5IGV4dGVuZHMgR3JvdXBCeVNlbGVjdG9yPE0+PihcbiAgICBzZWxlY3RvcjogS2V5XG4gICk6IEdyb3VwQnlSZXN1bHQ8TSwgW0tleV0+IHtcbiAgICBpZiAodGhpcy5vcmRlckJ5U2VsZWN0b3JzICYmIHRoaXMub3JkZXJCeVNlbGVjdG9ycy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFwiZ3JvdXBCeSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgb3JkZXJCeS5cIik7XG4gICAgfVxuICAgIHRoaXMuZ3JvdXBCeVNlbGVjdG9ycyA9IFtzZWxlY3Rvcl07XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBHcm91cEJ5UmVzdWx0PE0sIFtLZXldPjtcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIHB1YmxpYyBsaW1pdCh2YWx1ZTogbnVtYmVyKTogT2Zmc2V0T3B0aW9uPE0sIFI+IHtcbiAgICB0aGlzLmxpbWl0U2VsZWN0b3IgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIHB1YmxpYyBvZmZzZXQodmFsdWU6IG51bWJlcik6IFByZXBhcmFibGVTdGF0ZW1lbnRFeGVjdXRvcjxNLCBSPiB7XG4gICAgdGhpcy5vZmZzZXRTZWxlY3RvciA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgYXN5bmMgZXhlY3V0ZSguLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+Pik6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuZXhlY3V0ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnByZXBhcmVkKSByZXR1cm4gdGhpcy5leGVjdXRlUHJlcGFyZWQoLi4uKGFyZ3MgYXMgYW55KSk7XG4gICAgICBsb2cuc2lsbHkoYEJ1aWxkaW5nIHJhdyBzdGF0ZW1lbnQuLi5gKTtcbiAgICAgIGNvbnN0IHF1ZXJ5OiBRID0gdGhpcy5idWlsZCgpO1xuICAgICAgbG9nLnNpbGx5KGBleGVjdXRpbmcgcmF3IHN0YXRlbWVudGApO1xuICAgICAgY29uc3QgcmVzdWx0cyA9IChhd2FpdCB0aGlzLnJhdzxSPihcbiAgICAgICAgcXVlcnksXG4gICAgICAgIC4uLihjdHhBcmdzIGFzIENvbnRleHR1YWxBcmdzPENvbnRleHRPZjxBPj4pXG4gICAgICApKSBhcyB1bmtub3duIGFzIFI7XG4gICAgICBpZiAodGhpcy5oYXNBZ2dyZWdhdGlvbigpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnNlbGVjdFNlbGVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IChyOiBhbnkpID0+IHRoaXMucHJvY2Vzc1JlY29yZChyLCBjdHgpO1xuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwQnlTZWxlY3RvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLnJldmVydEdyb3VwZWRSZXN1bHRzKHJlc3VsdHMsIHByb2Nlc3NvcikgYXMgUjtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQoZ3JvdXBlZCwgY3R4KSkgYXMgUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzKSkge1xuICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IHJlc3VsdHMubWFwKHByb2Nlc3NvcikgYXMgdW5rbm93biBhcyBSO1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBseUFmdGVySGFuZGxlcnNUb1Jlc3VsdChtYXBwZWQsIGN0eCkpIGFzIFI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2luZ2xlID0gcHJvY2Vzc29yKHJlc3VsdHMpIGFzIHVua25vd24gYXMgUjtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGx5QWZ0ZXJIYW5kbGVyc1RvUmVzdWx0KHNpbmdsZSwgY3R4KSkgYXMgUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZXZlcnRHcm91cGVkUmVzdWx0cyhcbiAgICB2YWx1ZTogYW55LFxuICAgIHByb2Nlc3NvcjogKHJlY29yZDogYW55KSA9PiBhbnlcbiAgKTogYW55IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5tYXAocHJvY2Vzc29yKTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgICAgICAgKGFjYywgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gdGhpcy5yZXZlcnRHcm91cGVkUmVzdWx0cyh2YWwsIHByb2Nlc3Nvcik7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBleGVjdXRlUHJlcGFyZWQoXG4gICAgLi4uYXJnejogQ29udGV4dHVhbEFyZ3M8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCByZXBvID0gUmVwb3NpdG9yeS5mb3JNb2RlbCh0aGlzLmZyb21TZWxlY3RvciwgdGhpcy5hZGFwdGVyLmFsaWFzKTtcbiAgICBjb25zdCB7IG1ldGhvZCwgYXJncywgcGFyYW1zIH0gPSB0aGlzLnByZXBhcmVkIGFzIFByZXBhcmVkU3RhdGVtZW50PGFueT47XG4gICAgcmV0dXJuIHJlcG8uc3RhdGVtZW50KG1ldGhvZCwgLi4uYXJncywgcGFyYW1zLCAuLi5hcmd6KTtcbiAgfVxuXG4gIGFzeW5jIHJhdzxSPihyYXdJbnB1dDogUSwgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dE9mPEE+Pik6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHsgY3R4LCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnJhdyk7XG4gICAgY29uc3QgYWxsb3dSYXdTdGF0ZW1lbnRzID0gY3R4LmdldChcImFsbG93UmF3U3RhdGVtZW50c1wiKTtcbiAgICBpZiAoIWFsbG93UmF3U3RhdGVtZW50cylcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgICBcIlJhdyBzdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uXCJcbiAgICAgICk7XG4gICAgY29uc3QgcmVzdWx0czogUiA9IGF3YWl0IHRoaXMuYWRhcHRlci5yYXc8UiwgdHJ1ZT4oXG4gICAgICByYXdJbnB1dCxcbiAgICAgIHRydWUsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICBpZiAodGhpcy5oYXNBZ2dyZWdhdGlvbigpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgaWYgKCF0aGlzLnNlbGVjdFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gcmVzdWx0cyBhcyB1bmtub3duIGFzIFI7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gKHI6IGFueSkgPT4gdGhpcy5wcm9jZXNzUmVjb3JkKHIsIGN0eCk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzKSkge1xuICAgICAgY29uc3QgbWFwcGVkID0gcmVzdWx0cy5tYXAocHJvY2Vzc29yKSBhcyB1bmtub3duIGFzIFI7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQobWFwcGVkLCBjdHgpKSBhcyBSO1xuICAgIH1cbiAgICBjb25zdCBzaW5nbGUgPSBwcm9jZXNzb3IocmVzdWx0cykgYXMgdW5rbm93biBhcyBSO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBseUFmdGVySGFuZGxlcnNUb1Jlc3VsdChzaW5nbGUsIGN0eCkpIGFzIFI7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc1JlY29yZChyZWNvcmQ6IGFueSwgY3R4OiBDb250ZXh0T2Y8QT4pOiBNIHtcbiAgICBjb25zdCBwa0F0dHIgPSBNb2RlbC5wayh0aGlzLmZyb21TZWxlY3Rvcik7XG4gICAgY29uc3QgaWQgPSByZWNvcmRbcGtBdHRyXTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgIHJlY29yZCxcbiAgICAgIHRoaXMuZnJvbVNlbGVjdG9yIGFzIENvbnN0cnVjdG9yPGFueT4sXG4gICAgICBpZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGN0eFxuICAgICkgYXMgTTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBhcHBseUFmdGVySGFuZGxlcnNUb1Jlc3VsdChcbiAgICB2YWx1ZTogYW55LFxuICAgIGN0eDogQ29udGV4dE9mPEE+XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFjdHguZ2V0T3JVbmRlZmluZWQoXCJhZnRlclF1ZXJ5SGFuZGxlcnNcIikpXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTW9kZWwpIHtcbiAgICAgIGF3YWl0IGVuZm9yY2VEQkRlY29yYXRvcnMoXG4gICAgICAgIHRoaXMuZ2V0UmVwb3NpdG9yeSgpLFxuICAgICAgICBjdHgsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBPcGVyYXRpb25LZXlzLlJFQUQsXG4gICAgICAgIE9wZXJhdGlvbktleXMuQUZURVJcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHZhbHVlLm1hcCgoZW50cnkpID0+IHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQoZW50cnksIGN0eCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2tleSwgZW50cnldKSA9PlxuICAgICAgICAgIHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQoZW50cnksIGN0eCkudGhlbigocHJvY2Vzc2VkKSA9PiB7XG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gcHJvY2Vzc2VkO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRSZXBvc2l0b3J5KCk6IFJlcG9zaXRvcnk8TSwgQT4ge1xuICAgIHJldHVybiBSZXBvc2l0b3J5LmZvck1vZGVsKHRoaXMuZnJvbVNlbGVjdG9yLCB0aGlzLmFkYXB0ZXIuYWxpYXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZXBhcmVDb25kaXRpb24oY29uZGl0aW9uOiBDb25kaXRpb248YW55PiwgY3R4OiBDb250ZXh0T2Y8QT4pIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcm90ZWN0ZWQgcHJvcGVydGllc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb24gfSA9IGNvbmRpdGlvbjtcblxuICAgIGNvbnN0IHJlc3VsdDogUHJlcGFyZWRTdGF0ZW1lbnQ8YW55PiA9IHt9IGFzIGFueTtcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICBjYXNlIEdyb3VwT3BlcmF0b3IuQU5EOlxuICAgICAgY2FzZSBHcm91cE9wZXJhdG9yLk9SOiB7XG4gICAgICAgIGxldCBzaWRlMTogc3RyaW5nID0gYXR0cjEgYXMgc3RyaW5nLFxuICAgICAgICAgIHNpZGUyOiBzdHJpbmcgPSBjb21wYXJpc29uIGFzIGFueTtcbiAgICAgICAgaWYgKHR5cGVvZiBhdHRyMSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbjEgPSB0aGlzLnByZXBhcmVDb25kaXRpb24oXG4gICAgICAgICAgICBhdHRyMSBhcyBDb25kaXRpb248YW55PixcbiAgICAgICAgICAgIGN0eFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2lkZTEgPSBjb25kaXRpb24xLm1ldGhvZCBhcyBzdHJpbmc7XG4gICAgICAgICAgcmVzdWx0LmFyZ3MgPSBbLi4uKHJlc3VsdC5hcmdzIHx8IFtdKSwgLi4uKGNvbmRpdGlvbjEuYXJncyB8fCBbXSldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pIHtcbiAgICAgICAgICBjb25zdCBjb25kaXRpb24yID0gdGhpcy5wcmVwYXJlQ29uZGl0aW9uKGNvbXBhcmlzb24sIGN0eCk7XG4gICAgICAgICAgc2lkZTIgPSBjb25kaXRpb24yLm1ldGhvZCBhcyBzdHJpbmc7XG4gICAgICAgICAgcmVzdWx0LmFyZ3MgPSBbLi4uKHJlc3VsdC5hcmdzIHx8IFtdKSwgLi4uKGNvbmRpdGlvbjIuYXJncyB8fCBbXSldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0Lm1ldGhvZCA9IGAke3NpZGUxfSAke29wZXJhdG9yLnRvTG93ZXJDYXNlKCl9ICR7c2lkZTJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE9wZXJhdG9yLkVRVUFMOlxuICAgICAgICByZXN1bHQubWV0aG9kID0gYXR0cjEgYXMgc3RyaW5nO1xuICAgICAgICByZXN1bHQuYXJncyA9IFsuLi4ocmVzdWx0LmFyZ3MgfHwgW10pLCBjb21wYXJpc29uXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9wZXJhdG9yLkRJRkZFUkVOVDpcbiAgICAgICAgcmVzdWx0Lm1ldGhvZCA9IGAke2F0dHIxfSBkaWZmYDtcbiAgICAgICAgcmVzdWx0LmFyZ3MgPSBbLi4uKHJlc3VsdC5hcmdzIHx8IFtdKSwgY29tcGFyaXNvbl07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPcGVyYXRvci5SRUdFWFA6XG4gICAgICAgIHJlc3VsdC5tZXRob2QgPSBgJHthdHRyMX0gbWF0Y2hlc2A7XG4gICAgICAgIHJlc3VsdC5hcmdzID0gWy4uLihyZXN1bHQuYXJncyB8fCBbXSksIGNvbXBhcmlzb25dO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3BlcmF0b3IuQklHR0VSOlxuICAgICAgICByZXN1bHQubWV0aG9kID0gYCR7YXR0cjF9IGJpZ2dlcmA7XG4gICAgICAgIHJlc3VsdC5hcmdzID0gWy4uLihyZXN1bHQuYXJncyB8fCBbXSksIGNvbXBhcmlzb25dO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3BlcmF0b3IuQklHR0VSX0VROlxuICAgICAgICByZXN1bHQubWV0aG9kID0gYCR7YXR0cjF9IGJpZ2dlciB0aGFuIGVxdWFsYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9wZXJhdG9yLlNNQUxMRVI6XG4gICAgICAgIHJlc3VsdC5tZXRob2QgPSBgJHthdHRyMX0gbGVzc2A7XG4gICAgICAgIHJlc3VsdC5hcmdzID0gWy4uLihyZXN1bHQuYXJncyB8fCBbXSksIGNvbXBhcmlzb25dO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUl9FUTpcbiAgICAgICAgcmVzdWx0Lm1ldGhvZCA9IGAke2F0dHIxfSBsZXNzIHRoYW4gZXF1YWxgO1xuICAgICAgICByZXN1bHQuYXJncyA9IFsuLi4ocmVzdWx0LmFyZ3MgfHwgW10pLCBjb21wYXJpc29uXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9wZXJhdG9yLklOOlxuICAgICAgICByZXN1bHQubWV0aG9kID0gYCR7YXR0cjF9IGluYDtcbiAgICAgICAgcmVzdWx0LmFyZ3MgPSBbLi4uKHJlc3VsdC5hcmdzIHx8IFtdKSwgY29tcGFyaXNvbl07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYFVuc3VwcG9ydGVkIG9wZXJhdG9yICR7b3BlcmF0b3J9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJvdGVjdGVkIHNxdWFzaChjdHg6IENvbnRleHRPZjxBPik6IFByZXBhcmVkU3RhdGVtZW50PGFueT4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRlZmF1bHRRdWVyeSA9IHRoaXMubWF0Y2hEZWZhdWx0UXVlcnlDb25kaXRpb24oKTtcbiAgICBpZiAoZGVmYXVsdFF1ZXJ5KSB7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLmdldE9yZGVyRGlyZWN0aW9uKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICAgIG1ldGhvZDogUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkQsXG4gICAgICAgIGFyZ3M6IFtkZWZhdWx0UXVlcnkudmFsdWUsIGRpcmVjdGlvbl0sXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgUHJlcGFyZWRTdGF0ZW1lbnQ8TT47XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUncyBhIHdoZXJlIGNvbmRpdGlvbiB3aXRoIGNvbXBsZXggY29uZGl0aW9ucyAobmVzdGVkIENvbmRpdGlvbnMpLCBjYW4ndCBzcXVhc2hcbiAgICBpZiAodGhpcy53aGVyZUNvbmRpdGlvbikge1xuICAgICAgaWYgKHRoaXMud2hlcmVDb25kaXRpb25bXCJjb21wYXJpc29uXCJdIGluc3RhbmNlb2YgQ29uZGl0aW9uKVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFRyeSB0byBzcXVhc2ggc2ltcGxlIGFnZ3JlZ2F0aW9uIHF1ZXJpZXMgd2l0aG91dCB3aGVyZSBjb25kaXRpb25zXG4gICAgaWYgKCF0aGlzLndoZXJlQ29uZGl0aW9uICYmICF0aGlzLnNlbGVjdFNlbGVjdG9yPy5sZW5ndGgpIHtcbiAgICAgIC8vIENvdW50IHF1ZXJ5XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB0aGlzLmNvdW50U2VsZWN0b3IgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgIXRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICAgICAgbWV0aG9kOiBQcmVwYXJlZFN0YXRlbWVudEtleXMuQ09VTlRfT0YsXG4gICAgICAgICAgYXJnczogdGhpcy5jb3VudFNlbGVjdG9yICE9PSBudWxsID8gW3RoaXMuY291bnRTZWxlY3Rvcl0gOiBbXSxcbiAgICAgICAgICBwYXJhbXM6IHt9LFxuICAgICAgICB9IGFzIFByZXBhcmVkU3RhdGVtZW50PE0+O1xuICAgICAgfVxuXG4gICAgICAvLyBNYXggcXVlcnlcbiAgICAgIGlmICh0aGlzLm1heFNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY2xhc3M6IHRoaXMuZnJvbVNlbGVjdG9yLFxuICAgICAgICAgIG1ldGhvZDogUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLk1BWF9PRixcbiAgICAgICAgICBhcmdzOiBbdGhpcy5tYXhTZWxlY3Rvcl0sXG4gICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgfSBhcyBQcmVwYXJlZFN0YXRlbWVudDxNPjtcbiAgICAgIH1cblxuICAgICAgLy8gTWluIHF1ZXJ5XG4gICAgICBpZiAodGhpcy5taW5TZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNsYXNzOiB0aGlzLmZyb21TZWxlY3RvcixcbiAgICAgICAgICBtZXRob2Q6IFByZXBhcmVkU3RhdGVtZW50S2V5cy5NSU5fT0YsXG4gICAgICAgICAgYXJnczogW3RoaXMubWluU2VsZWN0b3JdLFxuICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgIH0gYXMgUHJlcGFyZWRTdGF0ZW1lbnQ8TT47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2ZyBxdWVyeVxuICAgICAgaWYgKHRoaXMuYXZnU2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICAgICAgbWV0aG9kOiBQcmVwYXJlZFN0YXRlbWVudEtleXMuQVZHX09GLFxuICAgICAgICAgIGFyZ3M6IFt0aGlzLmF2Z1NlbGVjdG9yXSxcbiAgICAgICAgICBwYXJhbXM6IHt9LFxuICAgICAgICB9IGFzIFByZXBhcmVkU3RhdGVtZW50PE0+O1xuICAgICAgfVxuXG4gICAgICAvLyBTdW0gcXVlcnlcbiAgICAgIGlmICh0aGlzLnN1bVNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY2xhc3M6IHRoaXMuZnJvbVNlbGVjdG9yLFxuICAgICAgICAgIG1ldGhvZDogUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlNVTV9PRixcbiAgICAgICAgICBhcmdzOiBbdGhpcy5zdW1TZWxlY3Rvcl0sXG4gICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgfSBhcyBQcmVwYXJlZFN0YXRlbWVudDxNPjtcbiAgICAgIH1cblxuICAgICAgLy8gRGlzdGluY3QgcXVlcnlcbiAgICAgIGlmICh0aGlzLmRpc3RpbmN0U2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICAgICAgbWV0aG9kOiBQcmVwYXJlZFN0YXRlbWVudEtleXMuRElTVElOQ1RfT0YsXG4gICAgICAgICAgYXJnczogW3RoaXMuZGlzdGluY3RTZWxlY3Rvcl0sXG4gICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgfSBhcyBQcmVwYXJlZFN0YXRlbWVudDxNPjtcbiAgICAgIH1cblxuICAgICAgLy8gR3JvdXAgYnkgcXVlcnkgKHNpbXBsZSBzaW5nbGUtbGV2ZWwgZ3JvdXBpbmcpXG4gICAgICBpZiAodGhpcy5ncm91cEJ5U2VsZWN0b3JzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICAgICAgbWV0aG9kOiBQcmVwYXJlZFN0YXRlbWVudEtleXMuR1JPVVBfT0YsXG4gICAgICAgICAgYXJnczogW3RoaXMuZ3JvdXBCeVNlbGVjdG9yc1swXV0sXG4gICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgfSBhcyBQcmVwYXJlZFN0YXRlbWVudDxNPjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDYW4ndCBzcXVhc2ggY29tcGxleCBxdWVyaWVzIHdpdGggc2VsZWN0L2dyb3VwQnkvYWdncmVnYXRpb25zIHRoYXQgaGF2ZSB3aGVyZSBjb25kaXRpb25zXG4gICAgaWYgKHRoaXMuc2VsZWN0U2VsZWN0b3IgJiYgdGhpcy5zZWxlY3RTZWxlY3Rvci5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuZ3JvdXBCeVNlbGVjdG9ycyAmJiB0aGlzLmdyb3VwQnlTZWxlY3RvcnMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgdGhpcy5jb3VudFNlbGVjdG9yICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmNvdW50RGlzdGluY3RTZWxlY3RvcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5tYXhTZWxlY3RvcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5taW5TZWxlY3RvcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5zdW1TZWxlY3RvcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5hdmdTZWxlY3RvcikgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGxldCBhdHRyRnJvbVdoZXJlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMud2hlcmVDb25kaXRpb24pIHtcbiAgICAgIGF0dHJGcm9tV2hlcmUgPSB0aGlzLndoZXJlQ29uZGl0aW9uW1wiYXR0cjFcIl0gYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZGVyOiBPcmRlckJ5U2VsZWN0b3I8TT4gPSB0aGlzLm9yZGVyQnlTZWxlY3RvcnM/LlswXVxuICAgICAgPyB0aGlzLm9yZGVyQnlTZWxlY3RvcnNbMF1cbiAgICAgIDogYXR0ckZyb21XaGVyZVxuICAgICAgICA/IFthdHRyRnJvbVdoZXJlIGFzIGtleW9mIE0sIE9yZGVyRGlyZWN0aW9uLkRTQ11cbiAgICAgICAgOiBbTW9kZWwucGsodGhpcy5mcm9tU2VsZWN0b3IpLCBPcmRlckRpcmVjdGlvbi5EU0NdO1xuXG4gICAgY29uc3QgW2F0dHJGcm9tT3JkZXJCeSwgc29ydF0gPSBvcmRlcjtcblxuICAgIGNvbnN0IHBhcmFtczogRGlyZWN0aW9uTGltaXRPZmZzZXQgPSB7XG4gICAgICBkaXJlY3Rpb246IHNvcnQgYXMgYW55LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5saW1pdFNlbGVjdG9yKSBwYXJhbXMubGltaXQgPSB0aGlzLmxpbWl0U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMub2Zmc2V0U2VsZWN0b3IpIHBhcmFtcy5vZmZzZXQgPSB0aGlzLm9mZnNldFNlbGVjdG9yO1xuXG4gICAgY29uc3Qgc3F1YXNoZWQ6IFByZXBhcmVkU3RhdGVtZW50PE0+ID0ge1xuICAgICAgLy8gbGlzdEJ5XG4gICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICBtZXRob2Q6IFByZXBhcmVkU3RhdGVtZW50S2V5cy5MSVNUX0JZLFxuICAgICAgYXJnczogW2F0dHJGcm9tT3JkZXJCeV0sXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICB9IGFzIFByZXBhcmVkU3RhdGVtZW50PE0+O1xuXG4gICAgaWYgKGF0dHJGcm9tV2hlcmUpIHtcbiAgICAgIC8vIGZpbmRCeVxuICAgICAgc3F1YXNoZWQubWV0aG9kID0gUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkRfQlk7XG4gICAgICBzcXVhc2hlZC5hcmdzID0gW1xuICAgICAgICBhdHRyRnJvbVdoZXJlLFxuICAgICAgICAodGhpcy53aGVyZUNvbmRpdGlvbiBhcyBDb25kaXRpb248TT4pW1wiY29tcGFyaXNvblwiXSBhcyBzdHJpbmcsXG4gICAgICBdO1xuICAgICAgc3F1YXNoZWQucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cblxuICAgIHJldHVybiBzcXVhc2hlZDtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hEZWZhdWx0UXVlcnlDb25kaXRpb24oKTpcbiAgICB8IHtcbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgICAgYXR0cmlidXRlczogc3RyaW5nW107XG4gICAgICB9XG4gICAgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy53aGVyZUNvbmRpdGlvbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuZXh0cmFjdERlZmF1bHRTdGFydHNXaXRoQXR0cmlidXRlcyh0aGlzLndoZXJlQ29uZGl0aW9uKTtcbiAgICBpZiAoIWZvdW5kKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRlZmF1bHRBdHRycyA9IE1vZGVsLmRlZmF1bHRRdWVyeUF0dHJpYnV0ZXModGhpcy5mcm9tU2VsZWN0b3IpO1xuICAgIGlmICghZGVmYXVsdEF0dHJzIHx8ICFkZWZhdWx0QXR0cnMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREZWZhdWx0ID0gQXJyYXkuZnJvbShuZXcgU2V0KGRlZmF1bHRBdHRycy5tYXAoU3RyaW5nKSkpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRGb3VuZCA9IEFycmF5LmZyb20obmV3IFNldChmb3VuZC5hdHRyaWJ1dGVzLm1hcChTdHJpbmcpKSk7XG4gICAgaWYgKG5vcm1hbGl6ZWREZWZhdWx0Lmxlbmd0aCAhPT0gbm9ybWFsaXplZEZvdW5kLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAobm9ybWFsaXplZERlZmF1bHQuZXZlcnkoKGF0dHIpID0+IG5vcm1hbGl6ZWRGb3VuZC5pbmNsdWRlcyhhdHRyKSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBmb3VuZC52YWx1ZSxcbiAgICAgICAgYXR0cmlidXRlczogbm9ybWFsaXplZERlZmF1bHQsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RGVmYXVsdFN0YXJ0c1dpdGhBdHRyaWJ1dGVzKFxuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uPE0+XG4gICk6IHsgYXR0cmlidXRlczogc3RyaW5nW107IHZhbHVlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29sbGVjdGVkID0gdGhpcy5jb2xsZWN0U3RhcnRzV2l0aEF0dHJpYnV0ZXMoY29uZGl0aW9uKTtcbiAgICBpZiAoIWNvbGxlY3RlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgYXR0cmlidXRlczogQXJyYXkuZnJvbShuZXcgU2V0KGNvbGxlY3RlZC5hdHRyaWJ1dGVzKSksXG4gICAgICB2YWx1ZTogY29sbGVjdGVkLnZhbHVlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3RTdGFydHNXaXRoQXR0cmlidXRlcyhcbiAgICBjb25kaXRpb246IENvbmRpdGlvbjxNPiB8IHVuZGVmaW5lZFxuICApOiB7IGF0dHJpYnV0ZXM6IHN0cmluZ1tdOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghY29uZGl0aW9uKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHsgYXR0cjEsIG9wZXJhdG9yLCBjb21wYXJpc29uIH0gPSBjb25kaXRpb24gYXMgdW5rbm93biBhcyB7XG4gICAgICBhdHRyMTogc3RyaW5nIHwgQ29uZGl0aW9uPE0+O1xuICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yIHwgR3JvdXBPcGVyYXRvcjtcbiAgICAgIGNvbXBhcmlzb246IGFueTtcbiAgICB9O1xuICAgIGlmIChvcGVyYXRvciA9PT0gT3BlcmF0b3IuU1RBUlRTX1dJVEgpIHtcbiAgICAgIGlmICh0eXBlb2YgYXR0cjEgIT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhdHRyaWJ1dGVzOiBbYXR0cjFdLFxuICAgICAgICB2YWx1ZTogY29tcGFyaXNvbixcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcGVyYXRvciA9PT0gR3JvdXBPcGVyYXRvci5PUikge1xuICAgICAgY29uc3QgbGVmdCA9XG4gICAgICAgIGF0dHIxIGluc3RhbmNlb2YgQ29uZGl0aW9uXG4gICAgICAgICAgPyB0aGlzLmNvbGxlY3RTdGFydHNXaXRoQXR0cmlidXRlcyhhdHRyMSBhcyBDb25kaXRpb248TT4pXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCByaWdodCA9XG4gICAgICAgIGNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb25cbiAgICAgICAgICA/IHRoaXMuY29sbGVjdFN0YXJ0c1dpdGhBdHRyaWJ1dGVzKGNvbXBhcmlzb24gYXMgQ29uZGl0aW9uPE0+KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC52YWx1ZSA9PT0gcmlnaHQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBbLi4ubGVmdC5hdHRyaWJ1dGVzLCAuLi5yaWdodC5hdHRyaWJ1dGVzXSxcbiAgICAgICAgICB2YWx1ZTogbGVmdC52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChvcGVyYXRvciA9PT0gR3JvdXBPcGVyYXRvci5BTkQpIHtcbiAgICAgIGNvbnN0IGxlZnQgPVxuICAgICAgICBhdHRyMSBpbnN0YW5jZW9mIENvbmRpdGlvblxuICAgICAgICAgID8gdGhpcy5jb2xsZWN0U3RhcnRzV2l0aEF0dHJpYnV0ZXMoYXR0cjEgYXMgQ29uZGl0aW9uPE0+KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGxlZnQpIHJldHVybiBsZWZ0O1xuICAgICAgY29uc3QgcmlnaHQgPVxuICAgICAgICBjb21wYXJpc29uIGluc3RhbmNlb2YgQ29uZGl0aW9uXG4gICAgICAgICAgPyB0aGlzLmNvbGxlY3RTdGFydHNXaXRoQXR0cmlidXRlcyhjb21wYXJpc29uIGFzIENvbmRpdGlvbjxNPilcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3JkZXJEaXJlY3Rpb24oKTogT3JkZXJEaXJlY3Rpb24ge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5vcmRlckJ5U2VsZWN0b3JzPy5bMF0/LlsxXSBhcyBPcmRlckRpcmVjdGlvbikgPz8gT3JkZXJEaXJlY3Rpb24uQVNDXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmUoY3R4PzogQ29udGV4dE9mPEE+KTogUHJvbWlzZTxTdGF0ZW1lbnRFeGVjdXRvcjxNLCBSPj4ge1xuICAgIGN0eCA9XG4gICAgICBjdHggfHxcbiAgICAgIChhd2FpdCB0aGlzLmFkYXB0ZXIuY29udGV4dChcbiAgICAgICAgUGVyc2lzdGVuY2VLZXlzLlFVRVJZLFxuICAgICAgICB0aGlzLm92ZXJyaWRlcyB8fCB7fSxcbiAgICAgICAgdGhpcy5mcm9tU2VsZWN0b3JcbiAgICAgICkpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5pc1NpbXBsZVF1ZXJ5KCkgJiZcbiAgICAgIChjdHggYXMgQ29udGV4dE9mPEE+KS5nZXQoXCJmb3JjZVByZXBhcmVTaW1wbGVRdWVyaWVzXCIpXG4gICAgKSB7XG4gICAgICBjb25zdCBzcXVhc2hlZCA9IHRoaXMuc3F1YXNoKGN0eCBhcyBDb250ZXh0T2Y8QT4pO1xuICAgICAgaWYgKHNxdWFzaGVkKSB7XG4gICAgICAgIHRoaXMucHJlcGFyZWQgPSBzcXVhc2hlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxzbyB0cnkgdG8gc3F1YXNoIGFnZ3JlZ2F0aW9uIHF1ZXJpZXNcbiAgICBpZiAoXG4gICAgICAoY3R4IGFzIENvbnRleHRPZjxBPikuZ2V0KFwiZm9yY2VQcmVwYXJlU2ltcGxlUXVlcmllc1wiKSB8fFxuICAgICAgKGN0eCBhcyBDb250ZXh0T2Y8QT4pLmdldChcImZvcmNlUHJlcGFyZUNvbXBsZXhRdWVyaWVzXCIpXG4gICAgKSB7XG4gICAgICBjb25zdCBzcXVhc2hlZCA9IHRoaXMuc3F1YXNoKGN0eCBhcyBDb250ZXh0T2Y8QT4pO1xuICAgICAgaWYgKHNxdWFzaGVkKSB7XG4gICAgICAgIHRoaXMucHJlcGFyZWQgPSBzcXVhc2hlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYXJnczogKHN0cmluZyB8IG51bWJlcilbXSA9IFtdO1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge30gYXMgYW55O1xuXG4gICAgY29uc3QgcHJlcGFyZWQ6IFByZXBhcmVkU3RhdGVtZW50PGFueT4gPSB7XG4gICAgICBjbGFzczogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICBhcmdzLFxuICAgICAgcGFyYW1zLFxuICAgIH0gYXMgYW55O1xuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBtZXRob2QgcHJlZml4IGJhc2VkIG9uIHRoZSBxdWVyeSB0eXBlXG4gICAgbGV0IG1ldGhvZFByZWZpeDogc3RyaW5nID0gUXVlcnlDbGF1c2UuRklORF9CWTtcbiAgICBsZXQgc2VsZWN0b3JGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvdW50U2VsZWN0b3IgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIG1ldGhvZFByZWZpeCA9IFF1ZXJ5Q2xhdXNlLkNPVU5UX0JZO1xuICAgICAgc2VsZWN0b3JGaWVsZCA9XG4gICAgICAgIHRoaXMuY291bnRTZWxlY3RvciAhPT0gbnVsbFxuICAgICAgICAgID8gKHRoaXMuY291bnRTZWxlY3RvciBhcyBzdHJpbmcpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN1bVNlbGVjdG9yKSB7XG4gICAgICBtZXRob2RQcmVmaXggPSBRdWVyeUNsYXVzZS5TVU1fQlk7XG4gICAgICBzZWxlY3RvckZpZWxkID0gdGhpcy5zdW1TZWxlY3RvciBhcyBzdHJpbmc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmF2Z1NlbGVjdG9yKSB7XG4gICAgICBtZXRob2RQcmVmaXggPSBRdWVyeUNsYXVzZS5BVkdfQlk7XG4gICAgICBzZWxlY3RvckZpZWxkID0gdGhpcy5hdmdTZWxlY3RvciBhcyBzdHJpbmc7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1pblNlbGVjdG9yKSB7XG4gICAgICBtZXRob2RQcmVmaXggPSBRdWVyeUNsYXVzZS5NSU5fQlk7XG4gICAgICBzZWxlY3RvckZpZWxkID0gdGhpcy5taW5TZWxlY3RvciBhcyBzdHJpbmc7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1heFNlbGVjdG9yKSB7XG4gICAgICBtZXRob2RQcmVmaXggPSBRdWVyeUNsYXVzZS5NQVhfQlk7XG4gICAgICBzZWxlY3RvckZpZWxkID0gdGhpcy5tYXhTZWxlY3RvciBhcyBzdHJpbmc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRpc3RpbmN0U2VsZWN0b3IpIHtcbiAgICAgIG1ldGhvZFByZWZpeCA9IFF1ZXJ5Q2xhdXNlLkRJU1RJTkNUX0JZO1xuICAgICAgc2VsZWN0b3JGaWVsZCA9IHRoaXMuZGlzdGluY3RTZWxlY3RvciBhcyBzdHJpbmc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuZ3JvdXBCeVNlbGVjdG9ycz8ubGVuZ3RoICYmXG4gICAgICAhdGhpcy5zZWxlY3RTZWxlY3Rvcj8ubGVuZ3RoICYmXG4gICAgICAhdGhpcy53aGVyZUNvbmRpdGlvblxuICAgICkge1xuICAgICAgLy8gR3JvdXAtb25seSBxdWVyeSAobm8gc2VsZWN0LCBubyB3aGVyZSlcbiAgICAgIG1ldGhvZFByZWZpeCA9IFF1ZXJ5Q2xhdXNlLkdST1VQX0JZX1BSRUZJWDtcbiAgICAgIHNlbGVjdG9yRmllbGQgPSB0aGlzLmdyb3VwQnlTZWxlY3RvcnNbMF0gYXMgc3RyaW5nO1xuICAgIH1cbiAgICAvLyBJZiB0aGVyZSdzIGEgd2hlcmUgY29uZGl0aW9uIG9yIHNlbGVjdFNlbGVjdG9yLCB1c2UgZmluZEJ5IHByZWZpeCBldmVuIHdpdGggZ3JvdXBCeVxuXG4gICAgY29uc3QgbWV0aG9kOiBzdHJpbmdbXSA9IFttZXRob2RQcmVmaXhdO1xuICAgIGlmIChzZWxlY3RvckZpZWxkKSB7XG4gICAgICBtZXRob2QucHVzaChzZWxlY3RvckZpZWxkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aGVyZUNvbmRpdGlvbikge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wcmVwYXJlQ29uZGl0aW9uKFxuICAgICAgICB0aGlzLndoZXJlQ29uZGl0aW9uLFxuICAgICAgICBjdHggYXMgQ29udGV4dE9mPEE+XG4gICAgICApO1xuICAgICAgbWV0aG9kLnB1c2gocGFyc2VkLm1ldGhvZCk7XG4gICAgICBpZiAocGFyc2VkLmFyZ3MgJiYgcGFyc2VkLmFyZ3MubGVuZ3RoKVxuICAgICAgICBhcmdzLnB1c2goLi4uKHBhcnNlZC5hcmdzIGFzIChzdHJpbmcgfCBudW1iZXIpW10pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0U2VsZWN0b3IpXG4gICAgICBtZXRob2QucHVzaChcbiAgICAgICAgUXVlcnlDbGF1c2UuU0VMRUNULFxuICAgICAgICB0aGlzLnNlbGVjdFNlbGVjdG9yLmpvaW4oYCAke1F1ZXJ5Q2xhdXNlLkFORC50b0xvd2VyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICBpZiAodGhpcy5vcmRlckJ5U2VsZWN0b3JzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IFtwcmltYXJ5LCAuLi5zZWNvbmRhcnldID0gdGhpcy5vcmRlckJ5U2VsZWN0b3JzO1xuICAgICAgbWV0aG9kLnB1c2goUXVlcnlDbGF1c2UuT1JERVJfQlksIHByaW1hcnlbMF0gYXMgc3RyaW5nKTtcbiAgICAgIHBhcmFtcy5kaXJlY3Rpb24gPSBwcmltYXJ5WzFdO1xuICAgICAgaWYgKHNlY29uZGFyeS5sZW5ndGgpIHtcbiAgICAgICAgcGFyYW1zLm9yZGVyID0gdGhpcy5vcmRlckJ5U2VsZWN0b3JzLm1hcCgoW2F0dHIsIGRpcl0pID0+IFthdHRyLCBkaXJdKTtcbiAgICAgICAgc2Vjb25kYXJ5LmZvckVhY2goKFthdHRyXSkgPT4ge1xuICAgICAgICAgIG1ldGhvZC5wdXNoKFF1ZXJ5Q2xhdXNlLlRIRU5fQlksIGF0dHIgYXMgc3RyaW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhhbmRsZSBncm91cEJ5IGZvciBub24tYWdncmVnYXRpb24gcXVlcmllcyAoYWxyZWFkeSBoYW5kbGVkIGZvciBncm91cCBwcmVmaXgpXG4gICAgaWYgKFxuICAgICAgdGhpcy5ncm91cEJ5U2VsZWN0b3JzPy5sZW5ndGggJiZcbiAgICAgIG1ldGhvZFByZWZpeCAhPT0gUXVlcnlDbGF1c2UuR1JPVVBfQllfUFJFRklYXG4gICAgKSB7XG4gICAgICBjb25zdCBbcHJpbWFyeSwgLi4ucmVzdF0gPSB0aGlzLmdyb3VwQnlTZWxlY3RvcnM7XG4gICAgICBtZXRob2QucHVzaChRdWVyeUNsYXVzZS5HUk9VUF9CWSwgcHJpbWFyeSBhcyBzdHJpbmcpO1xuICAgICAgcmVzdC5mb3JFYWNoKChhdHRyKSA9PiBtZXRob2QucHVzaChRdWVyeUNsYXVzZS5USEVOX0JZLCBhdHRyIGFzIHN0cmluZykpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmdyb3VwQnlTZWxlY3RvcnM/Lmxlbmd0aCAmJlxuICAgICAgbWV0aG9kUHJlZml4ID09PSBRdWVyeUNsYXVzZS5HUk9VUF9CWV9QUkVGSVhcbiAgICApIHtcbiAgICAgIC8vIEZvciBncm91cCBwcmVmaXgsIGFkZCBhZGRpdGlvbmFsIGdyb3VwIGZpZWxkcyBhcyBUaGVuQnlcbiAgICAgIGNvbnN0IHJlc3QgPSB0aGlzLmdyb3VwQnlTZWxlY3RvcnMuc2xpY2UoMSk7XG4gICAgICByZXN0LmZvckVhY2goKGF0dHIpID0+IG1ldGhvZC5wdXNoKFF1ZXJ5Q2xhdXNlLlRIRU5fQlksIGF0dHIgYXMgc3RyaW5nKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpbWl0U2VsZWN0b3IpIHBhcmFtcy5saW1pdCA9IHRoaXMubGltaXRTZWxlY3RvcjtcbiAgICBpZiAodGhpcy5vZmZzZXRTZWxlY3Rvcikge1xuICAgICAgcGFyYW1zLnNraXAgPSB0aGlzLm9mZnNldFNlbGVjdG9yO1xuICAgIH1cbiAgICBwcmVwYXJlZC5tZXRob2QgPSB0b0NhbWVsQ2FzZShtZXRob2Quam9pbihcIiBcIikpO1xuICAgIHByZXBhcmVkLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLnByZXBhcmVkID0gcHJlcGFyZWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNTaW1wbGVRdWVyeSgpIHtcbiAgICByZXR1cm4gIShcbiAgICAgICh0aGlzLnNlbGVjdFNlbGVjdG9yICYmIHRoaXMuc2VsZWN0U2VsZWN0b3IubGVuZ3RoKSB8fFxuICAgICAgKHRoaXMuZ3JvdXBCeVNlbGVjdG9ycyAmJiB0aGlzLmdyb3VwQnlTZWxlY3RvcnMubGVuZ3RoKSB8fFxuICAgICAgdHlwZW9mIHRoaXMuY291bnRTZWxlY3RvciAhPT0gXCJ1bmRlZmluZWRcIiB8fFxuICAgICAgdGhpcy5jb3VudERpc3RpbmN0U2VsZWN0b3IgfHxcbiAgICAgIHRoaXMubWF4U2VsZWN0b3IgfHxcbiAgICAgIHRoaXMubWluU2VsZWN0b3IgfHxcbiAgICAgIHRoaXMuc3VtU2VsZWN0b3IgfHxcbiAgICAgIHRoaXMuYXZnU2VsZWN0b3IgfHxcbiAgICAgIHRoaXMuZGlzdGluY3RTZWxlY3RvclxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFzQWdncmVnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB0aGlzLmNvdW50U2VsZWN0b3IgIT09IFwidW5kZWZpbmVkXCIgfHxcbiAgICAgIHR5cGVvZiB0aGlzLmNvdW50RGlzdGluY3RTZWxlY3RvciAhPT0gXCJ1bmRlZmluZWRcIiB8fFxuICAgICAgdHlwZW9mIHRoaXMubWF4U2VsZWN0b3IgIT09IFwidW5kZWZpbmVkXCIgfHxcbiAgICAgIHR5cGVvZiB0aGlzLm1pblNlbGVjdG9yICE9PSBcInVuZGVmaW5lZFwiIHx8XG4gICAgICB0eXBlb2YgdGhpcy5zdW1TZWxlY3RvciAhPT0gXCJ1bmRlZmluZWRcIiB8fFxuICAgICAgdHlwZW9mIHRoaXMuYXZnU2VsZWN0b3IgIT09IFwidW5kZWZpbmVkXCIgfHxcbiAgICAgIHR5cGVvZiB0aGlzLmRpc3RpbmN0U2VsZWN0b3IgIT09IFwidW5kZWZpbmVkXCIgfHxcbiAgICAgICh0aGlzLmdyb3VwQnlTZWxlY3RvcnM/Lmxlbmd0aCB8fCAwKSA+IDBcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkKCk6IFE7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbjxNPiwgLi4uYXJnczogYW55W10pOiBRO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHBhZ2luYXRvciBmb3IgdGhlIHF1ZXJ5XG4gICAqIEBzdW1tYXJ5IEJ1aWxkcyB0aGUgcXVlcnkgYW5kIHdyYXBzIGl0IGluIGEgUmFtUGFnaW5hdG9yIHRvIGVuYWJsZSBwYWdpbmF0aW9uIG9mIHJlc3VsdHMuXG4gICAqIFRoaXMgYWxsb3dzIHJldHJpZXZpbmcgbGFyZ2UgcmVzdWx0IHNldHMgaW4gc21hbGxlciBjaHVua3MuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIC0gVGhlIHBhZ2Ugc2l6ZSAobnVtYmVyIG9mIHJlc3VsdHMgcGVyIHBhZ2UpXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UGFnaW5hdG9yPE0sIFIsIFJhd1JhbVF1ZXJ5PE0+Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgcGFnaW5hdG9yIGZvciB0aGUgcXVlcnlcbiAgICovXG4gIGFzeW5jIHBhZ2luYXRlKFxuICAgIHNpemU6IG51bWJlcixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPFBhZ2luYXRvcjxNLCBSLCBRPj4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCBjdHggPSBhcmdzLnBvcCgpIGFzIENvbnRleHRPZjxBPjsgLy8gaGFuZGxlZCBieSBwcmVmaXguIGtlcHQgZm9yIGV4YW1wbGUgZm9yIG92ZXJyaWRlc1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLlBhZ2luYXRvcihcbiAgICAgICAgdGhpcy5wcmVwYXJlZCB8fCB0aGlzLmJ1aWxkKCksXG4gICAgICAgIHNpemUsXG4gICAgICAgIHRoaXMuZnJvbVNlbGVjdG9yXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYWRhcHRlci5mbGF2b3VyfSBzdGF0ZW1lbnRgO1xuICB9XG59XG4iXX0=
@@ -74,4 +74,4 @@ var PreparedStatementKeys;
74
74
  PreparedStatementKeys["DISTINCT_OF"] = "distinctOf";
75
75
  PreparedStatementKeys["GROUP_OF"] = "groupOf";
76
76
  })(PreparedStatementKeys || (exports.PreparedStatementKeys = PreparedStatementKeys = {}));
77
- //# sourceMappingURL=constants.js.map
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBc0M7QUFFdEM7Ozs7OztHQU1HO0FBQ0gsSUFBWSxRQWlDWDtBQWpDRCxXQUFZLFFBQVE7SUFDbEIsMkJBQTJCO0lBQzNCLDJCQUFlLENBQUE7SUFDZixnQ0FBZ0M7SUFDaEMsbUNBQXVCLENBQUE7SUFDdkIsa0NBQWtDO0lBQ2xDLDZCQUFpQixDQUFBO0lBQ2pCLDRDQUE0QztJQUM1QyxtQ0FBdUIsQ0FBQTtJQUN2QiwrQkFBK0I7SUFDL0IsK0JBQW1CLENBQUE7SUFDbkIseUNBQXlDO0lBQ3pDLHFDQUF5QixDQUFBO0lBQ3pCLG1DQUFtQztJQUNuQywrQkFBbUIsQ0FBQTtJQUNuQiw4QkFBOEI7SUFDOUIsdUJBQVcsQ0FBQTtJQUNYLDhCQUE4QjtJQUM5QixxQkFBUyxDQUFBO0lBQ1QsYUFBYTtJQUNiLGtDQUFrQztJQUNsQyw2QkFBaUIsQ0FBQTtJQUNqQixvQ0FBb0M7SUFDcEMsdUNBQTJCLENBQUE7SUFDM0Isa0NBQWtDO0lBQ2xDLG1DQUF1QixDQUFBO0lBQ3ZCLGlDQUFxQixDQUFBO0lBQ3JCLDJCQUFlLENBQUE7SUFDZix1QkFBVyxDQUFBO0lBQ1gseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYixpQ0FBcUIsQ0FBQTtJQUNyQix5QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQWpDVyxRQUFRLHdCQUFSLFFBQVEsUUFpQ25CO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLHlEQUF5RDtJQUN6RCw0QkFBVyxDQUFBO0lBQ1gsZ0VBQWdFO0lBQ2hFLDBCQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsYUFBYSw2QkFBYixhQUFhLFFBS3hCO0FBRUQsSUFBWSxxQkFjWDtBQWRELFdBQVkscUJBQXFCO0lBQy9CLDJDQUFrQixDQUFBO0lBQ2xCLDJDQUE2QixDQUFBO0lBQzdCLGtEQUF5QixDQUFBO0lBQ3pCLCtDQUFzQixDQUFBO0lBQ3RCLHNDQUFhLENBQUE7SUFDYixzQ0FBYSxDQUFBO0lBQ2IsNkNBQW9CLENBQUE7SUFDcEIseUNBQWdCLENBQUE7SUFDaEIseUNBQWdCLENBQUE7SUFDaEIseUNBQWdCLENBQUE7SUFDaEIseUNBQWdCLENBQUE7SUFDaEIsbURBQTBCLENBQUE7SUFDMUIsNkNBQW9CLENBQUE7QUFDdEIsQ0FBQyxFQWRXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBY2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlDbGF1c2UgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgcXVlcnkgY29uZGl0aW9uc1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgYXZhaWxhYmxlIG9wZXJhdG9ycyBmb3IgY29tcGFyaW5nIHZhbHVlcyBpbiBkYXRhYmFzZSBxdWVyaWVzXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuICAvKiogRXF1YWwgY29tcGFyaXNvbiAoPSkgKi9cbiAgRVFVQUwgPSBcIkVRVUFMXCIsXG4gIC8qKiBOb3QgZXF1YWwgY29tcGFyaXNvbiAoIT0pICovXG4gIERJRkZFUkVOVCA9IFwiRElGRkVSRU5UXCIsXG4gIC8qKiBHcmVhdGVyIHRoYW4gY29tcGFyaXNvbiAoPikgKi9cbiAgQklHR0VSID0gXCJCSUdHRVJcIixcbiAgLyoqIEdyZWF0ZXIgdGhhbiBvciBlcXVhbCBjb21wYXJpc29uICg+PSkgKi9cbiAgQklHR0VSX0VRID0gXCJCSUdHRVJfRVFcIixcbiAgLyoqIExlc3MgdGhhbiBjb21wYXJpc29uICg8KSAqL1xuICBTTUFMTEVSID0gXCJTTUFMTEVSXCIsXG4gIC8qKiBMZXNzIHRoYW4gb3IgZXF1YWwgY29tcGFyaXNvbiAoPD0pICovXG4gIFNNQUxMRVJfRVEgPSBcIlNNQUxMRVJfRVFcIixcbiAgLyoqIEJldHdlZW4gY29tcGFyaXNvbiAoQkVUV0VFTikgKi9cbiAgQkVUV0VFTiA9IFwiQkVUV0VFTlwiLFxuICAvKiogTmVnYXRpb24gb3BlcmF0b3IgKE5PVCkgKi9cbiAgTk9UID0gXCJOT1RcIixcbiAgLyoqIEluY2x1c2lvbiBvcGVyYXRvciAoSU4pICovXG4gIElOID0gXCJJTlwiLFxuICAvLyBJUyA9IFwiSVNcIixcbiAgLyoqIFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyAqL1xuICBSRUdFWFAgPSBcIlJFR0VYUFwiLFxuICAvKiogU3RyaW5nIHN0YXJ0cy13aXRoIGNvbXBhcmlzb24gKi9cbiAgU1RBUlRTX1dJVEggPSBcIlNUQVJUU19XSVRIXCIsXG4gIC8qKiBTdHJpbmcgZW5kcy13aXRoIGNvbXBhcmlzb24gKi9cbiAgRU5EU19XSVRIID0gXCJFTkRTX1dJVEhcIixcbiAgR1JPVVBfQlkgPSBcImdyb3VwLWJ5XCIsXG4gIENPVU5UID0gXCJjb3VudFwiLFxuICBTVU0gPSBcInN1bVwiLFxuICBNQVggPSBcInZfbWF4XCIsXG4gIE1JTiA9IFwidl9taW5cIixcbiAgRElTVElOQ1QgPSBcImRpc3RpbmN0XCIsXG4gIFZJRVcgPSBcInZpZXdcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9naWNhbCBvcGVyYXRvcnMgZm9yIGNvbWJpbmluZyBxdWVyeSBjb25kaXRpb25zXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSBhdmFpbGFibGUgb3BlcmF0b3JzIGZvciBncm91cGluZyBtdWx0aXBsZSBjb25kaXRpb25zIGluIGRhdGFiYXNlIHF1ZXJpZXNcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgZW51bSBHcm91cE9wZXJhdG9yIHtcbiAgLyoqIExvZ2ljYWwgQU5EIG9wZXJhdG9yIC0gYWxsIGNvbmRpdGlvbnMgbXVzdCBiZSB0cnVlICovXG4gIEFORCA9IFwiQU5EXCIsXG4gIC8qKiBMb2dpY2FsIE9SIG9wZXJhdG9yIC0gYXQgbGVhc3Qgb25lIGNvbmRpdGlvbiBtdXN0IGJlIHRydWUgKi9cbiAgT1IgPSBcIk9SXCIsXG59XG5cbmV4cG9ydCBlbnVtIFByZXBhcmVkU3RhdGVtZW50S2V5cyB7XG4gIExJU1RfQlkgPSBcImxpc3RCeVwiLFxuICBGSU5EX0JZID0gUXVlcnlDbGF1c2UuRklORF9CWSxcbiAgRklORF9PTkVfQlkgPSBcImZpbmRPbmVCeVwiLFxuICBQQUdFX0JZID0gXCJwYWdpbmF0ZUJ5XCIsXG4gIEZJTkQgPSBcImZpbmRcIixcbiAgUEFHRSA9IFwicGFnZVwiLFxuICBDT1VOVF9PRiA9IFwiY291bnRPZlwiLFxuICBNQVhfT0YgPSBcIm1heE9mXCIsXG4gIE1JTl9PRiA9IFwibWluT2ZcIixcbiAgQVZHX09GID0gXCJhdmdPZlwiLFxuICBTVU1fT0YgPSBcInN1bU9mXCIsXG4gIERJU1RJTkNUX09GID0gXCJkaXN0aW5jdE9mXCIsXG4gIEdST1VQX09GID0gXCJncm91cE9mXCIsXG59XG4iXX0=
@@ -182,4 +182,4 @@ function view(opts) {
182
182
  })
183
183
  .apply();
184
184
  }
185
- //# sourceMappingURL=decorators.js.map
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyeS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsNENBT0M7QUFFRCw0QkFjQztBQUVELHNCQTJKQztBQWFELGdEQWVDO0FBRUQsb0JBU0M7QUF6T0QsaUVBQTBEO0FBQzFELHlDQUFzQztBQUN0QyxxREFNOEI7QUFDOUIsOERBQTJEO0FBRTNELCtDQUF1QztBQUd2QyxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyxTQUFTLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFVO1FBQ3RELE1BQU0sR0FBRyxHQUFHLHFCQUFRLENBQUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RCxJQUFJLElBQUksR0FBRyxxQkFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBa0IsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUEsa0JBQUssRUFBQyxJQUFBLHlCQUFZLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixRQUFRO0lBQ3RCLFNBQVMsUUFBUTtRQUNmLE9BQU8sU0FBUyxRQUFRLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxVQUFnQjtZQUNoRSxPQUFPLElBQUEsa0JBQUssRUFDVixJQUFBLDJCQUFjLEVBQUMscUJBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ3BFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFV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RUFBRSxJQUFJLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBYyxDQUFDLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUcscUJBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBaUI7WUFDMUIsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJO1lBQ0osU0FBUyxFQUFFLElBQWM7U0FDMUIsQ0FBQztRQUNGLE9BQU8sSUFBQSx5QkFBWSxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLElBQUksQ0FBMkIsSUFBVztJQUN4RCxPQUFPLHVCQUFVLENBQUMsR0FBRyxDQUFDLG9CQUFRLENBQUMsSUFBSSxDQUFDO1NBQ2pDLE1BQU0sQ0FBQztRQUNOLFNBQVMsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFlO1lBQ3RDLE9BQU8sa0JBQWtCLENBQUMsb0JBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0FDYixDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlPcHRpb25zLCBWaWV3S2luZCwgVmlld01ldGFkYXRhLCBWaWV3T3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBNZXRob2RRdWVyeUJ1aWxkZXIgfSBmcm9tIFwiLi9NZXRob2RRdWVyeUJ1aWxkZXJcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7XG4gIGFwcGx5LFxuICBEZWNvcmF0aW9uLFxuICBNZXRhZGF0YSxcbiAgbWV0aG9kTWV0YWRhdGEsXG4gIHByb3BNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IFJlcG8gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9uTGltaXRPZmZzZXQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFF1ZXJ5QXR0cigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlZmF1bHRRdWVyeUF0dHIob2JqOiBvYmplY3QsIHByb3A/OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBNZXRhZGF0YS5rZXkoUGVyc2lzdGVuY2VLZXlzLkRFRkFVTFRfUVVFUllfQVRUUik7XG4gICAgbGV0IG1ldGEgPSBNZXRhZGF0YS5nZXQob2JqLmNvbnN0cnVjdG9yIGFzIGFueSwga2V5KSB8fCBbXTtcbiAgICBtZXRhID0gWy4uLm5ldyBTZXQoWy4uLm1ldGEsIHByb3BdKV07XG4gICAgcmV0dXJuIGFwcGx5KHByb3BNZXRhZGF0YShrZXksIG1ldGEpKShvYmosIHByb3ApO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZWQoKSB7XG4gIGZ1bmN0aW9uIHByZXBhcmVkKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBwcmVwYXJlZChvYmo6IG9iamVjdCwgcHJvcD86IGFueSwgZGVzY3JpcHRvcj86IGFueSkge1xuICAgICAgcmV0dXJuIGFwcGx5KFxuICAgICAgICBtZXRob2RNZXRhZGF0YShNZXRhZGF0YS5rZXkoUGVyc2lzdGVuY2VLZXlzLlNUQVRFTUVOVCwgcHJvcCksIHRydWUpXG4gICAgICApKG9iaiwgcHJvcCwgZGVzY3JpcHRvcik7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gRGVjb3JhdGlvbi5mb3IoUGVyc2lzdGVuY2VLZXlzLlNUQVRFTUVOVClcbiAgICAuZGVmaW5lKHtcbiAgICAgIGRlY29yYXRvcjogcHJlcGFyZWQsXG4gICAgICBhcmdzOiBbXSxcbiAgICB9KVxuICAgIC5hcHBseSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnkob3B0aW9uczogUXVlcnlPcHRpb25zID0ge30pIHtcbiAgZnVuY3Rpb24gcXVlcnkob3B0aW9uczogUXVlcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXJ5KG9iajogb2JqZWN0LCBwcm9wPzogYW55LCBkZXNjcmlwdG9yPzogYW55KSB7XG4gICAgICBmdW5jdGlvbiBpbm5lclF1ZXJ5KG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gaW5uZXJRdWVyeShcbiAgICAgICAgICBvYmo6IGFueSxcbiAgICAgICAgICBwcm9wZXJ0eUtleT86IGFueSxcbiAgICAgICAgICBkZXNjcmlwdG9yPzogYW55XG4gICAgICAgICkge1xuICAgICAgICAgIChkZXNjcmlwdG9yIGFzIFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT4pLnZhbHVlID0gbmV3IFByb3h5KFxuICAgICAgICAgICAgKGRlc2NyaXB0b3IgYXMgVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55PikudmFsdWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFwcGx5KHRhcmdldDogYW55LCB0aGlzQXJnOiBhbnksIGFyZ3M6IGFueVtdKTogYW55IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgIHdoZXJlLFxuICAgICAgICAgICAgICAgICAgZ3JvdXBCeSxcbiAgICAgICAgICAgICAgICAgIG9yZGVyQnksXG4gICAgICAgICAgICAgICAgICBsaW1pdCxcbiAgICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICB9ID0gTWV0aG9kUXVlcnlCdWlsZGVyLmJ1aWxkKHRhcmdldC5uYW1lLCAuLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcG8gPSB0aGlzQXJnIGFzIFJlcG88YW55PjtcblxuICAgICAgICAgICAgICAgIC8vIEJ1aWxkIHN0YXRlbWVudCBiYXNlZCBvbiBhY3Rpb24gdHlwZVxuICAgICAgICAgICAgICAgIGxldCBzdG10OiBhbnk7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmaW5kXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwicGFnZVwiOlxuICAgICAgICAgICAgICAgICAgICBzdG10ID0gcmVwby5zZWxlY3Qoc2VsZWN0IGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNvdW50XCI6XG4gICAgICAgICAgICAgICAgICAgIHN0bXQgPSByZXBvLmNvdW50KHNlbGVjdG9yIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInN1bVwiOlxuICAgICAgICAgICAgICAgICAgICBzdG10ID0gcmVwby5zdW0oc2VsZWN0b3IgYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiYXZnXCI6XG4gICAgICAgICAgICAgICAgICAgIHN0bXQgPSByZXBvLmF2ZyhzZWxlY3RvciBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5cIjpcbiAgICAgICAgICAgICAgICAgICAgc3RtdCA9IHJlcG8ubWluKHNlbGVjdG9yIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgICAgICAgICAgICBzdG10ID0gcmVwby5tYXgoc2VsZWN0b3IgYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGlzdGluY3RcIjpcbiAgICAgICAgICAgICAgICAgICAgc3RtdCA9IHJlcG8uZGlzdGluY3Qoc2VsZWN0b3IgYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZ3JvdXBcIjpcbiAgICAgICAgICAgICAgICAgICAgc3RtdCA9IHJlcG8uc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICAgIHN0bXQgPSBzdG10Lmdyb3VwQnkoc2VsZWN0b3IgYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBVbnN1cHBvcnRlZCBhY3Rpb246ICR7YWN0aW9ufWApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh3aGVyZSkgc3RtdCA9IHN0bXQud2hlcmUod2hlcmUpIGFzIGFueTtcblxuICAgICAgICAgICAgICAgIC8vIEFwcGx5IGdyb3VwQnkgZm9yIG5vbi1ncm91cCBhY3Rpb25zIChncm91cEJ5IGZyb20gbWV0aG9kIG5hbWUgcGF0dGVybilcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXBCeSAmJiBncm91cEJ5Lmxlbmd0aCA+IDAgJiYgYWN0aW9uICE9PSBcImdyb3VwXCIpIHtcbiAgICAgICAgICAgICAgICAgIHN0bXQgPSBzdG10Lmdyb3VwQnkoZ3JvdXBCeVswXSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBncm91cEJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0bXQgPSBzdG10LnRoZW5CeShncm91cEJ5W2ldIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIGdyb3VwQnkgJiZcbiAgICAgICAgICAgICAgICAgIGdyb3VwQnkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgYWN0aW9uID09PSBcImdyb3VwXCJcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIC8vIEZvciBncm91cCBhY3Rpb24sIGFwcGx5IGFkZGl0aW9uYWwgZ3JvdXBCeSBmaWVsZHMgYWZ0ZXIgdGhlIHNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGdyb3VwQnkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RtdCA9IHN0bXQudGhlbkJ5KGZpZWxkIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYWxsb3cgbGltaXQgYW5kIG9mZnNldCBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhbGxvd0xpbWl0LCBhbGxvd09mZnNldCwgYWxsb3dPcmRlckJ5LCB0aHJvd3MgfSA9IHtcbiAgICAgICAgICAgICAgICAgIGFsbG93TGltaXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICBhbGxvd09yZGVyQnk6IHRydWUsXG4gICAgICAgICAgICAgICAgICBhbGxvd09mZnNldDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHRocm93czogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgfSBhcyBRdWVyeU9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBbXG4gICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZSBvcmRlciB0byBlbnN1cmUgdGhlIGV4cGVjdGVkIGJlaGF2aW9yXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJvcmRlckJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAob3JkZXJCeSB8fCBbXSlbMF0sIC8vIG9yZGVyQnkgb25seSBzdXBwb3J0cyBvbmUgc2VudGVuY2VcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dlZDogYWxsb3dPcmRlckJ5LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHsga2V5OiBcImxpbWl0XCIsIHZhbHVlOiBsaW1pdCwgYWxsb3dlZDogYWxsb3dMaW1pdCB9LFxuICAgICAgICAgICAgICAgICAgeyBrZXk6IFwib2Zmc2V0XCIsIHZhbHVlOiBvZmZzZXQsIGFsbG93ZWQ6IGFsbG93T2Zmc2V0IH0sXG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgcGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICBpZiAocGFyYW0udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtLmFsbG93ZWQgJiYgdGhyb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtwYXJhbS5rZXlbMF0udG9VcHBlckNhc2UoKSArIHBhcmFtLmtleS5zbGljZSgxKX0gaXMgbm90IGFsbG93ZWQgZm9yIHRoaXMgcXVlcnlgXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5hbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RtdCA9IChzdG10IGFzIGFueSlbcGFyYW0ua2V5XShwYXJhbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBGb3IgcGFnZSBhY3Rpb24sIGNhbGwgcGFnaW5hdGUgaW5zdGVhZCBvZiBleGVjdXRlXG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gXCJwYWdlXCIpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGZyb20gYXJnc1xuICAgICAgICAgICAgICAgICAgLy8gVGhlIGxhc3QgYXJndW1lbnQgc2hvdWxkIGJlIERpcmVjdGlvbkxpbWl0T2Zmc2V0IG9yIHBhZ2Ugc2l6ZVxuICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEFyZyA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VTaXplID1cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGxhc3RBcmcgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA/IGxhc3RBcmdcbiAgICAgICAgICAgICAgICAgICAgICA6ICgobGFzdEFyZyBhcyBEaXJlY3Rpb25MaW1pdE9mZnNldCk/LmxpbWl0ID8/IDEwKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBzdG10LnBhZ2luYXRlKHBhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RtdC5leGVjdXRlKCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmllbGRzID0gTWV0aG9kUXVlcnlCdWlsZGVyLmdldEZpZWxkc0Zyb21NZXRob2ROYW1lKHByb3ApO1xuICAgICAgLy8gY29uc3QgcGFyYW1OYW1lcyA9IGRlc2NyaXB0b3IudmFsdWVcbiAgICAgIC8vICAgLnRvU3RyaW5nKClcbiAgICAgIC8vICAgLm1hdGNoKC9cXCgoW14pXSopXFwpLyk/LlsxXVxuICAgICAgLy8gICAuc3BsaXQoXCIsXCIpXG4gICAgICAvLyAgIC5tYXAoKHgpID0+IHgudHJpbSgpKVxuICAgICAgLy8gICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgcmV0dXJuIGFwcGx5KFxuICAgICAgICBtZXRob2RNZXRhZGF0YShNZXRhZGF0YS5rZXkoUGVyc2lzdGVuY2VLZXlzLlFVRVJZLCBwcm9wKSwge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICB9KSxcbiAgICAgICAgcHJlcGFyZWQoKSxcbiAgICAgICAgaW5uZXJRdWVyeShvcHRpb25zKVxuICAgICAgKShvYmosIHByb3AsIGRlc2NyaXB0b3IpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gRGVjb3JhdGlvbi5mb3IoUGVyc2lzdGVuY2VLZXlzLlFVRVJZKVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiBxdWVyeSxcbiAgICAgIGFyZ3M6IFtvcHRpb25zXSxcbiAgICB9KVxuICAgIC5hcHBseSgpO1xufVxuXG5mdW5jdGlvbiBuZXh0Vmlld1Nsb3QoXG4gIHRhcmdldDogYW55LFxuICBrZXk6IFBlcnNpc3RlbmNlS2V5cyB8IE9wZXJhdG9yLFxuICBhdHRyOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IGV4aXN0aW5nID0gTWV0YWRhdGEuZ2V0KHRhcmdldC5jb25zdHJ1Y3Rvciwga2V5KSB8fCB7fTtcbiAgY29uc3QgYXR0ckJ1Y2tldCA9IGV4aXN0aW5nW2F0dHJdIHx8IHt9O1xuICBjb25zdCBuZXh0ID0gT2JqZWN0LmtleXMoYXR0ckJ1Y2tldCkubGVuZ3RoICsgMTtcbiAgcmV0dXJuIFN0cmluZyhuZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Vmlld0RlY29yYXRvcihcbiAgbWV0YUtleTogUGVyc2lzdGVuY2VLZXlzIHwgT3BlcmF0b3IsXG4gIGtpbmQ6IFZpZXdLaW5kLFxuICBvcHRzPzogVmlld09wdGlvbnNcbikge1xuICByZXR1cm4gZnVuY3Rpb24gZGVjb3JhdG9yKHRhcmdldDogYW55LCBhdHRyOiBhbnkpIHtcbiAgICBjb25zdCBzbG90ID0gb3B0cz8ubmFtZSB8fCBuZXh0Vmlld1Nsb3QodGFyZ2V0LCBtZXRhS2V5LCBhdHRyIGFzIHN0cmluZyk7XG4gICAgY29uc3Qga2V5ID0gTWV0YWRhdGEua2V5KG1ldGFLZXksIGF0dHIgYXMgc3RyaW5nLCBzbG90KTtcbiAgICBjb25zdCB2YWx1ZTogVmlld01ldGFkYXRhID0ge1xuICAgICAgLi4uKG9wdHMgfHwge30pLFxuICAgICAga2luZCxcbiAgICAgIGF0dHJpYnV0ZTogYXR0ciBhcyBzdHJpbmcsXG4gICAgfTtcbiAgICByZXR1cm4gcHJvcE1ldGFkYXRhKGtleSwgdmFsdWUpKHRhcmdldCwgYXR0cik7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aWV3PE9QVFMgZXh0ZW5kcyBWaWV3T3B0aW9ucz4ob3B0cz86IE9QVFMpIHtcbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKE9wZXJhdG9yLlZJRVcpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIHZpZXcobz86IFZpZXdPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBhcHBseVZpZXdEZWNvcmF0b3IoT3BlcmF0b3IuVklFVywgXCJ2aWV3XCIsIG8pO1xuICAgICAgfSxcbiAgICAgIGFyZ3M6IFtvcHRzXSxcbiAgICB9KVxuICAgIC5hcHBseSgpO1xufVxuIl19
@@ -28,4 +28,4 @@ class PagingError extends db_decorators_1.InternalError {
28
28
  }
29
29
  }
30
30
  exports.PagingError = PagingError;
31
- //# sourceMappingURL=errors.js.map
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBd0Q7QUFFeEQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxVQUFXLFNBQVEsNkJBQWE7SUFDM0MsWUFBWSxHQUFtQjtRQUM3QixLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBSkQsZ0NBSUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLFdBQVksU0FBUSw2QkFBYTtJQUM1QyxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFKRCxrQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXJyb3IgdGhyb3duIGR1cmluZyBxdWVyeSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBxdWVyeSBidWlsZGluZyBvciBleGVjdXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nIHwgRXJyb3J9IG1zZyAtIFRoZSBlcnJvciBtZXNzYWdlIG9yIEVycm9yIG9iamVjdFxuICogQGNsYXNzIFF1ZXJ5RXJyb3JcbiAqIEBjYXRlZ29yeSBFcnJvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXJ5RXJyb3IgZXh0ZW5kcyBJbnRlcm5hbEVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKG1zZywgUXVlcnlFcnJvci5uYW1lLCA1MDApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biBkdXJpbmcgcGFnaW5hdGlvbiBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBwYWdpbmF0aW9uIHNldHVwIG9yIGV4ZWN1dGlvblxuICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgRXJyb3Igb2JqZWN0XG4gKiBAY2xhc3MgUGFnaW5nRXJyb3JcbiAqIEBjYXRlZ29yeSBFcnJvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIFBhZ2luZ0Vycm9yIGV4dGVuZHMgSW50ZXJuYWxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBzdXBlcihtc2csIFBhZ2luZ0Vycm9yLm5hbWUsIDUwMCk7XG4gIH1cbn1cbiJdfQ==
@@ -30,4 +30,4 @@ __exportStar(require("./decorators.cjs"), exports);
30
30
  __exportStar(require("./MethodQueryBuilder.cjs"), exports);
31
31
  __exportStar(require("./types.cjs"), exports);
32
32
  __exportStar(require("./utils.cjs"), exports);
33
- //# sourceMappingURL=index.js.map
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCxrREFBNEI7QUFDNUIsa0RBQTRCO0FBQzVCLCtDQUF5QjtBQUN6QixnREFBMEI7QUFDMUIsa0RBQTRCO0FBQzVCLGtEQUE0QjtBQUM1QixrREFBNEI7QUFDNUIsbURBQTZCO0FBQzdCLDJEQUFxQztBQUNyQyw4Q0FBd0I7QUFDeEIsOENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gRXhwb3J0cyBmb3IgdGhlIHF1ZXJ5IG1vZHVsZS5cbiAqIEBzdW1tYXJ5IFRoaXMgZmlsZSBleHBvcnRzIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgZm9yIHRoZSBxdWVyeSBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgQ29uZGl0aW9uLCBjb25zdGFudHMsIGVycm9ycywgYW5kIG1vcmUuXG4gKiBAbW9kdWxlIGNvcmUvcXVlcnlcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3B0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUGFnaW5hdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zZWxlY3RvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N0YXRlbWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWV0aG9kUXVlcnlCdWlsZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=options.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyeS9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGUgKi9cbmltcG9ydCB7XG4gIEdyb3VwQnlTZWxlY3RvcixcbiAgTGltaXRTZWxlY3RvcixcbiAgT2Zmc2V0U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgT3JkZXJEaXJlY3Rpb25JbnB1dCxcbiAgU2VsZWN0U2VsZWN0b3IsXG59IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgRXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tIFwiLi9Db25kaXRpb25cIjtcbmltcG9ydCB7IFBhZ2luYXRhYmxlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvUGFnaW5hdGFibGVcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbnR5cGUgTm9ybWFsaXplZEdyb3VwS2V5PE0gZXh0ZW5kcyBNb2RlbCwgSyBleHRlbmRzIGtleW9mIE0+ID1cbiAgTVtLXSBleHRlbmRzIFByb3BlcnR5S2V5ID8gTVtLXSA6IFByb3BlcnR5S2V5O1xuXG50eXBlIEdyb3VwQnlSZXR1cm5WYWx1ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgR3JvdXBCeVNlbGVjdG9yPE0+W10sXG4+ID0gS2V5cyBleHRlbmRzIFtcbiAgaW5mZXIgSGVhZCBleHRlbmRzIGtleW9mIE0sXG4gIC4uLmluZmVyIFRhaWwgZXh0ZW5kcyByZWFkb25seSBHcm91cEJ5U2VsZWN0b3I8TT5bXVxuXVxuICA/IFJlY29yZDxcbiAgICAgIE5vcm1hbGl6ZWRHcm91cEtleTxNLCBIZWFkPixcbiAgICAgIEdyb3VwQnlSZXR1cm5WYWx1ZTxNLCBUYWlsPlxuICAgID5cbiAgOiBNW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVtZW50RXhlY3V0b3I8TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIEV4ZWN1dG9yPFI+LFxuICAgIFBhZ2luYXRhYmxlPE0sIFIsIGFueT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJhYmxlU3RhdGVtZW50RXhlY3V0b3I8TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIFN0YXRlbWVudEV4ZWN1dG9yPE0sIFI+IHtcbiAgcHJlcGFyZSguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8U3RhdGVtZW50RXhlY3V0b3I8TSwgUj4+O1xufVxuLyoqXG4gKiBAc3VtbWFyeSBHcm91cEJ5IE9wdGlvbiBpbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSBHUk9VUCBCWSBtZXRob2QgYW5kIHJlbWFpbmluZyBvcHRpb25zXG4gKlxuICogQGludGVyZmFjZSBHcm91cEJ5T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcm91cEJ5UmVzdWx0PFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIEtleXMgZXh0ZW5kcyByZWFkb25seSBHcm91cEJ5U2VsZWN0b3I8TT5bXSA9IHJlYWRvbmx5IEdyb3VwQnlTZWxlY3RvcjxNPltdLFxuPiBleHRlbmRzIFByZXBhcmFibGVTdGF0ZW1lbnRFeGVjdXRvcjxNLCBHcm91cEJ5UmV0dXJuVmFsdWU8TSwgS2V5cz4+LFxuICAgIE9yZGVyQnlPcHRpb248TSwgR3JvdXBCeVJldHVyblZhbHVlPE0sIEtleXM+PixcbiAgICBMaW1pdE9wdGlvbjxNLCBHcm91cEJ5UmV0dXJuVmFsdWU8TSwgS2V5cz4+LFxuICAgIE9mZnNldE9wdGlvbjxNLCBHcm91cEJ5UmV0dXJuVmFsdWU8TSwgS2V5cz4+IHtcbiAgdGhlbkJ5PEtleSBleHRlbmRzIEdyb3VwQnlTZWxlY3RvcjxNPj4oXG4gICAgc2VsZWN0b3I6IEtleVxuICApOiBHcm91cEJ5UmVzdWx0PE0sIFsuLi5LZXlzLCBLZXldPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcm91cEJ5T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD4ge1xuICBncm91cEJ5PEtleSBleHRlbmRzIEdyb3VwQnlTZWxlY3RvcjxNPj4oXG4gICAgc2VsZWN0b3I6IEtleVxuICApOiBHcm91cEJ5UmVzdWx0PE0sIFtLZXldPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgT2Zmc2V0IE9wdGlvbiBpbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSBPRkZTRVQgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgR3JvdXBCeU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2Zmc2V0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj5cbiAgZXh0ZW5kcyBQcmVwYXJhYmxlU3RhdGVtZW50RXhlY3V0b3I8TSwgUj4ge1xuICBvZmZzZXQoc2VsZWN0b3I6IE9mZnNldFNlbGVjdG9yKTogUHJlcGFyYWJsZVN0YXRlbWVudEV4ZWN1dG9yPE0sIFI+O1xufVxuLyoqXG4gKiBAc3VtbWFyeSBMaW1pdCBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgTElNSVQgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgTGltaXRPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbWl0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj5cbiAgZXh0ZW5kcyBQcmVwYXJhYmxlU3RhdGVtZW50RXhlY3V0b3I8TSwgUj4ge1xuICBsaW1pdChzZWxlY3RvcjogTGltaXRTZWxlY3Rvcik6IE9mZnNldE9wdGlvbjxNLCBSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgT3JkZXJCeSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgT1JERVIgQlkgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgT3JkZXJCeU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JkZXJCeVJlc3VsdDxNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGV4dGVuZHMgTGltaXRPcHRpb248TSwgUj4sXG4gICAgT2Zmc2V0T3B0aW9uPE0sIFI+LFxuICAgIE9yZGVyQnlUaGVuQnlTdGFydGVyT3B0aW9uPE0sIFI+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JkZXJCeU9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGV4dGVuZHMgUHJlcGFyYWJsZVN0YXRlbWVudEV4ZWN1dG9yPE0sIFI+IHtcbiAgb3JkZXJCeShzZWxlY3RvcjogT3JkZXJCeVNlbGVjdG9yPE0+KTogT3JkZXJCeVJlc3VsdDxNLCBSPjtcbiAgb3JkZXJCeShcbiAgICBhdHRyaWJ1dGU6IGtleW9mIE0sXG4gICAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbklucHV0XG4gICk6IE9yZGVyQnlSZXN1bHQ8TSwgUj47XG59XG4vKipcbiAqIEBzdW1tYXJ5IE9yZGVyQnkgY2hhaW5pbmcgc3RhcnRlciBpbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSB0aGVuQnkgbWV0aG9kcyBmb3IgY29udGludWluZyBvcmRlckJ5IGNoYWluc1xuICpcbiAqIEBpbnRlcmZhY2UgT3JkZXJCeVRoZW5CeVN0YXJ0ZXJPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQnlUaGVuQnlTdGFydGVyT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4ge1xuICB0aGVuQnkoc2VsZWN0b3I6IE9yZGVyQnlTZWxlY3RvcjxNPik6IE9yZGVyQnlUaGVuQnlPcHRpb248TSwgUj47XG4gIHRoZW5CeShcbiAgICBhdHRyaWJ1dGU6IGtleW9mIE0sXG4gICAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbklucHV0XG4gICk6IE9yZGVyQnlUaGVuQnlPcHRpb248TSwgUj47XG59XG5cbi8qKlxuICogQHN1bW1hcnkgT3JkZXJCeSBjaGFpbmluZyBjb250aW51YXRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyBsaW1pdC9vZmZzZXQgYW5kIGZ1cnRoZXIgdGhlbkJ5IGNoYWluaW5nIGZvciBtdWx0aS1sZXZlbCBzb3J0c1xuICpcbiAqIEBpbnRlcmZhY2UgT3JkZXJCeVRoZW5CeU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JkZXJCeVRoZW5CeU9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGV4dGVuZHMgTGltaXRPcHRpb248TSwgUj4sXG4gICAgT2Zmc2V0T3B0aW9uPE0sIFI+LFxuICAgIE9yZGVyQnlUaGVuQnlTdGFydGVyT3B0aW9uPE0sIFI+IHt9XG4vKipcbiAqIEBzdW1tYXJ5IEdyb3VwcyBzZXZlcmFsIG9yZGVyIGFuZCBncm91cGluZyBvcHRpb25zXG4gKlxuICogQGludGVyZmFjZSBPcmRlckFuZEdyb3VwT3B0aW9uXG4gKiBAZXh0ZW5kcyBPcmRlckJ5T3B0aW9uXG4gKiBAZXh0ZW5kcyBHcm91cEJ5T3B0aW9uXG4gKiBAZXh0ZW5kcyBMaW1pdE9wdGlvblxuICogQGV4dGVuZHMgT2Zmc2V0T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmRlckFuZEdyb3VwT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj5cbiAgZXh0ZW5kcyBPcmRlckJ5T3B0aW9uPE0sIFI+LFxuICAgIFByZXBhcmFibGVTdGF0ZW1lbnRFeGVjdXRvcjxNLCBSPixcbiAgICBHcm91cEJ5T3B0aW9uPE0+LFxuICAgIExpbWl0T3B0aW9uPE0sIFI+LFxuICAgIE9mZnNldE9wdGlvbjxNLCBSPiB7fVxuLyoqXG4gKiBAc3VtbWFyeSBXaGVyZSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgV0hFUkUgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgV2hlcmVPcHRpb25cbiAqIEBleHRlbmRzIE9yZGVyQW5kR3JvdXBPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdoZXJlT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj5cbiAgZXh0ZW5kcyBPcmRlckFuZEdyb3VwT3B0aW9uPE0sIFI+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IGZpbHRlciB0aGUgcmVjb3JkcyBieSBhIGNvbmRpdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHdoZXJlKGNvbmRpdGlvbjogQ29uZGl0aW9uPE0+KTogT3JkZXJBbmRHcm91cE9wdGlvbjxNLCBSPjtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBGcm9tIE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSBGUk9NIG1ldGhvZCBhbmQgcmVtYWluaW5nIG9wdGlvbnNcbiAqXG4gKiBAaW50ZXJmYWNlIEZyb21PcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb21PcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBzZWxlY3RzIHJlY29yZHMgZnJvbSBhIHRhYmxlXG4gICAqXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3J9IHRhYmxlTmFtZVxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBmcm9tKHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4gfCBzdHJpbmcpOiBXaGVyZU9wdGlvbjxNLCBSPjtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEaXN0aW5jdCBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBESVNUSU5DVFxuICpcbiAqIEBpbnRlcmZhY2UgRGlzdGluY3RPcHRpb25cbiAqIEBleHRlbmRzIEZyb21PcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3RpbmN0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4gZXh0ZW5kcyBGcm9tT3B0aW9uPE0sIFI+IHt9XG5cbi8qKlxuICogQHN1bW1hcnkgTWF4IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIE1BWFxuICpcbiAqIEBpbnRlcmZhY2UgTWF4T3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIEZyb21PcHRpb248TSwgUj4ge31cblxuLyoqXG4gKiBAc3VtbWFyeSBNaW4gT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGEgTUlOXG4gKlxuICogQGludGVyZmFjZSBNaW5PcHRpb25cbiAqIEBleHRlbmRzIEZyb21PcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbk9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRnJvbU9wdGlvbjxNLCBSPiB7fVxuXG4vKipcbiAqIEBzdW1tYXJ5IENvdW50IERpc3RpbmN0IFdoZXJlIE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBDT1VOVCBESVNUSU5DVC4uLkZST01cbiAqXG4gKiBAaW50ZXJmYWNlIENvdW50RGlzdGluY3RXaGVyZU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnREaXN0aW5jdFdoZXJlT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD5cbiAgZXh0ZW5kcyBPcmRlckFuZEdyb3VwT3B0aW9uPE0sIG51bWJlcj4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgZmlsdGVyIHRoZSByZWNvcmRzIGJ5IGEgY29uZGl0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb25cbiAgICovXG4gIHdoZXJlKGNvbmRpdGlvbjogQ29uZGl0aW9uPE0+KTogQ291bnREaXN0aW5jdFdoZXJlT3B0aW9uPE0+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IENvdW50IFdoZXJlIE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBDT1VOVC4uLkZST00gd2l0aCBkaXN0aW5jdCgpIGF2YWlsYWJsZVxuICpcbiAqIEBpbnRlcmZhY2UgQ291bnRXaGVyZU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRXaGVyZU9wdGlvbjxNIGV4dGVuZHMgTW9kZWw+XG4gIGV4dGVuZHMgT3JkZXJBbmRHcm91cE9wdGlvbjxNLCBudW1iZXI+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IE1ha2VzIHRoZSBjb3VudCBkaXN0aW5jdFxuICAgKiBAZGVzY3JpcHRpb24gV2hlbiBjaGFpbmVkIGFmdGVyIGNvdW50KCksIGNvdW50cyBvbmx5IGRpc3RpbmN0IHZhbHVlc1xuICAgKiBAcmV0dXJuIEEgY291bnQgZGlzdGluY3QgcXVlcnkgYnVpbGRlclxuICAgKi9cbiAgZGlzdGluY3QoKTogQ291bnREaXN0aW5jdFdoZXJlT3B0aW9uPE0+O1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBmaWx0ZXIgdGhlIHJlY29yZHMgYnkgYSBjb25kaXRpb25cbiAgICogQHBhcmFtIHtDb25kaXRpb259IGNvbmRpdGlvblxuICAgKi9cbiAgd2hlcmUoY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBDb3VudFdoZXJlT3B0aW9uPE0+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IENvdW50IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIENPVU5UXG4gKlxuICogQGludGVyZmFjZSBDb3VudE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRPcHRpb248TSBleHRlbmRzIE1vZGVsPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBNYWtlcyB0aGUgY291bnQgZGlzdGluY3RcbiAgICogQGRlc2NyaXB0aW9uIFdoZW4gY2hhaW5lZCBhZnRlciBjb3VudCgpLCBjb3VudHMgb25seSBkaXN0aW5jdCB2YWx1ZXNcbiAgICogQHJldHVybiBBIGNvdW50IGRpc3RpbmN0IHF1ZXJ5IGJ1aWxkZXJcbiAgICovXG4gIGRpc3RpbmN0KCk6IENvdW50RGlzdGluY3RPcHRpb248TT47XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHNlbGVjdHMgcmVjb3JkcyBmcm9tIGEgdGFibGVcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3Rvcn0gdGFibGVOYW1lXG4gICAqL1xuICBmcm9tKHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4gfCBzdHJpbmcpOiBDb3VudFdoZXJlT3B0aW9uPE0+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IENvdW50IERpc3RpbmN0IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIENPVU5UIERJU1RJTkNUXG4gKlxuICogQGludGVyZmFjZSBDb3VudERpc3RpbmN0T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3VudERpc3RpbmN0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgc2VsZWN0cyByZWNvcmRzIGZyb20gYSB0YWJsZVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yfSB0YWJsZU5hbWVcbiAgICovXG4gIGZyb20odGFibGVOYW1lOiBDb25zdHJ1Y3RvcjxNPiB8IHN0cmluZyk6IENvdW50V2hlcmVPcHRpb248TT47XG59XG5cbi8qKlxuICogQHN1bW1hcnkgU3VtIE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIFNVTVxuICpcbiAqIEBpbnRlcmZhY2UgU3VtT3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdW1PcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIEZyb21PcHRpb248TSwgUj4ge31cblxuLyoqXG4gKiBAc3VtbWFyeSBBdmcgT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGFuIEFWR1xuICpcbiAqIEBpbnRlcmZhY2UgQXZnT3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmdPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIEZyb21PcHRpb248TSwgUj4ge31cblxuLyoqXG4gKiBAc3VtbWFyeSBTZWxlY3QgT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGEgU0VMRUNUXG4gKlxuICogQGludGVyZmFjZSBTZWxlY3RPcHRpb25cbiAqIEBleHRlbmRzIEZyb21PcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdE9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRnJvbU9wdGlvbjxNLCBSPiB7XG4gIGRpc3RpbmN0PFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I6IFMpOiBEaXN0aW5jdE9wdGlvbjxNLCBNW1NdW10+O1xuXG4gIG1heDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogTWF4T3B0aW9uPE0sIE1bU10+O1xuXG4gIG1pbjxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogTWluT3B0aW9uPE0sIE1bU10+O1xuXG4gIGNvdW50PFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I/OiBTKTogQ291bnRPcHRpb248TT47XG5cbiAgc3VtPFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I6IFMpOiBTdW1PcHRpb248TSwgbnVtYmVyPjtcblxuICBhdmc8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IEF2Z09wdGlvbjxNLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEludG8gT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGFuIElOVE9cbiAqXG4gKiBAaW50ZXJmYWNlIEludG9PcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludG9PcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiB7XG4gIHZhbHVlcyguLi5tb2RlbHM6IE1bXSk6IEV4ZWN1dG9yPFI+O1xuXG4gIHdoZXJlKGNvbmRpdGlvbjogQ29uZGl0aW9uPE0+KTogRXhlY3V0b3I8Uj47XG59XG4vKipcbiAqIEBzdW1tYXJ5IFZhbHVlc3QgT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGEgVkFMVUVTXG4gKlxuICogQGludGVyZmFjZSBWYWx1ZXNPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlc09wdGlvbjxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgRXhlY3V0b3I8TT4ge31cbi8qKlxuICogQHN1bW1hcnkgSW5zZXJ0IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhbiBJTlNFUlRcbiAqXG4gKiBAaW50ZXJmYWNlIEluc2VydE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUiA9IHZvaWQ+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHNlbGVjdHMgdGhlIHRhYmxlIHRvIGluc2VydCByZWNvcmRzIGludG9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBDb25zdHJ1Y3Rvcn0gdGFibGVcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgaW50byh0YWJsZTogQ29uc3RydWN0b3I8TT4pOiBJbnRvT3B0aW9uPE0sIFI+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IHtAbGluayBPcGVyYXRvcn0gT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIGF2YWlsYWJsZSBvcGVyYXRvcnMgZm9yIGEge0BsaW5rIENvbmRpdGlvbn1cbiAqXG4gKiBAaW50ZXJmYWNlIEF0dHJpYnV0ZU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCBlcXVhbGl0eVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGVxKHZhbDogYW55KTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCBkaWZmZXJlbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWwgdGhlIHZhbHVlIHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZGlmKHZhbDogYW55KTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCBncmVhdGVyIHRoYW5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBndCh2YWw6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgbG93ZXIgdGhhblxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGx0KHZhbDogYW55KTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCBncmVhdGVyIG9yIGVxdWFsIHRvXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWwgdGhlIHZhbHVlIHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ3RlKHZhbDogYW55KTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCBsb3dlciBvciBlcXVhbCB0b1xuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGx0ZSh2YWw6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgdmFsdWUgaW4gYSByYW5nZSBvZiB2YWx1ZXNcbiAgICogQHBhcmFtIHthbnlbXX0gdmFsXG4gICAqL1xuICBpbih2YWw6IGFueVtdKTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCB2YWx1ZSBpcyBiZXR3ZWVuIG1pbiBhbmQgbWF4IChpbmNsdXNpdmUpXG4gICAqIEBwYXJhbSB7YW55fSBtaW4gdGhlIG1pbmltdW0gdmFsdWVcbiAgICogQHBhcmFtIHthbnl9IG1heCB0aGUgbWF4aW11bSB2YWx1ZVxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBiZXR3ZWVuKG1pbjogYW55LCBtYXg6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgbWF0Y2hlcyB7QGxpbmsgUmVnRXhwfVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlZ2V4cCh2YWw6IHN0cmluZyB8IFJlZ0V4cCk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3Qgc3RyaW5nIHN0YXJ0cyB3aXRoIHZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgdGhlIHByZWZpeCB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIHN0YXJ0c1dpdGgodmFsOiBzdHJpbmcpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IHN0cmluZyBlbmRzIHdpdGggdmFsdWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbCB0aGUgc3VmZml4IHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZW5kc1dpdGgodmFsOiBzdHJpbmcpOiBDb25kaXRpb248TT47XG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGNyZWF0aW5nIHF1ZXJ5IGNvbmRpdGlvbnNcbiAqIEBzdW1tYXJ5IEV4cG9zZXMgdGhlIGF2YWlsYWJsZSBvcGVyYXRpb25zIGZvciBidWlsZGluZyBkYXRhYmFzZSBxdWVyeSBjb25kaXRpb25zXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoaXMgY29uZGl0aW9uIGJ1aWxkZXIgb3BlcmF0ZXMgb25cbiAqIEBpbnRlcmZhY2UgQ29uZGl0aW9uQnVpbGRlck9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uQnVpbGRlck9wdGlvbjxNIGV4dGVuZHMgTW9kZWw+IHtcbiAgYXR0cmlidXRlKGF0dHI6IGtleW9mIE0pOiBBdHRyaWJ1dGVPcHRpb248TT47XG4gIGF0dHIoYXR0cjoga2V5b2YgTSk6IEF0dHJpYnV0ZU9wdGlvbjxNPjtcbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=selectors.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L3NlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgdHlwZSBPcmRlckRpcmVjdGlvbklucHV0ID1cbiAgfCBPcmRlckRpcmVjdGlvblxuICB8IFwiYXNjXCJcbiAgfCBcImRlc2NcIlxuICB8IFwiQVNDXCJcbiAgfCBcIkRFU0NcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBmb3Igc2VsZWN0aW5nIHRoZSBkYXRhIHNvdXJjZSBpbiBhIHF1ZXJ5XG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSB0eXBlIGZvciBzcGVjaWZ5aW5nIHRoZSB0YWJsZSBvciBtb2RlbCB0byBxdWVyeSBmcm9tXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoaXMgc2VsZWN0b3Igb3BlcmF0ZXMgb25cbiAqIEB0eXBlZGVmIHtDb25zdHJ1Y3RvcjxNPiB8IHN0cmluZ30gRnJvbVNlbGVjdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IHR5cGUgRnJvbVNlbGVjdG9yPE0gZXh0ZW5kcyBNb2RlbD4gPSBDb25zdHJ1Y3RvcjxNPiB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgR3JvdXBCeVNlbGVjdG9yPE0gZXh0ZW5kcyBNb2RlbD4gPSBrZXlvZiBNO1xuXG5leHBvcnQgdHlwZSBPcmRlckJ5U2VsZWN0b3I8TSBleHRlbmRzIE1vZGVsPiA9IFtcbiAga2V5b2YgTSxcbiAgT3JkZXJEaXJlY3Rpb25JbnB1dCxcbl07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZm9yIGxpbWl0aW5nIHF1ZXJ5IHJlc3VsdHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHR5cGUgZm9yIHNwZWNpZnlpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuXG4gKiBAdHlwZWRlZiB7bnVtYmVyfSBMaW1pdFNlbGVjdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IHR5cGUgTGltaXRTZWxlY3RvciA9IG51bWJlcjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBmb3Igb2Zmc2V0dGluZyBxdWVyeSByZXN1bHRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSB0eXBlIGZvciBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byBza2lwXG4gKiBAdHlwZWRlZiB7bnVtYmVyfSBPZmZzZXRTZWxlY3RvclxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCB0eXBlIE9mZnNldFNlbGVjdG9yID0gbnVtYmVyO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGZvciBzZWxlY3RpbmcgZmllbGRzIGluIGEgcXVlcnlcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHR5cGUgZm9yIHNwZWNpZnlpbmcgd2hpY2ggZmllbGRzIHRvIHNlbGVjdCBmcm9tIGEgbW9kZWxcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhpcyBzZWxlY3RvciBvcGVyYXRlcyBvblxuICogQHR5cGVkZWYgU2VsZWN0U2VsZWN0b3JcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgdHlwZSBTZWxlY3RTZWxlY3RvcjxNIGV4dGVuZHMgTW9kZWw+ID0ga2V5b2YgTTtcbiJdfQ==
@@ -31,4 +31,4 @@ var QueryClause;
31
31
  QueryClause["THEN"] = "Then";
32
32
  QueryClause["THEN_BY"] = "ThenBy";
33
33
  })(QueryClause || (exports.QueryClause = QueryClause = {}));
34
- //# sourceMappingURL=types.js.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcnkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMkZBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxJQUFZLFdBaUJYO0FBakJELFdBQVksV0FBVztJQUNyQixpQ0FBa0IsQ0FBQTtJQUNsQixpQ0FBa0IsQ0FBQTtJQUNsQixtQ0FBb0IsQ0FBQTtJQUNwQiwrQkFBZ0IsQ0FBQTtJQUNoQiwrQkFBZ0IsQ0FBQTtJQUNoQiwrQkFBZ0IsQ0FBQTtJQUNoQiwrQkFBZ0IsQ0FBQTtJQUNoQix5Q0FBMEIsQ0FBQTtJQUMxQiwwQ0FBMkIsQ0FBQTtJQUMzQixnQ0FBaUIsQ0FBQTtJQUNqQiwwQkFBVyxDQUFBO0lBQ1gsd0JBQVMsQ0FBQTtJQUNULG1DQUFvQixDQUFBO0lBQ3BCLG1DQUFvQixDQUFBO0lBQ3BCLDRCQUFhLENBQUE7SUFDYixpQ0FBa0IsQ0FBQTtBQUNwQixDQUFDLEVBakJXLFdBQVcsMkJBQVgsV0FBVyxRQWlCdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tIFwiLi9Db25kaXRpb25cIjtcbmltcG9ydCB7IE9yZGVyQnlTZWxlY3RvciB9IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHF1ZXJ5IGJ1aWxkaW5nIGJlaGF2aW9yLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYFF1ZXJ5T3B0aW9uc2AgdHlwZSBkZWZpbmVzIGZsYWdzIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgY2VydGFpbiBjbGF1c2VzXG4gKiAobGltaXQsIG9mZnNldCwgb3JkZXIgYnkpIGFyZSBwZXJtaXR0ZWQsIGFzIHdlbGwgYXMgd2hldGhlciB2aW9sYXRpb25zXG4gKiBzaG91bGQgdGhyb3cgYW4gZXJyb3IgZHVyaW5nIHF1ZXJ5IGNvbnN0cnVjdGlvbi5cbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnF1ZXJ5XG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgYWxsb3dMaW1pdD86IGJvb2xlYW47XG4gIGFsbG93T2Zmc2V0PzogYm9vbGVhbjtcbiAgYWxsb3dPcmRlckJ5PzogYm9vbGVhbjtcbiAgdGhyb3dzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIE9yZGVyTGltaXRPZmZzZXRFeHRyYWN0ID0ge1xuICBvcmRlckJ5PzogT3JkZXJCeVNlbGVjdG9yPGFueT5bXTtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIG9mZnNldD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbkxpbWl0T2Zmc2V0ID0ge1xuICBkaXJlY3Rpb24/OiBPcmRlckRpcmVjdGlvbjtcbiAgb3JkZXI/OiBPcmRlckJ5U2VsZWN0b3I8YW55PltdO1xuICBsaW1pdD86IG51bWJlcjtcbiAgb2Zmc2V0PzogbnVtYmVyO1xuICBib29rbWFyaz86IHN0cmluZyB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFByZXBhcmVkU3RhdGVtZW50PE0gZXh0ZW5kcyBNb2RlbD4gPSB7XG4gIGNsYXNzOiBDb25zdHJ1Y3RvcjxNPjtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGFyZ3M6IGFueVtdO1xuICBwYXJhbXM6IERpcmVjdGlvbkxpbWl0T2Zmc2V0O1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0IHJlcHJlc2VudGluZyBwYXJzZWQgcXVlcnkgY2xhdXNlcy5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBRdWVyeUFzc2lzdGAgaW50ZXJmYWNlIGRlZmluZXMgdGhlIHN0YW5kYXJkIHN0cnVjdHVyZSByZXR1cm5lZFxuICogYnkgcXVlcnkgYnVpbGRlcnMuIEl0IGluY2x1ZGVzIGFjdGlvbnMgc3VjaCBhcyBmaW5kLCBvcHRpb25hbCBjbGF1c2VzXG4gKiBsaWtlIHNlbGVjdCwgZ3JvdXBCeSwgYW5kIG9yZGVyQnksIGFuZCBwYWdpbmF0aW9uIGNvbnRyb2xzIChsaW1pdCwgb2Zmc2V0KS5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgZW50aXR5IG9yIHJlY29yZCB0eXBlIHRoYXQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8uXG4gKlxuICogQGludGVyZmFjZSBRdWVyeUFzc2lzdFxuICogQG1lbWJlck9mIG1vZHVsZTpxdWVyeVxuICovXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogU3VwcG9ydGVkIHF1ZXJ5IGFjdGlvbiB0eXBlcyBmb3IgbWV0aG9kLWJhc2VkIHF1ZXJpZXMuXG4gKlxuICogQHN1bW1hcnlcbiAqIFRoZSBgUXVlcnlBY3Rpb25gIHR5cGUgZGVmaW5lcyB0aGUgcG9zc2libGUgYWN0aW9ucyB0aGF0IGNhbiBiZVxuICogcGVyZm9ybWVkIGJ5IGEgcXVlcnkgYnVpbHQgZnJvbSBhIG1ldGhvZCBuYW1lLlxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cXVlcnlcbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlBY3Rpb24gPVxuICB8IFwiZmluZFwiXG4gIHwgXCJwYWdlXCJcbiAgfCBcImNvdW50XCJcbiAgfCBcInN1bVwiXG4gIHwgXCJhdmdcIlxuICB8IFwibWluXCJcbiAgfCBcIm1heFwiXG4gIHwgXCJkaXN0aW5jdFwiXG4gIHwgXCJncm91cFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5QXNzaXN0IHtcbiAgYWN0aW9uOiBRdWVyeUFjdGlvbjtcbiAgc2VsZWN0OiB1bmRlZmluZWQgfCBzdHJpbmdbXTtcbiAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gIHdoZXJlPzogQ29uZGl0aW9uPGFueT47XG4gIGdyb3VwQnk/OiBzdHJpbmdbXTtcbiAgb3JkZXJCeT86IE9yZGVyQnlTZWxlY3Rvcjxhbnk+W107XG4gIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIG9mZnNldDogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogRW51bWVyYXRpb24gb2Ygc3VwcG9ydGVkIHF1ZXJ5IGNsYXVzZXMgZm9yIGJ1aWxkaW5nIG1ldGhvZC1iYXNlZCBxdWVyaWVzLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYFF1ZXJ5Q2xhdXNlYCBlbnVtIGRlZmluZXMgc3RyaW5nIGxpdGVyYWxzIHRoYXQgcmVwcmVzZW50XG4gKiBkaWZmZXJlbnQgc2VnbWVudHMgb2YgYSBxdWVyeSAoZS5nLiwgYGZpbmRCeWAsIGBTZWxlY3RgLCBgQW5kYCwgYE9yYCkuXG4gKlxuICogQGVudW0gUXVlcnlDbGF1c2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cXVlcnlcbiAqL1xuZXhwb3J0IGVudW0gUXVlcnlDbGF1c2Uge1xuICBGSU5EX0JZID0gXCJmaW5kQnlcIixcbiAgUEFHRV9CWSA9IFwicGFnZUJ5XCIsXG4gIENPVU5UX0JZID0gXCJjb3VudEJ5XCIsXG4gIFNVTV9CWSA9IFwic3VtQnlcIixcbiAgQVZHX0JZID0gXCJhdmdCeVwiLFxuICBNSU5fQlkgPSBcIm1pbkJ5XCIsXG4gIE1BWF9CWSA9IFwibWF4QnlcIixcbiAgRElTVElOQ1RfQlkgPSBcImRpc3RpbmN0QnlcIixcbiAgR1JPVVBfQllfUFJFRklYID0gXCJncm91cEJ5XCIsXG4gIFNFTEVDVCA9IFwiU2VsZWN0XCIsXG4gIEFORCA9IFwiQW5kXCIsXG4gIE9SID0gXCJPclwiLFxuICBHUk9VUF9CWSA9IFwiR3JvdXBCeVwiLFxuICBPUkRFUl9CWSA9IFwiT3JkZXJCeVwiLFxuICBUSEVOID0gXCJUaGVuXCIsXG4gIFRIRU5fQlkgPSBcIlRoZW5CeVwiLFxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogRnVuY3Rpb24gc2lnbmF0dXJlIGZvciBwYXJzaW5nIG9wZXJhdG9ycyBpbiBxdWVyeSBidWlsZGluZy5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBPcGVyYXRvclBhcnNlcmAgdHlwZSByZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGZpZWxkIG5hbWVcbiAqIGFuZCBhcmd1bWVudHMsIHRoZW4gcHJvZHVjZXMgYSBgQ29uZGl0aW9uYCBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIHF1ZXJ5LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBjb25kaXRpb24gcmVzdWx0LlxuICpcbiAqIEBwYXJhbSBmaWVsZCB7c3RyaW5nfSAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBiZWluZyBwYXJzZWQuXG4gKiBAcGFyYW0gYXJncyB7YW55W119IC0gQWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIG9wZXJhdG9yIGV2YWx1YXRpb24uXG4gKlxuICogQHJldHVybiB7Q29uZGl0aW9uPGFueT59IEEgY29uZGl0aW9uIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhcnNlZCBvcGVyYXRvci5cbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnF1ZXJ5XG4gKi9cbmV4cG9ydCB0eXBlIE9wZXJhdG9yUGFyc2VyID0gKGZpZWxkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueSkgPT4gQ29uZGl0aW9uPGFueT47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBEZXNjcmlwdG9yIGZvciBmaWVsZHMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgb3BlcmF0b3JzIGluIHF1ZXJ5IHBhcnNpbmcuXG4gKlxuICogQHN1bW1hcnlcbiAqIFRoZSBgRmlsdGVyRGVzY3JpcHRvcmAgaW50ZXJmYWNlIGRlZmluZXMgdGhlIHN0cnVjdHVyZSB1c2VkIHdoZW4gcGFyc2luZ1xuICogbWV0aG9kIHNlZ21lbnRzIGludG8gZmlsdGVyYWJsZSBmaWVsZHMgYW5kIGFzc29jaWF0ZWQgb3BlcmF0b3JzLlxuICpcbiAqIEBpbnRlcmZhY2UgRmlsdGVyRGVzY3JpcHRvclxuICogQG1lbWJlck9mIG1vZHVsZTpxdWVyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckRlc2NyaXB0b3Ige1xuICBmaWVsZDogc3RyaW5nO1xuICBvcGVyYXRvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVmlld0tleSA9IHN0cmluZyB8IHN0cmluZ1tdO1xuXG5leHBvcnQgdHlwZSBWaWV3S2luZCA9XG4gIHwgXCJ2aWV3XCJcbiAgfCBcImdyb3VwQnlcIlxuICB8IFwiY291bnRcIlxuICB8IFwic3VtXCJcbiAgfCBcIm1heFwiXG4gIHwgXCJtaW5cIlxuICB8IFwiZGlzdGluY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3QXV0aE9wdGlvbnMge1xuICBleHByZXNzaW9uPzogc3RyaW5nO1xuICBmaWVsZD86IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgbW9kZT86IFwiYW55XCIgfCBcImFsbFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdPcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAga2V5PzogVmlld0tleTtcbiAgdmFsdWU/OiBWaWV3S2V5IHwgbnVsbDtcbiAgY29uZGl0aW9uPzogQ29uZGl0aW9uPGFueT4gfCBzdHJpbmc7XG4gIGF1dGg/OiBzdHJpbmcgfCBWaWV3QXV0aE9wdGlvbnM7XG4gIGNvbXBvc2l0aW9ucz86IHN0cmluZ1tdO1xuICBkaXJlY3Rpb25zPzogT3JkZXJEaXJlY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3TWV0YWRhdGEgZXh0ZW5kcyBWaWV3T3B0aW9ucyB7XG4gIGtpbmQ6IFZpZXdLaW5kO1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbn1cbiJdfQ==
@@ -55,4 +55,4 @@ exports.OperatorsMap = {
55
55
  In: (f, v) => Condition_1.Condition.attribute(f).in(v),
56
56
  Matches: (f, v) => Condition_1.Condition.attribute(f).regexp(v),
57
57
  };
58
- //# sourceMappingURL=utils.js.map
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcnkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQXdDO0FBR3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ1UsUUFBQSxZQUFZLEdBQW1DO0lBQzFELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0QsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEUsc0RBQXNEO0lBQ3RELDBCQUEwQjtJQUMxQixrQ0FBa0M7SUFDbEMsZUFBZTtJQUNmLG1EQUFtRDtJQUNuRCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLENBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Q0FDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuL0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgT3BlcmF0b3JQYXJzZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTWFwIG9mIHN1cHBvcnRlZCBvcGVyYXRvcnMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBwYXJzZXIgZnVuY3Rpb25zLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUgYE9wZXJhdG9yc01hcGAgZGVmaW5lcyBhIGNvbGxlY3Rpb24gb2Ygb3BlcmF0b3IgbmFtZXMgYXMga2V5c1xuICogKHN1Y2ggYXMgYEVxdWFsc2AsIGBMZXNzVGhhbmAsIGBCZXR3ZWVuYCwgZXRjLiksIGVhY2ggbWFwcGVkIHRvIGFcbiAqIGZ1bmN0aW9uIHRoYXQgY29uc3RydWN0cyBhIGBDb25kaXRpb25gIG9iamVjdCBmb3IgdGhhdCBvcGVyYXRvci5cbiAqIFRoZXNlIGZ1bmN0aW9ucyB0cmFuc2xhdGUgcXVlcnkgY2xhdXNlcyBpbnRvIGNvbmNyZXRlIGNvbmRpdGlvblxuICogYnVpbGRlcnMsIGVuYWJsaW5nIGR5bmFtaWMgcXVlcnkgY29uc3RydWN0aW9uIGZyb20gbWV0aG9kIG5hbWVzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBmaWVsZCB2YWx1ZXMgdXNlZCBpbiBjb25kaXRpb25zLlxuICpcbiAqIEBwYXJhbSBmIHtzdHJpbmd9IC0gVGhlIGZpZWxkIG5hbWUgdGhlIGNvbmRpdGlvbiBhcHBsaWVzIHRvLlxuICogQHBhcmFtIHYxIHthbnl9IC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUgdGhlIGZpZWxkIGFnYWluc3Qgb3IgdGhlIGxvd2VyIGJvdW5kIHZhbHVlIGZvciByYW5nZS1iYXNlZCBvcGVyYXRvcnMuXG4gKiBAcGFyYW0gdjIge2FueX0gLSBUaGUgdXBwZXIgYm91bmQgdmFsdWUgZm9yIHJhbmdlLWJhc2VkIG9wZXJhdG9ycy5cbiAqXG4gKiBAcmV0dXJuIHtDb25kaXRpb248YW55Pn0gQSBjb25kaXRpb24gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgb3BlcmF0b3IgYXBwbGllZCB0byB0aGUgZmllbGQuXG4gKlxuICogQGZ1bmN0aW9uIE9wZXJhdG9yc01hcFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50IGFzIENhbGxlclxuICogICBwYXJ0aWNpcGFudCBNYXAgYXMgT3BlcmF0b3JzTWFwXG4gKiAgIHBhcnRpY2lwYW50IFBhcnNlciBhcyBPcGVyYXRvclBhcnNlclxuICogICBwYXJ0aWNpcGFudCBDb25kIGFzIENvbmRpdGlvblxuICpcbiAqICAgQ2xpZW50LT4+TWFwOiBSZXF1ZXN0IG9wZXJhdG9yIHBhcnNlciAoXCJCZXR3ZWVuXCIsIGZpZWxkLCB2MSwgdjIpXG4gKiAgIE1hcC0+PlBhcnNlcjogQ2FsbCBjb3JyZXNwb25kaW5nIG9wZXJhdG9yIGZ1bmN0aW9uXG4gKiAgIFBhcnNlci0+PkNvbmQ6IENvbmRpdGlvbi5hdHRyaWJ1dGUoZmllbGQpXG4gKiAgIENvbmQtLT4+UGFyc2VyOiBDb25kaXRpb24gaW5zdGFuY2VcbiAqICAgUGFyc2VyLT4+Q29uZDogQXBwbHkgZ3RlKHYxKVxuICogICBQYXJzZXItPj5Db25kOiBBcHBseSBhbmQobHRlKHYyKSlcbiAqICAgUGFyc2VyLS0+PkNsaWVudDogUmV0dXJuIGJ1aWx0IENvbmRpdGlvblxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cXVlcnlcbiAqL1xuZXhwb3J0IGNvbnN0IE9wZXJhdG9yc01hcDogUmVjb3JkPHN0cmluZywgT3BlcmF0b3JQYXJzZXI+ID0ge1xuICBFcXVhbHM6IChmLCB2KSA9PiBDb25kaXRpb24uYXR0cmlidXRlKGYgYXMgYW55KS5lcSh2KSxcbiAgRGlmZjogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZiBhcyBhbnkpLmRpZih2KSxcbiAgTGVzc1RoYW46IChmLCB2KSA9PiBDb25kaXRpb24uYXR0cmlidXRlKGYgYXMgYW55KS5sdCh2KSxcbiAgTGVzc1RoYW5FcXVhbDogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZiBhcyBhbnkpLmx0ZSh2KSxcbiAgR3JlYXRlclRoYW46IChmLCB2KSA9PiBDb25kaXRpb24uYXR0cmlidXRlKGYgYXMgYW55KS5ndCh2KSxcbiAgR3JlYXRlclRoYW5FcXVhbDogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZiBhcyBhbnkpLmd0ZSh2KSxcbiAgLy8gQmV0d2VlbiBkZXByZWNhdGVkIGR1ZSB0byBHcmVhdGVyVGhhbi9MZXNzVGhhbkVxdWFsXG4gIC8vIEJldHdlZW46IChmLCB2MSwgdjIpID0+XG4gIC8vICAgQ29uZGl0aW9uLmF0dHJpYnV0ZShmIGFzIGFueSlcbiAgLy8gICAgIC5ndGUodjEpXG4gIC8vICAgICAuYW5kKENvbmRpdGlvbi5hdHRyaWJ1dGUoZiBhcyBhbnkpLmx0ZSh2MikpLFxuICBJbjogKGYsIHYpID0+IENvbmRpdGlvbi5hdHRyaWJ1dGUoZiBhcyBhbnkpLmluKHYpLFxuICBNYXRjaGVzOiAoZiwgdikgPT4gQ29uZGl0aW9uLmF0dHJpYnV0ZShmIGFzIGFueSkucmVnZXhwKHYpLFxufTtcbiJdfQ==
@@ -687,4 +687,4 @@ class RamAdapter extends persistence_1.Adapter {
687
687
  exports.RamAdapter = RamAdapter;
688
688
  persistence_1.Adapter.setCurrent(constants_1.RamFlavour);
689
689
  RamAdapter.decoration();
690
- //# sourceMappingURL=RamAdapter.js.map
690
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYW0vUmFtQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxREFBOEM7QUFDOUMsZ0RBQXNDO0FBR3RDLDREQU13QjtBQUN4QixpRkFBcUU7QUFDckUseUVBQWdFO0FBQ2hFLDJEQVVpQztBQUNqQyw2Q0FBd0Q7QUFDeEQsK0NBQXlDO0FBRXpDLHFEQUEwRTtBQUMxRSxxREFBOEM7QUFHOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNILE1BQWEsVUFBVyxTQUFRLHFCQUsvQjtJQUNDLFlBQ0UsT0FBa0I7UUFDaEIsSUFBSSxFQUFFLElBQUksb0NBQVMsRUFBRTtLQUNmLEVBQ1IsS0FBYztRQUVkLEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQWtEekIsWUFBTyxHQUdYLEVBQUUsQ0FBQztRQXBETCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxvQ0FBUyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNNLFVBQVU7UUFHakIsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFrQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDTSxLQUFLLENBQUMsS0FBSyxDQUNsQixTQUF3QixFQUN4QixLQUFxQixFQUNyQixLQUF3QjtRQUV4QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FDZixTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sQ0FBQyxNQUFNLENBQ1g7WUFDRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtTQUN4RCxFQUNELEtB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QUM7SUFFTyxhQUFhLENBQUMsSUFBYTtRQUNqQyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRU8sY0FBYyxDQUNwQixLQUFVLEVBQ1YsS0FBYSxFQUNiLE9BQWU7UUFFZixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM1QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxNQUFNLElBQUksa0JBQVUsQ0FDbEIsR0FBRyxPQUFPLFFBQVEsS0FBSyxzQ0FBc0MsT0FBTyxLQUFLLEVBQUUsQ0FDNUUsQ0FBQztJQUNKLENBQUM7SUFFa0IsU0FBUztRQUMxQixPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBdnpCRCxnQ0F1ekJDO0FBRUQscUJBQU8sQ0FBQyxVQUFVLENBQUMsc0JBQVUsQ0FBQyxDQUFDO0FBQy9CLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJhbUNvbmZpZyxcbiAgUmFtQ29udGV4dCxcbiAgUmFtRmxhZ3MsXG4gIFJhbVN0b3JhZ2UsXG4gIFJhd1JhbVF1ZXJ5LFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgUmFtU3RhdGVtZW50IH0gZnJvbSBcIi4vUmFtU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBRdWVyeUVycm9yIH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvRGlzcGF0Y2hcIjtcbmltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIEFkYXB0ZXJGbGFncyxcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSYXdSZXN1bHQsXG4gIFNlcXVlbmNlLFxufSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IExvY2ssIE11bHRpTG9jayB9IGZyb20gXCJAZGVjYWYtdHMvdHJhbnNhY3Rpb25hbC1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBoYXNoT2JqLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgREJLZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgb25DcmVhdGVVcGRhdGUsXG4gIE9wZXJhdGlvbktleXMsXG4gIFByaW1hcnlLZXlUeXBlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGNyZWF0ZWRCeU9uUmFtQ3JlYXRlVXBkYXRlIH0gZnJvbSBcIi4vaGFuZGxlcnNcIjtcbmltcG9ydCB7IFJhbUZsYXZvdXIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IERlY29yYXRpb24sIE1ldGFkYXRhLCBwcm9wTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IFJhbVBhZ2luYXRvciB9IGZyb20gXCIuL1JhbVBhZ2luYXRvclwiO1xuaW1wb3J0IHsgQ29udGV4dHVhbEFyZ3MgfSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEluLW1lbW9yeSBhZGFwdGVyIGZvciBkYXRhIHBlcnNpc3RlbmNlXG4gKiBAc3VtbWFyeSBUaGUgUmFtQWRhcHRlciBwcm92aWRlcyBhbiBpbi1tZW1vcnkgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBlcnNpc3RlbmNlIGxheWVyLlxuICogSXQgc3RvcmVzIGRhdGEgaW4gSmF2YVNjcmlwdCBNYXBzIGFuZCBwcm92aWRlcyBDUlVEIG9wZXJhdGlvbnMgYW5kIHF1ZXJ5IGNhcGFiaWxpdGllcy5cbiAqIFRoaXMgYWRhcHRlciBpcyB1c2VmdWwgZm9yIHRlc3RpbmcsIHByb3RvdHlwaW5nLCBhbmQgYXBwbGljYXRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZVxuICogcGVyc2lzdGVudCBzdG9yYWdlIGFjcm9zcyBhcHBsaWNhdGlvbiByZXN0YXJ0cy5cbiAqIEBjbGFzcyBSYW1BZGFwdGVyXG4gKiBAY2F0ZWdvcnkgUmFtXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgbmV3IFJBTSBhZGFwdGVyXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IFJhbUFkYXB0ZXIoJ215UmFtQWRhcHRlcicpO1xuICpcbiAqIC8vIENyZWF0ZSBhIHJlcG9zaXRvcnkgZm9yIGEgbW9kZWxcbiAqIGNvbnN0IHVzZXJSZXBvID0gbmV3IChhZGFwdGVyLnJlcG9zaXRvcnk8VXNlcj4oKSkoVXNlciwgYWRhcHRlcik7XG4gKlxuICogLy8gUGVyZm9ybSBDUlVEIG9wZXJhdGlvbnNcbiAqIGNvbnN0IHVzZXIgPSBuZXcgVXNlcih7IG5hbWU6ICdKb2huJywgZW1haWw6ICdqb2huQGV4YW1wbGUuY29tJyB9KTtcbiAqIGF3YWl0IHVzZXJSZXBvLmNyZWF0ZSh1c2VyKTtcbiAqIGNvbnN0IHJldHJpZXZlZFVzZXIgPSBhd2FpdCB1c2VyUmVwby5maW5kQnlJZCh1c2VyLmlkKTtcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgUmVwb3NpdG9yeVxuICogICBwYXJ0aWNpcGFudCBSYW1BZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IFN0b3JhZ2UgYXMgSW4tTWVtb3J5IFN0b3JhZ2VcbiAqXG4gKiAgIENsaWVudC0+PlJlcG9zaXRvcnk6IGNyZWF0ZShtb2RlbClcbiAqICAgUmVwb3NpdG9yeS0+PlJhbUFkYXB0ZXI6IGNyZWF0ZSh0YWJsZU5hbWUsIGlkLCBtb2RlbClcbiAqICAgUmFtQWRhcHRlci0+PlJhbUFkYXB0ZXI6IGxvY2suYWNxdWlyZSgpXG4gKiAgIFJhbUFkYXB0ZXItPj5TdG9yYWdlOiBzZXQoaWQsIG1vZGVsKVxuICogICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogbG9jay5yZWxlYXNlKClcbiAqICAgUmFtQWRhcHRlci0tPj5SZXBvc2l0b3J5OiBtb2RlbFxuICogICBSZXBvc2l0b3J5LS0+PkNsaWVudDogbW9kZWxcbiAqXG4gKiAgIENsaWVudC0+PlJlcG9zaXRvcnk6IGZpbmRCeUlkKGlkKVxuICogICBSZXBvc2l0b3J5LT4+UmFtQWRhcHRlcjogcmVhZCh0YWJsZU5hbWUsIGlkKVxuICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogZ2V0KGlkKVxuICogICBTdG9yYWdlLS0+PlJhbUFkYXB0ZXI6IG1vZGVsXG4gKiAgIFJhbUFkYXB0ZXItLT4+UmVwb3NpdG9yeTogbW9kZWxcbiAqICAgUmVwb3NpdG9yeS0tPj5DbGllbnQ6IG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBSYW1BZGFwdGVyIGV4dGVuZHMgQWRhcHRlcjxcbiAgUmFtQ29uZmlnLFxuICBSYW1TdG9yYWdlLFxuICBSYXdSYW1RdWVyeSxcbiAgUmFtQ29udGV4dFxuPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbmY6IFJhbUNvbmZpZyA9IHtcbiAgICAgIGxvY2s6IG5ldyBNdWx0aUxvY2soKSxcbiAgICB9IGFzIGFueSxcbiAgICBhbGlhcz86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihjb25mLCBSYW1GbGF2b3VyLCBhbGlhcyk7XG4gICAgdGhpcy5sb2NrID0gY29uZi5sb2NrIHx8IG5ldyBNdWx0aUxvY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgcmVwb3NpdG9yeSBjb25zdHJ1Y3RvciBmb3IgYSBtb2RlbFxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIHJlcG9zaXRvcmllcyB0aGF0IHdvcmsgd2l0aCB0aGUgc3BlY2lmaWVkIG1vZGVsIHR5cGUuXG4gICAqIFRoaXMgbWV0aG9kIG92ZXJyaWRlcyB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlIFJBTS1zcGVjaWZpYyByZXBvc2l0b3J5IGZ1bmN0aW9uYWxpdHkuXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZm9yIHRoZSByZXBvc2l0b3J5XG4gICAqIEByZXR1cm4ge0NvbnN0cnVjdG9yPFJhbVJlcG9zaXRvcnk8TT4+fSBBIGNvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBSQU0gcmVwb3NpdG9yaWVzXG4gICAqL1xuICBvdmVycmlkZSByZXBvc2l0b3J5PFxuICAgIFIgZXh0ZW5kcyBSZXBvc2l0b3J5PGFueSwgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+PixcbiAgPigpOiBDb25zdHJ1Y3RvcjxSPiB7XG4gICAgcmV0dXJuIHN1cGVyLnJlcG9zaXRvcnk8Uj4oKSBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFI+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG9wZXJhdGlvbiBmbGFncyB3aXRoIFVVSURcbiAgICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSBmbGFncyB3aXRoIGEgVVVJRCBmb3IgdXNlciBpZGVudGlmaWNhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IGFsbCBvcGVyYXRpb25zIGhhdmUgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdHJhY2tpbmcgcHVycG9zZXMuXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZm9yIHRoZSBvcGVyYXRpb25cbiAgICogQHBhcmFtIHtPcGVyYXRpb25LZXlzfSBvcGVyYXRpb24gLSBUaGUgdHlwZSBvZiBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UGFydGlhbDxSYW1GbGFncz59IGZsYWdzIC0gUGFydGlhbCBmbGFncyB0byBiZSBleHRlbmRlZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJhbUZsYWdzPn0gQ29tcGxldGUgZmxhZ3Mgd2l0aCBVVUlEXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBmbGFnczxNIGV4dGVuZHMgTW9kZWw8Ym9vbGVhbj4+KFxuICAgIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5cyxcbiAgICBtb2RlbDogQ29uc3RydWN0b3I8TT4sXG4gICAgZmxhZ3M6IFBhcnRpYWw8UmFtRmxhZ3M+XG4gICk6IFByb21pc2U8UmFtRmxhZ3M+IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGF3YWl0IHN1cGVyLmZsYWdzKFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVVSUQ6IGZsYWdzLlVVSUQgfHwgdGhpcy5jb25maWcudXNlciB8fCBcIlwiICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZsYWdzXG4gICAgICAgIClcbiAgICAgIClcbiAgICApIGFzIFJhbUZsYWdzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIERpc3BhdGNoKCk6IERpc3BhdGNoPFJhbUFkYXB0ZXI+IHtcbiAgICByZXR1cm4gc3VwZXIuRGlzcGF0Y2goKSBhcyBEaXNwYXRjaDxSYW1BZGFwdGVyPjtcbiAgfVxuXG4gIHByaXZhdGUgaW5kZXhlczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PlxuICA+ID0ge307XG5cbiAgcHJpdmF0ZSBsb2NrOiBMb2NrO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5kZXhlcyBtb2RlbHMgaW4gdGhlIFJBTSBhZGFwdGVyXG4gICAqIEBzdW1tYXJ5IEEgbm8tb3AgaW5kZXhpbmcgbWV0aG9kIGZvciB0aGUgUkFNIGFkYXB0ZXIuXG4gICAqIFNpbmNlIFJBTSBhZGFwdGVyIGRvZXNuJ3QgcmVxdWlyZSBleHBsaWNpdCBpbmRleGluZywgdGhpcyBtZXRob2Qgc2ltcGx5IHJlc29sdmVzIGltbWVkaWF0ZWx5LlxuICAgKiBAcGFyYW0gbW9kZWxzIC0gTW9kZWxzIHRvIGJlIGluZGV4ZWQgKHVudXNlZClcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluZGV4aW5nIGlzIGNvbXBsZXRlXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIGluZGV4KC4uLm1vZGVsczogUmVjb3JkPHN0cmluZywgYW55PltdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIGEgbW9kZWwgZm9yIHN0b3JhZ2VcbiAgICogQHN1bW1hcnkgQ29udmVydHMgYSBtb2RlbCBpbnN0YW5jZSB0byBhIGZvcm1hdCBzdWl0YWJsZSBmb3Igc3RvcmFnZSBpbiB0aGUgUkFNIGFkYXB0ZXIuXG4gICAqIFRoaXMgbWV0aG9kIGV4dHJhY3RzIHRoZSBwcmltYXJ5IGtleSBhbmQgY3JlYXRlcyBhIHJlY29yZCB3aXRob3V0IHRoZSBwcmltYXJ5IGtleSBmaWVsZC5cbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBiZWluZyBwcmVwYXJlZFxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHByZXBhcmVcbiAgICogQHBhcmFtIHBrIC0gVGhlIHByaW1hcnkga2V5IHByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybiBPYmplY3QgY29udGFpbmluZyB0aGUgcmVjb3JkIGFuZCBJRFxuICAgKi9cbiAgb3ZlcnJpZGUgcHJlcGFyZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBNLFxuICAgIC4uLmFyZ3M6IFsuLi5hbnlbXSwgUmFtQ29udGV4dF1cbiAgKToge1xuICAgIHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRyYW5zaWVudD86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIH0ge1xuICAgIGNvbnN0IGN0eCA9IGFyZ3MucG9wKCk7XG4gICAgY29uc3QgcHJlcGFyZWQgPSBzdXBlci5wcmVwYXJlKG1vZGVsLCAuLi5hcmdzLCBjdHgpO1xuICAgIHJldHVybiBwcmVwYXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdG9yZWQgcmVjb3JkIGJhY2sgdG8gYSBtb2RlbCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBSZWNvbnN0cnVjdHMgYSBtb2RlbCBpbnN0YW5jZSBmcm9tIGEgc3RvcmVkIHJlY29yZCBieSBhZGRpbmcgYmFjayB0aGUgcHJpbWFyeSBrZXkuXG4gICAqIFRoaXMgbWV0aG9kIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSBwcmVwYXJlIG1ldGhvZC5cbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0byByZXZlcnQgdG9cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmogLSBUaGUgc3RvcmVkIHJlY29yZFxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjbGFzcyBvciBuYW1lXG4gICAqIEBwYXJhbSB7UHJpbWFyeUtleVR5cGV9IGlkIC0gVGhlIHByaW1hcnkga2V5IHZhbHVlXG4gICAqIEByZXR1cm4ge019IFRoZSByZWNvbnN0cnVjdGVkIG1vZGVsIGluc3RhbmNlXG4gICAqL1xuICBvdmVycmlkZSByZXZlcnQ8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICB0cmFuc2llbnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IFsuLi5hbnlbXSwgUmFtQ29udGV4dF1cbiAgKTogTSB7XG4gICAgY29uc3QgcmVzID0gc3VwZXIucmV2ZXJ0KG9iaiwgY2xhenosIGlkLCB0cmFuc2llbnQsIC4uLmFyZ3MpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgcmVjb3JkIGluIHRoZSBpbi1tZW1vcnkgc3RvcmFnZVxuICAgKiBAc3VtbWFyeSBTdG9yZXMgYSBuZXcgcmVjb3JkIGluIHRoZSBzcGVjaWZpZWQgdGFibGUgd2l0aCB0aGUgZ2l2ZW4gSUQuXG4gICAqIFRoaXMgbWV0aG9kIGFjcXVpcmVzIGEgbG9jayB0byBlbnN1cmUgdGhyZWFkIHNhZmV0eSwgY3JlYXRlcyB0aGUgdGFibGUgaWYgaXQgZG9lc24ndCBleGlzdCxcbiAgICogY2hlY2tzIGZvciBjb25mbGljdHMsIGFuZCBzdG9yZXMgdGhlIG1vZGVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhenogLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gc3RvcmUgdGhlIHJlY29yZCBpblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZWNvcmRcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBtb2RlbCAtIFRoZSByZWNvcmQgZGF0YSB0byBzdG9yZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgc3RvcmVkIHJlY29yZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBSYW1BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgU3RvcmFnZSBhcyBJbi1NZW1vcnkgU3RvcmFnZVxuICAgKlxuICAgKiAgIENhbGxlci0+PlJhbUFkYXB0ZXI6IGNyZWF0ZSh0YWJsZU5hbWUsIGlkLCBtb2RlbClcbiAgICogICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogbG9jay5hY3F1aXJlKClcbiAgICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogaGFzKHRhYmxlTmFtZSlcbiAgICogICBhbHQgVGFibGUgZG9lc24ndCBleGlzdFxuICAgKiAgICAgUmFtQWRhcHRlci0+PlN0b3JhZ2U6IHNldCh0YWJsZU5hbWUsIG5ldyBNYXAoKSlcbiAgICogICBlbmRcbiAgICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogaGFzKGlkKVxuICAgKiAgIGFsdCBSZWNvcmQgZXhpc3RzXG4gICAqICAgICBSYW1BZGFwdGVyLS0+PkNhbGxlcjogdGhyb3cgQ29uZmxpY3RFcnJvclxuICAgKiAgIGVuZFxuICAgKiAgIFJhbUFkYXB0ZXItPj5TdG9yYWdlOiBzZXQoaWQsIG1vZGVsKVxuICAgKiAgIFJhbUFkYXB0ZXItPj5SYW1BZGFwdGVyOiBsb2NrLnJlbGVhc2UoKVxuICAgKiAgIFJhbUFkYXB0ZXItLT4+Q2FsbGVyOiBtb2RlbFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxSYW1Db250ZXh0PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGUpO1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgbG9nLmRlYnVnKGBjcmVhdGluZyByZWNvcmQgaW4gdGFibGUgJHt0YWJsZU5hbWV9IHdpdGggaWQgJHtpZH1gKTtcbiAgICBhd2FpdCB0aGlzLmxvY2suYWNxdWlyZSh0YWJsZU5hbWUpO1xuICAgIGlmICghdGhpcy5jbGllbnQuaGFzKHRhYmxlTmFtZSkpIHRoaXMuY2xpZW50LnNldCh0YWJsZU5hbWUsIG5ldyBNYXAoKSk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jbGllbnQuZ2V0KHRhYmxlTmFtZSkgJiZcbiAgICAgIHRoaXMuY2xpZW50LmdldCh0YWJsZU5hbWUpPy5oYXMoaWQgYXMgYW55KVxuICAgICkge1xuICAgICAgdGhpcy5sb2NrLnJlbGVhc2UodGFibGVOYW1lKTtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gYWxyZWFkeSBleGlzdHMgaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsaWVudC5nZXQodGFibGVOYW1lKT8uc2V0KGlkIGFzIGFueSwgbW9kZWwpO1xuICAgIHRoaXMubG9jay5yZWxlYXNlKHRhYmxlTmFtZSk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSByZWNvcmQgZnJvbSBpbi1tZW1vcnkgc3RvcmFnZVxuICAgKiBAc3VtbWFyeSBGZXRjaGVzIGEgcmVjb3JkIHdpdGggdGhlIHNwZWNpZmllZCBJRCBmcm9tIHRoZSBnaXZlbiB0YWJsZS5cbiAgICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSB0YWJsZSBhbmQgcmVjb3JkIGV4aXN0IGFuZCB0aHJvd3MgYXBwcm9wcmlhdGUgZXJyb3JzIGlmIG5vdC5cbiAgICogQHBhcmFtIHtDb25zdHJ1Y3Rvcn0gY2xhenogLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gcmV0cmlldmUgZnJvbVxuICAgKiBAcGFyYW0ge1ByaW1hcnlLZXlUeXBlfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVjb3JkIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXRyaWV2ZWQgcmVjb3JkXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICAgKiAgIHBhcnRpY2lwYW50IFJhbUFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBTdG9yYWdlIGFzIEluLU1lbW9yeSBTdG9yYWdlXG4gICAqXG4gICAqICAgQ2FsbGVyLT4+UmFtQWRhcHRlcjogcmVhZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIFJhbUFkYXB0ZXItPj5TdG9yYWdlOiBoYXModGFibGVOYW1lKVxuICAgKiAgIGFsdCBUYWJsZSBkb2Vzbid0IGV4aXN0XG4gICAqICAgICBSYW1BZGFwdGVyLS0+PkNhbGxlcjogdGhyb3cgTm90Rm91bmRFcnJvclxuICAgKiAgIGVuZFxuICAgKiAgIFJhbUFkYXB0ZXItPj5TdG9yYWdlOiBoYXMoaWQpXG4gICAqICAgYWx0IFJlY29yZCBkb2Vzbid0IGV4aXN0XG4gICAqICAgICBSYW1BZGFwdGVyLS0+PkNhbGxlcjogdGhyb3cgTm90Rm91bmRFcnJvclxuICAgKiAgIGVuZFxuICAgKiAgIFJhbUFkYXB0ZXItPj5TdG9yYWdlOiBnZXQoaWQpXG4gICAqICAgU3RvcmFnZS0tPj5SYW1BZGFwdGVyOiByZWNvcmRcbiAgICogICBSYW1BZGFwdGVyLS0+PkNhbGxlcjogcmVjb3JkXG4gICAqL1xuICBhc3luYyByZWFkPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxSYW1Db250ZXh0PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZWFkKTtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIGxvZy5kZWJ1ZyhgcmVhZGluZyByZWNvcmQgaW4gdGFibGUgJHt0YWJsZU5hbWV9IHdpdGggaWQgJHtpZH1gKTtcbiAgICBpZiAoIXRoaXMuY2xpZW50Lmhhcyh0YWJsZU5hbWUpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFRhYmxlICR7dGFibGVOYW1lfSBub3QgZm91bmRgKTtcbiAgICBpZiAoIXRoaXMuY2xpZW50LmdldCh0YWJsZU5hbWUpPy5oYXMoaWQgYXMgYW55KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldCh0YWJsZU5hbWUpPy5nZXQoaWQgYXMgYW55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBhbiBleGlzdGluZyByZWNvcmQgaW4gdGhlIGluLW1lbW9yeSBzdG9yYWdlXG4gICAqIEBzdW1tYXJ5IFVwZGF0ZXMgYSByZWNvcmQgd2l0aCB0aGUgc3BlY2lmaWVkIElEIGluIHRoZSBnaXZlbiB0YWJsZS5cbiAgICogVGhpcyBtZXRob2QgYWNxdWlyZXMgYSBsb2NrIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5LCBjaGVja3MgaWYgdGhlIHRhYmxlIGFuZCByZWNvcmQgZXhpc3QsXG4gICAqIGFuZCB1cGRhdGVzIHRoZSByZWNvcmQgd2l0aCB0aGUgbmV3IGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmluZyB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVjb3JkIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIG5ldyByZWNvcmQgZGF0YVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdXBkYXRlZCByZWNvcmRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUmFtQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFN0b3JhZ2UgYXMgSW4tTWVtb3J5IFN0b3JhZ2VcbiAgICpcbiAgICogICBDYWxsZXItPj5SYW1BZGFwdGVyOiB1cGRhdGUodGFibGVOYW1lLCBpZCwgbW9kZWwpXG4gICAqICAgUmFtQWRhcHRlci0+PlJhbUFkYXB0ZXI6IGxvY2suYWNxdWlyZSgpXG4gICAqICAgUmFtQWRhcHRlci0+PlN0b3JhZ2U6IGhhcyh0YWJsZU5hbWUpXG4gICAqICAgYWx0IFRhYmxlIGRvZXNuJ3QgZXhpc3RcbiAgICogICAgIFJhbUFkYXB0ZXItLT4+Q2FsbGVyOiB0aHJvdyBOb3RGb3VuZEVycm9yXG4gICAqICAgZW5kXG4gICAqICAgUmFtQWRhcHRlci0+PlN0b3JhZ2U6IGhhcyhpZClcbiAgICogICBhbHQgUmVjb3JkIGRvZXNuJ3QgZXhpc3RcbiAgICogICAgIFJhbUFkYXB0ZXItLT4+Q2FsbGVyOiB0aHJvdyBOb3RGb3VuZEVycm9yXG4gICAqICAgZW5kXG4gICAqICAgUmFtQWRhcHRlci0+PlN0b3JhZ2U6IHNldChpZCwgbW9kZWwpXG4gICAqICAgUmFtQWRhcHRlci0+PlJhbUFkYXB0ZXI6IGxvY2sucmVsZWFzZSgpXG4gICAqICAgUmFtQWRhcHRlci0tPj5DYWxsZXI6IG1vZGVsXG4gICAqL1xuICBhc3luYyB1cGRhdGU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPFJhbUNvbnRleHQ+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnVwZGF0ZSk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsb2cuZGVidWcoYHVwZGF0aW5nIHJlY29yZCBpbiB0YWJsZSAke3RhYmxlTmFtZX0gd2l0aCBpZCAke2lkfWApO1xuXG4gICAgYXdhaXQgdGhpcy5sb2NrLmFjcXVpcmUodGFibGVOYW1lKTtcbiAgICBpZiAoIXRoaXMuY2xpZW50Lmhhcyh0YWJsZU5hbWUpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFRhYmxlICR7dGFibGVOYW1lfSBub3QgZm91bmRgKTtcbiAgICBpZiAoIXRoaXMuY2xpZW50LmdldCh0YWJsZU5hbWUpPy5oYXMoaWQgYXMgYW55KSkge1xuICAgICAgdGhpcy5sb2NrLnJlbGVhc2UodGFibGVOYW1lKTtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGllbnQuZ2V0KHRhYmxlTmFtZSk/LnNldChpZCBhcyBhbnksIG1vZGVsKTtcbiAgICB0aGlzLmxvY2sucmVsZWFzZSh0YWJsZU5hbWUpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIHJlY29yZCBmcm9tIHRoZSBpbi1tZW1vcnkgc3RvcmFnZVxuICAgKiBAc3VtbWFyeSBSZW1vdmVzIGEgcmVjb3JkIHdpdGggdGhlIHNwZWNpZmllZCBJRCBmcm9tIHRoZSBnaXZlbiB0YWJsZS5cbiAgICogVGhpcyBtZXRob2QgYWNxdWlyZXMgYSBsb2NrIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5LCBjaGVja3MgaWYgdGhlIHRhYmxlIGFuZCByZWNvcmQgZXhpc3QsXG4gICAqIHJldHJpZXZlcyB0aGUgcmVjb3JkIGJlZm9yZSBkZWxldGlvbiwgYW5kIHRoZW4gcmVtb3ZlcyBpdCBmcm9tIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmluZyB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVjb3JkIHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZGVsZXRlZCByZWNvcmRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUmFtQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFN0b3JhZ2UgYXMgSW4tTWVtb3J5IFN0b3JhZ2VcbiAgICpcbiAgICogICBDYWxsZXItPj5SYW1BZGFwdGVyOiBkZWxldGUodGFibGVOYW1lLCBpZClcbiAgICogICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogbG9jay5hY3F1aXJlKClcbiAgICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogaGFzKHRhYmxlTmFtZSlcbiAgICogICBhbHQgVGFibGUgZG9lc24ndCBleGlzdFxuICAgKiAgICAgUmFtQWRhcHRlci0tPj5DYWxsZXI6IHRocm93IE5vdEZvdW5kRXJyb3JcbiAgICogICBlbmRcbiAgICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogaGFzKGlkKVxuICAgKiAgIGFsdCBSZWNvcmQgZG9lc24ndCBleGlzdFxuICAgKiAgICAgUmFtQWRhcHRlci0tPj5DYWxsZXI6IHRocm93IE5vdEZvdW5kRXJyb3JcbiAgICogICBlbmRcbiAgICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogZ2V0KGlkKVxuICAgKiAgIFN0b3JhZ2UtLT4+UmFtQWRhcHRlcjogcmVjb3JkXG4gICAqICAgUmFtQWRhcHRlci0+PlN0b3JhZ2U6IGRlbGV0ZShpZClcbiAgICogICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogbG9jay5yZWxlYXNlKClcbiAgICogICBSYW1BZGFwdGVyLS0+PkNhbGxlcjogcmVjb3JkXG4gICAqL1xuICBhc3luYyBkZWxldGU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPFJhbUNvbnRleHQ+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmRlbGV0ZSk7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsb2cuZGVidWcoYGRlbGV0aW5nIHJlY29yZCBmcm9tIHRhYmxlICR7dGFibGVOYW1lfSB3aXRoIGlkICR7aWR9YCk7XG5cbiAgICBhd2FpdCB0aGlzLmxvY2suYWNxdWlyZSh0YWJsZU5hbWUpO1xuICAgIGlmICghdGhpcy5jbGllbnQuaGFzKHRhYmxlTmFtZSkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgVGFibGUgJHt0YWJsZU5hbWV9IG5vdCBmb3VuZGApO1xuICAgIGlmICghdGhpcy5jbGllbnQuZ2V0KHRhYmxlTmFtZSk/LmhhcyhpZCBhcyBhbnkpKSB7XG4gICAgICB0aGlzLmxvY2sucmVsZWFzZSh0YWJsZU5hbWUpO1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBuYXRpdmVkID0gdGhpcy5jbGllbnQuZ2V0KHRhYmxlTmFtZSk/LmdldChpZCBhcyBhbnkpO1xuICAgIHRoaXMuY2xpZW50LmdldCh0YWJsZU5hbWUpPy5kZWxldGUoaWQgYXMgYW55KTtcbiAgICB0aGlzLmxvY2sucmVsZWFzZSh0YWJsZU5hbWUpO1xuICAgIHJldHVybiBuYXRpdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIG9yIGNyZWF0ZXMgYSB0YWJsZSBpbiB0aGUgaW4tbWVtb3J5IHN0b3JhZ2VcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBNYXAgcmVwcmVzZW50aW5nIGEgdGFibGUgZm9yIGEgZ2l2ZW4gbW9kZWwgY2xhc3MuXG4gICAqIElmIHRoZSB0YWJsZSBkb2Vzbid0IGV4aXN0LCBpdCBjcmVhdGVzIGEgbmV3IG9uZSBzbyBjYWxsZXJzIGNhbiBpbnNlcnQgb3JcbiAgICogcXVlcnkgZW50aXRpZXMgd2l0aG91dCBudWxsIHJlZmVyZW5jZSBjaGVja3MuXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZm9yIHRoZSB0YWJsZVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBmcm9tIC0gVGhlIG1vZGVsIGNsYXNzXG4gICAqIEByZXR1cm4ge01hcDxzdHJpbmcgfCBudW1iZXIsIGFueT4gfCB1bmRlZmluZWR9IFRoZSB0YWJsZSBNYXAgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdGFibGVGb3I8TSBleHRlbmRzIE1vZGVsPihmcm9tOiBDb25zdHJ1Y3RvcjxNPikge1xuICAgIGNvbnN0IHRhYmxlID0gTW9kZWwudGFibGVOYW1lKGZyb20pO1xuICAgIGlmICghdGhpcy5jbGllbnQuaGFzKHRhYmxlKSkgdGhpcy5jbGllbnQuc2V0KHRhYmxlLCBuZXcgTWFwKCkpO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQodGFibGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBhIHJhdyBxdWVyeSBhZ2FpbnN0IHRoZSBpbi1tZW1vcnkgc3RvcmFnZVxuICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBhIHF1ZXJ5IG9wZXJhdGlvbiBvbiB0aGUgaW4tbWVtb3J5IGRhdGEgc3RvcmUgdXNpbmcgdGhlIHByb3ZpZGVkIHF1ZXJ5IHNwZWNpZmljYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGZpbHRlcmluZywgc29ydGluZywgcGFnaW5hdGlvbiwgYW5kIGZpZWxkIHNlbGVjdGlvbi5cbiAgICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIHF1ZXJ5XG4gICAqIEBwYXJhbSB7UmF3UmFtUXVlcnk8YW55Pn0gcmF3SW5wdXQgLSBUaGUgcXVlcnkgc3BlY2lmaWNhdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcXVlcnkgcmVzdWx0c1xuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBSYW1BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgU3RvcmFnZSBhcyBJbi1NZW1vcnkgU3RvcmFnZVxuICAgKlxuICAgKiAgIENhbGxlci0+PlJhbUFkYXB0ZXI6IHJhdyhyYXdJbnB1dClcbiAgICogICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogdGFibGVGb3IoZnJvbSlcbiAgICogICBhbHQgVGFibGUgZG9lc24ndCBleGlzdFxuICAgKiAgICAgUmFtQWRhcHRlci0tPj5DYWxsZXI6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICogICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogZmluZFByaW1hcnlLZXkobmV3IGZyb20oKSlcbiAgICogICBSYW1BZGFwdGVyLT4+U3RvcmFnZTogZW50cmllcygpXG4gICAqICAgU3RvcmFnZS0tPj5SYW1BZGFwdGVyOiBlbnRyaWVzXG4gICAqICAgbG9vcCBGb3IgZWFjaCBlbnRyeVxuICAgKiAgICAgUmFtQWRhcHRlci0+PlJhbUFkYXB0ZXI6IHJldmVydChyLCBmcm9tLCBpZCwgcGspXG4gICAqICAgZW5kXG4gICAqICAgYWx0IFdoZXJlIGNvbmRpdGlvbiBleGlzdHNcbiAgICogICAgIFJhbUFkYXB0ZXItPj5SYW1BZGFwdGVyOiByZXN1bHQuZmlsdGVyKHdoZXJlKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBTb3J0IGNvbmRpdGlvbiBleGlzdHNcbiAgICogICAgIFJhbUFkYXB0ZXItPj5SYW1BZGFwdGVyOiByZXN1bHQuc29ydChzb3J0KVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBTa2lwIHNwZWNpZmllZFxuICAgKiAgICAgUmFtQWRhcHRlci0+PlJhbUFkYXB0ZXI6IHJlc3VsdC5zbGljZShza2lwKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBMaW1pdCBzcGVjaWZpZWRcbiAgICogICAgIFJhbUFkYXB0ZXItPj5SYW1BZGFwdGVyOiByZXN1bHQuc2xpY2UoMCwgbGltaXQpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IFNlbGVjdCBmaWVsZHMgc3BlY2lmaWVkXG4gICAqICAgICBsb29wIEZvciBlYWNoIHJlc3VsdFxuICAgKiAgICAgICBSYW1BZGFwdGVyLT4+UmFtQWRhcHRlcjogRmlsdGVyIHRvIHNlbGVjdGVkIGZpZWxkc1xuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqICAgUmFtQWRhcHRlci0tPj5DYWxsZXI6IHJlc3VsdFxuICAgKi9cbiAgYXN5bmMgcmF3PFIsIEQgZXh0ZW5kcyBib29sZWFuPihcbiAgICByYXdJbnB1dDogUmF3UmFtUXVlcnk8YW55PixcbiAgICBkb2NzT25seTogRCA9IHRydWUgYXMgRCxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxSYW1Db250ZXh0PlxuICApOiBQcm9taXNlPFJhd1Jlc3VsdDxSLCBEPj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmF3KTtcbiAgICBsb2cuZGVidWcoYHBlcmZvcm1pbmcgcmF3IHF1ZXJ5OiAke0pTT04uc3RyaW5naWZ5KHJhd0lucHV0KX1gKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHdoZXJlLFxuICAgICAgc29ydCxcbiAgICAgIGxpbWl0LFxuICAgICAgc2tpcCxcbiAgICAgIGZyb20sXG4gICAgICBncm91cEJ5LFxuICAgICAgY291bnQ6IGNvdW50RmllbGQsXG4gICAgICBjb3VudERpc3RpbmN0OiBjb3VudERpc3RpbmN0RmllbGQsXG4gICAgICBtaW46IG1pbkZpZWxkLFxuICAgICAgbWF4OiBtYXhGaWVsZCxcbiAgICAgIHN1bTogc3VtRmllbGQsXG4gICAgICBhdmc6IGF2Z0ZpZWxkLFxuICAgICAgZGlzdGluY3Q6IGRpc3RpbmN0RmllbGQsXG4gICAgfSA9IHJhd0lucHV0O1xuICAgIGxldCB7IHNlbGVjdCB9ID0gcmF3SW5wdXQ7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMudGFibGVGb3IoZnJvbSk7XG4gICAgaWYgKCFjb2xsZWN0aW9uKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFRhYmxlICR7ZnJvbX0gbm90IGZvdW5kIGluIFJhbUFkYXB0ZXJgKTtcbiAgICBjb25zdCBjbGF6eiA9IGZyb207XG4gICAgY29uc3QgaWQgPSBNb2RlbC5wayhmcm9tKTtcbiAgICBjb25zdCBwcm9wcyA9IE1ldGFkYXRhLmdldChmcm9tLCBNZXRhZGF0YS5rZXkoREJLZXlzLklELCBpZCBhcyBzdHJpbmcpKTtcblxuICAgIGxldCByZXN1bHQ6IGFueVtdID0gQXJyYXkuZnJvbShjb2xsZWN0aW9uLmVudHJpZXMoKSkubWFwKChbcGssIHJdKSA9PlxuICAgICAgdGhpcy5yZXZlcnQoXG4gICAgICAgIHIsXG4gICAgICAgIGZyb20sXG4gICAgICAgIFNlcXVlbmNlLnBhcnNlVmFsdWUocHJvcHMudHlwZSBhcyBhbnksIHBrIGFzIHN0cmluZykgYXMgc3RyaW5nLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGN0eFxuICAgICAgKVxuICAgICk7XG4gICAgaWYgKHNvcnQpIHJlc3VsdCA9IHJlc3VsdC5zb3J0KHNvcnQpO1xuXG4gICAgcmVzdWx0ID0gd2hlcmUgPyByZXN1bHQuZmlsdGVyKHdoZXJlKSA6IHJlc3VsdDtcblxuICAgIC8vIEhhbmRsZSBhZ2dyZWdhdGUgb3BlcmF0aW9uc1xuICAgIGlmICgnY291bnQnIGluIHJhd0lucHV0KSB7XG4gICAgICAvLyBDb3VudCBvcGVyYXRpb25cbiAgICAgIGlmICghY291bnRGaWVsZCkge1xuICAgICAgICAvLyBDb3VudCBhbGwgcmVjb3JkcyAoQ09VTlQoKikpXG4gICAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ291bnQgc3BlY2lmaWMgZmllbGQgKG5vbi1udWxsIHZhbHVlcykgKENPVU5UKGZpZWxkKSlcbiAgICAgICAgY29uc3QgY291bnQgPSByZXN1bHQuZmlsdGVyKHIgPT4gcltjb3VudEZpZWxkIGFzIHN0cmluZ10gIT09IHVuZGVmaW5lZCAmJiByW2NvdW50RmllbGQgYXMgc3RyaW5nXSAhPT0gbnVsbCkubGVuZ3RoO1xuICAgICAgICByZXR1cm4gY291bnQgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvdW50RGlzdGluY3RGaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bY291bnREaXN0aW5jdEZpZWxkIGFzIHN0cmluZ107XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgc2Vlbi5hZGQoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHNlZW4uc2l6ZSBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgICB9XG5cbiAgICBpZiAobWluRmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbnN1cmVGaWVsZFR5cGUoXG4gICAgICAgIGNsYXp6LFxuICAgICAgICBtaW5GaWVsZCBhcyBzdHJpbmcsXG4gICAgICAgIFwiTUlOIG9wZXJhdGlvblwiLFxuICAgICAgICAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpIHx8IHR5cGUgPT09IFwiZGF0ZVwiLFxuICAgICAgICBcIm51bWVyaWMgb3IgZGF0ZVwiXG4gICAgICApO1xuICAgICAgLy8gTWluIG9wZXJhdGlvblxuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0Lm1hcChyID0+IHJbbWluRmllbGQgYXMgc3RyaW5nXSkuZmlsdGVyKHYgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuXG4gICAgICAvLyBGaW5kIG1pbmltdW0gdmFsdWUgcHJlc2VydmluZyBvcmlnaW5hbCB0eXBlXG4gICAgICBsZXQgbWluVmFsdWUgPSB2YWx1ZXNbMF07XG4gICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmlzb24gPSB2IGluc3RhbmNlb2YgRGF0ZSA/IHYuZ2V0VGltZSgpIDogKHR5cGVvZiB2ID09PSAnYmlnaW50JyA/IE51bWJlcih2KSA6IE51bWJlcih2KSk7XG4gICAgICAgIGNvbnN0IG1pbkNvbXBhcmlzb24gPSBtaW5WYWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBtaW5WYWx1ZS5nZXRUaW1lKCkgOiAodHlwZW9mIG1pblZhbHVlID09PSAnYmlnaW50JyA/IE51bWJlcihtaW5WYWx1ZSkgOiBOdW1iZXIobWluVmFsdWUpKTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPCBtaW5Db21wYXJpc29uKSB7XG4gICAgICAgICAgbWluVmFsdWUgPSB2O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbWluVmFsdWUgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgfVxuXG4gICAgaWYgKG1heEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZW5zdXJlRmllbGRUeXBlKFxuICAgICAgICBjbGF6eixcbiAgICAgICAgbWF4RmllbGQgYXMgc3RyaW5nLFxuICAgICAgICBcIk1BWCBvcGVyYXRpb25cIixcbiAgICAgICAgKHR5cGUpID0+IHRoaXMuaXNOdW1lcmljVHlwZSh0eXBlKSB8fCB0eXBlID09PSBcImRhdGVcIixcbiAgICAgICAgXCJudW1lcmljIG9yIGRhdGVcIlxuICAgICAgKTtcbiAgICAgIC8vIE1heCBvcGVyYXRpb25cbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbCBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHJlc3VsdC5tYXAociA9PiByW21heEZpZWxkIGFzIHN0cmluZ10pLmZpbHRlcih2ID0+IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsKTtcbiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbCBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcblxuICAgICAgLy8gRmluZCBtYXhpbXVtIHZhbHVlIHByZXNlcnZpbmcgb3JpZ2luYWwgdHlwZVxuICAgICAgbGV0IG1heFZhbHVlID0gdmFsdWVzWzBdO1xuICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuICAgICAgICBjb25zdCBjb21wYXJpc29uID0gdiBpbnN0YW5jZW9mIERhdGUgPyB2LmdldFRpbWUoKSA6ICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcgPyBOdW1iZXIodikgOiBOdW1iZXIodikpO1xuICAgICAgICBjb25zdCBtYXhDb21wYXJpc29uID0gbWF4VmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gbWF4VmFsdWUuZ2V0VGltZSgpIDogKHR5cGVvZiBtYXhWYWx1ZSA9PT0gJ2JpZ2ludCcgPyBOdW1iZXIobWF4VmFsdWUpIDogTnVtYmVyKG1heFZhbHVlKSk7XG4gICAgICAgIGlmIChjb21wYXJpc29uID4gbWF4Q29tcGFyaXNvbikge1xuICAgICAgICAgIG1heFZhbHVlID0gdjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1heFZhbHVlIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgIH1cblxuICAgIGlmIChzdW1GaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShcbiAgICAgICAgY2xhenosXG4gICAgICAgIHN1bUZpZWxkIGFzIHN0cmluZyxcbiAgICAgICAgXCJTVU0gb3BlcmF0aW9uXCIsXG4gICAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSksXG4gICAgICAgIFwibnVtZXJpY1wiXG4gICAgICApO1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0XG4gICAgICAgIC5tYXAoKHIpID0+IHJbc3VtRmllbGQgYXMgc3RyaW5nXSlcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgY29uc3Qgc3VtID0gdmFsdWVzLnJlZHVjZShcbiAgICAgICAgKGFjYywgdikgPT5cbiAgICAgICAgICBhY2MgKyB0aGlzLnRvTnVtZXJpY1ZhbHVlKHYsIHN1bUZpZWxkIGFzIHN0cmluZywgXCJTVU0gb3BlcmF0aW9uXCIpLFxuICAgICAgICAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIHN1bSBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgICB9XG5cbiAgICBpZiAoYXZnRmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZmllbGRUeXBlID0gdGhpcy5yZXNvbHZlRmllbGRUeXBlKGNsYXp6LCBhdmdGaWVsZCBhcyBzdHJpbmcpO1xuICAgICAgY29uc3QgaXNEYXRlRmllbGQgPSBmaWVsZFR5cGUgPT09IFwiZGF0ZVwiO1xuICAgICAgdGhpcy5lbnN1cmVGaWVsZFR5cGUoXG4gICAgICAgIGNsYXp6LFxuICAgICAgICBhdmdGaWVsZCBhcyBzdHJpbmcsXG4gICAgICAgIFwiQVZHIG9wZXJhdGlvblwiLFxuICAgICAgICAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpIHx8IHR5cGUgPT09IFwiZGF0ZVwiLFxuICAgICAgICBcIm51bWVyaWMgb3IgZGF0ZVwiXG4gICAgICApO1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0XG4gICAgICAgIC5tYXAoKHIpID0+IHJbYXZnRmllbGQgYXMgc3RyaW5nXSlcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuXG4gICAgICBpZiAoaXNEYXRlRmllbGQpIHtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wcyA9IHZhbHVlcy5tYXAoKHYpID0+XG4gICAgICAgICAgdiBpbnN0YW5jZW9mIERhdGUgPyB2LmdldFRpbWUoKSA6IG5ldyBEYXRlKHYpLmdldFRpbWUoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBhdmdUaW1lc3RhbXAgPVxuICAgICAgICAgIHRpbWVzdGFtcHMucmVkdWNlKChhY2MsIHQpID0+IGFjYyArIHQsIDApIC8gdGltZXN0YW1wcy5sZW5ndGg7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhdmdUaW1lc3RhbXApIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3RhbCA9IHZhbHVlcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHYpID0+XG4gICAgICAgICAgYWNjICsgdGhpcy50b051bWVyaWNWYWx1ZSh2LCBhdmdGaWVsZCBhcyBzdHJpbmcsIFwiQVZHIG9wZXJhdGlvblwiKSxcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGF2ZXJhZ2UgPSB0b3RhbCAvIHZhbHVlcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYXZlcmFnZSBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgICB9XG5cbiAgICBpZiAoZGlzdGluY3RGaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBEaXN0aW5jdCBvcGVyYXRpb25cbiAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gICAgICBjb25zdCBkaXN0aW5jdFJlc3VsdHM6IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtkaXN0aW5jdEZpZWxkIGFzIHN0cmluZ107XG4gICAgICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgaWYgKCFzZWVuLmhhcyhrZXkpKSB7XG4gICAgICAgICAgc2Vlbi5hZGQoa2V5KTtcbiAgICAgICAgICBkaXN0aW5jdFJlc3VsdHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBkaXN0aW5jdFJlc3VsdHMgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgfVxuXG4gICAgbGV0IGNvdW50OiBudW1iZXI7XG4gICAgbGV0IG91dHB1dDogYW55W10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGlmIChncm91cEJ5ICYmIGdyb3VwQnkubGVuZ3RoKSB7XG4gICAgICBjb25zdCBncm91cGVkID0gdGhpcy5ncm91cFJlY29yZHMocmVzdWx0LCBncm91cEJ5IGFzIChrZXlvZiBNb2RlbClbXSk7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZ3JvdXBlZCk7XG4gICAgICBjb3VudCA9IGtleXMubGVuZ3RoO1xuICAgICAgb3V0cHV0ID0gdGhpcy5hcHBseUdyb3VwUGFnaW5hdGlvbihncm91cGVkLCBza2lwLCBsaW1pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gcmVzdWx0Lmxlbmd0aDtcbiAgICAgIGxldCBwYWdlZCA9IHJlc3VsdDtcbiAgICAgIGlmIChza2lwKSBwYWdlZCA9IHBhZ2VkLnNsaWNlKHNraXApO1xuICAgICAgaWYgKGxpbWl0KSBwYWdlZCA9IHBhZ2VkLnNsaWNlKDAsIGxpbWl0KTtcbiAgICAgIG91dHB1dCA9IHBhZ2VkO1xuICAgIH1cblxuICAgIGlmIChzZWxlY3QgJiYgIShncm91cEJ5ICYmIGdyb3VwQnkubGVuZ3RoKSkge1xuICAgICAgc2VsZWN0ID0gQXJyYXkuaXNBcnJheShzZWxlY3QpID8gc2VsZWN0IDogW3NlbGVjdF07XG4gICAgICBvdXRwdXQgPSAob3V0cHV0IGFzIGFueVtdKS5tYXAoKHJvdykgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMocm93KS5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgIGlmICgoc2VsZWN0IGFzIHN0cmluZ1tdKS5pbmNsdWRlcyhrZXkpKSBhY2Nba2V5XSA9IHZhbDtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3NPbmx5KSByZXR1cm4gb3V0cHV0IGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBvdXRwdXQsXG4gICAgICBjb3VudCxcbiAgICB9IGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBSZWNvcmRzKFxuICAgIHJlY29yZHM6IGFueVtdLFxuICAgIHNlbGVjdG9yczogKGtleW9mIE1vZGVsKVtdXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICghc2VsZWN0b3JzLmxlbmd0aCkgcmV0dXJuIHJlY29yZHMgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjb25zdCBbY3VycmVudCwgLi4ucmVzdF0gPSBzZWxlY3RvcnM7XG4gICAgY29uc3QgZ3JvdXBlZDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5ub3JtYWxpemVHcm91cEtleShyZWNvcmRbY3VycmVudCBhcyBzdHJpbmddKTtcbiAgICAgIGlmICghZ3JvdXBlZFtrZXldKSBncm91cGVkW2tleV0gPSBbXTtcbiAgICAgIGdyb3VwZWRba2V5XS5wdXNoKHJlY29yZCk7XG4gICAgfVxuICAgIGlmICghcmVzdC5sZW5ndGgpIHJldHVybiBncm91cGVkO1xuICAgIGNvbnN0IG5lc3RlZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVzXSBvZiBPYmplY3QuZW50cmllcyhncm91cGVkKSkge1xuICAgICAgbmVzdGVkW2tleV0gPSB0aGlzLmdyb3VwUmVjb3Jkcyh2YWx1ZXMsIHJlc3QpO1xuICAgIH1cbiAgICByZXR1cm4gbmVzdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVHcm91cEtleSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwidW5kZWZpbmVkXCI7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gXCJudWxsXCI7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5R3JvdXBQYWdpbmF0aW9uKFxuICAgIGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgc2tpcD86IG51bWJlcixcbiAgICBsaW1pdD86IG51bWJlclxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBpZiAodHlwZW9mIHNraXAgPT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGxpbWl0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gZ3JvdXBlZDtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGdyb3VwZWQpO1xuICAgIGNvbnN0IHN0YXJ0ID0gc2tpcCA/PyAwO1xuICAgIGNvbnN0IGVuZCA9IHR5cGVvZiBsaW1pdCA9PT0gXCJ1bmRlZmluZWRcIiA/IHVuZGVmaW5lZCA6IHN0YXJ0ICsgbGltaXQ7XG4gICAgY29uc3QgcGFnZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKHN0YXJ0LCBlbmQpKSB7XG4gICAgICBwYWdlZFtrZXldID0gZ3JvdXBlZFtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gcGFnZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhbmQgY29udmVydHMgZXJyb3JzIHRvIGFwcHJvcHJpYXRlIHR5cGVzXG4gICAqIEBzdW1tYXJ5IEVuc3VyZXMgdGhhdCBlcnJvcnMgYXJlIG9mIHRoZSBjb3JyZWN0IHR5cGUgZm9yIGNvbnNpc3RlbnQgZXJyb3IgaGFuZGxpbmcuXG4gICAqIElmIHRoZSBlcnJvciBpcyBhbHJlYWR5IGEgQmFzZUVycm9yLCBpdCdzIHJldHVybmVkIGFzIGlzOyBvdGhlcndpc2UsIGl0J3Mgd3JhcHBlZCBpbiBhbiBJbnRlcm5hbEVycm9yLlxuICAgKiBAdGVtcGxhdGUgViAtIFRoZSBleHBlY3RlZCBlcnJvciB0eXBlLCBleHRlbmRpbmcgQmFzZUVycm9yXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVyciAtIFRoZSBlcnJvciB0byBwYXJzZVxuICAgKiBAcmV0dXJuIHtWfSBUaGUgcGFyc2VkIGVycm9yIG9mIHRoZSBleHBlY3RlZCB0eXBlXG4gICAqL1xuICBwYXJzZUVycm9yPFYgZXh0ZW5kcyBCYXNlRXJyb3I+KGVycjogRXJyb3IpOiBWIHtcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgQmFzZUVycm9yKSByZXR1cm4gZXJyIGFzIFY7XG4gICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKGVycikgYXMgVjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBzdGF0ZW1lbnQgYnVpbGRlciBmb3IgcXVlcmllc1xuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBuZXcgUmFtU3RhdGVtZW50IGluc3RhbmNlIGZvciBidWlsZGluZyBxdWVyaWVzLlxuICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgZm9yIGZsdWVudCBxdWVyeSBjb25zdHJ1Y3Rpb24gYWdhaW5zdCB0aGUgUkFNIGFkYXB0ZXIuXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZm9yIHRoZSBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmFtU3RhdGVtZW50PE0sIGFueT59IEEgbmV3IHN0YXRlbWVudCBidWlsZGVyIGluc3RhbmNlXG4gICAqL1xuICBTdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsPGJvb2xlYW4+PihcbiAgICBvdmVycmlkZXM/OiBQYXJ0aWFsPEFkYXB0ZXJGbGFncz5cbiAgKTogUmFtU3RhdGVtZW50PE0sIGFueSwgQWRhcHRlcjxhbnksIGFueSwgUmF3UmFtUXVlcnk8TT4sIFJhbUNvbnRleHQ+PiB7XG4gICAgcmV0dXJuIG5ldyBSYW1TdGF0ZW1lbnQ8XG4gICAgICBNLFxuICAgICAgYW55LFxuICAgICAgQWRhcHRlcjxhbnksIGFueSwgUmF3UmFtUXVlcnk8TT4sIFJhbUNvbnRleHQ+XG4gICAgPih0aGlzIGFzIGFueSwgb3ZlcnJpZGVzKTtcbiAgfVxuXG4gIFBhZ2luYXRvcjxNIGV4dGVuZHMgTW9kZWw8Ym9vbGVhbj4+KFxuICAgIHF1ZXJ5OiBSYXdSYW1RdWVyeSxcbiAgICBzaXplOiBudW1iZXIsXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+XG4gICk6IFJhbVBhZ2luYXRvcjxNPiB7XG4gICAgcmV0dXJuIG5ldyBSYW1QYWdpbmF0b3IodGhpcywgcXVlcnksIHNpemUsIGNsYXp6KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgb3ZlcnJpZGUgZm9yKGNvbmZpZzogUGFydGlhbDxSYW1Db25maWc+LCAuLi5hcmdzOiBhbnlbXSk6IHR5cGVvZiB0aGlzIHtcbiAgICBpZiAoIXRoaXMucHJveGllcykgdGhpcy5wcm94aWVzID0ge307XG4gICAgY29uc3Qga2V5ID0gYCR7dGhpcy5hbGlhc30gLSAke2hhc2hPYmooY29uZmlnKX1gO1xuICAgIGlmIChrZXkgaW4gdGhpcy5wcm94aWVzKSByZXR1cm4gdGhpcy5wcm94aWVzW2tleV0gYXMgdHlwZW9mIHRoaXM7XG5cbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0aGlzLCB7XG4gICAgICBnZXQ6ICh0YXJnZXQ6IHR5cGVvZiB0aGlzLCBwOiBzdHJpbmcgfCBzeW1ib2wsIHJlY2VpdmVyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHAgPT09IFwiX2NvbmZpZ1wiKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxDb25mOiBSYW1Db25maWcgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHAsIHJlY2VpdmVyKTtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb3JpZ2luYWxDb25mLCBjb25maWcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHAsIHJlY2VpdmVyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5wcm94aWVzW2tleV0gPSBwcm94eTtcbiAgICByZXR1cm4gcHJveHk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNldHMgdXAgUkFNLXNwZWNpZmljIGRlY29yYXRpb25zIGZvciBtb2RlbCBwcm9wZXJ0aWVzXG4gICAqIEBzdW1tYXJ5IENvbmZpZ3VyZXMgZGVjb3JhdGlvbnMgZm9yIGNyZWF0ZWRCeSBhbmQgdXBkYXRlZEJ5IGZpZWxkcyBpbiB0aGUgUkFNIGFkYXB0ZXIuXG4gICAqIFRoaXMgc3RhdGljIG1ldGhvZCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIHRvIHNldCB1cCBoYW5kbGVycyB0aGF0IGF1dG9tYXRpY2FsbHlcbiAgICogcG9wdWxhdGUgdGhlc2UgZmllbGRzIHdpdGggdGhlIGN1cnJlbnQgdXNlcidzIFVVSUQgZHVyaW5nIGNyZWF0ZSBhbmQgdXBkYXRlIG9wZXJhdGlvbnMuXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFJhbUFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEZWNvcmF0aW9uXG4gICAqICAgcGFydGljaXBhbnQgUmVwb3NpdG9yeVxuICAgKlxuICAgKiAgIFJhbUFkYXB0ZXItPj5SZXBvc2l0b3J5OiBrZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpXG4gICAqICAgUmVwb3NpdG9yeS0tPj5SYW1BZGFwdGVyOiBjcmVhdGVkQnlLZXlcbiAgICogICBSYW1BZGFwdGVyLT4+UmVwb3NpdG9yeToga2V5KFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZKVxuICAgKiAgIFJlcG9zaXRvcnktLT4+UmFtQWRhcHRlcjogdXBkYXRlZEJ5S2V5XG4gICAqXG4gICAqICAgUmFtQWRhcHRlci0+PkRlY29yYXRpb246IGZsYXZvdXJlZEFzKFJhbUZsYXZvdXIpXG4gICAqICAgRGVjb3JhdGlvbi0tPj5SYW1BZGFwdGVyOiBEZWNvcmF0b3JCdWlsZGVyXG4gICAqICAgUmFtQWRhcHRlci0+PkRlY29yYXRpb246IGZvcihjcmVhdGVkQnlLZXkpXG4gICAqICAgUmFtQWRhcHRlci0+PkRlY29yYXRpb246IGRlZmluZShvbkNyZWF0ZSwgcHJvcE1ldGFkYXRhKVxuICAgKiAgIFJhbUFkYXB0ZXItPj5EZWNvcmF0aW9uOiBhcHBseSgpXG4gICAqXG4gICAqICAgUmFtQWRhcHRlci0+PkRlY29yYXRpb246IGZsYXZvdXJlZEFzKFJhbUZsYXZvdXIpXG4gICAqICAgRGVjb3JhdGlvbi0tPj5SYW1BZGFwdGVyOiBEZWNvcmF0b3JCdWlsZGVyXG4gICAqICAgUmFtQWRhcHRlci0+PkRlY29yYXRpb246IGZvcih1cGRhdGVkQnlLZXkpXG4gICAqICAgUmFtQWRhcHRlci0+PkRlY29yYXRpb246IGRlZmluZShvbkNyZWF0ZSwgcHJvcE1ldGFkYXRhKVxuICAgKiAgIFJhbUFkYXB0ZXItPj5EZWNvcmF0aW9uOiBhcHBseSgpXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGUgZGVjb3JhdGlvbigpOiB2b2lkIHtcbiAgICBzdXBlci5kZWNvcmF0aW9uKCk7XG4gICAgY29uc3QgY3JlYXRlZEJ5S2V5ID0gUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlk7XG4gICAgY29uc3QgdXBkYXRlZEJ5S2V5ID0gUGVyc2lzdGVuY2VLZXlzLlVQREFURURfQlk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhSYW1GbGF2b3VyKVxuICAgICAgLmZvcihjcmVhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPblJhbUNyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YShjcmVhdGVkQnlLZXksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhSYW1GbGF2b3VyKVxuICAgICAgLmZvcih1cGRhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZVVwZGF0ZShjcmVhdGVkQnlPblJhbUNyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YSh1cGRhdGVkQnlLZXksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUZpZWxkVHlwZShcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TW9kZWw+LFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgY29udGV4dDogc3RyaW5nLFxuICAgIHByZWRpY2F0ZTogKHR5cGU6IHN0cmluZykgPT4gYm9vbGVhbixcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnJlc29sdmVGaWVsZFR5cGUoY2xhenosIGZpZWxkKTtcbiAgICBpZiAoIXR5cGUgfHwgIXByZWRpY2F0ZSh0eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9IHJlcXVpcmVzICR7ZGVzY3JpcHRpb259IGF0dHJpYnV0ZSwgYnV0IFwiJHtmaWVsZH1cIiBpcyAke1xuICAgICAgICAgIHR5cGUgfHwgXCJ1bmtub3duXCJcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRmllbGRUeXBlKFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNb2RlbD4sXG4gICAgZmllbGQ6IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHByb3BLZXkgPSBmaWVsZCBhcyBrZXlvZiBNb2RlbDxmYWxzZT47XG4gICAgY29uc3QgbWV0YVR5cGUgPVxuICAgICAgTWV0YWRhdGEudHlwZShjbGF6eiwgcHJvcEtleSkgPz9cbiAgICAgIE1ldGFkYXRhLmdldFByb3BEZXNpZ25UeXBlcyhjbGF6eiwgcHJvcEtleSk/LmRlc2lnblR5cGU7XG4gICAgcmV0dXJuIHRoaXMubm9ybWFsaXplTWV0YVR5cGUobWV0YVR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVNZXRhVHlwZShtZXRhVHlwZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW1ldGFUeXBlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgbWV0YVR5cGUgPT09IFwic3RyaW5nXCIpIHJldHVybiBtZXRhVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0eXBlb2YgbWV0YVR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBtZXRhVHlwZS5uYW1lKVxuICAgICAgcmV0dXJuIG1ldGFUeXBlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc051bWVyaWNUeXBlKHR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlID09PSBcImJpZ2ludFwiO1xuICB9XG5cbiAgcHJpdmF0ZSB0b051bWVyaWNWYWx1ZShcbiAgICB2YWx1ZTogYW55LFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgY29udGV4dDogc3RyaW5nXG4gICk6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgYCR7Y29udGV4dH0gb24gXCIke2ZpZWxkfVwiIHJlcXVpcmVzIG51bWVyaWMgdmFsdWVzLCBidXQgZ290ICR7dHlwZW9mIHZhbHVlfWBcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldENsaWVudCgpOiBSYW1TdG9yYWdlIHtcbiAgICByZXR1cm4gbmV3IE1hcCgpO1xuICB9XG59XG5cbkFkYXB0ZXIuc2V0Q3VycmVudChSYW1GbGF2b3VyKTtcblJhbUFkYXB0ZXIuZGVjb3JhdGlvbigpO1xuIl19
@@ -85,4 +85,4 @@ class RamPaginator extends query_1.Paginator {
85
85
  }
86
86
  }
87
87
  exports.RamPaginator = RamPaginator;
88
- //# sourceMappingURL=RamPaginator.js.map
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JhbS9SYW1QYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsZ0RBQXFDO0FBQ3JDLHlFQUF1RDtBQUt2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBYSxZQUE4QixTQUFRLGlCQUlsRDtJQUNDLFlBQ0UsT0FBK0MsRUFDL0MsS0FBcUIsRUFDckIsSUFBWSxFQUNaLEtBQXFCO1FBRXJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sT0FBTyxDQUFDLFlBQTRCO1FBQzVDLE1BQU0sS0FBSyxHQUFxQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNoRSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNNLEtBQUssQ0FBQyxJQUFJLENBQ2pCLE9BQWUsQ0FBQyxFQUNoQixHQUFHLElBQTZCO1FBRWhDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksT0FBNEIsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUM5QixFQUFFLEdBQUcsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFDaEQsS0FBSyxFQUNMLEdBQUcsQ0FDSixDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3pELElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxJQUFJLEdBQUcsU0FBUyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFZLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTTtZQUM3QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxPQUFPLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXZFRCxvQ0F1RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYXdSYW1RdWVyeSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBQYWdpbmF0b3IgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQWRhcHRlciwgUmF3UmVzdWx0IH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBNYXliZUNvbnRleHR1YWxBcmcgfSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJBTS1zcGVjaWZpYyBwYWdpbmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2UgUGFnaW5hdG9yIGNsYXNzIHRvIHByb3ZpZGUgcGFnaW5hdGlvbiBmdW5jdGlvbmFsaXR5IGZvciBSQU0gYWRhcHRlciBxdWVyaWVzLlxuICogVGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBwYWdpbmF0aW9uIG9mIHF1ZXJ5IHJlc3VsdHMgZnJvbSB0aGUgaW4tbWVtb3J5IHN0b3JhZ2UsIGFsbG93aW5nXG4gKiBmb3IgZWZmaWNpZW50IHJldHJpZXZhbCBvZiBsYXJnZSByZXN1bHQgc2V0cyBpbiBzbWFsbGVyIGNodW5rcy5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgYmVpbmcgcGFnaW5hdGVkXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXN1bHQgdHlwZSByZXR1cm5lZCBieSB0aGUgcGFnaW5hdG9yXG4gKiBAY2xhc3MgUmFtUGFnaW5hdG9yXG4gKiBAY2F0ZWdvcnkgUmFtXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgcXVlcnkgZm9yIFVzZXIgbW9kZWxcbiAqIGNvbnN0IHF1ZXJ5OiBSYXdSYW1RdWVyeTxVc2VyPiA9IHtcbiAqICAgc2VsZWN0OiB1bmRlZmluZWQsIC8vIFNlbGVjdCBhbGwgZmllbGRzXG4gKiAgIGZyb206IFVzZXIsXG4gKiAgIHdoZXJlOiAodXNlcikgPT4gdXNlci5hY3RpdmUgPT09IHRydWVcbiAqIH07XG4gKlxuICogLy8gQ3JlYXRlIGEgcGFnaW5hdG9yIHdpdGggcGFnZSBzaXplIG9mIDEwXG4gKiBjb25zdCBwYWdpbmF0b3IgPSBuZXcgUmFtUGFnaW5hdG9yPFVzZXIsIFVzZXI+KGFkYXB0ZXIsIHF1ZXJ5LCAxMCwgVXNlcik7XG4gKlxuICogLy8gR2V0IHRoZSBmaXJzdCBwYWdlIG9mIHJlc3VsdHNcbiAqIGNvbnN0IGZpcnN0UGFnZSA9IGF3YWl0IHBhZ2luYXRvci5wYWdlKDEpO1xuICpcbiAqIC8vIEdldCB0aGUgbmV4dCBwYWdlXG4gKiBjb25zdCBzZWNvbmRQYWdlID0gYXdhaXQgcGFnaW5hdG9yLnBhZ2UoMik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJhbVBhZ2luYXRvcjxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFnaW5hdG9yPFxuICBNLFxuICBNW10sXG4gIFJhd1JhbVF1ZXJ5PE0+XG4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlcjogQWRhcHRlcjxhbnksIGFueSwgUmF3UmFtUXVlcnk8TT4sIGFueT4sXG4gICAgcXVlcnk6IFJhd1JhbVF1ZXJ5PE0+LFxuICAgIHNpemU6IG51bWJlcixcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT5cbiAgKSB7XG4gICAgc3VwZXIoYWRhcHRlciwgcXVlcnksIHNpemUsIGNsYXp6KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJlcGFyZXMgYSBSQU0gcXVlcnkgZm9yIHBhZ2luYXRpb25cbiAgICogQHN1bW1hcnkgTW9kaWZpZXMgdGhlIHJhdyBxdWVyeSBzdGF0ZW1lbnQgdG8gaW5jbHVkZSBwYWdpbmF0aW9uIHBhcmFtZXRlcnMuXG4gICAqIFRoaXMgcHJvdGVjdGVkIG1ldGhvZCBzZXRzIHRoZSBsaW1pdCBwYXJhbWV0ZXIgb24gdGhlIHF1ZXJ5IHRvIG1hdGNoIHRoZSBwYWdlIHNpemUuXG4gICAqIEBwYXJhbSB7UmF3UmFtUXVlcnk8TT59IHJhd1N0YXRlbWVudCAtIFRoZSBvcmlnaW5hbCBxdWVyeSBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmF3UmFtUXVlcnk8TT59IFRoZSBtb2RpZmllZCBxdWVyeSB3aXRoIHBhZ2luYXRpb24gcGFyYW1ldGVyc1xuICAgKi9cbiAgcHJvdGVjdGVkIHByZXBhcmUocmF3U3RhdGVtZW50OiBSYXdSYW1RdWVyeTxNPik6IFJhd1JhbVF1ZXJ5PE0+IHtcbiAgICBjb25zdCBxdWVyeTogUmF3UmFtUXVlcnk8YW55PiA9IE9iamVjdC5hc3NpZ24oe30sIHJhd1N0YXRlbWVudCk7XG4gICAgcXVlcnkubGltaXQgPSB0aGlzLnNpemU7XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBwYWdlIG9mIHJlc3VsdHNcbiAgICogQHN1bW1hcnkgRXhlY3V0ZXMgdGhlIHF1ZXJ5IHdpdGggcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIHRvIHJldHJpZXZlIGEgc3BlY2lmaWMgcGFnZSBvZiByZXN1bHRzLlxuICAgKiBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBhcHByb3ByaWF0ZSBza2lwIHZhbHVlIGJhc2VkIG9uIHRoZSBwYWdlIG51bWJlciBhbmQgcGFnZSBzaXplLFxuICAgKiBleGVjdXRlcyB0aGUgcXVlcnksIGFuZCB1cGRhdGVzIHRoZSBjdXJyZW50IHBhZ2UgdHJhY2tpbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcGFnZT0xXSAtIFRoZSBwYWdlIG51bWJlciB0byByZXRyaWV2ZSAoMS1iYXNlZClcbiAgICogQHJldHVybiB7UHJvbWlzZTxSW10+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiByZXN1bHRzIGZvciB0aGUgcmVxdWVzdGVkIHBhZ2VcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHBhZ2UoXG4gICAgcGFnZTogbnVtYmVyID0gMSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIGNvbnN0IHsgY3R4LCBjdHhBcmdzIH0gPSB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oYXJncywgdGhpcy5wYWdlKTtcbiAgICBpZiAodGhpcy5pc1ByZXBhcmVkU3RhdGVtZW50KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2VQcmVwYXJlZChwYWdlLCAuLi5jdHhBcmdzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLnByZXBhcmUodGhpcy5zdGF0ZW1lbnQpO1xuICAgIGxldCByZXN1bHRzOiBSYXdSZXN1bHQ8YW55LCBhbnk+O1xuICAgIGlmICghdGhpcy5fcmVjb3JkQ291bnQgfHwgIXRoaXMuX3RvdGFsUGFnZXMpIHtcbiAgICAgIHRoaXMuX3RvdGFsUGFnZXMgPSB0aGlzLl9yZWNvcmRDb3VudCA9IDA7XG4gICAgICByZXN1bHRzID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJhdzxhbnksIGZhbHNlPihcbiAgICAgICAgeyAuLi5zdGF0ZW1lbnQsIGxpbWl0OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB9LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgY3R4XG4gICAgICApO1xuICAgICAgdGhpcy5fcmVjb3JkQ291bnQgPSByZXN1bHRzLmNvdW50IHx8IHJlc3VsdHMuZGF0YS5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5fcmVjb3JkQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBzdGF0ZW1lbnQ/LmxpbWl0IHx8IHRoaXMuc2l6ZTtcbiAgICAgICAgdGhpcy5fdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0aGlzLl9yZWNvcmRDb3VudCAvIHNpemUpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wYWdlKHBhZ2UsIC4uLmN0eEFyZ3MpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWdlID0gdGhpcy52YWxpZGF0ZVBhZ2UocGFnZSk7XG4gICAgICBzdGF0ZW1lbnQuc2tpcCA9IChwYWdlIC0gMSkgKiB0aGlzLnNpemU7XG4gICAgICByZXN1bHRzID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJhdzxhbnksIHRydWU+KHN0YXRlbWVudCwgdHJ1ZSwgLi4uY3R4QXJncyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMuX2Jvb2ttYXJrID0gcmVzdWx0cy5sZW5ndGhcbiAgICAgID8gcmVzdWx0c1tyZXN1bHRzLmxlbmd0aCAtIDFdW01vZGVsLnBrKHRoaXMuY2xhenopXVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdHMuZGF0YSB8fCByZXN1bHRzO1xuICB9XG59XG4iXX0=