@aerokit/sdk 12.80.0 → 12.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/cjs/bpm/deployer.js +1 -1
  2. package/dist/cjs/bpm/index.js +1 -1
  3. package/dist/cjs/bpm/process.js +1 -1
  4. package/dist/cjs/bpm/tasks.js +1 -1
  5. package/dist/cjs/bpm/tracer.js +1 -1
  6. package/dist/cjs/bpm/values.js +1 -1
  7. package/dist/cjs/cache/cache.js +1 -1
  8. package/dist/cjs/cache/index.js +1 -1
  9. package/dist/cjs/cms/cmis.js +1 -1
  10. package/dist/cjs/cms/index.js +1 -1
  11. package/dist/cjs/component/decorators.js +1 -1
  12. package/dist/cjs/component/index.js +1 -1
  13. package/dist/cjs/core/configurations.js +1 -1
  14. package/dist/cjs/core/context.js +1 -1
  15. package/dist/cjs/core/env.js +1 -1
  16. package/dist/cjs/core/globals.js +1 -1
  17. package/dist/cjs/core/index.js +1 -1
  18. package/dist/cjs/db/dao.js +1 -1
  19. package/dist/cjs/db/database.js +1 -1
  20. package/dist/cjs/db/decorators.js +1 -1
  21. package/dist/cjs/db/index.js +1 -1
  22. package/dist/cjs/db/insert.js +1 -1
  23. package/dist/cjs/db/orm.js +1 -1
  24. package/dist/cjs/db/ormstatements.js +1 -1
  25. package/dist/cjs/db/procedure.js +1 -1
  26. package/dist/cjs/db/query.js +1 -1
  27. package/dist/cjs/db/repository.js +1 -1
  28. package/dist/cjs/db/sequence.js +1 -1
  29. package/dist/cjs/db/sql.js +1 -1
  30. package/dist/cjs/db/store.js +1 -1
  31. package/dist/cjs/db/translator.js +1 -1
  32. package/dist/cjs/db/update.js +1 -1
  33. package/dist/cjs/etcd/client.js +1 -1
  34. package/dist/cjs/etcd/index.js +1 -1
  35. package/dist/cjs/extensions/decorators.js +1 -1
  36. package/dist/cjs/extensions/extensions.js +1 -1
  37. package/dist/cjs/extensions/index.js +1 -1
  38. package/dist/cjs/git/client.js +1 -1
  39. package/dist/cjs/git/index.js +1 -1
  40. package/dist/cjs/http/client-async.js +1 -1
  41. package/dist/cjs/http/client.js +1 -1
  42. package/dist/cjs/http/decorators.js +1 -1
  43. package/dist/cjs/http/errors/ForbiddenError.js +1 -1
  44. package/dist/cjs/http/errors/ValidationError.js +1 -1
  45. package/dist/cjs/http/errors.js +1 -1
  46. package/dist/cjs/http/index.js +1 -1
  47. package/dist/cjs/http/request.js +1 -1
  48. package/dist/cjs/http/response.js +1 -1
  49. package/dist/cjs/http/rs/resource-http-controller.js +1 -1
  50. package/dist/cjs/http/rs/resource-mappings.js +1 -1
  51. package/dist/cjs/http/rs/resource-method.js +1 -1
  52. package/dist/cjs/http/rs/resource.js +1 -1
  53. package/dist/cjs/http/rs.js +1 -1
  54. package/dist/cjs/http/session.js +1 -1
  55. package/dist/cjs/http/upload.js +1 -1
  56. package/dist/cjs/http/utils.js +1 -1
  57. package/dist/cjs/indexing/index.js +1 -1
  58. package/dist/cjs/indexing/searcher.js +1 -1
  59. package/dist/cjs/indexing/writer.js +1 -1
  60. package/dist/cjs/integrations/index.js +1 -1
  61. package/dist/cjs/integrations/integrations.js +1 -1
  62. package/dist/cjs/io/bytes.js +1 -1
  63. package/dist/cjs/io/files.js +1 -1
  64. package/dist/cjs/io/image.js +1 -1
  65. package/dist/cjs/io/index.js +1 -1
  66. package/dist/cjs/io/streams.js +1 -1
  67. package/dist/cjs/io/zip.js +1 -1
  68. package/dist/cjs/job/decorators.js +1 -1
  69. package/dist/cjs/job/index.js +1 -1
  70. package/dist/cjs/job/scheduler.js +1 -1
  71. package/dist/cjs/junit/index.js +1 -1
  72. package/dist/cjs/junit/junit.js +1 -1
  73. package/dist/cjs/kafka/consumer.js +1 -1
  74. package/dist/cjs/kafka/index.js +1 -1
  75. package/dist/cjs/kafka/producer.js +1 -1
  76. package/dist/cjs/log/index.js +1 -1
  77. package/dist/cjs/log/logging.js +1 -1
  78. package/dist/cjs/mail/client.js +1 -1
  79. package/dist/cjs/mail/index.js +1 -1
  80. package/dist/cjs/messaging/consumer.js +1 -1
  81. package/dist/cjs/messaging/decorators.js +1 -1
  82. package/dist/cjs/messaging/index.js +1 -1
  83. package/dist/cjs/messaging/producer.js +1 -1
  84. package/dist/cjs/mongodb/client.js +1 -1
  85. package/dist/cjs/mongodb/dao.js +1 -1
  86. package/dist/cjs/mongodb/index.js +1 -1
  87. package/dist/cjs/net/decorators.js +1 -1
  88. package/dist/cjs/net/index.js +1 -1
  89. package/dist/cjs/net/soap.js +1 -1
  90. package/dist/cjs/net/websockets.js +1 -1
  91. package/dist/cjs/pdf/index.js +1 -1
  92. package/dist/cjs/pdf/pdf.js +3 -3
  93. package/dist/cjs/platform/command.js +1 -1
  94. package/dist/cjs/platform/engines.js +1 -1
  95. package/dist/cjs/platform/index.js +1 -1
  96. package/dist/cjs/platform/lifecycle.js +1 -1
  97. package/dist/cjs/platform/os.js +1 -1
  98. package/dist/cjs/platform/problems.js +1 -1
  99. package/dist/cjs/platform/registry.js +1 -1
  100. package/dist/cjs/platform/repository.js +1 -1
  101. package/dist/cjs/platform/workspace.js +1 -1
  102. package/dist/cjs/qldb/index.js +1 -1
  103. package/dist/cjs/qldb/qldb.js +1 -1
  104. package/dist/cjs/rabbitmq/consumer.js +1 -1
  105. package/dist/cjs/rabbitmq/index.js +1 -1
  106. package/dist/cjs/rabbitmq/producer.js +1 -1
  107. package/dist/cjs/redis/client.js +1 -1
  108. package/dist/cjs/redis/index.js +1 -1
  109. package/dist/cjs/security/decorators.js +1 -1
  110. package/dist/cjs/security/index.js +1 -1
  111. package/dist/cjs/security/oauth.js +1 -1
  112. package/dist/cjs/security/user.js +1 -1
  113. package/dist/cjs/template/engines.js +1 -1
  114. package/dist/cjs/template/index.js +1 -1
  115. package/dist/cjs/utils/alphanumeric.js +2 -2
  116. package/dist/cjs/utils/base64.js +1 -1
  117. package/dist/cjs/utils/converter.js +1 -1
  118. package/dist/cjs/utils/digest.js +1 -1
  119. package/dist/cjs/utils/escape.js +1 -1
  120. package/dist/cjs/utils/hex.js +1 -1
  121. package/dist/cjs/utils/index.js +1 -1
  122. package/dist/cjs/utils/jsonpath.js +1 -1
  123. package/dist/cjs/utils/qrcode.js +1 -1
  124. package/dist/cjs/utils/url.js +1 -1
  125. package/dist/cjs/utils/utf8.js +1 -1
  126. package/dist/cjs/utils/uuid.js +1 -1
  127. package/dist/cjs/utils/xml.js +1 -1
  128. package/dist/dts/bpm/deployer.d.ts +35 -3
  129. package/dist/dts/bpm/index.d.ts +14 -0
  130. package/dist/dts/bpm/process.d.ts +28 -3
  131. package/dist/dts/bpm/tasks.d.ts +32 -1
  132. package/dist/dts/bpm/tracer.d.ts +35 -0
  133. package/dist/dts/bpm/values.d.ts +17 -3
  134. package/dist/dts/cache/cache.d.ts +38 -0
  135. package/dist/dts/cache/index.d.ts +10 -0
  136. package/dist/dts/cms/cmis.d.ts +28 -3
  137. package/dist/dts/cms/index.d.ts +10 -0
  138. package/dist/dts/component/decorators.d.ts +35 -5
  139. package/dist/dts/component/index.d.ts +10 -0
  140. package/dist/dts/core/configurations.d.ts +43 -4
  141. package/dist/dts/core/context.d.ts +35 -2
  142. package/dist/dts/core/env.d.ts +29 -2
  143. package/dist/dts/core/globals.d.ts +34 -2
  144. package/dist/dts/core/index.d.ts +13 -0
  145. package/dist/dts/db/database.d.ts +34 -0
  146. package/dist/dts/db/decorators.d.ts +55 -2
  147. package/dist/dts/db/index.d.ts +19 -0
  148. package/dist/dts/db/orm.d.ts +43 -0
  149. package/dist/dts/db/procedure.d.ts +37 -0
  150. package/dist/dts/db/query.d.ts +25 -1
  151. package/dist/dts/db/repository.d.ts +52 -0
  152. package/dist/dts/db/sequence.d.ts +31 -2
  153. package/dist/dts/db/sql.d.ts +33 -0
  154. package/dist/dts/db/store.d.ts +27 -0
  155. package/dist/dts/db/translator.d.ts +34 -1
  156. package/dist/dts/db/update.d.ts +38 -0
  157. package/dist/dts/etcd/client.d.ts +36 -0
  158. package/dist/dts/etcd/index.d.ts +10 -0
  159. package/dist/dts/extensions/decorators.d.ts +28 -0
  160. package/dist/dts/extensions/extensions.d.ts +30 -1
  161. package/dist/dts/extensions/index.d.ts +11 -0
  162. package/dist/dts/git/client.d.ts +28 -0
  163. package/dist/dts/git/index.d.ts +10 -0
  164. package/dist/dts/http/client-async.d.ts +29 -1
  165. package/dist/dts/http/client.d.ts +29 -1
  166. package/dist/dts/http/decorators.d.ts +38 -0
  167. package/dist/dts/http/errors/ForbiddenError.d.ts +6 -2
  168. package/dist/dts/http/errors/ValidationError.d.ts +6 -2
  169. package/dist/dts/http/errors.d.ts +14 -0
  170. package/dist/dts/http/index.d.ts +18 -0
  171. package/dist/dts/http/request.d.ts +30 -3
  172. package/dist/dts/http/response.d.ts +40 -3
  173. package/dist/dts/http/rs/resource-mappings.d.ts +30 -0
  174. package/dist/dts/http/rs.d.ts +38 -0
  175. package/dist/dts/http/session.d.ts +34 -3
  176. package/dist/dts/http/upload.d.ts +27 -2
  177. package/dist/dts/http/utils.d.ts +42 -0
  178. package/dist/dts/indexing/index.d.ts +11 -0
  179. package/dist/dts/indexing/searcher.d.ts +35 -2
  180. package/dist/dts/indexing/writer.d.ts +23 -2
  181. package/dist/dts/integrations/index.d.ts +10 -0
  182. package/dist/dts/integrations/integrations.d.ts +27 -3
  183. package/dist/dts/io/bytes.d.ts +33 -2
  184. package/dist/dts/io/files.d.ts +34 -2
  185. package/dist/dts/io/image.d.ts +27 -2
  186. package/dist/dts/io/index.d.ts +14 -0
  187. package/dist/dts/io/streams.d.ts +40 -0
  188. package/dist/dts/io/zip.d.ts +32 -0
  189. package/dist/dts/job/decorators.d.ts +29 -0
  190. package/dist/dts/job/index.d.ts +11 -0
  191. package/dist/dts/job/scheduler.d.ts +33 -2
  192. package/dist/dts/junit/index.d.ts +10 -0
  193. package/dist/dts/junit/junit.d.ts +31 -0
  194. package/dist/dts/kafka/consumer.d.ts +31 -0
  195. package/dist/dts/kafka/index.d.ts +11 -0
  196. package/dist/dts/kafka/producer.d.ts +31 -0
  197. package/dist/dts/log/index.d.ts +10 -0
  198. package/dist/dts/log/logging.d.ts +32 -0
  199. package/dist/dts/mail/client.d.ts +27 -0
  200. package/dist/dts/mail/index.d.ts +10 -0
  201. package/dist/dts/messaging/consumer.d.ts +29 -2
  202. package/dist/dts/messaging/decorators.d.ts +32 -0
  203. package/dist/dts/messaging/index.d.ts +12 -0
  204. package/dist/dts/messaging/producer.d.ts +27 -2
  205. package/dist/dts/mongodb/client.d.ts +37 -0
  206. package/dist/dts/mongodb/dao.d.ts +53 -0
  207. package/dist/dts/mongodb/index.d.ts +11 -0
  208. package/dist/dts/net/decorators.d.ts +27 -0
  209. package/dist/dts/net/index.d.ts +13 -0
  210. package/dist/dts/net/soap.d.ts +34 -0
  211. package/dist/dts/net/websockets.d.ts +34 -0
  212. package/dist/dts/pdf/index.d.ts +10 -0
  213. package/dist/dts/pdf/pdf.d.ts +41 -2
  214. package/dist/dts/platform/command.d.ts +26 -0
  215. package/dist/dts/platform/engines.d.ts +38 -0
  216. package/dist/dts/platform/index.d.ts +19 -0
  217. package/dist/dts/platform/lifecycle.d.ts +29 -0
  218. package/dist/dts/platform/os.d.ts +30 -0
  219. package/dist/dts/platform/problems.d.ts +36 -0
  220. package/dist/dts/platform/registry.d.ts +39 -0
  221. package/dist/dts/platform/repository.d.ts +40 -0
  222. package/dist/dts/platform/workspace.d.ts +42 -0
  223. package/dist/dts/qldb/index.d.ts +12 -0
  224. package/dist/dts/qldb/qldb.d.ts +14 -0
  225. package/dist/dts/rabbitmq/consumer.d.ts +24 -3
  226. package/dist/dts/rabbitmq/index.d.ts +13 -0
  227. package/dist/dts/rabbitmq/producer.d.ts +20 -3
  228. package/dist/dts/redis/client.d.ts +31 -3
  229. package/dist/dts/redis/index.d.ts +12 -0
  230. package/dist/dts/security/decorators.d.ts +34 -0
  231. package/dist/dts/security/index.d.ts +14 -0
  232. package/dist/dts/security/oauth.d.ts +27 -0
  233. package/dist/dts/security/user.d.ts +39 -0
  234. package/dist/dts/template/engines.d.ts +31 -0
  235. package/dist/dts/template/index.d.ts +12 -0
  236. package/dist/dts/utils/alphanumeric.d.ts +36 -2
  237. package/dist/dts/utils/base64.d.ts +30 -0
  238. package/dist/dts/utils/converter.d.ts +37 -2
  239. package/dist/dts/utils/digest.d.ts +31 -0
  240. package/dist/dts/utils/escape.d.ts +28 -3
  241. package/dist/dts/utils/hex.d.ts +30 -0
  242. package/dist/dts/utils/index.d.ts +23 -0
  243. package/dist/dts/utils/jsonpath.d.ts +43 -0
  244. package/dist/dts/utils/qrcode.d.ts +24 -3
  245. package/dist/dts/utils/url.d.ts +37 -3
  246. package/dist/dts/utils/utf8.d.ts +34 -3
  247. package/dist/dts/utils/uuid.d.ts +28 -2
  248. package/dist/dts/utils/xml.d.ts +31 -2
  249. package/dist/esm/bpm/deployer.mjs +1 -1
  250. package/dist/esm/bpm/index.mjs +1 -1
  251. package/dist/esm/bpm/process.mjs +1 -1
  252. package/dist/esm/bpm/tasks.mjs +1 -1
  253. package/dist/esm/bpm/tracer.mjs +1 -1
  254. package/dist/esm/bpm/values.mjs +1 -1
  255. package/dist/esm/cache/cache.mjs +1 -1
  256. package/dist/esm/cache/index.mjs +1 -1
  257. package/dist/esm/cms/cmis.mjs +1 -1
  258. package/dist/esm/cms/index.mjs +1 -1
  259. package/dist/esm/component/decorators.mjs +1 -1
  260. package/dist/esm/component/index.mjs +1 -1
  261. package/dist/esm/core/configurations.mjs +1 -1
  262. package/dist/esm/core/context.mjs +1 -1
  263. package/dist/esm/core/env.mjs +1 -1
  264. package/dist/esm/core/globals.mjs +1 -1
  265. package/dist/esm/core/index.mjs +1 -1
  266. package/dist/esm/db/dao.mjs +1 -1
  267. package/dist/esm/db/database.mjs +1 -1
  268. package/dist/esm/db/decorators.mjs +1 -1
  269. package/dist/esm/db/index.mjs +1 -1
  270. package/dist/esm/db/insert.mjs +1 -1
  271. package/dist/esm/db/orm.mjs +1 -1
  272. package/dist/esm/db/ormstatements.mjs +1 -1
  273. package/dist/esm/db/procedure.mjs +1 -1
  274. package/dist/esm/db/query.mjs +1 -1
  275. package/dist/esm/db/repository.mjs +1 -1
  276. package/dist/esm/db/sequence.mjs +1 -1
  277. package/dist/esm/db/sql.mjs +1 -1
  278. package/dist/esm/db/store.mjs +1 -1
  279. package/dist/esm/db/translator.mjs +1 -1
  280. package/dist/esm/db/update.mjs +1 -1
  281. package/dist/esm/etcd/client.mjs +1 -1
  282. package/dist/esm/etcd/index.mjs +1 -1
  283. package/dist/esm/extensions/decorators.mjs +1 -1
  284. package/dist/esm/extensions/extensions.mjs +1 -1
  285. package/dist/esm/extensions/index.mjs +1 -1
  286. package/dist/esm/git/client.mjs +1 -1
  287. package/dist/esm/git/index.mjs +1 -1
  288. package/dist/esm/http/client-async.mjs +1 -1
  289. package/dist/esm/http/client.mjs +1 -1
  290. package/dist/esm/http/decorators.mjs +1 -1
  291. package/dist/esm/http/errors/ForbiddenError.mjs +1 -1
  292. package/dist/esm/http/errors/ValidationError.mjs +1 -1
  293. package/dist/esm/http/errors.mjs +1 -1
  294. package/dist/esm/http/index.mjs +1 -1
  295. package/dist/esm/http/request.mjs +1 -1
  296. package/dist/esm/http/response.mjs +1 -1
  297. package/dist/esm/http/rs/resource-http-controller.mjs +1 -1
  298. package/dist/esm/http/rs/resource-mappings.mjs +1 -1
  299. package/dist/esm/http/rs/resource-method.mjs +1 -1
  300. package/dist/esm/http/rs/resource.mjs +1 -1
  301. package/dist/esm/http/rs.mjs +1 -1
  302. package/dist/esm/http/session.mjs +1 -1
  303. package/dist/esm/http/upload.mjs +1 -1
  304. package/dist/esm/http/utils.mjs +1 -1
  305. package/dist/esm/indexing/index.mjs +1 -1
  306. package/dist/esm/indexing/searcher.mjs +1 -1
  307. package/dist/esm/indexing/writer.mjs +1 -1
  308. package/dist/esm/integrations/index.mjs +1 -1
  309. package/dist/esm/integrations/integrations.mjs +1 -1
  310. package/dist/esm/io/bytes.mjs +1 -1
  311. package/dist/esm/io/files.mjs +1 -1
  312. package/dist/esm/io/image.mjs +1 -1
  313. package/dist/esm/io/index.mjs +1 -1
  314. package/dist/esm/io/streams.mjs +1 -1
  315. package/dist/esm/io/zip.mjs +1 -1
  316. package/dist/esm/job/decorators.mjs +1 -1
  317. package/dist/esm/job/index.mjs +1 -1
  318. package/dist/esm/job/scheduler.mjs +1 -1
  319. package/dist/esm/junit/index.mjs +1 -1
  320. package/dist/esm/junit/junit.mjs +1 -1
  321. package/dist/esm/kafka/consumer.mjs +1 -1
  322. package/dist/esm/kafka/index.mjs +1 -1
  323. package/dist/esm/kafka/producer.mjs +1 -1
  324. package/dist/esm/log/index.mjs +1 -1
  325. package/dist/esm/log/logging.mjs +1 -1
  326. package/dist/esm/mail/client.mjs +1 -1
  327. package/dist/esm/mail/index.mjs +1 -1
  328. package/dist/esm/messaging/consumer.mjs +1 -1
  329. package/dist/esm/messaging/decorators.mjs +1 -1
  330. package/dist/esm/messaging/index.mjs +1 -1
  331. package/dist/esm/messaging/producer.mjs +1 -1
  332. package/dist/esm/mongodb/client.mjs +2 -2
  333. package/dist/esm/mongodb/dao.mjs +1 -1
  334. package/dist/esm/mongodb/index.mjs +1 -1
  335. package/dist/esm/net/decorators.mjs +1 -1
  336. package/dist/esm/net/index.mjs +1 -1
  337. package/dist/esm/net/soap.mjs +1 -1
  338. package/dist/esm/net/websockets.mjs +1 -1
  339. package/dist/esm/pdf/index.mjs +1 -1
  340. package/dist/esm/pdf/pdf.mjs +3 -3
  341. package/dist/esm/platform/command.mjs +1 -1
  342. package/dist/esm/platform/engines.mjs +1 -1
  343. package/dist/esm/platform/index.mjs +1 -1
  344. package/dist/esm/platform/lifecycle.mjs +1 -1
  345. package/dist/esm/platform/os.mjs +1 -1
  346. package/dist/esm/platform/problems.mjs +1 -1
  347. package/dist/esm/platform/registry.mjs +1 -1
  348. package/dist/esm/platform/repository.mjs +1 -1
  349. package/dist/esm/platform/workspace.mjs +1 -1
  350. package/dist/esm/qldb/index.mjs +1 -1
  351. package/dist/esm/qldb/qldb.mjs +1 -1
  352. package/dist/esm/rabbitmq/consumer.mjs +1 -1
  353. package/dist/esm/rabbitmq/index.mjs +1 -1
  354. package/dist/esm/rabbitmq/producer.mjs +1 -1
  355. package/dist/esm/redis/client.mjs +1 -1
  356. package/dist/esm/redis/index.mjs +1 -1
  357. package/dist/esm/security/decorators.mjs +1 -1
  358. package/dist/esm/security/index.mjs +1 -1
  359. package/dist/esm/security/oauth.mjs +1 -1
  360. package/dist/esm/security/user.mjs +1 -1
  361. package/dist/esm/template/engines.mjs +1 -1
  362. package/dist/esm/template/index.mjs +1 -1
  363. package/dist/esm/utils/alphanumeric.mjs +2 -2
  364. package/dist/esm/utils/base64.mjs +1 -1
  365. package/dist/esm/utils/converter.mjs +1 -1
  366. package/dist/esm/utils/digest.mjs +1 -1
  367. package/dist/esm/utils/escape.mjs +1 -1
  368. package/dist/esm/utils/hex.mjs +1 -1
  369. package/dist/esm/utils/index.mjs +1 -1
  370. package/dist/esm/utils/jsonpath.mjs +1 -1
  371. package/dist/esm/utils/qrcode.mjs +1 -1
  372. package/dist/esm/utils/url.mjs +1 -1
  373. package/dist/esm/utils/utf8.mjs +1 -1
  374. package/dist/esm/utils/uuid.mjs +1 -1
  375. package/dist/esm/utils/xml.mjs +1 -1
  376. package/package.json +1 -1
@@ -888,4 +888,4 @@ export {
888
888
  ResultSet,
889
889
  SQLTypes
890
890
  };
891
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RhdGFiYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBEYXRhYmFzZVxuICpcbiAqL1xuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5pbXBvcnQgeyBJbnB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5kYi5EYXRhYmFzZUZhY2FkZVwiKTtcbmNvbnN0IEpTcWxEYXRlID0gSmF2YS50eXBlKFwiamF2YS5zcWwuRGF0ZVwiKTtcbmNvbnN0IEpTcWxUaW1lc3RhbXAgPSBKYXZhLnR5cGUoXCJqYXZhLnNxbC5UaW1lc3RhbXBcIik7XG5jb25zdCBKU3FsVGltZSA9IEphdmEudHlwZShcImphdmEuc3FsLlRpbWVcIik7XG5jb25zdCBTdHJpbmdXcml0ZXIgPSBKYXZhLnR5cGUoXCJqYXZhLmlvLlN0cmluZ1dyaXRlclwiKTtcbmNvbnN0IFdyaXRlck91dHB1dFN0cmVhbSA9IEphdmEudHlwZShcIm9yZy5hcGFjaGUuY29tbW9ucy5pby5vdXRwdXQuV3JpdGVyT3V0cHV0U3RyZWFtXCIpO1xuY29uc3QgU3RhbmRhcmRDaGFyc2V0cyA9IEphdmEudHlwZShcImphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0c1wiKTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIFNRTCB0eXBlIG5hbWVzIHRvIHRoZWlyIGphdmEuc3FsLlR5cGVzIGludGVnZXIgY29uc3RhbnRzLlxuICovXG5leHBvcnQgY29uc3QgU1FMVHlwZXMgPSBPYmplY3QuZnJlZXplKHtcblx0XCJCT09MRUFOXCI6IDE2LFxuXHRcIkRBVEVcIjogOTEsXG5cdFwiVElNRVwiOiA5Mixcblx0XCJUSU1FU1RBTVBcIjogOTMsXG5cdFwiRE9VQkxFXCI6IDgsXG5cdFwiRkxPQVRcIjogNixcblx0XCJSRUFMXCI6IDcsXG5cdFwiVElOWUlOVFwiOiAtNixcblx0XCJTTUFMTElOVFwiOiA1LFxuXHRcIklOVEVHRVJcIjogNCxcblx0XCJCSUdJTlRcIjogLTUsXG5cdFwiVkFSQ0hBUlwiOiAxMixcblx0XCJDSEFSXCI6IDEsXG5cdFwiQ0xPQlwiOiAyMDA1LFxuXHRcIkJMT0JcIjogMjAwNCxcblx0XCJWQVJCSU5BUllcIjogLTMsXG5cdFwiREVDSU1BTFwiOiAzLFxuXHRcIkFSUkFZXCI6IDIwMDMsXG5cdFwiTlZBUkNIQVJcIjogLTksXG5cdFwiTkNMT0JcIjogMjAxMSxcblx0XCJCSVRcIjogLTdcbn0pO1xuXG5leHBvcnQgZW51bSBEYXRhYmFzZVN5c3RlbSB7XG5cdFVOS05PV04sIERFUkJZLCBQT1NUR1JFU1FMLCBIMiwgTUFSSUFEQiwgSEFOQSwgU05PV0ZMQUtFLCBNWVNRTCwgTU9OR09EQiwgU1lCQVNFLCBNU1NRTFxufVxuXG4vLyAtLS0gTWV0YWRhdGEgSW50ZXJmYWNlcyAtLS1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcblx0LyoqIFRoZSBjb2x1bW5zLiAqL1xuXHRyZWFkb25seSBjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGluZGljZXMuICovXG5cdHJlYWRvbmx5IGluZGljZXM6IEluZGV4TWV0YWRhdGFbXTtcblx0LyoqIFRoZSBpbmRpY2VzLiAqL1xuXHRyZWFkb25seSBmb3JlaWduS2V5czogRm9yZWlnbktleU1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHNpemUuICovXG5cdHJlYWRvbmx5IHNpemU6IG51bWJlcjtcblx0LyoqIFRoZSBudWxsYWJsZS4gKi9cblx0cmVhZG9ubHkgbnVsbGFibGU6IGJvb2xlYW47XG5cdC8qKiBUaGUga2V5LiAqL1xuXHRyZWFkb25seSBrZXk6IGJvb2xlYW47XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHNjYWxlLiAqL1xuXHRyZWFkb25seSBzY2FsZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4TWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgY29sdW1uLiAqL1xuXHRyZWFkb25seSBjb2x1bW46IHN0cmluZztcblx0LyoqIFRoZSBub24gdW5pcXVlLiAqL1xuXHRyZWFkb25seSBub25VbmlxdWU6IGJvb2xlYW47XG5cdC8qKiBUaGUgcXVhbGlmaWVyLiAqL1xuXHRyZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblx0LyoqIFRoZSBvcmRpbmFsIHBvc2l0aW9uLiAqL1xuXHRyZWFkb25seSBvcmRpbmFsUG9zaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBzb3J0IG9yZGVyLiAqL1xuXHRyZWFkb25seSBzb3J0T3JkZXI6IHN0cmluZztcblx0LyoqIFRoZSBjYXJkaW5hbGl0eS4gKi9cblx0cmVhZG9ubHkgY2FyZGluYWxpdHk6IG51bWJlcjtcblx0LyoqIFRoZSBwYWdlcy4gKi9cblx0cmVhZG9ubHkgcGFnZXM6IG51bWJlcjtcblx0LyoqIFRoZSBmaWx0ZXIgY29uZGl0aW9uLiAqL1xuXHRyZWFkb25seSBmaWx0ZXJDb25kaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBraW5kLiAqL1xuXHRyZWFkb25seSBraW5kOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZWlnbktleU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHRhYmxlcy4gKi9cblx0cmVhZG9ubHkgdGFibGVzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgdmlld3MuICovXG5cdHJlYWRvbmx5IHZpZXdzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgcHJvY2VkdXJlcy4gKi9cblx0cmVhZG9ubHkgcHJvY2VkdXJlczogUHJvY2VkdXJlTWV0YWRhdGFbXTtcblx0LyoqIFRoZSBmdW5jdGlvbnMuICovXG5cdHJlYWRvbmx5IGZ1bmN0aW9uczogRnVuY3Rpb25NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGZ1bmN0aW9ucy4gKi9cblx0cmVhZG9ubHkgc2VxdWVuY2VzOiBTZXF1ZW5jZU1ldGFkYXRhW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VkdXJlTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogbnVtYmVyO1xuXHQvKiogVGhlIHR5cGUuICovXG5cdHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBwcmVjaXNpb24uICovXG5cdHJlYWRvbmx5IHByZWNpc2lvbjogbnVtYmVyO1xuXHQvKiogVGhlIGxlbmd0aC4gKi9cblx0cmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG5cdC8qKiBUaGUgc2NhbGUuICovXG5cdHJlYWRvbmx5IHNjYWxlOiBudW1iZXI7XG5cdC8qKiBUaGUgcmFkaXguICovXG5cdHJlYWRvbmx5IHJhZGl4OiBudW1iZXI7XG5cdC8qKiBUaGUgbnVsbGFibGUuICovXG5cdHJlYWRvbmx5IG51bGxhYmxlOiBib29sZWFuO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlTWV0YWRhdGEge1xuXHRyZWFkb25seSBhbGxQcm9jZWR1cmVzQXJlQ2FsbGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGFsbFRhYmxlc0FyZVNlbGVjdGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXHRyZWFkb25seSB1c2VyTmFtZTogc3RyaW5nO1xuXHRyZWFkb25seSBpc1JlYWRPbmx5OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEhpZ2g6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkTG93OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEF0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkQXRFbmQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGRhdGFiYXNlUHJvZHVjdE5hbWU6IHN0cmluZztcblx0cmVhZG9ubHkgZGF0YWJhc2VQcm9kdWN0VmVyc2lvbjogc3RyaW5nO1xuXHRyZWFkb25seSBkcml2ZXJOYW1lOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGRyaXZlclZlcnNpb246IHN0cmluZztcblx0cmVhZG9ubHkgZHJpdmVyTWFqb3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IGRyaXZlck1pbm9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSB1c2VzTG9jYWxGaWxlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgdXNlc0xvY2FsRmlsZVBlclRhYmxlOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VRdW90ZWRJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlUXVvdGVkSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBpZGVudGlmaWVyUXVvdGVTdHJpbmc6IHN0cmluZztcblx0cmVhZG9ubHkgc3FsS2V5d29yZHM6IHN0cmluZztcblx0cmVhZG9ubHkgbnVtZXJpY0Z1bmN0aW9uczogc3RyaW5nO1xuXHRyZWFkb25seSBzdHJpbmdGdW5jdGlvbnM6IHN0cmluZztcblx0cmVhZG9ubHkgc3lzdGVtRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHRpbWVEYXRlRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHNlYXJjaFN0cmluZ0VzY2FwZTogc3RyaW5nO1xuXHRyZWFkb25seSBleHRyYU5hbWVDaGFyYWN0ZXJzOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhBZGRDb2x1bW46IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhEcm9wQ29sdW1uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvbHVtbkFsaWFzaW5nOiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsUGx1c05vbk51bGxJc051bGw6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ29udmVydDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNUYWJsZUNvcnJlbGF0aW9uTmFtZXM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzRGlmZmVyZW50VGFibGVDb3JyZWxhdGlvbk5hbWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4cHJlc3Npb25zSW5PcmRlckJ5OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09yZGVyQnlVbnJlbGF0ZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR3JvdXBCeTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNHcm91cEJ5VW5yZWxhdGVkOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0dyb3VwQnlCZXlvbmRTZWxlY3Q6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTGlrZUVzY2FwZUNsYXVzZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNNdWx0aXBsZVJlc3VsdFNldHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTXVsdGlwbGVUcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTm9uTnVsbGFibGVDb2x1bW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01pbmltdW1TUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcmVTUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4dGVuZGVkU1FMR3JhbW1hcjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJFbnRyeUxldmVsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0FOU0k5MkludGVybWVkaWF0ZVNRTDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJGdWxsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0ludGVncml0eUVuaGFuY2VtZW50RmFjaWxpdHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNGdWxsT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNMaW1pdGVkT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hVGVybTogc3RyaW5nO1xuXHRyZWFkb25seSBwcm9jZWR1cmVUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGNhdGFsb2dUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGlzQ2F0YWxvZ0F0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGNhdGFsb2dTZXBhcmF0b3I6IHN0cmluZztcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5EYXRhTWFuaXB1bGF0aW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblByb2NlZHVyZUNhbGxzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU2NoZW1hc0luSW5kZXhEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5Qcml2aWxlZ2VEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luRGF0YU1hbmlwdWxhdGlvbjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luUHJvY2VkdXJlQ2FsbHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJbkluZGV4RGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblByaXZpbGVnZURlZmluaXRpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1Bvc2l0aW9uZWREZWxldGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzUG9zaXRpb25lZFVwZGF0ZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTZWxlY3RGb3JVcGRhdGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RvcmVkUHJvY2VkdXJlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5Db21wYXJpc29uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5FeGlzdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3VicXVlcmllc0luSW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1N1YnF1ZXJpZXNJblF1YW50aWZpZWRzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcnJlbGF0ZWRTdWJxdWVyaWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uQWxsOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzQ29tbWl0OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzUm9sbGJhY2s6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NDb21taXQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NSb2xsYmFjazogYm9vbGVhbjtcblx0cmVhZG9ubHkgbWF4QmluYXJ5TGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDaGFyTGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5OYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heENvbHVtbnNJbkdyb3VwQnk6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luSW5kZXg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luT3JkZXJCeTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5zSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luVGFibGU6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q3Vyc29yTmFtZUxlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhJbmRleExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhTY2hlbWFOYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heFByb2NlZHVyZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q2F0YWxvZ05hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Um93U2l6ZTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhSb3dTaXplSW5jbHVkZUJsb2JzOiBib29sZWFuO1xuXHRyZWFkb25seSBtYXhTdGF0ZW1lbnRMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4U3RhdGVtZW50czogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhUYWJsZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VGFibGVzSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VXNlck5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgZGVmYXVsdFRyYW5zYWN0aW9uSXNvbGF0aW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzVHJhbnNhY3Rpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0RhdGFEZWZpbml0aW9uQW5kRGF0YU1hbmlwdWxhdGlvblRyYW5zYWN0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNEYXRhTWFuaXB1bGF0aW9uVHJhbnNhY3Rpb25zT25seTogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25DYXVzZXNUcmFuc2FjdGlvbkNvbW1pdDogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25JZ25vcmVkSW5UcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQmF0Y2hVcGRhdGVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NhdmVwb2ludHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTmFtZWRQYXJhbWV0ZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c011bHRpcGxlT3BlblJlc3VsdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR2V0R2VuZXJhdGVkS2V5czogYm9vbGVhbjtcblx0cmVhZG9ubHkgcmVzdWx0U2V0SG9sZGFiaWxpdHk6IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNYWpvclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNaW5vclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgamRiY01ham9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSBqZGJjTWlub3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHNxbFN0YXRlVHlwZTogbnVtYmVyO1xuXHRyZWFkb25seSBsb2NhdG9yc1VwZGF0ZUNvcHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RhdGVtZW50UG9vbGluZzogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdG9yZWRGdW5jdGlvbnNVc2luZ0NhbGxTeW50YXg6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGF1dG9Db21taXRGYWlsdXJlQ2xvc2VzQWxsUmVzdWx0U2V0czogYm9vbGVhbjtcblx0cmVhZG9ubHkgZ2VuZXJhdGVkS2V5QWx3YXlzUmV0dXJuZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG1heExvZ2ljYWxMb2JTaXplOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzUmVmQ3Vyc29yczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hczogU2NoZW1hTWV0YWRhdGFbXTtcblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuZnVuY3Rpb24gaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbjogYW55KTogYm9vbGVhbiB7XG5cdGxldCBpc0hhbmFEYXRhYmFzZSA9IGZhbHNlO1xuXHRsZXQgbWV0YWRhdGEgPSBjb25uZWN0aW9uLmdldE1ldGFEYXRhKCk7XG5cdGlmIChtZXRhZGF0YSAhPT0gbnVsbCAmJiBtZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0aXNIYW5hRGF0YWJhc2UgPSBtZXRhZGF0YS5nZXREYXRhYmFzZVByb2R1Y3ROYW1lKCkgPT09IFwiSERCXCI7XG5cdH1cblx0cmV0dXJuIGlzSGFuYURhdGFiYXNlO1xufVxuXG5mdW5jdGlvbiByZWFkQ2xvYlZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBhbnkge1xuXHRyZXR1cm4gdmFsdWUgPyB2YWx1ZS5nZXRTdWJTdHJpbmcoMSwgdmFsdWUubGVuZ3RoKCkpIDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNsb2JWYWx1ZShuYXRpdmU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XG5cdHRyeSB7XG5cdFx0bGV0IGNvbm5lY3Rpb24gPSBuYXRpdmUuZ2V0Q29ubmVjdGlvbigpOyAvLyBpbnRlbnRpb25hbGx5IG5vdCBjbG9zZWRcblx0XHRpZiAoY29ubmVjdGlvbiA9PT0gbnVsbCB8fCBjb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNhbid0IGNyZWF0ZSBuZXcgJ0Nsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBjbG9iID0gbnVsbDtcblx0XHRpZiAoaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbikpIHtcblx0XHRcdGxldCBwcyA9IG51bGw7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwcyA9IGNvbm5lY3Rpb24ucHJlcGFyZVN0YXRlbWVudChcIlNFTEVDVCBUT19DTE9CICg/KSBGUk9NIERVTU1ZO1wiKTtcblx0XHRcdFx0cHMuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRjbG9iID0gcnMuZ2V0Q2xvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUNsb2IoKTtcblx0XHRcdGNsb2Iuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNsb2I7XG5cdH0gY2F0Y2ggKGU6IGFueSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgRXJyb3Igb2NjdXJlZCBkdXJpbmcgY3JlYXRpb24gb2YgJ0Nsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZWFkTkNsb2JWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgYW55IHtcblx0cmV0dXJuIHZhbHVlID8gdmFsdWUuZ2V0U3ViU3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOQ2xvYlZhbHVlKG5hdGl2ZTogYW55LCB2YWx1ZTogYW55KTogYW55IHtcblx0dHJ5IHtcblx0XHRsZXQgY29ubmVjdGlvbiA9IG5hdGl2ZS5nZXRDb25uZWN0aW9uKCk7IC8vIGludGVudGlvbmFsbHkgbm90IGNsb3NlZFxuXHRcdGlmIChjb25uZWN0aW9uID09PSBudWxsIHx8IGNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY3JlYXRlIG5ldyAnTkNsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBuY2xvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fTkNMT0IgKD8pIEZST00gRFVNTVk7XCIpO1xuXHRcdFx0XHRwcy5zZXRTdHJpbmcoMSwgdmFsdWUpO1xuXHRcdFx0XHRsZXQgcnMgPSBwcy5leGVjdXRlUXVlcnkoKTtcblx0XHRcdFx0aWYgKHJzLm5leHQoKSkge1xuXHRcdFx0XHRcdG5jbG9iID0gcnMuZ2V0TkNsb2IoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChwcyAhPT0gbnVsbCAmJiBwcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cHMuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRuY2xvYiA9IGNvbm5lY3Rpb24uY3JlYXRlTkNsb2IoKTtcblx0XHRcdG5jbG9iLnNldFN0cmluZygxLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuY2xvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnTkNsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCbG9iVmFsdWUobmF0aXZlOiBhbnksIHZhbHVlOiBhbnkpOiBhbnkge1xuXHR0cnkge1xuXHRcdGxldCBjb25uZWN0aW9uID0gbmF0aXZlLmdldENvbm5lY3Rpb24oKTsgLy8gaW50ZW50aW9uYWxseSBub3QgY2xvc2VkXG5cdFx0aWYgKGNvbm5lY3Rpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBjcmVhdGUgbmV3ICdCbG9iJyB2YWx1ZSBhcyB0aGUgY29ubmVjdGlvbiBpcyBudWxsXCIpO1xuXHRcdH1cblx0XHRsZXQgYmxvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fQkxPQiAoPykgRlJPTSBEVU1NWTtcIik7XG5cdFx0XHRcdHBzLnNldEJ5dGVzKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRibG9iID0gcnMuZ2V0QmxvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUJsb2IoKTtcblx0XHRcdGJsb2Iuc2V0Qnl0ZXMoMSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gYmxvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnQ2xvYicgdmFsdWU6ICR7ZS5tZXNzYWdlfWApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IERhdGUge1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbi8vIC0tLSBTdGF0ZW1lbnQgQ2xhc3NlcyAtLS1cblxuLyoqXG4gKiBTdGF0ZW1lbnQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVwYXJlZFN0YXRlbWVudCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNsb3NlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGUoKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlUXVlcnkoKTogUmVzdWx0U2V0IHtcblx0XHRyZXR1cm4gbmV3IFJlc3VsdFNldCh0aGlzLm5hdGl2ZS5leGVjdXRlUXVlcnkoKSk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZVVwZGF0ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlVXBkYXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChpbmRleDogbnVtYmVyLCBzcWxUeXBlOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKGluZGV4LCBzcWxUeXBlKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBCeXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlRJTllJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qKjogQmxvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBibG9iID0gY3JlYXRlQmxvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCbG9iKGluZGV4LCBibG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5CTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Q2xvYihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueSAvKjogQ2xvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKGluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBhbnkgLyo6IE5DbG9iKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IG5jbG9iID0gY3JlYXRlTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgdmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TkNsb2IoaW5kZXgsIG5jbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OQ0xPQik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzTmF0aXZlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCeXRlcyhpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlZBUkJJTkFSWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2YXIgZGF0YSA9IEJ5dGVzLnRvSmF2YUJ5dGVzKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJ5dGVzKGluZGV4LCBkYXRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJCSU5BUlkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREYXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldERhdGUoaW5kZXgsIG5ldyBKU3FsRGF0ZShkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRBVEUpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0RmxvYXQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RmxvYXQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5GTE9BVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEludChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRJbnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5JTlRFR0VSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TG9uZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRMb25nKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuQklHSU5UKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U2hvcnQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U2hvcnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5TTUFMTElOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFN0cmluZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRTdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJDSEFSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZShpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IGdldERhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRUaW1lKGluZGV4LCBuZXcgSlNxbFRpbWUoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZXN0YW1wKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldFRpbWVzdGFtcChpbmRleCwgbmV3IEpTcWxUaW1lc3RhbXAoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FU1RBTVApO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaWdEZWNpbWFsKGluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyIC8qOiBCaWdEZWNpbWFsKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QmlnRGVjaW1hbChpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRFQ0lNQUwpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXROU3RyaW5nKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5TdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OVkFSQ0hBUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFkZEJhdGNoKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmFkZEJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZUJhdGNoKCk6IG51bWJlcltdIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZXhlY3V0ZUJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TWV0YURhdGEoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNb3JlUmVzdWx0cygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TW9yZVJlc3VsdHMoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXJNZXRhRGF0YSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRQYXJhbWV0ZXJNZXRhRGF0YSgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFdhcm5pbmcoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0V2FybmluZ3MoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgQ2FsbGFibGVTdGF0ZW1lbnQge1xuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGVRdWVyeSgpOiBSZXN1bHRTZXQge1xuXHRcdHJldHVybiBuZXcgUmVzdWx0U2V0KHRoaXMubmF0aXZlLmV4ZWN1dGVRdWVyeSgpKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlVXBkYXRlKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGVVcGRhdGUoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5yZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVNjYWxlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgc2NhbGU6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCBzY2FsZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVR5cGVOYW1lKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgdHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCB0eXBlTmFtZSk7XG5cdH1cblxuXHRwdWJsaWMgd2FzTnVsbCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUud2FzTnVsbCgpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U3RyaW5nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Qnl0ZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTaG9ydChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2hvcnQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEludChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SW50KHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb25nKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRGbG9hdChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RmxvYXQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldERvdWJsZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXREYXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBEYXRlIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZShwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIGRhdGVJbnN0YW5jZSAhPT0gbnVsbCAmJiBkYXRlSW5zdGFuY2UgIT09IHVuZGVmaW5lZCA/IG5ldyBEYXRlKGRhdGVJbnN0YW5jZS5nZXRUaW1lKCkpIDogZGF0ZUluc3RhbmNlO1xuXHR9XG5cblx0cHVibGljIGdldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRPYmplY3QocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXg6IG51bWJlcik6IG51bWJlciAvKjogc3FsLkJpZ0RlY2ltYWwqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJlZihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuUmVmKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZWYocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QmxvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgcGFyYW1ldGVySW5kZXgpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCbG9iTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkgLyo6IHNxbC5CbG9iKi8ge1xuXHRcdHJldHVybiBEYXRhYmFzZUZhY2FkZS5yZWFkQmxvYlZhbHVlKHRoaXMubmF0aXZlLCBwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQ2xvYiovIHtcblx0XHRyZXR1cm4gcmVhZENsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXRDbG9iKHBhcmFtZXRlckluZGV4KSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihwYXJhbWV0ZXJJbmRleCkpO1xuXHR9XG5cblx0cHVibGljIGdldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5TdHJpbmcocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEFycmF5KHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnlbXSAvKjogc3FsLkFycmF5Ki8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRBcnJheShwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VVJMKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRVUkwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJvd0lkKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkgLyo6IHNxbC5Sb3dJZCovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Um93SWQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFhNTChwYXJhbWV0ZXJJbmRleDogc3RyaW5nIHwgbnVtYmVyKTogYW55IC8qOiBzcWwuU1FMWE1MKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTUUxYTUwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIHNldFVSTChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0VVJMKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlU3RyOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIsIHR5cGVOYW1lPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3Qgc3FsVHlwZTogbnVtYmVyID0gTnVtYmVyLmlzSW50ZWdlcihzcWxUeXBlU3RyIGFzIG51bWJlcikgPyBzcWxUeXBlU3RyIGFzIG51bWJlciA6IFNRTFR5cGVzW3NxbFR5cGVTdHIgYXMga2V5b2YgdHlwZW9mIFNRTFR5cGVzXTtcblx0XHRpZiAodHlwZU5hbWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlTmFtZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSwgdHlwZU5hbWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBieXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFNob3J0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFNob3J0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuU01BTExJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRJbnQocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0SW50KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuSU5URUdFUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldExvbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TG9uZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJR0lOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEZsb2F0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEZsb2F0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRkxPQVQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0QmlnRGVjaW1hbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlciAvKjogQmlnRGVjaW1hbCovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5ERUNJTUFMKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U3RyaW5nKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFN0cmluZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlcyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueVtdIC8qYnl0ZVtdKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZXMocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5BUlJBWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldERhdGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RGF0ZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxEYXRlKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuREFURSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxUaW1lKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuVElNRSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4LCBuZXcgSlNxbFRpbWVzdGFtcChkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlRJTUVTVEFNUCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEFzY2lpU3RyZWFtKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIGlucHV0U3RyZWFtOiBJbnB1dFN0cmVhbSwgbGVuZ3RoPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKGxlbmd0aCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QXNjaWlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRBc2NpaVN0cmVhbShwYXJhbWV0ZXJJbmRleCwgaW5wdXRTdHJlYW0pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHRhcmdldFNxbFR5cGU/OiBudW1iZXIsIHNjYWxlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHNjYWxlICE9PSB1bmRlZmluZWQgJiYgc2NhbGUgIT09IG51bGwgJiYgdGFyZ2V0U3FsVHlwZSAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFNxbFR5cGUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE9iamVjdChwYXJhbWV0ZXJJbmRleCwgdmFsdWUsIHRhcmdldFNxbFR5cGUsIHNjYWxlKTtcblx0XHR9IGVsc2UgaWYgKHRhcmdldFNxbFR5cGUgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXRTcWxUeXBlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRPYmplY3QocGFyYW1ldGVySW5kZXgsIHZhbHVlLCB0YXJnZXRTcWxUeXBlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFJvd0lkKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBudW1iZXIgLyo6IFJvd0lkKi8pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSb3dJZChwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHR9XG5cblx0cHVibGljIHNldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROU3RyaW5nKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRTUUxYTUwocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogU1FMWE1MKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U1FMWE1MKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk51bGxhYmxlIFNRTFhNTCB0eXBlIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLypCbG9iICovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGJsb2IgPSBjcmVhdGVCbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJsb2IocGFyYW1ldGVySW5kZXgsIGJsb2IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRDbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLyo6IENsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKHBhcmFtZXRlckluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogTkNsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBuY2xvYiA9IGNyZWF0ZU5DbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5DbG9iKHBhcmFtZXRlckluZGV4LCBuY2xvYik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTkNMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9yZVJlc3VsdHMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1vcmVSZXN1bHRzKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTogYW55IC8qOiBQYXJhbWV0ZXJNZXRhRGF0YSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG59XG5cbi8qKlxuICogUmVzdWx0U2V0IG9iamVjdFxuICovXG5leHBvcnQgY2xhc3MgUmVzdWx0U2V0IHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgdGhlIFJlc3VsdFNldCBpbnRvIGEgSlNPTiBhcnJheSBvZiBvYmplY3RzLlxuXHQgKiBAcGFyYW0gbGltaXRlZCBXaGV0aGVyIHRvIHVzZSBsaW1pdGVkIEpTT04gY29udmVyc2lvbiAob3B0aW1pemVkKS5cblx0ICogQHBhcmFtIHN0cmluZ2lmeSBXaGV0aGVyIHRvIHJldHVybiB0aGUgSlNPTiBhcyBhIHN0cmluZyBvciBhIHBhcnNlZCBhcnJheS5cblx0ICogQHJldHVybnMgQSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgc2V0LCBvciBhIHN0cmluZyBpZiBzdHJpbmdpZnkgaXMgdHJ1ZS5cblx0ICovXG5cdHB1YmxpYyB0b0pzb24obGltaXRlZCA9IGZhbHNlLCBzdHJpbmdpZnkgPSBmYWxzZSk6IGFueVtdIHtcblx0XHRjb25zdCBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTtcblx0XHRjb25zdCBvdXRwdXQgPSBXcml0ZXJPdXRwdXRTdHJlYW1cblx0XHRcdC5idWlsZGVyKClcblx0XHRcdC5zZXRXcml0ZXIoc3cpXG5cdFx0XHQuc2V0Q2hhcnNldChTdGFuZGFyZENoYXJzZXRzLlVURl84KVxuXHRcdFx0LmdldCgpO1xuXHRcdERhdGFiYXNlRmFjYWRlLnRvSnNvbih0aGlzLm5hdGl2ZSwgbGltaXRlZCwgc3RyaW5naWZ5LCBvdXRwdXQpO1xuXHRcdGNvbnN0IGpzb25TdHJpbmcgPSBzdy50b1N0cmluZygpO1xuXHRcdHJldHVybiBzdHJpbmdpZnkgPyBqc29uU3RyaW5nIDogSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBCaWdEZWNpbWFsKi8gIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0QmlnRGVjaW1hbChpZGVudGlmaWVyKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCb29sZWFuKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueVtdIC8qOiBieXRlW10qLyB7XG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMubmF0aXZlLmdldEJ5dGVzKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fTtcblxuXHRwdWJsaWMgZ2V0Qnl0ZXNOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55W10gLyo6IGJ5dGVbXSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qnl0ZXMoaWRlbnRpZmllcik7XG5cdH07XG5cblx0cHVibGljIGdldEJsb2IoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJsb2JOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBhbnkgLyo6IHNxbC5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkQ2xvYlZhbHVlKHRoaXMubmF0aXZlLmdldENsb2IoaWRlbnRpZmllcikpO1xuXHR9XG5cblx0cHVibGljIGdldE5DbG9iKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihpZGVudGlmaWVyKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGF0ZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXREb3VibGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEZsb2F0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEZsb2F0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEludChpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJbnQoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TG9uZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFNob3J0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFNob3J0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTdHJpbmcoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRUaW1lKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXRUaW1lc3RhbXAoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBpc0FmdGVyTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNBZnRlckxhc3QoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0JlZm9yZUZpcnN0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc0JlZm9yZUZpcnN0KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmlzQ2xvc2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNGaXJzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNGaXJzdCgpO1xuXHR9XG5cblx0cHVibGljIGlzTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNMYXN0KCk7XG5cdH1cblxuXHRwdWJsaWMgbmV4dCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUubmV4dCgpO1xuXHR9XG5cblx0cHVibGljIGdldE1ldGFEYXRhKCk6IGFueSAvKjogUmVzdWx0U2V0TWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TlN0cmluZyhjb2x1bW5JbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TlN0cmluZyhjb2x1bW5JbmRleCk7XG5cdH1cbn1cblxuLy8gLS0tIENvbm5lY3Rpb24gQ2xhc3MgLS0tXG5cbi8qKlxuICogQ29ubmVjdGlvbiBvYmplY3Qgd3JhcHBlciBhcm91bmQgYSBuYXRpdmUgSmF2YSBgQ29ubmVjdGlvbmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uIHtcblxuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IoZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IERhdGFiYXNlRmFjYWRlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY29ubmVjdGlvbiBpcyBmb3IgYSBzcGVjaWZpYyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgaXNPZlR5cGUoZGF0YWJhc2VTeXN0ZW06IERhdGFiYXNlU3lzdGVtKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YWJhc2VTeXN0ZW0oKSA9PT0gZGF0YWJhc2VTeXN0ZW07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0gYXMgYSB7QGxpbmsgRGF0YWJhc2VTeXN0ZW19IGVudW0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RGF0YWJhc2VTeXN0ZW0oKTogRGF0YWJhc2VTeXN0ZW0ge1xuXHRcdGNvbnN0IGRiU3lzdGVtOiBzdHJpbmcgPSB0aGlzLm5hdGl2ZS5nZXREYXRhYmFzZVN5c3RlbSgpLm5hbWUoKTtcblx0XHRzd2l0Y2ggKGRiU3lzdGVtKSB7XG5cdFx0XHRjYXNlIFwiREVSQllcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkRFUkJZO1xuXHRcdFx0Y2FzZSBcIlBPU1RHUkVTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlBPU1RHUkVTUUw7XG5cdFx0XHRjYXNlIFwiSDJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkgyO1xuXHRcdFx0Y2FzZSBcIk1BUklBREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1BUklBREI7XG5cdFx0XHRjYXNlIFwiSEFOQVwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uSEFOQTtcblx0XHRcdGNhc2UgXCJTTk9XRkxBS0VcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlNOT1dGTEFLRTtcblx0XHRcdGNhc2UgXCJNU1NRTFwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uTVNTUUw7XG5cdFx0XHRjYXNlIFwiTVlTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1ZU1FMO1xuXHRcdFx0Y2FzZSBcIk1PTkdPREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1PTkdPREI7XG5cdFx0XHRjYXNlIFwiU1lCQVNFXCI6XG5cdFx0XHRcdHJldHVybiBEYXRhYmFzZVN5c3RlbS5TWUJBU0U7XG5cdFx0XHRjYXNlIFwiVU5LTk9XTlwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uVU5LTk9XTjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBtYXBwaW5nIGZvciBkYXRhYmFzZSBzeXN0ZW0gdHlwZSAke2RiU3lzdGVtfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBQcmVwYXJlZFN0YXRlbWVudH0gb2JqZWN0IGZvciBzZW5kaW5nIHBhcmFtZXRlcml6ZWQgU1FMIHN0YXRlbWVudHMgdG8gdGhlIGRhdGFiYXNlLlxuXHQgKi9cblx0cHVibGljIHByZXBhcmVTdGF0ZW1lbnQoc3FsOiBzdHJpbmcpOiBQcmVwYXJlZFN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBQcmVwYXJlZFN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlU3RhdGVtZW50KHNxbCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB7QGxpbmsgQ2FsbGFibGVTdGF0ZW1lbnR9IG9iamVjdCBmb3IgY2FsbGluZyBkYXRhYmFzZSBzdG9yZWQgcHJvY2VkdXJlcyBvciBmdW5jdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgcHJlcGFyZUNhbGwoc3FsOiBzdHJpbmcpOiBDYWxsYWJsZVN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBDYWxsYWJsZVN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlQ2FsbChzcWwpKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNDbG9zZWQoKSkge1xuXHRcdFx0dGhpcy5uYXRpdmUuY2xvc2UoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY29tbWl0KCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNvbW1pdCgpO1xuXHR9XG5cblx0cHVibGljIGdldEF1dG9Db21taXQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEF1dG9Db21taXQoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXRhbG9nKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldENhdGFsb2coKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTY2hlbWEoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2NoZW1hKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBpc1JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc1JlYWRPbmx5KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNWYWxpZCgpO1xuXHR9XG5cblx0cHVibGljIHJvbGxiYWNrKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJvbGxiYWNrKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXRhbG9nKGNhdGFsb2c6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldENhdGFsb2coY2F0YWxvZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0UmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSZWFkT25seShyZWFkT25seSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U2NoZW1hKHNjaGVtYTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0U2NoZW1hKHNjaGVtYSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0VHJhbnNhY3Rpb25Jc29sYXRpb24odHJhbnNhY3Rpb25Jc29sYXRpb246IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldFRyYW5zYWN0aW9uSXNvbGF0aW9uKHRyYW5zYWN0aW9uSXNvbGF0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNZXRhRGF0YSgpOiBhbnkgLyo6IERhdGFiYXNlTWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cbn1cblxuLy8gLS0tIERhdGFiYXNlIENsYXNzIC0tLVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2Uge1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgZGF0YSBzb3VyY2UgbmFtZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldERhdGFTb3VyY2VzKCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBkYXRhc291cmNlcyA9IERhdGFiYXNlRmFjYWRlLmdldERhdGFTb3VyY2VzKCk7XG5cdFx0cmV0dXJuIGRhdGFzb3VyY2VzID8gSlNPTi5wYXJzZShkYXRhc291cmNlcykgOiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGRhdGFiYXNlIG1ldGFkYXRhIGZvciB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRNZXRhZGF0YShkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IERhdGFiYXNlTWV0YWRhdGEgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gRGF0YWJhc2VGYWNhZGUuZ2V0TWV0YWRhdGEoZGF0YXNvdXJjZU5hbWUpO1xuXHRcdHJldHVybiBtZXRhZGF0YSA/IEpTT04ucGFyc2UobWV0YWRhdGEpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHByb2R1Y3QgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFByb2R1Y3ROYW1lKGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUuZ2V0UHJvZHVjdE5hbWUoZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYSBuZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcblx0XHRyZXR1cm4gbmV3IENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHRcdERhdGFiYXNlLFxuXHRcdENvbm5lY3Rpb24sXG5cdFx0UHJlcGFyZWRTdGF0ZW1lbnQsXG5cdFx0Q2FsbGFibGVTdGF0ZW1lbnQsXG5cdFx0UmVzdWx0U2V0LFxuXHRcdERhdGFiYXNlU3lzdGVtLFxuXHRcdFNRTFR5cGVzXG5cdH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJ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ZUFBZSxlQUFlO0FBQ2xELFdBQU8sY0FBYyxLQUFLLE1BQU0sV0FBVyxJQUFJLENBQUM7QUFBQSxFQUNqRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsT0FBYyxZQUFZLGdCQUF1RDtBQUNoRixVQUFNLFdBQVcsZUFBZSxZQUFZLGNBQWM7QUFDMUQsV0FBTyxXQUFXLEtBQUssTUFBTSxRQUFRLElBQUk7QUFBQSxFQUMxQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsT0FBYyxlQUFlLGdCQUFpQztBQUM3RCxXQUFPLGVBQWUsZUFBZSxjQUFjO0FBQUEsRUFDcEQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsY0FBYyxnQkFBcUM7QUFDaEUsV0FBTyxJQUFJLFdBQVcsY0FBYztBQUFBLEVBQ3JDO0FBQ0Q7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUFBLElBQ2hCO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRDtBQUNEOyIsCiAgIm5hbWVzIjogWyJEYXRhYmFzZVN5c3RlbSIsICJpc0hhbmFEYXRhYmFzZSJdCn0K
891
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RhdGFiYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZGIvZGF0YWJhc2VcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9kYlxuICogQG5hbWUgRGF0YWJhc2VcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBEYXRhYmFzZWAgY2xhc3MgdGhhdCBzZXJ2ZXMgYXMgYW4gaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHJlbGF0aW9uYWwgZGF0YWJhc2VzIGluIHRoZSBEaXJpZ2libGUgZW52aXJvbm1lbnQuIEl0IGluY2x1ZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgZXhlY3V0aW5nIFNRTCBxdWVyaWVzLCBtYW5hZ2luZyBkYXRhYmFzZSBjb25uZWN0aW9ucywgYW5kIHJldHJpZXZpbmcgbWV0YWRhdGEgYWJvdXQgdGhlIGRhdGFiYXNlIHN0cnVjdHVyZS4gVGhlIG1vZHVsZSBhbHNvIGRlZmluZXMgYSBzZXQgb2YgU1FMIHR5cGUgY29uc3RhbnRzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBzcGVjaWZpYyBkYXRhIHR5cGVzIGxpa2UgQ0xPQnMgYW5kIEJMT0JzLlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzXG4gKiAtICoqU1FMIEV4ZWN1dGlvbioqOiBFeGVjdXRlIGFyYml0cmFyeSBTUUwgcXVlcmllcyBhbmQgdXBkYXRlcyBhZ2FpbnN0IHRoZSBjb25uZWN0ZWQgZGF0YWJhc2UuXG4gKiAtICoqTWV0YWRhdGEgUmV0cmlldmFsKio6IEFjY2VzcyBkZXRhaWxlZCBtZXRhZGF0YSBhYm91dCBkYXRhYmFzZSBzY2hlbWFzLCB0YWJsZXMsIGNvbHVtbnMsIGFuZCBvdGhlciBzdHJ1Y3R1cmFsIGVsZW1lbnRzLlxuICogLSAqKlR5cGUgSGFuZGxpbmcqKjogUHJvdmlkZXMgdXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggdmFyaW91cyBTUUwgZGF0YSB0eXBlcywgaW5jbHVkaW5nIENMT0JzIGFuZCBCTE9Ccywgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBIQU5BIGRhdGFiYXNlcy5cbiAqIC0gKipEYXRhYmFzZSBTeXN0ZW0gRGV0ZWN0aW9uKio6IEF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0gdG8gYXBwbHkgYXBwcm9wcmlhdGUgaGFuZGxpbmcgZm9yIHNwZWNpZmljIGRhdGEgdHlwZXMgYW5kIGZlYXR1cmVzLlxuICogLSAqKlByZXBhcmVkIFN0YXRlbWVudHMqKjogU3VwcG9ydCBmb3IgcHJlcGFyZWQgc3RhdGVtZW50cyB0byBlbmhhbmNlIHNlY3VyaXR5IGFuZCBwZXJmb3JtYW5jZSB3aGVuIGV4ZWN1dGluZyBwYXJhbWV0ZXJpemVkIHF1ZXJpZXMuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gUGVyZm9ybWluZyBkYXRhYmFzZSBvcGVyYXRpb25zIHN1Y2ggYXMgcXVlcnlpbmcsIGluc2VydGluZywgdXBkYXRpbmcsIGFuZCBkZWxldGluZyByZWNvcmRzIGluIGEgcmVsYXRpb25hbCBkYXRhYmFzZS5cbiAqIC0gUmV0cmlldmluZyBhbmQgYW5hbHl6aW5nIGRhdGFiYXNlIG1ldGFkYXRhIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZGF0YWJhc2UgYW5kIGl0cyBjb21wb25lbnRzLlxuICogLSBIYW5kbGluZyBsYXJnZSBkYXRhIHR5cGVzIGxpa2UgQ0xPQnMgYW5kIEJMT0JzIGluIGEgd2F5IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGRpZmZlcmVudCBkYXRhYmFzZSBzeXN0ZW1zLCBpbmNsdWRpbmcgSEFOQS5cbiAqIC0gSW1wbGVtZW50aW5nIGRhdGEgYWNjZXNzIGxheWVycyBpbiBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIGludGVyYWN0aW9uIHdpdGggcmVsYXRpb25hbCBkYXRhYmFzZXMsIHdoaWxlIGFic3RyYWN0aW5nIGF3YXkgZGF0YWJhc2Utc3BlY2lmaWMgZGV0YWlscy5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBEYXRhYmFzZSwgU1FMVHlwZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2RiXCI7XG4gKiAvLyBFeGVjdXRlIGEgc2ltcGxlIHF1ZXJ5XG4gKiBjb25zdCByZXN1bHRTZXQgPSBEYXRhYmFzZS5leGVjdXRlUXVlcnkoXCJTRUxFQ1QgKiBGUk9NIFVzZXJzIFdIRVJFIGFnZSA+ID9cIiwgWzMwXSwgW1NRTFR5cGVzLklOVEVHRVJdKTtcbiAqIHdoaWxlIChyZXN1bHRTZXQubmV4dCgpKSB7XG4gKiAgY29uc29sZS5sb2cocmVzdWx0U2V0LmdldFN0cmluZyhcIm5hbWVcIikpO1xuICogfVxuICogLy8gUmV0cmlldmUgZGF0YWJhc2UgbWV0YWRhdGFcbiAqIGNvbnN0IG1ldGFkYXRhID0gRGF0YWJhc2UuZ2V0TWV0YWRhdGEoKTtcbiAqIGNvbnNvbGUubG9nKG1ldGFkYXRhLmRhdGFiYXNlUHJvZHVjdE5hbWUpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgQnl0ZXMgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2lvL2J5dGVzXCI7XG5pbXBvcnQgeyBJbnB1dFN0cmVhbSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvaW8vc3RyZWFtc1wiO1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5kYi5EYXRhYmFzZUZhY2FkZVwiKTtcbmNvbnN0IEpTcWxEYXRlID0gSmF2YS50eXBlKFwiamF2YS5zcWwuRGF0ZVwiKTtcbmNvbnN0IEpTcWxUaW1lc3RhbXAgPSBKYXZhLnR5cGUoXCJqYXZhLnNxbC5UaW1lc3RhbXBcIik7XG5jb25zdCBKU3FsVGltZSA9IEphdmEudHlwZShcImphdmEuc3FsLlRpbWVcIik7XG5jb25zdCBTdHJpbmdXcml0ZXIgPSBKYXZhLnR5cGUoXCJqYXZhLmlvLlN0cmluZ1dyaXRlclwiKTtcbmNvbnN0IFdyaXRlck91dHB1dFN0cmVhbSA9IEphdmEudHlwZShcIm9yZy5hcGFjaGUuY29tbW9ucy5pby5vdXRwdXQuV3JpdGVyT3V0cHV0U3RyZWFtXCIpO1xuY29uc3QgU3RhbmRhcmRDaGFyc2V0cyA9IEphdmEudHlwZShcImphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0c1wiKTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIFNRTCB0eXBlIG5hbWVzIHRvIHRoZWlyIGphdmEuc3FsLlR5cGVzIGludGVnZXIgY29uc3RhbnRzLlxuICovXG5leHBvcnQgY29uc3QgU1FMVHlwZXMgPSBPYmplY3QuZnJlZXplKHtcblx0XCJCT09MRUFOXCI6IDE2LFxuXHRcIkRBVEVcIjogOTEsXG5cdFwiVElNRVwiOiA5Mixcblx0XCJUSU1FU1RBTVBcIjogOTMsXG5cdFwiRE9VQkxFXCI6IDgsXG5cdFwiRkxPQVRcIjogNixcblx0XCJSRUFMXCI6IDcsXG5cdFwiVElOWUlOVFwiOiAtNixcblx0XCJTTUFMTElOVFwiOiA1LFxuXHRcIklOVEVHRVJcIjogNCxcblx0XCJCSUdJTlRcIjogLTUsXG5cdFwiVkFSQ0hBUlwiOiAxMixcblx0XCJDSEFSXCI6IDEsXG5cdFwiQ0xPQlwiOiAyMDA1LFxuXHRcIkJMT0JcIjogMjAwNCxcblx0XCJWQVJCSU5BUllcIjogLTMsXG5cdFwiREVDSU1BTFwiOiAzLFxuXHRcIkFSUkFZXCI6IDIwMDMsXG5cdFwiTlZBUkNIQVJcIjogLTksXG5cdFwiTkNMT0JcIjogMjAxMSxcblx0XCJCSVRcIjogLTdcbn0pO1xuXG5leHBvcnQgZW51bSBEYXRhYmFzZVN5c3RlbSB7XG5cdFVOS05PV04sIERFUkJZLCBQT1NUR1JFU1FMLCBIMiwgTUFSSUFEQiwgSEFOQSwgU05PV0ZMQUtFLCBNWVNRTCwgTU9OR09EQiwgU1lCQVNFLCBNU1NRTFxufVxuXG4vLyAtLS0gTWV0YWRhdGEgSW50ZXJmYWNlcyAtLS1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcblx0LyoqIFRoZSBjb2x1bW5zLiAqL1xuXHRyZWFkb25seSBjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGluZGljZXMuICovXG5cdHJlYWRvbmx5IGluZGljZXM6IEluZGV4TWV0YWRhdGFbXTtcblx0LyoqIFRoZSBpbmRpY2VzLiAqL1xuXHRyZWFkb25seSBmb3JlaWduS2V5czogRm9yZWlnbktleU1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZS4gKi9cblx0cmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIHNpemUuICovXG5cdHJlYWRvbmx5IHNpemU6IG51bWJlcjtcblx0LyoqIFRoZSBudWxsYWJsZS4gKi9cblx0cmVhZG9ubHkgbnVsbGFibGU6IGJvb2xlYW47XG5cdC8qKiBUaGUga2V5LiAqL1xuXHRyZWFkb25seSBrZXk6IGJvb2xlYW47XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHNjYWxlLiAqL1xuXHRyZWFkb25seSBzY2FsZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4TWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgY29sdW1uLiAqL1xuXHRyZWFkb25seSBjb2x1bW46IHN0cmluZztcblx0LyoqIFRoZSBub24gdW5pcXVlLiAqL1xuXHRyZWFkb25seSBub25VbmlxdWU6IGJvb2xlYW47XG5cdC8qKiBUaGUgcXVhbGlmaWVyLiAqL1xuXHRyZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblx0LyoqIFRoZSBvcmRpbmFsIHBvc2l0aW9uLiAqL1xuXHRyZWFkb25seSBvcmRpbmFsUG9zaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBzb3J0IG9yZGVyLiAqL1xuXHRyZWFkb25seSBzb3J0T3JkZXI6IHN0cmluZztcblx0LyoqIFRoZSBjYXJkaW5hbGl0eS4gKi9cblx0cmVhZG9ubHkgY2FyZGluYWxpdHk6IG51bWJlcjtcblx0LyoqIFRoZSBwYWdlcy4gKi9cblx0cmVhZG9ubHkgcGFnZXM6IG51bWJlcjtcblx0LyoqIFRoZSBmaWx0ZXIgY29uZGl0aW9uLiAqL1xuXHRyZWFkb25seSBmaWx0ZXJDb25kaXRpb246IHN0cmluZztcblx0LyoqIFRoZSBraW5kLiAqL1xuXHRyZWFkb25seSBraW5kOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9yZWlnbktleU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xuXHQvKiogVGhlIHRhYmxlcy4gKi9cblx0cmVhZG9ubHkgdGFibGVzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgdmlld3MuICovXG5cdHJlYWRvbmx5IHZpZXdzOiBUYWJsZU1ldGFkYXRhW107XG5cdC8qKiBUaGUgcHJvY2VkdXJlcy4gKi9cblx0cmVhZG9ubHkgcHJvY2VkdXJlczogUHJvY2VkdXJlTWV0YWRhdGFbXTtcblx0LyoqIFRoZSBmdW5jdGlvbnMuICovXG5cdHJlYWRvbmx5IGZ1bmN0aW9uczogRnVuY3Rpb25NZXRhZGF0YVtdO1xuXHQvKiogVGhlIGZ1bmN0aW9ucy4gKi9cblx0cmVhZG9ubHkgc2VxdWVuY2VzOiBTZXF1ZW5jZU1ldGFkYXRhW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VkdXJlTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uTWV0YWRhdGEge1xuXHQvKiogVGhlIG5hbWUuICovXG5cdHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlLiAqL1xuXHRyZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgcmVtYXJrcy4gKi9cblx0cmVhZG9ubHkgcmVtYXJrczogc3RyaW5nO1xuXHQvKiogVGhlIGNvbHVtbnMuICovXG5cdHJlYWRvbmx5IGNvbHVtbnM6IFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhW107XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckNvbHVtbk1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogbnVtYmVyO1xuXHQvKiogVGhlIHR5cGUuICovXG5cdHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBwcmVjaXNpb24uICovXG5cdHJlYWRvbmx5IHByZWNpc2lvbjogbnVtYmVyO1xuXHQvKiogVGhlIGxlbmd0aC4gKi9cblx0cmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG5cdC8qKiBUaGUgc2NhbGUuICovXG5cdHJlYWRvbmx5IHNjYWxlOiBudW1iZXI7XG5cdC8qKiBUaGUgcmFkaXguICovXG5cdHJlYWRvbmx5IHJhZGl4OiBudW1iZXI7XG5cdC8qKiBUaGUgbnVsbGFibGUuICovXG5cdHJlYWRvbmx5IG51bGxhYmxlOiBib29sZWFuO1xuXHQvKiogVGhlIHJlbWFya3MuICovXG5cdHJlYWRvbmx5IHJlbWFya3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZU1ldGFkYXRhIHtcblx0LyoqIFRoZSBuYW1lLiAqL1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUga2luZC4gKi9cblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlTWV0YWRhdGEge1xuXHRyZWFkb25seSBhbGxQcm9jZWR1cmVzQXJlQ2FsbGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGFsbFRhYmxlc0FyZVNlbGVjdGFibGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXHRyZWFkb25seSB1c2VyTmFtZTogc3RyaW5nO1xuXHRyZWFkb25seSBpc1JlYWRPbmx5OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEhpZ2g6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkTG93OiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsc0FyZVNvcnRlZEF0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG51bGxzQXJlU29ydGVkQXRFbmQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGRhdGFiYXNlUHJvZHVjdE5hbWU6IHN0cmluZztcblx0cmVhZG9ubHkgZGF0YWJhc2VQcm9kdWN0VmVyc2lvbjogc3RyaW5nO1xuXHRyZWFkb25seSBkcml2ZXJOYW1lOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGRyaXZlclZlcnNpb246IHN0cmluZztcblx0cmVhZG9ubHkgZHJpdmVyTWFqb3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IGRyaXZlck1pbm9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSB1c2VzTG9jYWxGaWxlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgdXNlc0xvY2FsRmlsZVBlclRhYmxlOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZUlkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdG9yZXNVcHBlckNhc2VRdW90ZWRJZGVudGlmaWVyczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3RvcmVzTG93ZXJDYXNlUXVvdGVkSWRlbnRpZmllcnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN0b3Jlc01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBpZGVudGlmaWVyUXVvdGVTdHJpbmc6IHN0cmluZztcblx0cmVhZG9ubHkgc3FsS2V5d29yZHM6IHN0cmluZztcblx0cmVhZG9ubHkgbnVtZXJpY0Z1bmN0aW9uczogc3RyaW5nO1xuXHRyZWFkb25seSBzdHJpbmdGdW5jdGlvbnM6IHN0cmluZztcblx0cmVhZG9ubHkgc3lzdGVtRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHRpbWVEYXRlRnVuY3Rpb25zOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHNlYXJjaFN0cmluZ0VzY2FwZTogc3RyaW5nO1xuXHRyZWFkb25seSBleHRyYU5hbWVDaGFyYWN0ZXJzOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhBZGRDb2x1bW46IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQWx0ZXJUYWJsZVdpdGhEcm9wQ29sdW1uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvbHVtbkFsaWFzaW5nOiBib29sZWFuO1xuXHRyZWFkb25seSBudWxsUGx1c05vbk51bGxJc051bGw6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ29udmVydDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNUYWJsZUNvcnJlbGF0aW9uTmFtZXM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzRGlmZmVyZW50VGFibGVDb3JyZWxhdGlvbk5hbWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4cHJlc3Npb25zSW5PcmRlckJ5OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09yZGVyQnlVbnJlbGF0ZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR3JvdXBCeTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNHcm91cEJ5VW5yZWxhdGVkOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0dyb3VwQnlCZXlvbmRTZWxlY3Q6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTGlrZUVzY2FwZUNsYXVzZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNNdWx0aXBsZVJlc3VsdFNldHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTXVsdGlwbGVUcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTm9uTnVsbGFibGVDb2x1bW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c01pbmltdW1TUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcmVTUUxHcmFtbWFyOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0V4dGVuZGVkU1FMR3JhbW1hcjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJFbnRyeUxldmVsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0FOU0k5MkludGVybWVkaWF0ZVNRTDogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNBTlNJOTJGdWxsU1FMOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0ludGVncml0eUVuaGFuY2VtZW50RmFjaWxpdHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNGdWxsT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNMaW1pdGVkT3V0ZXJKb2luczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hVGVybTogc3RyaW5nO1xuXHRyZWFkb25seSBwcm9jZWR1cmVUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGNhdGFsb2dUZXJtOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGlzQ2F0YWxvZ0F0U3RhcnQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGNhdGFsb2dTZXBhcmF0b3I6IHN0cmluZztcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5EYXRhTWFuaXB1bGF0aW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblByb2NlZHVyZUNhbGxzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NjaGVtYXNJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU2NoZW1hc0luSW5kZXhEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTY2hlbWFzSW5Qcml2aWxlZ2VEZWZpbml0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luRGF0YU1hbmlwdWxhdGlvbjogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNDYXRhbG9nc0luUHJvY2VkdXJlQ2FsbHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblRhYmxlRGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJbkluZGV4RGVmaW5pdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQ2F0YWxvZ3NJblByaXZpbGVnZURlZmluaXRpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1Bvc2l0aW9uZWREZWxldGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzUG9zaXRpb25lZFVwZGF0ZTogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTZWxlY3RGb3JVcGRhdGU6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RvcmVkUHJvY2VkdXJlczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5Db21wYXJpc29uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdWJxdWVyaWVzSW5FeGlzdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3VicXVlcmllc0luSW5zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1N1YnF1ZXJpZXNJblF1YW50aWZpZWRzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0NvcnJlbGF0ZWRTdWJxdWVyaWVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1VuaW9uQWxsOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzQ29tbWl0OiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzUm9sbGJhY2s6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NDb21taXQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NSb2xsYmFjazogYm9vbGVhbjtcblx0cmVhZG9ubHkgbWF4QmluYXJ5TGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDaGFyTGl0ZXJhbExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5OYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heENvbHVtbnNJbkdyb3VwQnk6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luSW5kZXg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luT3JkZXJCeTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhDb2x1bW5zSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29sdW1uc0luVGFibGU6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q3Vyc29yTmFtZUxlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhJbmRleExlbmd0aDogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhTY2hlbWFOYW1lTGVuZ3RoOiBudW1iZXI7XG5cdHJlYWRvbmx5IG1heFByb2NlZHVyZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Q2F0YWxvZ05hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4Um93U2l6ZTogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhSb3dTaXplSW5jbHVkZUJsb2JzOiBib29sZWFuO1xuXHRyZWFkb25seSBtYXhTdGF0ZW1lbnRMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4U3RhdGVtZW50czogbnVtYmVyO1xuXHRyZWFkb25seSBtYXhUYWJsZU5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VGFibGVzSW5TZWxlY3Q6IG51bWJlcjtcblx0cmVhZG9ubHkgbWF4VXNlck5hbWVMZW5ndGg6IG51bWJlcjtcblx0cmVhZG9ubHkgZGVmYXVsdFRyYW5zYWN0aW9uSXNvbGF0aW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzVHJhbnNhY3Rpb25zOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c0RhdGFEZWZpbml0aW9uQW5kRGF0YU1hbmlwdWxhdGlvblRyYW5zYWN0aW9uczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNEYXRhTWFuaXB1bGF0aW9uVHJhbnNhY3Rpb25zT25seTogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25DYXVzZXNUcmFuc2FjdGlvbkNvbW1pdDogYm9vbGVhbjtcblx0cmVhZG9ubHkgZGF0YURlZmluaXRpb25JZ25vcmVkSW5UcmFuc2FjdGlvbnM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzQmF0Y2hVcGRhdGVzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c1NhdmVwb2ludHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzTmFtZWRQYXJhbWV0ZXJzOiBib29sZWFuO1xuXHRyZWFkb25seSBzdXBwb3J0c011bHRpcGxlT3BlblJlc3VsdHM6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzR2V0R2VuZXJhdGVkS2V5czogYm9vbGVhbjtcblx0cmVhZG9ubHkgcmVzdWx0U2V0SG9sZGFiaWxpdHk6IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNYWpvclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgZGF0YWJhc2VNaW5vclZlcnNpb246IG51bWJlcjtcblx0cmVhZG9ubHkgamRiY01ham9yVmVyc2lvbjogbnVtYmVyO1xuXHRyZWFkb25seSBqZGJjTWlub3JWZXJzaW9uOiBudW1iZXI7XG5cdHJlYWRvbmx5IHNxbFN0YXRlVHlwZTogbnVtYmVyO1xuXHRyZWFkb25seSBsb2NhdG9yc1VwZGF0ZUNvcHk6IGJvb2xlYW47XG5cdHJlYWRvbmx5IHN1cHBvcnRzU3RhdGVtZW50UG9vbGluZzogYm9vbGVhbjtcblx0cmVhZG9ubHkgc3VwcG9ydHNTdG9yZWRGdW5jdGlvbnNVc2luZ0NhbGxTeW50YXg6IGJvb2xlYW47XG5cdHJlYWRvbmx5IGF1dG9Db21taXRGYWlsdXJlQ2xvc2VzQWxsUmVzdWx0U2V0czogYm9vbGVhbjtcblx0cmVhZG9ubHkgZ2VuZXJhdGVkS2V5QWx3YXlzUmV0dXJuZWQ6IGJvb2xlYW47XG5cdHJlYWRvbmx5IG1heExvZ2ljYWxMb2JTaXplOiBudW1iZXI7XG5cdHJlYWRvbmx5IHN1cHBvcnRzUmVmQ3Vyc29yczogYm9vbGVhbjtcblx0cmVhZG9ubHkgc2NoZW1hczogU2NoZW1hTWV0YWRhdGFbXTtcblx0cmVhZG9ubHkga2luZDogc3RyaW5nO1xufVxuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuZnVuY3Rpb24gaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbjogYW55KTogYm9vbGVhbiB7XG5cdGxldCBpc0hhbmFEYXRhYmFzZSA9IGZhbHNlO1xuXHRsZXQgbWV0YWRhdGEgPSBjb25uZWN0aW9uLmdldE1ldGFEYXRhKCk7XG5cdGlmIChtZXRhZGF0YSAhPT0gbnVsbCAmJiBtZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0aXNIYW5hRGF0YWJhc2UgPSBtZXRhZGF0YS5nZXREYXRhYmFzZVByb2R1Y3ROYW1lKCkgPT09IFwiSERCXCI7XG5cdH1cblx0cmV0dXJuIGlzSGFuYURhdGFiYXNlO1xufVxuXG5mdW5jdGlvbiByZWFkQ2xvYlZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBhbnkge1xuXHRyZXR1cm4gdmFsdWUgPyB2YWx1ZS5nZXRTdWJTdHJpbmcoMSwgdmFsdWUubGVuZ3RoKCkpIDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNsb2JWYWx1ZShuYXRpdmU6IGFueSwgdmFsdWU6IGFueSk6IGFueSB7XG5cdHRyeSB7XG5cdFx0bGV0IGNvbm5lY3Rpb24gPSBuYXRpdmUuZ2V0Q29ubmVjdGlvbigpOyAvLyBpbnRlbnRpb25hbGx5IG5vdCBjbG9zZWRcblx0XHRpZiAoY29ubmVjdGlvbiA9PT0gbnVsbCB8fCBjb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNhbid0IGNyZWF0ZSBuZXcgJ0Nsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBjbG9iID0gbnVsbDtcblx0XHRpZiAoaXNIYW5hRGF0YWJhc2UoY29ubmVjdGlvbikpIHtcblx0XHRcdGxldCBwcyA9IG51bGw7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwcyA9IGNvbm5lY3Rpb24ucHJlcGFyZVN0YXRlbWVudChcIlNFTEVDVCBUT19DTE9CICg/KSBGUk9NIERVTU1ZO1wiKTtcblx0XHRcdFx0cHMuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRjbG9iID0gcnMuZ2V0Q2xvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUNsb2IoKTtcblx0XHRcdGNsb2Iuc2V0U3RyaW5nKDEsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNsb2I7XG5cdH0gY2F0Y2ggKGU6IGFueSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgRXJyb3Igb2NjdXJlZCBkdXJpbmcgY3JlYXRpb24gb2YgJ0Nsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZWFkTkNsb2JWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgYW55IHtcblx0cmV0dXJuIHZhbHVlID8gdmFsdWUuZ2V0U3ViU3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOQ2xvYlZhbHVlKG5hdGl2ZTogYW55LCB2YWx1ZTogYW55KTogYW55IHtcblx0dHJ5IHtcblx0XHRsZXQgY29ubmVjdGlvbiA9IG5hdGl2ZS5nZXRDb25uZWN0aW9uKCk7IC8vIGludGVudGlvbmFsbHkgbm90IGNsb3NlZFxuXHRcdGlmIChjb25uZWN0aW9uID09PSBudWxsIHx8IGNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY3JlYXRlIG5ldyAnTkNsb2InIHZhbHVlIGFzIHRoZSBjb25uZWN0aW9uIGlzIG51bGxcIik7XG5cdFx0fVxuXHRcdGxldCBuY2xvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fTkNMT0IgKD8pIEZST00gRFVNTVk7XCIpO1xuXHRcdFx0XHRwcy5zZXRTdHJpbmcoMSwgdmFsdWUpO1xuXHRcdFx0XHRsZXQgcnMgPSBwcy5leGVjdXRlUXVlcnkoKTtcblx0XHRcdFx0aWYgKHJzLm5leHQoKSkge1xuXHRcdFx0XHRcdG5jbG9iID0gcnMuZ2V0TkNsb2IoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdGlmIChwcyAhPT0gbnVsbCAmJiBwcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cHMuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRuY2xvYiA9IGNvbm5lY3Rpb24uY3JlYXRlTkNsb2IoKTtcblx0XHRcdG5jbG9iLnNldFN0cmluZygxLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuY2xvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnTkNsb2InIHZhbHVlOiAke2UubWVzc2FnZX1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCbG9iVmFsdWUobmF0aXZlOiBhbnksIHZhbHVlOiBhbnkpOiBhbnkge1xuXHR0cnkge1xuXHRcdGxldCBjb25uZWN0aW9uID0gbmF0aXZlLmdldENvbm5lY3Rpb24oKTsgLy8gaW50ZW50aW9uYWxseSBub3QgY2xvc2VkXG5cdFx0aWYgKGNvbm5lY3Rpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBjcmVhdGUgbmV3ICdCbG9iJyB2YWx1ZSBhcyB0aGUgY29ubmVjdGlvbiBpcyBudWxsXCIpO1xuXHRcdH1cblx0XHRsZXQgYmxvYiA9IG51bGw7XG5cdFx0aWYgKGlzSGFuYURhdGFiYXNlKGNvbm5lY3Rpb24pKSB7XG5cdFx0XHRsZXQgcHMgPSBudWxsO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHMgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoXCJTRUxFQ1QgVE9fQkxPQiAoPykgRlJPTSBEVU1NWTtcIik7XG5cdFx0XHRcdHBzLnNldEJ5dGVzKDEsIHZhbHVlKTtcblx0XHRcdFx0bGV0IHJzID0gcHMuZXhlY3V0ZVF1ZXJ5KCk7XG5cdFx0XHRcdGlmIChycy5uZXh0KCkpIHtcblx0XHRcdFx0XHRibG9iID0gcnMuZ2V0QmxvYigxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKHBzICE9PSBudWxsICYmIHBzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRwcy5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJsb2IgPSBjb25uZWN0aW9uLmNyZWF0ZUJsb2IoKTtcblx0XHRcdGJsb2Iuc2V0Qnl0ZXMoMSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gYmxvYjtcblx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cmVkIGR1cmluZyBjcmVhdGlvbiBvZiAnQ2xvYicgdmFsdWU6ICR7ZS5tZXNzYWdlfWApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IERhdGUge1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbi8vIC0tLSBTdGF0ZW1lbnQgQ2xhc3NlcyAtLS1cblxuLyoqXG4gKiBTdGF0ZW1lbnQgb2JqZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVwYXJlZFN0YXRlbWVudCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNsb3NlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGUoKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlUXVlcnkoKTogUmVzdWx0U2V0IHtcblx0XHRyZXR1cm4gbmV3IFJlc3VsdFNldCh0aGlzLm5hdGl2ZS5leGVjdXRlUXVlcnkoKSk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZVVwZGF0ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlVXBkYXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChpbmRleDogbnVtYmVyLCBzcWxUeXBlOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKGluZGV4LCBzcWxUeXBlKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBCeXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlRJTllJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qKjogQmxvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBibG9iID0gY3JlYXRlQmxvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCbG9iKGluZGV4LCBibG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5CTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Q2xvYihpbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueSAvKjogQ2xvYiovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGxldCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKGluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBhbnkgLyo6IE5DbG9iKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IG5jbG9iID0gY3JlYXRlTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgdmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TkNsb2IoaW5kZXgsIG5jbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OQ0xPQik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzTmF0aXZlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCeXRlcyhpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLlZBUkJJTkFSWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEJ5dGVzKGluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55W10gLypieXRlW10qLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2YXIgZGF0YSA9IEJ5dGVzLnRvSmF2YUJ5dGVzKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJ5dGVzKGluZGV4LCBkYXRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJCSU5BUlkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREYXRlKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldERhdGUoaW5kZXgsIG5ldyBKU3FsRGF0ZShkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRBVEUpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0RmxvYXQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RmxvYXQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5GTE9BVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEludChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRJbnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5JTlRFR0VSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TG9uZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRMb25nKGluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChpbmRleCwgU1FMVHlwZXMuQklHSU5UKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U2hvcnQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U2hvcnQoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5TTUFMTElOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFN0cmluZyhpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRTdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5WQVJDSEFSKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZShpbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IGdldERhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRUaW1lKGluZGV4LCBuZXcgSlNxbFRpbWUoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0VGltZXN0YW1wKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gZ2V0RGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldFRpbWVzdGFtcChpbmRleCwgbmV3IEpTcWxUaW1lc3RhbXAoZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5USU1FU1RBTVApO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaWdEZWNpbWFsKGluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyIC8qOiBCaWdEZWNpbWFsKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QmlnRGVjaW1hbChpbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwoaW5kZXgsIFNRTFR5cGVzLkRFQ0lNQUwpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXROU3RyaW5nKGluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5TdHJpbmcoaW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKGluZGV4LCBTUUxUeXBlcy5OVkFSQ0hBUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFkZEJhdGNoKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmFkZEJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZUJhdGNoKCk6IG51bWJlcltdIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZXhlY3V0ZUJhdGNoKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TWV0YURhdGEoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNb3JlUmVzdWx0cygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TW9yZVJlc3VsdHMoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXJNZXRhRGF0YSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRQYXJhbWV0ZXJNZXRhRGF0YSgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFdhcm5pbmcoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0V2FybmluZ3MoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgQ2FsbGFibGVTdGF0ZW1lbnQge1xuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UmVzdWx0U2V0KCk6IFJlc3VsdFNldCB7XG5cdFx0cmV0dXJuIG5ldyBSZXN1bHRTZXQodGhpcy5uYXRpdmUuZ2V0UmVzdWx0U2V0KCkpO1xuXHR9XG5cblx0cHVibGljIGV4ZWN1dGVRdWVyeSgpOiBSZXN1bHRTZXQge1xuXHRcdHJldHVybiBuZXcgUmVzdWx0U2V0KHRoaXMubmF0aXZlLmV4ZWN1dGVRdWVyeSgpKTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlVXBkYXRlKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmV4ZWN1dGVVcGRhdGUoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5yZWdpc3Rlck91dFBhcmFtZXRlcihwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVNjYWxlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgc2NhbGU6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCBzY2FsZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPdXRQYXJhbWV0ZXJCeVR5cGVOYW1lKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHNxbFR5cGU6IGtleW9mIHR5cGVvZiBTUUxUeXBlcyB8IG51bWJlciwgdHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJlZ2lzdGVyT3V0UGFyYW1ldGVyKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlLCB0eXBlTmFtZSk7XG5cdH1cblxuXHRwdWJsaWMgd2FzTnVsbCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUud2FzTnVsbCgpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U3RyaW5nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Qnl0ZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTaG9ydChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2hvcnQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEludChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SW50KHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb25nKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRGbG9hdChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RmxvYXQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldERvdWJsZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKHBhcmFtZXRlckluZGV4KTtcblx0fVxuXG5cdHB1YmxpYyBnZXREYXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBEYXRlIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZShwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIGRhdGVJbnN0YW5jZSAhPT0gbnVsbCAmJiBkYXRlSW5zdGFuY2UgIT09IHVuZGVmaW5lZCA/IG5ldyBEYXRlKGRhdGVJbnN0YW5jZS5nZXRUaW1lKCkpIDogZGF0ZUluc3RhbmNlO1xuXHR9XG5cblx0cHVibGljIGdldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogRGF0ZSB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4KTtcblx0XHRyZXR1cm4gZGF0ZUluc3RhbmNlICE9PSBudWxsICYmIGRhdGVJbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gbmV3IERhdGUoZGF0ZUluc3RhbmNlLmdldFRpbWUoKSkgOiBkYXRlSW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgZ2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRPYmplY3QocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXg6IG51bWJlcik6IG51bWJlciAvKjogc3FsLkJpZ0RlY2ltYWwqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJlZihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuUmVmKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZWYocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnlbXSAvKjogYnl0ZVtdKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlcyhwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QmxvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgcGFyYW1ldGVySW5kZXgpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCbG9iTmF0aXZlKHBhcmFtZXRlckluZGV4OiBudW1iZXIpOiBhbnkgLyo6IHNxbC5CbG9iKi8ge1xuXHRcdHJldHVybiBEYXRhYmFzZUZhY2FkZS5yZWFkQmxvYlZhbHVlKHRoaXMubmF0aXZlLCBwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihwYXJhbWV0ZXJJbmRleDogbnVtYmVyKTogYW55IC8qOiBzcWwuQ2xvYiovIHtcblx0XHRyZXR1cm4gcmVhZENsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXRDbG9iKHBhcmFtZXRlckluZGV4KSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihwYXJhbWV0ZXJJbmRleCkpO1xuXHR9XG5cblx0cHVibGljIGdldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5TdHJpbmcocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldEFycmF5KHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnlbXSAvKjogc3FsLkFycmF5Ki8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRBcnJheShwYXJhbWV0ZXJJbmRleCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VVJMKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRVUkwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFJvd0lkKHBhcmFtZXRlckluZGV4OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkgLyo6IHNxbC5Sb3dJZCovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Um93SWQocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIGdldFNRTFhNTChwYXJhbWV0ZXJJbmRleDogc3RyaW5nIHwgbnVtYmVyKTogYW55IC8qOiBzcWwuU1FMWE1MKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTUUxYTUwocGFyYW1ldGVySW5kZXgpO1xuXHR9XG5cblx0cHVibGljIHNldFVSTChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0VVJMKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TnVsbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCBzcWxUeXBlU3RyOiBrZXlvZiB0eXBlb2YgU1FMVHlwZXMgfCBudW1iZXIsIHR5cGVOYW1lPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3Qgc3FsVHlwZTogbnVtYmVyID0gTnVtYmVyLmlzSW50ZWdlcihzcWxUeXBlU3RyIGFzIG51bWJlcikgPyBzcWxUeXBlU3RyIGFzIG51bWJlciA6IFNRTFR5cGVzW3NxbFR5cGVTdHIgYXMga2V5b2YgdHlwZW9mIFNRTFR5cGVzXTtcblx0XHRpZiAodHlwZU5hbWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlTmFtZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgc3FsVHlwZSwgdHlwZU5hbWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBzcWxUeXBlKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qm9vbGVhbihwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJPT0xFQU4pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogYW55IC8qOiBieXRlKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZShwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFNob3J0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFNob3J0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuU01BTExJTlQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRJbnQocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0SW50KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuSU5URUdFUik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldExvbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0TG9uZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJJR0lOVCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEZsb2F0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEZsb2F0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRkxPQVQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXREb3VibGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RG91YmxlKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuRE9VQkxFKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0QmlnRGVjaW1hbChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlciAvKjogQmlnRGVjaW1hbCovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJpZ0RlY2ltYWwocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5ERUNJTUFMKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0U3RyaW5nKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldFN0cmluZyhwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCeXRlcyhwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IGFueVtdIC8qYnl0ZVtdKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0Qnl0ZXMocGFyYW1ldGVySW5kZXgsIHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5BUlJBWSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldERhdGUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0RGF0ZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxEYXRlKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuREFURSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWUocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU/OiBzdHJpbmcgfCBEYXRlKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZShwYXJhbWV0ZXJJbmRleCwgbmV3IEpTcWxUaW1lKGRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuVElNRSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFRpbWVzdGFtcChwYXJhbWV0ZXJJbmRleDogbnVtYmVyLCB2YWx1ZT86IHN0cmluZyB8IERhdGUpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bGV0IGRhdGUgPSBnZXREYXRlVmFsdWUodmFsdWUpO1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0VGltZXN0YW1wKHBhcmFtZXRlckluZGV4LCBuZXcgSlNxbFRpbWVzdGFtcChkYXRlLmdldFRpbWUoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLlRJTUVTVEFNUCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldEFzY2lpU3RyZWFtKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIGlucHV0U3RyZWFtOiBJbnB1dFN0cmVhbSwgbGVuZ3RoPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKGxlbmd0aCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0QXNjaWlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRBc2NpaVN0cmVhbShwYXJhbWV0ZXJJbmRleCwgaW5wdXRTdHJlYW0pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXg6IG51bWJlciwgaW5wdXRTdHJlYW06IElucHV0U3RyZWFtLCBsZW5ndGg/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAobGVuZ3RoKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtLCBsZW5ndGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRCaW5hcnlTdHJlYW0ocGFyYW1ldGVySW5kZXgsIGlucHV0U3RyZWFtKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHRhcmdldFNxbFR5cGU/OiBudW1iZXIsIHNjYWxlPzogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHNjYWxlICE9PSB1bmRlZmluZWQgJiYgc2NhbGUgIT09IG51bGwgJiYgdGFyZ2V0U3FsVHlwZSAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFNxbFR5cGUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMubmF0aXZlLnNldE9iamVjdChwYXJhbWV0ZXJJbmRleCwgdmFsdWUsIHRhcmdldFNxbFR5cGUsIHNjYWxlKTtcblx0XHR9IGVsc2UgaWYgKHRhcmdldFNxbFR5cGUgIT09IHVuZGVmaW5lZCAmJiB0YXJnZXRTcWxUeXBlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRPYmplY3QocGFyYW1ldGVySW5kZXgsIHZhbHVlLCB0YXJnZXRTcWxUeXBlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0T2JqZWN0KHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldFJvd0lkKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBudW1iZXIgLyo6IFJvd0lkKi8pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSb3dJZChwYXJhbWV0ZXJJbmRleCwgdmFsdWUpO1xuXHR9XG5cblx0cHVibGljIHNldE5TdHJpbmcocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXROU3RyaW5nKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTlZBUkNIQVIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRTUUxYTUwocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogU1FMWE1MKi8pOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5uYXRpdmUuc2V0U1FMWE1MKHBhcmFtZXRlckluZGV4LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk51bGxhYmxlIFNRTFhNTCB0eXBlIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRCbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLypCbG9iICovKTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGJsb2IgPSBjcmVhdGVCbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldEJsb2IocGFyYW1ldGVySW5kZXgsIGJsb2IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldE51bGwocGFyYW1ldGVySW5kZXgsIFNRTFR5cGVzLkJMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRDbG9iKHBhcmFtZXRlckluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkgLyo6IENsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBjbG9iID0gY3JlYXRlQ2xvYlZhbHVlKHRoaXMubmF0aXZlLCB2YWx1ZSk7XG5cdFx0XHR0aGlzLm5hdGl2ZS5zZXRDbG9iKHBhcmFtZXRlckluZGV4LCBjbG9iKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXROdWxsKHBhcmFtZXRlckluZGV4LCBTUUxUeXBlcy5DTE9CKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0TkNsb2IocGFyYW1ldGVySW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSAvKjogTkNsb2IqLyk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBuY2xvYiA9IGNyZWF0ZU5DbG9iVmFsdWUodGhpcy5uYXRpdmUsIHZhbHVlKTtcblx0XHRcdHRoaXMubmF0aXZlLnNldE5DbG9iKHBhcmFtZXRlckluZGV4LCBuY2xvYik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0TnVsbChwYXJhbWV0ZXJJbmRleCwgU1FMVHlwZXMuTkNMT0IpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5leGVjdXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9yZVJlc3VsdHMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1vcmVSZXN1bHRzKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTogYW55IC8qOiBQYXJhbWV0ZXJNZXRhRGF0YSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UGFyYW1ldGVyTWV0YURhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG59XG5cbi8qKlxuICogUmVzdWx0U2V0IG9iamVjdFxuICovXG5leHBvcnQgY2xhc3MgUmVzdWx0U2V0IHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgdGhlIFJlc3VsdFNldCBpbnRvIGEgSlNPTiBhcnJheSBvZiBvYmplY3RzLlxuXHQgKiBAcGFyYW0gbGltaXRlZCBXaGV0aGVyIHRvIHVzZSBsaW1pdGVkIEpTT04gY29udmVyc2lvbiAob3B0aW1pemVkKS5cblx0ICogQHBhcmFtIHN0cmluZ2lmeSBXaGV0aGVyIHRvIHJldHVybiB0aGUgSlNPTiBhcyBhIHN0cmluZyBvciBhIHBhcnNlZCBhcnJheS5cblx0ICogQHJldHVybnMgQSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgc2V0LCBvciBhIHN0cmluZyBpZiBzdHJpbmdpZnkgaXMgdHJ1ZS5cblx0ICovXG5cdHB1YmxpYyB0b0pzb24obGltaXRlZCA9IGZhbHNlLCBzdHJpbmdpZnkgPSBmYWxzZSk6IGFueVtdIHtcblx0XHRjb25zdCBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTtcblx0XHRjb25zdCBvdXRwdXQgPSBXcml0ZXJPdXRwdXRTdHJlYW1cblx0XHRcdC5idWlsZGVyKClcblx0XHRcdC5zZXRXcml0ZXIoc3cpXG5cdFx0XHQuc2V0Q2hhcnNldChTdGFuZGFyZENoYXJzZXRzLlVURl84KVxuXHRcdFx0LmdldCgpO1xuXHRcdERhdGFiYXNlRmFjYWRlLnRvSnNvbih0aGlzLm5hdGl2ZSwgbGltaXRlZCwgc3RyaW5naWZ5LCBvdXRwdXQpO1xuXHRcdGNvbnN0IGpzb25TdHJpbmcgPSBzdy50b1N0cmluZygpO1xuXHRcdHJldHVybiBzdHJpbmdpZnkgPyBqc29uU3RyaW5nIDogSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5jbG9zZSgpO1xuXHR9XG5cblx0cHVibGljIGdldEJpZ0RlY2ltYWwoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBCaWdEZWNpbWFsKi8gIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0QmlnRGVjaW1hbChpZGVudGlmaWVyKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCb29sZWFuKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCb29sZWFuKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBieXRlKi8ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRCeXRlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEJ5dGVzKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueVtdIC8qOiBieXRlW10qLyB7XG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMubmF0aXZlLmdldEJ5dGVzKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBCeXRlcy50b0phdmFTY3JpcHRCeXRlcyhkYXRhKTtcblx0fTtcblxuXHRwdWJsaWMgZ2V0Qnl0ZXNOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55W10gLyo6IGJ5dGVbXSovIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Qnl0ZXMoaWRlbnRpZmllcik7XG5cdH07XG5cblx0cHVibGljIGdldEJsb2IoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRjb25zdCBkYXRhID0gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdFx0cmV0dXJuIEJ5dGVzLnRvSmF2YVNjcmlwdEJ5dGVzKGRhdGEpO1xuXHR9XG5cblx0cHVibGljIGdldEJsb2JOYXRpdmUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogYW55IC8qOiBzcWwuQmxvYiovIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUucmVhZEJsb2JWYWx1ZSh0aGlzLm5hdGl2ZSwgaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q2xvYihpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBhbnkgLyo6IHNxbC5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkQ2xvYlZhbHVlKHRoaXMubmF0aXZlLmdldENsb2IoaWRlbnRpZmllcikpO1xuXHR9XG5cblx0cHVibGljIGdldE5DbG9iKGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IGFueSAvKjogc3FsLk5DbG9iKi8ge1xuXHRcdHJldHVybiByZWFkTkNsb2JWYWx1ZSh0aGlzLm5hdGl2ZS5nZXROQ2xvYihpZGVudGlmaWVyKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGF0ZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXREYXRlKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXREb3VibGUoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0RG91YmxlKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEZsb2F0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEZsb2F0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldEludChpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJbnQoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TG9uZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRMb25nKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFNob3J0KGlkZW50aWZpZXI6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFNob3J0KGlkZW50aWZpZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFN0cmluZyhpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTdHJpbmcoaWRlbnRpZmllcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZShpZGVudGlmaWVyOiBudW1iZXIgfCBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBkYXRlSW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRUaW1lKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBnZXRUaW1lc3RhbXAoaWRlbnRpZmllcjogbnVtYmVyIHwgc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZGF0ZUluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0VGltZXN0YW1wKGlkZW50aWZpZXIpO1xuXHRcdHJldHVybiBkYXRlSW5zdGFuY2UgIT09IG51bGwgJiYgZGF0ZUluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBuZXcgRGF0ZShkYXRlSW5zdGFuY2UuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyBpc0FmdGVyTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNBZnRlckxhc3QoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0JlZm9yZUZpcnN0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc0JlZm9yZUZpcnN0KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmlzQ2xvc2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNGaXJzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNGaXJzdCgpO1xuXHR9XG5cblx0cHVibGljIGlzTGFzdCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNMYXN0KCk7XG5cdH1cblxuXHRwdWJsaWMgbmV4dCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUubmV4dCgpO1xuXHR9XG5cblx0cHVibGljIGdldE1ldGFEYXRhKCk6IGFueSAvKjogUmVzdWx0U2V0TWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TlN0cmluZyhjb2x1bW5JbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TlN0cmluZyhjb2x1bW5JbmRleCk7XG5cdH1cbn1cblxuLy8gLS0tIENvbm5lY3Rpb24gQ2xhc3MgLS0tXG5cbi8qKlxuICogQ29ubmVjdGlvbiBvYmplY3Qgd3JhcHBlciBhcm91bmQgYSBuYXRpdmUgSmF2YSBgQ29ubmVjdGlvbmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uIHtcblxuXHRwdWJsaWMgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IoZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IERhdGFiYXNlRmFjYWRlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY29ubmVjdGlvbiBpcyBmb3IgYSBzcGVjaWZpYyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgaXNPZlR5cGUoZGF0YWJhc2VTeXN0ZW06IERhdGFiYXNlU3lzdGVtKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YWJhc2VTeXN0ZW0oKSA9PT0gZGF0YWJhc2VTeXN0ZW07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0gYXMgYSB7QGxpbmsgRGF0YWJhc2VTeXN0ZW19IGVudW0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RGF0YWJhc2VTeXN0ZW0oKTogRGF0YWJhc2VTeXN0ZW0ge1xuXHRcdGNvbnN0IGRiU3lzdGVtOiBzdHJpbmcgPSB0aGlzLm5hdGl2ZS5nZXREYXRhYmFzZVN5c3RlbSgpLm5hbWUoKTtcblx0XHRzd2l0Y2ggKGRiU3lzdGVtKSB7XG5cdFx0XHRjYXNlIFwiREVSQllcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkRFUkJZO1xuXHRcdFx0Y2FzZSBcIlBPU1RHUkVTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlBPU1RHUkVTUUw7XG5cdFx0XHRjYXNlIFwiSDJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLkgyO1xuXHRcdFx0Y2FzZSBcIk1BUklBREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1BUklBREI7XG5cdFx0XHRjYXNlIFwiSEFOQVwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uSEFOQTtcblx0XHRcdGNhc2UgXCJTTk9XRkxBS0VcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLlNOT1dGTEFLRTtcblx0XHRcdGNhc2UgXCJNU1NRTFwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uTVNTUUw7XG5cdFx0XHRjYXNlIFwiTVlTUUxcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1ZU1FMO1xuXHRcdFx0Y2FzZSBcIk1PTkdPREJcIjpcblx0XHRcdFx0cmV0dXJuIERhdGFiYXNlU3lzdGVtLk1PTkdPREI7XG5cdFx0XHRjYXNlIFwiU1lCQVNFXCI6XG5cdFx0XHRcdHJldHVybiBEYXRhYmFzZVN5c3RlbS5TWUJBU0U7XG5cdFx0XHRjYXNlIFwiVU5LTk9XTlwiOlxuXHRcdFx0XHRyZXR1cm4gRGF0YWJhc2VTeXN0ZW0uVU5LTk9XTjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBtYXBwaW5nIGZvciBkYXRhYmFzZSBzeXN0ZW0gdHlwZSAke2RiU3lzdGVtfWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBQcmVwYXJlZFN0YXRlbWVudH0gb2JqZWN0IGZvciBzZW5kaW5nIHBhcmFtZXRlcml6ZWQgU1FMIHN0YXRlbWVudHMgdG8gdGhlIGRhdGFiYXNlLlxuXHQgKi9cblx0cHVibGljIHByZXBhcmVTdGF0ZW1lbnQoc3FsOiBzdHJpbmcpOiBQcmVwYXJlZFN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBQcmVwYXJlZFN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlU3RhdGVtZW50KHNxbCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB7QGxpbmsgQ2FsbGFibGVTdGF0ZW1lbnR9IG9iamVjdCBmb3IgY2FsbGluZyBkYXRhYmFzZSBzdG9yZWQgcHJvY2VkdXJlcyBvciBmdW5jdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgcHJlcGFyZUNhbGwoc3FsOiBzdHJpbmcpOiBDYWxsYWJsZVN0YXRlbWVudCB7XG5cdFx0cmV0dXJuIG5ldyBDYWxsYWJsZVN0YXRlbWVudCh0aGlzLm5hdGl2ZS5wcmVwYXJlQ2FsbChzcWwpKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNDbG9zZWQoKSkge1xuXHRcdFx0dGhpcy5uYXRpdmUuY2xvc2UoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY29tbWl0KCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLmNvbW1pdCgpO1xuXHR9XG5cblx0cHVibGljIGdldEF1dG9Db21taXQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldEF1dG9Db21taXQoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXRhbG9nKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldENhdGFsb2coKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTY2hlbWEoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0U2NoZW1hKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0VHJhbnNhY3Rpb25Jc29sYXRpb24oKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nsb3NlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNDbG9zZWQoKTtcblx0fVxuXG5cdHB1YmxpYyBpc1JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5pc1JlYWRPbmx5KCk7XG5cdH1cblxuXHRwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNWYWxpZCgpO1xuXHR9XG5cblx0cHVibGljIHJvbGxiYWNrKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnJvbGxiYWNrKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0QXV0b0NvbW1pdChhdXRvQ29tbWl0KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXRhbG9nKGNhdGFsb2c6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldENhdGFsb2coY2F0YWxvZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0UmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5zZXRSZWFkT25seShyZWFkT25seSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U2NoZW1hKHNjaGVtYTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5uYXRpdmUuc2V0U2NoZW1hKHNjaGVtYSk7XG5cdH1cblxuXHRwdWJsaWMgc2V0VHJhbnNhY3Rpb25Jc29sYXRpb24odHJhbnNhY3Rpb25Jc29sYXRpb246IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlLnNldFRyYW5zYWN0aW9uSXNvbGF0aW9uKHRyYW5zYWN0aW9uSXNvbGF0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNZXRhRGF0YSgpOiBhbnkgLyo6IERhdGFiYXNlTWV0YURhdGEqLyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE1ldGFEYXRhKCk7XG5cdH1cbn1cblxuLy8gLS0tIERhdGFiYXNlIENsYXNzIC0tLVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2Uge1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgZGF0YSBzb3VyY2UgbmFtZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldERhdGFTb3VyY2VzKCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBkYXRhc291cmNlcyA9IERhdGFiYXNlRmFjYWRlLmdldERhdGFTb3VyY2VzKCk7XG5cdFx0cmV0dXJuIGRhdGFzb3VyY2VzID8gSlNPTi5wYXJzZShkYXRhc291cmNlcykgOiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGRhdGFiYXNlIG1ldGFkYXRhIGZvciB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRNZXRhZGF0YShkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IERhdGFiYXNlTWV0YWRhdGEgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gRGF0YWJhc2VGYWNhZGUuZ2V0TWV0YWRhdGEoZGF0YXNvdXJjZU5hbWUpO1xuXHRcdHJldHVybiBtZXRhZGF0YSA/IEpTT04ucGFyc2UobWV0YWRhdGEpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHByb2R1Y3QgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBzeXN0ZW0uXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFByb2R1Y3ROYW1lKGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUuZ2V0UHJvZHVjdE5hbWUoZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYSBuZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcblx0XHRyZXR1cm4gbmV3IENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHRcdERhdGFiYXNlLFxuXHRcdENvbm5lY3Rpb24sXG5cdFx0UHJlcGFyZWRTdGF0ZW1lbnQsXG5cdFx0Q2FsbGFibGVTdGF0ZW1lbnQsXG5cdFx0UmVzdWx0U2V0LFxuXHRcdERhdGFiYXNlU3lzdGVtLFxuXHRcdFNRTFR5cGVzXG5cdH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFtQ0EsU0FBUyxhQUFhO0FBR3RCLE1BQU0saUJBQWlCLEtBQUssS0FBSyx3REFBd0Q7QUFDekYsTUFBTSxXQUFXLEtBQUssS0FBSyxlQUFlO0FBQzFDLE1BQU0sZ0JBQWdCLEtBQUssS0FBSyxvQkFBb0I7QUFDcEQsTUFBTSxXQUFXLEtBQUssS0FBSyxlQUFlO0FBQzFDLE1BQU0sZUFBZSxLQUFLLEtBQUssc0JBQXNCO0FBQ3JELE1BQU0scUJBQXFCLEtBQUssS0FBSyxpREFBaUQ7QUFDdEYsTUFBTSxtQkFBbUIsS0FBSyxLQUFLLG1DQUFtQztBQUsvRCxNQUFNLFdBQVcsT0FBTyxPQUFPO0FBQUEsRUFDckMsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsYUFB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
@@ -174,4 +174,4 @@ export {
174
174
  UpdatedAt,
175
175
  UpdatedBy
176
176
  };
177
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogKiBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAqIEZlYXR1cmVzOlxuICogLSBVc2VzIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgZm9yIHN0YWJsZSBkZWNvcmF0b3IgdGltaW5nXG4gKiAtIFN0b3JlcyBtZXRhZGF0YSBpbiBhIGdsb2JhbCBXZWFrTWFwIGNhY2hlXG4gKiAtIEZpbmFsaXplcyBlbnRpdHkgbWV0YWRhdGEgb25jZSBwZXIgY2xhc3NcbiAqIC0gRGVmZXJzIGZpbmFsaXphdGlvbiB2aWEgbWljcm90YXNrIChQcm9taXNlLnJlc29sdmUoKS50aGVuKVxuICovXG5cbi8vIC0tLSBEZWNvcmF0b3IgQ29udGV4dCBUeXBlcyAoYmFzZWQgb24gRUNNQVNjcmlwdCBEZWNvcmF0b3JzIHByb3Bvc2FsKSAtLS1cbnR5cGUgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQgPSB7XG4gIGtpbmQ6IFwiZmllbGRcIjtcbiAgbmFtZTogc3RyaW5nIHwgc3ltYm9sO1xuICBzdGF0aWM6IGJvb2xlYW47XG4gIHByaXZhdGU6IGJvb2xlYW47XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbnR5cGUgQ2xhc3NEZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImNsYXNzXCI7XG4gIG5hbWU/OiBzdHJpbmcgfCBzeW1ib2w7XG4gIGFkZEluaXRpYWxpemVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtblR5cGVzID1cbiAgLy8gTnVtZXJpYyB0eXBlc1xuICB8ICdpbnRlZ2VyJyB8ICdsb25nJyB8ICdzaG9ydCcgfCAnYnl0ZScgfCAnZmxvYXQnIHwgJ2RvdWJsZScgfCAnYmlnX2ludGVnZXInIHwgJ2JpZ19kZWNpbWFsJ1xuICAvLyBTdHJpbmcgdHlwZXNcbiAgfCAnc3RyaW5nJyB8ICdjaGFyJyB8ICd0ZXh0JyB8ICduc3RyaW5nJyB8ICdudGV4dCdcbiAgLy8gRGF0ZS9UaW1lIHR5cGVzXG4gIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3RpbWVzdGFtcCcgfCAnY2FsZW5kYXInIHwgJ2NhbGVuZGFyX2RhdGUnIHwgJ2luc3RhbnQnXG4gIC8vIEJvb2xlYW4gdHlwZXNcbiAgfCAnYm9vbGVhbicgfCAndHJ1ZV9mYWxzZScgfCAneWVzX25vJyB8ICdudW1lcmljX2Jvb2xlYW4nIFxuICAvLyBCaW5hcnkgdHlwZXNcbiAgfCAnYmluYXJ5JyB8ICdibG9iJyB8ICdjbG9iJyB8ICdtYXRlcmlhbGl6ZWRfYmxvYicgfCAnbWF0ZXJpYWxpemVkX2Nsb2InXG4gIC8vIE90aGVyIHR5cGVzXG4gIHwgJ3NlcmlhbGl6YWJsZScgfCAnYW55JyB8ICdvYmplY3QnIHwgJ3V1aWQtY2hhcicgfCAndXVpZC1iaW5hcnknIHwgJ2pzb24nIHwgJ2pzb25iJyB8ICd4bWwnO1xuXG4vLyAtLS0gTWV0YWRhdGEgTW9kZWxzIC0tLVxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IENvbHVtblR5cGVzIHwgKHN0cmluZyAmIHt9KTtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVUb01hbnlPcHRpb25zIHtcbiAgdGFibGU/OiBzdHJpbmc7XG4gIGpvaW5Db2x1bW46IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgaW52ZXJzZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbiAgam9pbkNvbHVtbk5vdE51bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbnlUb09uZU9wdGlvbnMge1xuICBqb2luQ29sdW1uPzogc3RyaW5nO1xuICBjYXNjYWRlPzogXCJhbGxcIiB8IFwibm9uZVwiIHwgXCJwZXJzaXN0XCIgfCBcIm1lcmdlXCIgfCBcInJlbW92ZVwiO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIGxhenk/OiBib29sZWFuO1xuICBmZXRjaD86IFwic2VsZWN0XCIgfCBcImpvaW5cIjtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5TWV0YWRhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgaXNJZDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQXQ6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEF0OiBib29sZWFuO1xuICBpc0NyZWF0ZWRCeTogYm9vbGVhbjtcbiAgaXNVcGRhdGVkQnk6IGJvb2xlYW47XG4gIGlzR2VuZXJhdGVkOiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBjb2x1bW5PcHRpb25zPzogQ29sdW1uT3B0aW9ucztcbiAgb25lVG9NYW55T3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnMgfTtcbiAgbWFueVRvT25lT3B0aW9ucz86IHsgdHlwZTogRnVuY3Rpb247IG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb25zdHJ1Y3RvciBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55O1xuICAkZW50aXR5X25hbWU6IHN0cmluZztcbiAgJHRhYmxlX25hbWU6IHN0cmluZztcbiAgJGlkX25hbWU6IHN0cmluZztcbiAgJGlkX2NvbHVtbjogc3RyaW5nO1xuICAkaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAkZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbn1cblxuLy8gLS0tIEdsb2JhbCBNZXRhZGF0YSBDYWNoZSAtLS1cbmNvbnN0IGdsb2JhbENhY2hlOiBXZWFrTWFwPEZ1bmN0aW9uLCBQcm9wZXJ0eU1ldGFkYXRhW10+ID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fIHx8XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpLl9fZGVjb3JhdG9yX21ldGFkYXRhX2NhY2hlX18gPSBuZXcgV2Vha01hcCgpKTtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFBcnJheShjb25zdHJ1Y3RvcjogRnVuY3Rpb24pOiBQcm9wZXJ0eU1ldGFkYXRhW10ge1xuICBpZiAoIWdsb2JhbENhY2hlLmhhcyhjb25zdHJ1Y3RvcikpIHtcbiAgICBnbG9iYWxDYWNoZS5zZXQoY29uc3RydWN0b3IsIFtdKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsQ2FjaGUuZ2V0KGNvbnN0cnVjdG9yKSE7XG59XG5cbi8vIC0tLSBEZWZlciBIZWxwZXIgKEdyYWFsSlMtc2FmZSBtaWNyb3Rhc2spIC0tLVxuZnVuY3Rpb24gZGVmZXIoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgLy8gVXNlcyBQcm9taXNlIG1pY3JvdGFzayBxdWV1ZSBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm4pO1xufVxuXG4vLyAtLS0gQ29yZSBQcm9wZXJ0eSBEZWNvcmF0b3IgRmFjdG9yeSAtLS1cbmZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFxuICBraW5kOiBcImNvbHVtblwiIHwgXCJpZFwiIHwgXCJnZW5lcmF0ZWRcIiB8IFwiY3JlYXRlZEF0XCIgfCBcInVwZGF0ZWRBdFwiIHwgXCJjcmVhdGVkQnlcIiB8IFwidXBkYXRlZEJ5XCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChfOiBhbnksIGNvbnRleHQ6IENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQua2luZCAhPT0gXCJmaWVsZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEAke2tpbmR9IG11c3QgYXBwbHkgdG8gZmllbGRzYCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2luZCA9PT0gXCJpZFwiKSBtZXRhZGF0YS5pc0lkID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJjcmVhdGVkQXRcIikgbWV0YWRhdGEuaXNDcmVhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcInVwZGF0ZWRBdFwiKSBtZXRhZGF0YS5pc1VwZGF0ZWRBdCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEJ5XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEJ5ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQnlcIikgbWV0YWRhdGEuaXNVcGRhdGVkQnkgPSB0cnVlO1xuICAgICAgaWYgKGtpbmQgPT09IFwiZ2VuZXJhdGVkXCIpIG1ldGFkYXRhLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImNvbHVtblwiKSBtZXRhZGF0YS5jb2x1bW5PcHRpb25zID0gb3B0aW9ucztcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBEb2N1bWVudGF0aW9uIERlY29yYXRvciAoRHVhbC1QdXJwb3NlKSAtLS1cbi8qKlxuICogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGEgY2xhc3Mgb3IgYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERvY3VtZW50YXRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHZhbHVlOiBGdW5jdGlvbiB8IGFueSxcbiAgICBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQgfCBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBpZiAoY29udGV4dC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAodmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3IpLiRkb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQua2luZCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBtZXRhZGF0YUFycmF5ID0gZ2V0TWV0YWRhdGFBcnJheShjdG9yKTtcblxuICAgICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdFx0aXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdFx0aXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGFkYXRhLmRvY3VtZW50YXRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuXG4vLyAtLS0gQEVudGl0eSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIE1hcmtzIGEgY2xhc3MgYXMgYW4gZW50aXR5IGFuZCBpbml0aWF0ZXMgbWV0YWRhdGEgZmluYWxpemF0aW9uLlxuICogQHBhcmFtIGVudGl0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHkoZW50aXR5TmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBGdW5jdGlvbiwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0KSB7XG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEZWZlciBleGVjdXRpb24gdG8gZW5zdXJlIGFsbCBmaWVsZCBkZWNvcmF0b3JzIGhhdmUgcnVuXG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSB2YWx1ZSBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGlkZW1wb3RlbmN5KVxuICAgICAgICBpZiAoY3Rvci4kaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICAgICAgY3Rvci4kaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGN0b3IuJGVudGl0eV9uYW1lID0gZW50aXR5TmFtZSB8fCBjdG9yLm5hbWU7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG4gICAgICAgIGNvbnN0IGlkTWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoKG0pID0+IG0uaXNJZCk7XG5cbiAgICAgICAgaWYgKGlkTWV0YWRhdGEpIHtcbiAgICAgICAgICBjdG9yLiRpZF9uYW1lID0gaWRNZXRhZGF0YS5wcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIElEIGNvbHVtbiBuYW1lOiB1c2UgZXhwbGljaXQgbmFtZSBvciBjb252ZXJ0IHByb3BlcnR5IG5hbWUgdG8gdXBwZXIgY2FzZVxuICAgICAgICAgIGN0b3IuJGlkX2NvbHVtbiA9XG4gICAgICAgICAgICBpZE1ldGFkYXRhLmNvbHVtbk9wdGlvbnM/Lm5hbWUgfHxcbiAgICAgICAgICAgIGlkTWV0YWRhdGEucHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGdXR1cmU6IExvZ2ljIHRvIG1hcCBhbGwgcHJvcGVydGllcyB0byBjb2x1bW5zL3JlbGF0aW9ucyBnb2VzIGhlcmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vLyAtLS0gQFRhYmxlIERlY29yYXRvciAtLS1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZGVmYXVsdHMgdG8gdXBwZXJjYXNlIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGUodGFibGVOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gICAgdmFsdWU6IFQsXG4gICAgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0XG4gICkge1xuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdmFsdWUgYXMgYW55O1xuICAgICAgdGFyZ2V0LiR0YWJsZV9uYW1lID0gdGFibGVOYW1lIHx8IGNvbnRleHQubmFtZT8udG9TdHJpbmcoKSB8fCB2YWx1ZS5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbi8vIC0tLSBFeHBvcnRlZCBQcm9wZXJ0eSBEZWNvcmF0b3JzIC0tLVxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIGEgc3RhbmRhcmQgZGF0YWJhc2UgY29sdW1uLlxuICovXG5leHBvcnQgY29uc3QgQ29sdW1uID0gKG9wdGlvbnM/OiBDb2x1bW5PcHRpb25zKSA9PlxuICBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImNvbHVtblwiLCBvcHRpb25zKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBwcmltYXJ5IGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IElkID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJpZFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBjcmVhdGVkIGF0IHRpbWVzdGFtcC5cbiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZWRBdCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY3JlYXRlZEF0XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHVwZGF0ZSBhdCB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCBjb25zdCBVcGRhdGVkQXQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcInVwZGF0ZWRBdFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyBjcmVhdGlvbiBhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IENyZWF0ZWRCeSA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiY3JlYXRlZEJ5XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIGVudGl0eSdzIHVwZGF0ZSBhY3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IFVwZGF0ZWRCeSA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwidXBkYXRlZEJ5XCIpO1xuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYSBnZW5lcmF0ZWQgdmFsdWUgKGUuZy4sIGF1dG8taW5jcmVtZW50KS5cbiAqIEBwYXJhbSBzdHJhdGVneSBUaGUgZ2VuZXJhdGlvbiBzdHJhdGVneSAoZS5nLiwgXCJJREVOVElUWVwiKS4gUGFyYW1ldGVyIGlzIGN1cnJlbnRseSB1bnVzZWQgaW4gbG9naWMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWQgPSAoc3RyYXRlZ3k6IHN0cmluZykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJnZW5lcmF0ZWRcIik7XG5cbi8qKlxuICogRGVmaW5lcyBhIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uZVRvTWFueShcbiAgdHlwZUZ1bmN0aW9uOiAoKSA9PiBGdW5jdGlvbixcbiAgb3B0aW9uczogT25lVG9NYW55T3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikgcmV0dXJuO1xuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBtZXRhZGF0YS5vbmVUb01hbnlPcHRpb25zID0geyB0eXBlOiB0eXBlRnVuY3Rpb24oKSwgb3B0aW9ucyB9O1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBtYW55LXRvLW9uZSByZWxhdGlvbnNoaXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYW55VG9PbmUoXG4gIHR5cGVGdW5jdGlvbjogKCkgPT4gRnVuY3Rpb24sXG4gIG9wdGlvbnM6IE1hbnlUb09uZU9wdGlvbnMgPSB7fVxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikgcmV0dXJuO1xuXG4gICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjdG9yID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvciBhcyBFbnRpdHlDb25zdHJ1Y3RvcjtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGNvbnRleHQubmFtZS50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhQXJyYXkuZmluZChcbiAgICAgICAgKG0pID0+IG0ucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgaXNJZDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRBdDogZmFsc2UsXG5cdFx0ICBpc0NyZWF0ZWRCeTogZmFsc2UsXG5cdFx0ICBpc1VwZGF0ZWRCeTogZmFsc2UsXG4gICAgICAgICAgaXNHZW5lcmF0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBtZXRhZGF0YUFycmF5LnB1c2gobWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBtZXRhZGF0YS5tYW55VG9PbmVPcHRpb25zID0geyB0eXBlOiB0eXBlRnVuY3Rpb24oKSwgb3B0aW9ucyB9O1xuICAgIH0pO1xuICB9O1xufSJdLAogICJtYXBwaW5ncyI6ICJBQTZGQSxNQUFNLGNBQ0gsV0FBbUIsaUNBQ2xCLFdBQW1CLCtCQUErQixvQkFBSSxRQUFRO0FBRWxFLFNBQVMsaUJBQWlCLGFBQTJDO0FBQ25FLE1BQUksQ0FBQyxZQUFZLElBQUksV0FBVyxHQUFHO0FBQ2pDLGdCQUFZLElBQUksYUFBYSxDQUFDLENBQUM7QUFBQSxFQUNqQztBQUNBLFNBQU8sWUFBWSxJQUFJLFdBQVc7QUFDcEM7QUFHQSxTQUFTLE1BQU0sSUFBc0I7QUFFbkMsVUFBUSxRQUFRLEVBQUUsS0FBSyxFQUFFO0FBQzNCO0FBR0EsU0FBUyx3QkFDUCxNQUNBLFNBQ0E7QUFDQSxTQUFPLFNBQVUsR0FBUSxTQUFxQztBQUM1RCxRQUFJLFFBQVEsU0FBUyxTQUFTO0FBQzVCLFlBQU0sSUFBSSxNQUFNLElBQUksSUFBSSx1QkFBdUI7QUFBQSxJQUNqRDtBQUVBLFlBQVEsZUFBZSxXQUFZO0FBQ2pDLFlBQU0sT0FBUSxLQUFhO0FBQzNCLFlBQU0sZUFBZSxRQUFRLEtBQUssU0FBUztBQUMzQyxZQUFNLGdCQUFnQixpQkFBaUIsSUFBSTtBQUUzQyxVQUFJLFdBQVcsY0FBYztBQUFBLFFBQzNCLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtBQUFBLE1BQzVCO0FBRUEsVUFBSSxDQUFDLFVBQVU7QUFDYixtQkFBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBLE1BQU07QUFBQSxVQUNaLGFBQWE7QUFBQSxVQUNiLGFBQWE7QUFBQSxVQUNiLGFBQWE7QUFBQSxVQUNiLGFBQWE7QUFBQSxVQUNQLGFBQWE7QUFBQSxRQUNmO0FBQ0Esc0JB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
177
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2RlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBkYi9kZWNvcmF0b3JzXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvZGJcbiAqIEBuYW1lIERlY29yYXRvcnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiBkZWNvcmF0b3JzIGZvciBkZWZpbmluZyBkYXRhYmFzZSBlbnRpdGllcyBhbmQgdGhlaXIgcHJvcGVydGllcyBpbiBhIERpcmlnaWJsZSBhcHBsaWNhdGlvbi4gVGhlIGRlY29yYXRvcnMgYXJlIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIGxlZ2FjeSBKYXZhU2NyaXB0IGVudmlyb25tZW50cyAobGlrZSBNb3ppbGxhIFJoaW5vIG9yIG9sZGVyIEdyYWFsSlMpIGFuZCBtb2Rlcm4gSmF2YVNjcmlwdCBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IHRoZSBsYXRlc3QgZGVjb3JhdG9yIHNwZWNpZmljYXRpb25zLlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzXG4gKiAtICoqRW50aXR5IERlY29yYXRvcioqOiBNYXJrcyBhIGNsYXNzIGFzIGEgZGF0YWJhc2UgZW50aXR5LCBhbGxvd2luZyBpdCB0byBiZSByZWdpc3RlcmVkIGFuZCBtYW5hZ2VkIGJ5IHRoZSBPUk0gbGF5ZXIuXG4gKiAtICoqVGFibGUgRGVjb3JhdG9yKio6IFNwZWNpZmllcyB0aGUgZGF0YWJhc2UgdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eSwgd2l0aCBhIGRlZmF1bHQgbmFtaW5nIGNvbnZlbnRpb24gYmFzZWQgb24gdGhlIGNsYXNzIG5hbWUuXG4gKiAtICoqQ29sdW1uIERlY29yYXRvcioqOiBNYXJrcyBhIGNsYXNzIHByb3BlcnR5IGFzIGEgZGF0YWJhc2UgY29sdW1uLCB3aXRoIG9wdGlvbnMgZm9yIGNvbHVtbiB0eXBlLCBsZW5ndGgsIG51bGxhYmlsaXR5LCBhbmQgZGVmYXVsdCB2YWx1ZXMuXG4gKiAtICoqSUQgRGVjb3JhdG9yKio6IE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIHByaW1hcnkga2V5IG9mIHRoZSBlbnRpdHkuXG4gKiAtICoqR2VuZXJhdGVkIERlY29yYXRvcioqOiBJbmRpY2F0ZXMgdGhhdCBhIHByb3BlcnR5IGlzIGdlbmVyYXRlZCBieSB0aGUgZGF0YWJhc2UgKGUuZy4sIGF1dG8taW5jcmVtZW50KS5cbiAqIC0gKipSZWxhdGlvbnNoaXAgRGVjb3JhdG9ycyoqOiBEZWZpbmVzIG9uZS10by1tYW55IGFuZCBtYW55LXRvLW9uZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gZW50aXRpZXMuXG4gKiAtICoqRG9jdW1lbnRhdGlvbiBEZWNvcmF0b3IqKjogQWRkcyBkb2N1bWVudGF0aW9uIG1ldGFkYXRhIHRvIGNsYXNzZXMgYW5kIHByb3BlcnRpZXMgZm9yIGJldHRlciBtYWludGFpbmFiaWxpdHkgYW5kIGNsYXJpdHkuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gRGVmaW5pbmcgZGF0YWJhc2UgZW50aXRpZXMgaW4gYSBzdHJ1Y3R1cmVkIGFuZCBjb25zaXN0ZW50IG1hbm5lciBhY3Jvc3MgZGlmZmVyZW50IHRhYmxlcyBhbmQgcmVsYXRpb25zaGlwcy5cbiAqIC0gQWJzdHJhY3RpbmcgZGF0YWJhc2UgaW50ZXJhY3Rpb25zIHRvIGFsbG93IGZvciBlYXNpZXIgbWFpbnRlbmFuY2UgYW5kIHBvdGVudGlhbCBkYXRhYmFzZSBlbmdpbmUgY2hhbmdlcyBpbiB0aGUgZnV0dXJlLlxuICogLSBIYW5kbGluZyBjb21wbGV4IGVudGl0eSByZWxhdGlvbnNoaXBzIGFuZCBlbnN1cmluZyBkYXRhIGludGVncml0eSB0aHJvdWdoIHZhbGlkYXRpb24gYW5kIGFzc29jaWF0aW9uIG1hbmFnZW1lbnQuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgRW50aXR5LCBUYWJsZSwgQ29sdW1uLCBJZCwgR2VuZXJhdGVkLCBPbmVUb01hbnksIE1hbnlUb09uZSwgRG9jdW1lbnRhdGlvbiB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGIvZGVjb3JhdG9yc1wiO1xuICogXG4gKiBARW50aXR5KCdVc2VyJylcbiAqIEBUYWJsZSgnVVNFUlMnKVxuICogQERvY3VtZW50YXRpb24oJ1JlcHJlc2VudHMgYSB1c2VyIGluIHRoZSBzeXN0ZW0nKVxuICogY2xhc3MgVXNlciB7XG4gKiAgIEBJZCgpXG4gKiAgIEBHZW5lcmF0ZWQoJ0lERU5USVRZJylcbiAqICAgQENvbHVtbih7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICogICBpZCE6IG51bWJlcjtcbiAqIFxuICogICBAQ29sdW1uKHsgdHlwZTogJ3N0cmluZycsIGxlbmd0aDogMTAwLCBudWxsYWJsZTogZmFsc2UgfSlcbiAqICAgbmFtZSE6IHN0cmluZztcbiAqIFxuICogICBAQ29sdW1uKHsgdHlwZTogJ3N0cmluZycsIGxlbmd0aDogMjU1LCBudWxsYWJsZTogZmFsc2UgfSlcbiAqICAgZW1haWwhOiBzdHJpbmc7XG4gKiBcbiAqICAgQE9uZVRvTWFueSgoKSA9PiBQb3N0LCB7IGpvaW5Db2x1bW46ICd1c2VyX2lkJywgY2FzY2FkZTogJ2FsbCcgfSlcbiAqICAgcG9zdHMhOiBQb3N0W107XG4gKiB9XG4gKiBcbiAqIEBFbnRpdHkoJ1Bvc3QnKVxuICogQFRhYmxlKCdQT1NUUycpXG4gKiBjbGFzcyBQb3N0IHtcbiAqICAgQElkKClcbiAqICAgQEdlbmVyYXRlZCgnSURFTlRJVFknKVxuICogICBAQ29sdW1uKHsgdHlwZTogJ2ludGVnZXInIH0pXG4gKiAgIGlkITogbnVtYmVyO1xuICogfVxuICogXG4gKiA6OjogaW5mbyBFQ01BU2NyaXB0IDIwMjUtY29tcGxpYW50IE9STSBkZWNvcmF0b3IgaW1wbGVtZW50YXRpb25cbiAqIENvbXBhdGlibGUgd2l0aCBHcmFhbEpTIHJ1bnRpbWUuXG4gKiAtIFVzZXMgY29udGV4dC5hZGRJbml0aWFsaXplciBmb3Igc3RhYmxlIGRlY29yYXRvciB0aW1pbmdcbiAqIC0gU3RvcmVzIG1ldGFkYXRhIGluIGEgZ2xvYmFsIFdlYWtNYXAgY2FjaGVcbiAqIC0gRmluYWxpemVzIGVudGl0eSBtZXRhZGF0YSBvbmNlIHBlciBjbGFzc1xuICogLSBEZWZlcnMgZmluYWxpemF0aW9uIHZpYSBtaWNyb3Rhc2sgKFByb21pc2UucmVzb2x2ZSgpLnRoZW4pXG4gKiA6OjpcbiAqL1xuXG4vLyAtLS0gRGVjb3JhdG9yIENvbnRleHQgVHlwZXMgKGJhc2VkIG9uIEVDTUFTY3JpcHQgRGVjb3JhdG9ycyBwcm9wb3NhbCkgLS0tXG50eXBlIENsYXNzRmllbGREZWNvcmF0b3JDb250ZXh0ID0ge1xuICBraW5kOiBcImZpZWxkXCI7XG4gIG5hbWU6IHN0cmluZyB8IHN5bWJvbDtcbiAgc3RhdGljOiBib29sZWFuO1xuICBwcml2YXRlOiBib29sZWFuO1xuICBhZGRJbml0aWFsaXplcihmbjogKCkgPT4gdm9pZCk6IHZvaWQ7XG59O1xuXG50eXBlIENsYXNzRGVjb3JhdG9yQ29udGV4dCA9IHtcbiAga2luZDogXCJjbGFzc1wiO1xuICBuYW1lPzogc3RyaW5nIHwgc3ltYm9sO1xuICBhZGRJbml0aWFsaXplcihmbjogKCkgPT4gdm9pZCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBDb2x1bW5UeXBlcyA9XG4gIC8vIE51bWVyaWMgdHlwZXNcbiAgfCAnaW50ZWdlcicgfCAnbG9uZycgfCAnc2hvcnQnIHwgJ2J5dGUnIHwgJ2Zsb2F0JyB8ICdkb3VibGUnIHwgJ2JpZ19pbnRlZ2VyJyB8ICdiaWdfZGVjaW1hbCdcbiAgLy8gU3RyaW5nIHR5cGVzXG4gIHwgJ3N0cmluZycgfCAnY2hhcicgfCAndGV4dCcgfCAnbnN0cmluZycgfCAnbnRleHQnXG4gIC8vIERhdGUvVGltZSB0eXBlc1xuICB8ICdkYXRlJyB8ICd0aW1lJyB8ICd0aW1lc3RhbXAnIHwgJ2NhbGVuZGFyJyB8ICdjYWxlbmRhcl9kYXRlJyB8ICdpbnN0YW50J1xuICAvLyBCb29sZWFuIHR5cGVzXG4gIHwgJ2Jvb2xlYW4nIHwgJ3RydWVfZmFsc2UnIHwgJ3llc19ubycgfCAnbnVtZXJpY19ib29sZWFuJyBcbiAgLy8gQmluYXJ5IHR5cGVzXG4gIHwgJ2JpbmFyeScgfCAnYmxvYicgfCAnY2xvYicgfCAnbWF0ZXJpYWxpemVkX2Jsb2InIHwgJ21hdGVyaWFsaXplZF9jbG9iJ1xuICAvLyBPdGhlciB0eXBlc1xuICB8ICdzZXJpYWxpemFibGUnIHwgJ2FueScgfCAnb2JqZWN0JyB8ICd1dWlkLWNoYXInIHwgJ3V1aWQtYmluYXJ5JyB8ICdqc29uJyB8ICdqc29uYicgfCAneG1sJztcblxuLy8gLS0tIE1ldGFkYXRhIE1vZGVscyAtLS1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU/OiBDb2x1bW5UeXBlcyB8IChzdHJpbmcgJiB7fSk7XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgbnVsbGFibGU/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25lVG9NYW55T3B0aW9ucyB7XG4gIHRhYmxlPzogc3RyaW5nO1xuICBqb2luQ29sdW1uOiBzdHJpbmc7XG4gIGNhc2NhZGU/OiBcImFsbFwiIHwgXCJub25lXCIgfCBcInBlcnNpc3RcIiB8IFwibWVyZ2VcIiB8IFwicmVtb3ZlXCI7XG4gIGludmVyc2U/OiBib29sZWFuO1xuICBsYXp5PzogYm9vbGVhbjtcbiAgZmV0Y2g/OiBcInNlbGVjdFwiIHwgXCJqb2luXCI7XG4gIGpvaW5Db2x1bW5Ob3ROdWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYW55VG9PbmVPcHRpb25zIHtcbiAgam9pbkNvbHVtbj86IHN0cmluZztcbiAgY2FzY2FkZT86IFwiYWxsXCIgfCBcIm5vbmVcIiB8IFwicGVyc2lzdFwiIHwgXCJtZXJnZVwiIHwgXCJyZW1vdmVcIjtcbiAgbnVsbGFibGU/OiBib29sZWFuO1xuICBsYXp5PzogYm9vbGVhbjtcbiAgZmV0Y2g/OiBcInNlbGVjdFwiIHwgXCJqb2luXCI7XG59XG5cbmludGVyZmFjZSBQcm9wZXJ0eU1ldGFkYXRhIHtcbiAgcHJvcGVydHlOYW1lOiBzdHJpbmc7XG4gIGlzSWQ6IGJvb2xlYW47XG4gIGlzQ3JlYXRlZEF0OiBib29sZWFuO1xuICBpc1VwZGF0ZWRBdDogYm9vbGVhbjtcbiAgaXNDcmVhdGVkQnk6IGJvb2xlYW47XG4gIGlzVXBkYXRlZEJ5OiBib29sZWFuO1xuICBpc0dlbmVyYXRlZDogYm9vbGVhbjtcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbiAgY29sdW1uT3B0aW9ucz86IENvbHVtbk9wdGlvbnM7XG4gIG9uZVRvTWFueU9wdGlvbnM/OiB7IHR5cGU6IEZ1bmN0aW9uOyBvcHRpb25zOiBPbmVUb01hbnlPcHRpb25zIH07XG4gIG1hbnlUb09uZU9wdGlvbnM/OiB7IHR5cGU6IEZ1bmN0aW9uOyBvcHRpb25zOiBNYW55VG9PbmVPcHRpb25zIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5Q29uc3RydWN0b3IgZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIG5ldyguLi5hcmdzOiBhbnlbXSk6IGFueTtcbiAgJGVudGl0eV9uYW1lOiBzdHJpbmc7XG4gICR0YWJsZV9uYW1lOiBzdHJpbmc7XG4gICRpZF9uYW1lOiBzdHJpbmc7XG4gICRpZF9jb2x1bW46IHN0cmluZztcbiAgJGluaXRpYWxpemVkPzogYm9vbGVhbjtcbiAgJGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG59XG5cbi8vIC0tLSBHbG9iYWwgTWV0YWRhdGEgQ2FjaGUgLS0tXG5jb25zdCBnbG9iYWxDYWNoZTogV2Vha01hcDxGdW5jdGlvbiwgUHJvcGVydHlNZXRhZGF0YVtdPiA9XG4gIChnbG9iYWxUaGlzIGFzIGFueSkuX19kZWNvcmF0b3JfbWV0YWRhdGFfY2FjaGVfXyB8fFxuICAoKGdsb2JhbFRoaXMgYXMgYW55KS5fX2RlY29yYXRvcl9tZXRhZGF0YV9jYWNoZV9fID0gbmV3IFdlYWtNYXAoKSk7XG5cbmZ1bmN0aW9uIGdldE1ldGFkYXRhQXJyYXkoY29uc3RydWN0b3I6IEZ1bmN0aW9uKTogUHJvcGVydHlNZXRhZGF0YVtdIHtcbiAgaWYgKCFnbG9iYWxDYWNoZS5oYXMoY29uc3RydWN0b3IpKSB7XG4gICAgZ2xvYmFsQ2FjaGUuc2V0KGNvbnN0cnVjdG9yLCBbXSk7XG4gIH1cbiAgcmV0dXJuIGdsb2JhbENhY2hlLmdldChjb25zdHJ1Y3RvcikhO1xufVxuXG4vLyAtLS0gRGVmZXIgSGVscGVyIChHcmFhbEpTLXNhZmUgbWljcm90YXNrKSAtLS1cbmZ1bmN0aW9uIGRlZmVyKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIC8vIFVzZXMgUHJvbWlzZSBtaWNyb3Rhc2sgcXVldWUgZm9yIGRlZmVycmVkIGV4ZWN1dGlvblxuICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZuKTtcbn1cblxuLy8gLS0tIENvcmUgUHJvcGVydHkgRGVjb3JhdG9yIEZhY3RvcnkgLS0tXG5mdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcbiAga2luZDogXCJjb2x1bW5cIiB8IFwiaWRcIiB8IFwiZ2VuZXJhdGVkXCIgfCBcImNyZWF0ZWRBdFwiIHwgXCJ1cGRhdGVkQXRcIiB8IFwiY3JlYXRlZEJ5XCIgfCBcInVwZGF0ZWRCeVwiLFxuICBvcHRpb25zPzogQ29sdW1uT3B0aW9uc1xuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXzogYW55LCBjb250ZXh0OiBDbGFzc0ZpZWxkRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmtpbmQgIT09IFwiZmllbGRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBAJHtraW5kfSBtdXN0IGFwcGx5IHRvIGZpZWxkc2ApO1xuICAgIH1cblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdCAgaXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdCAgaXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdCAgaXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdCAgaXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgPT09IFwiaWRcIikgbWV0YWRhdGEuaXNJZCA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwiY3JlYXRlZEF0XCIpIG1ldGFkYXRhLmlzQ3JlYXRlZEF0ID0gdHJ1ZTtcblx0ICBpZiAoa2luZCA9PT0gXCJ1cGRhdGVkQXRcIikgbWV0YWRhdGEuaXNVcGRhdGVkQXQgPSB0cnVlO1xuXHQgIGlmIChraW5kID09PSBcImNyZWF0ZWRCeVwiKSBtZXRhZGF0YS5pc0NyZWF0ZWRCeSA9IHRydWU7XG5cdCAgaWYgKGtpbmQgPT09IFwidXBkYXRlZEJ5XCIpIG1ldGFkYXRhLmlzVXBkYXRlZEJ5ID0gdHJ1ZTtcbiAgICAgIGlmIChraW5kID09PSBcImdlbmVyYXRlZFwiKSBtZXRhZGF0YS5pc0dlbmVyYXRlZCA9IHRydWU7XG4gICAgICBpZiAoa2luZCA9PT0gXCJjb2x1bW5cIikgbWV0YWRhdGEuY29sdW1uT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIC0tLSBARG9jdW1lbnRhdGlvbiBEZWNvcmF0b3IgKER1YWwtUHVycG9zZSkgLS0tXG4vKipcbiAqIEFkZHMgZG9jdW1lbnRhdGlvbiBtZXRhZGF0YSB0byBhIGNsYXNzIG9yIGEgZmllbGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEb2N1bWVudGF0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICB2YWx1ZTogRnVuY3Rpb24gfCBhbnksXG4gICAgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0IHwgQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHRcbiAgKSB7XG4gICAgaWYgKGNvbnRleHQua2luZCA9PT0gXCJjbGFzc1wiKSB7XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKHZhbHVlIGFzIEVudGl0eUNvbnN0cnVjdG9yKS4kZG9jdW1lbnRhdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0LmtpbmQgPT09IFwiZmllbGRcIikge1xuICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yIGFzIEVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcnJheSA9IGdldE1ldGFkYXRhQXJyYXkoY3Rvcik7XG5cbiAgICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKFxuICAgICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICBpc0lkOiBmYWxzZSxcblx0XHRcdGlzQ3JlYXRlZEF0OiBmYWxzZSxcblx0XHRcdGlzVXBkYXRlZEF0OiBmYWxzZSxcblx0XHRcdGlzQ3JlYXRlZEJ5OiBmYWxzZSxcblx0XHRcdGlzVXBkYXRlZEJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIG1ldGFkYXRhQXJyYXkucHVzaChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXRhZGF0YS5kb2N1bWVudGF0aW9uID0gZGVzY3JpcHRpb247XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cblxuLy8gLS0tIEBFbnRpdHkgRGVjb3JhdG9yIC0tLVxuLyoqXG4gKiBNYXJrcyBhIGNsYXNzIGFzIGFuIGVudGl0eSBhbmQgaW5pdGlhdGVzIG1ldGFkYXRhIGZpbmFsaXphdGlvbi5cbiAqIEBwYXJhbSBlbnRpdHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgKGRlZmF1bHRzIHRvIGNsYXNzIG5hbWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5KGVudGl0eU5hbWU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZTogRnVuY3Rpb24sIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dCkge1xuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgLy8gRGVmZXIgZXhlY3V0aW9uIHRvIGVuc3VyZSBhbGwgZmllbGQgZGVjb3JhdG9ycyBoYXZlIHJ1blxuICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBjdG9yID0gdmFsdWUgYXMgRW50aXR5Q29uc3RydWN0b3I7XG5cbiAgICAgICAgLy8gUHJldmVudCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIChpZGVtcG90ZW5jeSlcbiAgICAgICAgaWYgKGN0b3IuJGluaXRpYWxpemVkKSByZXR1cm47XG4gICAgICAgIGN0b3IuJGluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBjdG9yLiRlbnRpdHlfbmFtZSA9IGVudGl0eU5hbWUgfHwgY3Rvci5uYW1lO1xuXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuICAgICAgICBjb25zdCBpZE1ldGFkYXRhID0gbWV0YWRhdGFBcnJheS5maW5kKChtKSA9PiBtLmlzSWQpO1xuXG4gICAgICAgIGlmIChpZE1ldGFkYXRhKSB7XG4gICAgICAgICAgY3Rvci4kaWRfbmFtZSA9IGlkTWV0YWRhdGEucHJvcGVydHlOYW1lO1xuICAgICAgICAgIC8vIERldGVybWluZSBJRCBjb2x1bW4gbmFtZTogdXNlIGV4cGxpY2l0IG5hbWUgb3IgY29udmVydCBwcm9wZXJ0eSBuYW1lIHRvIHVwcGVyIGNhc2VcbiAgICAgICAgICBjdG9yLiRpZF9jb2x1bW4gPVxuICAgICAgICAgICAgaWRNZXRhZGF0YS5jb2x1bW5PcHRpb25zPy5uYW1lIHx8XG4gICAgICAgICAgICBpZE1ldGFkYXRhLnByb3BlcnR5TmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRnV0dXJlOiBMb2dpYyB0byBtYXAgYWxsIHByb3BlcnRpZXMgdG8gY29sdW1ucy9yZWxhdGlvbnMgZ29lcyBoZXJlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8gLS0tIEBUYWJsZSBEZWNvcmF0b3IgLS0tXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGF0YWJhc2UgdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIHRhYmxlIG5hbWUgKGRlZmF1bHRzIHRvIHVwcGVyY2FzZSBjbGFzcyBuYW1lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlKHRhYmxlTmFtZT86IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBhYnN0cmFjdCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KFxuICAgIHZhbHVlOiBULFxuICAgIGNvbnRleHQ6IENsYXNzRGVjb3JhdG9yQ29udGV4dFxuICApIHtcbiAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHZhbHVlIGFzIGFueTtcbiAgICAgIHRhcmdldC4kdGFibGVfbmFtZSA9IHRhYmxlTmFtZSB8fCBjb250ZXh0Lm5hbWU/LnRvU3RyaW5nKCkgfHwgdmFsdWUubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vLyAtLS0gRXhwb3J0ZWQgUHJvcGVydHkgRGVjb3JhdG9ycyAtLS1cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBhIHN0YW5kYXJkIGRhdGFiYXNlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbiA9IChvcHRpb25zPzogQ29sdW1uT3B0aW9ucykgPT5cbiAgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJjb2x1bW5cIiwgb3B0aW9ucyk7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgcHJpbWFyeSBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBJZCA9ICgpID0+IGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiaWRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgY3JlYXRlZCBhdCB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCBjb25zdCBDcmVhdGVkQXQgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImNyZWF0ZWRBdFwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyB1cGRhdGUgYXQgdGltZXN0YW1wLlxuICovXG5leHBvcnQgY29uc3QgVXBkYXRlZEF0ID0gKCkgPT4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXCJ1cGRhdGVkQXRcIik7XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyB0aGUgZW50aXR5J3MgY3JlYXRpb24gYWN0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBDcmVhdGVkQnkgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcImNyZWF0ZWRCeVwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIHRoZSBlbnRpdHkncyB1cGRhdGUgYWN0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBVcGRhdGVkQnkgPSAoKSA9PiBjcmVhdGVQcm9wZXJ0eURlY29yYXRvcihcInVwZGF0ZWRCeVwiKTtcblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIGEgZ2VuZXJhdGVkIHZhbHVlIChlLmcuLCBhdXRvLWluY3JlbWVudCkuXG4gKiBAcGFyYW0gc3RyYXRlZ3kgVGhlIGdlbmVyYXRpb24gc3RyYXRlZ3kgKGUuZy4sIFwiSURFTlRJVFlcIikuIFBhcmFtZXRlciBpcyBjdXJyZW50bHkgdW51c2VkIGluIGxvZ2ljLlxuICovXG5leHBvcnQgY29uc3QgR2VuZXJhdGVkID0gKHN0cmF0ZWd5OiBzdHJpbmcpID0+XG4gIGNyZWF0ZVByb3BlcnR5RGVjb3JhdG9yKFwiZ2VuZXJhdGVkXCIpO1xuXG4vKipcbiAqIERlZmluZXMgYSBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPbmVUb01hbnkoXG4gIHR5cGVGdW5jdGlvbjogKCkgPT4gRnVuY3Rpb24sXG4gIG9wdGlvbnM6IE9uZVRvTWFueU9wdGlvbnNcbikge1xuICByZXR1cm4gZnVuY3Rpb24gKF86IGFueSwgY29udGV4dDogQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQpIHtcbiAgICBpZiAoY29udGV4dC5raW5kICE9PSBcImZpZWxkXCIpIHJldHVybjtcblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdCAgaXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdCAgaXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdCAgaXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdCAgaXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgbWV0YWRhdGEub25lVG9NYW55T3B0aW9ucyA9IHsgdHlwZTogdHlwZUZ1bmN0aW9uKCksIG9wdGlvbnMgfTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgbWFueS10by1vbmUgcmVsYXRpb25zaGlwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFueVRvT25lKFxuICB0eXBlRnVuY3Rpb246ICgpID0+IEZ1bmN0aW9uLFxuICBvcHRpb25zOiBNYW55VG9PbmVPcHRpb25zID0ge31cbikge1xuICByZXR1cm4gZnVuY3Rpb24gKF86IGFueSwgY29udGV4dDogQ2xhc3NGaWVsZERlY29yYXRvckNvbnRleHQpIHtcbiAgICBpZiAoY29udGV4dC5raW5kICE9PSBcImZpZWxkXCIpIHJldHVybjtcblxuICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3RvciA9ICh0aGlzIGFzIGFueSkuY29uc3RydWN0b3IgYXMgRW50aXR5Q29uc3RydWN0b3I7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBjb250ZXh0Lm5hbWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQXJyYXkgPSBnZXRNZXRhZGF0YUFycmF5KGN0b3IpO1xuXG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YUFycmF5LmZpbmQoXG4gICAgICAgIChtKSA9PiBtLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIG1ldGFkYXRhID0ge1xuICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGlzSWQ6IGZhbHNlLFxuXHRcdCAgaXNDcmVhdGVkQXQ6IGZhbHNlLFxuXHRcdCAgaXNVcGRhdGVkQXQ6IGZhbHNlLFxuXHRcdCAgaXNDcmVhdGVkQnk6IGZhbHNlLFxuXHRcdCAgaXNVcGRhdGVkQnk6IGZhbHNlLFxuICAgICAgICAgIGlzR2VuZXJhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgbWV0YWRhdGFBcnJheS5wdXNoKG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgbWV0YWRhdGEubWFueVRvT25lT3B0aW9ucyA9IHsgdHlwZTogdHlwZUZ1bmN0aW9uKCksIG9wdGlvbnMgfTtcbiAgICB9KTtcbiAgfTtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFrSkEs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
@@ -39,4 +39,4 @@ export {
39
39
  Translator as translator,
40
40
  Update as update
41
41
  };
42
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgKiBhcyBkYW8gZnJvbSBcIi4vZGFvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZVwiO1xuZXhwb3J0IHsgRGF0YWJhc2UgYXMgZGF0YWJhc2UgfSBmcm9tIFwiLi9kYXRhYmFzZVwiO1xuZXhwb3J0ICogYXMgb3JtIGZyb20gXCIuL29ybVwiO1xuZXhwb3J0ICogYXMgb3Jtc3RhdGVtZW50cyBmcm9tIFwiLi9vcm1zdGF0ZW1lbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcWxcIjtcbmV4cG9ydCB7IFNRTEJ1aWxkZXIgYXMgc3FsIH0gZnJvbSBcIi4vc3FsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9jZWR1cmVcIjtcbmV4cG9ydCB7IFByb2NlZHVyZSBhcyBwcm9jZWR1cmUgfSBmcm9tIFwiLi9wcm9jZWR1cmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlcXVlbmNlXCI7XG5leHBvcnQgeyBTZXF1ZW5jZSBhcyBzZXF1ZW5jZSB9IGZyb20gXCIuL3NlcXVlbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiO1xuZXhwb3J0IHsgUXVlcnkgYXMgcXVlcnkgfSBmcm9tIFwiLi9xdWVyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXBkYXRlXCI7XG5leHBvcnQgeyBVcGRhdGUgYXMgdXBkYXRlIH0gZnJvbSBcIi4vdXBkYXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnNlcnRcIjtcbmV4cG9ydCB7IEluc2VydCBhcyBpbnNlcnQgfSBmcm9tIFwiLi9pbnNlcnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JlXCI7XG5leHBvcnQgeyBTdG9yZSBhcyBzdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXBvc2l0b3J5XCI7XG5leHBvcnQgeyBSZXBvc2l0b3J5IGFzIHJlcG9zaXRvcnkgfSBmcm9tIFwiLi9yZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBhcyBkZWNvcmF0b3JzIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyYW5zbGF0b3JcIjtcbmV4cG9ydCB7IFRyYW5zbGF0b3IgYXMgdHJhbnNsYXRvciB9IGZyb20gXCIuL3RyYW5zbGF0b3JcIjsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxZQUFZLFNBQVM7QUFDckIsY0FBYztBQUNkLFNBQXFCLGdCQUFnQjtBQUNyQyxZQUFZLFNBQVM7QUFDckIsWUFBWSxtQkFBbUI7QUFDL0IsY0FBYztBQUNkLFNBQXVCLGtCQUFXO0FBQ2xDLGNBQWM7QUFDZCxTQUFzQixpQkFBaUI7QUFDdkMsY0FBYztBQUNkLFNBQXFCLGdCQUFnQjtBQUNyQyxjQUFjO0FBQ2QsU0FBa0IsYUFBYTtBQUMvQixjQUFjO0FBQ2QsU0FBbUIsY0FBYztBQUNqQyxjQUFjO0FBQ2QsU0FBbUIsY0FBYztBQUNqQyxjQUFjO0FBQ2QsU0FBa0IsYUFBYTtBQUMvQixjQUFjO0FBQ2QsU0FBdUIsa0JBQWtCO0FBQ3pDLGNBQWM7QUFDZCxZQUFZLGdCQUFnQjtBQUM1QixjQUFjO0FBQ2QsU0FBdUIsa0JBQWtCOyIsCiAgIm5hbWVzIjogW10KfQo=
42
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZGIvaW5kZXhcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9kYlxuICogQG92ZXJ2aWV3XG4gKiBcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgZGF0YWJhc2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEFlcm9raXQgU0RLLiBJdCBpbmNsdWRlcyBjbGFzc2VzIGFuZCBtZXRob2RzIGZvciBpbnRlcmFjdGluZyB3aXRoIGRhdGFiYXNlcywgZXhlY3V0aW5nIFNRTCBxdWVyaWVzLCBtYW5hZ2luZyB0cmFuc2FjdGlvbnMsIGFuZCB3b3JraW5nIHdpdGggZGF0YSByZXBvc2l0b3JpZXMuXG4gKiBcbiAqIFRoZSBtYWluIGNvbXBvbmVudHMgb2YgdGhpcyBtb2R1bGUgYXJlOlxuICogLSBEYXRhYmFzZTogUmVwcmVzZW50cyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgc3VjaCBhcyBleGVjdXRpbmcgcXVlcmllcyBhbmQgbWFuYWdpbmcgdHJhbnNhY3Rpb25zLlxuICogLSBTUUxCdWlsZGVyOiBQcm92aWRlcyBhIGZsdWVudCBBUEkgZm9yIGJ1aWxkaW5nIFNRTCBxdWVyaWVzIHByb2dyYW1tYXRpY2FsbHkuXG4gKiAtIFByb2NlZHVyZTogUmVwcmVzZW50cyBhIHN0b3JlZCBwcm9jZWR1cmUgaW4gdGhlIGRhdGFiYXNlIGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIGV4ZWN1dGUgaXQuXG4gKiAtIFNlcXVlbmNlOiBSZXByZXNlbnRzIGEgZGF0YWJhc2Ugc2VxdWVuY2UgYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCBpdC5cbiAqIC0gUXVlcnk6IFJlcHJlc2VudHMgYSBkYXRhYmFzZSBxdWVyeSBhbmQgcHJvdmlkZXMgbWV0aG9kcyB0byBleGVjdXRlIGl0IGFuZCByZXRyaWV2ZSByZXN1bHRzLlxuICogLSBVcGRhdGU6IFJlcHJlc2VudHMgYW4gdXBkYXRlIG9wZXJhdGlvbiBpbiB0aGUgZGF0YWJhc2UgYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gZXhlY3V0ZSBpdC5cbiAqIC0gSW5zZXJ0OiBSZXByZXNlbnRzIGFuIGluc2VydCBvcGVyYXRpb24gaW4gdGhlIGRhdGFiYXNlIGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIGV4ZWN1dGUgaXQuXG4gKiAtIFN0b3JlOiBSZXByZXNlbnRzIGEgZGF0YSBzdG9yZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBjYWNoaW5nIG9yIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGRhdGEuXG4gKiAtIFJlcG9zaXRvcnk6IFByb3ZpZGVzIGEgcmVwb3NpdG9yeSBwYXR0ZXJuIGltcGxlbWVudGF0aW9uIGZvciBtYW5hZ2luZyBkYXRhIGVudGl0aWVzIGluIHRoZSBkYXRhYmFzZS5cbiAqIC0gRGVjb3JhdG9yczogUHJvdmlkZXMgZGVjb3JhdG9ycyBmb3IgZGVmaW5pbmcgZGF0YWJhc2UgZW50aXRpZXMsIHJlcG9zaXRvcmllcywgYW5kIG90aGVyIHJlbGF0ZWQgY29tcG9uZW50cyBpbiBhIGRlY2xhcmF0aXZlIG1hbm5lclxuICovXG5cbmV4cG9ydCAqIGFzIGRhbyBmcm9tIFwiLi9kYW9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlXCI7XG5leHBvcnQgeyBEYXRhYmFzZSBhcyBkYXRhYmFzZSB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5leHBvcnQgKiBhcyBvcm0gZnJvbSBcIi4vb3JtXCI7XG5leHBvcnQgKiBhcyBvcm1zdGF0ZW1lbnRzIGZyb20gXCIuL29ybXN0YXRlbWVudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NxbFwiO1xuZXhwb3J0IHsgU1FMQnVpbGRlciBhcyBzcWwgfSBmcm9tIFwiLi9zcWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb2NlZHVyZVwiO1xuZXhwb3J0IHsgUHJvY2VkdXJlIGFzIHByb2NlZHVyZSB9IGZyb20gXCIuL3Byb2NlZHVyZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VxdWVuY2VcIjtcbmV4cG9ydCB7IFNlcXVlbmNlIGFzIHNlcXVlbmNlIH0gZnJvbSBcIi4vc2VxdWVuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3F1ZXJ5XCI7XG5leHBvcnQgeyBRdWVyeSBhcyBxdWVyeSB9IGZyb20gXCIuL3F1ZXJ5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi91cGRhdGVcIjtcbmV4cG9ydCB7IFVwZGF0ZSBhcyB1cGRhdGUgfSBmcm9tIFwiLi91cGRhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2luc2VydFwiO1xuZXhwb3J0IHsgSW5zZXJ0IGFzIGluc2VydCB9IGZyb20gXCIuL2luc2VydFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmVcIjtcbmV4cG9ydCB7IFN0b3JlIGFzIHN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCB7IFJlcG9zaXRvcnkgYXMgcmVwb3NpdG9yeSB9IGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGFzIGRlY29yYXRvcnMgZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJhbnNsYXRvclwiO1xuZXhwb3J0IHsgVHJhbnNsYXRvciBhcyB0cmFuc2xhdG9yIH0gZnJvbSBcIi4vdHJhbnNsYXRvclwiOyJdLAogICJtYXBwaW5ncyI6ICJBQW9CQSxZQUFZLFNBQVM7QUFDckIsY0FBYztBQUNkLFNBQXFCLGdCQUFnQjtBQUNyQyxZQUFZLFNBQVM7QUFDckIsWUFBWSxtQkFBbUI7QUFDL0IsY0FBYztBQUNkLFNBQXVCLGtCQUFXO0FBQ2xDLGNBQWM7QUFDZCxTQUFzQixpQkFBaUI7QUFDdkMsY0FBYztBQUNkLFNBQXFCLGdCQUFnQjtBQUNyQyxjQUFjO0FBQ2QsU0FBa0IsYUFBYTtBQUMvQixjQUFjO0FBQ2QsU0FBbUIsY0FBYztBQUNqQyxjQUFjO0FBQ2QsU0FBbUIsY0FBYztBQUNqQyxjQUFjO0FBQ2QsU0FBa0IsYUFBYTtBQUMvQixjQUFjO0FBQ2QsU0FBdUIsa0JBQWtCO0FBQ3pDLGNBQWM7QUFDZCxZQUFZLGdCQUFnQjtBQUM1QixjQUFjO0FBQ2QsU0FBdUIsa0JBQWtCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -29,4 +29,4 @@ if (typeof module !== "undefined") {
29
29
  export {
30
30
  Insert
31
31
  };
32
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2luc2VydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIik7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gd3JhcCBjb21wbGV4IG9yIG90aGVyIHNwZWNpZmljIHZhbHVlcyBmb3IgZGF0YWJhc2UgaW5zZXJ0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc2VydFBhcmFtZXRlciB7XG5cdHJlYWRvbmx5IHZhbHVlOiBhbnk7XG59XG5cbi8qKlxuICogVHlwZSBhbGlhcyBmb3IgYSBzaW5nbGUgYWxsb3dlZCBwYXJhbWV0ZXIgdmFsdWUgaW4gYW4gSU5TRVJUIHN0YXRlbWVudC5cbiAqL1xudHlwZSBQYXJhbWV0ZXJWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgSW5zZXJ0UGFyYW1ldGVyO1xuXG4vKipcbiAqIFByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIGZvciBleGVjdXRpbmcgSU5TRVJUIFNRTCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgSW5zZXJ0IHtcblxuXHQvKipcblx0ICogRXhlY3V0ZXMgYSBzaW5nbGUgcGFyYW1ldGVyaXplZCBJTlNFUlQgc3RhdGVtZW50LlxuXHQgKiAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLCB3aXRoICc/JyBwbGFjZWhvbGRlcnMgZm9yIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyB0byByZXBsYWNlIHRoZSAnPycgcGxhY2Vob2xkZXJzLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgdGhlIGluc2VydGlvbiAoZS5nLiwgZ2VuZXJhdGVkIGtleXMpLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogUGFyYW1ldGVyVmFsdWVbXSwgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUuaW5zZXJ0KHNxbCwgcGFyYW1zLCBkYXRhc291cmNlTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogRXhlY3V0ZXMgbXVsdGlwbGUgcGFyYW1ldGVyaXplZCBJTlNFUlQgc3RhdGVtZW50cyBhcyBhIGJhdGNoIG9wZXJhdGlvbi5cblx0ICogKiBAcGFyYW0gc3FsIFRoZSBTUUwgcXVlcnkgdG8gZXhlY3V0ZSwgd2l0aCAnPycgcGxhY2Vob2xkZXJzIGZvciBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiBwYXJhbWV0ZXIgYXJyYXlzLCB3aGVyZSBlYWNoIGlubmVyIGFycmF5IGNvcnJlc3BvbmRzIHRvIG9uZSBleGVjdXRpb24gb2YgdGhlIFNRTCBzdGF0ZW1lbnQuXG5cdCAqIEBwYXJhbSBkYXRhc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UgKG9wdGlvbmFsKS5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVjb3JkcyByZXByZXNlbnRpbmcgdGhlIHJlc3VsdHMgb2YgdGhlIGJhdGNoZWQgaW5zZXJ0aW9ucy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZXhlY3V0ZU1hbnkoc3FsOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBQYXJhbWV0ZXJWYWx1ZVtdW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUuaW5zZXJ0TWFueShzcWwsIHBhcmFtcywgZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gSW5zZXJ0O1xufSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE1BQU0saUJBQWlCLEtBQUssS0FBSyx3REFBd0Q7QUFpQmxGLE1BQU0sT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTbkIsT0FBYyxRQUFRLEtBQWEsWUFBK0IsZ0JBQXFEO0FBQ2hILFVBQU0sU0FBUyxhQUFhLEtBQUssVUFBVSxVQUFVLElBQUk7QUFDL0QsV0FBTyxlQUFlLE9BQU8sS0FBSyxRQUFRLGNBQWM7QUFBQSxFQUN6RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTQSxPQUFjLFlBQVksS0FBYSxZQUFpQyxnQkFBcUQ7QUFDNUgsVUFBTSxTQUFTLGFBQWEsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUN6RCxXQUFPLGVBQWUsV0FBVyxLQUFLLFFBQVEsY0FBYztBQUFBLEVBQzdEO0FBQ0Q7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
32
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL2luc2VydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGRiL2luc2VydFxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2RiXG4gKiBAbmFtZSBJbnNlcnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgYEluc2VydGAgY2xhc3MgcHJvdmlkZXMgc3RhdGljIG1ldGhvZHMgZm9yIGV4ZWN1dGluZyBwYXJhbWV0ZXJpemVkIFNRTCBJTlNFUlQgc3RhdGVtZW50cyBhZ2FpbnN0IGEgZGF0YWJhc2UuIEl0IHN1cHBvcnRzIGJvdGggc2luZ2xlIGFuZCBiYXRjaCBpbnNlcnQgb3BlcmF0aW9ucywgYWxsb3dpbmcgZGV2ZWxvcGVycyB0byBlZmZpY2llbnRseSBpbnNlcnQgZGF0YSBpbnRvIHRoZWlyIGRhdGFiYXNlcyB3aGlsZSBhYnN0cmFjdGluZyBhd2F5IHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGludGVyYWN0aW9uIGRldGFpbHMuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gKipQYXJhbWV0ZXJpemVkIFF1ZXJpZXMqKjogU3VwcG9ydHMgcGFyYW1ldGVyaXplZCBTUUwgcXVlcmllcyB0byBwcmV2ZW50IFNRTCBpbmplY3Rpb24gYW5kIGVuc3VyZSBzYWZlIGRhdGFiYXNlIGludGVyYWN0aW9ucy5cbiAqIC0gKipCYXRjaCBPcGVyYXRpb25zKio6IEFsbG93cyBmb3IgZXhlY3V0aW5nIG11bHRpcGxlIGluc2VydCBzdGF0ZW1lbnRzIGluIGEgc2luZ2xlIGJhdGNoIG9wZXJhdGlvbiwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIHdoZW4gaW5zZXJ0aW5nIGxhcmdlIGRhdGFzZXRzLlxuICogLSAqKkZsZXhpYmxlIERhdGEgVHlwZXMqKjogQWNjZXB0cyBhIHZhcmlldHkgb2YgZGF0YSB0eXBlcyBmb3IgcGFyYW1ldGVycywgaW5jbHVkaW5nIHN0cmluZ3MsIG51bWJlcnMsIGJvb2xlYW5zLCBkYXRlcywgYW5kIGNvbXBsZXggb2JqZWN0cyB3cmFwcGVkIGluIGBJbnNlcnRQYXJhbWV0ZXJgLlxuICogLSAqKkRhdGFzb3VyY2UgU2VsZWN0aW9uKio6IFByb3ZpZGVzIHRoZSBvcHRpb24gdG8gc3BlY2lmeSBhIGRhdGFzb3VyY2UgbmFtZSBmb3IgZXhlY3V0aW5nIHRoZSBpbnNlcnQgb3BlcmF0aW9uIGFnYWluc3QgYSBzcGVjaWZpYyBkYXRhYmFzZSBjb25uZWN0aW9uLlxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIEluc2VydGluZyBuZXcgcmVjb3JkcyBpbnRvIGEgZGF0YWJhc2UgdGFibGUgaW4gYSBzZWN1cmUgYW5kIGVmZmljaWVudCBtYW5uZXIuXG4gKiAtIFBlcmZvcm1pbmcgYnVsayBpbnNlcnQgb3BlcmF0aW9ucyB3aGVuIGRlYWxpbmcgd2l0aCBsYXJnZSBkYXRhc2V0cyB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZS5cbiAqIC0gQWJzdHJhY3RpbmcgZGF0YWJhc2UgaW50ZXJhY3Rpb25zIHRvIGFsbG93IGZvciBlYXNpZXIgbWFpbnRlbmFuY2UgYW5kIHBvdGVudGlhbCBkYXRhYmFzZSBlbmdpbmUgY2hhbmdlcyBpbiB0aGUgZnV0dXJlLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IEluc2VydCB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcbiAqIFxuICogLy8gU2luZ2xlIGluc2VydCBleGFtcGxlXG4gKiBjb25zdCBuZXdVc2VyID0geyBuYW1lOiBcIkFsaWNlXCIsIGVtYWlsOiBcImFsaWNlQGV4YW1wbGUuY29tXCIgfTtcbiAqIGNvbnN0IHJlc3VsdCA9IEluc2VydC5leGVjdXRlKFwiSU5TRVJUIElOVE8gVXNlcnMgKG5hbWUsIGVtYWlsKSBWQUxVRVMgKD8sID8pXCIsIFtuZXdVc2VyLm5hbWUsIG5ld1VzZXIuZW1haWxdKTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdCk7IC8vIE91dHB1dDogW3sgaWQ6IDEsIG5hbWU6IFwiQWxpY2VcIiwgZW1haWw6IFwiXG4gKiBcbiAqIC8vIEJhdGNoIGluc2VydCBleGFtcGxlXG4gKiBjb25zdCB1c2VycyA9IFtcbiAqICAgeyBuYW1lOiBcIkJvYlwiLCBlbWFpbDogXCJib2JAZXhhbXBsZS5jb21cIiB9LFxuICogICB7IG5hbWU6IFwiQ2hhcmxpZVwiLCBlbWFpbDogXCJjaGFybGllQGV4YW1wbGUuY29tXCIgfVxuICogXTtcbiAqIGNvbnN0IHJlc3VsdCA9IEluc2VydC5leGVjdXRlTWFueShcIklOU0VSVCBJTlRPIFVzZXJzIChuYW1lLCBlbWFpbCkgVkFMVUVTICg/LCA/KVwiLCB1c2Vycy5tYXAodSA9PiBbdS5uYW1lLCB1LmVtYWlsXSkpO1xuICogY29uc29sZS5sb2cocmVzdWx0KTsgLy8gT3V0cHV0OiBbeyBpZDogMiwgbmFtZTogXCJCb2JcIiwgZW1haWw6IFwiYm9iQGV4YW1wbGUuY29tXCIgfSwgeyBpZDogMywgbmFtZTogXCJDaGFybGllXCIsIGVtYWlsOiBcImNoYXJsaWVAZXhhbXBsZS5jb21cIiB9XVxuICogYGBgXG4gKi9cbmNvbnN0IERhdGFiYXNlRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmRiLkRhdGFiYXNlRmFjYWRlXCIpO1xuXG4vKipcbiAqIEludGVyZmFjZSB1c2VkIHRvIHdyYXAgY29tcGxleCBvciBvdGhlciBzcGVjaWZpYyB2YWx1ZXMgZm9yIGRhdGFiYXNlIGluc2VydGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRQYXJhbWV0ZXIge1xuXHRyZWFkb25seSB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIFR5cGUgYWxpYXMgZm9yIGEgc2luZ2xlIGFsbG93ZWQgcGFyYW1ldGVyIHZhbHVlIGluIGFuIElOU0VSVCBzdGF0ZW1lbnQuXG4gKi9cbnR5cGUgUGFyYW1ldGVyVmFsdWUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IEluc2VydFBhcmFtZXRlcjtcblxuLyoqXG4gKiBQcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZXhlY3V0aW5nIElOU0VSVCBTUUwgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEluc2VydCB7XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIGEgc2luZ2xlIHBhcmFtZXRlcml6ZWQgSU5TRVJUIHN0YXRlbWVudC5cblx0ICogKiBAcGFyYW0gc3FsIFRoZSBTUUwgcXVlcnkgdG8gZXhlY3V0ZSwgd2l0aCAnPycgcGxhY2Vob2xkZXJzIGZvciBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiB2YWx1ZXMgdG8gcmVwbGFjZSB0aGUgJz8nIHBsYWNlaG9sZGVycy5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZSAob3B0aW9uYWwpLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiByZWNvcmRzIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIHRoZSBpbnNlcnRpb24gKGUuZy4sIGdlbmVyYXRlZCBrZXlzKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZXhlY3V0ZShzcWw6IHN0cmluZywgcGFyYW1ldGVycz86IFBhcmFtZXRlclZhbHVlW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBwYXJhbWV0ZXJzID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykgOiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIERhdGFiYXNlRmFjYWRlLmluc2VydChzcWwsIHBhcmFtcywgZGF0YXNvdXJjZU5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIG11bHRpcGxlIHBhcmFtZXRlcml6ZWQgSU5TRVJUIHN0YXRlbWVudHMgYXMgYSBiYXRjaCBvcGVyYXRpb24uXG5cdCAqICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUsIHdpdGggJz8nIHBsYWNlaG9sZGVycyBmb3IgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgQW4gb3B0aW9uYWwgYXJyYXkgb2YgcGFyYW1ldGVyIGFycmF5cywgd2hlcmUgZWFjaCBpbm5lciBhcnJheSBjb3JyZXNwb25kcyB0byBvbmUgZXhlY3V0aW9uIG9mIHRoZSBTUUwgc3RhdGVtZW50LlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSByZXN1bHRzIG9mIHRoZSBiYXRjaGVkIGluc2VydGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGV4ZWN1dGVNYW55KHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogUGFyYW1ldGVyVmFsdWVbXVtdLCBkYXRhc291cmNlTmFtZT86IHN0cmluZyk6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBwYXJhbWV0ZXJzID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykgOiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIERhdGFiYXNlRmFjYWRlLmluc2VydE1hbnkoc3FsLCBwYXJhbXMsIGRhdGFzb3VyY2VOYW1lKTtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IEluc2VydDtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFxQ0EsTUFBTSxpQkFBaUIsS0FBSyxLQUFLLHdEQUF3RDtBQWlCbEYsTUFBTSxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNuQixPQUFjLFFBQVEsS0FBYSxZQUErQixnQkFBcUQ7QUFDaEgsVUFBTSxTQUFTLGFBQWEsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUMvRCxXQUFPLGVBQWUsT0FBTyxLQUFLLFFBQVEsY0FBYztBQUFBLEVBQ3pEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsWUFBWSxLQUFhLFlBQWlDLGdCQUFxRDtBQUM1SCxVQUFNLFNBQVMsYUFBYSxLQUFLLFVBQVUsVUFBVSxJQUFJO0FBQ3pELFdBQU8sZUFBZSxXQUFXLEtBQUssUUFBUSxjQUFjO0FBQUEsRUFDN0Q7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=