lakutata 0.0.1

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 (594) hide show
  1. package/.idea/codeStyles/Project.xml +18 -0
  2. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  4. package/.idea/lakutata.iml +13 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/vcs.xml +6 -0
  7. package/LICENSE +21 -0
  8. package/README.md +1 -0
  9. package/build/Application-78a416de.d.ts +387 -0
  10. package/build/Application-b5e19e08.d.ts +387 -0
  11. package/build/Components.cjs +55 -0
  12. package/build/Components.d.cts +9 -0
  13. package/build/Components.d.ts +9 -0
  14. package/build/Components.js +44 -0
  15. package/build/Core.cjs +148 -0
  16. package/build/Core.d.cts +33 -0
  17. package/build/Core.d.ts +33 -0
  18. package/build/Core.js +71 -0
  19. package/build/Crypto.cjs +96 -0
  20. package/build/Crypto.d.cts +19 -0
  21. package/build/Crypto.d.ts +19 -0
  22. package/build/Crypto.js +41 -0
  23. package/build/Decorators.cjs +100 -0
  24. package/build/Decorators.d.cts +23 -0
  25. package/build/Decorators.d.ts +23 -0
  26. package/build/Decorators.js +45 -0
  27. package/build/DependencyInjectionContainer-871a6c03.d.ts +340 -0
  28. package/build/DependencyInjectionContainer-f037ac36.d.ts +340 -0
  29. package/build/Exceptions.cjs +144 -0
  30. package/build/Exceptions.d.cts +28 -0
  31. package/build/Exceptions.d.ts +28 -0
  32. package/build/Exceptions.js +37 -0
  33. package/build/Hash.cjs +223 -0
  34. package/build/Hash.d.cts +535 -0
  35. package/build/Hash.d.ts +535 -0
  36. package/build/Hash.js +10 -0
  37. package/build/Time.cjs +14 -0
  38. package/build/Time.d.cts +5 -0
  39. package/build/Time.d.ts +5 -0
  40. package/build/Time.js +5 -0
  41. package/build/TimeInput-24fced42.d.ts +243 -0
  42. package/build/TimeInput-4401fc58.d.ts +243 -0
  43. package/build/Utilities.cjs +100 -0
  44. package/build/Utilities.d.cts +212 -0
  45. package/build/Utilities.d.ts +212 -0
  46. package/build/Utilities.js +7 -0
  47. package/build/Validator.cjs +24 -0
  48. package/build/Validator.d.cts +1851 -0
  49. package/build/Validator.d.ts +1851 -0
  50. package/build/Validator.js +11 -0
  51. package/build/chunk-26TQI22I.js +196 -0
  52. package/build/chunk-27OFA7C3.js +16 -0
  53. package/build/chunk-2C2UILFN.js +23 -0
  54. package/build/chunk-2CHYQHWR.cjs +16 -0
  55. package/build/chunk-2DN35UQB.cjs +10947 -0
  56. package/build/chunk-2E4TF6LU.cjs +16 -0
  57. package/build/chunk-2PLJEW2R.js +14 -0
  58. package/build/chunk-2RW3VMNS.js +45 -0
  59. package/build/chunk-2T6JU2UH.js +14 -0
  60. package/build/chunk-3CX3GCQF.js +32 -0
  61. package/build/chunk-3JIQCDQG.cjs +25 -0
  62. package/build/chunk-3KLEN3PR.js +14 -0
  63. package/build/chunk-3LZRQPJ5.js +14 -0
  64. package/build/chunk-3NHHHZFR.cjs +870 -0
  65. package/build/chunk-4332C5BW.js +30 -0
  66. package/build/chunk-46V7GHKE.cjs +25 -0
  67. package/build/chunk-4EPPSZ7L.js +14 -0
  68. package/build/chunk-4FEEQIQ4.js +23 -0
  69. package/build/chunk-4G2ZCUBN.js +5570 -0
  70. package/build/chunk-4KTVY73U.js +15 -0
  71. package/build/chunk-4MQXSUTL.cjs +14 -0
  72. package/build/chunk-4OHSPWRQ.js +34 -0
  73. package/build/chunk-4PK4TGU4.cjs +16 -0
  74. package/build/chunk-4YXUEJSO.js +23 -0
  75. package/build/chunk-5475IFR4.cjs +16 -0
  76. package/build/chunk-5B5Z4GCR.cjs +17 -0
  77. package/build/chunk-5FPTDIKI.cjs +16 -0
  78. package/build/chunk-5NK7E2HA.js +69 -0
  79. package/build/chunk-67F5WP5Z.cjs +8 -0
  80. package/build/chunk-6BJTKEXZ.cjs +25 -0
  81. package/build/chunk-6WNLPTDY.cjs +8 -0
  82. package/build/chunk-7G7FCNEG.cjs +8 -0
  83. package/build/chunk-7IVNTVYK.cjs +16 -0
  84. package/build/chunk-7MJAWOWL.js +22896 -0
  85. package/build/chunk-7MTOK62N.js +767 -0
  86. package/build/chunk-7PADGZPI.cjs +129 -0
  87. package/build/chunk-7ZUM53G6.js +14 -0
  88. package/build/chunk-A4BYNKYF.js +42 -0
  89. package/build/chunk-A7F6LCRA.cjs +16 -0
  90. package/build/chunk-AFV3VN3X.cjs +8 -0
  91. package/build/chunk-AGHMOCC3.cjs +16 -0
  92. package/build/chunk-AHUH4FWQ.cjs +29 -0
  93. package/build/chunk-AM4YMG2S.js +6 -0
  94. package/build/chunk-ANDEVIKJ.cjs +16 -0
  95. package/build/chunk-APETX7ZT.cjs +16 -0
  96. package/build/chunk-ASMC7EUP.js +6 -0
  97. package/build/chunk-BDCRHGKN.js +6 -0
  98. package/build/chunk-BDJXMO44.js +2920 -0
  99. package/build/chunk-BE7ICF5R.js +32 -0
  100. package/build/chunk-BEDKPRVX.cjs +17 -0
  101. package/build/chunk-BFE66ADZ.cjs +34 -0
  102. package/build/chunk-BKCT2HSQ.js +178 -0
  103. package/build/chunk-BMNC4W46.js +20 -0
  104. package/build/chunk-BO7Y6HNS.cjs +176 -0
  105. package/build/chunk-D4H35ART.cjs +53 -0
  106. package/build/chunk-D5DE7Z4J.js +29 -0
  107. package/build/chunk-DHSSJJMD.cjs +25 -0
  108. package/build/chunk-DIMOR6NE.cjs +8 -0
  109. package/build/chunk-DN5TSX6S.cjs +244 -0
  110. package/build/chunk-EEH5LCBP.cjs +16 -0
  111. package/build/chunk-EFYDUUXT.cjs +92 -0
  112. package/build/chunk-ENJSEFE4.js +14 -0
  113. package/build/chunk-EPYJVQHQ.js +6 -0
  114. package/build/chunk-EUVLTNDV.js +32 -0
  115. package/build/chunk-EXQVCESB.cjs +20 -0
  116. package/build/chunk-EYPPC6HP.js +18 -0
  117. package/build/chunk-F5NKGQDL.cjs +16 -0
  118. package/build/chunk-F7RNH2H2.js +266 -0
  119. package/build/chunk-FCTV4OB7.cjs +50 -0
  120. package/build/chunk-FHEXUE67.js +29 -0
  121. package/build/chunk-FJP3KNXK.js +23 -0
  122. package/build/chunk-FJQSLRIP.js +14 -0
  123. package/build/chunk-FSFWPTIC.js +6 -0
  124. package/build/chunk-FTKFMQHJ.cjs +16 -0
  125. package/build/chunk-FW26MPE4.js +69 -0
  126. package/build/chunk-FZNRGZGE.js +6372 -0
  127. package/build/chunk-G7EDOLQ7.cjs +100 -0
  128. package/build/chunk-GGY7LCMQ.cjs +73 -0
  129. package/build/chunk-GLWUJIMW.cjs +8 -0
  130. package/build/chunk-GZ5KN2PE.js +6 -0
  131. package/build/chunk-HBPRX3WA.cjs +202 -0
  132. package/build/chunk-HJAQ6WJM.cjs +288 -0
  133. package/build/chunk-HJSJA5CF.js +14 -0
  134. package/build/chunk-HKAY7FWM.js +28 -0
  135. package/build/chunk-HMKTNRQF.js +14 -0
  136. package/build/chunk-HODDA5D5.js +199 -0
  137. package/build/chunk-HPKJUFTM.js +14 -0
  138. package/build/chunk-HWCTWIVZ.cjs +30 -0
  139. package/build/chunk-HXWC4YN6.cjs +22908 -0
  140. package/build/chunk-HZJ7XFHQ.cjs +8 -0
  141. package/build/chunk-I5TGKTX6.js +18 -0
  142. package/build/chunk-I7J6V3EU.cjs +34 -0
  143. package/build/chunk-IKWXYUGY.js +14 -0
  144. package/build/chunk-IYGGR65W.cjs +16 -0
  145. package/build/chunk-J6RXNX2K.js +174 -0
  146. package/build/chunk-JAEEMFEZ.cjs +24 -0
  147. package/build/chunk-JFOMNL5I.cjs +22 -0
  148. package/build/chunk-JPV2PUHF.cjs +8 -0
  149. package/build/chunk-JR726PDZ.cjs +70 -0
  150. package/build/chunk-JTKOYDJB.js +5914 -0
  151. package/build/chunk-JU53NOVA.cjs +31 -0
  152. package/build/chunk-JVSBYHUY.js +10944 -0
  153. package/build/chunk-JYBISTRN.cjs +25 -0
  154. package/build/chunk-K2ALA7QI.js +12 -0
  155. package/build/chunk-KG6DPM4B.js +14 -0
  156. package/build/chunk-KNSBLLL2.cjs +32 -0
  157. package/build/chunk-KNTGBUSY.js +6 -0
  158. package/build/chunk-KWOHVRRL.js +6 -0
  159. package/build/chunk-L3IVYIVA.js +23 -0
  160. package/build/chunk-LBL5XNWX.js +221 -0
  161. package/build/chunk-LBOBUFWZ.js +6 -0
  162. package/build/chunk-LEJXJUBE.js +6 -0
  163. package/build/chunk-LJTCXKC4.js +242 -0
  164. package/build/chunk-MBKTJ3KM.cjs +118 -0
  165. package/build/chunk-MDE5SRLT.cjs +16 -0
  166. package/build/chunk-MEKICSEL.js +22 -0
  167. package/build/chunk-MNDBRDT2.cjs +608 -0
  168. package/build/chunk-MSWZLYS7.cjs +5916 -0
  169. package/build/chunk-MT2OB376.js +14 -0
  170. package/build/chunk-MVWB4XDJ.js +14 -0
  171. package/build/chunk-MXAAAL2S.js +53 -0
  172. package/build/chunk-N37KV2VV.cjs +199 -0
  173. package/build/chunk-NZ5IZMM5.cjs +2922 -0
  174. package/build/chunk-O2NOYN65.js +54 -0
  175. package/build/chunk-OAD22QZQ.js +6 -0
  176. package/build/chunk-OIFILR4I.js +125 -0
  177. package/build/chunk-OJGBPS2B.cjs +16 -0
  178. package/build/chunk-OMPATIMZ.cjs +71 -0
  179. package/build/chunk-P3Z7ZEGJ.cjs +18 -0
  180. package/build/chunk-P6BBXCBD.cjs +6425 -0
  181. package/build/chunk-PE4C2TIO.cjs +16 -0
  182. package/build/chunk-PF2WAZLH.cjs +52 -0
  183. package/build/chunk-PFFTGOAR.cjs +25 -0
  184. package/build/chunk-PFUZLHWJ.cjs +25 -0
  185. package/build/chunk-POE7A7NF.cjs +180 -0
  186. package/build/chunk-PQSDA5BN.js +50 -0
  187. package/build/chunk-PR5TPAGH.js +14 -0
  188. package/build/chunk-PXMWVOKK.cjs +16 -0
  189. package/build/chunk-PZ5OJC4I.cjs +16 -0
  190. package/build/chunk-Q4LNTPEI.cjs +34 -0
  191. package/build/chunk-QCA5YGYV.js +14 -0
  192. package/build/chunk-QGGML4PP.js +17 -0
  193. package/build/chunk-QHW273SN.js +32 -0
  194. package/build/chunk-QJJRQMA6.cjs +8 -0
  195. package/build/chunk-QKB76MIV.cjs +769 -0
  196. package/build/chunk-QKVPGRI5.cjs +8 -0
  197. package/build/chunk-QME47CJL.cjs +8 -0
  198. package/build/chunk-QNJ6XBYQ.js +14 -0
  199. package/build/chunk-QWYKUNU5.js +14 -0
  200. package/build/chunk-QXTBP6TW.js +116 -0
  201. package/build/chunk-RH3LAIQS.js +32 -0
  202. package/build/chunk-RMAXG5F7.js +118 -0
  203. package/build/chunk-RUHAPGDE.js +14 -0
  204. package/build/chunk-S4KA3ZGO.js +6 -0
  205. package/build/chunk-SAGMV3YX.cjs +16 -0
  206. package/build/chunk-SCWEQ5JA.cjs +34 -0
  207. package/build/chunk-SEKBDIJH.cjs +16 -0
  208. package/build/chunk-SGWWTKLW.cjs +16 -0
  209. package/build/chunk-SWCU6OID.cjs +61 -0
  210. package/build/chunk-T4C7UJEZ.js +29 -0
  211. package/build/chunk-TBWIKIS3.cjs +8 -0
  212. package/build/chunk-TS74DN3N.cjs +229 -0
  213. package/build/chunk-TXTNUC7S.cjs +16 -0
  214. package/build/chunk-UEGDBJEG.cjs +127 -0
  215. package/build/chunk-UR2ZK7MI.cjs +16 -0
  216. package/build/chunk-VAOR6JOP.js +14 -0
  217. package/build/chunk-VELZ3KJY.cjs +45 -0
  218. package/build/chunk-VHTAHAD6.cjs +34 -0
  219. package/build/chunk-VISA22LF.js +14 -0
  220. package/build/chunk-VOFRWVGM.js +23 -0
  221. package/build/chunk-VPRNM6FU.cjs +118 -0
  222. package/build/chunk-VTFNEUOF.js +14 -0
  223. package/build/chunk-VVNU27G2.js +868 -0
  224. package/build/chunk-W3TQER3B.cjs +31 -0
  225. package/build/chunk-WINISBV4.js +70 -0
  226. package/build/chunk-WSEZ7DZV.js +14 -0
  227. package/build/chunk-WW57G6RG.js +124 -0
  228. package/build/chunk-WYJCE3KY.cjs +5593 -0
  229. package/build/chunk-WZI5UPER.cjs +61 -0
  230. package/build/chunk-WZZF2IEV.js +14 -0
  231. package/build/chunk-X4AIZSIY.cjs +47 -0
  232. package/build/chunk-XO6M5AYN.js +585 -0
  233. package/build/chunk-XWP76C6E.js +25 -0
  234. package/build/chunk-Y7O5SCF6.cjs +16 -0
  235. package/build/chunk-YEBPQG7X.js +96 -0
  236. package/build/chunk-YT4CYDJ3.js +14 -0
  237. package/build/chunk-ZG3PHRVQ.cjs +20 -0
  238. package/build/chunk-ZG7QF5S2.cjs +16 -0
  239. package/build/chunk-ZJYLWSBE.js +90 -0
  240. package/build/chunk-ZYBMNLGI.js +48 -0
  241. package/build/constants/DefaultValue.cjs +14 -0
  242. package/build/constants/DefaultValue.d.cts +9 -0
  243. package/build/constants/DefaultValue.d.ts +9 -0
  244. package/build/constants/DefaultValue.js +5 -0
  245. package/build/constants/MetadataKey.cjs +114 -0
  246. package/build/constants/MetadataKey.d.cts +30 -0
  247. package/build/constants/MetadataKey.d.ts +30 -0
  248. package/build/constants/MetadataKey.js +5 -0
  249. package/build/decorators/ControllerDecorators.cjs +21 -0
  250. package/build/decorators/ControllerDecorators.d.cts +32 -0
  251. package/build/decorators/ControllerDecorators.d.ts +32 -0
  252. package/build/decorators/ControllerDecorators.js +12 -0
  253. package/build/decorators/DependencyInjectionDecorators.cjs +78 -0
  254. package/build/decorators/DependencyInjectionDecorators.d.cts +75 -0
  255. package/build/decorators/DependencyInjectionDecorators.d.ts +75 -0
  256. package/build/decorators/DependencyInjectionDecorators.js +41 -0
  257. package/build/decorators/ValidationDecorators.cjs +35 -0
  258. package/build/decorators/ValidationDecorators.d.cts +36 -0
  259. package/build/decorators/ValidationDecorators.d.ts +36 -0
  260. package/build/decorators/ValidationDecorators.js +14 -0
  261. package/build/exceptions/DependencyInjectionException.cjs +18 -0
  262. package/build/exceptions/DependencyInjectionException.d.cts +8 -0
  263. package/build/exceptions/DependencyInjectionException.d.ts +8 -0
  264. package/build/exceptions/DependencyInjectionException.js +9 -0
  265. package/build/exceptions/InvalidConfigurableValueException.cjs +18 -0
  266. package/build/exceptions/InvalidConfigurableValueException.d.cts +8 -0
  267. package/build/exceptions/InvalidConfigurableValueException.d.ts +8 -0
  268. package/build/exceptions/InvalidConfigurableValueException.js +9 -0
  269. package/build/exceptions/InvalidDTOValueException.cjs +18 -0
  270. package/build/exceptions/InvalidDTOValueException.d.cts +8 -0
  271. package/build/exceptions/InvalidDTOValueException.d.ts +8 -0
  272. package/build/exceptions/InvalidDTOValueException.js +9 -0
  273. package/build/exceptions/InvalidGlobStringException.cjs +18 -0
  274. package/build/exceptions/InvalidGlobStringException.d.cts +8 -0
  275. package/build/exceptions/InvalidGlobStringException.d.ts +8 -0
  276. package/build/exceptions/InvalidGlobStringException.js +9 -0
  277. package/build/exceptions/MethodNotFoundException.cjs +18 -0
  278. package/build/exceptions/MethodNotFoundException.d.cts +8 -0
  279. package/build/exceptions/MethodNotFoundException.d.ts +8 -0
  280. package/build/exceptions/MethodNotFoundException.js +9 -0
  281. package/build/exceptions/NotSupportHashException.cjs +18 -0
  282. package/build/exceptions/NotSupportHashException.d.cts +8 -0
  283. package/build/exceptions/NotSupportHashException.d.ts +8 -0
  284. package/build/exceptions/NotSupportHashException.js +9 -0
  285. package/build/exceptions/controller/DuplicateControllerActionPatternException.cjs +18 -0
  286. package/build/exceptions/controller/DuplicateControllerActionPatternException.d.cts +8 -0
  287. package/build/exceptions/controller/DuplicateControllerActionPatternException.d.ts +8 -0
  288. package/build/exceptions/controller/DuplicateControllerActionPatternException.js +9 -0
  289. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.cjs +18 -0
  290. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.d.cts +8 -0
  291. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.d.ts +8 -0
  292. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.js +9 -0
  293. package/build/exceptions/controller/NoMatchedControllerActionPatternException.cjs +18 -0
  294. package/build/exceptions/controller/NoMatchedControllerActionPatternException.d.cts +8 -0
  295. package/build/exceptions/controller/NoMatchedControllerActionPatternException.d.ts +8 -0
  296. package/build/exceptions/controller/NoMatchedControllerActionPatternException.js +9 -0
  297. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.cjs +18 -0
  298. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.d.cts +8 -0
  299. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.d.ts +8 -0
  300. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.js +9 -0
  301. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.cjs +18 -0
  302. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.d.cts +8 -0
  303. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.d.ts +8 -0
  304. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.js +9 -0
  305. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.cjs +18 -0
  306. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.d.cts +8 -0
  307. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.d.ts +8 -0
  308. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.js +9 -0
  309. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.cjs +18 -0
  310. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.d.cts +8 -0
  311. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.d.ts +8 -0
  312. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.js +9 -0
  313. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.cjs +18 -0
  314. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.d.cts +8 -0
  315. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.d.ts +8 -0
  316. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.js +9 -0
  317. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.cjs +18 -0
  318. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.d.cts +8 -0
  319. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.d.ts +8 -0
  320. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.js +9 -0
  321. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.cjs +18 -0
  322. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.d.cts +8 -0
  323. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.d.ts +8 -0
  324. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.js +9 -0
  325. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.cjs +18 -0
  326. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.d.cts +8 -0
  327. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.d.ts +8 -0
  328. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.js +9 -0
  329. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.cjs +18 -0
  330. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.d.cts +8 -0
  331. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.d.ts +8 -0
  332. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.js +9 -0
  333. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.cjs +18 -0
  334. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.d.cts +8 -0
  335. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.d.ts +8 -0
  336. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.js +9 -0
  337. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.cjs +18 -0
  338. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.d.cts +8 -0
  339. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.d.ts +8 -0
  340. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.js +9 -0
  341. package/build/exceptions/crypto/symmetric/NotSupportCipherException.cjs +18 -0
  342. package/build/exceptions/crypto/symmetric/NotSupportCipherException.d.cts +8 -0
  343. package/build/exceptions/crypto/symmetric/NotSupportCipherException.d.ts +8 -0
  344. package/build/exceptions/crypto/symmetric/NotSupportCipherException.js +9 -0
  345. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.cjs +18 -0
  346. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.d.cts +8 -0
  347. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.d.ts +8 -0
  348. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.js +9 -0
  349. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.cjs +18 -0
  350. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.d.cts +8 -0
  351. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.d.ts +8 -0
  352. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.js +9 -0
  353. package/build/exceptions/validation/InvalidMethodAcceptException.cjs +18 -0
  354. package/build/exceptions/validation/InvalidMethodAcceptException.d.cts +8 -0
  355. package/build/exceptions/validation/InvalidMethodAcceptException.d.ts +8 -0
  356. package/build/exceptions/validation/InvalidMethodAcceptException.js +9 -0
  357. package/build/exceptions/validation/InvalidMethodReturnException.cjs +18 -0
  358. package/build/exceptions/validation/InvalidMethodReturnException.d.cts +8 -0
  359. package/build/exceptions/validation/InvalidMethodReturnException.d.ts +8 -0
  360. package/build/exceptions/validation/InvalidMethodReturnException.js +9 -0
  361. package/build/exceptions/validation/InvalidValueException.cjs +18 -0
  362. package/build/exceptions/validation/InvalidValueException.d.cts +8 -0
  363. package/build/exceptions/validation/InvalidValueException.d.ts +8 -0
  364. package/build/exceptions/validation/InvalidValueException.js +9 -0
  365. package/build/index.d-e5279fea.d.ts +872 -0
  366. package/build/interfaces/IConstructor.cjs +7 -0
  367. package/build/interfaces/IConstructor.d.cts +6 -0
  368. package/build/interfaces/IConstructor.d.ts +6 -0
  369. package/build/interfaces/IConstructor.js +4 -0
  370. package/build/interfaces/ILogger.cjs +7 -0
  371. package/build/interfaces/ILogger.d.cts +22 -0
  372. package/build/interfaces/ILogger.d.ts +22 -0
  373. package/build/interfaces/ILogger.js +4 -0
  374. package/build/interfaces/IPatRun.cjs +7 -0
  375. package/build/interfaces/IPatRun.d.cts +12 -0
  376. package/build/interfaces/IPatRun.d.ts +12 -0
  377. package/build/interfaces/IPatRun.js +4 -0
  378. package/build/interfaces/ISortArrayOptions.cjs +7 -0
  379. package/build/interfaces/ISortArrayOptions.d.cts +12 -0
  380. package/build/interfaces/ISortArrayOptions.d.ts +12 -0
  381. package/build/interfaces/ISortArrayOptions.js +4 -0
  382. package/build/interfaces/ISortObjectOptions.cjs +7 -0
  383. package/build/interfaces/ISortObjectOptions.d.cts +6 -0
  384. package/build/interfaces/ISortObjectOptions.d.ts +6 -0
  385. package/build/interfaces/ISortObjectOptions.js +4 -0
  386. package/build/lib/Application.cjs +50 -0
  387. package/build/lib/Application.d.cts +20 -0
  388. package/build/lib/Application.d.ts +20 -0
  389. package/build/lib/Application.js +41 -0
  390. package/build/lib/base/BaseObject.cjs +50 -0
  391. package/build/lib/base/BaseObject.d.cts +112 -0
  392. package/build/lib/base/BaseObject.d.ts +112 -0
  393. package/build/lib/base/BaseObject.js +41 -0
  394. package/build/lib/base/Component.cjs +50 -0
  395. package/build/lib/base/Component.d.cts +116 -0
  396. package/build/lib/base/Component.d.ts +116 -0
  397. package/build/lib/base/Component.js +41 -0
  398. package/build/lib/base/Container.cjs +50 -0
  399. package/build/lib/base/Container.d.cts +20 -0
  400. package/build/lib/base/Container.d.ts +20 -0
  401. package/build/lib/base/Container.js +41 -0
  402. package/build/lib/base/Controller.cjs +50 -0
  403. package/build/lib/base/Controller.d.cts +20 -0
  404. package/build/lib/base/Controller.d.ts +20 -0
  405. package/build/lib/base/Controller.js +41 -0
  406. package/build/lib/base/DTO.cjs +23 -0
  407. package/build/lib/base/DTO.d.cts +59 -0
  408. package/build/lib/base/DTO.d.ts +59 -0
  409. package/build/lib/base/DTO.js +14 -0
  410. package/build/lib/base/Model.cjs +51 -0
  411. package/build/lib/base/Model.d.cts +30 -0
  412. package/build/lib/base/Model.d.ts +30 -0
  413. package/build/lib/base/Model.js +42 -0
  414. package/build/lib/base/Module.cjs +50 -0
  415. package/build/lib/base/Module.d.cts +20 -0
  416. package/build/lib/base/Module.d.ts +20 -0
  417. package/build/lib/base/Module.js +41 -0
  418. package/build/lib/base/abstracts/AsymmetricEncryption.cjs +27 -0
  419. package/build/lib/base/abstracts/AsymmetricEncryption.d.cts +172 -0
  420. package/build/lib/base/abstracts/AsymmetricEncryption.d.ts +172 -0
  421. package/build/lib/base/abstracts/AsymmetricEncryption.js +18 -0
  422. package/build/lib/base/abstracts/Exception.cjs +17 -0
  423. package/build/lib/base/abstracts/Exception.d.cts +23 -0
  424. package/build/lib/base/abstracts/Exception.d.ts +23 -0
  425. package/build/lib/base/abstracts/Exception.js +8 -0
  426. package/build/lib/base/abstracts/Interval.cjs +51 -0
  427. package/build/lib/base/abstracts/Interval.d.cts +76 -0
  428. package/build/lib/base/abstracts/Interval.d.ts +76 -0
  429. package/build/lib/base/abstracts/Interval.js +42 -0
  430. package/build/lib/base/abstracts/SymmetricEncryption.cjs +23 -0
  431. package/build/lib/base/abstracts/SymmetricEncryption.d.cts +149 -0
  432. package/build/lib/base/abstracts/SymmetricEncryption.d.ts +149 -0
  433. package/build/lib/base/abstracts/SymmetricEncryption.js +14 -0
  434. package/build/lib/base/async-constructor/Append.cjs +14 -0
  435. package/build/lib/base/async-constructor/Append.d.cts +5 -0
  436. package/build/lib/base/async-constructor/Append.d.ts +5 -0
  437. package/build/lib/base/async-constructor/Append.js +5 -0
  438. package/build/lib/base/async-constructor/AsyncConstructor.cjs +15 -0
  439. package/build/lib/base/async-constructor/AsyncConstructor.d.cts +7 -0
  440. package/build/lib/base/async-constructor/AsyncConstructor.d.ts +7 -0
  441. package/build/lib/base/async-constructor/AsyncConstructor.js +6 -0
  442. package/build/lib/components/Formatter.cjs +50 -0
  443. package/build/lib/components/Formatter.d.cts +203 -0
  444. package/build/lib/components/Formatter.d.ts +203 -0
  445. package/build/lib/components/Formatter.js +41 -0
  446. package/build/lib/components/Logger.cjs +50 -0
  447. package/build/lib/components/Logger.d.cts +61 -0
  448. package/build/lib/components/Logger.d.ts +61 -0
  449. package/build/lib/components/Logger.js +41 -0
  450. package/build/lib/crypto/RSA.cjs +28 -0
  451. package/build/lib/crypto/RSA.d.cts +61 -0
  452. package/build/lib/crypto/RSA.d.ts +61 -0
  453. package/build/lib/crypto/RSA.js +19 -0
  454. package/build/lib/crypto/SM2.cjs +28 -0
  455. package/build/lib/crypto/SM2.d.cts +47 -0
  456. package/build/lib/crypto/SM2.d.ts +47 -0
  457. package/build/lib/crypto/SM2.js +19 -0
  458. package/build/lib/crypto/aes/AES128.cjs +25 -0
  459. package/build/lib/crypto/aes/AES128.d.cts +14 -0
  460. package/build/lib/crypto/aes/AES128.d.ts +14 -0
  461. package/build/lib/crypto/aes/AES128.js +16 -0
  462. package/build/lib/crypto/aes/AES192.cjs +25 -0
  463. package/build/lib/crypto/aes/AES192.d.cts +14 -0
  464. package/build/lib/crypto/aes/AES192.d.ts +14 -0
  465. package/build/lib/crypto/aes/AES192.js +16 -0
  466. package/build/lib/crypto/aes/AES256.cjs +25 -0
  467. package/build/lib/crypto/aes/AES256.d.cts +14 -0
  468. package/build/lib/crypto/aes/AES256.d.ts +14 -0
  469. package/build/lib/crypto/aes/AES256.js +16 -0
  470. package/build/lib/crypto/aria/ARIA128.cjs +24 -0
  471. package/build/lib/crypto/aria/ARIA128.d.cts +13 -0
  472. package/build/lib/crypto/aria/ARIA128.d.ts +13 -0
  473. package/build/lib/crypto/aria/ARIA128.js +15 -0
  474. package/build/lib/crypto/aria/ARIA192.cjs +24 -0
  475. package/build/lib/crypto/aria/ARIA192.d.cts +13 -0
  476. package/build/lib/crypto/aria/ARIA192.d.ts +13 -0
  477. package/build/lib/crypto/aria/ARIA192.js +15 -0
  478. package/build/lib/crypto/aria/ARIA256.cjs +24 -0
  479. package/build/lib/crypto/aria/ARIA256.d.cts +13 -0
  480. package/build/lib/crypto/aria/ARIA256.d.ts +13 -0
  481. package/build/lib/crypto/aria/ARIA256.js +15 -0
  482. package/build/lib/crypto/camellia/CAMELLIA128.cjs +24 -0
  483. package/build/lib/crypto/camellia/CAMELLIA128.d.cts +13 -0
  484. package/build/lib/crypto/camellia/CAMELLIA128.d.ts +13 -0
  485. package/build/lib/crypto/camellia/CAMELLIA128.js +15 -0
  486. package/build/lib/crypto/camellia/CAMELLIA192.cjs +24 -0
  487. package/build/lib/crypto/camellia/CAMELLIA192.d.cts +13 -0
  488. package/build/lib/crypto/camellia/CAMELLIA192.d.ts +13 -0
  489. package/build/lib/crypto/camellia/CAMELLIA192.js +15 -0
  490. package/build/lib/crypto/camellia/CAMELLIA256.cjs +24 -0
  491. package/build/lib/crypto/camellia/CAMELLIA256.d.cts +13 -0
  492. package/build/lib/crypto/camellia/CAMELLIA256.d.ts +13 -0
  493. package/build/lib/crypto/camellia/CAMELLIA256.js +15 -0
  494. package/build/lib/crypto/des/DES.cjs +25 -0
  495. package/build/lib/crypto/des/DES.d.cts +14 -0
  496. package/build/lib/crypto/des/DES.d.ts +14 -0
  497. package/build/lib/crypto/des/DES.js +16 -0
  498. package/build/lib/crypto/des/TripleDES.cjs +25 -0
  499. package/build/lib/crypto/des/TripleDES.d.cts +14 -0
  500. package/build/lib/crypto/des/TripleDES.d.ts +14 -0
  501. package/build/lib/crypto/des/TripleDES.js +16 -0
  502. package/build/lib/ioc/DependencyInjectionContainer.cjs +29 -0
  503. package/build/lib/ioc/DependencyInjectionContainer.d.cts +4 -0
  504. package/build/lib/ioc/DependencyInjectionContainer.d.ts +4 -0
  505. package/build/lib/ioc/DependencyInjectionContainer.js +20 -0
  506. package/build/lib/ioc/Errors.cjs +27 -0
  507. package/build/lib/ioc/Errors.d.cts +53 -0
  508. package/build/lib/ioc/Errors.d.ts +53 -0
  509. package/build/lib/ioc/Errors.js +10 -0
  510. package/build/lib/ioc/FunctionTokenizer.cjs +18 -0
  511. package/build/lib/ioc/FunctionTokenizer.d.cts +33 -0
  512. package/build/lib/ioc/FunctionTokenizer.d.ts +33 -0
  513. package/build/lib/ioc/FunctionTokenizer.js +5 -0
  514. package/build/lib/ioc/InjectionMode.cjs +14 -0
  515. package/build/lib/ioc/InjectionMode.d.cts +12 -0
  516. package/build/lib/ioc/InjectionMode.d.ts +12 -0
  517. package/build/lib/ioc/InjectionMode.js +5 -0
  518. package/build/lib/ioc/Lifetime.cjs +14 -0
  519. package/build/lib/ioc/Lifetime.d.cts +12 -0
  520. package/build/lib/ioc/Lifetime.d.ts +12 -0
  521. package/build/lib/ioc/Lifetime.js +5 -0
  522. package/build/lib/ioc/ListModules.cjs +17 -0
  523. package/build/lib/ioc/ListModules.d.cts +4 -0
  524. package/build/lib/ioc/ListModules.d.ts +4 -0
  525. package/build/lib/ioc/ListModules.js +8 -0
  526. package/build/lib/ioc/LoadModuleNative.cjs +14 -0
  527. package/build/lib/ioc/LoadModuleNative.d.cts +9 -0
  528. package/build/lib/ioc/LoadModuleNative.d.ts +9 -0
  529. package/build/lib/ioc/LoadModuleNative.js +5 -0
  530. package/build/lib/ioc/LoadModules.cjs +26 -0
  531. package/build/lib/ioc/LoadModules.d.cts +4 -0
  532. package/build/lib/ioc/LoadModules.d.ts +4 -0
  533. package/build/lib/ioc/LoadModules.js +17 -0
  534. package/build/lib/ioc/ParamParser.cjs +15 -0
  535. package/build/lib/ioc/ParamParser.d.cts +25 -0
  536. package/build/lib/ioc/ParamParser.d.ts +25 -0
  537. package/build/lib/ioc/ParamParser.js +6 -0
  538. package/build/lib/ioc/Resolvers.cjs +49 -0
  539. package/build/lib/ioc/Resolvers.d.cts +4 -0
  540. package/build/lib/ioc/Resolvers.d.ts +4 -0
  541. package/build/lib/ioc/Resolvers.js +16 -0
  542. package/build/lib/ioc/Utils.cjs +35 -0
  543. package/build/lib/ioc/Utils.d.cts +38 -0
  544. package/build/lib/ioc/Utils.d.ts +38 -0
  545. package/build/lib/ioc/Utils.js +6 -0
  546. package/build/options/ApplicationOptions.cjs +50 -0
  547. package/build/options/ApplicationOptions.d.cts +20 -0
  548. package/build/options/ApplicationOptions.d.ts +20 -0
  549. package/build/options/ApplicationOptions.js +41 -0
  550. package/build/options/LoadComponentOptions.cjs +50 -0
  551. package/build/options/LoadComponentOptions.d.cts +22 -0
  552. package/build/options/LoadComponentOptions.d.ts +22 -0
  553. package/build/options/LoadComponentOptions.js +41 -0
  554. package/build/options/LoadEntryClassOptions.cjs +50 -0
  555. package/build/options/LoadEntryClassOptions.d.cts +16 -0
  556. package/build/options/LoadEntryClassOptions.d.ts +16 -0
  557. package/build/options/LoadEntryClassOptions.js +41 -0
  558. package/build/options/LoadEntryCommonOptions.cjs +27 -0
  559. package/build/options/LoadEntryCommonOptions.d.cts +13 -0
  560. package/build/options/LoadEntryCommonOptions.d.ts +13 -0
  561. package/build/options/LoadEntryCommonOptions.js +18 -0
  562. package/build/options/LoadModuleOptions.cjs +50 -0
  563. package/build/options/LoadModuleOptions.d.cts +20 -0
  564. package/build/options/LoadModuleOptions.d.ts +20 -0
  565. package/build/options/LoadModuleOptions.js +41 -0
  566. package/build/options/ModuleOptions.cjs +50 -0
  567. package/build/options/ModuleOptions.d.cts +20 -0
  568. package/build/options/ModuleOptions.d.ts +20 -0
  569. package/build/options/ModuleOptions.js +41 -0
  570. package/build/types/AsyncFunction.cjs +7 -0
  571. package/build/types/AsyncFunction.d.cts +3 -0
  572. package/build/types/AsyncFunction.d.ts +3 -0
  573. package/build/types/AsyncFunction.js +4 -0
  574. package/build/types/ControllerActionMapItem.cjs +7 -0
  575. package/build/types/ControllerActionMapItem.d.cts +20 -0
  576. package/build/types/ControllerActionMapItem.d.ts +20 -0
  577. package/build/types/ControllerActionMapItem.js +4 -0
  578. package/build/types/InjectionProperties.cjs +7 -0
  579. package/build/types/InjectionProperties.d.cts +3 -0
  580. package/build/types/InjectionProperties.d.ts +3 -0
  581. package/build/types/InjectionProperties.js +4 -0
  582. package/build/types/TimeInput.cjs +7 -0
  583. package/build/types/TimeInput.d.cts +5 -0
  584. package/build/types/TimeInput.d.ts +5 -0
  585. package/build/types/TimeInput.js +4 -0
  586. package/build/types/TimeObject.cjs +7 -0
  587. package/build/types/TimeObject.d.cts +11 -0
  588. package/build/types/TimeObject.d.ts +11 -0
  589. package/build/types/TimeObject.js +4 -0
  590. package/build/types/UnitOfTime.cjs +7 -0
  591. package/build/types/UnitOfTime.d.cts +14 -0
  592. package/build/types/UnitOfTime.d.ts +14 -0
  593. package/build/types/UnitOfTime.js +4 -0
  594. package/package.json +145 -0
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ var chunkA7F6LCRA_cjs = require('./chunk-A7F6LCRA.cjs');
4
+ var chunkGGY7LCMQ_cjs = require('./chunk-GGY7LCMQ.cjs');
5
+
6
+ // src/lib/ioc/Errors.ts
7
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
8
+ var _ExtendableError = class _ExtendableError extends chunkA7F6LCRA_cjs.DependencyInjectionException {
9
+ /**
10
+ * 可扩展错误类构造函数
11
+ * @param message
12
+ */
13
+ constructor(message) {
14
+ super(message);
15
+ Object.defineProperty(this, "message", {
16
+ enumerable: false,
17
+ value: message
18
+ });
19
+ Object.defineProperty(this, "name", {
20
+ enumerable: false,
21
+ value: this.constructor.name
22
+ });
23
+ if ("captureStackTrace" in Error) {
24
+ Error.captureStackTrace(this, this.constructor);
25
+ } else {
26
+ Object.defineProperty(this, "stack", {
27
+ enumerable: false,
28
+ value: Error(message).stack,
29
+ writable: true,
30
+ configurable: true
31
+ });
32
+ }
33
+ }
34
+ };
35
+ chunkGGY7LCMQ_cjs.__name(_ExtendableError, "ExtendableError");
36
+ var ExtendableError = _ExtendableError;
37
+ var _DependencyInjectionTypeError = class _DependencyInjectionTypeError extends ExtendableError {
38
+ /**
39
+ * 构造函数,接受函数名称、期望的类型和给定的类型,以生成错误
40
+ * @param funcDescription
41
+ * @param paramName
42
+ * @param expectedType
43
+ * @param givenType
44
+ */
45
+ constructor(funcDescription, paramName, expectedType, givenType) {
46
+ super(
47
+ `${funcDescription}: expected ${paramName} to be ${expectedType}, but got ${givenType}.`
48
+ );
49
+ }
50
+ /**
51
+ * 断言给定的条件,否则抛出错误
52
+ * @param condition
53
+ * @param funcDescription
54
+ * @param paramName
55
+ * @param expectedType
56
+ * @param givenType
57
+ */
58
+ static assert(condition, funcDescription, paramName, expectedType, givenType) {
59
+ if (!condition) {
60
+ throw new _DependencyInjectionTypeError(
61
+ funcDescription,
62
+ paramName,
63
+ expectedType,
64
+ givenType
65
+ );
66
+ }
67
+ return condition;
68
+ }
69
+ };
70
+ chunkGGY7LCMQ_cjs.__name(_DependencyInjectionTypeError, "DependencyInjectionTypeError");
71
+ var DependencyInjectionTypeError = _DependencyInjectionTypeError;
72
+ var _DependencyInjectionResolutionError = class _DependencyInjectionResolutionError extends ExtendableError {
73
+ /**
74
+ * 构造函数,接受注册的模块和未解析的标记,以创建一条消息
75
+ * @param name
76
+ * @param resolutionStack
77
+ * @param message
78
+ */
79
+ constructor(name, resolutionStack, message) {
80
+ if (typeof name === "symbol")
81
+ name = name.toString();
82
+ const purifiedName = name.split("_$$").reverse()[0];
83
+ resolutionStack = resolutionStack.map((val) => typeof val === "symbol" ? val.toString() : val);
84
+ resolutionStack.push(purifiedName);
85
+ const resolutionPathString = resolutionStack.join(" -> ");
86
+ let msg = `Could not resolve '${purifiedName}'.`;
87
+ if (message)
88
+ msg = `${msg} ${message}`;
89
+ msg = `${msg} Resolution path: ${resolutionPathString}`;
90
+ super(msg);
91
+ }
92
+ };
93
+ chunkGGY7LCMQ_cjs.__name(_DependencyInjectionResolutionError, "DependencyInjectionResolutionError");
94
+ var DependencyInjectionResolutionError = _DependencyInjectionResolutionError;
95
+
96
+ exports.DependencyInjectionResolutionError = DependencyInjectionResolutionError;
97
+ exports.DependencyInjectionTypeError = DependencyInjectionTypeError;
98
+ exports.ExtendableError = ExtendableError;
99
+ //# sourceMappingURL=out.js.map
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvaW9jL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQVFPLElBQU0sbUJBQU4sTUFBTSx5QkFBd0IsNkJBQTZCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUs5RCxZQUFZLFNBQWlCO0FBQ3pCLFVBQU0sT0FBTztBQUNiLFdBQU8sZUFBZSxNQUFNLFdBQVc7QUFBQSxNQUNuQyxZQUFZO0FBQUEsTUFDWixPQUFPO0FBQUEsSUFDWCxDQUFDO0FBQ0QsV0FBTyxlQUFlLE1BQU0sUUFBUTtBQUFBLE1BQ2hDLFlBQVk7QUFBQSxNQUNaLE9BQU8sS0FBSyxZQUFZO0FBQUEsSUFDNUIsQ0FBQztBQUNELFFBQUksdUJBQXVCLE9BQU87QUFDOUIsWUFBTSxrQkFBa0IsTUFBTSxLQUFLLFdBQVc7QUFBQSxJQUNsRCxPQUFPO0FBQ0gsYUFBTyxlQUFlLE1BQU0sU0FBUztBQUFBLFFBQ2pDLFlBQVk7QUFBQSxRQUNaLE9BQVEsTUFBMkIsT0FBTyxFQUFFO0FBQUEsUUFDNUMsVUFBVTtBQUFBLFFBQ1YsY0FBYztBQUFBLE1BQ2xCLENBQUM7QUFBQSxJQUNMO0FBQUEsRUFDSjtBQUNKO0FBMUJrRTtBQUEzRCxJQUFNLGtCQUFOO0FBK0JBLElBQU0sZ0NBQU4sTUFBTSxzQ0FBcUMsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE5RCxZQUNJLGlCQUNBLFdBQ0EsY0FDQSxXQUNGO0FBQ0U7QUFBQSxNQUNJLEdBQUcsZUFBZSxjQUFjLFNBQVMsVUFBVSxZQUFZLGFBQWEsU0FBUztBQUFBLElBQ3pGO0FBQUEsRUFDSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVBLE9BQU8sT0FDSCxXQUNBLGlCQUNBLFdBQ0EsY0FDQSxXQUNGO0FBQ0UsUUFBSSxDQUFDLFdBQVc7QUFDWixZQUFNLElBQUk7QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFDQSxXQUFPO0FBQUEsRUFDWDtBQUNKO0FBNUNrRTtBQUEzRCxJQUFNLCtCQUFOO0FBaURBLElBQU0sc0NBQU4sTUFBTSw0Q0FBMkMsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPcEUsWUFDSSxNQUNBLGlCQUNBLFNBQ0Y7QUFDRSxRQUFJLE9BQU8sU0FBUztBQUFVLGFBQVEsS0FBYSxTQUFTO0FBQzVELFVBQU0sZUFBd0IsS0FBYSxNQUFNLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNuRSxzQkFBa0IsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLE9BQU8sUUFBUSxXQUFZLElBQVksU0FBUyxJQUFJLEdBQUc7QUFDdEcsb0JBQWdCLEtBQUssWUFBWTtBQUNqQyxVQUFNLHVCQUErQixnQkFBZ0IsS0FBSyxNQUFNO0FBQ2hFLFFBQUksTUFBYyxzQkFBc0IsWUFBWTtBQUNwRCxRQUFJO0FBQVMsWUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPO0FBQ3BDLFVBQU0sR0FBRyxHQUFHLHFCQUFxQixvQkFBb0I7QUFDckQsVUFBTSxHQUFHO0FBQUEsRUFDYjtBQUNKO0FBdEJ3RTtBQUFqRSxJQUFNLHFDQUFOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJ1xuaW1wb3J0IHtSZXNvbHV0aW9uU3RhY2t9IGZyb20gJy4vRGVwZW5kZW5jeUluamVjdGlvbkNvbnRhaW5lci5qcydcbmltcG9ydCB7RGVwZW5kZW5jeUluamVjdGlvbkV4Y2VwdGlvbn0gZnJvbSAnLi4vLi4vZXhjZXB0aW9ucy9EZXBlbmRlbmN5SW5qZWN0aW9uRXhjZXB0aW9uLmpzJ1xuaW1wb3J0IHtFT0x9IGZyb20gJ29zJ1xuXG4vKipcbiAqIOWPr+aJqeWxlemUmeivr+exu1xuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5kYWJsZUVycm9yIGV4dGVuZHMgRGVwZW5kZW5jeUluamVjdGlvbkV4Y2VwdGlvbiB7XG4gICAgLyoqXG4gICAgICog5Y+v5omp5bGV6ZSZ6K+v57G75p6E6YCg5Ye95pWwXG4gICAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSlcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdtZXNzYWdlJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogbWVzc2FnZVxuICAgICAgICB9KVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ25hbWUnLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKCdjYXB0dXJlU3RhY2tUcmFjZScgaW4gRXJyb3IpIHtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0YWNrJywge1xuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAoRXJyb3IgYXMgRXJyb3JDb25zdHJ1Y3RvcikobWVzc2FnZSkuc3RhY2ssXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIOaKm+WHuueahOmUmeivr++8jOeUqOS6juaMh+ekuuexu+Wei+S4jeWMuemFjVxuICovXG5leHBvcnQgY2xhc3MgRGVwZW5kZW5jeUluamVjdGlvblR5cGVFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7XG4gICAgLyoqXG4gICAgICog5p6E6YCg5Ye95pWw77yM5o6l5Y+X5Ye95pWw5ZCN56ew44CB5pyf5pyb55qE57G75Z6L5ZKM57uZ5a6a55qE57G75Z6L77yM5Lul55Sf5oiQ6ZSZ6K+vXG4gICAgICogQHBhcmFtIGZ1bmNEZXNjcmlwdGlvblxuICAgICAqIEBwYXJhbSBwYXJhbU5hbWVcbiAgICAgKiBAcGFyYW0gZXhwZWN0ZWRUeXBlXG4gICAgICogQHBhcmFtIGdpdmVuVHlwZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmdW5jRGVzY3JpcHRpb246IHN0cmluZyxcbiAgICAgICAgcGFyYW1OYW1lOiBzdHJpbmcsXG4gICAgICAgIGV4cGVjdGVkVHlwZTogc3RyaW5nLFxuICAgICAgICBnaXZlblR5cGU6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIGAke2Z1bmNEZXNjcmlwdGlvbn06IGV4cGVjdGVkICR7cGFyYW1OYW1lfSB0byBiZSAke2V4cGVjdGVkVHlwZX0sIGJ1dCBnb3QgJHtnaXZlblR5cGV9LmBcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaWreiogOe7meWumueahOadoeS7tu+8jOWQpuWImeaKm+WHuumUmeivr1xuICAgICAqIEBwYXJhbSBjb25kaXRpb25cbiAgICAgKiBAcGFyYW0gZnVuY0Rlc2NyaXB0aW9uXG4gICAgICogQHBhcmFtIHBhcmFtTmFtZVxuICAgICAqIEBwYXJhbSBleHBlY3RlZFR5cGVcbiAgICAgKiBAcGFyYW0gZ2l2ZW5UeXBlXG4gICAgICovXG4gICAgc3RhdGljIGFzc2VydDxUPihcbiAgICAgICAgY29uZGl0aW9uOiBULFxuICAgICAgICBmdW5jRGVzY3JpcHRpb246IHN0cmluZyxcbiAgICAgICAgcGFyYW1OYW1lOiBzdHJpbmcsXG4gICAgICAgIGV4cGVjdGVkVHlwZTogc3RyaW5nLFxuICAgICAgICBnaXZlblR5cGU6IGFueVxuICAgICkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IERlcGVuZGVuY3lJbmplY3Rpb25UeXBlRXJyb3IoXG4gICAgICAgICAgICAgICAgZnVuY0Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZFR5cGUsXG4gICAgICAgICAgICAgICAgZ2l2ZW5UeXBlXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvblxuICAgIH1cbn1cblxuLyoqXG4gKiDkuIDkuKrlj4vlpb3nmoTplJnor6/nsbvvvIzku6Xkvr/miJHku6zlj6/ku6Xov5vooYwgaW5zdGFuY2VvZiDmo4Dmn6VcbiAqL1xuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3lJbmplY3Rpb25SZXNvbHV0aW9uRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIOaehOmAoOWHveaVsO+8jOaOpeWPl+azqOWGjOeahOaooeWdl+WSjOacquino+aekOeahOagh+iusO+8jOS7peWIm+W7uuS4gOadoea2iOaBr1xuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHBhcmFtIHJlc29sdXRpb25TdGFja1xuICAgICAqIEBwYXJhbSBtZXNzYWdlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG5hbWU6IHN0cmluZyB8IHN5bWJvbCxcbiAgICAgICAgcmVzb2x1dGlvblN0YWNrOiBSZXNvbHV0aW9uU3RhY2ssXG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnc3ltYm9sJykgbmFtZSA9IChuYW1lIGFzIGFueSkudG9TdHJpbmcoKVxuICAgICAgICBjb25zdCBwdXJpZmllZE5hbWU6IHN0cmluZyA9IChuYW1lIGFzIGFueSkuc3BsaXQoJ18kJCcpLnJldmVyc2UoKVswXVxuICAgICAgICByZXNvbHV0aW9uU3RhY2sgPSByZXNvbHV0aW9uU3RhY2subWFwKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzeW1ib2wnID8gKHZhbCBhcyBhbnkpLnRvU3RyaW5nKCkgOiB2YWwpXG4gICAgICAgIHJlc29sdXRpb25TdGFjay5wdXNoKHB1cmlmaWVkTmFtZSlcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvblBhdGhTdHJpbmc6IHN0cmluZyA9IHJlc29sdXRpb25TdGFjay5qb2luKCcgLT4gJylcbiAgICAgICAgbGV0IG1zZzogc3RyaW5nID0gYENvdWxkIG5vdCByZXNvbHZlICcke3B1cmlmaWVkTmFtZX0nLmBcbiAgICAgICAgaWYgKG1lc3NhZ2UpIG1zZyA9IGAke21zZ30gJHttZXNzYWdlfWBcbiAgICAgICAgbXNnID0gYCR7bXNnfSBSZXNvbHV0aW9uIHBhdGg6ICR7cmVzb2x1dGlvblBhdGhTdHJpbmd9YFxuICAgICAgICBzdXBlcihtc2cpXG4gICAgfVxufVxuIl19
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
12
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
13
+ }) : x)(function(x) {
14
+ if (typeof require !== "undefined")
15
+ return require.apply(this, arguments);
16
+ throw Error('Dynamic require of "' + x + '" is not supported');
17
+ });
18
+ var __esm = (fn, res) => function __init() {
19
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
20
+ };
21
+ var __commonJS = (cb, mod) => function __require2() {
22
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
23
+ };
24
+ var __export = (target, all) => {
25
+ for (var name in all)
26
+ __defProp(target, name, { get: all[name], enumerable: true });
27
+ };
28
+ var __copyProps = (to, from, except, desc) => {
29
+ if (from && typeof from === "object" || typeof from === "function") {
30
+ for (let key of __getOwnPropNames(from))
31
+ if (!__hasOwnProp.call(to, key) && key !== except)
32
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
33
+ }
34
+ return to;
35
+ };
36
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
37
+ // If the importer is in node compatibility mode or this is not an ESM
38
+ // file that has been converted to a CommonJS file using a Babel-
39
+ // compatible transform (i.e. "__esModule" has not been set), then set
40
+ // "default" to the CommonJS "module.exports" for node compatibility.
41
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
42
+ mod
43
+ ));
44
+ var __decorateClass = (decorators, target, key, kind) => {
45
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
46
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
47
+ if (decorator = decorators[i])
48
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
49
+ if (kind && result)
50
+ __defProp(target, key, result);
51
+ return result;
52
+ };
53
+ var __publicField = (obj, key, value) => {
54
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
55
+ return value;
56
+ };
57
+
58
+ // node_modules/tsup/assets/cjs_shims.js
59
+ var init_cjs_shims = __esm({
60
+ "node_modules/tsup/assets/cjs_shims.js"() {
61
+ }
62
+ });
63
+
64
+ exports.__commonJS = __commonJS;
65
+ exports.__decorateClass = __decorateClass;
66
+ exports.__export = __export;
67
+ exports.__name = __name;
68
+ exports.__publicField = __publicField;
69
+ exports.__require = __require;
70
+ exports.__toESM = __toESM;
71
+ exports.init_cjs_shims = init_cjs_shims;
72
+ //# sourceMappingURL=out.js.map
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy90c3VwL2Fzc2V0cy9janNfc2hpbXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU2hpbSBnbG9iYWxzIGluIGNqcyBidW5kbGVcbi8vIFRoZXJlJ3MgYSB3ZWlyZCBidWcgdGhhdCBlc2J1aWxkIHdpbGwgYWx3YXlzIGluamVjdCBpbXBvcnRNZXRhVXJsXG4vLyBpZiB3ZSBleHBvcnQgaXQgYXMgYGNvbnN0IGltcG9ydE1ldGFVcmwgPSAuLi4gX19maWxlbmFtZSAuLi5gXG4vLyBCdXQgdXNpbmcgYSBmdW5jdGlvbiB3aWxsIG5vdCBjYXVzZSB0aGlzIGlzc3VlXG5cbmNvbnN0IGdldEltcG9ydE1ldGFVcmwgPSAoKSA9PlxuICB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnXG4gICAgPyBuZXcgVVJMKCdmaWxlOicgKyBfX2ZpbGVuYW1lKS5ocmVmXG4gICAgOiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYykgfHxcbiAgICAgIG5ldyBVUkwoJ21haW4uanMnLCBkb2N1bWVudC5iYXNlVVJJKS5ocmVmXG5cbmV4cG9ydCBjb25zdCBpbXBvcnRNZXRhVXJsID0gLyogQF9fUFVSRV9fICovIGdldEltcG9ydE1ldGFVcmwoKVxuIl19
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var chunkGGY7LCMQ_cjs = require('./chunk-GGY7LCMQ.cjs');
4
+
5
+ // src/Core.ts
6
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnXG5cbi8v5Li756iL5bqPXG5leHBvcnQge0FwcGxpY2F0aW9ufSBmcm9tICcuL2xpYi9BcHBsaWNhdGlvbi5qcydcblxuLy/lj4LmlbDpgInpoblcbmV4cG9ydCB7QXBwbGljYXRpb25PcHRpb25zfSBmcm9tICcuL29wdGlvbnMvQXBwbGljYXRpb25PcHRpb25zLmpzJ1xuZXhwb3J0IHtMb2FkRW50cnlDb21tb25PcHRpb25zfSBmcm9tICcuL29wdGlvbnMvTG9hZEVudHJ5Q29tbW9uT3B0aW9ucy5qcydcbmV4cG9ydCB7TG9hZEVudHJ5Q2xhc3NPcHRpb25zfSBmcm9tICcuL29wdGlvbnMvTG9hZEVudHJ5Q2xhc3NPcHRpb25zLmpzJ1xuZXhwb3J0IHtMb2FkTW9kdWxlT3B0aW9uc30gZnJvbSAnLi9vcHRpb25zL0xvYWRNb2R1bGVPcHRpb25zLmpzJ1xuZXhwb3J0IHtMb2FkQ29tcG9uZW50T3B0aW9uc30gZnJvbSAnLi9vcHRpb25zL0xvYWRDb21wb25lbnRPcHRpb25zLmpzJ1xuZXhwb3J0IHtNb2R1bGVPcHRpb25zfSBmcm9tICcuL29wdGlvbnMvTW9kdWxlT3B0aW9ucy5qcydcblxuLy/mjqXlj6NcbmV4cG9ydCB7SUNvbnN0cnVjdG9yfSBmcm9tICcuL2ludGVyZmFjZXMvSUNvbnN0cnVjdG9yLmpzJ1xuZXhwb3J0IHtJU29ydE9iamVjdE9wdGlvbnN9IGZyb20gJy4vaW50ZXJmYWNlcy9JU29ydE9iamVjdE9wdGlvbnMuanMnXG5leHBvcnQge0lTb3J0QXJyYXlPcHRpb25zfSBmcm9tICcuL2ludGVyZmFjZXMvSVNvcnRBcnJheU9wdGlvbnMuanMnXG5leHBvcnQge0lQYXRSdW59IGZyb20gJy4vaW50ZXJmYWNlcy9JUGF0UnVuLmpzJ1xuZXhwb3J0IHtJTG9nZ2VyfSBmcm9tICcuL2ludGVyZmFjZXMvSUxvZ2dlci5qcydcblxuLy/nsbvlnotcbmV4cG9ydCB7QXN5bmNGdW5jdGlvbn0gZnJvbSAnLi90eXBlcy9Bc3luY0Z1bmN0aW9uLmpzJ1xuZXhwb3J0IHtJbmplY3Rpb25Qcm9wZXJ0aWVzfSBmcm9tICcuL3R5cGVzL0luamVjdGlvblByb3BlcnRpZXMuanMnXG5leHBvcnQge0NvbnRyb2xsZXJBY3Rpb25NYXBJdGVtfSBmcm9tICcuL3R5cGVzL0NvbnRyb2xsZXJBY3Rpb25NYXBJdGVtLmpzJ1xuZXhwb3J0IHtUaW1lSW5wdXR9IGZyb20gJy4vdHlwZXMvVGltZUlucHV0LmpzJ1xuZXhwb3J0IHtUaW1lT2JqZWN0fSBmcm9tICcuL3R5cGVzL1RpbWVPYmplY3QuanMnXG5leHBvcnQge1VuaXRPZlRpbWV9IGZyb20gJy4vdHlwZXMvVW5pdE9mVGltZS5qcydcblxuLy/ln7rnoYDnsbtcbmV4cG9ydCB7RFRPfSBmcm9tICcuL2xpYi9iYXNlL0RUTy5qcydcbmV4cG9ydCB7QmFzZU9iamVjdH0gZnJvbSAnLi9saWIvYmFzZS9CYXNlT2JqZWN0LmpzJ1xuZXhwb3J0IHtDb21wb25lbnR9IGZyb20gJy4vbGliL2Jhc2UvQ29tcG9uZW50LmpzJ1xuZXhwb3J0IHtDb250cm9sbGVyfSBmcm9tICcuL2xpYi9iYXNlL0NvbnRyb2xsZXIuanMnXG5leHBvcnQge01vZGVsfSBmcm9tICcuL2xpYi9iYXNlL01vZGVsLmpzJ1xuZXhwb3J0IHtNb2R1bGV9IGZyb20gJy4vbGliL2Jhc2UvTW9kdWxlLmpzJ1xuZXhwb3J0IHtDb250YWluZXJ9IGZyb20gJy4vbGliL2Jhc2UvQ29udGFpbmVyLmpzJ1xuZXhwb3J0IHtFeGNlcHRpb259IGZyb20gJy4vbGliL2Jhc2UvYWJzdHJhY3RzL0V4Y2VwdGlvbi5qcydcbmV4cG9ydCB7SW50ZXJ2YWx9IGZyb20gJy4vbGliL2Jhc2UvYWJzdHJhY3RzL0ludGVydmFsLmpzJ1xuZXhwb3J0IHtTeW1tZXRyaWNFbmNyeXB0aW9ufSBmcm9tICcuL2xpYi9iYXNlL2Fic3RyYWN0cy9TeW1tZXRyaWNFbmNyeXB0aW9uLmpzJ1xuZXhwb3J0IHtBc3ltbWV0cmljRW5jcnlwdGlvbn0gZnJvbSAnLi9saWIvYmFzZS9hYnN0cmFjdHMvQXN5bW1ldHJpY0VuY3J5cHRpb24uanMnXG5cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { init_esm_shims } from './chunk-5NK7E2HA.js';
2
+
3
+ // src/interfaces/IConstructor.ts
4
+ init_esm_shims();
5
+ //# sourceMappingURL=out.js.map
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlcmZhY2VzL0lDb25zdHJ1Y3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJQ29uc3RydWN0b3I8VD4ge1xuICAgIG5ldyguLi5hcmdzOiBhbnlbXSk6IFRcblxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnlcbn1cbiJdfQ==
@@ -0,0 +1,202 @@
1
+ 'use strict';
2
+
3
+ var chunkMNDBRDT2_cjs = require('./chunk-MNDBRDT2.cjs');
4
+ var chunkGGY7LCMQ_cjs = require('./chunk-GGY7LCMQ.cjs');
5
+
6
+ // src/lib/base/abstracts/Exception.ts
7
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
8
+
9
+ // node_modules/pupa/index.js
10
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
11
+
12
+ // node_modules/escape-goat/index.js
13
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
14
+ var _htmlEscape = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name((string) => string.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), "_htmlEscape");
15
+ function htmlEscape(strings, ...values) {
16
+ if (typeof strings === "string") {
17
+ return _htmlEscape(strings);
18
+ }
19
+ let output = strings[0];
20
+ for (const [index, value] of values.entries()) {
21
+ output = output + _htmlEscape(String(value)) + strings[index + 1];
22
+ }
23
+ return output;
24
+ }
25
+ chunkGGY7LCMQ_cjs.__name(htmlEscape, "htmlEscape");
26
+
27
+ // node_modules/pupa/index.js
28
+ var _MissingValueError = class _MissingValueError extends Error {
29
+ constructor(key) {
30
+ super(`Missing a value for ${key ? `the placeholder: ${key}` : "a placeholder"}`, key);
31
+ this.name = "MissingValueError";
32
+ this.key = key;
33
+ }
34
+ };
35
+ chunkGGY7LCMQ_cjs.__name(_MissingValueError, "MissingValueError");
36
+ var MissingValueError = _MissingValueError;
37
+ function pupa(template, data, { ignoreMissing = false, transform = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(({ value }) => value, "transform") } = {}) {
38
+ if (typeof template !== "string") {
39
+ throw new TypeError(`Expected a \`string\` in the first argument, got \`${typeof template}\``);
40
+ }
41
+ if (typeof data !== "object") {
42
+ throw new TypeError(`Expected an \`object\` or \`Array\` in the second argument, got \`${typeof data}\``);
43
+ }
44
+ const replace2 = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name((placeholder, key) => {
45
+ let value = data;
46
+ for (const property of key.split(".")) {
47
+ value = value ? value[property] : void 0;
48
+ }
49
+ const transformedValue = transform({ value, key });
50
+ if (transformedValue === void 0) {
51
+ if (ignoreMissing) {
52
+ return placeholder;
53
+ }
54
+ throw new MissingValueError(key);
55
+ }
56
+ return String(transformedValue);
57
+ }, "replace");
58
+ const composeHtmlEscape = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name((replacer) => (...args) => htmlEscape(replacer(...args)), "composeHtmlEscape");
59
+ const doubleBraceRegex = /{{(\d+|[a-z$_][\w\-$]*?(?:\.[\w\-$]*?)*?)}}/gi;
60
+ if (doubleBraceRegex.test(template)) {
61
+ template = template.replace(doubleBraceRegex, composeHtmlEscape(replace2));
62
+ }
63
+ const braceRegex = /{(\d+|[a-z$_][\w\-$]*?(?:\.[\w\-$]*?)*?)}/gi;
64
+ return template.replace(braceRegex, replace2);
65
+ }
66
+ chunkGGY7LCMQ_cjs.__name(pupa, "pupa");
67
+
68
+ // node_modules/camel-case/dist.es2015/index.js
69
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
70
+
71
+ // node_modules/tslib/tslib.es6.mjs
72
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
73
+ var __assign = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function() {
74
+ __assign = Object.assign || /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function __assign2(t) {
75
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
76
+ s = arguments[i];
77
+ for (var p in s)
78
+ if (Object.prototype.hasOwnProperty.call(s, p))
79
+ t[p] = s[p];
80
+ }
81
+ return t;
82
+ }, "__assign");
83
+ return __assign.apply(this, arguments);
84
+ }, "__assign");
85
+
86
+ // node_modules/pascal-case/dist.es2015/index.js
87
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
88
+
89
+ // node_modules/no-case/dist.es2015/index.js
90
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
91
+
92
+ // node_modules/lower-case/dist.es2015/index.js
93
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
94
+ function lowerCase(str) {
95
+ return str.toLowerCase();
96
+ }
97
+ chunkGGY7LCMQ_cjs.__name(lowerCase, "lowerCase");
98
+
99
+ // node_modules/no-case/dist.es2015/index.js
100
+ var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
101
+ var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
102
+ function noCase(input, options) {
103
+ if (options === void 0) {
104
+ options = {};
105
+ }
106
+ var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
107
+ var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
108
+ var start = 0;
109
+ var end = result.length;
110
+ while (result.charAt(start) === "\0")
111
+ start++;
112
+ while (result.charAt(end - 1) === "\0")
113
+ end--;
114
+ return result.slice(start, end).split("\0").map(transform).join(delimiter);
115
+ }
116
+ chunkGGY7LCMQ_cjs.__name(noCase, "noCase");
117
+ function replace(input, re, value) {
118
+ if (re instanceof RegExp)
119
+ return input.replace(re, value);
120
+ return re.reduce(function(input2, re2) {
121
+ return input2.replace(re2, value);
122
+ }, input);
123
+ }
124
+ chunkGGY7LCMQ_cjs.__name(replace, "replace");
125
+
126
+ // node_modules/pascal-case/dist.es2015/index.js
127
+ function pascalCaseTransform(input, index) {
128
+ var firstChar = input.charAt(0);
129
+ var lowerChars = input.substr(1).toLowerCase();
130
+ if (index > 0 && firstChar >= "0" && firstChar <= "9") {
131
+ return "_" + firstChar + lowerChars;
132
+ }
133
+ return "" + firstChar.toUpperCase() + lowerChars;
134
+ }
135
+ chunkGGY7LCMQ_cjs.__name(pascalCaseTransform, "pascalCaseTransform");
136
+ function pascalCase(input, options) {
137
+ if (options === void 0) {
138
+ options = {};
139
+ }
140
+ return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options));
141
+ }
142
+ chunkGGY7LCMQ_cjs.__name(pascalCase, "pascalCase");
143
+
144
+ // node_modules/camel-case/dist.es2015/index.js
145
+ function camelCaseTransform(input, index) {
146
+ if (index === 0)
147
+ return input.toLowerCase();
148
+ return pascalCaseTransform(input, index);
149
+ }
150
+ chunkGGY7LCMQ_cjs.__name(camelCaseTransform, "camelCaseTransform");
151
+ function camelCase(input, options) {
152
+ if (options === void 0) {
153
+ options = {};
154
+ }
155
+ return pascalCase(input, __assign({ transform: camelCaseTransform }, options));
156
+ }
157
+ chunkGGY7LCMQ_cjs.__name(camelCase, "camelCase");
158
+
159
+ // src/lib/base/abstracts/Exception.ts
160
+ var _Exception = class _Exception extends Error {
161
+ appId = process.env.appId ? process.env.appId : "Unknown";
162
+ appName = process.env.appName ? process.env.appName : "Unknown";
163
+ errMsg;
164
+ err;
165
+ constructor(a, b) {
166
+ super();
167
+ if (b) {
168
+ const template = a;
169
+ const data = b;
170
+ try {
171
+ this.message = pupa(template, data, { ignoreMissing: true });
172
+ } catch (e) {
173
+ this.message = "Unknown (broken exception template or data)";
174
+ }
175
+ } else if (a) {
176
+ if (typeof a === "string") {
177
+ this.message = a;
178
+ } else {
179
+ this.message = chunkMNDBRDT2_cjs.As(a).message;
180
+ }
181
+ } else {
182
+ const message = camelCase(this.name, { delimiter: " " }).toLowerCase();
183
+ this.message = `${message.charAt(0).toUpperCase()}${message.slice(1)}`;
184
+ }
185
+ this.errMsg = this.message;
186
+ this.err = this.name;
187
+ }
188
+ /**
189
+ * 获取错误名称
190
+ * @returns {string}
191
+ */
192
+ get name() {
193
+ return this.constructor.name;
194
+ }
195
+ };
196
+ chunkGGY7LCMQ_cjs.__name(_Exception, "Exception");
197
+ var Exception = _Exception;
198
+
199
+ exports.Exception = Exception;
200
+ exports.camelCase = camelCase;
201
+ //# sourceMappingURL=out.js.map
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvYmFzZS9hYnN0cmFjdHMvRXhjZXB0aW9uLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3B1cGEvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvZXNjYXBlLWdvYXQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uL25vZGVfbW9kdWxlcy9uby1jYXNlL3NyYy9pbmRleC50cyIsIi4uL25vZGVfbW9kdWxlcy9sb3dlci1jYXNlL3NyYy9pbmRleC50cyIsIi4uL25vZGVfbW9kdWxlcy9wYXNjYWwtY2FzZS9zcmMvaW5kZXgudHMiLCIuLi9ub2RlX21vZHVsZXMvY2FtZWwtY2FzZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOlsicmVwbGFjZSIsIl9fYXNzaWduIiwiaW5wdXQiLCJyZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7OztBQ0FBOzs7QUNBQTtBQUFBLElBQU0sY0FBYyxtQ0FBVSxPQUM1QixRQUFRLE1BQU0sT0FBTyxFQUNyQixRQUFRLE1BQU0sUUFBUSxFQUN0QixRQUFRLE1BQU0sT0FBTyxFQUNyQixRQUFRLE1BQU0sTUFBTSxFQUNwQixRQUFRLE1BQU0sTUFBTSxHQUxGO0FBY2IsU0FBUyxXQUFXLFlBQVksUUFBUTtBQUM5QyxNQUFJLE9BQU8sWUFBWSxVQUFVO0FBQ2hDLFdBQU8sWUFBWSxPQUFPO0FBQUEsRUFDM0I7QUFFQSxNQUFJLFNBQVMsUUFBUSxDQUFDO0FBQ3RCLGFBQVcsQ0FBQyxPQUFPLEtBQUssS0FBSyxPQUFPLFFBQVEsR0FBRztBQUM5QyxhQUFTLFNBQVMsWUFBWSxPQUFPLEtBQUssQ0FBQyxJQUFJLFFBQVEsUUFBUSxDQUFDO0FBQUEsRUFDakU7QUFFQSxTQUFPO0FBQ1I7QUFYZ0I7OztBRFpULElBQU0scUJBQU4sTUFBTSwyQkFBMEIsTUFBTTtBQUFBLEVBQzVDLFlBQVksS0FBSztBQUNoQixVQUFNLHVCQUF1QixNQUFNLG9CQUFvQixHQUFHLEtBQUssZUFBZSxJQUFJLEdBQUc7QUFDckYsU0FBSyxPQUFPO0FBQ1osU0FBSyxNQUFNO0FBQUEsRUFDWjtBQUNEO0FBTjZDO0FBQXRDLElBQU0sb0JBQU47QUFRUSxTQUFSLEtBQXNCLFVBQVUsTUFBTSxFQUFDLGdCQUFnQixPQUFPLFlBQVksd0JBQUMsRUFBQyxNQUFLLE1BQU0sT0FBYixhQUFrQixJQUFJLENBQUMsR0FBRztBQUMxRyxNQUFJLE9BQU8sYUFBYSxVQUFVO0FBQ2pDLFVBQU0sSUFBSSxVQUFVLHNEQUFzRCxPQUFPLFFBQVEsSUFBSTtBQUFBLEVBQzlGO0FBRUEsTUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM3QixVQUFNLElBQUksVUFBVSxxRUFBcUUsT0FBTyxJQUFJLElBQUk7QUFBQSxFQUN6RztBQUVBLFFBQU1BLFdBQVUsd0JBQUMsYUFBYSxRQUFRO0FBQ3JDLFFBQUksUUFBUTtBQUNaLGVBQVcsWUFBWSxJQUFJLE1BQU0sR0FBRyxHQUFHO0FBQ3RDLGNBQVEsUUFBUSxNQUFNLFFBQVEsSUFBSTtBQUFBLElBQ25DO0FBRUEsVUFBTSxtQkFBbUIsVUFBVSxFQUFDLE9BQU8sSUFBRyxDQUFDO0FBQy9DLFFBQUkscUJBQXFCLFFBQVc7QUFDbkMsVUFBSSxlQUFlO0FBQ2xCLGVBQU87QUFBQSxNQUNSO0FBRUEsWUFBTSxJQUFJLGtCQUFrQixHQUFHO0FBQUEsSUFDaEM7QUFFQSxXQUFPLE9BQU8sZ0JBQWdCO0FBQUEsRUFDL0IsR0FoQmdCO0FBa0JoQixRQUFNLG9CQUFvQixxQ0FBWSxJQUFJLFNBQVMsV0FBVyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQXJEO0FBRzFCLFFBQU0sbUJBQW1CO0FBRXpCLE1BQUksaUJBQWlCLEtBQUssUUFBUSxHQUFHO0FBQ3BDLGVBQVcsU0FBUyxRQUFRLGtCQUFrQixrQkFBa0JBLFFBQU8sQ0FBQztBQUFBLEVBQ3pFO0FBRUEsUUFBTSxhQUFhO0FBRW5CLFNBQU8sU0FBUyxRQUFRLFlBQVlBLFFBQU87QUFDNUM7QUF2Q3dCOzs7Ozs7QUVWeEI7QUErQk8sSUFBSSxXQUFXLGtDQUFXO0FBQy9CLGFBQVcsT0FBTyxVQUFVLGdDQUFTQyxVQUFTLEdBQUc7QUFDN0MsYUFBUyxHQUFHLElBQUksR0FBRyxJQUFJLFVBQVUsUUFBUSxJQUFJLEdBQUcsS0FBSztBQUNqRCxVQUFJLFVBQVUsQ0FBQztBQUNmLGVBQVMsS0FBSztBQUFHLFlBQUksT0FBTyxVQUFVLGVBQWUsS0FBSyxHQUFHLENBQUM7QUFBRyxZQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFBQSxJQUMvRTtBQUNBLFdBQU87QUFBQSxFQUNYLEdBTjRCO0FBTzVCLFNBQU8sU0FBUyxNQUFNLE1BQU0sU0FBUztBQUN2QyxHQVRzQjs7Ozs7O0FDL0J0Qjs7O0FDUUE7QUE2Q00sU0FBVSxVQUFVLEtBQVc7QUFDbkMsU0FBTyxJQUFJLFlBQVc7QUFDeEI7QUFGZ0I7OztBRDNDaEIsSUFBTSx1QkFBdUIsQ0FBQyxzQkFBc0Isc0JBQXNCO0FBRzFFLElBQU0sdUJBQXVCO0FBS3ZCLFNBQVUsT0FBTyxPQUFlLFNBQXFCO0FBQXJCLE1BQUEsWUFBQSxRQUFBO0FBQUEsY0FBQSxDQUFBO0VBQXFCO0FBRXZELE1BQUEsS0FJRSxRQUFPLGFBSlQsY0FBVyxPQUFBLFNBQUcsdUJBQW9CLElBQ2xDLEtBR0UsUUFBTyxhQUhULGNBQVcsT0FBQSxTQUFHLHVCQUFvQixJQUNsQyxLQUVFLFFBQU8sV0FGVCxZQUFTLE9BQUEsU0FBRyxZQUFTLElBQ3JCLEtBQ0UsUUFBTyxXQURULFlBQVMsT0FBQSxTQUFHLE1BQUc7QUFHakIsTUFBSSxTQUFTLFFBQ1gsUUFBUSxPQUFPLGFBQWEsUUFBUSxHQUNwQyxhQUNBLElBQUk7QUFFTixNQUFJLFFBQVE7QUFDWixNQUFJLE1BQU0sT0FBTztBQUdqQixTQUFPLE9BQU8sT0FBTyxLQUFLLE1BQU07QUFBTTtBQUN0QyxTQUFPLE9BQU8sT0FBTyxNQUFNLENBQUMsTUFBTTtBQUFNO0FBR3hDLFNBQU8sT0FBTyxNQUFNLE9BQU8sR0FBRyxFQUFFLE1BQU0sSUFBSSxFQUFFLElBQUksU0FBUyxFQUFFLEtBQUssU0FBUztBQUMzRTtBQXRCZ0I7QUEyQmhCLFNBQVMsUUFBUSxPQUFlLElBQXVCLE9BQWE7QUFDbEUsTUFBSSxjQUFjO0FBQVEsV0FBTyxNQUFNLFFBQVEsSUFBSSxLQUFLO0FBQ3hELFNBQU8sR0FBRyxPQUFPLFNBQUNDLFFBQU9DLEtBQUU7QUFBSyxXQUFBRCxPQUFNLFFBQVFDLEtBQUksS0FBSztFQUF2QixHQUEwQixLQUFLO0FBQ2pFO0FBSFM7OztBRXpDSCxTQUFVLG9CQUFvQixPQUFlLE9BQWE7QUFDOUQsTUFBTSxZQUFZLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE1BQU0sYUFBYSxNQUFNLE9BQU8sQ0FBQyxFQUFFLFlBQVc7QUFDOUMsTUFBSSxRQUFRLEtBQUssYUFBYSxPQUFPLGFBQWEsS0FBSztBQUNyRCxXQUFPLE1BQUksWUFBWTs7QUFFekIsU0FBTyxLQUFHLFVBQVUsWUFBVyxJQUFLO0FBQ3RDO0FBUGdCO0FBYVYsU0FBVSxXQUFXLE9BQWUsU0FBcUI7QUFBckIsTUFBQSxZQUFBLFFBQUE7QUFBQSxjQUFBLENBQUE7RUFBcUI7QUFDN0QsU0FBTyxPQUFPLE9BQUssU0FBQSxFQUNqQixXQUFXLElBQ1gsV0FBVyxvQkFBbUIsR0FDM0IsT0FBTyxDQUFBO0FBRWQ7QUFOZ0I7OztBQ1JWLFNBQVUsbUJBQW1CLE9BQWUsT0FBYTtBQUM3RCxNQUFJLFVBQVU7QUFBRyxXQUFPLE1BQU0sWUFBVztBQUN6QyxTQUFPLG9CQUFvQixPQUFPLEtBQUs7QUFDekM7QUFIZ0I7QUFVVixTQUFVLFVBQVUsT0FBZSxTQUFxQjtBQUFyQixNQUFBLFlBQUEsUUFBQTtBQUFBLGNBQUEsQ0FBQTtFQUFxQjtBQUM1RCxTQUFPLFdBQVcsT0FBSyxTQUFBLEVBQ3JCLFdBQVcsbUJBQWtCLEdBQzFCLE9BQU8sQ0FBQTtBQUVkO0FBTGdCOzs7QVBYVCxJQUFlLGFBQWYsTUFBZSxtQkFBa0IsTUFBTTtBQUFBLEVBRTFCLFFBQWdCLFFBQVEsSUFBSSxRQUFRLFFBQVEsSUFBSSxRQUFRO0FBQUEsRUFDeEQsVUFBa0IsUUFBUSxJQUFJLFVBQVUsUUFBUSxJQUFJLFVBQVU7QUFBQSxFQUM5RDtBQUFBLEVBQ0E7QUFBQSxFQU1oQixZQUFZLEdBQW9CLEdBQXFDO0FBQ2pFLFVBQU07QUFDTixRQUFJLEdBQUc7QUFDSCxZQUFNLFdBQW1CO0FBQ3pCLFlBQU0sT0FBd0M7QUFFOUMsVUFBSTtBQUNBLGFBQUssVUFBVSxLQUFLLFVBQVUsTUFBTSxFQUFDLGVBQWUsS0FBSSxDQUFDO0FBQUEsTUFDN0QsU0FBUyxHQUFHO0FBQ1IsYUFBSyxVQUFVO0FBQUEsTUFDbkI7QUFBQSxJQUNKLFdBQVcsR0FBRztBQUNWLFVBQUksT0FBUSxNQUFPLFVBQVU7QUFFekIsYUFBSyxVQUFVO0FBQUEsTUFDbkIsT0FBTztBQUVILGFBQUssVUFBVSxHQUFVLENBQUMsRUFBRTtBQUFBLE1BQ2hDO0FBQUEsSUFDSixPQUFPO0FBRUgsWUFBTSxVQUFrQixVQUFVLEtBQUssTUFBTSxFQUFDLFdBQVcsSUFBRyxDQUFDLEVBQUUsWUFBWTtBQUMzRSxXQUFLLFVBQVUsR0FBRyxRQUFRLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLFFBQVEsTUFBTSxDQUFDLENBQUM7QUFBQSxJQUN4RTtBQUNBLFNBQUssU0FBUyxLQUFLO0FBQ25CLFNBQUssTUFBTSxLQUFLO0FBQUEsRUFDcEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsSUFBVyxPQUFlO0FBQ3RCLFdBQU8sS0FBSyxZQUFZO0FBQUEsRUFDNUI7QUFDSjtBQTlDOEM7QUFBdkMsSUFBZSxZQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJ1xuaW1wb3J0IHB1cGEgZnJvbSAncHVwYSdcbmltcG9ydCB7Y2FtZWxDYXNlfSBmcm9tICdjYW1lbC1jYXNlJ1xuaW1wb3J0IHtBc30gZnJvbSAnLi4vLi4vLi4vVXRpbGl0aWVzLmpzJ1xuXG4vKipcbiAqIOW8guW4uOaKveixoeexu1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICAgIHB1YmxpYyBhYnN0cmFjdCBlcnJubzogbnVtYmVyIHwgc3RyaW5nXG4gICAgcHVibGljIHJlYWRvbmx5IGFwcElkOiBzdHJpbmcgPSBwcm9jZXNzLmVudi5hcHBJZCA/IHByb2Nlc3MuZW52LmFwcElkIDogJ1Vua25vd24nXG4gICAgcHVibGljIHJlYWRvbmx5IGFwcE5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LmFwcE5hbWUgPyBwcm9jZXNzLmVudi5hcHBOYW1lIDogJ1Vua25vd24nXG4gICAgcHVibGljIHJlYWRvbmx5IGVyck1zZzogc3RyaW5nXG4gICAgcHVibGljIHJlYWRvbmx5IGVycjogc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZTogc3RyaW5nLCBkYXRhOiB1bmtub3duW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+KVxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZylcbiAgICBjb25zdHJ1Y3RvcihlcnJvcjogRXJyb3IpXG4gICAgY29uc3RydWN0b3IoKVxuICAgIGNvbnN0cnVjdG9yKGE/OiBzdHJpbmcgfCBFcnJvciwgYj86IHVua25vd25bXSB8IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICBpZiAoYikge1xuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGU6IHN0cmluZyA9IGEgYXMgc3RyaW5nXG4gICAgICAgICAgICBjb25zdCBkYXRhOiB1bmtub3duW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gYlxuICAgICAgICAgICAgLy9FcnJvciB0ZW1wbGF0ZVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBwdXBhKHRlbXBsYXRlLCBkYXRhLCB7aWdub3JlTWlzc2luZzogdHJ1ZX0pXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gJ1Vua25vd24gKGJyb2tlbiBleGNlcHRpb24gdGVtcGxhdGUgb3IgZGF0YSknXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAoYSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgLy9FcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gYSBhcyBzdHJpbmdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy9FcnJvciBpbnN0YW5jZVxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IEFzPEVycm9yPihhKS5tZXNzYWdlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL0VtcHR5IG1lc3NhZ2VcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U6IHN0cmluZyA9IGNhbWVsQ2FzZSh0aGlzLm5hbWUsIHtkZWxpbWl0ZXI6ICcgJ30pLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGAke21lc3NhZ2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHttZXNzYWdlLnNsaWNlKDEpfWBcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVyck1zZyA9IHRoaXMubWVzc2FnZVxuICAgICAgICB0aGlzLmVyciA9IHRoaXMubmFtZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPlumUmeivr+WQjeensFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWVcbiAgICB9XG59XG4iLCJpbXBvcnQge2h0bWxFc2NhcGV9IGZyb20gJ2VzY2FwZS1nb2F0JztcblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdWYWx1ZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRjb25zdHJ1Y3RvcihrZXkpIHtcblx0XHRzdXBlcihgTWlzc2luZyBhIHZhbHVlIGZvciAke2tleSA/IGB0aGUgcGxhY2Vob2xkZXI6ICR7a2V5fWAgOiAnYSBwbGFjZWhvbGRlcid9YCwga2V5KTtcblx0XHR0aGlzLm5hbWUgPSAnTWlzc2luZ1ZhbHVlRXJyb3InO1xuXHRcdHRoaXMua2V5ID0ga2V5O1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1cGEodGVtcGxhdGUsIGRhdGEsIHtpZ25vcmVNaXNzaW5nID0gZmFsc2UsIHRyYW5zZm9ybSA9ICh7dmFsdWV9KSA9PiB2YWx1ZX0gPSB7fSkge1xuXHRpZiAodHlwZW9mIHRlbXBsYXRlICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGEgXFxgc3RyaW5nXFxgIGluIHRoZSBmaXJzdCBhcmd1bWVudCwgZ290IFxcYCR7dHlwZW9mIHRlbXBsYXRlfVxcYGApO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGFuIFxcYG9iamVjdFxcYCBvciBcXGBBcnJheVxcYCBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50LCBnb3QgXFxgJHt0eXBlb2YgZGF0YX1cXGBgKTtcblx0fVxuXG5cdGNvbnN0IHJlcGxhY2UgPSAocGxhY2Vob2xkZXIsIGtleSkgPT4ge1xuXHRcdGxldCB2YWx1ZSA9IGRhdGE7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBvZiBrZXkuc3BsaXQoJy4nKSkge1xuXHRcdFx0dmFsdWUgPSB2YWx1ZSA/IHZhbHVlW3Byb3BlcnR5XSA6IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdHJhbnNmb3JtKHt2YWx1ZSwga2V5fSk7XG5cdFx0aWYgKHRyYW5zZm9ybWVkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKGlnbm9yZU1pc3NpbmcpIHtcblx0XHRcdFx0cmV0dXJuIHBsYWNlaG9sZGVyO1xuXHRcdFx0fVxuXG5cdFx0XHR0aHJvdyBuZXcgTWlzc2luZ1ZhbHVlRXJyb3Ioa2V5KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gU3RyaW5nKHRyYW5zZm9ybWVkVmFsdWUpO1xuXHR9O1xuXG5cdGNvbnN0IGNvbXBvc2VIdG1sRXNjYXBlID0gcmVwbGFjZXIgPT4gKC4uLmFyZ3MpID0+IGh0bWxFc2NhcGUocmVwbGFjZXIoLi4uYXJncykpO1xuXG5cdC8vIFRoZSByZWdleCB0cmllcyB0byBtYXRjaCBlaXRoZXIgYSBudW1iZXIgaW5zaWRlIGB7eyB9fWAgb3IgYSB2YWxpZCBKUyBpZGVudGlmaWVyIG9yIGtleSBwYXRoLlxuXHRjb25zdCBkb3VibGVCcmFjZVJlZ2V4ID0gL3t7KFxcZCt8W2EteiRfXVtcXHdcXC0kXSo/KD86XFwuW1xcd1xcLSRdKj8pKj8pfX0vZ2k7XG5cblx0aWYgKGRvdWJsZUJyYWNlUmVnZXgudGVzdCh0ZW1wbGF0ZSkpIHtcblx0XHR0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoZG91YmxlQnJhY2VSZWdleCwgY29tcG9zZUh0bWxFc2NhcGUocmVwbGFjZSkpO1xuXHR9XG5cblx0Y29uc3QgYnJhY2VSZWdleCA9IC97KFxcZCt8W2EteiRfXVtcXHdcXC0kXSo/KD86XFwuW1xcd1xcLSRdKj8pKj8pfS9naTtcblxuXHRyZXR1cm4gdGVtcGxhdGUucmVwbGFjZShicmFjZVJlZ2V4LCByZXBsYWNlKTtcbn1cbiIsImNvbnN0IF9odG1sRXNjYXBlID0gc3RyaW5nID0+IHN0cmluZ1xuXHQucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuXHQucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG5cdC5yZXBsYWNlKC8nL2csICcmIzM5OycpXG5cdC5yZXBsYWNlKC88L2csICcmbHQ7Jylcblx0LnJlcGxhY2UoLz4vZywgJyZndDsnKTtcblxuY29uc3QgX2h0bWxVbmVzY2FwZSA9IGh0bWxTdHJpbmcgPT4gaHRtbFN0cmluZ1xuXHQucmVwbGFjZSgvJmd0Oy9nLCAnPicpXG5cdC5yZXBsYWNlKC8mbHQ7L2csICc8Jylcblx0LnJlcGxhY2UoLyYjMD8zOTsvZywgJ1xcJycpXG5cdC5yZXBsYWNlKC8mcXVvdDsvZywgJ1wiJylcblx0LnJlcGxhY2UoLyZhbXA7L2csICcmJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBodG1sRXNjYXBlKHN0cmluZ3MsIC4uLnZhbHVlcykge1xuXHRpZiAodHlwZW9mIHN0cmluZ3MgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIF9odG1sRXNjYXBlKHN0cmluZ3MpO1xuXHR9XG5cblx0bGV0IG91dHB1dCA9IHN0cmluZ3NbMF07XG5cdGZvciAoY29uc3QgW2luZGV4LCB2YWx1ZV0gb2YgdmFsdWVzLmVudHJpZXMoKSkge1xuXHRcdG91dHB1dCA9IG91dHB1dCArIF9odG1sRXNjYXBlKFN0cmluZyh2YWx1ZSkpICsgc3RyaW5nc1tpbmRleCArIDFdO1xuXHR9XG5cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0bWxVbmVzY2FwZShzdHJpbmdzLCAuLi52YWx1ZXMpIHtcblx0aWYgKHR5cGVvZiBzdHJpbmdzID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBfaHRtbFVuZXNjYXBlKHN0cmluZ3MpO1xuXHR9XG5cblx0bGV0IG91dHB1dCA9IHN0cmluZ3NbMF07XG5cdGZvciAoY29uc3QgW2luZGV4LCB2YWx1ZV0gb2YgdmFsdWVzLmVudHJpZXMoKSkge1xuXHRcdG91dHB1dCA9IG91dHB1dCArIF9odG1sVW5lc2NhcGUoU3RyaW5nKHZhbHVlKSkgKyBzdHJpbmdzW2luZGV4ICsgMV07XG5cdH1cblxuXHRyZXR1cm4gb3V0cHV0O1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXG5cblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Jcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xuICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XG4gICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgfVxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgdFtwXSA9IHNbcF07XG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgfVxuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XG4gIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxuICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xuICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcbiAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XG4gIHZhciBfLCBkb25lID0gZmFsc2U7XG4gIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHt9O1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XG4gICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcbiAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcbiAgICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XG4gIGRvbmUgPSB0cnVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcbiAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XG4gIH1cbiAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIG9bazJdID0gbVtrXTtcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcbiAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xuICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghbSkgcmV0dXJuIG87XG4gIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICB0cnkge1xuICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gIGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICB9XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xuICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcbiAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgcltrXSA9IGFbal07XG4gIHJldHVybiByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xuICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xuICB2YXIgaSwgcDtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgcmV0dXJuIGNvb2tlZDtcbn07XG5cbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xufSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gIG9bXCJkZWZhdWx0XCJdID0gdjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XG4gIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xuICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcbiAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4oc3RhdGUsIHJlY2VpdmVyKSB7XG4gIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xuICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDApIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkLlwiKTtcbiAgICB2YXIgZGlzcG9zZTtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXTtcbiAgICB9XG4gICAgaWYgKGRpc3Bvc2UgPT09IHZvaWQgMCkge1xuICAgICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgd2hpbGUgKGVudi5zdGFjay5sZW5ndGgpIHtcbiAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xuICAgICAgICBpZiAocmVjLmFzeW5jKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICBmYWlsKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxufTtcbiIsImltcG9ydCB7IGxvd2VyQ2FzZSB9IGZyb20gXCJsb3dlci1jYXNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHNwbGl0UmVnZXhwPzogUmVnRXhwIHwgUmVnRXhwW107XG4gIHN0cmlwUmVnZXhwPzogUmVnRXhwIHwgUmVnRXhwW107XG4gIGRlbGltaXRlcj86IHN0cmluZztcbiAgdHJhbnNmb3JtPzogKHBhcnQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgcGFydHM6IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG59XG5cbi8vIFN1cHBvcnQgY2FtZWwgY2FzZSAoXCJjYW1lbENhc2VcIiAtPiBcImNhbWVsIENhc2VcIiBhbmQgXCJDQU1FTENhc2VcIiAtPiBcIkNBTUVMIENhc2VcIikuXG5jb25zdCBERUZBVUxUX1NQTElUX1JFR0VYUCA9IFsvKFthLXowLTldKShbQS1aXSkvZywgLyhbQS1aXSkoW0EtWl1bYS16XSkvZ107XG5cbi8vIFJlbW92ZSBhbGwgbm9uLXdvcmQgY2hhcmFjdGVycy5cbmNvbnN0IERFRkFVTFRfU1RSSVBfUkVHRVhQID0gL1teQS1aMC05XSsvZ2k7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBzdHJpbmcgaW50byBzb21ldGhpbmcgb3RoZXIgbGlicmFyaWVzIGNhbiBtYW5pcHVsYXRlIGVhc2llci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vQ2FzZShpbnB1dDogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHNwbGl0UmVnZXhwID0gREVGQVVMVF9TUExJVF9SRUdFWFAsXG4gICAgc3RyaXBSZWdleHAgPSBERUZBVUxUX1NUUklQX1JFR0VYUCxcbiAgICB0cmFuc2Zvcm0gPSBsb3dlckNhc2UsXG4gICAgZGVsaW1pdGVyID0gXCIgXCIsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGxldCByZXN1bHQgPSByZXBsYWNlKFxuICAgIHJlcGxhY2UoaW5wdXQsIHNwbGl0UmVnZXhwLCBcIiQxXFwwJDJcIiksXG4gICAgc3RyaXBSZWdleHAsXG4gICAgXCJcXDBcIlxuICApO1xuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgZW5kID0gcmVzdWx0Lmxlbmd0aDtcblxuICAvLyBUcmltIHRoZSBkZWxpbWl0ZXIgZnJvbSBhcm91bmQgdGhlIG91dHB1dCBzdHJpbmcuXG4gIHdoaWxlIChyZXN1bHQuY2hhckF0KHN0YXJ0KSA9PT0gXCJcXDBcIikgc3RhcnQrKztcbiAgd2hpbGUgKHJlc3VsdC5jaGFyQXQoZW5kIC0gMSkgPT09IFwiXFwwXCIpIGVuZC0tO1xuXG4gIC8vIFRyYW5zZm9ybSBlYWNoIHRva2VuIGluZGVwZW5kZW50bHkuXG4gIHJldHVybiByZXN1bHQuc2xpY2Uoc3RhcnQsIGVuZCkuc3BsaXQoXCJcXDBcIikubWFwKHRyYW5zZm9ybSkuam9pbihkZWxpbWl0ZXIpO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgYHJlYCBpbiB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIHJlcGxhY2VtZW50IHZhbHVlLlxuICovXG5mdW5jdGlvbiByZXBsYWNlKGlucHV0OiBzdHJpbmcsIHJlOiBSZWdFeHAgfCBSZWdFeHBbXSwgdmFsdWU6IHN0cmluZykge1xuICBpZiAocmUgaW5zdGFuY2VvZiBSZWdFeHApIHJldHVybiBpbnB1dC5yZXBsYWNlKHJlLCB2YWx1ZSk7XG4gIHJldHVybiByZS5yZWR1Y2UoKGlucHV0LCByZSkgPT4gaW5wdXQucmVwbGFjZShyZSwgdmFsdWUpLCBpbnB1dCk7XG59XG4iLCIvKipcbiAqIExvY2FsZSBjaGFyYWN0ZXIgbWFwcGluZyBydWxlcy5cbiAqL1xuaW50ZXJmYWNlIExvY2FsZSB7XG4gIHJlZ2V4cDogUmVnRXhwO1xuICBtYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogU291cmNlOiBmdHA6Ly9mdHAudW5pY29kZS5vcmcvUHVibGljL1VDRC9sYXRlc3QvdWNkL1NwZWNpYWxDYXNpbmcudHh0XG4gKi9cbmNvbnN0IFNVUFBPUlRFRF9MT0NBTEU6IFJlY29yZDxzdHJpbmcsIExvY2FsZT4gPSB7XG4gIHRyOiB7XG4gICAgcmVnZXhwOiAvXFx1MDEzMHxcXHUwMDQ5fFxcdTAwNDlcXHUwMzA3L2csXG4gICAgbWFwOiB7XG4gICAgICDEsDogXCJcXHUwMDY5XCIsXG4gICAgICBJOiBcIlxcdTAxMzFcIixcbiAgICAgIEnMhzogXCJcXHUwMDY5XCIsXG4gICAgfSxcbiAgfSxcbiAgYXo6IHtcbiAgICByZWdleHA6IC9cXHUwMTMwL2csXG4gICAgbWFwOiB7XG4gICAgICDEsDogXCJcXHUwMDY5XCIsXG4gICAgICBJOiBcIlxcdTAxMzFcIixcbiAgICAgIEnMhzogXCJcXHUwMDY5XCIsXG4gICAgfSxcbiAgfSxcbiAgbHQ6IHtcbiAgICByZWdleHA6IC9cXHUwMDQ5fFxcdTAwNEF8XFx1MDEyRXxcXHUwMENDfFxcdTAwQ0R8XFx1MDEyOC9nLFxuICAgIG1hcDoge1xuICAgICAgSTogXCJcXHUwMDY5XFx1MDMwN1wiLFxuICAgICAgSjogXCJcXHUwMDZBXFx1MDMwN1wiLFxuICAgICAgxK46IFwiXFx1MDEyRlxcdTAzMDdcIixcbiAgICAgIMOMOiBcIlxcdTAwNjlcXHUwMzA3XFx1MDMwMFwiLFxuICAgICAgw406IFwiXFx1MDA2OVxcdTAzMDdcXHUwMzAxXCIsXG4gICAgICDEqDogXCJcXHUwMDY5XFx1MDMwN1xcdTAzMDNcIixcbiAgICB9LFxuICB9LFxufTtcblxuLyoqXG4gKiBMb2NhbGl6ZWQgbG93ZXIgY2FzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsZUxvd2VyQ2FzZShzdHI6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcpIHtcbiAgY29uc3QgbGFuZyA9IFNVUFBPUlRFRF9MT0NBTEVbbG9jYWxlLnRvTG93ZXJDYXNlKCldO1xuICBpZiAobGFuZykgcmV0dXJuIGxvd2VyQ2FzZShzdHIucmVwbGFjZShsYW5nLnJlZ2V4cCwgKG0pID0+IGxhbmcubWFwW21dKSk7XG4gIHJldHVybiBsb3dlckNhc2Uoc3RyKTtcbn1cblxuLyoqXG4gKiBMb3dlciBjYXNlIGFzIGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb3dlckNhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci50b0xvd2VyQ2FzZSgpO1xufVxuIiwiaW1wb3J0IHsgbm9DYXNlLCBPcHRpb25zIH0gZnJvbSBcIm5vLWNhc2VcIjtcblxuZXhwb3J0IHsgT3B0aW9ucyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsQ2FzZVRyYW5zZm9ybShpbnB1dDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IGZpcnN0Q2hhciA9IGlucHV0LmNoYXJBdCgwKTtcbiAgY29uc3QgbG93ZXJDaGFycyA9IGlucHV0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoaW5kZXggPiAwICYmIGZpcnN0Q2hhciA+PSBcIjBcIiAmJiBmaXJzdENoYXIgPD0gXCI5XCIpIHtcbiAgICByZXR1cm4gYF8ke2ZpcnN0Q2hhcn0ke2xvd2VyQ2hhcnN9YDtcbiAgfVxuICByZXR1cm4gYCR7Zmlyc3RDaGFyLnRvVXBwZXJDYXNlKCl9JHtsb3dlckNoYXJzfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXNjYWxDYXNlVHJhbnNmb3JtTWVyZ2UoaW5wdXQ6IHN0cmluZykge1xuICByZXR1cm4gaW5wdXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBpbnB1dC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsQ2FzZShpbnB1dDogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIG5vQ2FzZShpbnB1dCwge1xuICAgIGRlbGltaXRlcjogXCJcIixcbiAgICB0cmFuc2Zvcm06IHBhc2NhbENhc2VUcmFuc2Zvcm0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iLCJpbXBvcnQge1xuICBwYXNjYWxDYXNlLFxuICBwYXNjYWxDYXNlVHJhbnNmb3JtLFxuICBwYXNjYWxDYXNlVHJhbnNmb3JtTWVyZ2UsXG4gIE9wdGlvbnMsXG59IGZyb20gXCJwYXNjYWwtY2FzZVwiO1xuXG5leHBvcnQgeyBPcHRpb25zIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW1lbENhc2VUcmFuc2Zvcm0oaW5wdXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICBpZiAoaW5kZXggPT09IDApIHJldHVybiBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gcGFzY2FsQ2FzZVRyYW5zZm9ybShpbnB1dCwgaW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FtZWxDYXNlVHJhbnNmb3JtTWVyZ2UoaW5wdXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICBpZiAoaW5kZXggPT09IDApIHJldHVybiBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gcGFzY2FsQ2FzZVRyYW5zZm9ybU1lcmdlKGlucHV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsQ2FzZShpbnB1dDogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIHBhc2NhbENhc2UoaW5wdXQsIHtcbiAgICB0cmFuc2Zvcm06IGNhbWVsQ2FzZVRyYW5zZm9ybSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==